(opt: JobOptions)
| 139 | private readonly writeStreams: WriteStreams; |
| 140 | |
| 141 | constructor (opt: JobOptions) { |
| 142 | const jobData = opt.data; |
| 143 | const jobVariables = jobData.variables ?? {}; |
| 144 | const variablesFromFiles = opt.variablesFromFiles; |
| 145 | const argv = opt.argv; |
| 146 | const cwd = argv.cwd; |
| 147 | const argvVariables = argv.variable; |
| 148 | const expandVariables = opt.expandVariables ?? true; |
| 149 | |
| 150 | this.argv = argv; |
| 151 | this.writeStreams = opt.writeStreams; |
| 152 | this.gitData = opt.gitData; |
| 153 | this.name = opt.name; |
| 154 | this.baseName = opt.baseName; |
| 155 | this.matrixVariables = opt.matrixVariables; |
| 156 | this.jobId = this.generateJobId(); |
| 157 | this.jobData = opt.data; |
| 158 | this.pipelineIid = opt.pipelineIid; |
| 159 | this._globalVariables = opt.globalVariables; |
| 160 | |
| 161 | this.inherit = {}; |
| 162 | this.inherit.variables = this.jobData.inherit?.variables ?? true; |
| 163 | |
| 164 | this.when = jobData.when || "on_success"; |
| 165 | this.exists = jobData.exists || []; |
| 166 | this.allowFailure = jobData.allow_failure ?? false; |
| 167 | this.dependencies = jobData.dependencies || null; |
| 168 | this.rules = jobData.rules || null; |
| 169 | if (typeof jobData.environment === "string") { |
| 170 | this.environment = {name: jobData.environment, url: null, deployment_tier: null, action: null}; |
| 171 | } else if (jobData.environment) { |
| 172 | this.environment = {...jobData.environment}; |
| 173 | } else { |
| 174 | this.environment = jobData.environment; |
| 175 | } |
| 176 | |
| 177 | const matrixVariables = opt.matrixVariables ?? {}; |
| 178 | const fileVariables = Utils.findEnvMatchedVariables(variablesFromFiles, this.fileVariablesDir); |
| 179 | const predefinedVariables = this._predefinedVariables(opt); |
| 180 | this._variables = {...predefinedVariables, ...this.globalVariables, ...jobVariables, ...matrixVariables, ...fileVariables, ...argvVariables}; |
| 181 | |
| 182 | if (this.rules && expandVariables) { |
| 183 | const expanded = Utils.expandVariables(this._variables); |
| 184 | |
| 185 | // Expand variables in rules:changes |
| 186 | this.rules.forEach((rule, ruleIdx, rules) => { |
| 187 | const changes = Array.isArray(rule.changes) ? rule.changes : rule.changes?.paths; |
| 188 | if (!changes) { |
| 189 | return; |
| 190 | } |
| 191 | |
| 192 | changes.forEach((change, changeIdx, changes) => { |
| 193 | changes[changeIdx] = Utils.expandText(change, expanded); |
| 194 | }); |
| 195 | rules[ruleIdx].changes = changes; |
| 196 | }); |
| 197 | |
| 198 | // Expand variables in rules:exists |
nothing calls this directly
no test coverage detected