pruno-cli
Version:
A CLI tool for scaffolding projects that use the pruno build tool and a generator for creating components.
57 lines (47 loc) • 1.78 kB
JavaScript
;
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
var YAML = _interopRequire(require("js-yaml"));
var assign = _interopRequire(require("object-assign"));
var _fs = require("fs");
var readFileSync = _fs.readFileSync;
var writeFileSync = _fs.writeFileSync;
var join = require("path").join;
var pwd = require("shelljs").pwd;
var log = require("../logger").log;
var saveDev = require("../utils/install").saveDev;
var Generator = _interopRequire(require("../generator"));
module.exports = function (mixes) {
var options = arguments[1] === undefined ? {} : arguments[1];
var packages = mixes.map(function (mix) {
return "pruno-" + mix;
});
var _require = require(join(pwd(), ".prunorc"));
var config = _require.config;
var src = _require.src;
var dist = _require.dist;
var yamlPath = join(pwd(), config, "pruno.yaml");
var gulpfilePath = join(pwd(), "gulpfile.js");
var yamlFile = readFileSync(yamlPath);
var opts = YAML.safeLoad(yamlFile);
var params = assign({}, options, { config: config, src: src, dist: dist });
saveDev(packages).then(function (data) {
packages.forEach(function (pkg) {
var pkgPath = join(pwd(), "node_modules", pkg);
var json = join(pkgPath, "package.json");
var _require2 = require(json);
var main = _require2.main;
var Task = require(join(pkgPath, main));
var defaults = Task.getDefaults();
var mix = pkg.match(/pruno\-(.+)$/)[1];
opts[mix] = defaults;
if (options[mix]) {
assign(opts[mix], options[mix]);
}
});
var yaml = YAML.safeDump(opts);
writeFileSync(yamlPath, yaml);
Generator.gulpfile(params);
})["catch"](function (err) {
return console.error(err);
});
};