1 | #!/usr/bin/env node
|
2 | let chalk = require('chalk')
|
3 | let create = require('@architect/create/cli')
|
4 | let deploy = require('@architect/deploy/cli')
|
5 | let env = require('@architect/env')
|
6 | let hydrate = require('@architect/hydrate/cli')
|
7 | let logs = require('@architect/logs/cli')
|
8 | let pkg = require('@architect/package/cli')
|
9 | let repl = require('@architect/repl')
|
10 | let sandbox = require('@architect/sandbox/src/cli/arc')
|
11 |
|
12 | let before = require('./before')
|
13 | let help = require('./help')
|
14 | let version = require('./version')
|
15 |
|
16 | let update = require('update-notifier')
|
17 | let _pkg = require('../package.json')
|
18 |
|
19 | let cmds = {
|
20 | create,
|
21 | init: create,
|
22 | deploy,
|
23 | env,
|
24 | help,
|
25 | hydrate,
|
26 | logs,
|
27 | package: pkg,
|
28 | repl,
|
29 | sandbox,
|
30 | version
|
31 | }
|
32 |
|
33 | let red = chalk.bgRed.bold.white
|
34 | let yel = chalk.yellow
|
35 | let dim = chalk.grey
|
36 |
|
37 | let pretty = {
|
38 | fail(cmd, err) {
|
39 | console.log(red(`${cmd} failed!`), err && err.message? yel(err.message) : '')
|
40 | if (err && err.message)
|
41 | console.log(dim(err.stack))
|
42 | },
|
43 | notFound(cmd) {
|
44 | console.log(dim(`Sorry, ${chalk.green.bold('arc ' +cmd)} command not found!`))
|
45 | }
|
46 | }
|
47 |
|
48 | async function run ({cmd, opts}) {
|
49 | try {
|
50 | await cmds[cmd](opts)
|
51 | }
|
52 | catch(err) {
|
53 | pretty.fail(cmd, err)
|
54 | process.exit(1)
|
55 | }
|
56 | }
|
57 |
|
58 | async function main (args) {
|
59 |
|
60 | args = args || process.argv.slice(2)
|
61 |
|
62 |
|
63 | let boxenOpts = {padding: 1, margin: 1, align: 'center', borderColor: 'green', borderStyle: 'round', dimBorder: true}
|
64 | update({pkg: _pkg, shouldNotifyInNpmScript: true}).notify({boxenOpts})
|
65 |
|
66 | let cmd = args.shift()
|
67 | let opts = args.slice(0)
|
68 |
|
69 | if (cmd && !cmds[cmd]) {
|
70 | pretty.notFound(cmd)
|
71 | process.exit(1)
|
72 | }
|
73 | else if (!cmd || cmd === 'help') {
|
74 | help(opts)
|
75 | }
|
76 | else if (cmd === 'create' || cmd === 'init' || cmd === 'version') {
|
77 | run({cmd, opts})
|
78 | }
|
79 | else {
|
80 |
|
81 | try {
|
82 | before()
|
83 | }
|
84 | catch(err) {
|
85 | pretty.fail(cmd, err)
|
86 | process.exit(1)
|
87 | }
|
88 | run({cmd, opts})
|
89 | }
|
90 | }
|
91 |
|
92 | module.exports = main
|
93 |
|
94 |
|
95 | if (require.main === module) {
|
96 | (async function () {
|
97 | await main()
|
98 | })()
|
99 | }
|