UNPKG

1.04 kBPlain TextView Raw
1import path from 'path'
2import yargs from 'yargs-parser'
3import { RunnerConfig, ParamsResult } from './types'
4import prompt from './prompt'
5
6const params = async (
7 { templates, createPrompter }: RunnerConfig,
8 externalArgv: string[],
9): Promise<ParamsResult> => {
10 const argv = yargs(externalArgv)
11
12 const [generator, action, name] = argv._
13 if (!generator || !action) {
14 return { generator, action, templates }
15 }
16 const [mainAction, subaction] = action.split(':')
17
18 const actionfolder = path.join(templates, generator, mainAction)
19
20 const { _, ...cleanArgv } = argv
21 const promptArgs = await prompt(createPrompter, actionfolder, {
22 // NOTE we might also want the rest of the generator/action/etc. params here
23 // but theres no usecase yet
24 ...(name ? { name } : {}),
25 ...cleanArgv,
26 })
27
28 const args = Object.assign(
29 {
30 templates,
31 actionfolder,
32 generator,
33 action,
34 subaction,
35 },
36 promptArgs,
37 cleanArgv,
38 name && { name },
39 )
40
41 return args
42}
43
44export default params