@launchql/cli
Version:
LaunchQL CLI
54 lines (53 loc) • 1.85 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = runModuleSetup;
const core_1 = require("@launchql/core");
const logger_1 = require("@launchql/logger");
const types_1 = require("@launchql/types");
const log = new logger_1.Logger('module-init');
async function runModuleSetup(argv, prompter) {
const { email, username } = (0, types_1.getGitConfigInfo)();
const { cwd = process.cwd() } = argv;
const project = new core_1.LaunchQLPackage(cwd);
if (!project.workspacePath) {
log.error('Not inside a LaunchQL workspace.');
throw types_1.errors.NOT_IN_WORKSPACE({});
}
if (!project.isInsideAllowedDirs(cwd) && !project.isInWorkspace()) {
log.error('You must be inside one of the workspace packages.');
throw types_1.errors.NOT_IN_WORKSPACE_MODULE({});
}
const availExtensions = project.getAvailableModules();
const moduleQuestions = [
{
name: 'MODULENAME',
message: 'Enter the module name',
required: true,
type: 'text',
},
{
name: 'extensions',
message: 'Which extensions?',
options: availExtensions,
type: 'checkbox',
allowCustomOptions: true,
required: true,
},
];
const answers = await prompter.prompt(argv, moduleQuestions);
const modName = (0, core_1.sluggify)(answers.MODULENAME);
const extensions = answers.extensions
.filter((opt) => opt.selected)
.map((opt) => opt.name);
project.initModule({
...argv,
...answers,
name: modName,
// @ts-ignore
USERFULLNAME: username,
USEREMAIL: email,
extensions
});
log.success(`Initialized module: ${modName}`);
return { ...argv, ...answers };
}
;