Class: Admin::Fifo

Inherits:
Object
  • Object
show all
Includes:
Cinch::Plugin
Defined in:
lib/Zeta/admin/fifo.rb

Instance Method Summary collapse

Methods included from Cinch::Plugin

#check?, #log2chan

Instance Method Details

#close_fifo(msg) ⇒ Object



33
34
35
36
# 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) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 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