Sha256: e2e8731c4f4b3232d640af75fb2a90b46e411bbac9ff8324f9f6b90890e6e144

Contents?: true

Size: 1.51 KB

Versions: 22

Compression:

Stored size: 1.51 KB

Contents

require_relative 'config_loader'
require_relative 'error'
require_relative 'action'
require_relative 'hash_util'

class BigqueryMigration
  class ActionRunner
    attr_reader :config, :config_path, :opts

    def initialize(config_path = nil, opts = {})
      @config_path = config_path
      @opts = opts
      config = ConfigLoader.new(@config_path, opts[:vars]).load
      @config = HashUtil.deep_symbolize_keys(config)
      validate_config!
    end

    def run
      success, responses = run_actions
      { success: success, dry_run: @opts[:dry_run], actions: responses }
    end

    def run_actions
      success = true
      responses = []

      @config[:actions].each do |action_config|
        _success, result = Action.new(action_config, @opts).run
        response = action_config.merge({'result' => result})
        responses << response
        unless _success
          success = false
          break
        end
      end

      [success, responses]
    end

    def validate_config!
      unless config.is_a?(Hash)
        raise ConfigError, "config file format has to be YAML Hash"
      end

      unless config[:actions]
        raise ConfigError, "config must have `actions` key"
      end

      unless config[:actions].is_a?(Array)
        raise ConfigError, "config[:actions] must be an Array"
      end

      config[:actions].each do |action_config|
        unless action_config[:action]
          raise ConfigError, "Elements of `config[:actions]` must have `action` key"
        end
      end
    end
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
bigquery_migration-0.3.2 lib/bigquery_migration/action_runner.rb
bigquery_migration-0.3.1 lib/bigquery_migration/action_runner.rb
bigquery_migration-0.3.0 lib/bigquery_migration/action_runner.rb
bigquery_migration-0.2.2 lib/bigquery_migration/action_runner.rb
bigquery_migration-0.2.1 lib/bigquery_migration/action_runner.rb
bigquery_migration-0.2.0 lib/bigquery_migration/action_runner.rb
bigquery_migration-0.2.0.pre2 lib/bigquery_migration/action_runner.rb
bigquery_migration-0.2.0.pre1 lib/bigquery_migration/action_runner.rb
bigquery_migration-0.1.7 lib/bigquery_migration/action_runner.rb
bigquery_migration-0.1.6 lib/bigquery_migration/action_runner.rb
bigquery_migration-0.1.5 lib/bigquery_migration/action_runner.rb
bigquery_migration-0.1.4 lib/bigquery_migration/action_runner.rb
bigquery_migration-0.1.3 lib/bigquery_migration/action_runner.rb
bigquery_migration-0.1.2 lib/bigquery_migration/action_runner.rb
bigquery_migration-0.1.1 lib/bigquery_migration/action_runner.rb
bigquery_migration-0.1.0 lib/bigquery_migration/action_runner.rb
bigquery_migration-0.1.0.pre6 lib/bigquery_migration/action_runner.rb
bigquery_migration-0.1.0.pre5 lib/bigquery_migration/action_runner.rb
bigquery_migration-0.1.0.pre4 lib/bigquery_migration/action_runner.rb
bigquery_migration-0.1.0.pre3 lib/bigquery_migration/action_runner.rb