UNPKG

workflow-cmd

Version:

Command line interface for workflow.

139 lines (117 loc) 3.17 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } var shell = _interopDefault(require('shelljs')); var child_process = require('child_process'); var os = _interopDefault(require('os')); var path = require('path'); var spawn = _interopDefault(require('cross-spawn')); function args(args) { const parsedArgs = { named: {}, positional: [] }; const argsLength = args.length; for (let i = 2; i < argsLength; i++) { const arg = args[i]; if (arg[0] === '-') { const name = getArgName(arg); if (args[i + 1] === undefined) { parsedArgs.named[name] = true; } else { parsedArgs.named[name] = args[i + 1]; } i++; } else { parsedArgs.positional.push(arg); } } return parsedArgs; } function getArgName(arg) { let sliceIndex; const isWordArg = arg[1] === '-'; if (isWordArg) { if (arg.length === 3) throw new Error(`expected ${arg} to be a word arg`); sliceIndex = 2; } else { sliceIndex = 1; } return arg.slice(sliceIndex, arg.length); } /* eslint-disable import/prefer-default-export */ function which(cmd) { return shell.exec(`which ${cmd}`, { silent: true, async: false }); } /* eslint-env node */ const platform = process.platform; function isRunningI3() { try { child_process.execSync("i3-msg 'exec echo 1'", { stdio: 'ignore' }); return true; } catch (e) { return false; } } function isRunningWmctrl() { return which('wmctrl').code === 0; } const wm = (() => { switch (platform) { case 'win32': case 'darwin': return 'default'; case 'linux': { if (isRunningI3()) { return 'i3'; } else if (isRunningWmctrl()) { return 'wmctrl'; } return 'unknown'; } } return 'unknown'; })(); const dev = process.env.WORKFLOW_DEV_MODE === 'true'; const homedir = process.env.WORKFLOW_HOME; const devhomedir = process.env.WORKFLOW_DEV_HOME; const { config } = args(process.argv).named; let configPath; let baseFolder; (() => { if (dev) { if (devhomedir) { baseFolder = devhomedir; configPath = path.join(devhomedir, 'config.js'); } else { baseFolder = path.join(__dirname, '..', '..', 'workflow-template', 'config.js'); configPath = path.join(baseFolder, 'config.js'); } } else { if (config) { baseFolder = path.dirname(config); configPath = config; } else if (homedir) { baseFolder = homedir; configPath = path.join(baseFolder, 'config.js'); } else { configPath = path.join(os.homedir(), '.workflow', 'config.js'); baseFolder = `${os.homedir()}/.workflow`; } } })(); /* eslint-env node */ if (dev) { console.log('Running in dev mode'); console.log(`From: ${baseFolder}`); } function cli(node, cmd, args) { var env = Object.create(process.env); env.NODE_PATH = `${baseFolder}/node_modules`; spawn(path.join(__dirname, '..', 'index.js'), args, { stdio: 'inherit', env: env }); } exports.cli = cli;