Class: Db::Clone::Base

Inherits:
Object
  • Object
show all
Includes:
CmdPrompt
Defined in:
lib/db/clone/base.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from CmdPrompt

#ask_yes_no, #fmt, #frame, #prompt

Constructor Details

#initializeBase

Returns a new instance of Base.

Raises:

  • (ArgumentError)


10
11
12
13
14
15
16
# File 'lib/db/clone/base.rb', line 10

def initialize
  @db_yml = YAML.load_file Db::Clone.database_yml_path
  raise ArgumentError.new("#{Db::Clone.database_yml_path} does not have at least 2 database blocks.") unless @db_yml.length >= 2

  @default_src = Db::Clone.default_source_database
  @default_dest = Db::Clone.default_destination_database
end

Class Method Details

.clone!(invoke_cli) ⇒ Object



6
7
8
# File 'lib/db/clone/base.rb', line 6

def self.clone! invoke_cli
  self.new.clone! invoke_cli
end

Instance Method Details

#clone!(invoke_cli) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/db/clone/base.rb', line 18

def clone! invoke_cli
  src_db, dest_db = invoke_cli ? prompt_for_src_and_dest : default_src_and_dest

  cmd_builder = CmdBuilder.new src: @db_yml[src_db], dest: @db_yml[dest_db]

  frame("Cloning #{src_db} into #{dest_db}") do
    unless !invoke_cli || ask_yes_no("Continue?", default_to_yes: dest_db != @default_src)
      puts fmt("\n{{x}} Cloning canceled.")
      abort
    end

    puts fmt("\n  Executing: {{cyan:#{cmd_builder.cmd}}}\n\n")
    Process.wait spawn(cmd_builder.cmd)
    puts fmt("\n{{v}} Cloning complete!")
  end
end