From aaf7e1338d6cdb1b4e01ad318938b3eaea2f922b Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Sat, 30 Nov 2019 00:36:20 +0100 Subject: wallet robustness WIP --- src/headless/clk.ts | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'src/headless/clk.ts') diff --git a/src/headless/clk.ts b/src/headless/clk.ts index 4a568dc18..828eb24c0 100644 --- a/src/headless/clk.ts +++ b/src/headless/clk.ts @@ -29,6 +29,7 @@ export let STRING: Converter = new Converter(); export interface OptionArgs { help?: string; default?: T; + onPresentHandler?: (v: T) => void; } export interface ArgumentArgs { @@ -269,9 +270,6 @@ export class CommandGroup { } printHelp(progName: string, parents: CommandGroup[]) { - const chain: CommandGroup[] = Array.prototype.concat(parents, [ - this, - ]); let usageSpec = ""; for (let p of parents) { usageSpec += (p.name ?? progName) + " "; @@ -352,6 +350,7 @@ export class CommandGroup { process.exit(-1); throw Error("not reached"); } + foundOptions[d.name] = true; myArgs[d.name] = true; } else { if (r.value === undefined) { @@ -380,6 +379,7 @@ export class CommandGroup { } if (opt.isFlag) { myArgs[opt.name] = true; + foundOptions[opt.name] = true; } else { if (si == optShort.length - 1) { if (i === unparsedArgs.length - 1) { @@ -449,6 +449,13 @@ export class CommandGroup { } } + for (let option of this.options) { + const ph = option.args.onPresentHandler; + if (ph && foundOptions[option.name]) { + ph(myArgs[option.name]); + } + } + if (parsedArgs[this.argKey].help) { this.printHelp(progname, parents); process.exit(-1); @@ -546,7 +553,7 @@ export class Program { name: N, flagspec: string[], args: OptionArgs = {}, - ): Program> { + ): Program> { this.mainCommand.flag(name, flagspec, args); return this as any; } -- cgit v1.2.3