Skip to content

Commit 8b889ab

Browse files
authored
Use 'commander' instead of 'minimist' -- it's just too bare bones (jerryscript-project#10)
JerryScript-DCO-1.0-Signed-off-by: Martjin The martijn.the@intel.com
1 parent f47c08f commit 8b889ab

File tree

4 files changed

+72
-43
lines changed

4 files changed

+72
-43
lines changed

jerry-debugger/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,13 @@
2020
"private": false,
2121
"dependencies": {
2222
"chrome-remote-debug-protocol": "^1.2.20170721",
23-
"minimist": "^1.2.0",
23+
"commander": "^2.15.0",
2424
"noice-json-rpc": "^1.1.1",
2525
"uuid": "^3.2.1",
2626
"ws": "^3.3.2"
2727
},
2828
"devDependencies": {
29+
"@types/commander": "^2.12.2",
2930
"@types/jest": "^22.1.2",
3031
"@types/minimist": "^1.2.0",
3132
"@types/node": "^9.4.6",

jerry-debugger/src/cli/__tests__/index.test.ts

Lines changed: 29 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,79 +13,91 @@
1313
// limitations under the License.
1414

1515
import { getOptionsFromArgs } from '../cli';
16+
import {
17+
DEFAULT_DEBUGGER_HOST,
18+
DEFAULT_DEBUGGER_PORT,
19+
} from '../../lib/debugger-client';
20+
import {
21+
DEFAULT_SERVER_HOST,
22+
DEFAULT_SERVER_PORT,
23+
} from '../../lib/cdt-proxy';
1624

1725
describe('getOptionsFromArgs', () => {
1826

27+
function getOptionsFromUserArgs(userArgs: string[]) {
28+
return getOptionsFromArgs(['node', 'jerry-debugger.js'].concat(userArgs));
29+
}
30+
1931
it('works without --inspect-brk', () => {
20-
const opt = getOptionsFromArgs([]);
21-
expect(opt.proxyAddress.host).toEqual(undefined);
22-
expect(opt.proxyAddress.port).toEqual(undefined);
32+
const opt = getOptionsFromUserArgs([]);
33+
expect(opt.proxyAddress.host).toEqual(DEFAULT_SERVER_HOST);
34+
expect(opt.proxyAddress.port).toEqual(DEFAULT_SERVER_PORT);
2335
});
2436

2537
it('parses --inspect-brk with port only', () => {
26-
const opt = getOptionsFromArgs(['--inspect-brk=1234']);
38+
const opt = getOptionsFromUserArgs(['--inspect-brk=1234']);
2739
expect(opt.proxyAddress.host).toEqual(undefined);
2840
expect(opt.proxyAddress.port).toEqual(1234);
2941
});
3042

3143
it('parses --inspect-brk with no port', () => {
32-
const opt = getOptionsFromArgs(['--inspect-brk=10.10.10.10:']);
44+
const opt = getOptionsFromUserArgs(['--inspect-brk=10.10.10.10:']);
3345
expect(opt.proxyAddress.host).toEqual('10.10.10.10');
3446
expect(opt.proxyAddress.port).toEqual(undefined);
3547
});
3648

3749
it('parses --inspect-brk with no host', () => {
38-
const opt = getOptionsFromArgs(['--inspect-brk=:1234']);
50+
const opt = getOptionsFromUserArgs(['--inspect-brk=:1234']);
3951
expect(opt.proxyAddress.host).toEqual(undefined);
4052
expect(opt.proxyAddress.port).toEqual(1234);
4153
});
4254

4355
it('parses --inspect-brk with host and port', () => {
44-
const opt = getOptionsFromArgs(['--inspect-brk=10.10.10.10:1234']);
56+
const opt = getOptionsFromUserArgs(['--inspect-brk=10.10.10.10:1234']);
4557
expect(opt.proxyAddress.host).toEqual('10.10.10.10');
4658
expect(opt.proxyAddress.port).toEqual(1234);
4759
});
4860

4961
it('works without --jerry-remote', () => {
50-
const opt = getOptionsFromArgs([]);
51-
expect(opt.remoteAddress.host).toEqual(undefined);
52-
expect(opt.remoteAddress.port).toEqual(undefined);
62+
const opt = getOptionsFromUserArgs([]);
63+
expect(opt.remoteAddress.host).toEqual(DEFAULT_DEBUGGER_HOST);
64+
expect(opt.remoteAddress.port).toEqual(DEFAULT_DEBUGGER_PORT);
5365
});
5466

5567
it('parses --jerry-remote with port only', () => {
56-
const opt = getOptionsFromArgs(['--jerry-remote=1234']);
68+
const opt = getOptionsFromUserArgs(['--jerry-remote=1234']);
5769
expect(opt.remoteAddress.host).toEqual(undefined);
5870
expect(opt.remoteAddress.port).toEqual(1234);
5971
});
6072

6173
it('parses --jerry-remote with host and port', () => {
62-
const opt = getOptionsFromArgs(['--jerry-remote=10.10.10.10:1234']);
74+
const opt = getOptionsFromUserArgs(['--jerry-remote=10.10.10.10:1234']);
6375
expect(opt.remoteAddress.host).toEqual('10.10.10.10');
6476
expect(opt.remoteAddress.port).toEqual(1234);
6577
});
6678

6779
it('verbose defaults to false', () => {
68-
const opt = getOptionsFromArgs([]);
80+
const opt = getOptionsFromUserArgs([]);
6981
expect(opt.verbose).toEqual(false);
7082
});
7183

7284
it('parses verbose flag', () => {
73-
const opt = getOptionsFromArgs(['--verbose']);
85+
const opt = getOptionsFromUserArgs(['--verbose']);
7486
expect(opt.verbose).toEqual(true);
7587
});
7688

7789
it('parses v alias for verbose', () => {
78-
const opt = getOptionsFromArgs(['-v']);
90+
const opt = getOptionsFromUserArgs(['-v']);
7991
expect(opt.verbose).toEqual(true);
8092
});
8193

8294
it('jsfile defaults to untitled.js', () => {
83-
const opt = getOptionsFromArgs([]);
95+
const opt = getOptionsFromUserArgs([]);
8496
expect(opt.jsfile).toEqual('untitled.js');
8597
});
8698

8799
it('returns client source as jsfile', () => {
88-
const opt = getOptionsFromArgs(['foo/bar.js']);
100+
const opt = getOptionsFromUserArgs(['foo/bar.js']);
89101
expect(opt.jsfile).toEqual('foo/bar.js');
90102
});
91103

jerry-debugger/src/cli/cli.ts

Lines changed: 31 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,17 @@
1313
// limitations under the License.
1414

1515
import { CDTController } from '../lib/cdt-controller';
16-
import { ChromeDevToolsProxyServer } from '../lib/cdt-proxy';
17-
import { JerryDebuggerClient } from '../lib/debugger-client';
18-
import parseArgs from 'minimist';
16+
import {
17+
ChromeDevToolsProxyServer,
18+
DEFAULT_SERVER_HOST,
19+
DEFAULT_SERVER_PORT,
20+
} from '../lib/cdt-proxy';
21+
import {
22+
JerryDebuggerClient,
23+
DEFAULT_DEBUGGER_HOST,
24+
DEFAULT_DEBUGGER_PORT,
25+
} from '../lib/debugger-client';
26+
import { Command } from 'commander';
1927
import { JerryDebugProtocolHandler } from '../lib/protocol-handler';
2028

2129
/**
@@ -34,34 +42,32 @@ function getHostAndPort(input: string) {
3442
}
3543

3644
export function getOptionsFromArgs(argv: Array<string>) {
37-
const args = parseArgs(argv, {
38-
default: {
39-
'verbose': false,
40-
'inspect-brk': '',
41-
'jerry-remote': '',
42-
},
43-
alias: {
44-
'verbose': 'v',
45-
},
46-
boolean: [
47-
'verbose',
48-
],
49-
string: [
50-
'inspect-brk',
51-
'jerry-remote',
52-
],
53-
});
45+
const program = new Command('jerry-debugger');
46+
program
47+
.usage('[options] <script.js ...>')
48+
.option(
49+
'-v, --verbose',
50+
'Enable verbose logging', false)
51+
.option(
52+
'--inspect-brk [[host:]port]',
53+
'Activate Chrome DevTools proxy on host:port',
54+
`${DEFAULT_SERVER_HOST}:${DEFAULT_SERVER_PORT}`)
55+
.option(
56+
'--jerry-remote [[host:]port]',
57+
'Connect to JerryScript on host:port',
58+
`${DEFAULT_DEBUGGER_HOST}:${DEFAULT_DEBUGGER_PORT}`)
59+
.parse(argv);
5460

5561
return {
56-
proxyAddress: getHostAndPort(args['inspect-brk']),
57-
remoteAddress: getHostAndPort(args['jerry-remote']),
58-
jsfile: args._[0] || 'untitled.js',
59-
verbose: args['verbose'],
62+
proxyAddress: getHostAndPort(program.inspectBrk),
63+
remoteAddress: getHostAndPort(program.jerryRemote),
64+
jsfile: program.args[0] || 'untitled.js',
65+
verbose: program.verbose || false,
6066
};
6167
}
6268

6369
export function main(proc: NodeJS.Process) {
64-
const options = getOptionsFromArgs(proc.argv.slice(2));
70+
const options = getOptionsFromArgs(proc.argv);
6571

6672
const controller = new CDTController();
6773
const jhandler = new JerryDebugProtocolHandler(controller);

jerry-debugger/yarn.lock

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,12 @@
1616
esutils "^2.0.2"
1717
js-tokens "^3.0.0"
1818

19+
"@types/commander@^2.12.2":
20+
version "2.12.2"
21+
resolved "https://registry.yarnpkg.com/@types/commander/-/commander-2.12.2.tgz#183041a23842d4281478fa5d23c5ca78e6fd08ae"
22+
dependencies:
23+
commander "*"
24+
1925
"@types/events@*":
2026
version "1.1.0"
2127
resolved "https://registry.yarnpkg.com/@types/events/-/events-1.1.0.tgz#93b1be91f63c184450385272c47b6496fd028e02"
@@ -564,6 +570,10 @@ combined-stream@1.0.6, combined-stream@^1.0.5, combined-stream@~1.0.5:
564570
dependencies:
565571
delayed-stream "~1.0.0"
566572

573+
commander@*, commander@^2.15.0:
574+
version "2.15.0"
575+
resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.0.tgz#ad2a23a1c3b036e392469b8012cec6b33b4c1322"
576+
567577
commander@^2.12.1:
568578
version "2.14.1"
569579
resolved "https://registry.yarnpkg.com/commander/-/commander-2.14.1.tgz#2235123e37af8ca3c65df45b026dbd357b01b9aa"

0 commit comments

Comments
 (0)