UNPKG

1.81 kBJavaScriptView Raw
1#!/usr/bin/env node
2const cac = require('cac').default
3const SAOError = require('../lib/SAOError')
4
5const cli = cac()
6
7cli
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
54cli.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
69cli.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
76cli.on('error', error => {
77 return require('..').handleError(error)
78})
79
80cli.parse()