Skip to content
This repository has been archived by the owner on Aug 22, 2023. It is now read-only.

Commit

Permalink
refactor: cleanup flags
Browse files Browse the repository at this point in the history
  • Loading branch information
MunifTanjim committed May 27, 2020
1 parent fb28f3e commit f7e6a82
Showing 1 changed file with 5 additions and 5 deletions.
10 changes: 5 additions & 5 deletions src/flags.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ export type IOptionFlag<T> = Parser.flags.IOptionFlag<T> & {
export type IFlag<T> = Parser.flags.IBooleanFlag<T> | IOptionFlag<T>

export type Output = Parser.flags.Output
export type Input<T extends Parser.flags.Output> = { [P in keyof T]: IFlag<T[P]> }
export type Input<T extends Output> = { [P in keyof T]: IFlag<T[P]> }

export type Definition<T> = {
(options: {multiple: true} & Partial<IOptionFlag<T[]>>): IOptionFlag<T[]>;
Expand All @@ -44,13 +44,12 @@ export function option<T>(options: {parse: IOptionFlag<T>['parse']} & Partial<IO

const _enum = <T = string>(opts: Parser.flags.EnumFlagOptions<T>): IOptionFlag<T> => {
return build<T>({
parse(input) {
parse(input, _) {
if (!opts.options.includes(input)) throw new Error(`Expected --${this.name}=${input} to be one of: ${opts.options.join(', ')}`)
return input
return input as unknown as T
},
helpValue: `(${opts.options.join('|')})`,
...opts as any,
optionType: 'enum',
...opts,
})() as IOptionFlag<T>
}
export {_enum as enum}
Expand All @@ -70,6 +69,7 @@ export const version = (opts: Partial<Parser.flags.IBooleanFlag<boolean>> = {})
},
})
}

export const help = (opts: Partial<Parser.flags.IBooleanFlag<boolean>> = {}) => {
return Parser.flags.boolean({
// char: 'h',
Expand Down

0 comments on commit f7e6a82

Please sign in to comment.