in src/extensions/askUserForParam.ts [20:62]
export function checkResponse(response: string, spec: Param): boolean {
let valid = true;
let responses: string[];
if (spec.required && (response == "" || response == undefined)) {
utils.logWarning(`Param ${spec.param} is required, but no value was provided.`);
return false;
}
if (spec.type === ParamType.MULTISELECT) {
responses = response.split(",");
} else {
// For Params of type SELECT and STRING, we test against the entire response.
responses = [response];
}
if (spec.validationRegex && !!response) {
// !!response to ignore empty optional params
const re = new RegExp(spec.validationRegex);
_.forEach(responses, (resp) => {
if ((spec.required || resp !== "") && !re.test(resp)) {
const genericWarn =
`${resp} is not a valid value for ${spec.param} since it` +
` does not meet the requirements of the regex validation: "${spec.validationRegex}"`;
utils.logWarning(spec.validationErrorMessage || genericWarn);
valid = false;
}
});
}
if (spec.type && (spec.type === ParamType.MULTISELECT || spec.type === ParamType.SELECT)) {
_.forEach(responses, (r) => {
// A choice is valid if it matches one of the option values.
const validChoice = _.some(spec.options, (option: ParamOption) => {
return r === option.value;
});
if (!validChoice) {
utils.logWarning(`${r} is not a valid option for ${spec.param}.`);
valid = false;
}
});
}
return valid;
}