1 | 'use strict';
|
2 |
|
3 | const pkg = require('../package');
|
4 |
|
5 | const args = process.argv.slice(2);
|
6 | let arg_0 = args[0];
|
7 |
|
8 | if (arg_0 && [ '-v', '--version' ].includes(arg_0.toLowerCase())) {
|
9 | console.log(pkg.version);
|
10 | process.exit(0);
|
11 | }
|
12 |
|
13 | const removeByValue = (arr, val) => {
|
14 | for (let i = 0; i < arr.length; i++) {
|
15 | if (arr[i] === val) {
|
16 | arr.splice(i, 1);
|
17 | break;
|
18 | }
|
19 | }
|
20 | };
|
21 |
|
22 | const main = require('..');
|
23 |
|
24 | const port = parseInt(arg_0, 10);
|
25 | const isVerbose = args.includes('--verbose');
|
26 |
|
27 | removeByValue(args, '--verbose');
|
28 | arg_0 = args[0];
|
29 |
|
30 | if (!arg_0) {
|
31 | const random = Math.floor(9000 + Math.random() * (65535 - 9000));
|
32 |
|
33 | main(random, (err, port) => {
|
34 | if (isVerbose) {
|
35 | if (err) {
|
36 | console.log(`get available port failed with ${err}`);
|
37 | }
|
38 | console.log(`get available port ${port} randomly`);
|
39 | } else {
|
40 | console.log(port || random);
|
41 | }
|
42 | });
|
43 | } else if (isNaN(port)) {
|
44 | console.log();
|
45 | console.log(` \u001b[37m${pkg.description}\u001b[0m`);
|
46 | console.log();
|
47 | console.log(' Usage:');
|
48 | console.log();
|
49 | console.log(` ${pkg.name} [port]`);
|
50 | console.log();
|
51 | console.log(' Options:');
|
52 | console.log();
|
53 | console.log(' -v, --version output version and exit');
|
54 | console.log(' -h, --help output usage information');
|
55 | console.log(' --verbose output verbose log');
|
56 | console.log();
|
57 | console.log(' Further help:');
|
58 | console.log();
|
59 | console.log(` ${pkg.homepage}`);
|
60 | console.log();
|
61 | } else {
|
62 | main(port, (err, _port) => {
|
63 | if (isVerbose) {
|
64 | if (err) {
|
65 | console.log(`get available port failed with ${err}`);
|
66 | }
|
67 |
|
68 | if (port !== _port) {
|
69 | console.log(`port ${port} was occupied`);
|
70 | }
|
71 |
|
72 | console.log(`get available port ${_port}`);
|
73 | } else {
|
74 | console.log(_port || port);
|
75 | }
|
76 | });
|
77 | }
|