class Runner

Attributes

commands[R]

Public Class Methods

new(config) click to toggle source
# File lib/go_run/runner.rb, line 4
def initialize(config)
  @config = config
  @commands = []
  @output = ""
end

Public Instance Methods

exit_status() click to toggle source
# File lib/go_run/runner.rb, line 73
def exit_status
  non_zero_exit_status = @commands.find { |c| c["exit_code"] != 0 }
  if non_zero_exit_status.nil?
    return 0
  end
  return non_zero_exit_status["exit_code"]
end
requirement_fulfilled?(requirement) click to toggle source
# File lib/go_run/runner.rb, line 61
def requirement_fulfilled?(requirement)
  if ENV.has_key? requirement["key"]
    return true
  elsif requirement.has_key? "default"
    ENV[requirement["key"]] = requirement["default"]
    return true
  else
    @output << "Environment variable #{requirement["key"]} not set\n"
  end
  return false
end
run(targets) click to toggle source
# File lib/go_run/runner.rb, line 10
def run(targets)
  targets.each do |target|
    run_target(target)
  end
  @output
end
run_command(command) click to toggle source
# File lib/go_run/runner.rb, line 52
def run_command(command)
  system(command)
  @commands << {
    "command" => command,
    "exit_code" => $?.exitstatus
  }
  $?.exitstatus
end
run_target(target) click to toggle source
# File lib/go_run/runner.rb, line 17
def run_target(target)
  raise "Target '#{target}' not found in configuration" if not @config.has_key? target
  if @config[target].has_key? "group"
    @config[target]["group"].each do |group|
      run_target(group)
    end
  end
  if @config[target].has_key? "set"
    @config[target]["set"].each do |env_var|
      ENV[env_var["key"]] = env_var["value"]
    end
  end
  if @config[target].has_key? "requires"
    @config[target]["requires"].each do |requirement|
      if not requirement_fulfilled?(requirement)
        @output << "Failed to fulfill requirements for target '#{target}'\n"
        return
      end
    end
  end
  if @config[target].has_key? "call"
    @config[target]["call"].each do |call|
      run_target(call["target"])
    end
  end
  if @config[target].has_key? "commands"
    @config[target]["commands"].each do |command|
      if run_command(command) != 0
        @output << "Failed to run command '#{command}'\n"
        return
      end
    end
  end
end