diff options
author | Matija Čupić <matteeyah@gmail.com> | 2019-02-26 14:03:42 +0000 |
---|---|---|
committer | Kamil Trzciński <ayufan@ayufan.eu> | 2019-02-26 14:03:42 +0000 |
commit | c9125c4786970fc3c3745c7ea7bff45ef7a62e7d (patch) | |
tree | 38bd564113590665646b974dcbdf91f51b3a4b88 /app/models/concerns | |
parent | c1d8f8a41042ac7abb2916206e8a411e82af442e (diff) | |
download | gitlab-ce-c9125c4786970fc3c3745c7ea7bff45ef7a62e7d.tar.gz |
Add Maskable concern for CI variables
This adds a concern that abstracts the concept of masking a variable,
including the RegEx for validation.
Diffstat (limited to 'app/models/concerns')
-rw-r--r-- | app/models/concerns/has_variable.rb | 6 | ||||
-rw-r--r-- | app/models/concerns/maskable.rb | 22 |
2 files changed, 25 insertions, 3 deletions
diff --git a/app/models/concerns/has_variable.rb b/app/models/concerns/has_variable.rb index dfbe413a878..2ec42a1029b 100644 --- a/app/models/concerns/has_variable.rb +++ b/app/models/concerns/has_variable.rb @@ -21,9 +21,9 @@ module HasVariable def key=(new_key) super(new_key.to_s.strip) end + end - def to_runner_variable - { key: key, value: value, public: false } - end + def to_runner_variable + { key: key, value: value, public: false } end end diff --git a/app/models/concerns/maskable.rb b/app/models/concerns/maskable.rb new file mode 100644 index 00000000000..8793f0ec965 --- /dev/null +++ b/app/models/concerns/maskable.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +module Maskable + extend ActiveSupport::Concern + + # * Single line + # * No escape characters + # * No variables + # * No spaces + # * Minimal length of 8 characters + # * Absolutely no fun is allowed + REGEX = /\A\w{8,}\z/ + + included do + validates :masked, inclusion: { in: [true, false] } + validates :value, format: { with: REGEX }, if: :masked? + end + + def to_runner_variable + super.merge(masked: masked?) + end +end |