DefinitelyTyped/types/commander/commander-tests.ts
Alan Agius a713269029 fix(commander): issue with namespace not found (#16060)
* fix(commader): issue with namespace not found

* remove `new` and add test case

* fix typo

* add `ExportedCommander`

* rename to `StaticCommander`

* commander:  extend StaticCommander with commander.Command

* commander typings re add `new`

* commander: change `Option` and `Command` to `classes`

* rename `CommanderStatic`

* comander: add documentation

* remove breakline

* chnage `object` to `any`

* commander test: add breakline

* commander: update `CommanderStatic` to use `typeof`
2017-06-01 07:07:07 -07:00

97 lines
2.7 KiB
TypeScript

import * as program from "commander";
interface ExtendedOptions extends program.CommandOptions {
isNew: any;
}
const commandInstance = new program.Command("-f");
const optionsInstance = new program.Option("-f");
program
.version('0.0.1')
.option('-p, --peppers', 'Add peppers')
.option('-P, --pineapple', 'Add pineapple')
.option('-b, --bbq', 'Add bbq sauce')
.option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble')
.parse(process.argv);
console.log('you ordered a pizza with:');
if (program['peppers']) console.log(' - peppers');
if (program['pineapple']) console.log(' - pineapple');
if (program['bbq']) console.log(' - bbq');
console.log(' - %s cheese', program['cheese']);
function range(val: string) {
return val.split('..').map(Number);
}
function list(val: string) {
return val.split(',');
}
function collect(val: string, memo: string[]) {
memo.push(val);
return memo;
}
function increaseVerbosity(v: any, total: number) {
return total + 1;
}
program
.version('0.0.1')
.usage('[options] <file ...>')
.option('-i, --integer <n>', 'An integer argument', parseInt)
.option('-f, --float <n>', 'A float argument', parseFloat)
.option('-r, --range <a>..<b>', 'A range', range)
.option('-l, --list <items>', 'A list', list)
.option('-o, --optional [value]', 'An optional value')
.option('-c, --collect [value]', 'A repeatable value', collect, [])
.option('-v, --verbose', 'A value that can be increased', increaseVerbosity, 0)
.parse(process.argv);
console.log(' int: %j', program['integer']);
console.log(' float: %j', program['float']);
console.log(' optional: %j', program['optional']);
program['range'] = program['range'] || [];
console.log(' range: %j..%j', program['range'][0], program['range'][1]);
console.log(' list: %j', program['list']);
console.log(' collect: %j', program['collect']);
console.log(' verbosity: %j', program['verbose']);
console.log(' args: %j', program['args']);
program
.version('0.0.1')
.option('-f, --foo', 'enable some foo')
.option('-b, --bar', 'enable some bar')
.option('-B, --baz', 'enable some baz');
// must be before .parse() since
// node's emit() is immediate
program.on('--help', () => {
console.log(' Examples:');
console.log('');
console.log(' $ custom-help --help');
console.log(' $ custom-help -h');
console.log('');
});
program
.command('allow-unknown-option')
.allowUnknownOption()
.action(() => {
console.log('unknown option is allowed');
});
program
.version('0.0.1')
.arguments('<cmd> [env]')
.action((cmd, env) => {
console.log(cmd, env);
});
program.parse(process.argv);
console.log('stuff');