// deno-lint-ignore-file no-explicit-any import * as dntShim from "../../../../../_dnt.shims.js"; import { UnknownTypeError, ValidationError as FlagsValidationError, } from "../flags/_errors.js"; import { MissingRequiredEnvVarError } from "./_errors.js"; import { parseFlags } from "../flags/flags.js"; import type { ParseFlagsContext } from "../flags/types.js"; import { getDescription, parseArgumentsDefinition, splitArguments, } from "./_utils.js"; import { bold, brightBlue, red, yellow } from "./deps.js"; import { CommandExecutableNotFoundError, CommandNotFoundError, DefaultCommandNotFoundError, DuplicateCommandAliasError, DuplicateCommandNameError, DuplicateCompletionError, DuplicateEnvVarError, DuplicateExampleError, DuplicateOptionNameError, DuplicateTypeError, MissingArgumentError, MissingArgumentsError, MissingCommandNameError, NoArgumentsAllowedError, TooManyArgumentsError, TooManyEnvVarValuesError, UnexpectedOptionalEnvVarValueError, UnexpectedVariadicEnvVarValueError, UnknownCommandError, ValidationError, } from "./_errors.js"; import { DefaultValue, ErrorHandler, OptionValueHandler } from "./types.js"; import { BooleanType } from "./types/boolean.js"; import { FileType } from "./types/file.js"; import { NumberType } from "./types/number.js"; import { StringType } from "./types/string.js"; import { Type } from "./type.js"; import { HelpGenerator } from "./help/_help_generator.js"; import type { HelpOptions } from "./help/_help_generator.js"; import type { ActionHandler, Argument, ArgumentValue, CommandResult, CompleteHandler, CompleteOptions, Completion, Description, EnvVar, EnvVarOptions, EnvVarValueHandler, Example, GlobalEnvVarOptions, GlobalOptionOptions, HelpHandler, MapTypes, Option, OptionOptions, TypeDef, TypeOptions, TypeOrTypeHandler, VersionHandler, } from "./types.js"; import { IntegerType } from "./types/integer.js"; import { underscoreToCamelCase } from "../flags/_utils.js"; export class Command< TParentCommandGlobals extends Record | void = void, TParentCommandTypes extends Record | void = TParentCommandGlobals extends number ? any : void, TCommandOptions extends Record | void = TParentCommandGlobals extends number ? any : void, TCommandArguments extends Array = TParentCommandGlobals extends number ? any : [], TCommandGlobals extends Record | void = TParentCommandGlobals extends number ? any : void, TCommandTypes extends Record | void = TParentCommandGlobals extends number ? any : { number: number; integer: number; string: string; boolean: boolean; file: string; }, TCommandGlobalTypes extends Record | void = TParentCommandGlobals extends number ? any : void, TParentCommand extends Command | undefined = TParentCommandGlobals extends number ? any : undefined, > { private types: Map = new Map(); private rawArgs: Array = []; private literalArgs: Array = []; // @TODO: get script name: https://github.com/denoland/deno/pull/5034 // private name: string = location.pathname.split( '/' ).pop() as string; private _name = "COMMAND"; private _parent?: TParentCommand; private _globalParent?: Command; private ver?: VersionHandler; private desc: Description = ""; private _usage?: string; private fn?: ActionHandler; private options: Array