Class: Convergence::Command::Dryrun

Inherits:
Convergence::Command show all
Defined in:
lib/convergence/command/dryrun.rb

Instance Method Summary collapse

Methods inherited from Convergence::Command

#connector, #database_adapter, #dumper, #initialize, #logger, #sql_generator

Constructor Details

This class inherits a constructor from Convergence::Command

Instance Method Details

#executeObject



8
9
10
11
12
13
14
15
16
# File 'lib/convergence/command/dryrun.rb', line 8

def execute
  validate!
  current_dir_path = Pathname.new(@opts[:input]).realpath.dirname
  input_tables = Convergence::DSL.parse(File.open(@opts[:input]).read, current_dir_path)
  current_tables = dumper.dump
  # -- maybe it's redundant output
  # output_diff(input_tables, current_tables)
  output_sql(input_tables, current_tables)
end

#output_diff(input_tables, current_tables) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/convergence/command/dryrun.rb', line 18

def output_diff(input_tables, current_tables)
  input_tables_without_default_parameter =
    Convergence::DefaultParameter.remove_database_default_parameter(input_tables, database_adapter)
  current_tables_without_default_parameter =
    Convergence::DefaultParameter.remove_database_default_parameter(current_tables, database_adapter)

  msg = Convergence::PrettyDiff
    .new(current_tables_without_default_parameter, input_tables_without_default_parameter)
    .output
  logger.output(msg)
  msg
end

#output_sql(input_tables, current_tables) ⇒ Object



31
32
33
34
35
36
37
38
39
40
# File 'lib/convergence/command/dryrun.rb', line 31

def output_sql(input_tables, current_tables)
  msg = Convergence::Command::Apply
    .new(@opts, config: @config)
    .generate_sql(input_tables, current_tables)
    .split("\n")
    .map { |v| '# ' + v }
    .join("\n")
  logger.output(msg)
  msg
end

#validate!Object



3
4
5
6
# File 'lib/convergence/command/dryrun.rb', line 3

def validate!
  fail ArgumentError.new('--config required') if @config.nil?
  fail ArgumentError.new('--input required') unless @opts[:input]
end