program .command('app:version [project-dir]') .description('Prints the version in app.json') .action(act(async (dir) => { const projectManifest = await readBuildManifest(dir); const version = F.getOr('0.0.0', ['version'], projectManifest); console.log(version); return true; }));
const createProtocallResolver = options => { const protocallResolver = _.get('noDefaultProtocols', options) ? new protocall.Resolver() : protocall.getDefaultResolver(_.getOr(process.cwd(), 'baseDir', options)); if (_.has('protocols', options)) protocallResolver.use(options.protocols); return protocallResolver; }
/** * Load the files in options using <tt>nconf.file</tt> * @param nconf - nconf instance * @param options - plugin options */ const loadFiles = (nconf, options) => { const files = options.files; if (Array.isArray(files) && files.length > 0) { for (const file of files) { const path = _.getOr(file, 'file', file); // file(.file) is used as namespace for nconf const formater = file.format || nconfFormatForFile(path); nconf.file(path, formater ? {file: path, format: formater} : file); } } else if (typeof files === 'string' && files.length > 0) { const formater = nconfFormatForFile(files); if (formater) nconf.file({file: files, format: formater}); else nconf.file(files); } return promiseIfNeeded(options); }
program .command('inc:build [project-dir]') .description('Increments the ios.buildNumber and android.versionCode in app.json') .action(act(async (dir) => { const projectManifest = await readBuildManifest(dir, null); const iosBuildNum = parseInteger(0, F.getOr(0, ['expo', 'ios', 'buildNumber'], projectManifest)); const androidVersionCode = F.getOr(0, ['expo', 'android', 'versionCode'], projectManifest); const newBuildNum = Math.max(iosBuildNum, androidVersionCode) + 1; const setObj = F.curry(set); const newManifest = F.compose( setObj(['expo', 'ios', 'buildNumber'], `${newBuildNum}`), setObj(['expo', 'android', 'versionCode'], newBuildNum) )(projectManifest); const manifestPath = buildManifestFilePathFromDir(dir); fs.writeFileSync(manifestPath, JSON.stringify(newManifest, null, 2)); return true; }));
program .command('app:build [project-dir]') .description('Prints the MAX number between ios.buildNumber and android.versionCode in app.json') .action(act(async (dir) => { const projectManifest = await readBuildManifest(dir); const build = (() => { const iosBuildNumber = F.getOr(null, ['ios', 'buildNumber'], projectManifest); const androidVersionCode = F.getOr(null, ['android', 'versionCode'], projectManifest); if (!iosBuildNumber) { return androidVersionCode || 0; } if (!androidVersionCode) { return iosBuildNumber || 0; } return Math.max(parseInt(iosBuildNumber), androidVersionCode); })(); console.log(build); return true; }));