1 | import { CliCommandDefinitionParameter, CliValue, CliValueValidatorFunction } from './types';
|
2 | import { coerceCliValue, isFunction, isRegExp } from './utils';
|
3 |
|
4 | export const getCommandDefinitionParameterValue = (
|
5 | value: CliValue,
|
6 | defParam: CliCommandDefinitionParameter,
|
7 | wasPassed = true
|
8 | ): CliValue => {
|
9 | let v = coerceCliValue(value || defParam.default, defParam.valueType);
|
10 | if (wasPassed && isFunction(defParam.transform)) {
|
11 | v = defParam.transform(v);
|
12 | }
|
13 | return v;
|
14 | };
|
15 |
|
16 | export const validateCommandDefinitionParameterValue = (
|
17 | value: CliValue,
|
18 | defParam: CliCommandDefinitionParameter
|
19 | ): boolean | string => {
|
20 | if (defParam.validate) {
|
21 | if (isFunction(defParam.valueType)) {
|
22 | const validator = defParam.validate as CliValueValidatorFunction;
|
23 | return validator(value);
|
24 | } else if (isRegExp(defParam.validate)) {
|
25 | const m = (defParam.validate as RegExp).exec(value as string);
|
26 | return !!m || `'${value}' fails RegExp validation: '${defParam.validate}'`;
|
27 | } else {
|
28 |
|
29 |
|
30 | console.assert(false);
|
31 | }
|
32 | }
|
33 | return true;
|
34 | };
|