@adpt/cli
Version:
AdaptJS command line interface
47 lines • 1.65 kB
JavaScript
;
/*
* Copyright 2020 Unbounded Systems, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
Object.defineProperty(exports, "__esModule", { value: true });
const utils_1 = require("@adpt/utils");
const schema_1 = require("./schema");
const defaultGetValOptions = {
useDefault: false,
propTransform: (prop) => prop,
};
function getValIfSet(prop, obj, schema, options = {}) {
const { useDefault, propTransform } = Object.assign({}, defaultGetValOptions, options);
const objKey = propTransform(prop);
let val;
if (objKey in obj) {
val = obj[objKey];
}
else {
if (!useDefault)
return undefined;
val = schema[prop].default;
}
try {
return schema_1.parseItem(prop, val, schema);
}
catch (err) {
if (err.name !== schema_1.SchemaValidationError.name)
throw err;
throw new utils_1.UserError(`Error in configuration: expected type ${err.expectedType} ` +
`for property '${objKey}' but got '${val}' (type ${typeof val})`);
}
}
exports.getValIfSet = getValIfSet;
//# sourceMappingURL=get_val.js.map