Sha256: e3fc8657692199de985d53b61f288100d39dfca4bd58b394e5347e8f54b59089

Contents?: true

Size: 883 Bytes

Versions: 4

Compression:

Stored size: 883 Bytes

Contents

# frozen_string_literal: true

require 'json'
require 'open3'

require_relative 'ruby_selector'
require_relative 'gemfile_selector'

module SchemaDev
  class Executor
    attr_reader :ruby, :activerecord, :db, :error

    def initialize(ruby:, activerecord:, db:)
      @ruby_selector = RubySelector.command(ruby)
      @gemfile_selector = GemfileSelector.command(activerecord: activerecord, db: db)
    end

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

      @error = false
      Open3.popen2e(fullcommand) do |_i, oe, t|
        oe.each do |line|
          puts line
          @error ||= (line =~ /(^Failed examples)|(rake aborted)|(LoadError)/)
        end
        @error ||= !t.value.success?
      end

      !@error
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
schema_dev-4.2.0 lib/schema_dev/executor.rb
schema_dev-4.2.beta.5 lib/schema_dev/executor.rb
schema_dev-4.1.1 lib/schema_dev/executor.rb
schema_dev-4.1.0 lib/schema_dev/executor.rb