From e13181b989d7c04acdcf612658d208d90d2f962c Mon Sep 17 00:00:00 2001 From: sunnylqm Date: Wed, 19 Feb 2020 00:21:02 +0800 Subject: [PATCH] ignore lib --- .gitignore | 2 + lib/api.js | 158 ------------ lib/app.js | 188 -------------- lib/bundle.js | 597 --------------------------------------------- lib/index.js | 65 ----- lib/package.js | 170 ------------- lib/user.js | 72 ------ lib/utils/index.js | 123 ---------- lib/versions.js | 199 --------------- 9 files changed, 2 insertions(+), 1572 deletions(-) delete mode 100644 lib/api.js delete mode 100644 lib/app.js delete mode 100644 lib/bundle.js delete mode 100755 lib/index.js delete mode 100644 lib/package.js delete mode 100644 lib/user.js delete mode 100644 lib/utils/index.js delete mode 100644 lib/versions.js diff --git a/.gitignore b/.gitignore index 6704566..1560d95 100644 --- a/.gitignore +++ b/.gitignore @@ -102,3 +102,5 @@ dist # TernJS port file .tern-port + +lib/ diff --git a/lib/api.js b/lib/api.js deleted file mode 100644 index 21da1ec..0000000 --- a/lib/api.js +++ /dev/null @@ -1,158 +0,0 @@ -'use strict'; - -let query = function () { - var _ref2 = _asyncToGenerator(function* (url, options) { - const resp = yield fetch(url, options); - const json = yield resp.json(); - if (resp.status !== 200) { - throw Object.assign(new Error(json.message || json.error), { status: resp.status }); - } - return json; - }); - - return function query(_x, _x2) { - return _ref2.apply(this, arguments); - }; -}(); - -let uploadFile = function () { - var _ref3 = _asyncToGenerator(function* (fn) { - var _ref4 = yield exports.post('/upload', {}); - - const url = _ref4.url, - fieldName = _ref4.fieldName, - formData = _ref4.formData; - - let realUrl = url; - - if (!/^https?\:\/\//.test(url)) { - realUrl = host + url; - } - - const fileSize = fs.statSync(fn).size; - - const bar = new _progress2.default(' Uploading [:bar] :percent :etas', { - complete: '=', - incomplete: ' ', - total: fileSize - }); - - const info = yield new Promise(function (resolve, reject) { - formData.file = fs.createReadStream(fn); - - formData.file.on('data', function (data) { - bar.tick(data.length); - }); - _request2.default.post(realUrl, { - formData - }, function (err, resp, body) { - if (err) { - return reject(err); - } - if (resp.statusCode > 299) { - return reject(Object.assign(new Error(body), { status: resp.statusCode })); - } - resolve(JSON.parse(body)); - }); - }); - return info; - }); - - return function uploadFile(_x3) { - return _ref3.apply(this, arguments); - }; -}(); - -var _request = require('request'); - -var _request2 = _interopRequireDefault(_request); - -var _progress = require('progress'); - -var _progress2 = _interopRequireDefault(_progress); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } - -/** - * Created by tdzl2003 on 2/13/16. - */ - -const fetch = require('isomorphic-fetch'); -let host = process.env.PUSHY_REGISTRY || 'https://update.reactnative.cn/api'; -const fs = require('fs-extra'); - - -let session = undefined; -let savedSession = undefined; - -exports.loadSession = _asyncToGenerator(function* () { - if (fs.existsSync('.update')) { - try { - exports.replaceSession(JSON.parse(fs.readFileSync('.update', 'utf8'))); - savedSession = session; - } catch (e) { - console.error('Failed to parse file `.update`. Try to remove it manually.'); - throw e; - } - } -}); - -exports.getSession = function () { - return session; -}; - -exports.replaceSession = function (newSession) { - session = newSession; -}; - -exports.saveSession = function () { - // Only save on change. - if (session !== savedSession) { - const current = session; - const data = JSON.stringify(current, null, 4); - fs.writeFileSync('.update', data, 'utf8'); - savedSession = current; - } -}; - -exports.closeSession = function () { - if (fs.existsSync('.update')) { - fs.unlinkSync('.update'); - savedSession = undefined; - } - session = undefined; - host = process.env.PUSHY_REGISTRY || 'https://update.reactnative.cn'; -}; - -function queryWithoutBody(method) { - return function (api) { - return query(host + api, { - method, - headers: { - 'X-AccessToken': session ? session.token : '' - } - }); - }; -} - -function queryWithBody(method) { - return function (api, body) { - return query(host + api, { - method, - headers: { - 'Content-Type': 'application/json', - 'X-AccessToken': session ? session.token : '' - }, - body: JSON.stringify(body) - }); - }; -} - -exports.get = queryWithoutBody('GET'); -exports.post = queryWithBody('POST'); -exports.put = queryWithBody('PUT'); -exports.doDelete = queryWithBody('DELETE'); - -exports.uploadFile = uploadFile; \ No newline at end of file diff --git a/lib/app.js b/lib/app.js deleted file mode 100644 index 8010091..0000000 --- a/lib/app.js +++ /dev/null @@ -1,188 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.commands = exports.chooseApp = exports.listApp = undefined; - -let listApp = exports.listApp = function () { - var _ref = _asyncToGenerator(function* (platform) { - var _ref2 = yield get('/app/list'); - - const data = _ref2.data; - - const list = platform ? data.filter(function (v) { - return v.platform === platform; - }) : data; - for (const app of list) { - console.log(`${app.id}) ${app.name}(${app.platform})`); - } - if (platform) { - console.log(`\nTotal ${list.length} ${platform} apps`); - } else { - console.log(`\nTotal ${list.length} apps`); - } - return list; - }); - - return function listApp(_x) { - return _ref.apply(this, arguments); - }; -}(); - -let chooseApp = exports.chooseApp = function () { - var _ref3 = _asyncToGenerator(function* (platform) { - const list = yield listApp(platform); - - while (true) { - const id = yield (0, _utils.question)('Enter appId:'); - const app = list.find(function (v) { - return v.id === (id | 0); - }); - if (app) { - return app; - } - } - }); - - return function chooseApp(_x2) { - return _ref3.apply(this, arguments); - }; -}(); - -exports.checkPlatform = checkPlatform; -exports.getSelectedApp = getSelectedApp; - -var _utils = require('./utils'); - -var _fsExtra = require('fs-extra'); - -var fs = _interopRequireWildcard(_fsExtra); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } /** - * Created by tdzl2003 on 2/13/16. - */ - -var _require = require('./api'); - -const post = _require.post, - get = _require.get, - doDelete = _require.doDelete; - - -const validPlatforms = { - ios: 1, - android: 1 -}; - -function checkPlatform(platform) { - if (!validPlatforms[platform]) { - throw new Error(`Invalid platform '${platform}'`); - } - return platform; -} - -function getSelectedApp(platform) { - checkPlatform(platform); - - if (!fs.existsSync('update.json')) { - throw new Error(`App not selected. run 'pushy selectApp --platform ${platform}' first!`); - } - const updateInfo = JSON.parse(fs.readFileSync('update.json', 'utf8')); - if (!updateInfo[platform]) { - throw new Error(`App not selected. run 'pushy selectApp --platform ${platform}' first!`); - } - return updateInfo[platform]; -} - -const commands = exports.commands = { - createApp: function () { - var _ref4 = _asyncToGenerator(function* (_ref5) { - let options = _ref5.options; - - const name = options.name || (yield (0, _utils.question)('App Name:')); - const downloadUrl = options.downloadUrl; - - const platform = checkPlatform(options.platform || (yield (0, _utils.question)('Platform(ios/android):'))); - - var _ref6 = yield post('/app/create', { name, platform }); - - const id = _ref6.id; - - console.log(`Created app ${id}`); - yield this.selectApp({ - args: [id], - options: { platform, downloadUrl } - }); - }); - - return function createApp(_x3) { - return _ref4.apply(this, arguments); - }; - }(), - deleteApp: function () { - var _ref7 = _asyncToGenerator(function* (_ref8) { - let args = _ref8.args, - options = _ref8.options; - const platform = options.platform; - - const id = args[0] || chooseApp(platform); - if (!id) { - console.log('Canceled'); - } - yield doDelete(`/app/${id}`); - console.log('Ok.'); - }); - - return function deleteApp(_x4) { - return _ref7.apply(this, arguments); - }; - }(), - apps: function () { - var _ref9 = _asyncToGenerator(function* (_ref10) { - let options = _ref10.options; - const platform = options.platform; - - listApp(platform); - }); - - return function apps(_x5) { - return _ref9.apply(this, arguments); - }; - }(), - selectApp: function () { - var _ref11 = _asyncToGenerator(function* (_ref12) { - let args = _ref12.args, - options = _ref12.options; - - const platform = checkPlatform(options.platform || (yield (0, _utils.question)('Platform(ios/android):'))); - const id = args[0] || (yield chooseApp(platform)).id; - - let updateInfo = {}; - if (fs.existsSync('update.json')) { - try { - updateInfo = JSON.parse(fs.readFileSync('update.json', 'utf8')); - } catch (e) { - console.error('Failed to parse file `update.json`. Try to remove it manually.'); - throw e; - } - } - - var _ref13 = yield get(`/app/${id}`); - - const appKey = _ref13.appKey; - - updateInfo[platform] = { - appId: id, - appKey - }; - fs.writeFileSync('update.json', JSON.stringify(updateInfo, null, 4), 'utf8'); - }); - - return function selectApp(_x6) { - return _ref11.apply(this, arguments); - }; - }() -}; \ No newline at end of file diff --git a/lib/bundle.js b/lib/bundle.js deleted file mode 100644 index b39b839..0000000 --- a/lib/bundle.js +++ /dev/null @@ -1,597 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.commands = undefined; - -var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - -let runReactNativeBundleCommand = function () { - var _ref = _asyncToGenerator(function* (bundleName, development, entryFile, outputFolder, platform, sourcemapOutput, config) { - let reactNativeBundleArgs = []; - - let envArgs = process.env.PUSHY_ENV_ARGS; - - if (envArgs) { - Array.prototype.push.apply(reactNativeBundleArgs, envArgs.trim().split(/\s+/)); - } - - fs.emptyDirSync(outputFolder); - - Array.prototype.push.apply(reactNativeBundleArgs, [path.join("node_modules", "react-native", "local-cli", "cli.js"), "bundle", '--assets-dest', outputFolder, '--bundle-output', path.join(outputFolder, bundleName), '--dev', development, '--entry-file', entryFile, '--platform', platform, '--reset-cache']); - - if (sourcemapOutput) { - reactNativeBundleArgs.push('--sourcemap-output', sourcemapOutput); - } - - if (config) { - reactNativeBundleArgs.push('--config', config); - } - - const reactNativeBundleProcess = spawn('node', reactNativeBundleArgs); - console.log(`Running bundle command: node ${reactNativeBundleArgs.join(' ')}`); - - return new Promise(function (resolve, reject) { - reactNativeBundleProcess.stdout.on('data', function (data) { - console.log(data.toString().trim()); - }); - - reactNativeBundleProcess.stderr.on('data', function (data) { - console.error(data.toString().trim()); - }); - - reactNativeBundleProcess.on('close', function () { - var _ref2 = _asyncToGenerator(function* (exitCode) { - if (exitCode) { - reject(new Error(`"react-native bundle" command exited with code ${exitCode}.`)); - } else { - if (platform === 'android') { - yield compileHermesByteCode(bundleName, outputFolder); - } - resolve(null); - } - }); - - return function (_x8) { - return _ref2.apply(this, arguments); - }; - }()); - }); - }); - - return function runReactNativeBundleCommand(_x, _x2, _x3, _x4, _x5, _x6, _x7) { - return _ref.apply(this, arguments); - }; -}(); - -let compileHermesByteCode = function () { - var _ref3 = _asyncToGenerator(function* (bundleName, outputFolder) { - let enableHermes = false; - try { - const gradleConfig = yield g2js.parseFile('android/app/build.gradle'); - const projectConfig = gradleConfig['project.ext.react']; - for (const packagerConfig of projectConfig) { - if (packagerConfig.includes('enableHermes') && packagerConfig.includes('true')) { - enableHermes = true; - break; - } - } - } catch (e) {} - if (enableHermes) { - console.log(`Hermes enabled, now compiling to hermes bytecode:\n`); - const hermesPath = fs.existsSync('node_modules/hermes-engine') ? 'node_modules/hermes-engine' : 'node_modules/hermesvm'; - execSync(`${hermesPath}/${getHermesOSBin()}/hermes -emit-binary -out ${outputFolder}/${bundleName} ${outputFolder}/${bundleName} -O`, { stdio: 'ignore' }); - } - }); - - return function compileHermesByteCode(_x9, _x10) { - return _ref3.apply(this, arguments); - }; -}(); - -let pack = function () { - var _ref4 = _asyncToGenerator(function* (dir, output) { - console.log('Packing'); - fs.ensureDirSync(path.dirname(output)); - yield new Promise(function (resolve, reject) { - var zipfile = new _yazl.ZipFile(); - - function addDirectory(root, rel) { - if (rel) { - zipfile.addEmptyDirectory(rel); - } - const childs = fs.readdirSync(root); - for (const name of childs) { - if (name === '.' || name === '..') { - continue; - } - const fullPath = path.join(root, name); - const stat = fs.statSync(fullPath); - if (stat.isFile()) { - //console.log('adding: ' + rel+name); - zipfile.addFile(fullPath, rel + name); - } else if (stat.isDirectory()) { - //console.log('adding: ' + rel+name+'/'); - addDirectory(fullPath, rel + name + '/'); - } - } - } - - addDirectory(dir, ''); - - zipfile.outputStream.on('error', function (err) { - return reject(err); - }); - zipfile.outputStream.pipe(fs.createWriteStream(output)).on('close', function () { - resolve(); - }); - zipfile.end(); - }); - console.log('Bundled saved to: ' + output); - }); - - return function pack(_x11, _x12) { - return _ref4.apply(this, arguments); - }; -}(); - -let diffFromPPK = function () { - var _ref5 = _asyncToGenerator(function* (origin, next, output) { - fs.ensureDirSync(path.dirname(output)); - - const originEntries = {}; - const originMap = {}; - - let originSource; - - yield enumZipEntries(origin, function (entry, zipFile) { - originEntries[entry.fileName] = entry; - if (!/\/$/.test(entry.fileName)) { - // isFile - originMap[entry.crc32] = entry.fileName; - - if (entry.fileName === 'index.bundlejs') { - // This is source. - return readEntire(entry, zipFile).then(function (v) { - return originSource = v; - }); - } - } - }); - - originSource = originSource || new Buffer(0); - - const copies = {}; - - var zipfile = new _yazl.ZipFile(); - - const writePromise = new Promise(function (resolve, reject) { - zipfile.outputStream.on('error', function (err) { - throw err; - }); - zipfile.outputStream.pipe(fs.createWriteStream(output)).on('close', function () { - resolve(); - }); - }); - - const addedEntry = {}; - - function addEntry(fn) { - //console.log(fn); - if (!fn || addedEntry[fn]) { - return; - } - const base = basename(fn); - if (base) { - addEntry(base); - } - zipfile.addEmptyDirectory(fn); - } - - const newEntries = {}; - - yield enumZipEntries(next, function (entry, nextZipfile) { - newEntries[entry.fileName] = entry; - - if (/\/$/.test(entry.fileName)) { - // Directory - if (!originEntries[entry.fileName]) { - addEntry(entry.fileName); - } - } else if (entry.fileName === 'index.bundlejs') { - //console.log('Found bundle'); - return readEntire(entry, nextZipfile).then(function (newSource) { - //console.log('Begin diff'); - zipfile.addBuffer(diff(originSource, newSource), 'index.bundlejs.patch'); - //console.log('End diff'); - }); - } else { - // If same file. - const originEntry = originEntries[entry.fileName]; - if (originEntry && originEntry.crc32 === entry.crc32) { - // ignore - return; - } - - // If moved from other place - if (originMap[entry.crc32]) { - const base = basename(entry.fileName); - if (!originEntries[base]) { - addEntry(base); - } - copies[entry.fileName] = originMap[entry.crc32]; - return; - } - - // New file. - addEntry(basename(entry.fileName)); - - return new Promise(function (resolve, reject) { - nextZipfile.openReadStream(entry, function (err, readStream) { - if (err) { - return reject(err); - } - zipfile.addReadStream(readStream, entry.fileName); - readStream.on('end', function () { - //console.log('add finished'); - resolve(); - }); - }); - }); - } - }); - - const deletes = {}; - - for (var k in originEntries) { - if (!newEntries[k]) { - console.log('Delete ' + k); - deletes[k] = 1; - } - } - - //console.log({copies, deletes}); - zipfile.addBuffer(new Buffer(JSON.stringify({ copies, deletes })), '__diff.json'); - zipfile.end(); - yield writePromise; - }); - - return function diffFromPPK(_x13, _x14, _x15) { - return _ref5.apply(this, arguments); - }; -}(); - -let diffFromPackage = function () { - var _ref6 = _asyncToGenerator(function* (origin, next, output, originBundleName) { - let transformPackagePath = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : function (v) { - return v; - }; - - fs.ensureDirSync(path.dirname(output)); - - const originEntries = {}; - const originMap = {}; - - let originSource; - - yield enumZipEntries(origin, function (entry, zipFile) { - if (!/\/$/.test(entry.fileName)) { - const fn = transformPackagePath(entry.fileName); - if (!fn) { - return; - } - - //console.log(fn); - // isFile - originEntries[fn] = entry.crc32; - originMap[entry.crc32] = fn; - - if (fn === originBundleName) { - // This is source. - return readEntire(entry, zipFile).then(function (v) { - return originSource = v; - }); - } - } - }); - - originSource = originSource || new Buffer(0); - - const copies = {}; - - var zipfile = new _yazl.ZipFile(); - - const writePromise = new Promise(function (resolve, reject) { - zipfile.outputStream.on('error', function (err) { - throw err; - }); - zipfile.outputStream.pipe(fs.createWriteStream(output)).on('close', function () { - resolve(); - }); - }); - - yield enumZipEntries(next, function (entry, nextZipfile) { - if (/\/$/.test(entry.fileName)) { - // Directory - zipfile.addEmptyDirectory(entry.fileName); - } else if (entry.fileName === 'index.bundlejs') { - //console.log('Found bundle'); - return readEntire(entry, nextZipfile).then(function (newSource) { - //console.log('Begin diff'); - zipfile.addBuffer(diff(originSource, newSource), 'index.bundlejs.patch'); - //console.log('End diff'); - }); - } else { - // If same file. - if (originEntries[entry.fileName] === entry.crc32) { - copies[entry.fileName] = ''; - return; - } - // If moved from other place - if (originMap[entry.crc32]) { - copies[entry.fileName] = originMap[entry.crc32]; - return; - } - - return new Promise(function (resolve, reject) { - nextZipfile.openReadStream(entry, function (err, readStream) { - if (err) { - return reject(err); - } - zipfile.addReadStream(readStream, entry.fileName); - readStream.on('end', function () { - //console.log('add finished'); - resolve(); - }); - }); - }); - } - }); - - zipfile.addBuffer(new Buffer(JSON.stringify({ copies })), '__diff.json'); - zipfile.end(); - yield writePromise; - }); - - return function diffFromPackage(_x16, _x17, _x18, _x19) { - return _ref6.apply(this, arguments); - }; -}(); - -var _utils = require('./utils'); - -var _fsExtra = require('fs-extra'); - -var fs = _interopRequireWildcard(_fsExtra); - -var _yazl = require('yazl'); - -var _yauzl = require('yauzl'); - -var _app = require('./app'); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } - -/** - * Created by tdzl2003 on 2/22/16. - */ - -const path = require('path'); - -var _require = require('child_process'); - -const spawn = _require.spawn, - spawnSync = _require.spawnSync, - execSync = _require.execSync; - -const g2js = require('gradle-to-js/lib/parser'); -const os = require('os'); - -var diff; -try { - var bsdiff = require('node-bsdiff'); - diff = typeof bsdiff != 'function' ? bsdiff.diff : bsdiff; -} catch (e) { - diff = function () { - console.warn('This function needs "node-bsdiff". Please run "npm i node-bsdiff" from your project directory first!'); - throw new Error('This function needs module "node-bsdiff". Please install it first.'); - }; -} - -function exec(command) { - const commandResult = spawnSync(command, { - shell: true, - stdio: 'inherit' - }); - if (commandResult.error) { - throw commandResult.error; - } -} - -function getHermesOSBin() { - if (os.platform() === 'win32') return 'win64-bin'; - if (os.platform() === 'darwin') return 'osx-bin'; - if (os.platform() === 'linux') return 'linux64-bin'; -} - -function readEntire(entry, zipFile) { - const buffers = []; - return new Promise(function (resolve, reject) { - zipFile.openReadStream(entry, function (err, stream) { - stream.pipe({ - write(chunk) { - buffers.push(chunk); - }, - end() { - resolve(Buffer.concat(buffers)); - }, - prependListener() {}, - on() {}, - once() {}, - emit() {} - }); - }); - }); -} - -function basename(fn) { - const m = /^(.+\/)[^\/]+\/?$/.exec(fn); - return m && m[1]; -} - -function enumZipEntries(zipFn, callback) { - return new Promise(function (resolve, reject) { - (0, _yauzl.open)(zipFn, { lazyEntries: true }, function (err, zipfile) { - if (err) { - return reject(err); - } - zipfile.on('end', resolve); - zipfile.on('error', reject); - zipfile.on('entry', function (entry) { - const result = callback(entry, zipfile); - if (result && typeof result.then === 'function') { - result.then(function () { - return zipfile.readEntry(); - }); - } else { - zipfile.readEntry(); - } - }); - zipfile.readEntry(); - }); - }); -} - -const commands = exports.commands = { - bundle: function () { - var _ref7 = _asyncToGenerator(function* (_ref8) { - let options = _ref8.options; - - const platform = (0, _app.checkPlatform)(options.platform || (yield (0, _utils.question)('Platform(ios/android):'))); - - var _translateOptions = (0, _utils.translateOptions)(_extends({}, options, { - platform - })); - - let bundleName = _translateOptions.bundleName, - entryFile = _translateOptions.entryFile, - intermediaDir = _translateOptions.intermediaDir, - output = _translateOptions.output, - dev = _translateOptions.dev, - verbose = _translateOptions.verbose; - - // const sourcemapOutput = path.join(intermediaDir, bundleName + ".map"); - - const realOutput = output.replace(/\$\{time\}/g, '' + Date.now()); - - if (!platform) { - throw new Error('Platform must be specified.'); - } - - var _getRNVersion = (0, _utils.getRNVersion)(); - - const version = _getRNVersion.version, - major = _getRNVersion.major, - minor = _getRNVersion.minor; - - - console.log('Bundling with React Native version: ', version); - - yield runReactNativeBundleCommand(bundleName, dev, entryFile, intermediaDir, platform); - - yield pack(path.resolve(intermediaDir), realOutput); - - const v = yield (0, _utils.question)('Would you like to publish it?(Y/N)'); - if (v.toLowerCase() === 'y') { - yield this.publish({ - args: [realOutput], - options: { - platform - } - }); - } - }); - - return function bundle(_x21) { - return _ref7.apply(this, arguments); - }; - }(), - - diff(_ref9) { - let args = _ref9.args, - options = _ref9.options; - return _asyncToGenerator(function* () { - var _args = _slicedToArray(args, 2); - - const origin = _args[0], - next = _args[1]; - const output = options.output; - - - const realOutput = output.replace(/\$\{time\}/g, '' + Date.now()); - - if (!origin || !next) { - console.error('pushy diff '); - process.exit(1); - } - - yield diffFromPPK(origin, next, realOutput, 'index.bundlejs'); - console.log(`${realOutput} generated.`); - })(); - }, - - diffFromApk(_ref10) { - let args = _ref10.args, - options = _ref10.options; - return _asyncToGenerator(function* () { - var _args2 = _slicedToArray(args, 2); - - const origin = _args2[0], - next = _args2[1]; - const output = options.output; - - - const realOutput = output.replace(/\$\{time\}/g, '' + Date.now()); - - if (!origin || !next) { - console.error('pushy diffFromApk '); - process.exit(1); - } - - yield diffFromPackage(origin, next, realOutput, 'assets/index.android.bundle'); - console.log(`${realOutput} generated.`); - })(); - }, - - diffFromIpa(_ref11) { - let args = _ref11.args, - options = _ref11.options; - return _asyncToGenerator(function* () { - var _args3 = _slicedToArray(args, 2); - - const origin = _args3[0], - next = _args3[1]; - const output = options.output; - - - const realOutput = output.replace(/\$\{time\}/g, '' + Date.now()); - - if (!origin || !next) { - console.error('pushy diffFromIpa '); - process.exit(1); - } - - yield diffFromPackage(origin, next, realOutput, 'main.jsbundle', function (v) { - const m = /^Payload\/[^/]+\/(.+)$/.exec(v); - return m && m[1]; - }); - - console.log(`${realOutput} generated.`); - })(); - } -}; \ No newline at end of file diff --git a/lib/index.js b/lib/index.js deleted file mode 100755 index e928afc..0000000 --- a/lib/index.js +++ /dev/null @@ -1,65 +0,0 @@ -#!/usr/bin/env node -'use strict'; - -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - -/** - * Created by tdzl2003 on 2/13/16. - */ - -var _require = require('./api'); - -const loadSession = _require.loadSession; - -const updateNotifier = require('update-notifier'); -const pkg = require('../package.json'); - -updateNotifier({ pkg }).notify(); - -function printUsage(_ref) { - let args = _ref.args; - - // const commandName = args[0]; - // TODO: print usage of commandName, or print global usage. - - console.log('Usage is under development now.'); - console.log('Visit `https://github.com/reactnativecn/react-native-pushy` for early document.'); - process.exit(1); -} - -function printVersionCommand() { - if (process.argv.indexOf('-v') >= 0 || process.argv[2] === 'version') { - console.log('react-native-update-cli: ' + pkg.version); - try { - const PACKAGE_JSON_PATH = path.resolve(process.cwd(), 'node_modules', 'react-native-update', 'package.json'); - console.log('react-native-update: ' + require(PACKAGE_JSON_PATH).version); - } catch (e) { - console.log('react-native-update: n/a - not inside a React Native project directory'); - } - process.exit(); - } -} - -const commands = _extends({}, require('./user').commands, require('./bundle').commands, require('./app').commands, require('./package').commands, require('./versions').commands, { - help: printUsage -}); - -function run() { - printVersionCommand(); - - const argv = require('cli-arguments').parse(require('../cli.json')); - global.NO_INTERACTIVE = argv.options['no-interactive']; - - loadSession().then(function () { - return commands[argv.command](argv); - }).catch(function (err) { - if (err.status === 401) { - console.log('Not loggined.\nRun `pushy login` at your project directory to login.'); - return; - } - console.error(err.stack); - process.exit(-1); - }); -}; - -run(); \ No newline at end of file diff --git a/lib/package.js b/lib/package.js deleted file mode 100644 index 3073f2b..0000000 --- a/lib/package.js +++ /dev/null @@ -1,170 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.commands = exports.choosePackage = exports.listPackage = undefined; - -let listPackage = exports.listPackage = function () { - var _ref = _asyncToGenerator(function* (appId) { - var _ref2 = yield get(`/app/${appId}/package/list?limit=1000`); - - const data = _ref2.data; - - - const header = [{ value: 'Package Id' }, { value: 'Version' }]; - const rows = []; - for (const pkg of data) { - const version = pkg.version; - - let versionInfo = ''; - if (version) { - versionInfo = ` - ${version.id} ${version.hash.slice(0, 8)} ${version.name}`; - } else { - versionInfo = ' (newest)'; - } - - rows.push([pkg.id, `${pkg.name}(${pkg.status})${versionInfo}`]); - } - - console.log(Table(header, rows).render()); - console.log(`\nTotal ${data.length} package(s).`); - return data; - }); - - return function listPackage(_x) { - return _ref.apply(this, arguments); - }; -}(); - -let choosePackage = exports.choosePackage = function () { - var _ref3 = _asyncToGenerator(function* (appId) { - const list = yield listPackage(appId); - - while (true) { - const id = yield (0, _utils.question)('Enter Package Id:'); - const app = list.find(function (v) { - return v.id === (id | 0); - }); - if (app) { - return app; - } - } - }); - - return function choosePackage(_x2) { - return _ref3.apply(this, arguments); - }; -}(); - -var _utils = require('./utils'); - -var _app = require('./app'); - -function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } - -/** - * Created by tdzl2003 on 4/2/16. - */ - -var _require = require('./api'); - -const get = _require.get, - post = _require.post, - uploadFile = _require.uploadFile; - -const Table = require('tty-table'); - -const commands = exports.commands = { - uploadIpa: function () { - var _ref4 = _asyncToGenerator(function* (_ref5) { - let args = _ref5.args; - - const fn = args[0]; - if (!fn) { - throw new Error('Usage: pushy uploadIpa '); - } - - var _ref6 = yield (0, _utils.getIpaInfo)(fn); - - const versionName = _ref6.versionName, - buildTime = _ref6.buildTime; - - var _ref7 = yield (0, _app.getSelectedApp)('ios'); - - const appId = _ref7.appId; - - var _ref8 = yield uploadFile(fn); - - const hash = _ref8.hash; - - var _ref9 = yield post(`/app/${appId}/package/create`, { - name: versionName, - hash, - buildTime - }); - - const id = _ref9.id; - - console.log(`Ipa uploaded: ${id}`); - }); - - return function uploadIpa(_x3) { - return _ref4.apply(this, arguments); - }; - }(), - uploadApk: function () { - var _ref10 = _asyncToGenerator(function* (_ref11) { - let args = _ref11.args; - - const fn = args[0]; - if (!fn) { - throw new Error('Usage: pushy uploadApk '); - } - - var _ref12 = yield (0, _utils.getApkInfo)(fn); - - const versionName = _ref12.versionName, - buildTime = _ref12.buildTime; - - var _ref13 = yield (0, _app.getSelectedApp)('android'); - - const appId = _ref13.appId; - - var _ref14 = yield uploadFile(fn); - - const hash = _ref14.hash; - - var _ref15 = yield post(`/app/${appId}/package/create`, { - name: versionName, - hash, - buildTime - }); - - const id = _ref15.id; - - console.log(`Apk uploaded: ${id}`); - }); - - return function uploadApk(_x4) { - return _ref10.apply(this, arguments); - }; - }(), - packages: function () { - var _ref16 = _asyncToGenerator(function* (_ref17) { - let options = _ref17.options; - - const platform = (0, _app.checkPlatform)(options.platform || (yield (0, _utils.question)('Platform(ios/android):'))); - - var _ref18 = yield (0, _app.getSelectedApp)(platform); - - const appId = _ref18.appId; - - yield listPackage(appId); - }); - - return function packages(_x5) { - return _ref16.apply(this, arguments); - }; - }() -}; \ No newline at end of file diff --git a/lib/user.js b/lib/user.js deleted file mode 100644 index 0b40da4..0000000 --- a/lib/user.js +++ /dev/null @@ -1,72 +0,0 @@ -'use strict'; - -var _utils = require('./utils'); - -function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } /** - * Created by tdzl2003 on 2/13/16. - */ - -var _require = require('./api'); - -const post = _require.post, - get = _require.get, - replaceSession = _require.replaceSession, - saveSession = _require.saveSession, - closeSession = _require.closeSession; - -const crypto = require('crypto'); - -function md5(str) { - return crypto.createHash('md5').update(str).digest('hex'); -} - -exports.commands = { - login: function () { - var _ref = _asyncToGenerator(function* (_ref2) { - let args = _ref2.args; - - const email = args[0] || (yield (0, _utils.question)('email:')); - const pwd = args[1] || (yield (0, _utils.question)('password:', true)); - - var _ref3 = yield post('/user/login', { - email, - pwd: md5(pwd) - }); - - const token = _ref3.token, - info = _ref3.info; - - replaceSession({ token }); - yield saveSession(); - console.log(`Welcome, ${info.name}.`); - }); - - return function login(_x) { - return _ref.apply(this, arguments); - }; - }(), - logout: function () { - var _ref4 = _asyncToGenerator(function* () { - yield closeSession(); - console.log('Logged out.'); - }); - - return function logout() { - return _ref4.apply(this, arguments); - }; - }(), - me: function () { - var _ref5 = _asyncToGenerator(function* () { - const me = yield get('/user/me'); - for (const k in me) { - if (k !== 'ok') { - console.log(`${k}: ${me[k]}`); - } - } - }); - - return function me() { - return _ref5.apply(this, arguments); - }; - }() -}; \ No newline at end of file diff --git a/lib/utils/index.js b/lib/utils/index.js deleted file mode 100644 index 695b5cf..0000000 --- a/lib/utils/index.js +++ /dev/null @@ -1,123 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.getIpaInfo = exports.getApkInfo = undefined; - -let getApkInfo = exports.getApkInfo = function () { - var _ref = _asyncToGenerator(function* (fn) { - const appInfoParser = new AppInfoParser(fn); - - var _ref2 = yield appInfoParser.parse(); - - const versionName = _ref2.versionName, - application = _ref2.application; - - let buildTime = 0; - if (Array.isArray(application.metaData)) { - for (const meta of application.metaData) { - if (meta.name === 'pushy_build_time') { - buildTime = meta.value[0]; - } - } - } - if (buildTime == 0) { - throw new Error('Can not get build time for this app.'); - } - return { versionName, buildTime }; - }); - - return function getApkInfo(_x) { - return _ref.apply(this, arguments); - }; -}(); - -let getIpaInfo = exports.getIpaInfo = function () { - var _ref3 = _asyncToGenerator(function* (fn) { - const appInfoParser = new AppInfoParser(fn); - - var _ref4 = yield appInfoParser.parse(); - - const versionName = _ref4.CFBundleShortVersionString; - - let buildTimeTxtBuffer = yield appInfoParser.parser.getEntry(/payload\/.+?\.app\/pushy_build_time.txt/); - if (!buildTimeTxtBuffer) { - // Not in root bundle when use `use_frameworks` - buildTimeTxtBuffer = yield appInfoParser.parser.getEntry(/payload\/.+?\.app\/frameworks\/react_native_update.framework\/pushy_build_time.txt/); - } - if (!buildTimeTxtBuffer) { - throw new Error('Can not get build time for this app.'); - } - const buildTime = buildTimeTxtBuffer.toString().replace('\n', ''); - return { versionName, buildTime }; - }); - - return function getIpaInfo(_x2) { - return _ref3.apply(this, arguments); - }; -}(); - -exports.question = question; -exports.translateOptions = translateOptions; -exports.getRNVersion = getRNVersion; - -var _path = require('path'); - -var path = _interopRequireWildcard(_path); - -var _fsExtra = require('fs-extra'); - -var fs = _interopRequireWildcard(_fsExtra); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } /** - * Created by tdzl2003 on 2/13/16. - */ - -const AppInfoParser = require('app-info-parser'); - -var read = require('read'); - -function question(query, password) { - if (NO_INTERACTIVE) { - return Promise.resolve(''); - } - return new Promise(function (resolve, reject) { - return read({ - prompt: query, - silent: password, - replace: password ? '*' : undefined - }, function (err, result) { - return err ? reject(err) : resolve(result); - }); - }); -} - -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; -} - -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 - }; -} \ No newline at end of file diff --git a/lib/versions.js b/lib/versions.js deleted file mode 100644 index 0fa14fe..0000000 --- a/lib/versions.js +++ /dev/null @@ -1,199 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.commands = undefined; - -let showVersion = function () { - var _ref = _asyncToGenerator(function* (appId, offset) { - var _ref2 = yield get(`/app/${appId}/version/list`); - - const data = _ref2.data, - count = _ref2.count; - - console.log(`Offset ${offset}`); - for (const version of data) { - let packageInfo = version.packages.slice(0, 3).map(function (v) { - return v.name; - }).join(', '); - const count = version.packages.length; - if (count > 3) { - packageInfo += `...and ${count - 3} more`; - } - if (count === 0) { - packageInfo = `(no package)`; - } else { - packageInfo = `[${packageInfo}]`; - } - console.log(`${version.id}) ${version.hash.slice(0, 8)} ${version.name} ${packageInfo}`); - } - return data; - }); - - return function showVersion(_x, _x2) { - return _ref.apply(this, arguments); - }; -}(); - -let listVersions = function () { - var _ref3 = _asyncToGenerator(function* (appId) { - let offset = 0; - while (true) { - yield showVersion(appId, offset); - const cmd = yield (0, _utils.question)('page Up/page Down/Begin/Quit(U/D/B/Q)'); - switch (cmd.toLowerCase()) { - case 'u': - offset = Math.max(0, offset - 10);break; - case 'd': - offset += 10;break; - case 'b': - offset = 0;break; - case 'q': - return; - } - } - }); - - return function listVersions(_x3) { - return _ref3.apply(this, arguments); - }; -}(); - -let chooseVersion = function () { - var _ref4 = _asyncToGenerator(function* (appId) { - let offset = 0; - while (true) { - const data = yield showVersion(appId, offset); - const cmd = yield (0, _utils.question)('Enter versionId or page Up/page Down/Begin(U/D/B)'); - switch (cmd.toLowerCase()) { - case 'U': - offset = Math.max(0, offset - 10);break; - case 'D': - offset += 10;break; - case 'B': - offset = 0;break; - default: - { - const v = data.find(function (v) { - return v.id === (cmd | 0); - }); - if (v) { - return v; - } - } - } - } - }); - - return function chooseVersion(_x4) { - return _ref4.apply(this, arguments); - }; -}(); - -var _utils = require('./utils'); - -var _app = require('./app'); - -var _package = require('./package'); - -function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } - -/** - * Created by tdzl2003 on 4/2/16. - */ - -var _require = require('./api'); - -const get = _require.get, - post = _require.post, - put = _require.put, - uploadFile = _require.uploadFile; -const commands = exports.commands = { - publish: function () { - var _ref5 = _asyncToGenerator(function* (_ref6) { - let args = _ref6.args, - options = _ref6.options; - - const fn = args[0]; - const name = options.name, - description = options.description, - metaInfo = options.metaInfo; - - - if (!fn || !fn.endsWith('.ppk')) { - throw new Error('Usage: pushy publish --platform ios|android'); - } - - const platform = (0, _app.checkPlatform)(options.platform || (yield (0, _utils.question)('Platform(ios/android):'))); - - var _ref7 = yield (0, _app.getSelectedApp)(platform); - - const appId = _ref7.appId; - - var _ref8 = yield uploadFile(fn); - - const hash = _ref8.hash; - - var _ref9 = yield post(`/app/${appId}/version/create`, { - name: name || (yield (0, _utils.question)('Enter version name:')) || '(未命名)', - hash, - description: description || (yield (0, _utils.question)('Enter description:')), - metaInfo: metaInfo || (yield (0, _utils.question)('Enter meta info:')) - }); - - const id = _ref9.id; - - console.log(`Version published: ${id}`); - - const v = yield (0, _utils.question)('Would you like to bind packages to this version?(Y/N)'); - if (v.toLowerCase() === 'y') { - yield this.update({ args: [], options: { versionId: id, platform } }); - } - }); - - return function publish(_x5) { - return _ref5.apply(this, arguments); - }; - }(), - versions: function () { - var _ref10 = _asyncToGenerator(function* (_ref11) { - let options = _ref11.options; - - const platform = (0, _app.checkPlatform)(options.platform || (yield (0, _utils.question)('Platform(ios/android):'))); - - var _ref12 = yield (0, _app.getSelectedApp)(platform); - - const appId = _ref12.appId; - - yield listVersions(appId); - }); - - return function versions(_x6) { - return _ref10.apply(this, arguments); - }; - }(), - update: function () { - var _ref13 = _asyncToGenerator(function* (_ref14) { - let args = _ref14.args, - options = _ref14.options; - - const platform = (0, _app.checkPlatform)(options.platform || (yield (0, _utils.question)('Platform(ios/android):'))); - - var _ref15 = yield (0, _app.getSelectedApp)(platform); - - const appId = _ref15.appId; - - const versionId = options.versionId || (yield chooseVersion(appId)).id; - const pkgId = options.packageId || (yield (0, _package.choosePackage)(appId)).id; - yield put(`/app/${appId}/package/${pkgId}`, { - versionId - }); - console.log('Ok.'); - }); - - return function update(_x7) { - return _ref13.apply(this, arguments); - }; - }() -}; \ No newline at end of file