Class: Convergence::Command

Inherits:
Object
  • Object
show all
Defined in:
lib/convergence/command.rb

Direct Known Subclasses

Apply, Diff, Dryrun, Export

Defined Under Namespace

Classes: Apply, Diff, Dryrun, Export

Instance Method Summary collapse

Constructor Details

#initialize(opts, config: nil) ⇒ Command

Returns a new instance of Command.



2
3
4
5
6
7
8
9
# File 'lib/convergence/command.rb', line 2

def initialize(opts, config: nil)
  @opts = opts
  if config.nil?
    @config = Convergence::Config.load(opts[:config]) if @opts[:config]
  else
    @config = config
  end
end

Instance Method Details

#connectorObject



33
34
35
# File 'lib/convergence/command.rb', line 33

def connector
  @connector ||= Convergence::DatabaseConnector.new(@config)
end

#database_adapterObject



29
30
31
# File 'lib/convergence/command.rb', line 29

def database_adapter
  @config.nil? ? 'mysql' : @config.adapter
end

#dumperObject



37
38
39
40
41
42
43
44
# File 'lib/convergence/command.rb', line 37

def dumper
  @dumper ||= case database_adapter
              when 'mysql', 'mysql2'
                Convergence::Dumper::MysqlSchemaDumper.new(connector)
              else
                fail NotImplementedError.new('unknown database adapter')
              end
end

#executeObject



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/convergence/command.rb', line 11

def execute
  execute_klass =
    if @opts[:diff]
      Convergence::Command::Diff
    elsif @opts[:export]
      Convergence::Command::Export
    elsif @opts[:dryrun]
      Convergence::Command::Dryrun
    elsif @opts[:apply]
      Convergence::Command::Apply
    end
  if execute_klass.nil?
    puts @opts
  else
    execute_klass.new(@opts, config: @config).execute
  end
end

#loggerObject



55
56
57
# File 'lib/convergence/command.rb', line 55

def logger
  @logger ||= Convergence::Logger.new
end

#sql_generatorObject



46
47
48
49
50
51
52
53
# File 'lib/convergence/command.rb', line 46

def sql_generator
  @sql_generator ||= case database_adapter
                     when 'mysql', 'mysql2'
                       SQLGenerator::MysqlGenerator.new
                     else
                       fail NotImplementedError.new('unknown database adapter')
                     end
end