cbf
Version:
A package for creating scripts to store and run your most commonly used CLI commands for a repo or just in general
57 lines (50 loc) • 1.72 kB
JavaScript
#!/usr/bin/env node
const { printMessage, formatMessage } = require('formatted-messages');
const globalMessages = require('../../../messages');
const Parser = require('../../../parser');
const {
ScriptTypes,
PATH_TO_PACKAGE_JSON,
PACKAGE_JSON_SCRIPTS_PROPERTY,
OperatingModes,
} = require('../../../constants');
const { GlobalConfig } = require('../../../config');
const { hasPackageJsonFile, safeExit } = require('../../../utility');
const { CurrentOperatingModes } = require('../../../operating-modes');
const { Argument, Operation } = require('../operation');
const messages = require('./messages');
/**
* Run the package.json operation
*
* @param {string[]} args - arguments passed to the save operation
*/
const run = args => {
const filterProperties = args[0] ? args[0] : '';
GlobalConfig.load();
const npmAlias = GlobalConfig.getNPMAlias();
CurrentOperatingModes.add(OperatingModes.RUNNING_PACKAGE_JSON);
if (!hasPackageJsonFile()) {
printMessage(formatMessage(messages.noPackageJsonFile));
safeExit();
} else {
const script = Parser.getScriptFromJsonFile({
fileName: PATH_TO_PACKAGE_JSON,
scriptType: ScriptTypes.SIMPLE,
scriptStartingKey: PACKAGE_JSON_SCRIPTS_PROPERTY,
filterProperties: filterProperties.split(','),
npmAlias,
});
printMessage(formatMessage(globalMessages.runningScriptsFromPackageJson));
script.run();
}
};
const argument = new Argument({ name: 'comma separated props', required: false });
const operation = {
name: 'json',
flag: 'j',
description: 'run scripts in a package.json file',
args: [argument],
whitelist: ['documented', 'dry-run'],
run,
};
module.exports = new Operation(operation);