diff options
Diffstat (limited to 'lib/gitlab/ci/config/entry/legacy_validation_helpers.rb')
-rw-r--r-- | lib/gitlab/ci/config/entry/legacy_validation_helpers.rb | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/lib/gitlab/ci/config/entry/legacy_validation_helpers.rb b/lib/gitlab/ci/config/entry/legacy_validation_helpers.rb new file mode 100644 index 00000000000..f01975aab5c --- /dev/null +++ b/lib/gitlab/ci/config/entry/legacy_validation_helpers.rb @@ -0,0 +1,51 @@ +module Gitlab + module Ci + class Config + module Entry + module LegacyValidationHelpers + private + + def validate_duration(value) + value.is_a?(String) && ChronicDuration.parse(value) + rescue ChronicDuration::DurationParseError + false + end + + def validate_array_of_strings(values) + values.is_a?(Array) && values.all? { |value| validate_string(value) } + end + + def validate_array_of_strings_or_regexps(values) + values.is_a?(Array) && values.all? { |value| validate_string_or_regexp(value) } + end + + def validate_variables(variables) + variables.is_a?(Hash) && + variables.all? { |key, value| validate_string(key) && validate_string(value) } + end + + def validate_string(value) + value.is_a?(String) || value.is_a?(Symbol) + end + + def validate_string_or_regexp(value) + return true if value.is_a?(Symbol) + return false unless value.is_a?(String) + + if value.first == '/' && value.last == '/' + Regexp.new(value[1...-1]) + else + true + end + rescue RegexpError + false + end + + def validate_boolean(value) + value.in?([true, false]) + end + end + end + end + end +end |