diff options
Diffstat (limited to 'desktop/node_modules/@electron/osx-sign/dist/cjs/util-provisioning-profiles.js')
-rw-r--r-- | desktop/node_modules/@electron/osx-sign/dist/cjs/util-provisioning-profiles.js | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/desktop/node_modules/@electron/osx-sign/dist/cjs/util-provisioning-profiles.js b/desktop/node_modules/@electron/osx-sign/dist/cjs/util-provisioning-profiles.js new file mode 100644 index 0000000..2c1b7e5 --- /dev/null +++ b/desktop/node_modules/@electron/osx-sign/dist/cjs/util-provisioning-profiles.js @@ -0,0 +1,148 @@ +"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
\ No newline at end of file |