Skip to content

createOption

Crée une option à valeur unique depuis un DataParser ou un contrat clean.

Exemple

ts
import { 
SC
} from "@duplojs/server-utils";
import {
C
,
DP
} from "@duplojs/utils";
const
UserId
=
C
.
createNewType
("user-id",
DP
.
number
(),
C
.
Positive
);
await
SC
.
exec
({
options
: [
SC
.
createOption
("host",
DP
.
string
()),
SC
.
createOption
(
"port",
DP
.
number
(),
{
required
: true },
),
SC
.
createOption
(
"environment",
DP
.
literal
(["dev", "prod"]),
),
SC
.
createOption
("email",
C
.
Email
),
SC
.
createOption
("userId",
UserId
),
], }, ({
options
}) => {
});

Syntaxe

typescript
function createOption<
  GenericName extends string,
  GenericSpec extends EligibleSpec,
  GenericOutput extends ComputeOptionSpec<GenericSpec> = ComputeOptionSpec<GenericSpec>
>(
  name: GenericName,
  spec: GenericSpec,
  params: {
    description?: string
    aliases?: readonly string[]
    required: true
  }
): Option<GenericName, GenericOutput>

function createOption<
  GenericName extends string,
  GenericSpec extends EligibleSpec,
  GenericOutput extends ComputeOptionSpec<GenericSpec> = ComputeOptionSpec<GenericSpec>
>(
  name: GenericName,
  spec: GenericSpec,
  params?: {
    description?: string
    aliases?: readonly string[]
  }
): Option<GenericName, GenericOutput | undefined>

Paramètres

  • name (string) : nom de l'option utilisé comme --name.
  • spec (EligibleSpec) : parseur ou spec clean utilisée pour valider/transformer la valeur.
  • params (optionnel) : métadonnées d'option et comportement d'obligation.
  • params.required (true, optionnel) : déclenche une erreur si l'option est absente.
  • params.description (string, optionnel) : description dans le help.
  • params.aliases (string[], optionnel) : alias courts.

Valeur de retour

  • Option<GenericName, GenericOutput> quand required: true.
  • Option<GenericName, GenericOutput | undefined> sinon.

Notes

  • Les parsers primitifs et les contrats clean primitifs sont coercés automatiquement depuis l'entrée CLI en chaîne.

Voir aussi

Diffusé sous licence MIT.