class Gaptool::RunScriptCommand

Public Instance Methods

execute() click to toggle source
# File lib/gaptool_client/commands.rb, line 112
def execute
  params = exclude_hidden? ? {} : { hidden: true }
  nodes = Gaptool::API.query_nodes(params.merge(instance: instance,
                                                role: role, environment: environment))
  log_level = if debug?
                Logger::DEBUG
              elsif verbose?
                Logger::INFO
              end
  command = "echo 'done'" unless log_level
  sc = File.read(script)
  nodes = nodes.map { |x| x.merge(script: sc, file: script, verbose: log_level.nil?) }
  hook = proc do |node|
    node.handler.on_data('', :stdout, "Executing #{node[:file]}", '') if node[:verbose]
    eval(node[:script])
  end
  res = Gaptool::SSH.exec(nodes, [command],
                          pre_hooks: [hook], serial: serial?,
                          continue_on_errors: continue_on_errors?,
                          log_level: log_level, batch_size: batch_size)
  exit res
end