{"version":3,"file":"CommandConfiguration.cjs","sources":["../../../../../packages/cli-common/src/application/CommandConfiguration.ts"],"sourcesContent":["import { Argument, ArgumentConfiguration } from './Argument'\nimport { Option, OptionConfiguration, OptionMode } from './Option'\nimport { InputParser } from './InputParser'\nimport { UsageFormat, UsageFormatter } from './UsageFormatter'\nimport { Arguments, Options } from './Input'\n\nexport class CommandConfiguration<Args extends Arguments, TOptions extends Options> {\n\tprivate descriptionValue: string = ''\n\n\tprivate arguments: Argument[] = []\n\tprivate options: Option[] = []\n\n\tpublic description(description: string) {\n\t\tthis.descriptionValue = description\n\t}\n\n\tpublic argument(name: Extract<keyof Args, string>): ArgumentConfiguration {\n\t\tconst options = { name, optional: false, variadic: false }\n\t\tthis.arguments.push(options)\n\t\treturn new ArgumentConfiguration(options)\n\t}\n\n\tpublic option(name: Extract<keyof TOptions, string>): OptionConfiguration {\n\t\tconst option: Option = { name, required: false, mode: OptionMode.VALUE_NONE, deprecated: false }\n\t\tthis.options.push(option)\n\t\treturn new OptionConfiguration(option)\n\t}\n\n\tpublic validate() {\n\t\tlet hasVariadic = false\n\t\tlet hasOptional = false\n\t\tfor (let argument of this.arguments) {\n\t\t\tif (hasOptional && !argument.optional) {\n\t\t\t\tthrow new InvalidConfigurationError(`Required argument ${argument.name} cannot follow an optional `)\n\t\t\t}\n\t\t\tif (hasVariadic) {\n\t\t\t\tthrow new InvalidConfigurationError(`A variadic argument must be the last`)\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic getDescription(): string {\n\t\treturn this.descriptionValue\n\t}\n\n\tpublic createParser(): InputParser {\n\t\treturn new InputParser(this.arguments, this.options)\n\t}\n\n\tpublic getUsage(args: { format?: UsageFormat; indent?: string } = {}): string {\n\t\treturn UsageFormatter.format(this.arguments, this.options, args)\n\t}\n}\n\nexport class InvalidConfigurationError extends Error {}\n"],"names":["ArgumentConfiguration","OptionMode","OptionConfiguration","InputParser","UsageFormatter"],"mappings":";;;;;;;;;AAMO,MAAM,qBAAuE;AAAA,EAA7E,cAAA;AACN,kBAAA,MAAQ,oBAA2B,EAAA;AAEnC,kBAAA,MAAQ,aAAwB,EAAC;AACjC,kBAAA,MAAQ,WAAoB,EAAC;AAAA,EAAA;AAAA,EAEtB,YAAY,aAAqB;AACvC,SAAK,mBAAmB;AAAA,EAAA;AAAA,EAGlB,SAAS,MAA0D;AACzE,UAAM,UAAU,EAAE,MAAM,UAAU,OAAO,UAAU,MAAM;AACpD,SAAA,UAAU,KAAK,OAAO;AACpB,WAAA,IAAIA,+BAAsB,OAAO;AAAA,EAAA;AAAA,EAGlC,OAAO,MAA4D;AACnE,UAAA,SAAiB,EAAE,MAAM,UAAU,OAAO,MAAMC,kBAAW,YAAY,YAAY,MAAM;AAC1F,SAAA,QAAQ,KAAK,MAAM;AACjB,WAAA,IAAIC,2BAAoB,MAAM;AAAA,EAAA;AAAA,EAG/B,WAAW;AAGR,aAAA,YAAY,KAAK,WAAW;AAAA,IAMpC;AAAA,EACD;AAAA,EAGM,iBAAyB;AAC/B,WAAO,KAAK;AAAA,EAAA;AAAA,EAGN,eAA4B;AAClC,WAAO,IAAIC,YAAAA,YAAY,KAAK,WAAW,KAAK,OAAO;AAAA,EAAA;AAAA,EAG7C,SAAS,OAAkD,IAAY;AAC7E,WAAOC,eAAAA,eAAe,OAAO,KAAK,WAAW,KAAK,SAAS,IAAI;AAAA,EAAA;AAEjE;;"}