@captive/plop-config
Version:
41 lines (40 loc) • 1.48 kB
JavaScript
import slugify from '@sindresorhus/slugify';
import * as Variables from './template/variables.js';
import * as Index from './template/document.md.template.js';
import { composeValidators, requireNotEmpty, requireURL } from '../../validator/index.js';
import { extractIssueId } from './extractIssueId.js';
export const techDiveInGenerator = (options) => ({
name: 'tech-dive-in',
generator: {
prompts: [
{
name: Variables.issueURL,
type: 'input',
message: 'Issue URL :',
validate: composeValidators(requireURL()),
},
{
name: Variables.title,
type: 'input',
message: 'Title :',
validate: composeValidators(requireNotEmpty()),
},
],
actions: (answers) => {
const issueURL = answers?.[Variables.issueURL];
const issueId = issueURL == null ? undefined : extractIssueId(issueURL);
const title = (answers?.[Variables.title] ?? '');
const data = {
[Variables.issueId]: issueId,
};
return [
{
path: `${options.techDiveInPath}/${issueId == null ? '' : `${issueId}-`}${slugify(title)}/README.md`,
template: Index.template,
type: 'add',
data,
},
];
},
},
});