UNPKG

@quasar/app-webpack

Version:

Quasar Framework App CLI with Webpack

97 lines (75 loc) 1.99 kB
const parseArgs = require('minimist') const argv = parseArgs(process.argv.slice(2), { alias: { h: 'help' }, boolean: ['h'] }) const extId = argv._[0] const cmd = argv._[1] if (!extId || argv.help) { console.log(` Description Run app extension provided commands Usage $ quasar run <extension-id> <cmd> [args, params] $ quasar <extension-id> <cmd> [args, params] $ quasar run iconify create pic -s --mark some_file $ quasar iconify create pic -s --mark some_file # Note: "iconify" is an example and not a real extension. # Looks for installed extension called "iconify" # (quasar-app-extension-iconify extension package) # and runs its custom defined "create" command # with "pic" argument and "-s --mark some_file" params Options --help, -h Displays this message `) process.exit(0) } const { log, warn } = require('../utils/logger.js') function getArgv({ _, ...params }) { return { args: _.slice(2), params } } const { getCtx } = require('../utils/get-ctx.js') const { appExt } = getCtx() const ext = appExt.getInstance(extId) if (ext === void 0) { warn() warn(`"${extId}" app extension is not installed`) warn() process.exit(1) } async function run() { const hooks = await ext.run() const list = () => { if (Object.keys(hooks.commands).length === 0) { warn(`"${extId}" app extension has no commands registered`) return } log(`Listing "${extId}" app extension commands`) log() for (const hookCmd in hooks.commands) { console.log(` > ${hookCmd}`) } console.log() } if (!cmd) { list() process.exit(0) } if (!hooks.commands[cmd]) { warn() warn(`"${extId}" app extension has no command called "${cmd}"`) warn() list() process.exit(1) } const command = hooks.commands[cmd] log(`Running "${extId}" > "${cmd}" command`) log() await command(getArgv(argv)) } run()