@mountainpass/hooked-cli
Version:
A tool for runnable scripts
61 lines (60 loc) • 3.08 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import { fetchGlobalEnvVars, loadConfig } from '../config.js';
import defaults from '../defaults.js';
import { generateAbiScripts } from '../plugins/AbiPlugin.js';
import { generateMakefileScripts } from '../plugins/MakefilePlugin.js';
import { generateNpmScripts } from '../plugins/NpmPlugin.js';
import { Environment } from '../utils/Environment.js';
/**
* Loads the configuration from file, and initialises plugins.
* @param systemProcessEnvs
* @param options
* @returns
*/
const loadConfiguration = (systemProcessEnvs, options) => __awaiter(void 0, void 0, void 0, function* () {
var _a, _b, _c, _d;
// load imports...
const config = yield loadConfig(defaults.getDefaults().HOOKED_FILE, options.pull, options.validate);
// setup default plugins...
config.plugins = Object.assign({ abi: false, icons: true, npm: true, makefile: true }, ((_a = config.plugins) !== null && _a !== void 0 ? _a : {}));
// check for abi files
if ((_b = config.plugins) === null || _b === void 0 ? void 0 : _b.abi) {
config.scripts = Object.assign(Object.assign({}, (yield generateAbiScripts())), config.scripts);
}
// check for package.json (npm)
if ((_c = config.plugins) === null || _c === void 0 ? void 0 : _c.npm) {
config.scripts = Object.assign(Object.assign({}, generateNpmScripts(systemProcessEnvs)), config.scripts);
}
// check for Makefile
if ((_d = config.plugins) === null || _d === void 0 ? void 0 : _d.makefile) {
config.scripts = Object.assign(Object.assign({}, generateMakefileScripts(systemProcessEnvs)), config.scripts);
}
return config;
});
/**
* Initialises a new environment for a script invocation.
* @param systemProcessEnvs
* @param options
* @param config
* @returns
*/
const initialiseEnvironment = (systemProcessEnvs, options, config) => __awaiter(void 0, void 0, void 0, function* () {
const env = new Environment();
env.doNotResolveList = ['DOCKER_SCRIPT', 'NPM_SCRIPT', 'MAKE_SCRIPT'];
env.putAllGlobal(systemProcessEnvs);
env.putResolved('HOOKED_DIR', defaults.getDefaults().HOOKED_DIR);
env.putResolved('HOOKED_FILE', defaults.getDefaults().HOOKED_FILE);
// load default env...
const envVars = {};
yield fetchGlobalEnvVars(config, ['default'], options, envVars);
return { env, envVars };
});
export default { loadConfiguration, initialiseEnvironment };