gitlab-org--gitlab-foss/lib/gitlab/manifest_import/project_creator.rb

44 lines
1.2 KiB
Ruby

# frozen_string_literal: true
module Gitlab
module ManifestImport
class ProjectCreator
attr_reader :repository, :destination, :current_user
def initialize(repository, destination, current_user)
@repository = repository
@destination = destination
@current_user = current_user
end
def execute
group_full_path, _, project_path = repository[:path].rpartition('/')
group_full_path = File.join(destination.full_path, group_full_path) if destination
group = create_group_with_parents(group_full_path)
params = {
import_url: repository[:url],
import_source: repository[:url],
import_type: 'manifest',
namespace_id: group.id,
path: project_path,
name: project_path,
visibility_level: destination.visibility_level
}
Projects::CreateService.new(current_user, params).execute
end
private
def create_group_with_parents(full_path)
params = {
group_path: full_path,
visibility_level: destination.visibility_level
}
Groups::NestedCreateService.new(current_user, params).execute
end
end
end
end