Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
async runGenerator(context: ScaffoldContext, moduleRoot: Path) {
const { tool } = this;
const args = [context.generator, context.action];
try {
return await engine(context.argv, {
// @ts-ignore Broken upstream
createPrompter: /* istanbul ignore next */ () => ({ prompt: this.handlePrompt }),
cwd: tool.options.root,
debug: tool.config.debug,
exec: this.handleExec,
logger: new Logger(this.handleLog),
templates: moduleRoot.append('templates').path(),
});
} catch (error) {
// Intercept hygen error to provide a better error message
if (error.message.startsWith("I can't find action")) {
throw new Error(this.tool.msg('errors:scaffoldNoTemplates', { path: args.join('/') }));
}
throw error;
}
return Kefir.stream(emitter => {
runner(argv, {
// NOTE: This is relative to dist, where the build result is.
templates: path.join(__dirname, '..', 'templates'),
cwd: state.cwd,
logger: new Logger(emitter),
createPrompter: () => inquirer,
exec: (action, body) => {
const opts = body && body.length > 0 ? { input: body } : {};
return execa(action, { ...opts, shell: true });
},
debug: false
})
.then(result => {
emitter.value({ type: 'CREATED', payload: { result } });
})
.catch(error => {
emitter.value({ type: 'FAILED', error: true, payload: { error } });
async runGenerator(context: ScaffoldContext, moduleRoot: Path) {
const { tool } = this;
const args = [context.generator, context.action];
try {
return await engine(context.argv, {
// @ts-ignore Broken upstream
createPrompter: /* istanbul ignore next */ () => ({ prompt: this.handlePrompt }),
cwd: tool.options.root,
debug: tool.config.debug,
exec: this.handleExec,
logger: new Logger(this.handleLog),
templates: moduleRoot.append('templates').path(),
});
} catch (error) {
// Intercept hygen error to provide a better error message
if (error.message.startsWith("I can't find action")) {
throw new Error(this.tool.msg('errors:scaffoldNoTemplates', { path: args.join('/') }));
}
throw error;
}
}