UNPKG

@ignitial/iio-cli

Version:

Ignitial.io (IIO) application & services project generator

65 lines (62 loc) 2.69 kB
const cli = require('commander') const txtRed = require('../utils').txtRed const txtOrange = require('../utils').txtOrange const create = require('../helpers/create') const deploy = require('../helpers/deploy') const deployFromRefLib = require('../helpers/deployFromRefLib') const publish = require('../helpers/publish') const populate = require('../helpers/populate') module.exports = function(config) { cli .command('app <action> [name]') .description('manage apps: \ \n\t\t\t\t\t<create> from template \ \n\t\t\t\t\t<deploy> to cluster \ \n\t\t\t\t\t<remove> from cluster \ \n\t\t\t\t\t<populate> app in cluster \ \n\t\t\t\t\t<publish> to reference library') .option('-l, --lang <language>', 'set template\'s language: py, js (default: js)') .option('-p, --path <path>', 'set destination directory path when <create> (default=./<name>)') .option('-t, --tag <version_tag>', 'select specific version thanks to git tags when <create> (could be branch name as well)') .option('-w, --workingDir <path>', 'set working directory path when <publish>, <deploy>, <remove>, <populate> from local repository (default=.)') .option('-o, --orchestrator <type>', 'set orchestrator type (k8s|swarm) when <deploy>, <remove>, <populate> from local repository (default=k8s)') .option('-i, --ingress <inressType>', 'set ingress type when <deploy>, <remove>, <populate> from local repository (nginx|traefik, default=nginx)') .action(function(action, name, options) { switch (action) { case 'create': if (!name) { name = 'myApp' console.log(txtOrange('WARNING: missing [name], then default [myApp] used')) } create(config, 'app', name, options) break case 'deploy': if (name) { console.log('[name] provided, then deploy from reference library') deployFromRefLib(config, 'deploy', name, options) } else { console.log('deploy from local Git repository') deploy('deploy', options) } break case 'remove': if (name) { console.log('[name] provided, then remove by name') deployFromRefLib(config, 'remove', name, options) } else { console.log('remove using local Git repository receipes') deploy('remove', options) } break case 'populate': populate(options) break case 'publish': publish(config, options) break default: console.log('action [%s] is not available') process.exit(1) } }) }