Skip to content

Commit

Permalink
feat: show preset name when running task
Browse files Browse the repository at this point in the history
  • Loading branch information
ext committed Aug 16, 2021
1 parent 9dc02a6 commit 3971938
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 10 deletions.
8 changes: 6 additions & 2 deletions packages/mrm/bin/mrm.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ const { random } = require('middleearth-names');
const {
run,
getConfig,
getConfigFromFile,
getAllTasks,
resolveUsingNpx,
getPackageName,
Expand Down Expand Up @@ -64,16 +65,19 @@ async function main() {
const binaryName =
binaryPath && binaryPath.endsWith('/npx') ? 'npx mrm' : 'mrm';

// Load user configuration from default directories first (e.g. `~/.mrm/config.json`).
// This does not include configuration from cli arguments, presets or the local project.
const userConfig = await getConfigFromFile(defaultDirectories, 'config.json');

// Preset
const userConfig = await getConfig(defaultDirectories, 'config.json', argv);
const preset = argv.preset || userConfig.preset || 'default';
const isDefaultPreset = preset === 'default';
const directories = await resolveDirectories(defaultDirectories);
const options = await getConfig(directories, 'config.json', argv);
if (tasks.length === 0 || tasks[0] === 'help') {
commandHelp();
} else {
run(tasks, directories, options, argv).catch(err => {
run(tasks, directories, preset, options, argv).catch(err => {
if (err.constructor === MrmUnknownAlias) {
printError(err.message);
} else if (err.constructor === MrmUnknownTask) {
Expand Down
25 changes: 17 additions & 8 deletions packages/mrm/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -66,37 +66,39 @@ function promiseSeries(items, iterator) {
*
* @param {string|string[]} name
* @param {string[]} directories
* @param {string} preset
* @param {Object} options
* @param {Object} argv
* @returns {Promise}
*/
function run(name, directories, options, argv) {
function run(name, directories, preset, options, argv) {
if (Array.isArray(name)) {
return new Promise((resolve, reject) => {
promiseSeries(name, n => {
return run(n, directories, options, argv);
return run(n, directories, preset, options, argv);
})
.then(() => resolve())
.catch(reject);
});
}

if (getAllAliases(options)[name]) {
return runAlias(name, directories, options, argv);
return runAlias(name, directories, preset, options, argv);
}
return runTask(name, directories, options, argv);
return runTask(name, directories, preset, options, argv);
}

/**
* Run an alias.
*
* @param {string} aliasName
* @param {string[]} directories
* @param {string} preset
* @param {Object} options
* @param {Object} [argv]
* @returns {Promise}
*/
function runAlias(aliasName, directories, options, argv) {
function runAlias(aliasName, directories, preset, options, argv) {
return new Promise((resolve, reject) => {
const tasks = getAllAliases(options)[aliasName];
if (!tasks) {
Expand All @@ -107,7 +109,7 @@ function runAlias(aliasName, directories, options, argv) {
console.log(kleur.yellow(`Running alias ${aliasName}...`));

promiseSeries(tasks, name => {
return runTask(name, directories, options, argv);
return runTask(name, directories, preset, options, argv);
})
.then(() => resolve())
.catch(reject);
Expand All @@ -133,11 +135,12 @@ function getPackageName(type, packageName) {
*
* @param {string} taskName
* @param {string[]} directories
* @param {string} preset
* @param {Object} options
* @param {Object} [argv]
* @returns {Promise}
*/
async function runTask(taskName, directories, options, argv) {
async function runTask(taskName, directories, preset, options, argv) {
const taskPackageName = getPackageName('task', taskName);
let modulePath;
try {
Expand Down Expand Up @@ -169,7 +172,13 @@ async function runTask(taskName, directories, options, argv) {
return;
}

console.log(kleur.cyan(`Running ${taskName}...`));
if (preset === 'default') {
console.log(kleur.cyan(`Running ${taskName}...`));
} else {
console.log(
kleur.cyan(`Running ${taskName} (from preset "${preset}")...`)
);
}

Promise.resolve(getTaskOptions(module, argv.interactive, options))
.then(config => module(config, argv))
Expand Down

0 comments on commit 3971938

Please sign in to comment.