declapract
Version:
A tool to declaratively define best practices, maintainable evolve them, and scalably enforce them.
42 lines • 2.06 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.apply = void 0;
const domain_1 = require("../../domain");
const applyPlans_1 = require("../usage/plan/apply/applyPlans");
const filterPracticeEvaluationsFromPlans_1 = require("../usage/plan/filterPracticeEvaluationsFromPlans");
const getPlansForProject_1 = require("../usage/plan/getPlansForProject");
const readUsePracticesConfig_1 = require("../usage/readUsePracticesConfig");
const getScopedPractices_1 = require("./getScopedPractices");
const apply = async ({ usePracticesConfigPath, filter, }) => {
// read the usage config
console.log('🔎 reading configs and declarations...'); // tslint:disable-line: no-console
const config = await (0, readUsePracticesConfig_1.readUsePracticesConfig)({
configPath: usePracticesConfigPath,
});
// grab the desired practices
const practices = (0, getScopedPractices_1.getDesiredPractices)({ config, filter });
// get plans for this project
console.log('🔬️ evaluating project...'); // tslint:disable-line: no-console
const plans = await (0, getPlansForProject_1.getPlansForProject)({
practices,
projectRootDirectory: config.rootDir,
projectVariables: config.variables,
});
// filter out the practices to the ones that can be automatically applied + for the practices specified
const plansToApply = (await (0, filterPracticeEvaluationsFromPlans_1.filterPracticeEvaluationsFromPlans)({
plans,
filter: {
byFixable: true,
byPracticeNames: filter?.practiceNames ?? undefined,
byFilePaths: filter?.filePaths ?? undefined,
},
})).filter((plan) => plan.action === domain_1.RequiredAction.FIX_AUTOMATIC);
// display the plans
console.log('🔧 applying fixes...'); // tslint:disable-line: no-console
await (0, applyPlans_1.applyPlans)({
plans: plansToApply,
projectRootDirectory: config.rootDir,
});
};
exports.apply = apply;
//# sourceMappingURL=apply.js.map