UNPKG

1.73 kBJavaScriptView Raw
1'use strict';
2
3const pluralize = require('pluralize');
4const changeCase = require('change-case');
5
6const MULTIPLE_REPLACE_CHOICES = [
7 {
8 message: 'Do not replace',
9 name: 'skip',
10 }, {
11 message: 'Replace it',
12 name: 'replace',
13 }, {
14 message: 'Replace this and all others',
15 name: 'replaceAll',
16 }, {
17 message: 'Skip this and all others',
18 name: 'skipAll',
19 }, {
20 message: 'Abort',
21 name: 'abort',
22 },
23];
24
25const SINGLE_REPLACE_CHOICES = [
26 {
27 message: 'Do not replace',
28 name: 'skip',
29 }, {
30 message: 'Replace it',
31 name: 'replace',
32 }, {
33 message: 'Abort',
34 name: 'abort',
35 },
36];
37
38const SINGLE_DELETE_CHOICES = [
39 {
40 message: 'Do not delete',
41 name: 'skip',
42 }, {
43 message: 'Delete it',
44 name: 'delete',
45 }, {
46 message: 'Abort',
47 name: 'abort',
48 },
49];
50
51const HELPERS = {
52 singularize: () => (text, render) => pluralize.singular(render(`{{{${text}}}}`)),
53 pluralize: () => (text, render) => pluralize.plural(render(`{{{${text}}}}`)),
54 tableName: () => (...x) => changeCase.snakeCase(HELPERS.pluralize()(...x)),
55};
56
57// apply common helpers
58Object.keys(changeCase).forEach(k => {
59 /* istanbul ignore else */
60 if (k.indexOf('is') !== 0) {
61 HELPERS[k] = () => (text, render) => changeCase[k](render(`{{{${text}}}}`));
62 }
63});
64
65const SHORTHANDS = {
66 from: 'src',
67 add: 'dest',
68 copy: 'dest',
69 clean: 'dest',
70 render: 'dest',
71 modify: 'dest',
72 exec: 'command',
73 clone: 'gitUrl',
74 extend: 'dest',
75 install: 'dependencies',
76};
77
78const DEPS = ['dependencies', 'devDependencies', 'optionalDependencies'];
79
80module.exports = {
81 MULTIPLE_REPLACE_CHOICES,
82 SINGLE_REPLACE_CHOICES,
83 SINGLE_DELETE_CHOICES,
84 HELPERS,
85 SHORTHANDS,
86 DEPS,
87};