summaryrefslogtreecommitdiff
path: root/lib/gitlab/config
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzesiek.bizon@gmail.com>2019-01-14 17:27:13 +0100
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2019-01-15 11:18:14 +0100
commit7b712d359880cb15bad4c0f01308bf12b1518e60 (patch)
treebdeac924e9cb9bcc51daa0a52ed7274465f5148d /lib/gitlab/config
parent0cba9bef8a399e8f2003fee23fbda6f525921175 (diff)
downloadgitlab-ce-7b712d359880cb15bad4c0f01308bf12b1518e60.tar.gz
Make default config entry value configurable
Introduce `default:` configuration entry setting that makes it possible to configure a default value of an entry, what overrides class-level `def self.default` value.
Diffstat (limited to 'lib/gitlab/config')
-rw-r--r--lib/gitlab/config/entry/configurable.rb1
-rw-r--r--lib/gitlab/config/entry/factory.rb23
-rw-r--r--lib/gitlab/config/entry/node.rb2
-rw-r--r--lib/gitlab/config/entry/simplifiable.rb2
4 files changed, 14 insertions, 14 deletions
diff --git a/lib/gitlab/config/entry/configurable.rb b/lib/gitlab/config/entry/configurable.rb
index afdb60b2cd5..37ba16dba25 100644
--- a/lib/gitlab/config/entry/configurable.rb
+++ b/lib/gitlab/config/entry/configurable.rb
@@ -56,6 +56,7 @@ module Gitlab
def entry(key, entry, metadata)
factory = ::Gitlab::Config::Entry::Factory.new(entry)
.with(description: metadata[:description])
+ .with(default: metadata[:default])
(@nodes ||= {}).merge!(key.to_sym => factory)
end
diff --git a/lib/gitlab/config/entry/factory.rb b/lib/gitlab/config/entry/factory.rb
index 089a20dd324..79f9ff32514 100644
--- a/lib/gitlab/config/entry/factory.rb
+++ b/lib/gitlab/config/entry/factory.rb
@@ -12,7 +12,7 @@ module Gitlab
def initialize(entry)
@entry = entry
@metadata = {}
- @attributes = {}
+ @attributes = { default: entry.default }
end
def value(value)
@@ -21,12 +21,12 @@ module Gitlab
end
def metadata(metadata)
- @metadata.merge!(metadata)
+ @metadata.merge!(metadata.compact)
self
end
def with(attributes)
- @attributes.merge!(attributes)
+ @attributes.merge!(attributes.compact)
self
end
@@ -38,9 +38,7 @@ module Gitlab
# See issue #18775.
#
if @value.nil?
- Entry::Unspecified.new(
- fabricate_unspecified
- )
+ Entry::Unspecified.new(fabricate_unspecified)
else
fabricate(@entry, @value)
end
@@ -53,12 +51,12 @@ module Gitlab
# If entry has a default value we fabricate concrete node
# with default value.
#
- @entry.default(@attributes).yield_self do |default|
- if default.nil?
- fabricate(Entry::Undefined)
- else
- fabricate(@entry, default)
- end
+ default = @attributes.fetch(:default)
+
+ if default.nil?
+ fabricate(Entry::Undefined)
+ else
+ fabricate(@entry, default)
end
end
@@ -66,6 +64,7 @@ module Gitlab
entry.new(value, @metadata).tap do |node|
node.key = @attributes[:key]
node.parent = @attributes[:parent]
+ node.default = @attributes[:default]
node.description = @attributes[:description]
end
end
diff --git a/lib/gitlab/config/entry/node.rb b/lib/gitlab/config/entry/node.rb
index fe05158a73c..9999ab4ff95 100644
--- a/lib/gitlab/config/entry/node.rb
+++ b/lib/gitlab/config/entry/node.rb
@@ -10,7 +10,7 @@ module Gitlab
InvalidError = Class.new(StandardError)
attr_reader :config, :metadata
- attr_accessor :key, :parent, :description
+ attr_accessor :key, :parent, :default, :description
def initialize(config, **metadata)
@config = config
diff --git a/lib/gitlab/config/entry/simplifiable.rb b/lib/gitlab/config/entry/simplifiable.rb
index 213a7c35f4b..22a0b448230 100644
--- a/lib/gitlab/config/entry/simplifiable.rb
+++ b/lib/gitlab/config/entry/simplifiable.rb
@@ -38,7 +38,7 @@ module Gitlab
end
end
- def self.default(**)
+ def self.default
end
end
end