Sha256: 67743698e698773ec55a7814fc8a01fa1a8aa9378e65e6775a367613750b199a

Contents?: true

Size: 1.97 KB

Versions: 1

Compression:

Stored size: 1.97 KB

Contents

require 'capistrano'
require 'tinder'

module Capistrano
  module Campfire
    class RoomCollection
      def initialize(campfire_options)
        rooms_options = campfire_options[:rooms]

        # if no rooms specified, let's assume the campfire_options has everything
        # so let's fake it
        unless rooms_options
          rooms_options = [{}]
        end

        @rooms = rooms_options.map do |room_options|
          account = room_options[:account] || campfire_options[:account]
          token = room_options[:token] || campfire_options[:token]
          ssl = room_options[:ssl] || campfire_options[:ssl]
          ssl_verify = room_options[:ssl_verify] || campfire_options[:ssl_verify]
          room_name = room_options[:room] || campfire_options[:room]
          room_id = room_options[:room] || campfire_options[:room_id]


          campfire = ::Tinder::Campfire.new account,
            :token => token,
            :ssl => ssl,
            :ssl_verify => ssl_verify

          if room_name
            campfire.find_room_by_name(room_name)
          elsif room_id
            campfire.find_room_by_id(room_id)
          else
            raise "Please, specify room name or room_id for your Campfire room"
          end
        end
      end

      def speak(message)
        @rooms.each do |room|
          room.speak message
        end
      end

      def paste(message)
        @rooms.each do |room|
          room.paste message
        end
      end

      def play(message)
        @rooms.each do |room|
          room.play message
        end
      end
    end

    def self.extended(configuration)
      configuration.load do
        set :campfire_options, {}

        set :campfire_room do
          RoomCollection.new(campfire_options)
        end

        set :campfire_rooms do
          RoomCollection.new(campfire_options)
        end
      end
    end

  end
end

if Capistrano::Configuration.instance
  Capistrano::Configuration.instance.extend(Capistrano::Campfire)
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
capistrano-campfire-0.2.1 lib/capistrano/campfire.rb