You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.7 KiB
55 lines
1.7 KiB
import {Opts as MinimistOptions} from 'minimist'; |
|
|
|
export type OptionType = 'string' | 'boolean' | 'number' | 'array' | 'string-array' | 'boolean-array' | 'number-array'; |
|
|
|
export interface BaseOption< |
|
TypeOptionType extends OptionType, |
|
DefaultOptionType |
|
> { |
|
/** |
|
* The data type the option should be parsed to. |
|
*/ |
|
readonly type?: TypeOptionType; |
|
|
|
/** |
|
* An alias/list of aliases for the option. |
|
*/ |
|
readonly alias?: string | ReadonlyArray<string>; |
|
|
|
/** |
|
* The default value for the option. |
|
*/ |
|
readonly default?: DefaultOptionType; |
|
} |
|
|
|
export type StringOption = BaseOption<'string', string>; |
|
export type BooleanOption = BaseOption<'boolean', boolean>; |
|
export type NumberOption = BaseOption<'number', number>; |
|
export type DefaultArrayOption = BaseOption<'array', ReadonlyArray<string>>; |
|
export type StringArrayOption = BaseOption<'string-array', ReadonlyArray<string>>; |
|
export type BooleanArrayOption = BaseOption<'boolean-array', ReadonlyArray<boolean>>; |
|
export type NumberArrayOption = BaseOption<'number-array', ReadonlyArray<number>>; |
|
|
|
type MinimistOption = NonNullable< |
|
| MinimistOptions['stopEarly'] |
|
| MinimistOptions['unknown'] |
|
| MinimistOptions['--'] |
|
>; |
|
|
|
export type Options = { |
|
[key: string]: |
|
| OptionType |
|
| StringOption |
|
| BooleanOption |
|
| NumberOption |
|
| DefaultArrayOption |
|
| StringArrayOption |
|
| BooleanArrayOption |
|
| NumberArrayOption |
|
| MinimistOption; // Workaround for https://github.com/microsoft/TypeScript/issues/17867 |
|
}; |
|
|
|
/** |
|
* Write options for [minimist](https://npmjs.org/package/minimist) in a comfortable way. Support string, boolean, number and array options. |
|
*/ |
|
export default function buildOptions(options?: Options): MinimistOptions;
|
|
|