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