From 799455bbb526b221c806bf8feff6b625dcf50a56 Mon Sep 17 00:00:00 2001 From: Mike Donnalley Date: Thu, 18 Aug 2022 09:01:05 -0600 Subject: [PATCH] fix: add overloads to enum flag --- src/flags.ts | 10 +++++++--- src/parser/flags.ts | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/flags.ts b/src/flags.ts index ccc4dcb21..339584fb0 100644 --- a/src/flags.ts +++ b/src/flags.ts @@ -1,4 +1,4 @@ -import {OptionFlag, Definition, BooleanFlag, EnumFlagOptions} from './interfaces' +import {OptionFlag, Definition, BooleanFlag, EnumFlagOptions, Default} from './interfaces' import * as Parser from './parser' import Command from './command' @@ -12,7 +12,11 @@ export function option(options: {parse: OptionFlag['parse']} & Partial(options)() } -const _enum = (opts: EnumFlagOptions): OptionFlag => { +export function _enum(opts: EnumFlagOptions & {multiple: true} & ({required: true} | { default: Default })): OptionFlag +export function _enum(opts: EnumFlagOptions & {multiple: true}): OptionFlag +export function _enum(opts: EnumFlagOptions & ({required: true} | { default: Default })): OptionFlag +export function _enum(opts: EnumFlagOptions): OptionFlag +export function _enum(opts: EnumFlagOptions): OptionFlag | OptionFlag | OptionFlag | OptionFlag { return build({ async parse(input) { if (!opts.options.includes(input)) throw new Error(`Expected --${this.name}=${input} to be one of: ${opts.options.join(', ')}`) @@ -20,7 +24,7 @@ const _enum = (opts: EnumFlagOptions): OptionFlag => { }, helpValue: `(${opts.options.join('|')})`, ...opts, - })() as OptionFlag + })() } export {_enum as enum} diff --git a/src/parser/flags.ts b/src/parser/flags.ts index 840a03e8e..eaa8bcd80 100644 --- a/src/parser/flags.ts +++ b/src/parser/flags.ts @@ -75,7 +75,7 @@ export function directory(opts: { exists?: boolean } & Partial> & { exists?: boolean } & {multiple: true} & ({required: true} | { default: Default })): OptionFlag export function file(opts: Partial> & { exists?: boolean } & {multiple: true}): OptionFlag -export function file(opts: { exists?: boolean } & Partial> & ({required: true} | { default: string })): OptionFlag +export function file(opts: { exists?: boolean } & Partial> & ({required: true} | { default: Default })): OptionFlag export function file(opts?: { exists?: boolean } & Partial>): OptionFlag export function file(opts: { exists?: boolean } & Partial> = {}): OptionFlag | OptionFlag | OptionFlag | OptionFlag { return build({