phenomic
Version:
Modern website generator based on the React and Webpack ecosystem.
96 lines (67 loc) • 3.33 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
exports.default = config;
exports.testConfig = testConfig;
var _path = require("path");
var _chalk = require("chalk");
var _chalk2 = _interopRequireDefault(_chalk);
var _yargs = require("./yargs.js");
var _yargs2 = _interopRequireDefault(_yargs);
var _definitions = require("./definitions.js");
var _definitions2 = _interopRequireDefault(_definitions);
var _minimalValidator = require("./minimal-validator.js");
var _minimalValidator2 = _interopRequireDefault(_minimalValidator);
var _validators = require("./validators.js");
var validators = _interopRequireWildcard(_validators);
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
// eslint-disable-next-line import/no-namespace
function config() {
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
_ref$argv = _ref.argv,
argv = _ref$argv === undefined ? [] : _ref$argv,
_ref$pkg = _ref.pkg,
pkg = _ref$pkg === undefined ? {} : _ref$pkg;
var userJSConfig = pkg.phenomic || {};
_yargs2.default.strict();
var defaultAndCLIconfig = _yargs2.default.parse(argv);
// delete unwanted yargs parameters
delete defaultAndCLIconfig.$0;
delete defaultAndCLIconfig._;
delete defaultAndCLIconfig.help;
delete defaultAndCLIconfig.version;
// validate user parameters
var errors = [].concat(_toConsumableArray((0, _minimalValidator2.default)(userJSConfig, _definitions2.default)));
var config = _extends({}, defaultAndCLIconfig, userJSConfig, process.env.TESTING && userJSConfig.cwd === undefined && {
cwd: (0, _path.join)(__dirname, "__tests__")
});
// validation/adjustement for each options
Object.keys(validators).forEach(function (key) {
// eslint-disable-next-line import/namespace
validators[key]({
pkg: pkg,
config: config,
definitions: _definitions2.default,
errors: errors
});
});
if (errors.length > 0) {
var errorMessage = "\n⚠️ " + "phenomic: " + _chalk2.default.yellow("your config is invalid. Please fix the errors:") + "\n\n" + _chalk2.default.red("- " + errors.join("\n- ")) + "\n\n" + _chalk2.default.yellow("See 'Configuration' section in documentation.") + " " + "https://phenomic.io/docs/usage/configuration/";
if (process.env.TESTING) {
throw new Error(errorMessage);
}
// else
console.error(errorMessage);
process.exit(1);
}
return config;
}
function testConfig(cfg) {
return config({
pkg: { phenomic: cfg }
});
}