diff options
Diffstat (limited to 'lib/gitlab/legacy_github_import/project_creator.rb')
-rw-r--r-- | lib/gitlab/legacy_github_import/project_creator.rb | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/lib/gitlab/legacy_github_import/project_creator.rb b/lib/gitlab/legacy_github_import/project_creator.rb new file mode 100644 index 00000000000..41e7eac4d08 --- /dev/null +++ b/lib/gitlab/legacy_github_import/project_creator.rb @@ -0,0 +1,52 @@ +module Gitlab + module LegacyGithubImport + class ProjectCreator + include Gitlab::CurrentSettings + + attr_reader :repo, :name, :namespace, :current_user, :session_data, :type + + def initialize(repo, name, namespace, current_user, session_data, type: 'github') + @repo = repo + @name = name + @namespace = namespace + @current_user = current_user + @session_data = session_data + @type = type + end + + def execute + ::Projects::CreateService.new( + current_user, + name: name, + path: name, + description: repo.description, + namespace_id: namespace.id, + visibility_level: visibility_level, + import_type: type, + import_source: repo.full_name, + import_url: import_url, + skip_wiki: skip_wiki + ).execute + end + + private + + def import_url + repo.clone_url.sub('://', "://#{session_data[:github_access_token]}@") + end + + def visibility_level + repo.private ? Gitlab::VisibilityLevel::PRIVATE : current_application_settings.default_project_visibility + end + + # + # If the GitHub project repository has wiki, we should not create the + # default wiki. Otherwise the GitHub importer will fail because the wiki + # repository already exist. + # + def skip_wiki + repo.has_wiki? + end + end + end +end |