UNPKG

pyr

Version:

A package for creating a script to store and run your most commonly used CLI commands

78 lines (67 loc) 1.85 kB
#!/usr/bin/env node const chalk = require('chalk'); const { GlobalConfig } = require('src/config'); const { print, ERROR } = require('src/messages'); const { printJson, safeExit } = require('src/utility'); const Menu = require('src/menu'); const Operation = require('src/program/operations/operation'); const OPERATION_NAME = 'print'; const OPERATION_FLAG = 'p'; const OPERATION_DESCRIPTION = 'print a saved script'; const EXPECTED_ARGUMENTS_LENGTH = 1; /** * Print a script * * TODO change this whole function to print out the .yml file (reverse engineered from the .json file) */ const printScript = script => { console.log(chalk.blue.bold(script.getName()) + ' script:\n'); console.log('Options:'); printJson(script.getOptions(), 'cyan'); console.log('\nCommands:'); printJson(script.getCommands(), 'green'); console.log('\nDirectories:'); printJson(script.getDirectories(), 'blue'); } const handler = args => { GlobalConfig.load(); if (Object.keys(GlobalConfig.getScripts()).length === 0) { print(ERROR, 'noSavedScripts'); safeExit(); } else if (args.length === 0) { const menu = new Menu({ operationName: operation.name, operationRun: operation.run }); menu.run(); } else { const scriptName = args[0]; const script = GlobalConfig.getScript(scriptName); if (script) { printScript(script); } else { print(ERROR, 'scriptDoesNotExist', scriptName); } safeExit(); } }; const operation = { name: OPERATION_NAME, flag: OPERATION_FLAG, description: OPERATION_DESCRIPTION, args: [{ name: 'script name', required: false }], whitelist: [], run: handler }; module.exports = new Operation(operation);