glass-app-manager
Version:
Informatica's Glass Framework CLI for bootstrapping
62 lines (52 loc) • 1.67 kB
JavaScript
;
const path = require("path");
const fs = require("fs");
const inquirer = require("inquirer");
const validateNpmName = require("validate-npm-package-name");
const config = require("./config");
module.exports = async (opts) => {
if (opts.name && !validateNpmName(opts.name).validForNewPackages) {
throw new Error(`invalid package name "${opts.name}"`);
}
if (opts.skipPrompts) {
if (!opts.name) {
throw new Error(
"invalid input; you must pass a package name with --skip-prompts"
);
}
Object.keys(opts).forEach(key => {
const value = opts[key];
if (typeof value === "function") {
opts[key] = value(opts);
}
});
return opts;
} else {
const info = await inquirer.prompt([
{
type: 'input',
name: 'name',
message: 'Package Name',
validate: (name) => {
return name && validateNpmName(name).validForNewPackages
},
default: opts.name
},
{
type: 'input',
name: 'description',
message: 'Package Description',
default: opts.description
}
]);
info.templatePath = "../../target";
info.samplePath = "../../sample";
info.template = opts.template;
info.manager = opts.manager;
config.set("manager", info.manager);
config.set("template", info.template);
return {
...info
};
}
};