diff --git a/nomnom/nomnom-tests.ts b/nomnom/nomnom-tests.ts new file mode 100644 index 000000000..f840b0e02 --- /dev/null +++ b/nomnom/nomnom-tests.ts @@ -0,0 +1,122 @@ +// https://github.com/harthur/nomnom +/// + +import nomnom = require("nomnom"); + +var opts1 = nomnom + .option('debug', { + abbr: 'd', + flag: true, + help: 'Print debugging info' + }) + .option('config', { + abbr: 'c', + default: 'config.json', + help: 'JSON file with tests to run' + }) + .option('version', { + flag: true, + help: 'print version and exit', + callback: () => "version 1.2.4" + }) + .parse(); + +if (opts1.debug) { +} + +var opts2 = nomnom.parse(); + +var url = opts2[0]; // get the first positional arg +var file = opts2.file; // see if --file was specified +var verbose = opts2.v; // see if -v was specified +var extras = opts2._; // get an array of the unmatched, positional args + +var parser = nomnom; + +function runBrowser(url: string): void { +} + +function runSanity(filename: string): void { +} + +parser.command('browser') + .callback(opts => { + runBrowser(opts.url); + }) + .help("run browser tests"); + +parser.command('sanity') + .option('outfile', { + abbr: 'o', + help: "file to write results to" + }) + .option('config', { + abbr: 'c', + default: 'config.json', + help: "json manifest of tests to run" + }) + .callback(opts => { + runSanity(opts.filename); + }) + .help("run the sanity tests"); + +parser.parse(); + +var opts3 = nomnom + .script("runtests") + .options({ + path: { + position: 0, + help: "Test file to run", + list: true + }, + config: { + abbr: 'c', + metavar: 'FILE', + help: "Config file with tests to run" + }, + debug: { + abbr: 'd', + flag: true, + help: "Print debugging info" + } + }).parse(); + +nomnom.option('debug', { + abbr: 'd' +}); + +nomnom.option('numLines', { + abbr: 'n', + full: 'num-lines' +}); + +nomnom.option('config', { + flag: true +}); + +nomnom.option('count', { + callback: count => { + if (count != parseInt(count)) + return "count must be an integer"; + } +}); + +nomnom.option('debug', { + abbr: 'd', + flag: true, + help: "Print debugging info" +}); + +nomnom.options({ + debug: { + abbr: 'd', + flag: true, + help: "Print debugging info" + }, + fruit: { + help: "Fruit to buy" + } +}); + +var opts4 = nomnom.parse(["-xvf", "--atomic=true"]); \ No newline at end of file diff --git a/nomnom/nomnom-tests.ts.tscparams b/nomnom/nomnom-tests.ts.tscparams new file mode 100644 index 000000000..e16c76dff --- /dev/null +++ b/nomnom/nomnom-tests.ts.tscparams @@ -0,0 +1 @@ +"" diff --git a/nomnom/nomnom.d.ts b/nomnom/nomnom.d.ts new file mode 100644 index 000000000..2e7259939 --- /dev/null +++ b/nomnom/nomnom.d.ts @@ -0,0 +1,225 @@ +// Type definitions for nomnom +// Project: https://github.com/harthur/nomnom +// Definitions by: Paul Vick +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +declare module "nomnom" +{ + /** + * The command-line parser. + */ + module Parser + { + /** + * A command-line option. + */ + export interface Option + { + /** + * The abbreviated name of the option. + */ + abbr?: string; + + /** + * The full name of the option. + */ + full?: string; + + /** + * Whether the option is a flag. + */ + flag?: boolean; + + /** + * A string to be used in the usage printout. + */ + metavar?: string; + + /** + * A shorthand for abbr, full, and metavar. + */ + string?: string; + + /** + * A help string for the option. + */ + help?: string; + + /** + * The default value of the option. + */ + default?: any; + + /** + * A callback for the option. + */ + callback?: (option: any) => string; + + /** + * The position of the option if it's a positional argument. + */ + position?: number; + + /** + * Whether the option is a list. + */ + list?: boolean; + + /** + * Whether the option is required. + */ + required?: boolean; + + /** + * The choices for the option. + */ + choices?: string[]; + + /** + * If you don't want the option JSON-parsed, specify type "string". + */ + type?: string; + + /** + * Whether the option is hidden. + */ + hidden?: boolean; + } + + /** + * A command-line command specification. + */ + export interface Command + { + /** + * The name of the command. + */ + name: string; + + /** + * Sets the options of the command. + * @param specs The specifications of the options. + * @returns The command. + */ + options(specs: { [index: string]: Option }): Command; + + /** + * Sets an option of the command. + * @param name The name of the option. + * @param spec The specifiction of the option. + * @returns The command. + */ + option(name: string, spec: Option): Command; + + /** + * Sets a callback for the command. + * @param func The callback function. + * @returns The command. + */ + callback(func: (options: any) => void): Command; + + /** + * Sets the help string for the command. + * @param help The help string. + * @returns The command. + */ + help(help: string): Command; + + /** + * Sets the usage string for the command. + * @param usage The usage string. + * @returns The command. + */ + usage(usage: string): Command; + } + } + + /** + * The command-line parser. + */ + interface Parser + { + /** + * Returns the parser. + */ + (): Parser; + + /** + * Creates a new command. + * @param name The name of the command. + * @returns The new command. + */ + command(name: string): Parser.Command; + + /** + * Returns the commmand representing no command. + * @returns The command representing no command. + */ + nocommand(): Parser.Command; + + /** + * Sets the options of the command-line. + * @param specs The specifications of the options. + * @returns The command-line parser. + */ + options(specs: { [index: string]: Parser.Option }): Parser; + + /** + * Sets an option of the command-line. + * @param name The name of the option. + * @param spec The specifiction of the option. + * @returns The command-line parser. + */ + option(name: string, spec: Parser.Option): Parser; + + /** + * Sets the usage string for the command-line. + * @param usage The usage string. + * @returns The command-line parser. + */ + usage(usage: string): Parser; + + /** + * Provides a printer to the command-line processor. + * @param print The print function to use. + * @returns The command-line parser. + */ + printer(print: (message: string, code?: number) => void): Parser; + + /** + * Sets the name of the script. + * @param script The script name. + * @returns The command-line parser. + */ + script(script: string): Parser; + + /** + * Sets the help string for the command-line. + * @param help The help string. + * @returns The command-line parser. + */ + help(help: string): Parser; + + /** + * Sets the command-line parser not to use colors. + * @returns The command-line parser. + */ + nocolors(): Parser; + + /** + * Parses the command-line. + * @param argv The command-line arguments. + * @returns The parsed command-line. + */ + nom(argv?: string[]): any; + + /** + * Parses the command-line. + * @param argv The command-line arguments. + * @returns The parsed command-line. + */ + parse(argv?: string[]): any; + } + + export = Parser; +}