/** * Created by tdzl2003 on 2/13/16. */ import * as path from 'path'; import * as fs from 'fs'; import ApkReader from 'node-apk-parser'; import ipaMetadata from 'ipa-metadata'; var read = require('read'); export function question(query, password) { if (NO_INTERACTIVE){ return Promise.resolve(''); } return new Promise((resolve, reject)=>read({ prompt: query, silent: password, replace: password ? '*' : undefined, }, (err, result)=> err ? reject(err) : resolve(result))); } export function translateOptions(options){ const ret = {}; for (let key in options) { const v = options[key]; if (typeof(v) === 'string') { ret[key] = v.replace(/\$\{(\w+)\}/g, function (v, n){ return options[n] || process.env[n] || v; }) } else { ret[key] = v; } } return ret; } export function getRNVersion() { const version = JSON.parse(fs.readFileSync(path.resolve('node_modules/react-native/package.json'))).version; // We only care about major and minor version. const match = /^(\d+)\.(\d+)\./.exec(version); return { version, major: match[1] | 0, minor: match[2] | 0, }; } export function getApkVersion(fn) { const reader = ApkReader.readFile(fn); const manifest = reader.readManifestSync(); return Promise.resolve(manifest.versionName); } export function getIPAVersion(fn) { return new Promise((resolve, reject) => { ipaMetadata(fn, (err, data) => { err ? reject(err) : resolve(data.metadata.CFBundleShortVersionString); }); }); }