summaryrefslogtreecommitdiff
path: root/lib/gitlab/ci/variables/collection.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/ci/variables/collection.rb')
-rw-r--r--lib/gitlab/ci/variables/collection.rb20
1 files changed, 16 insertions, 4 deletions
diff --git a/lib/gitlab/ci/variables/collection.rb b/lib/gitlab/ci/variables/collection.rb
index e2a8af9c26b..ef9ba1b73c7 100644
--- a/lib/gitlab/ci/variables/collection.rb
+++ b/lib/gitlab/ci/variables/collection.rb
@@ -24,6 +24,10 @@ module Gitlab
self
end
+ def compact
+ Collection.new(select { |variable| !variable.value.nil? })
+ end
+
def concat(resources)
return self if resources.nil?
@@ -64,11 +68,19 @@ module Gitlab
end
def expand_value(value, keep_undefined: false)
- value.gsub(ExpandVariables::VARIABLES_REGEXP) do
+ value.gsub(Item::VARIABLES_REGEXP) do
match = Regexp.last_match
- result = @variables_by_key[match[1] || match[2]]&.value
- result ||= match[0] if keep_undefined
- result
+ if match[:key]
+ # we matched variable
+ if variable = @variables_by_key[match[:key]]
+ variable.value
+ elsif keep_undefined
+ match[0]
+ end
+ else
+ # we escape sequence
+ match[0]
+ end
end
end