diff options
author | Florian Dold <florian.dold@gmail.com> | 2019-11-30 00:36:20 +0100 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2019-11-30 00:36:20 +0100 |
commit | aaf7e1338d6cdb1b4e01ad318938b3eaea2f922b (patch) | |
tree | 594129ccdf20757aeb86d434dd62c0c1e8259ed5 /src/headless/clk.ts | |
parent | 809fa186448dbd924f258f89920b9336f1979bb0 (diff) | |
download | wallet-core-aaf7e1338d6cdb1b4e01ad318938b3eaea2f922b.tar.xz |
wallet robustness WIP
Diffstat (limited to 'src/headless/clk.ts')
-rw-r--r-- | src/headless/clk.ts | 15 |
1 files changed, 11 insertions, 4 deletions
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<string> = new Converter<string>(); export interface OptionArgs<T> { help?: string; default?: T; + onPresentHandler?: (v: T) => void; } export interface ArgumentArgs<T> { @@ -269,9 +270,6 @@ export class CommandGroup<GN extends keyof any, TG> { } printHelp(progName: string, parents: CommandGroup<any, any>[]) { - const chain: CommandGroup<any, any>[] = Array.prototype.concat(parents, [ - this, - ]); let usageSpec = ""; for (let p of parents) { usageSpec += (p.name ?? progName) + " "; @@ -352,6 +350,7 @@ export class CommandGroup<GN extends keyof any, TG> { 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<GN extends keyof any, TG> { } 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<GN extends keyof any, TG> { } } + 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<PN extends keyof any, T> { name: N, flagspec: string[], args: OptionArgs<boolean> = {}, - ): Program<N, T & SubRecord<PN, N, boolean>> { + ): Program<PN, T & SubRecord<PN, N, boolean>> { this.mainCommand.flag(name, flagspec, args); return this as any; } |