UNPKG

@ignitial/iio-cli

Version:

Ignitial.io (IIO) application & services project generator

104 lines (87 loc) 2.95 kB
const fs = require('fs-extra') const path = require('path') const spawn = require('child_process').spawn const YAML = require('yaml') const expandHomeDir = require('expand-home-dir') const txtRed = require('../utils').txtRed const txtOrange = require('../utils').txtOrange module.exports = function(action, options) { options.ingress = options.ingress || 'nginx' options.orchestrator = options.orchestrator || 'k8s' let npmDeployCmdTarget = 'deploy' let npmRemoveCmdTarget = 'remove' let workingDirectory = path.resolve('.') if (options.workingDir) { workingDirectory = path.resolve(options.workingDir) } let configFile = path.join(workingDirectory, 'k8s', 'config', 'deploy.yaml') let config try { config = fs.readFileSync(configFile, 'utf8') config = YAML.parse(config) if (config.cluster.kubeConfigPath.match('~')) { config.cluster.kubeConfigPath = expandHomeDir(config.cluster.kubeConfigPath) } } catch (err) { console.error('error when processing deploy config', err) } process.env.IIOS_K8S_KUBECONFIG_PATH = config.cluster.kubeConfigPath switch (options.orchestrator) { case 'k8s': npmDeployCmdTarget = 'k8s:' + npmDeployCmdTarget npmRemoveCmdTarget = 'k8s:' + npmRemoveCmdTarget break case 'swarm': npmDeployCmdTarget = 'swarm:' + npmDeployCmdTarget npmRemoveCmdTarget = 'swarm:' + npmRemoveCmdTarget break default: if (options.orchestrator && options.orchestrator !== '') { console.log(txtOrange('value [' + options.orchestrator + '] for option [orchestrator] is not available')) } } switch (options.ingress) { case 'nginx': break case 'traefik': process.env.IIOS_USE_TRAEFIK = true; break default: if (options.ingress && options.ingress !== '') { console.log(txtOrange('value [' + options.ingress + '] for option [ingress] is not available')) } } try { let npm switch (action) { case 'deploy': npm = spawn('npm', [ 'run', npmDeployCmdTarget ], { cwd: workingDirectory }) npm.stdout.on('data', data => { console.log(data.toString().slice(0, -1)) }) npm.stderr.on('data', data => { console.error(data.toString().slice(0, -1)) }) npm.on('close', code => { console.log('deployment done.') }) break case 'remove': npm = spawn('npm', [ 'run', npmRemoveCmdTarget] , { cwd: workingDirectory }) npm.stdout.on('data', data => { console.log(data.toString().slice(0, -1)) }) npm.stderr.on('data', data => { console.error(data.toString().slice(0, -1)) }) npm.on('close', code => { console.log('removal done.') }) break } } catch (err) { console.error(txtRed('error when deploying cluster')) process.exit(1) } }