MCPcopy
hub / github.com/firecow/gitlab-ci-local / getRulesResult

Method getRulesResult

src/utils.ts:204–227  ·  view source on GitHub ↗
(opt: RuleResultOpt, gitData: GitData, jobWhen: string = "on_success", jobAllowFailure: boolean | {exit_codes: number | number[]} | undefined = undefined)

Source from the content-addressed store, hash-verified

202 }
203
204 static getRulesResult (opt: RuleResultOpt, gitData: GitData, jobWhen: string = "on_success", jobAllowFailure: boolean | {exit_codes: number | number[]} | undefined = undefined): {when: string; allowFailure: boolean | {exit_codes: number | number[]}; variables?: {[name: string]: string}; needs?: Need[]} {
205 let when = "never";
206 const {evaluateRuleChanges} = opt.argv;
207
208 // optional manual jobs allowFailure defaults to true https://docs.gitlab.com/ee/ci/jobs/job_control.html#types-of-manual-jobs
209 let allowFailure: boolean | {exit_codes: number | number[]} = jobAllowFailure ?? jobWhen === "manual";
210 let ruleVariable: {[name: string]: string} | undefined;
211 let ruleNeeds: Need[] | undefined;
212
213 for (const rule of opt.rules) {
214 if (!Utils.evaluateRuleIf(rule.if, opt.variables)) continue;
215 if (!Utils.evaluateRuleExist(opt.cwd, rule.exists)) continue;
216 if (evaluateRuleChanges && !Utils.evaluateRuleChanges(gitData.branches.default, rule.changes, opt.cwd)) continue;
217
218 when = rule.when ? rule.when : jobWhen;
219 allowFailure = rule.allow_failure ?? allowFailure;
220 ruleVariable = rule.variables;
221 ruleNeeds = rule.needs?.map((n: any) => needsComplex(n));
222
223 break; // Early return, will not evaluate the remaining rules
224 }
225
226 return {when, allowFailure, variables: ruleVariable, needs: ruleNeeds};
227 }
228
229 static evaluateRuleIf (ruleIf: string | undefined, envs: {[key: string]: string}): boolean {
230 if (ruleIf === undefined) return true;

Callers 6

constructorMethod · 0.80
initMethod · 0.80
initMethod · 0.80
rules.test.tsFile · 0.80

Calls 4

needsComplexFunction · 0.85
evaluateRuleIfMethod · 0.80
evaluateRuleExistMethod · 0.80
evaluateRuleChangesMethod · 0.45

Tested by

no test coverage detected