import getopts from 'getopts'; import { CommandArg, CommandFlag, GlobalFlagHandler, CommandConstructorContract } from '../Contracts'; /** * The job of the parser is to parse the command line values by taking * the command `args`, `flags` and `globalFlags` into account. */ export declare class Parser { private registeredFlags; constructor(registeredFlags: { [name: string]: CommandFlag & { handler: GlobalFlagHandler; }; }); /** * Validate all the flags against the flags registered by the command * or as global flags and disallow unknown flags. */ private scanForUnknownFlags; /** * Processes ace command flag to set the options for `getopts`. * We just define the `alias` with getopts coz their default, * string and boolean options produces the behavior we don't * want. */ private preProcessFlag; /** * Casts a flag value to a boolean. The casting logic is driven * by the behavior of "getopts" */ private castToBoolean; /** * Cast the value to a string. The casting logic is driven * by the behavior of "getopts" * * - Convert numbers to string * - Do not convert boolean to a string, since a flag without a value * gets a boolean value, which is invalid */ private castToString; /** * Cast value to an array of string. The casting logic is driven * by the behavior of "getopts" * * - Numeric values are converted to string of array * - A string value is splitted by comma and trimmed. * - An array is casted to an array of string values */ private castToArray; /** * Cast value to an array of numbers. The casting logic is driven * by the behavior of "getopts". * * - Numeric values are wrapped to an array. * - String is splitted by comma and each value is casted to a number * - Each array value is casted to a number. */ private castToNumArray; /** * Cast value to a number. The casting logic is driven * by the behavior of "getopts" * * - Boolean values are not allowed * - A string is converted to a number */ private castToNumer; /** * Casts value of a flag to it's expected data type. These values * are then later validated to ensure that casting was successful. */ processFlag(flag: CommandFlag, parsed: getopts.ParsedOptions, command?: CommandConstructorContract): void; /** * Validates the value to ensure that values are defined for * required arguments. */ validateArg(arg: CommandArg, index: number, parsed: getopts.ParsedOptions, command: CommandConstructorContract): void; /** * Parses argv and executes the command and global flags handlers */ parse(argv: string[], command?: CommandConstructorContract): getopts.ParsedOptions; }