class Admin::Fifo

Public Instance Methods

close_fifo(msg) click to toggle source
# File lib/Zeta/admin/fifo.rb, line 33
def close_fifo(msg)
  File.delete(File.join(Dir.home, '.zeta', 'zeta.io'))
  bot.info "Deleted named pipe #{File.join(Dir.home, '.zeta', 'zeta.io')}"
end
open_fifo(m) click to toggle source
# File lib/Zeta/admin/fifo.rb, line 12
def open_fifo(m)
  # Sometimes FiFo is left open on crash, remove old fifo
  if File.exists?(File.join(Dir.home, '.zeta', 'zeta.io'))
    File.delete(File.join(Dir.home, '.zeta', 'zeta.io'))
  end

  File.mkfifo(File.join(Dir.home, '.zeta', 'zeta.io') || raise(ArgumentError, "No FIFO path given!"))
  File.chmod(0660, File.join(Dir.home, '.zeta', 'zeta.io'))

  File.open(File.join(Dir.home, '.zeta', 'zeta.io'), "r+") do |fifo|
    bot.info "Opened named pipe (FIFO) at #{File.join(Dir.home, '.zeta', 'zeta.io')}"

    fifo.each_line do |line|
      msg = line.strip
      bot.debug "Got message from the FIFO: #{msg}"
      bot.irc.send msg
    end
  end

end