gitlab-bta
Version:
Inspired from the GitLab Triage Bot, this bot only use the GitLab API (BTA for Bot Triage Api). So there is some functionnality more difficult to do but other more simple.
40 lines (32 loc) • 1.45 kB
JavaScript
const commandArgs = require("./src/arguments").args;
const gitlabAPI = require("./src/api.js");
const resources = require("./src/rules/resources.js");
const filters = require("./src/rules/filters.js");
const actions = require("./src/rules/actions.js");
// Load policies
const policies = require(commandArgs["policies-file"]);
const ruleProcess = function (resourceType, rule) {
console.info(`\tProcessing rule : "${rule.name}"`);
let ressourcesData = rule.additionnal_infos ? resources.getComplete(resourceType, rule.conditions) : resources.get(resourceType, rule.conditions);
ressourcesData.then(function (ressourceData) {
let resourcesFiltered = filters.apply(ressourceData, rule.filters);
resourcesFiltered.forEach(function (mergeRequest) {
actions.execute(resourceType, mergeRequest, rule.actions, commandArgs["dry-run"]);
});
}).catch(function (error) {
console.error(`\x1b[41mError while processing rule ${rule.name}: ${error}\x1b[0m`);
process.exitCode = 1;
});
};
gitlabAPI.init(commandArgs);
// ForEach MR
console.info("Processing rules for merge_requests");
policies.resource_rules.merge_requests.rules.forEach(function (rule) {
ruleProcess("merge_requests", rule);
});
// ForEach Issue
console.info("Processing rules for issues");
policies.resource_rules.issues.rules.forEach(function (rule) {
ruleProcess("issues", rule);
});