summaryrefslogtreecommitdiff
path: root/lib/gitlab/ci/config/external/mapper.rb
blob: def3563e5050044db5d07223fa32235b5cd0153d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# frozen_string_literal: true

module Gitlab
  module Ci
    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

          private

          attr_reader :locations, :project, :sha

          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
    end
  end
end