yargs.d.ts 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274
  1. /// <reference types="node" />
  2. import { CommandInstance, CommandHandler, CommandBuilderDefinition, CommandBuilder, CommandHandlerCallback, FinishCommandHandler } from './command';
  3. import { Dictionary } from './common-types';
  4. import { Arguments as ParserArguments, DetailedArguments as ParserDetailedArguments, Configuration as ParserConfiguration, Options as ParserOptions, ConfigCallback, CoerceCallback } from 'yargs-parser';
  5. import { YError } from './yerror';
  6. import { UsageInstance, FailureFunction } from './usage';
  7. import { CompletionFunction } from './completion';
  8. import { ValidationInstance, KeyOrPos } from './validation';
  9. import { Y18N } from 'y18n';
  10. import { MiddlewareCallback, Middleware } from './middleware';
  11. import { RequireDirectoryOptions } from 'require-directory';
  12. export declare function Yargs(processArgs?: string | string[], cwd?: string, parentRequire?: NodeRequire): YargsInstance;
  13. export declare function rebase(base: string, dir: string): string;
  14. /** Instance of the yargs module. */
  15. export interface YargsInstance {
  16. $0: string;
  17. argv: Arguments;
  18. customScriptName: boolean;
  19. parsed: DetailedArguments | false;
  20. _copyDoubleDash<T extends Arguments | Promise<Arguments>>(argv: T): T;
  21. _getLoggerInstance(): LoggerInstance;
  22. _getParseContext(): Object;
  23. _hasOutput(): boolean;
  24. _hasParseCallback(): boolean;
  25. _parseArgs: {
  26. (args: null, shortCircuit: null, _calledFromCommand: boolean, commandIndex?: number): Arguments | Promise<Arguments>;
  27. (args: string | string[], shortCircuit?: boolean): Arguments | Promise<Arguments>;
  28. };
  29. _runValidation(argv: Arguments, aliases: Dictionary<string[]>, positionalMap: Dictionary<string[]>, parseErrors: Error | null, isDefaultCommand?: boolean): void;
  30. _setHasOutput(): void;
  31. addHelpOpt: {
  32. (opt?: string | false): YargsInstance;
  33. (opt?: string, msg?: string): YargsInstance;
  34. };
  35. addShowHiddenOpt: {
  36. (opt?: string | false): YargsInstance;
  37. (opt?: string, msg?: string): YargsInstance;
  38. };
  39. alias: {
  40. (keys: string | string[], aliases: string | string[]): YargsInstance;
  41. (keyAliases: Dictionary<string | string[]>): YargsInstance;
  42. };
  43. array(keys: string | string[]): YargsInstance;
  44. boolean(keys: string | string[]): YargsInstance;
  45. check(f: (argv: Arguments, aliases: Dictionary<string[]>) => any, _global?: boolean): YargsInstance;
  46. choices: {
  47. (keys: string | string[], choices: string | string[]): YargsInstance;
  48. (keyChoices: Dictionary<string | string[]>): YargsInstance;
  49. };
  50. coerce: {
  51. (keys: string | string[], coerceCallback: CoerceCallback): YargsInstance;
  52. (keyCoerceCallbacks: Dictionary<CoerceCallback>): YargsInstance;
  53. };
  54. command(cmd: string | string[], description: CommandHandler['description'], builder?: CommandBuilderDefinition | CommandBuilder, handler?: CommandHandlerCallback, commandMiddleware?: Middleware[], deprecated?: boolean): YargsInstance;
  55. commandDir(dir: string, opts?: RequireDirectoryOptions<any>): YargsInstance;
  56. completion: {
  57. (cmd?: string, fn?: CompletionFunction): YargsInstance;
  58. (cmd?: string, desc?: string | false, fn?: CompletionFunction): YargsInstance;
  59. };
  60. config: {
  61. (config: Dictionary): YargsInstance;
  62. (keys?: string | string[], configCallback?: ConfigCallback): YargsInstance;
  63. (keys?: string | string[], msg?: string, configCallback?: ConfigCallback): YargsInstance;
  64. };
  65. conflicts: {
  66. (key: string, conflictsWith: string | string[]): YargsInstance;
  67. (keyConflicts: Dictionary<string | string[]>): YargsInstance;
  68. };
  69. count(keys: string | string[]): YargsInstance;
  70. default: {
  71. (key: string, value: any, defaultDescription?: string): YargsInstance;
  72. (keys: string[], value: Exclude<any, Function>): YargsInstance;
  73. (keys: Dictionary<any>): YargsInstance;
  74. };
  75. defaults: YargsInstance['default'];
  76. demand: {
  77. (min: number, max?: number | string, msg?: string): YargsInstance;
  78. (keys: string | string[], msg?: string | true): YargsInstance;
  79. (keys: string | string[], max: string[], msg?: string | true): YargsInstance;
  80. (keyMsgs: Dictionary<string | undefined>): YargsInstance;
  81. (keyMsgs: Dictionary<string | undefined>, max: string[], msg?: string): YargsInstance;
  82. };
  83. demandCommand(): YargsInstance;
  84. demandCommand(min: number, minMsg?: string): YargsInstance;
  85. demandCommand(min: number, max: number, minMsg?: string | null, maxMsg?: string | null): YargsInstance;
  86. demandOption: {
  87. (keys: string | string[], msg?: string): YargsInstance;
  88. (keyMsgs: Dictionary<string | undefined>): YargsInstance;
  89. };
  90. deprecateOption(option: string, message?: string | boolean): YargsInstance;
  91. describe: {
  92. (keys: string | string[], description?: string): YargsInstance;
  93. (keyDescriptions: Dictionary<string>): YargsInstance;
  94. };
  95. detectLocale(detect: boolean): YargsInstance;
  96. env(prefix?: string | false): YargsInstance;
  97. epilog: YargsInstance['epilogue'];
  98. epilogue(msg: string): YargsInstance;
  99. example(cmd: string | [string, string?][], description?: string): YargsInstance;
  100. exit(code: number, err?: YError | string): void;
  101. exitProcess(enabled: boolean): YargsInstance;
  102. fail(f: FailureFunction): YargsInstance;
  103. getCommandInstance(): CommandInstance;
  104. getCompletion(args: string[], done: (completions: string[]) => any): void;
  105. getContext(): Context;
  106. getDemandedCommands(): Options['demandedCommands'];
  107. getDemandedOptions(): Options['demandedOptions'];
  108. getDeprecatedOptions(): Options['deprecatedOptions'];
  109. getDetectLocale(): boolean;
  110. getExitProcess(): boolean;
  111. getGroups(): Dictionary<string[]>;
  112. getHandlerFinishCommand(): FinishCommandHandler | null;
  113. getOptions(): Options;
  114. getParserConfiguration(): Configuration;
  115. getStrict(): boolean;
  116. getStrictCommands(): boolean;
  117. getUsageInstance(): UsageInstance;
  118. getValidationInstance(): ValidationInstance;
  119. global(keys: string | string[], global?: boolean): YargsInstance;
  120. group(keys: string | string[], groupName: string): YargsInstance;
  121. help: YargsInstance['addHelpOpt'];
  122. hide(key: string): YargsInstance;
  123. implies: {
  124. (key: string, implication: KeyOrPos | KeyOrPos[]): YargsInstance;
  125. (keyImplications: Dictionary<KeyOrPos | KeyOrPos[]>): YargsInstance;
  126. };
  127. locale: {
  128. (): string;
  129. (locale: string): YargsInstance;
  130. };
  131. middleware(callback: MiddlewareCallback | MiddlewareCallback[], applyBeforeValidation?: boolean): YargsInstance;
  132. nargs: {
  133. (keys: string | string[], nargs: number): YargsInstance;
  134. (keyNargs: Dictionary<number>): YargsInstance;
  135. };
  136. normalize(keys: string | string[]): YargsInstance;
  137. number(keys: string | string[]): YargsInstance;
  138. onFinishCommand(f: FinishCommandHandler): YargsInstance;
  139. option: {
  140. (key: string, optionDefinition: OptionDefinition): YargsInstance;
  141. (keyOptionDefinitions: Dictionary<OptionDefinition>): YargsInstance;
  142. };
  143. options: YargsInstance['option'];
  144. parse: {
  145. (): Arguments | Promise<Arguments>;
  146. (args: string | string[], context: object, parseCallback?: ParseCallback): Arguments | Promise<Arguments>;
  147. (args: string | string[], parseCallback: ParseCallback): Arguments | Promise<Arguments>;
  148. (args: string | string[], shortCircuit: boolean): Arguments | Promise<Arguments>;
  149. };
  150. parserConfiguration(config: Configuration): YargsInstance;
  151. pkgConf(key: string, rootPath?: string): YargsInstance;
  152. positional(key: string, positionalDefinition: PositionalDefinition): YargsInstance;
  153. recommendCommands(recommend: boolean): YargsInstance;
  154. require: YargsInstance['demand'];
  155. required: YargsInstance['demand'];
  156. requiresArg(keys: string | string[] | Dictionary): YargsInstance;
  157. reset(aliases?: DetailedArguments['aliases']): YargsInstance;
  158. resetOptions(aliases?: DetailedArguments['aliases']): YargsInstance;
  159. scriptName(scriptName: string): YargsInstance;
  160. showCompletionScript($0?: string, cmd?: string): YargsInstance;
  161. showHelp(level: 'error' | 'log' | ((message: string) => void)): YargsInstance;
  162. showHelpOnFail: {
  163. (message?: string): YargsInstance;
  164. (enabled: boolean, message: string): YargsInstance;
  165. };
  166. showHidden: YargsInstance['addShowHiddenOpt'];
  167. skipValidation(keys: string | string[]): YargsInstance;
  168. strict(enable?: boolean): YargsInstance;
  169. strictCommands(enable?: boolean): YargsInstance;
  170. string(key: string | string[]): YargsInstance;
  171. terminalWidth(): number | null;
  172. updateStrings(obj: Dictionary<string>): YargsInstance;
  173. updateLocale: YargsInstance['updateStrings'];
  174. usage: {
  175. (msg: string | null): YargsInstance;
  176. (msg: string, description: CommandHandler['description'], builder?: CommandBuilderDefinition | CommandBuilder, handler?: CommandHandlerCallback): YargsInstance;
  177. };
  178. version: {
  179. (ver?: string | false): YargsInstance;
  180. (key?: string, ver?: string): YargsInstance;
  181. (key?: string, msg?: string, ver?: string): YargsInstance;
  182. };
  183. wrap(cols: number | null | undefined): YargsInstance;
  184. }
  185. export declare function isYargsInstance(y: YargsInstance | void): y is YargsInstance;
  186. /** Yargs' context. */
  187. export interface Context {
  188. commands: string[];
  189. files: string[];
  190. fullCommands: string[];
  191. }
  192. declare type LoggerInstance = Pick<Console, 'error' | 'log'>;
  193. export interface Options extends ParserOptions {
  194. __: Y18N['__'];
  195. alias: Dictionary<string[]>;
  196. array: string[];
  197. boolean: string[];
  198. choices: Dictionary<string[]>;
  199. config: Dictionary<ConfigCallback | boolean>;
  200. configObjects: Dictionary[];
  201. configuration: Configuration;
  202. count: string[];
  203. defaultDescription: Dictionary<string | undefined>;
  204. demandedCommands: Dictionary<{
  205. min: number;
  206. max: number;
  207. minMsg?: string | null;
  208. maxMsg?: string | null;
  209. }>;
  210. demandedOptions: Dictionary<string | undefined>;
  211. deprecatedOptions: Dictionary<string | boolean | undefined>;
  212. hiddenOptions: string[];
  213. /** Manually set keys */
  214. key: Dictionary<boolean | string>;
  215. local: string[];
  216. normalize: string[];
  217. number: string[];
  218. showHiddenOpt: string;
  219. skipValidation: string[];
  220. string: string[];
  221. }
  222. export interface Configuration extends Partial<ParserConfiguration> {
  223. /** Should a config object be deep-merged with the object config it extends? */
  224. 'deep-merge-config'?: boolean;
  225. /** Should commands be sorted in help? */
  226. 'sort-commands'?: boolean;
  227. }
  228. export interface OptionDefinition {
  229. alias?: string | string[];
  230. array?: boolean;
  231. boolean?: boolean;
  232. choices?: string | string[];
  233. coerce?: CoerceCallback;
  234. config?: boolean;
  235. configParser?: ConfigCallback;
  236. conflicts?: string | string[];
  237. count?: boolean;
  238. default?: any;
  239. defaultDescription?: string;
  240. deprecate?: string | boolean;
  241. deprecated?: OptionDefinition['deprecate'];
  242. desc?: string;
  243. describe?: OptionDefinition['desc'];
  244. description?: OptionDefinition['desc'];
  245. demand?: string | true;
  246. demandOption?: OptionDefinition['demand'];
  247. global?: boolean;
  248. group?: string;
  249. hidden?: boolean;
  250. implies?: string | number | KeyOrPos[];
  251. nargs?: number;
  252. normalize?: boolean;
  253. number?: boolean;
  254. require?: OptionDefinition['demand'];
  255. required?: OptionDefinition['demand'];
  256. requiresArg?: boolean;
  257. skipValidation?: boolean;
  258. string?: boolean;
  259. type?: 'array' | 'boolean' | 'count' | 'number' | 'string';
  260. }
  261. interface PositionalDefinition extends Pick<OptionDefinition, 'alias' | 'array' | 'coerce' | 'choices' | 'conflicts' | 'default' | 'defaultDescription' | 'demand' | 'desc' | 'describe' | 'description' | 'implies' | 'normalize'> {
  262. type?: 'boolean' | 'number' | 'string';
  263. }
  264. interface ParseCallback {
  265. (err: YError | string | undefined | null, argv: Arguments | Promise<Arguments>, output: string): void;
  266. }
  267. export interface Arguments extends ParserArguments {
  268. /** The script name or node command */
  269. $0: string;
  270. }
  271. export interface DetailedArguments extends ParserDetailedArguments {
  272. argv: Arguments;
  273. }
  274. export {};