sao
Version:
Futuristic scaffolding tool ⚔
60 lines (50 loc) • 1.61 kB
JavaScript
const cac = require('cac')
const pkg = require('../package')
const cli = cac('sao')
cli
.command('<generator> [outDir]', 'Run a generator')
.action((generator, outDir, flags) => {
const options = Object.assign(
{
generator,
outDir: outDir || '.',
updateCheck: true
},
flags
)
return require('../')(options)
.run()
.catch(err => {
require('..').handleError(err)
})
})
.option(
'--npm-client <client>',
`Use a specific npm client ('yarn' | 'npm' | 'pnpm')`
)
.option('-u, --update', 'Update cached generator')
.option('-c, --clone', 'Clone repository instead of archive download')
.option('-y, --yes', 'Use the default options')
.option('--registry <registry>', 'Use a custom registry for package manager')
.option('--answers <json>', 'Skip prompts and use provided answers directly')
.option('--debug', 'Show debug logs')
cli
.command('set-alias <name> <value>', 'Set an alias for a generator path')
.action((name, value) => {
const store = require('../lib/store')
const { escapeDots } = require('../lib/utils/common')
const logger = require('../lib/logger')
store.set(`alias.${escapeDots(name)}`, value)
logger.success(`Added alias '${name}'`)
})
cli
.command('get-alias <name>', 'Get the generator for an alias')
.action(name => {
const store = require('../lib/store')
const { escapeDots } = require('../lib/utils/common')
console.log(store.get(`alias.${escapeDots(name)}`))
})
cli.version(pkg.version)
cli.help()
cli.parse()