Skip to content

Commit

Permalink
fix: compatibility with deno 1.0, closes #75
Browse files Browse the repository at this point in the history
  • Loading branch information
egoist committed May 14, 2020
1 parent 46403c9 commit 976c21f
Show file tree
Hide file tree
Showing 11 changed files with 845 additions and 1,884 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Expand Up @@ -3,3 +3,5 @@ node_modules
/types
/api-doc
coverage
/mod.d.ts
/mod.js
3 changes: 2 additions & 1 deletion README.md
Expand Up @@ -281,9 +281,10 @@ import { cac } from 'cac'
### With Deno

```ts
// deno-types="https://unpkg.com/cac/mod.d.ts"
import { cac } from 'https://unpkg.com/cac/mod.js'

// ...
const cli = cac('my-program')
```

## Projects Using CAC
Expand Down
191 changes: 191 additions & 0 deletions dist/index.d.ts
@@ -0,0 +1,191 @@
/// <reference types="node" />
import { EventEmitter } from 'events';

interface OptionConfig {
default?: any;
type?: any[];
}
declare class Option {
rawName: string;
description: string;
/** Option name */
name: string;
/** Option name and aliases */
names: string[];
isBoolean?: boolean;
required?: boolean;
config: OptionConfig;
negated: boolean;
constructor(rawName: string, description: string, config?: OptionConfig);
}

interface CommandArg {
required: boolean;
value: string;
variadic: boolean;
}
interface HelpSection {
title?: string;
body: string;
}
interface CommandConfig {
allowUnknownOptions?: boolean;
ignoreOptionDefaultValue?: boolean;
}
declare type HelpCallback = (sections: HelpSection[]) => void;
declare type CommandExample = ((bin: string) => string) | string;
declare class Command {
rawName: string;
description: string;
config: CommandConfig;
cli: CAC;
options: Option[];
aliasNames: string[];
name: string;
args: CommandArg[];
commandAction?: (...args: any[]) => any;
usageText?: string;
versionNumber?: string;
examples: CommandExample[];
helpCallback?: HelpCallback;
globalCommand?: GlobalCommand;
constructor(rawName: string, description: string, config: CommandConfig, cli: CAC);
usage(text: string): this;
allowUnknownOptions(): this;
ignoreOptionDefaultValue(): this;
version(version: string, customFlags?: string): this;
example(example: CommandExample): this;
/**
* Add a option for this command
* @param rawName Raw option name(s)
* @param description Option description
* @param config Option config
*/
option(rawName: string, description: string, config?: OptionConfig): this;
alias(name: string): this;
action(callback: (...args: any[]) => any): this;
/**
* Check if a command name is matched by this command
* @param name Command name
*/
isMatched(name: string): boolean;
get isDefaultCommand(): boolean;
get isGlobalCommand(): boolean;
/**
* Check if an option is registered in this command
* @param name Option name
*/
hasOption(name: string): Option | undefined;
outputHelp(): void;
outputVersion(): void;
checkRequiredArgs(): void;
/**
* Check if the parsed options contain any unknown options
*
* Exit and output error when true
*/
checkUnknownOptions(): void;
/**
* Check if the required string-type options exist
*/
checkOptionValue(): void;
}
declare class GlobalCommand extends Command {
constructor(cli: CAC);
}

interface ParsedArgv {
args: ReadonlyArray<string>;
options: {
[k: string]: any;
};
}
declare class CAC extends EventEmitter {
/** The program name to display in help and version message */
name: string;
commands: Command[];
globalCommand: GlobalCommand;
matchedCommand?: Command;
matchedCommandName?: string;
/**
* Raw CLI arguments
*/
rawArgs: string[];
/**
* Parsed CLI arguments
*/
args: ParsedArgv['args'];
/**
* Parsed CLI options, camelCased
*/
options: ParsedArgv['options'];
private showHelpOnExit;
private showVersionOnExit;
/**
* @param name The program name to display in help and version message
*/
constructor(name?: string);
/**
* Add a global usage text.
*
* This is not used by sub-commands.
*/
usage(text: string): this;
/**
* Add a sub-command
*/
command(rawName: string, description?: string, config?: CommandConfig): Command;
/**
* Add a global CLI option.
*
* Which is also applied to sub-commands.
*/
option(rawName: string, description: string, config?: OptionConfig): this;
/**
* Show help message when `-h, --help` flags appear.
*
*/
help(callback?: HelpCallback): this;
/**
* Show version number when `-v, --version` flags appear.
*
*/
version(version: string, customFlags?: string): this;
/**
* Add a global example.
*
* This example added here will not be used by sub-commands.
*/
example(example: CommandExample): this;
/**
* Output the corresponding help message
* When a sub-command is matched, output the help message for the command
* Otherwise output the global one.
*
*/
outputHelp(): void;
/**
* Output the version number.
*
*/
outputVersion(): void;
private setParsedInfo;
/**
* Parse argv
*/
parse(argv?: string[], {
/** Whether to run the action for matched command */
run }?: {
run?: boolean | undefined;
}): ParsedArgv;
private mri;
runMatchedCommand(): any;
}

/**
* @param name The program name to display in help and version message
*/
declare const cac: (name?: string) => CAC;

export default cac;
export { cac };

0 comments on commit 976c21f

Please sign in to comment.