11import "./global.js" ;
22import { RE2JS } from "re2js" ;
33import chalk from "chalk-template" ;
4- import { Job , JobRule } from "./job.js" ;
4+ import { Job , JobRule , Need } from "./job.js" ;
5+ import { needsComplex } from "./data-expander.js" ;
56import fs from "fs-extra" ;
67import checksum from "checksum" ;
78import base64url from "base64url" ;
@@ -188,13 +189,14 @@ export class Utils {
188189 return envMatchedVariables ;
189190 }
190191
191- static getRulesResult ( opt : RuleResultOpt , gitData : GitData , jobWhen : string = "on_success" , jobAllowFailure : boolean | { exit_codes : number | number [ ] } = false ) : { when : string ; allowFailure : boolean | { exit_codes : number | number [ ] } ; variables ?: { [ name : string ] : string } } {
192+ static getRulesResult ( opt : RuleResultOpt , gitData : GitData , jobWhen : string = "on_success" , jobAllowFailure : boolean | { exit_codes : number | number [ ] } = false ) : { when : string ; allowFailure : boolean | { exit_codes : number | number [ ] } ; variables ?: { [ name : string ] : string } ; needs ?: Need [ ] } {
192193 let when = "never" ;
193194 const { evaluateRuleChanges} = opt . argv ;
194195
195196 // optional manual jobs allowFailure defaults to true https://docs.gitlab.com/ee/ci/jobs/job_control.html#types-of-manual-jobs
196197 let allowFailure = jobWhen === "manual" ? true : jobAllowFailure ;
197198 let ruleVariable : { [ name : string ] : string } | undefined ;
199+ let ruleNeeds : Need [ ] | undefined ;
198200
199201 for ( const rule of opt . rules ) {
200202 if ( ! Utils . evaluateRuleIf ( rule . if , opt . variables ) ) continue ;
@@ -204,11 +206,12 @@ export class Utils {
204206 when = rule . when ? rule . when : jobWhen ;
205207 allowFailure = rule . allow_failure ?? allowFailure ;
206208 ruleVariable = rule . variables ;
209+ ruleNeeds = rule . needs ?. map ( ( n : any ) => needsComplex ( n ) ) ;
207210
208211 break ; // Early return, will not evaluate the remaining rules
209212 }
210213
211- return { when, allowFailure, variables : ruleVariable } ;
214+ return { when, allowFailure, variables : ruleVariable , needs : ruleNeeds } ;
212215 }
213216
214217 static evaluateRuleIf ( ruleIf : string | undefined , envs : { [ key : string ] : string } ) : boolean {
0 commit comments