mirror of
https://gitee.com/myxzgzs/boyue_jnpf.git
synced 2025-08-11 00:32:45 +08:00
148 lines
6.3 KiB
JavaScript
148 lines
6.3 KiB
JavaScript
"use strict";
|
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
if (k2 === undefined) k2 = k;
|
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
}
|
|
Object.defineProperty(o, k2, desc);
|
|
}) : (function(o, m, k, k2) {
|
|
if (k2 === undefined) k2 = k;
|
|
o[k2] = m[k];
|
|
}));
|
|
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
}) : function(o, v) {
|
|
o["default"] = v;
|
|
});
|
|
var __importStar = (this && this.__importStar) || function (mod) {
|
|
if (mod && mod.__esModule) return mod;
|
|
var result = {};
|
|
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
__setModuleDefault(result, mod);
|
|
return result;
|
|
};
|
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.preEmbedProvisioningProfile = exports.findProvisioningProfiles = exports.getProvisioningProfile = exports.ProvisioningProfile = void 0;
|
|
const fs = __importStar(require("fs-extra"));
|
|
const path = __importStar(require("path"));
|
|
const plist_1 = __importDefault(require("plist"));
|
|
const util_1 = require("./util");
|
|
class ProvisioningProfile {
|
|
constructor(filePath, message) {
|
|
this.filePath = filePath;
|
|
this.message = message;
|
|
}
|
|
get name() {
|
|
return this.message.Name;
|
|
}
|
|
get platforms() {
|
|
if ('ProvisionsAllDevices' in this.message)
|
|
return ['darwin'];
|
|
// Developer ID
|
|
else if (this.type === 'distribution')
|
|
return ['mas'];
|
|
// Mac App Store
|
|
else
|
|
return ['darwin', 'mas']; // Mac App Development
|
|
}
|
|
get type() {
|
|
if ('ProvisionedDevices' in this.message)
|
|
return 'development';
|
|
// Mac App Development
|
|
else
|
|
return 'distribution'; // Developer ID or Mac App Store
|
|
}
|
|
}
|
|
exports.ProvisioningProfile = ProvisioningProfile;
|
|
/**
|
|
* Returns a promise resolving to a ProvisioningProfile instance based on file.
|
|
* @function
|
|
* @param {string} filePath - Path to provisioning profile.
|
|
* @param {string} keychain - Keychain to use when unlocking provisioning profile.
|
|
* @returns {Promise} Promise.
|
|
*/
|
|
async function getProvisioningProfile(filePath, keychain = null) {
|
|
const securityArgs = [
|
|
'cms',
|
|
'-D',
|
|
'-i',
|
|
filePath // Use infile as source of data
|
|
];
|
|
if (keychain) {
|
|
securityArgs.push('-k', keychain);
|
|
}
|
|
const result = await (0, util_1.execFileAsync)('security', securityArgs);
|
|
const provisioningProfile = new ProvisioningProfile(filePath, plist_1.default.parse(result));
|
|
(0, util_1.debugLog)('Provisioning profile:', '\n', '> Name:', provisioningProfile.name, '\n', '> Platforms:', provisioningProfile.platforms, '\n', '> Type:', provisioningProfile.type, '\n', '> Path:', provisioningProfile.filePath, '\n', '> Message:', provisioningProfile.message);
|
|
return provisioningProfile;
|
|
}
|
|
exports.getProvisioningProfile = getProvisioningProfile;
|
|
/**
|
|
* Returns a promise resolving to a list of suitable provisioning profile within the current working directory.
|
|
*/
|
|
async function findProvisioningProfiles(opts) {
|
|
const cwd = process.cwd();
|
|
const children = await fs.readdir(cwd);
|
|
const foundProfiles = (0, util_1.compactFlattenedList)(await Promise.all(children.map(async (child) => {
|
|
const filePath = path.resolve(cwd, child);
|
|
const stat = await fs.stat(filePath);
|
|
if (stat.isFile() && path.extname(filePath) === '.provisionprofile') {
|
|
return filePath;
|
|
}
|
|
return null;
|
|
})));
|
|
return (0, util_1.compactFlattenedList)(await Promise.all(foundProfiles.map(async (filePath) => {
|
|
const profile = await getProvisioningProfile(filePath);
|
|
if (profile.platforms.indexOf(opts.platform) >= 0 && profile.type === opts.type) {
|
|
return profile;
|
|
}
|
|
(0, util_1.debugWarn)('Provisioning profile above ignored, not for ' + opts.platform + ' ' + opts.type + '.');
|
|
return null;
|
|
})));
|
|
}
|
|
exports.findProvisioningProfiles = findProvisioningProfiles;
|
|
/**
|
|
* Returns a promise embedding the provisioning profile in the app Contents folder.
|
|
*/
|
|
async function preEmbedProvisioningProfile(opts, profile) {
|
|
async function embedProvisioningProfile(profile) {
|
|
(0, util_1.debugLog)('Looking for existing provisioning profile...');
|
|
const embeddedFilePath = path.join((0, util_1.getAppContentsPath)(opts), 'embedded.provisionprofile');
|
|
if (await fs.pathExists(embeddedFilePath)) {
|
|
(0, util_1.debugLog)('Found embedded provisioning profile:', '\n', '* Please manually remove the existing file if not wanted.', '\n', '* Current file at:', embeddedFilePath);
|
|
}
|
|
else {
|
|
(0, util_1.debugLog)('Embedding provisioning profile...');
|
|
await fs.copy(profile.filePath, embeddedFilePath);
|
|
}
|
|
}
|
|
if (profile) {
|
|
// User input provisioning profile
|
|
return await embedProvisioningProfile(profile);
|
|
}
|
|
else {
|
|
// Discover provisioning profile
|
|
(0, util_1.debugLog)('No `provisioning-profile` passed in arguments, will find in current working directory and in user library...');
|
|
const profiles = await findProvisioningProfiles(opts);
|
|
if (profiles.length > 0) {
|
|
// Provisioning profile(s) found
|
|
if (profiles.length > 1) {
|
|
(0, util_1.debugLog)('Multiple provisioning profiles found, will use the first discovered.');
|
|
}
|
|
else {
|
|
(0, util_1.debugLog)('Found 1 provisioning profile.');
|
|
}
|
|
await embedProvisioningProfile(profiles[0]);
|
|
}
|
|
else {
|
|
// No provisioning profile found
|
|
(0, util_1.debugLog)('No provisioning profile found, will not embed profile in app contents.');
|
|
}
|
|
}
|
|
}
|
|
exports.preEmbedProvisioningProfile = preEmbedProvisioningProfile;
|
|
//# sourceMappingURL=util-provisioning-profiles.js.map
|