Sha256: 730b21d61ddfcdbb6dd504d243024a8e8b0242d95e5191b8f449fa3637c8a5a2

Contents?: true

Size: 939 Bytes

Versions: 1

Compression:

Stored size: 939 Bytes

Contents

require 'json'
require_relative "ruby_selector"
require_relative "gemfile_selector"

module SchemaDev
  class Executor

    attr_reader :ruby, :rails, :db, :error

    def initialize(ruby:, rails:, db: nil)
      @ruby_selector = RubySelector.command(ruby)
      @gemfile_selector = GemfileSelector.command(rails: rails, db: db)
      env = {ruby: ruby, rails: rails, db: db}.reject{|k,val| val.nil?}
      @dev_env = "SCHEMA_DEV_ENV='#{env.to_json}'"
    end

    def run(cmd, dry_run: false)
      fullcommand = ["/usr/bin/env", @dev_env, @gemfile_selector, @ruby_selector, cmd].compact.join(' ')
      puts "* #{fullcommand}"
      return true if dry_run

      Tempfile.open('SchemaDev') do |file|
        @error = !system(%Q[ (#{fullcommand}) 2>& 1 | tee #{file.path} ])
        file.rewind
        @error ||= file.readlines.grep(/(^Failed examples)|(rake aborted)|(LoadError)/).any?
      end

      return !@error
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
schema_dev-0.0.1 lib/schema_dev/executor.rb