@diullei/codeguardian
Version:
Open-source developer tool to validate and enforce architectural rules, especially for AI-generated code
43 lines • 1.78 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SelectFileChangesRule = void 0;
const core_1 = require("../core");
class SelectFileChangesRule extends core_1.SelectorRule {
minPercentage;
maxPercentage;
constructor(id, minPercentage, maxPercentage) {
super(id);
this.minPercentage = minPercentage;
this.maxPercentage = maxPercentage;
}
async select(context) {
const allFiles = await context.repository.getFiles(context.diff, context.mode);
const relevantFiles = allFiles.filter(file => file.status === 'modified' || file.status === 'added');
const selectedFiles = [];
for (const file of relevantFiles) {
let totalLines = 0;
try {
const content = await context.repository.getFileContent(file.path);
totalLines = content.split('\n').length;
}
catch (error) {
continue;
}
let changePercentage = 0;
if (totalLines > 0) {
changePercentage = ((file.insertions + file.deletions) / totalLines) * 100;
}
else if (file.insertions > 0 || file.deletions > 0) {
changePercentage = 100;
}
const meetsMinCriteria = this.minPercentage === undefined || changePercentage >= this.minPercentage;
const meetsMaxCriteria = this.maxPercentage === undefined || changePercentage <= this.maxPercentage;
if (meetsMinCriteria && meetsMaxCriteria) {
selectedFiles.push(file);
}
}
return selectedFiles;
}
}
exports.SelectFileChangesRule = SelectFileChangesRule;
//# sourceMappingURL=SelectFileChangesRule.js.map