From 9ccd609dbd583e6a267d4c8941df4f0b142022b4 Mon Sep 17 00:00:00 2001 From: Niklas Mollenhauer Date: Wed, 7 Oct 2015 21:20:13 +0200 Subject: [PATCH] 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;