1 | #!/usr/bin/env node
|
2 | const cac = require('cac').default
|
3 | const SAOError = require('../lib/SAOError')
|
4 |
|
5 | const cli = cac()
|
6 |
|
7 | cli
|
8 | .command(
|
9 | '*',
|
10 | {
|
11 | desc: 'Run a generator',
|
12 | alias: 'run'
|
13 | },
|
14 | (input, flags) => {
|
15 | const options = Object.assign(
|
16 | {
|
17 | generator: input[0],
|
18 | outDir: input[1] || '.',
|
19 | updateCheck: true
|
20 | },
|
21 | flags
|
22 | )
|
23 |
|
24 | if (!options.generator) {
|
25 | return cli.showHelp()
|
26 | }
|
27 |
|
28 | return require('../')(options).run()
|
29 | }
|
30 | )
|
31 | .option('npm-client', {
|
32 | desc: `Use a specific npm client ('yarn' or 'npm')`,
|
33 | type: 'string'
|
34 | })
|
35 | .option('update', {
|
36 | desc: 'Update cached generator',
|
37 | type: 'boolean',
|
38 | alias: 'u'
|
39 | })
|
40 | .option('clone', {
|
41 | desc: 'Clone repository instead of archive download',
|
42 | type: 'boolean',
|
43 | alias: 'c'
|
44 | })
|
45 | .option('yes', {
|
46 | desc: 'Use the default options',
|
47 | alias: 'y'
|
48 | })
|
49 | .option('registry', {
|
50 | desc: 'Use a custom registry for npm and yarn',
|
51 | type: 'string'
|
52 | })
|
53 |
|
54 | cli.command('set-alias', 'Set an alias for a generator path', input => {
|
55 | const store = require('../lib/store')
|
56 | const { escapeDots } = require('../lib/utils/common')
|
57 | const logger = require('../lib/logger')
|
58 |
|
59 | const name = input[0]
|
60 | const value = input[1]
|
61 | if (!name || !value) {
|
62 | throw new SAOError(`Invalid arguments: sao set-alias <alias> <generator>`)
|
63 | }
|
64 |
|
65 | store.set(`alias.${escapeDots(name)}`, value)
|
66 | logger.success(`Added alias '${name}'`)
|
67 | })
|
68 |
|
69 | cli.command('get-alias', 'Get the generator for an alias', input => {
|
70 | const store = require('../lib/store')
|
71 | const { escapeDots } = require('../lib/utils/common')
|
72 |
|
73 | console.log(store.get(`alias.${escapeDots(input[0])}`))
|
74 | })
|
75 |
|
76 | cli.on('error', error => {
|
77 | return require('..').handleError(error)
|
78 | })
|
79 |
|
80 | cli.parse()
|