1
0
mirror of https://gitcode.com/gh_mirrors/re/react-native-pushy.git synced 2025-09-16 10:21:37 +08:00
Code Issues Packages Projects Releases Wiki Activity GitHub Gitee
This commit is contained in:
tdzl2003
2016-04-03 18:04:10 +08:00
parent f1694be238
commit c89fd2f3c6
4 changed files with 135 additions and 5 deletions

View File

@@ -43,6 +43,13 @@
}, },
"uploadApk": { "uploadApk": {
}, },
"packages": {
"options": {
"platform": {
"hasValue": true
}
}
},
"publish": { "publish": {
"options": { "options": {
@@ -60,6 +67,21 @@
} }
} }
}, },
"versions": {
"options": {
"platform": {
"hasValue": true
}
}
},
"update": {
"options": {
"platform": {
"hasValue": true
}
}
},
"build": { "build": {
"description": "Bundle javascript and copy assets." "description": "Bundle javascript and copy assets."

View File

@@ -54,8 +54,8 @@ export async function chooseApp(platform) {
const list = await listApp(platform); const list = await listApp(platform);
while (true) { while (true) {
const id = await question('Platform(ios/android):'); const id = await question('Enter appId:');
const app = list.find(v=>v.id === id); const app = list.find(v=>v.id === (id|0));
if (app) { if (app) {
return app; return app;
} }

View File

@@ -7,11 +7,40 @@ const {
post, post,
uploadFile, uploadFile,
} = require('./api'); } = require('./api');
import { question } from './utils';
import { checkPlatform, getSelectedApp } from './app'; import { checkPlatform, getSelectedApp } from './app';
import {getIPAVersion, getApkVersion} from './utils'; import {getIPAVersion, getApkVersion} from './utils';
export async function listPackage(appId){
const {data} = await get(`/app/${appId}/package/list?limit=1000`);
for (const pkg of data) {
const {version} = pkg;
let versionInfo = '';
if (version) {
versionInfo = ` - ${version.id} ${version.hash.slice(0, 8)} ${version.name}`;
} else {
versionInfo = ' (newest)';
}
console.log(`${pkg.id}) ${pkg.name}(${pkg.status})${versionInfo}`);
}
console.log(`\nTotal ${data.length} packages.`);
return data;
}
export async function choosePackage(appId) {
const list = await listPackage(appId);
while (true) {
const id = await question('Enter packageId:');
const app = list.find(v=>v.id === (id|0));
if (app) {
return app;
}
}
}
export const commands = { export const commands = {
uploadIpa: async function({args}) { uploadIpa: async function({args}) {
const fn = args[0]; const fn = args[0];
@@ -45,4 +74,9 @@ export const commands = {
}); });
console.log('Ok.'); console.log('Ok.');
}, },
packages: async function({options}) {
const { platform } = options;
const { appId } = await getSelectedApp(platform);
await listPackage(appId);
},
}; };

View File

@@ -7,8 +7,64 @@ const {
post, post,
uploadFile, uploadFile,
} = require('./api'); } = require('./api');
import { question } from './utils';
import { checkPlatform, getSelectedApp } from './app'; import { checkPlatform, getSelectedApp } from './app';
import { choosePackage } from './package';
async function showVersion(appId, offset) {
const { data, count } = await get(`/app/${appId}/version/list`);
console.log(`Offset ${offset}`);
for (const version of data) {
let packageInfo = version.packages.slice(0, 3).map(v=>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;
}
async function listVersions(appId) {
let offset = 0;
while (true) {
await showVersion(appId, offset);
const cmd = await 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;
}
}
}
async function chooseVersion(appId) {
let offset = 0;
while (true) {
const data = await showVersion(appId, offset);
const cmd = await 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:
{
console.log(data.find(v=>v.id === (cmd | 0)));
const v = data.find(v=>v.id === (cmd | 0));
if (v) {
return v;
}
}
}
}
}
export const commands = { export const commands = {
publish: async function({args, options}) { publish: async function({args, options}) {
@@ -17,16 +73,34 @@ export const commands = {
if (!fn || !platform) { if (!fn || !platform) {
throw new Error('Usage: pushy publish <ppkFile> --platform ios|android'); throw new Error('Usage: pushy publish <ppkFile> --platform ios|android');
} }
const {appId} = await getSelectedApp(platform); const { appId } = await getSelectedApp(platform);
const {hash} = await uploadFile(fn); const { hash } = await uploadFile(fn);
const {id} = await post(`/app/${appId}/version/create`, { const { id } = await post(`/app/${appId}/version/create`, {
name, name,
hash, hash,
description, description,
metaInfo, metaInfo,
}); });
console.log('Ok.'); console.log('Ok.');
const v = await question('Would you like to bind packages to this version?(Y/N)');
if (v.toLowerCase() === 'y') {
await this.update({args:[], options:{packageId: id, }});
}
}, },
versions: async function({options}) {
const { platform } = options;
const { appId } = await getSelectedApp(platform);
await listVersions(appId);
},
update: async function({args, options}) {
const { platform } = options;
const { appId } = await getSelectedApp(platform);
const version = await chooseVersion(appId);
const pkg = await choosePackage(appId);
console.log(version);
console.log(pkg);
}
}; };