UNPKG

1.81 kBJavaScriptView Raw
1'use strict';
2
3const pkg = require('../package');
4
5const args = process.argv.slice(2);
6let arg_0 = args[0];
7
8if (arg_0 && [ '-v', '--version' ].includes(arg_0.toLowerCase())) {
9 console.log(pkg.version);
10 process.exit(0);
11}
12
13const 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
22const main = require('..');
23
24const port = parseInt(arg_0, 10);
25const isVerbose = args.includes('--verbose');
26
27removeByValue(args, '--verbose');
28arg_0 = args[0];
29
30if (!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}