UNPKG

st-bundle

Version:

CLI for watching and bundling SpringType projects.

55 lines (54 loc) 1.93 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const env_1 = require("../env"); const FuseBoxLogAdapter_1 = require("../fuse-log/FuseBoxLogAdapter"); const utils_1 = require("../utils/utils"); const sparky_chain_1 = require("./sparky_chain"); const prettyTime = require("pretty-time"); function sparky(Ctx) { const ctx = new Ctx(); const tasks = {}; const log = FuseBoxLogAdapter_1.createFuseLogger({ level: 'verbose' }); log.flush(); let execScheduled = false; const execNext = () => { if (!execScheduled) { const argv = process.argv; argv.splice(0, 2); let taskName = argv[0] || 'default'; taskName = /^--/.test(taskName) ? 'default' : taskName; setTimeout(async () => { await scope.exec(taskName); }, 0); } execScheduled = true; }; const times = {}; const scope = { activities: [], rm: (folder) => { utils_1.removeFolder(utils_1.ensureAbsolutePath(folder, env_1.env.SCRIPT_PATH)); }, src: (glob) => sparky_chain_1.sparkyChain(log).src(glob), exec: async (name) => { if (!tasks[name]) { log.error("Can't find task name: $name", { name }); log.printBottomMessages(); return; } times[name] = process.hrtime(); log.info('<magenta>[ ' + name + ' ]</magenta>', 'Starting', { name }); await tasks[name](ctx); log.info('<dim><magenta>[ ' + name + ' ]</magenta></dim>', '<dim>Completed in $time</dim>', { time: prettyTime(process.hrtime(times[name]), 'ms'), }); log.printBottomMessages(); }, task: (name, fn) => { tasks[name] = fn; execNext(); }, }; return scope; } exports.sparky = sparky;