rapid
Version:
A simple tool for rapidly creating components
30 lines (27 loc) • 1.02 kB
JavaScript
// tooling
const fs = require('./lib/fs');
const log = require('./lib/log');
// messaging
const msgCreating = 'is being created...';
const msgCreated = 'has been created.';
const msgFailure = 'had an issue creating.';
// create project
module.exports = (config = require('./lib/config')) => Promise.resolve(
Object.keys(config.defaults).filter(
(opt) => config[opt]
).reduce(
(resolve, opt) => resolve.then(
// report initialization and create files and directory
() => log.wait(`${ opt } ${ fs.basename(config[opt].from || `index.${ opt.replace('jsx', 'html') }`) } ${ msgCreating }`) && (
opt === 'placeholders' ? fs.mkdir(config[opt].from) : fs.touchFile(
config[opt].from
)
)
).then(
// report completion or errors
() => log.pass(config.name, `${ fs.basename(config[opt].from || `index.${ opt }`) } ${ msgCreated }`),
(error) => log.fail(config.name, `${ fs.basename(config[opt].from || `index.${ opt }`) } ${ msgFailure }`, error)
),
Promise.resolve()
)
);