1 | #!/usr/bin/env node
|
2 | const path = require('path')
|
3 | const spawn = require('cross-spawn')
|
4 | const pkg = require('../package.json')
|
5 |
|
6 | const defaultCommand = 'dev'
|
7 | const commands = new Set([
|
8 | 'init',
|
9 | 'build',
|
10 | 'start',
|
11 | defaultCommand
|
12 | ])
|
13 |
|
14 | let cmd = process.argv[2]
|
15 | let args
|
16 |
|
17 | if (new Set(['--version', '-v']).has(cmd)) {
|
18 | console.log('backpack v' + pkg.version)
|
19 | process.exit(0)
|
20 | }
|
21 |
|
22 | if (new Set(['--help', '-h']).has(cmd)) {
|
23 | console.log(`
|
24 | Usage
|
25 | $ backpack <command>
|
26 | Available commands
|
27 | ${Array.from(commands).join(', ')}
|
28 | For more information run a command with the --help flag
|
29 | $ next init --help
|
30 | `)
|
31 | process.exit(0)
|
32 | }
|
33 |
|
34 | if (commands.has(cmd)) {
|
35 | args = process.argv.slice(3)
|
36 | } else {
|
37 | cmd = defaultCommand
|
38 | args = process.argv.slice(2)
|
39 | }
|
40 |
|
41 | const bin = path.resolve(path.join(__dirname, cmd))
|
42 |
|
43 | const startProcess = () => {
|
44 | const proc = spawn(bin, args, { stdio: 'inherit'})
|
45 | proc.on('close', (code) => process.exit(code))
|
46 | proc.on('error', (err) => {
|
47 | console.error(err)
|
48 | process.exit(1)
|
49 | })
|
50 | return proc
|
51 | }
|
52 |
|
53 | const proc = startProcess()
|