UNPKG

@expo/cli

Version:
142 lines (141 loc) 5.57 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { resolveNativeSchemePropsAsync: ()=>resolveNativeSchemePropsAsync, promptOrQueryNativeSchemeAsync: ()=>promptOrQueryNativeSchemeAsync, getDefaultNativeScheme: ()=>getDefaultNativeScheme }); function _configPlugins() { const data = require("@expo/config-plugins"); _configPlugins = function() { return data; }; return data; } function _chalk() { const data = /*#__PURE__*/ _interopRequireDefault(require("chalk")); _chalk = function() { return data; }; return data; } function _path() { const data = /*#__PURE__*/ _interopRequireDefault(require("path")); _path = function() { return data; }; return data; } const _log = /*#__PURE__*/ _interopRequireWildcard(require("../../../log")); const _errors = require("../../../utils/errors"); const _profile = require("../../../utils/profile"); const _prompts = require("../../../utils/prompts"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for(var key in obj){ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } const debug = require("debug")("expo:run:ios:options:resolveNativeScheme"); async function resolveNativeSchemePropsAsync(projectRoot, options, xcodeProject) { var ref; return (ref = await promptOrQueryNativeSchemeAsync(projectRoot, options)) != null ? ref : getDefaultNativeScheme(projectRoot, options, xcodeProject); } async function promptOrQueryNativeSchemeAsync(projectRoot, { scheme , configuration }) { const schemes = _configPlugins().IOSConfig.BuildScheme.getRunnableSchemesFromXcodeproj(projectRoot, { configuration }); if (!schemes.length) { throw new _errors.CommandError("IOS_MALFORMED", "No native iOS build schemes found"); } if (scheme === true) { if (schemes.length === 1) { _log.log(`Auto selecting only available scheme: ${schemes[0].name}`); return schemes[0]; } const resolvedSchemeName = await (0, _prompts.selectAsync)("Select a scheme", schemes.map((value)=>{ const isApp = value.type === _configPlugins().IOSConfig.Target.TargetType.APPLICATION && value.osType === "iOS"; return { value: value.name, title: isApp ? _chalk().default.bold(value.name) + _chalk().default.gray(" (app)") : value.name }; }), { nonInteractiveHelp: `--scheme: argument must be provided with a string in non-interactive mode. Valid choices are: ${schemes.join(", ")}` }); var ref; return (ref = schemes.find(({ name })=>resolvedSchemeName === name)) != null ? ref : null; } // Attempt to match the schemes up so we can open the correct simulator return scheme ? schemes.find(({ name })=>name === scheme) || { name: scheme } : null; } function getDefaultNativeScheme(projectRoot, options, xcodeProject) { // If the resolution failed then we should just use the first runnable scheme that // matches the provided configuration. const resolvedSchemes = (0, _profile.profile)(_configPlugins().IOSConfig.BuildScheme.getRunnableSchemesFromXcodeproj)(projectRoot, { configuration: options.configuration }); // If there are multiple schemes, then the default should be the application. if (resolvedSchemes.length > 1) { var ref; const scheme = (ref = resolvedSchemes.find(({ type })=>type === _configPlugins().IOSConfig.Target.TargetType.APPLICATION)) != null ? ref : resolvedSchemes[0]; debug(`Using default scheme: ${scheme.name}`); return scheme; } // If we couldn't find the scheme, then we'll guess at it, // this is needed for cases where the native code hasn't been generated yet. if (resolvedSchemes[0]) { return resolvedSchemes[0]; } return { name: _path().default.basename(xcodeProject.name, _path().default.extname(xcodeProject.name)) }; } //# sourceMappingURL=resolveNativeScheme.js.map