Sha256: cfcc38da0ee5bfdfb7a0dfe9a50ec7a18e65777c9000b4c6128a95618fbf6120

Contents?: true

Size: 949 Bytes

Versions: 6

Compression:

Stored size: 949 Bytes

Contents

module GhostAdapter
  class Command
    def initialize(alter:, table:, database: nil, dry_run: false)
      @alter = alter
      @table = table
      @database = GhostAdapter.config.database || database
      @dry_run = dry_run
      validate_args_and_config!
    end

    def to_a
      [
        EXECUTABLE,
        *base_args,
        *GhostAdapter.config.as_args,
        *execute_arg
      ]
    end

    private

    EXECUTABLE = 'gh-ost'.freeze

    attr_reader :alter, :database, :table, :dry_run

    def validate_args_and_config!
      raise ArgumentError, 'alter cannot be nil' if alter.nil?
      raise ArgumentError, 'table cannot be nil' if table.nil?
      raise ArgumentError, 'database cannot be nil' if database.nil?
    end

    def base_args
      [
        "--alter=#{alter}",
        "--table=#{table}",
        "--database=#{database}"
      ]
    end

    def execute_arg
      dry_run ? [] : ['--execute']
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
ghost_adapter-0.1.4 lib/ghost_adapter/command.rb
ghost_adapter-0.1.3 lib/ghost_adapter/command.rb
ghost_adapter-0.1.2 lib/ghost_adapter/command.rb
ghost_adapter-0.1.1 lib/ghost_adapter/command.rb
ghost_adapter-0.1.0 lib/ghost_adapter/command.rb
ghost_adapter-0.0.2 lib/ghost_adapter/command.rb