baset-cli
Version:
CLI for BaseT project.
78 lines • 3.34 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const path_1 = __importDefault(require("path"));
function groupPlugins(plugins) {
const firstModule = plugins.slice(0, 1)[0];
const environment = resolveModule((firstModule.includes('-env-') && firstModule) || undefined);
const firstImportIndex = Number(!!environment);
const firstReaderIndex = plugins.findIndex(plugin => plugin.includes('-reader-'));
const firstResolverIndex = plugins.findIndex(plugin => plugin.includes('-resolver-'));
const imports = plugins.slice(firstImportIndex, firstReaderIndex).map(resolveModule);
const readers = plugins.slice(firstReaderIndex, firstResolverIndex).map(resolveModule);
const resolvers = plugins.slice(firstResolverIndex, -1).map(resolveModule);
const baseliner = resolveModule(plugins.slice(-1)[0]);
return {
baseliner,
environment,
readers,
resolvers,
imports,
isolateContext: false,
mocks: {},
};
}
function getDefaultPlugins(plugins) {
const { baseliner, environment, readers = [], resolvers = [], imports = [], mocks = {}, isolateContext = false, } = plugins;
return {
baseliner: resolveModule(baseliner),
environment: resolveModule(environment),
readers: (Array.isArray(readers)
? readers
: [readers]).map(resolveModule),
resolvers: (Array.isArray(resolvers)
? resolvers
: [resolvers]).map(resolveModule),
imports: (Array.isArray(imports)
? imports
: [imports]).map(resolveModule),
mocks: Object.keys(mocks).reduce((result, mockName) => (Object.assign({}, result, { [mockName]: path_1.default.resolve(resolveModule(mocks[mockName])) })), {}),
isolateContext,
};
}
function resolveModule(name) {
return (name && !name.startsWith('.') && !name.startsWith('/'))
? `./node_modules/${name}`
: name;
}
exports.options = {
plugins: {
alias: 'p',
describe: 'Plugins used for your tests',
default: { '.spec.js$': 'baset-baseliner-json' },
coerce: (plugins) => (Array.isArray(plugins))
// if plugins is Array, then we get this arg from cli
? plugins.reduce((result, plugin) => (Object.assign({}, result, {
// regexp for spec // array of plugins
[plugin.split(':')[0]]: groupPlugins(plugin.split(':').slice(1)) })), {})
// if not, then it defined in config
: Object.keys(plugins).reduce(
// we have to ensure that all values are in correct format
(result, key) => {
const plugin = plugins[key];
return Object.assign({}, result, { [key]: (Array.isArray(plugin))
? groupPlugins(plugin)
: (typeof plugin === 'string')
? groupPlugins([plugin])
: getDefaultPlugins(plugin) });
}, {}),
},
options: {
alias: 'o',
describe: 'Options for plugins',
default: {},
},
};
//# sourceMappingURL=index.js.map