stratumn-cli
Version:
CLI tools for Stratumn
56 lines (45 loc) • 1.33 kB
JavaScript
import fs from 'fs';
import path from 'path';
import commander from 'commander';
import readPackageSync from '../utils/readPackageSync';
import post from '../utils/post';
import poll from '../utils/poll';
commander
.usage('<app-name> [script-path]')
.version(readPackageSync('version'))
.option('-p, --plan <name>', 'change the plan')
.option('-n, --agent-count <int>', 'change the number of agents')
.parse(process.argv);
if (commander.args.length < 1 || commander.args.length > 2) {
commander.help();
}
function handleError(err) {
process.stderr.write(err.message + '\n', () => process.exit(1));
}
const payload = {};
if (commander.plan) {
payload.plan = commander.plan;
}
if (commander.agentCount) {
payload.agentCount = commander.agentCount;
}
if (commander.args.length === 2) {
const scriptPath = path.join(process.cwd(), commander.args[1]);
try {
payload.script = fs.readFileSync(scriptPath, 'utf8');
} catch (err) {
handleError(err);
}
}
post('/applications/' + commander.args[0] + '/deploy', payload, true)
.then(app => poll(app.name))
.then(() => {
process.stdout.write('\n', process.exit);
})
.catch(err => {
if (err.code === 'ENOENT') {
process.stdout.write('You must login first\n', () => process.exit(1));
return;
}
handleError(err);
});