forked from redwoodjs/redwood
/
helpers.js
44 lines (41 loc) · 1.11 KB
/
helpers.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import { Listr } from 'listr2'
import { deleteFilesTask } from '../../lib'
import c from '../../lib/colors'
const tasks = ({ componentName, filesFn, name }) =>
new Listr(
[
{
title: `Destroying ${componentName} files...`,
task: async () => {
const f = await filesFn({ name, stories: true, tests: true })
return deleteFilesTask(f)
},
},
],
{ rendererOptions: { collapse: false }, exitOnError: true }
)
export const createYargsForComponentDestroy = ({
componentName,
preTasksFn = (options) => options,
filesFn,
}) => {
return {
command: `${componentName} <name>`,
description: `Destroy a ${componentName} component`,
builder: (yargs) => {
yargs.positional('name', {
description: `Name of the ${componentName}`,
type: 'string',
})
},
handler: async (options) => {
try {
options = await preTasksFn({ ...options, isDestroyer: true })
await tasks({ componentName, filesFn, name: options.name }).run()
} catch (e) {
console.log(c.error(e.message))
}
},
tasks,
}
}