33 lines
784 B
Ruby
33 lines
784 B
Ruby
# 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
|