summaryrefslogtreecommitdiff
path: root/lib/gitlab/ci/config/external/mapper.rb
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzesiek.bizon@gmail.com>2018-10-16 15:04:32 +0200
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2018-10-16 15:04:32 +0200
commit7acc6340c1e8191f1df0cbc50f4cc4f2291e698b (patch)
treea01b008d1dade9dd536889bd176ee5f70692b7d1 /lib/gitlab/ci/config/external/mapper.rb
parentb69a047409d035aa69f8018cea2a86884e0530fd (diff)
downloadgitlab-ce-7acc6340c1e8191f1df0cbc50f4cc4f2291e698b.tar.gz
Move external CI config files into Ci class context
Diffstat (limited to 'lib/gitlab/ci/config/external/mapper.rb')
-rw-r--r--lib/gitlab/ci/config/external/mapper.rb32
1 files changed, 32 insertions, 0 deletions
diff --git a/lib/gitlab/ci/config/external/mapper.rb b/lib/gitlab/ci/config/external/mapper.rb
new file mode 100644
index 00000000000..58bd6a19acf
--- /dev/null
+++ b/lib/gitlab/ci/config/external/mapper.rb
@@ -0,0 +1,32 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Ci
+ 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
+
+ private
+
+ 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)
+ end
+ end
+ end
+ end
+ end
+end