debian-mirror-gitlab/lib/gitlab/ci/config/external/mapper/variables_expander.rb
2023-03-04 22:38:38 +05:30

49 lines
1.2 KiB
Ruby

# frozen_string_literal: true
module Gitlab
module Ci
class Config
module External
class Mapper
# Handles variable expansion
class VariablesExpander < Base
def expand(data)
if data.is_a?(String)
expand_variable(data)
else
transform_and_expand_variable(data)
end
end
private
def process_without_instrumentation(locations)
locations.map { |location| expand(location) }
end
def transform_and_expand_variable(data)
data.transform_values do |values|
case values
when Array
values.map { |value| expand_variable(value.to_s) }
when String
expand_variable(values)
else
values
end
end
end
def expand_variable(data)
ExpandVariables.expand(data, -> { variables })
end
def variables
@variables ||= context.variables_hash
end
end
end
end
end
end
end