diff options
| author | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2018-02-23 10:41:10 +0100 |
|---|---|---|
| committer | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2018-02-23 10:41:10 +0100 |
| commit | 227e18ea43eed473e30f9e4ae6e1b150e600f903 (patch) | |
| tree | eae0dac34e485ea3a80a0bbf6db19e9ab6fabae1 /lib | |
| parent | 8c7374cafcfe77f880d45f32ff11b38d257f5373 (diff) | |
| download | gitlab-ce-227e18ea43eed473e30f9e4ae6e1b150e600f903.tar.gz | |
Add support for evaluating pipeline expression variables
Diffstat (limited to 'lib')
6 files changed, 12 insertions, 6 deletions
diff --git a/lib/gitlab/ci/pipeline/expression/lexeme/equals.rb b/lib/gitlab/ci/pipeline/expression/lexeme/equals.rb index b499d41a509..18e4db49eee 100644 --- a/lib/gitlab/ci/pipeline/expression/lexeme/equals.rb +++ b/lib/gitlab/ci/pipeline/expression/lexeme/equals.rb @@ -11,7 +11,7 @@ module Gitlab @right = right end - def evaluate(**variables) + def evaluate(variables) @left.evaluate(variables) == @right.evaluate(variables) end diff --git a/lib/gitlab/ci/pipeline/expression/lexeme/null.rb b/lib/gitlab/ci/pipeline/expression/lexeme/null.rb index 5bf06a9eee2..b62e72cde2a 100644 --- a/lib/gitlab/ci/pipeline/expression/lexeme/null.rb +++ b/lib/gitlab/ci/pipeline/expression/lexeme/null.rb @@ -10,9 +10,13 @@ module Gitlab @value = value end - def evaluate(**_) + def evaluate(_) nil end + + def self.build(value) + new(value) + end end end end diff --git a/lib/gitlab/ci/pipeline/expression/lexeme/string.rb b/lib/gitlab/ci/pipeline/expression/lexeme/string.rb index 6f77d443c3c..d655b029315 100644 --- a/lib/gitlab/ci/pipeline/expression/lexeme/string.rb +++ b/lib/gitlab/ci/pipeline/expression/lexeme/string.rb @@ -10,7 +10,7 @@ module Gitlab @value = value end - def evaluate(**_) + def evaluate(_) @value.to_s end diff --git a/lib/gitlab/ci/pipeline/expression/lexeme/variable.rb b/lib/gitlab/ci/pipeline/expression/lexeme/variable.rb index 01eea6b19a6..ccf1fdfae2c 100644 --- a/lib/gitlab/ci/pipeline/expression/lexeme/variable.rb +++ b/lib/gitlab/ci/pipeline/expression/lexeme/variable.rb @@ -10,7 +10,8 @@ module Gitlab @name = name end - def evaluate(**variables) + def evaluate(variables) + variables[@name] end def self.build(string) diff --git a/lib/gitlab/ci/pipeline/expression/lexer.rb b/lib/gitlab/ci/pipeline/expression/lexer.rb index a0d1d7cd87d..067ad5fd312 100644 --- a/lib/gitlab/ci/pipeline/expression/lexer.rb +++ b/lib/gitlab/ci/pipeline/expression/lexer.rb @@ -6,6 +6,7 @@ module Gitlab LEXEMES = [ Expression::Lexeme::Variable, Expression::Lexeme::String, + Expression::Lexeme::Null, Expression::Lexeme::Equals ].freeze diff --git a/lib/gitlab/ci/pipeline/expression/statement.rb b/lib/gitlab/ci/pipeline/expression/statement.rb index cb76bc00764..4f0e101b730 100644 --- a/lib/gitlab/ci/pipeline/expression/statement.rb +++ b/lib/gitlab/ci/pipeline/expression/statement.rb @@ -18,7 +18,7 @@ module Gitlab @lexer = Expression::Lexer.new(statement) @variables = pipeline.variables.map do |variable| - { variable.key => variable.value } + [variable.key, variable.value] end end @@ -33,7 +33,7 @@ module Gitlab end def evaluate - parse_tree.evaluate(**@variables) + parse_tree.evaluate(@variables.to_h) end end end |
