class Object

Constants

RETRY_SLEEP

Public Instance Methods

invocation_info_to_squab(sc = Squab::Client.new, debug = false, max_retries=3) click to toggle source
# File lib/squab-client/auto.rb, line 23
def invocation_info_to_squab(sc = Squab::Client.new, debug = false, max_retries=3)
  hostname = Socket.gethostname

  script_name = $0
  user = nil
  shell = nil

  # do special things if we're sudo'ing
  if ENV["SUDO_USER"]
    user = ENV["SUDO_USER"]
    shell = "#"
  else
    user = Etc.getpwuid(Process.uid).name
    shell = "$"
  end

  message = "#{hostname}#{shell} #{script_name} #{ARGV.join(' ')}"

  sc.uid = user
  sc.source = File.basename($0)

  if debug
    puts "message: #{message}"
    puts "uid:     #{user}"
    puts "source:  #{sc.source}"
  end

  # Send with retry
  try_count = 0
  begin
    sc.send(message, nil)
  rescue SendEventFailed
    try_count += 1
    if try_count > max_retries
      return
    else
      sleep RETRY_SLEEP
      retry
    end
  end
end