This commit is contained in:
@@ -0,0 +1,156 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Octokit
|
||||
class Client
|
||||
# Methods for the Source Import API
|
||||
#
|
||||
# @see https://developer.github.com/v3/migration/source_imports
|
||||
module SourceImport
|
||||
# Start a source import to a GitHub repository using GitHub Importer.
|
||||
#
|
||||
# @overload start_source_import(repo, vcs, vcs_url, options = {})
|
||||
# @deprecated
|
||||
# @param repo [Integer, String, Hash, Repository] A GitHub repository.
|
||||
# @param vcs [String] The originating VCS type. Can be one of "subversion", "git", "mercurial", or "tfvc".
|
||||
# @param vcs_url [String] The URL of the originating repository.
|
||||
# @param options [Hash]
|
||||
# @option options [String] :vcs_username If authentication is required, the username to provide to vcs_url.
|
||||
# @option options [String] :vcs_password If authentication is required, the password to provide to vcs_url.
|
||||
# @option options [String] :tfvc_project For a tfvc import, the name of the project that is being imported.
|
||||
# @overload start_source_import(repo, vcs_url, options = {})
|
||||
# @param repo [Integer, String, Hash, Repository] A GitHub repository.
|
||||
# @param vcs_url [String] The URL of the originating repository.
|
||||
# @param options [Hash]
|
||||
# @param options [String] :vcs The originating VCS type. Can be one of "subversion", "git", "mercurial", or "tfvc".
|
||||
# @option options [String] :vcs_username If authentication is required, the username to provide to vcs_url.
|
||||
# @option options [String] :vcs_password If authentication is required, the password to provide to vcs_url.
|
||||
# @option options [String] :tfvc_project For a tfvc import, the name of the project that is being imported.
|
||||
# @return [Sawyer::Resource] Hash representing the repository import
|
||||
# @see https://developer.github.com/v3/migration/source_imports/#start-an-import
|
||||
#
|
||||
# @example
|
||||
# @client.start_source_import("octokit/octokit.rb", "http://svn.mycompany.com/svn/myproject", {
|
||||
# :vcs => "subversion",
|
||||
# :vcs_username" => "octocat",
|
||||
# :vcs_password => "secret"
|
||||
# })
|
||||
def start_source_import(*args)
|
||||
arguments = Octokit::RepoArguments.new(args)
|
||||
vcs_url = arguments.pop
|
||||
vcs = arguments.pop
|
||||
if vcs
|
||||
octokit_warn 'Octokit#start_source_import vcs parameter is now an option, please update your call before the next major Octokit version update.'
|
||||
arguments.options.merge!(vcs: vcs)
|
||||
end
|
||||
options = arguments.options.merge(vcs_url: vcs_url)
|
||||
put "#{Repository.path arguments.repo}/import", options
|
||||
end
|
||||
|
||||
# View the progress of an import.
|
||||
#
|
||||
# @param repo [Integer, String, Hash, Repository] A GitHub repository.
|
||||
# @return [Sawyer::Resource] Hash representing the progress of the import
|
||||
# @see https://developer.github.com/v3/migration/source_imports/#get-import-progress
|
||||
#
|
||||
# @example
|
||||
# @client.source_import_progress("octokit/octokit.rb")
|
||||
def source_import_progress(repo, options = {})
|
||||
get "#{Repository.path repo}/import", options
|
||||
end
|
||||
|
||||
# Update source import with authentication or project choice
|
||||
# Restart source import if no options are passed
|
||||
#
|
||||
# @param repo [Integer, String, Hash, Repository] A GitHub repository.
|
||||
# @return [Sawyer::Resource] Hash representing the repository import
|
||||
# @see https://developer.github.com/v3/migration/source_imports/#update-existing-import
|
||||
# @option options [String] :vcs_username If authentication is required, the username to provide to vcs_url.
|
||||
# @option options [String] :vcs_password If authentication is required, the password to provide to vcs_url.
|
||||
# @option options [String] To update project choice, please refer to the project_choice array from the progress return hash for the exact attributes.
|
||||
# https://developer.github.com/v3/migration/source_imports/#update-existing-import
|
||||
#
|
||||
# @example
|
||||
# @client.update_source_import("octokit/octokit.rb", {
|
||||
# :vcs_username" => "octocat",
|
||||
# :vcs_password => "secret"
|
||||
# })
|
||||
def update_source_import(repo, options = {})
|
||||
patch "#{Repository.path repo}/import", options
|
||||
end
|
||||
|
||||
# List source import commit authors
|
||||
#
|
||||
# @param repo [Integer, String, Hash, Repository] A GitHub repository.
|
||||
# @param options [Hash]
|
||||
# @option options [String] :since Only authors found after this id are returned.
|
||||
# @return [Array<Sawyer::Resource>] Array of hashes representing commit_authors.
|
||||
# @see https://developer.github.com/v3/migration/source_imports/#get-commit-authors
|
||||
#
|
||||
# @example
|
||||
# @client.source_import_commit_authors("octokit/octokit.rb")
|
||||
def source_import_commit_authors(repo, options = {})
|
||||
get "#{Repository.path repo}/import/authors", options
|
||||
end
|
||||
|
||||
# Update an author's identity for the import.
|
||||
#
|
||||
# @param author_url [String] The source import API url for the commit author
|
||||
# @param values [Hash] The updated author attributes
|
||||
# @option values [String] :email The new Git author email.
|
||||
# @option values [String] :name The new Git author name.
|
||||
# @return [Sawyer::Resource] Hash representing the updated commit author
|
||||
# @see https://developer.github.com/v3/migration/source_imports/#map-a-commit-author
|
||||
#
|
||||
# @example
|
||||
# author_url = "https://api.github.com/repos/octokit/octokit.rb/import/authors/1"
|
||||
# @client.map_source_import_commit_author(author_url, {
|
||||
# :email => "hubot@github.com",
|
||||
# :name => "Hubot the Robot"
|
||||
# })
|
||||
def map_source_import_commit_author(author_url, values, options = {})
|
||||
options = options.merge(values)
|
||||
patch author_url, options
|
||||
end
|
||||
|
||||
# Stop an import for a repository.
|
||||
#
|
||||
# @param repo [Integer, String, Hash, Repository] A GitHub repository.
|
||||
# @return [Boolean] True if the import has been cancelled, false otherwise.
|
||||
# @see https://developer.github.com/v3/migration/source_imports/#cancel-an-import
|
||||
#
|
||||
# @example
|
||||
# @client.cancel_source_import("octokit/octokit.rb")
|
||||
def cancel_source_import(repo, options = {})
|
||||
boolean_from_response :delete, "#{Repository.path repo}/import", options
|
||||
end
|
||||
|
||||
# List source import large files
|
||||
#
|
||||
# @param repo [Integer, String, Hash, Repository] A GitHub repository.
|
||||
# @param options [Hash]
|
||||
# @option options [Integer] :page Page of paginated results
|
||||
# @return [Array<Sawyer::Resource>] Array of hashes representing files over 100MB.
|
||||
# @see https://developer.github.com/v3/migration/source_imports/#get-large-files
|
||||
#
|
||||
# @example
|
||||
# @client.source_import_large_files("octokit/octokit.rb")
|
||||
def source_import_large_files(repo, options = {})
|
||||
get "#{Repository.path repo}/import/large_files", options
|
||||
end
|
||||
|
||||
# Set preference for using Git LFS to import files over 100MB
|
||||
#
|
||||
# @param repo [Integer, String, Hash, Repository] A GitHub repository.
|
||||
# @param use_lfs [String] Preference for using Git LFS to import large files. Can be one of "opt_in" or "opt_out"
|
||||
# @return [Sawyer::Resource] Hash representing the repository import
|
||||
# @see https://developer.github.com/v3/migration/source_imports/#set-git-lfs-preference
|
||||
#
|
||||
# @example
|
||||
# @client.opt_in_source_import_lfs("octokit/octokit.rb", "opt_in")
|
||||
def set_source_import_lfs_preference(repo, use_lfs, options = {})
|
||||
options = options.merge(use_lfs: use_lfs)
|
||||
patch "#{Repository.path repo}/import/lfs", options
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user