class PrMigrator::Export

Attributes

client[RW]
exported_prs[RW]
failed_prs[RW]
folder_name_for_exported_files[RW]
pr_numbers[RW]
repo_name[RW]

Public Class Methods

new(options = {}) click to toggle source
# File lib/pr_migrator/export.rb, line 11
def initialize(options = {})
  @client                         = Octokit::Client.new(access_token: PrMigrator.configuration.source_access_token)
  @repo_name                      = options[:repo_name]
  @pr_numbers                     = options[:pr_numbers]
  @folder_name_for_exported_files = "export_#{SecureRandom.urlsafe_base64(5)}"
  @failed_prs                     = []
  @exported_prs                   = []
end

Public Instance Methods

start() click to toggle source

Start the process of exporting The exported files will be json files

# File lib/pr_migrator/export.rb, line 22
def start
  Dir.mkdir(File.join(Dir.getwd, @folder_name_for_exported_files))
  Parallel.map(@pr_numbers, in_processes: 10 ) do |pr_number|
    begin
      response = @client.pull_request(@repo_name, pr_number)
      File.open("#{@folder_name_for_exported_files}/pr-#{pr_number}.json","w") do |f|
        f.write(JSON.pretty_generate(response.to_attrs))
      end
      @exported_prs << pr_number
    rescue
      @failed_prs << pr_number
    end
    sleep 2
  end
  puts "PR's exported were: #{@exported_prs}"
  puts "PR's Not exported were :#{@failed_prs}"
end