Sha256: 2798e8c2bc8b4dbc28803b6f4210baf61e854d94cae8400c0a95debb3fe11035

Contents?: true

Size: 1.7 KB

Versions: 1

Compression:

Stored size: 1.7 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]


          campfire = ::Tinder::Campfire.new account,
            :token => token,
            :ssl => ssl,
            :ssl_verify => ssl_verify
          campfire.find_room_by_name(room_name)
        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.0 lib/capistrano/campfire.rb