Welcome to mirror list, hosted at ThFree Co, Russian Federation.

accounts.rake « tasks « lib - github.com/diaspora/diaspora.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: f7a17adf3808b31d73f42aff284314e668138249 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# frozen_string_literal: true

namespace :accounts do
  desc "Perform migration"
  task :migration, %i[archive_path new_user_name] => :environment do |_t, args|
    puts "Account migration is requested"
    args = %i[archive_path new_user_name].map {|name| [name, args[name]] }.to_h
    process_arguments(args)

    begin
      service = MigrationService.new(args[:archive_path], args[:new_user_name])
      service.validate
      puts "Warnings:\n#{service.warnings}\n-----" if service.warnings.any?
      if service.only_import?
        puts "Warning: Archive owner is not fetchable. Proceeding with data import, but account migration record "\
          "won't  be created"
      end
      print "Do you really want to execute the archive import? Note: this is irreversible! [y/N]: "
      next unless $stdin.gets.strip.casecmp?("y")

      start_time = Time.now.getlocal
      service.perform!
      puts service.only_import? ? "Data import complete!" : "Data import and migration complete!"
      puts "Migration took #{Time.now.getlocal - start_time} seconds"
    rescue MigrationService::ArchiveValidationFailed => exception
      puts "Errors in the archive found:\n#{exception.message}\n-----"
    rescue MigrationService::MigrationAlreadyExists
      puts "Migration record already exists for the user, can't continue"
    end
  end

  def process_arguments(args)
    if args[:archive_path].nil?
      print "Enter the archive path: "
      args[:archive_path] = $stdin.gets.strip
    end
    if args[:new_user_name].nil?
      print "Enter the new user name: "
      args[:new_user_name] = $stdin.gets.strip
    end
    puts "Archive path: #{args[:archive_path]}"
    puts "New username: #{args[:new_user_name]}"
  end
end