st-bundle
Version:
CLI for watching and bundling SpringType projects.
55 lines (54 loc) • 1.93 kB
JavaScript
;
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;