From 2d69a5f8bf722ea2c6ba61c77ab3297d6331e253 Mon Sep 17 00:00:00 2001 From: Niklas Mollenhauer Date: Wed, 7 Oct 2015 20:56:13 +0200 Subject: [PATCH 1/3] Add optional function parameter to command() --- yargs/yargs-tests.ts | 16 ++++++++++++++++ yargs/yargs.d.ts | 1 + 2 files changed, 17 insertions(+) diff --git a/yargs/yargs-tests.ts b/yargs/yargs-tests.ts index 10b75382b..7ba6dbdba 100644 --- a/yargs/yargs-tests.ts +++ b/yargs/yargs-tests.ts @@ -134,6 +134,22 @@ function Argv$options() { ; } +function command() { + var argv = yargs + .usage('npm ') + .command('install', 'tis a mighty fine package to install') + .command('publish', 'shiver me timbers, should you be sharing all that', yargs => { + argv = yargs.option('f', { + alias: 'force', + description: 'yar, it usually be a bad idea' + }) + .help('help') + .argv; + }) + .help('help') + .argv; +} + function Argv$help() { var yargs1 = yargs .usage("$0 -operand1 number -operand2 number -operation [add|subtract]"); diff --git a/yargs/yargs.d.ts b/yargs/yargs.d.ts index 0e42090fc..8bfe8f6f9 100644 --- a/yargs/yargs.d.ts +++ b/yargs/yargs.d.ts @@ -54,6 +54,7 @@ declare module "yargs" { usage(options?: { [key: string]: Options }): Argv; command(command: string, description: string): Argv; + command(command: string, description: string, fn: (args: Argv) => void): Argv; example(command: string, description: string): Argv; From 9ccd609dbd583e6a267d4c8941df4f0b142022b4 Mon Sep 17 00:00:00 2001 From: Niklas Mollenhauer Date: Wed, 7 Oct 2015 21:20:13 +0200 Subject: [PATCH 2/3] Add completion function --- yargs/yargs-tests.ts | 27 +++++++++++++++++++++++++++ yargs/yargs.d.ts | 8 ++++++++ 2 files changed, 35 insertions(+) diff --git a/yargs/yargs-tests.ts b/yargs/yargs-tests.ts index 7ba6dbdba..7c5f49e92 100644 --- a/yargs/yargs-tests.ts +++ b/yargs/yargs-tests.ts @@ -150,6 +150,33 @@ function command() { .argv; } +function completion_sync() { + var argv = yargs + .completion('completion', (current, argv) => { + // 'current' is the current command being completed. + // 'argv' is the parsed arguments so far. + // simply return an array of completions. + return [ + 'foo', + 'bar' + ]; + }) + .argv; +} + +function completion_async() { + var argv = yargs + .completion('completion', (current, argv, done) => { + setTimeout(function() { + done([ + 'apple', + 'banana' + ]); + }, 500); + }) + .argv; +} + function Argv$help() { var yargs1 = yargs .usage("$0 -operand1 number -operand2 number -operation [add|subtract]"); diff --git a/yargs/yargs.d.ts b/yargs/yargs.d.ts index 8bfe8f6f9..03b7c05dc 100644 --- a/yargs/yargs.d.ts +++ b/yargs/yargs.d.ts @@ -56,6 +56,11 @@ declare module "yargs" { command(command: string, description: string): Argv; command(command: string, description: string, fn: (args: Argv) => void): Argv; + completion(cmd: string, fn?: SyncCompletionFunction): Argv; + completion(cmd: string, description?: string, fn?: SyncCompletionFunction): Argv; + completion(cmd: string, fn?: AsyncCompletionFunction): Argv; + completion(cmd: string, description?: string, fn?: AsyncCompletionFunction): Argv; + example(command: string, description: string): Argv; check(func: (argv: any, aliases: { [alias: string]: string }) => any): Argv; @@ -111,6 +116,9 @@ declare module "yargs" { desc?: any; requiresArg?: any; } + + type SyncCompletionFunction = (current: string, argv: any) => string[]; + type AsyncCompletionFunction = (current: string, argv: any, done: (completion: string[]) => void) => void; } var yargs: yargs.Argv; From c2b51380cbda12d21e472feff474b5b5de3744c6 Mon Sep 17 00:00:00 2001 From: Niklas Mollenhauer Date: Wed, 7 Oct 2015 21:27:48 +0200 Subject: [PATCH 3/3] Fix indent --- yargs/yargs-tests.ts | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/yargs/yargs-tests.ts b/yargs/yargs-tests.ts index 7c5f49e92..f20254990 100644 --- a/yargs/yargs-tests.ts +++ b/yargs/yargs-tests.ts @@ -136,32 +136,32 @@ function Argv$options() { function command() { var argv = yargs - .usage('npm ') - .command('install', 'tis a mighty fine package to install') - .command('publish', 'shiver me timbers, should you be sharing all that', yargs => { - argv = yargs.option('f', { - alias: 'force', - description: 'yar, it usually be a bad idea' + .usage('npm ') + .command('install', 'tis a mighty fine package to install') + .command('publish', 'shiver me timbers, should you be sharing all that', yargs => { + argv = yargs.option('f', { + alias: 'force', + description: 'yar, it usually be a bad idea' + }) + .help('help') + .argv; }) .help('help') .argv; - }) - .help('help') - .argv; } function completion_sync() { var argv = yargs - .completion('completion', (current, argv) => { - // 'current' is the current command being completed. - // 'argv' is the parsed arguments so far. - // simply return an array of completions. - return [ - 'foo', - 'bar' - ]; - }) - .argv; + .completion('completion', (current, argv) => { + // 'current' is the current command being completed. + // 'argv' is the parsed arguments so far. + // simply return an array of completions. + return [ + 'foo', + 'bar' + ]; + }) + .argv; } function completion_async() {