createArrayOption
Creates an option that parses a delimited list into a typed array.
Example
ts
import { SC } from "@duplojs/server-utils";
import { DP, type ExpectType } from "@duplojs/utils";
const command = SC.create(
"batch",
{
options: [
SC.createArrayOption(
"tags",
DP.string(),
),
SC.createArrayOption(
"files",
DP.string(),
{
required: true,
min: 1,
separator: ";",
},
),
],
},
({ options }) => {
type check = ExpectType<
typeof options,
{
tags: string[] | undefined;
files: [string, ...string[]];
},
"strict"
>;
},
);
await command.execute([
"--tags=api,docs",
"--files=src/a.ts;src/b.ts",
]);Syntax
typescript
function createArrayOption<
GenericName extends string,
GenericSchema extends EligibleDataParser,
GenericMinValues extends number
>(
name: GenericName,
schema: GenericSchema,
params: {
description?: string
aliases?: readonly string[]
min?: GenericMinValues
max?: number
required: true
separator?: string
}
): Option<
GenericName,
[
...A.CreateTuple<DP.Output<GenericSchema>, GenericMinValues>,
...DP.Output<GenericSchema>[]
]
>
function createArrayOption<
GenericName extends string,
GenericSchema extends EligibleDataParser,
GenericMinValues extends number
>(
name: GenericName,
schema: GenericSchema,
params?: {
description?: string
aliases?: readonly string[]
min?: GenericMinValues
max?: number
separator?: string
}
): Option<
GenericName,
| [
...A.CreateTuple<DP.Output<GenericSchema>, GenericMinValues>,
...DP.Output<GenericSchema>[]
]
| undefined
>Parameters
name(string) : option name used as--name.schema(EligibleDataParser) : parser for each array element.params(optional) : option metadata and array constraints.params.required(true, optional) : throws when option is missing.params.min(number, optional) : minimum number of values.params.max(number, optional) : maximum number of values.params.separator(string, default",") : input separator.params.description(string, optional) : help description.params.aliases(string[], optional) : short aliases.
Return value
- Required mode:
Option<GenericName, [..items]>. - Optional mode:
Option<GenericName, [..items] | undefined>.
See also
createOption- Builds a single-value option.createBooleanOption- Builds a boolean flag option.create- Builds a command using this option.
