summaryrefslogtreecommitdiff
path: root/lib/gitlab
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzesiek.bizon@gmail.com>2018-10-16 15:09:36 +0200
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2018-10-16 15:11:50 +0200
commit5f502c3a82827ebd76e9585e5caa015753016c6a (patch)
treee5c40ffa8b4c3c3b7c5b50712cde642a93ac6483 /lib/gitlab
parent7acc6340c1e8191f1df0cbc50f4cc4f2291e698b (diff)
downloadgitlab-ce-5f502c3a82827ebd76e9585e5caa015753016c6a.tar.gz
Move external CI config class into proper namespace
Diffstat (limited to 'lib/gitlab')
-rw-r--r--lib/gitlab/ci/config.rb4
-rw-r--r--lib/gitlab/ci/config/external/file/base.rb32
-rw-r--r--lib/gitlab/ci/config/external/file/local.rb38
-rw-r--r--lib/gitlab/ci/config/external/file/remote.rb32
-rw-r--r--lib/gitlab/ci/config/external/mapper.rb37
-rw-r--r--lib/gitlab/ci/config/external/processor.rb68
6 files changed, 110 insertions, 101 deletions
diff --git a/lib/gitlab/ci/config.rb b/lib/gitlab/ci/config.rb
index fe98d25af29..7b3c5c12c61 100644
--- a/lib/gitlab/ci/config.rb
+++ b/lib/gitlab/ci/config.rb
@@ -15,7 +15,7 @@ module Gitlab
@global.compose!
rescue Loader::FormatError, Extendable::ExtensionError => e
raise Config::ConfigError, e.message
- rescue ::Gitlab::Ci::External::Processor::FileError => e
+ rescue External::Processor::FileError => e
raise ::Gitlab::Ci::YamlProcessor::ValidationError, e.message
end
@@ -81,7 +81,7 @@ module Gitlab
def process_external_files(config, project, opts)
sha = opts.fetch(:sha) { project.repository.root_ref_sha }
- ::Gitlab::Ci::External::Processor.new(config, project, sha).perform
+ Config::External::Processor.new(config, project, sha).perform
end
end
end
diff --git a/lib/gitlab/ci/config/external/file/base.rb b/lib/gitlab/ci/config/external/file/base.rb
index f4da07b0b02..dc96c97b129 100644
--- a/lib/gitlab/ci/config/external/file/base.rb
+++ b/lib/gitlab/ci/config/external/file/base.rb
@@ -2,25 +2,27 @@
module Gitlab
module Ci
- module External
- module File
- class Base
- YAML_WHITELIST_EXTENSION = /(yml|yaml)$/i.freeze
+ class Config
+ module External
+ module File
+ class Base
+ YAML_WHITELIST_EXTENSION = /(yml|yaml)$/i.freeze
- def initialize(location, opts = {})
- @location = location
- end
+ def initialize(location, opts = {})
+ @location = location
+ end
- def valid?
- location.match(YAML_WHITELIST_EXTENSION) && content
- end
+ def valid?
+ location.match(YAML_WHITELIST_EXTENSION) && content
+ end
- def content
- raise NotImplementedError, 'content must be implemented and return a string or nil'
- end
+ def content
+ raise NotImplementedError, 'content must be implemented and return a string or nil'
+ end
- def error_message
- raise NotImplementedError, 'error_message must be implemented and return a string'
+ def error_message
+ raise NotImplementedError, 'error_message must be implemented and return a string'
+ end
end
end
end
diff --git a/lib/gitlab/ci/config/external/file/local.rb b/lib/gitlab/ci/config/external/file/local.rb
index 1aa7f687507..8c0ffd36449 100644
--- a/lib/gitlab/ci/config/external/file/local.rb
+++ b/lib/gitlab/ci/config/external/file/local.rb
@@ -2,30 +2,32 @@
module Gitlab
module Ci
- module External
- module File
- class Local < Base
- attr_reader :location, :project, :sha
+ class Config
+ module External
+ module File
+ class Local < Base
+ attr_reader :location, :project, :sha
- def initialize(location, opts = {})
- super
+ def initialize(location, opts = {})
+ super
- @project = opts.fetch(:project)
- @sha = opts.fetch(:sha)
- end
+ @project = opts.fetch(:project)
+ @sha = opts.fetch(:sha)
+ end
- def content
- @content ||= fetch_local_content
- end
+ def content
+ @content ||= fetch_local_content
+ end
- def error_message
- "Local file '#{location}' is not valid."
- end
+ def error_message
+ "Local file '#{location}' is not valid."
+ end
- private
+ private
- def fetch_local_content
- project.repository.blob_data_at(sha, location)
+ def fetch_local_content
+ project.repository.blob_data_at(sha, location)
+ end
end
end
end
diff --git a/lib/gitlab/ci/config/external/file/remote.rb b/lib/gitlab/ci/config/external/file/remote.rb
index 59bb3e8999e..a19c7639b5a 100644
--- a/lib/gitlab/ci/config/external/file/remote.rb
+++ b/lib/gitlab/ci/config/external/file/remote.rb
@@ -2,26 +2,28 @@
module Gitlab
module Ci
- module External
- module File
- class Remote < Base
- include Gitlab::Utils::StrongMemoize
- attr_reader :location
+ class Config
+ module External
+ module File
+ class Remote < Base
+ include Gitlab::Utils::StrongMemoize
+ attr_reader :location
- def content
- return @content if defined?(@content)
+ def content
+ return @content if defined?(@content)
- @content = strong_memoize(:content) do
- begin
- Gitlab::HTTP.get(location)
- rescue Gitlab::HTTP::Error, Timeout::Error, SocketError, Gitlab::HTTP::BlockedUrlError
- nil
+ @content = strong_memoize(:content) do
+ begin
+ Gitlab::HTTP.get(location)
+ rescue Gitlab::HTTP::Error, Timeout::Error, SocketError, Gitlab::HTTP::BlockedUrlError
+ nil
+ end
end
end
- end
- def error_message
- "Remote file '#{location}' is not valid."
+ def error_message
+ "Remote file '#{location}' is not valid."
+ end
end
end
end
diff --git a/lib/gitlab/ci/config/external/mapper.rb b/lib/gitlab/ci/config/external/mapper.rb
index 58bd6a19acf..def3563e505 100644
--- a/lib/gitlab/ci/config/external/mapper.rb
+++ b/lib/gitlab/ci/config/external/mapper.rb
@@ -2,28 +2,29 @@
module Gitlab
module Ci
- module External
- class Mapper
- def initialize(values, project, sha)
- @locations = Array(values.fetch(:include, []))
- @project = project
- @sha = sha
- end
+ class Config
+ module External
+ class Mapper
+ def initialize(values, project, sha)
+ @locations = Array(values.fetch(:include, []))
+ @project = project
+ @sha = sha
+ end
- def process
- locations.map { |location| build_external_file(location) }
- end
+ def process
+ locations.map { |location| build_external_file(location) }
+ end
- private
+ private
- attr_reader :locations, :project, :sha
+ attr_reader :locations, :project, :sha
- def build_external_file(location)
- if ::Gitlab::UrlSanitizer.valid?(location)
- Gitlab::Ci::External::File::Remote.new(location)
- else
- options = { project: project, sha: sha }
- Gitlab::Ci::External::File::Local.new(location, options)
+ def build_external_file(location)
+ if ::Gitlab::UrlSanitizer.valid?(location)
+ External::File::Remote.new(location)
+ else
+ External::File::Local.new(location, project: project, sha: sha)
+ end
end
end
end
diff --git a/lib/gitlab/ci/config/external/processor.rb b/lib/gitlab/ci/config/external/processor.rb
index 76cf3ce89f9..f3b20085cd6 100644
--- a/lib/gitlab/ci/config/external/processor.rb
+++ b/lib/gitlab/ci/config/external/processor.rb
@@ -2,49 +2,51 @@
module Gitlab
module Ci
- module External
- class Processor
- FileError = Class.new(StandardError)
-
- def initialize(values, project, sha)
- @values = values
- @external_files = Gitlab::Ci::External::Mapper.new(values, project, sha).process
- @content = {}
- end
+ class Config
+ module External
+ class Processor
+ FileError = Class.new(StandardError)
+
+ def initialize(values, project, sha)
+ @values = values
+ @external_files = External::Mapper.new(values, project, sha).process
+ @content = {}
+ end
- def perform
- return values if external_files.empty?
+ def perform
+ return values if external_files.empty?
- external_files.each do |external_file|
- validate_external_file(external_file)
- @content.deep_merge!(content_of(external_file))
- end
+ external_files.each do |external_file|
+ validate_external_file(external_file)
+ @content.deep_merge!(content_of(external_file))
+ end
- append_inline_content
- remove_include_keyword
- end
+ append_inline_content
+ remove_include_keyword
+ end
- private
+ private
- attr_reader :values, :external_files, :content
+ attr_reader :values, :external_files, :content
- def validate_external_file(external_file)
- unless external_file.valid?
- raise FileError, external_file.error_message
+ def validate_external_file(external_file)
+ unless external_file.valid?
+ raise FileError, external_file.error_message
+ end
end
- end
- def content_of(external_file)
- Gitlab::Ci::Config::Loader.new(external_file.content).load!
- end
+ def content_of(external_file)
+ Config::Loader.new(external_file.content).load!
+ end
- def append_inline_content
- @content.deep_merge!(@values)
- end
+ def append_inline_content
+ @content.deep_merge!(@values)
+ end
- def remove_include_keyword
- content.delete(:include)
- content
+ def remove_include_keyword
+ content.delete(:include)
+ content
+ end
end
end
end