@mountainpass/hooked-cli
Version:
A tool for runnable scripts
26 lines (25 loc) • 1.37 kB
JavaScript
/* eslint-disable no-template-curly-in-string */
import fs from 'fs';
import path from 'path';
import { resolveResolveScript } from '../scriptExecutors/ScriptExecutor.js';
import { Environment } from '../utils/Environment.js';
import defaults from '../defaults.js';
import logger from '../utils/logger.js';
export const generateMakefileScripts = (systemProcessEnvs) => {
// environment variables, that can be overridden by the user
const { MAKE_FILE: makefile = 'Makefile', MAKE_SCRIPT: makeScript = 'make -s -f ${MAKE_FILE} ${MAKE_COMMAND}' } = systemProcessEnvs;
if (fs.existsSync(makefile)) {
logger.debug('plugin: Loading Makefile...');
const scriptNames = fs.readFileSync(path.join(defaults.getDefaults().HOOKED_DIR, makefile), 'utf8').match(/^\w[^:]+/gm);
if (scriptNames !== null && Array.isArray(scriptNames) && scriptNames.length > 0) {
const makefileScripts = scriptNames.reduce((prev, curr) => {
const env = new Environment().putAllGlobal({ MAKE_FILE: makefile, MAKE_COMMAND: curr });
const cmd = resolveResolveScript('-', { $resolve: makeScript }, env, false);
prev[curr] = { _scriptPath: `makefile ${curr}`, $cmd: cmd };
return prev;
}, {});
return { '🔧 makefile': makefileScripts };
}
}
return {};
};