Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/push_options.rb')
-rw-r--r--lib/gitlab/push_options.rb70
1 files changed, 0 insertions, 70 deletions
diff --git a/lib/gitlab/push_options.rb b/lib/gitlab/push_options.rb
deleted file mode 100644
index 810aba436cc..00000000000
--- a/lib/gitlab/push_options.rb
+++ /dev/null
@@ -1,70 +0,0 @@
-# frozen_string_literal: true
-
-module Gitlab
- class PushOptions
- VALID_OPTIONS = HashWithIndifferentAccess.new({
- merge_request: {
- keys: [:create, :merge_when_pipeline_succeeds, :target]
- },
- ci: {
- keys: [:skip]
- }
- }).freeze
-
- NAMESPACE_ALIASES = HashWithIndifferentAccess.new({
- mr: :merge_request
- }).freeze
-
- OPTION_MATCHER = /(?<namespace>[^\.]+)\.(?<key>[^=]+)=?(?<value>.*)/
-
- attr_reader :options
-
- def initialize(options = [])
- @options = parse_options(options)
- end
-
- def get(*args)
- options.dig(*args)
- end
-
- # Allow #to_json serialization
- def as_json(*_args)
- options
- end
-
- private
-
- def parse_options(raw_options)
- options = HashWithIndifferentAccess.new
-
- Array.wrap(raw_options).each do |option|
- namespace, key, value = parse_option(option)
-
- next if [namespace, key].any?(&:nil?)
-
- options[namespace] ||= HashWithIndifferentAccess.new
- options[namespace][key] = value
- end
-
- options
- end
-
- def parse_option(option)
- parts = OPTION_MATCHER.match(option)
- return unless parts
-
- namespace, key, value = parts.values_at(:namespace, :key, :value).map(&:strip)
- namespace = NAMESPACE_ALIASES[namespace] if NAMESPACE_ALIASES[namespace]
- value = value.presence || true
-
- return unless valid_option?(namespace, key)
-
- [namespace, key, value]
- end
-
- def valid_option?(namespace, key)
- keys = VALID_OPTIONS.dig(namespace, :keys)
- keys && keys.include?(key.to_sym)
- end
- end
-end