1 | #!/usr/bin/env node
|
2 |
|
3 |
|
4 | const path = require('path')
|
5 |
|
6 |
|
7 | const asyncToGen = require('async-to-gen/register')
|
8 | const updateNotifier = require('update-notifier')
|
9 | const nodeVersion = require('node-version')
|
10 | const args = require('args')
|
11 | const isAsyncSupported = require('is-async-supported')
|
12 |
|
13 |
|
14 | const pkg = require('../package')
|
15 |
|
16 |
|
17 | if (nodeVersion.major < 6) {
|
18 | console.error(`Error! Micro requires at least version 6 of Node. Please upgrade!`)
|
19 | process.exit(1)
|
20 | }
|
21 |
|
22 |
|
23 |
|
24 | if (!process.env.NOW && pkg.dist) {
|
25 | updateNotifier({pkg}).notify()
|
26 | }
|
27 |
|
28 | args
|
29 | .option('port', 'Port to listen on', process.env.PORT || 3000)
|
30 | .option(['H', 'host'], 'Host to listen on', '0.0.0.0')
|
31 |
|
32 | const flags = args.parse(process.argv)
|
33 | let file = args.sub[0]
|
34 |
|
35 | if (!file) {
|
36 | try {
|
37 |
|
38 | const packageJson = require(path.resolve(process.cwd(), 'package.json'))
|
39 | file = packageJson.main || 'index.js'
|
40 | } catch (err) {
|
41 | if (err.code !== 'MODULE_NOT_FOUND') {
|
42 | console.error(`micro: Could not read \`package.json\`: ${err.message}`)
|
43 | process.exit(1)
|
44 | }
|
45 | }
|
46 | }
|
47 |
|
48 | if (!file) {
|
49 | console.error('micro: Please supply a file.')
|
50 | args.showHelp()
|
51 | }
|
52 |
|
53 | if (file[0] !== '/') {
|
54 | file = path.resolve(process.cwd(), file)
|
55 | }
|
56 |
|
57 | if (!isAsyncSupported()) {
|
58 |
|
59 | const pathSep = process.platform === 'win32' ? '\\\\' : '/'
|
60 | const directoryName = path.parse(path.join(__dirname, '..')).base
|
61 |
|
62 | asyncToGen({
|
63 | includes: new RegExp(`.*${directoryName}?${pathSep}(lib|bin)|${file}.*`),
|
64 | excludes: null,
|
65 | sourceMaps: false
|
66 | })
|
67 | }
|
68 |
|
69 |
|
70 |
|
71 | require('../lib')(file, flags)
|