1
0
Code Issues Pull Requests 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

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

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

@ -7,11 +7,40 @@ const {
post,
uploadFile,
} = require('./api');
import { question } from './utils';
import { checkPlatform, getSelectedApp } from './app';
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 = {
uploadIpa: async function({args}) {
const fn = args[0];
@ -45,4 +74,9 @@ export const commands = {
});
console.log('Ok.');
},
packages: async function({options}) {
const { platform } = options;
const { appId } = await getSelectedApp(platform);
await listPackage(appId);
},
};

@ -7,8 +7,64 @@ const {
post,
uploadFile,
} = require('./api');
import { question } from './utils';
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 = {
publish: async function({args, options}) {
@ -17,16 +73,34 @@ export const commands = {
if (!fn || !platform) {
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,
hash,
description,
metaInfo,
});
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);
}
};