diff options
Diffstat (limited to 'u/process/argv.ts')
-rw-r--r-- | u/process/argv.ts | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/u/process/argv.ts b/u/process/argv.ts index 657c9a7..7190531 100644 --- a/u/process/argv.ts +++ b/u/process/argv.ts @@ -37,14 +37,15 @@ export const argv = <K extends string, V extends string>( .map((arg) => [arg, getArg(arg, argv)] as [K, IEither<Error, V>]) .map(([arg, specified]): [K, IEither<Error, V>] => [ arg, - specified.fold((e, val) => { - const hasDefaultVal = e && defaultArgs && arg in defaultArgs; + specified.fold(({ isLeft, isRight, value}): IEither<Error, V> => { + if (isRight) { + return Either.right(value); + } + const hasDefaultVal = isLeft && defaultArgs && arg in defaultArgs; if (hasDefaultVal) { - return Either.right<Error, V>(defaultArgs[arg]!); - } else if (!val || e) { - return Either.left<Error, V>(e ?? new Error("unknown")); + return Either.right(defaultArgs[arg]!); } - return Either.right<Error, V>(val); + return Either.left(value); }), ]) .reduce( |