Sha256: 482ef1e41426f8b46e7bd11d416553b9598039170250fd0fbbc89424ff24c4d1

Contents?: true

Size: 1.27 KB

Versions: 43

Compression:

Stored size: 1.27 KB

Contents

unless defined?(RUBY_ENGINE) && RUBY_ENGINE == 'jruby'
  require 'mkfifo'
end

# Named pipe plugin for Cinch.
module Admin
  class Fifo
    include Cinch::Plugin
    listen_to :connect, :method => :open_fifo
    listen_to :disconnect, :method => :close_fifo

    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

    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

  end
end


# AutoLoad if Not Jruby
unless defined?(RUBY_ENGINE) && RUBY_ENGINE == 'jruby'
  Bot.config.plugins.plugins.push Admin::Fifo
end

Version data entries

43 entries across 43 versions & 1 rubygems

Version Path
zetabot-2.1.2 lib/Zeta/admin/fifo.rb
zetabot-2.1.1 lib/Zeta/admin/fifo.rb
zetabot-2.1.0 lib/Zeta/admin/fifo.rb
zetabot-2.0.9 lib/Zeta/admin/fifo.rb
zetabot-2.0.8 lib/Zeta/admin/fifo.rb
zetabot-2.0.7 lib/Zeta/admin/fifo.rb
zetabot-2.0.6 lib/Zeta/admin/fifo.rb
zetabot-2.0.5 lib/Zeta/admin/fifo.rb
zetabot-2.0.4 lib/Zeta/admin/fifo.rb
zetabot-2.0.3 lib/Zeta/admin/fifo.rb
zetabot-2.0.2 lib/Zeta/admin/fifo.rb
zetabot-2.0.1 lib/Zeta/admin/fifo.rb
zetabot-2.0.0 lib/Zeta/admin/fifo.rb
zetabot-1.1.0 lib/Zeta/admin/fifo.rb
zetabot-1.0.7 lib/Zeta/admin/fifo.rb
zetabot-1.0.6 lib/Zeta/admin/fifo.rb
zetabot-1.0.5 lib/Zeta/admin/fifo.rb
zetabot-1.0.4 lib/Zeta/admin/fifo.rb
zetabot-1.0.3 lib/Zeta/admin/fifo.rb
zetabot-1.0.2 lib/Zeta/admin/fifo.rb