#!/usr/local/bin/ruby require 'rubygems' require 'rbosa' def get_app(app_name) app = OSA.app(app_name) if app.nil? puts "#{app} does not exist" exit end app end $Adium = get_app "Adium" $iChat = get_app "iChat" $STATUS = { :Skype => { :off => "OFFLINE", :on => "ONLINE", :away => "AWAY" }, :Adium => { :off => OSA::Adium::ASST::OFFLINE, :on => OSA::Adium::ASST::AVAILABLE, :away => OSA::Adium::ASST::AWAY }, :iChat => { :off => OSA::IChat::MSTA::OFFLINE, :on => OSA::IChat::MSTA::AVAILABLE, :away => OSA::IChat::MSTA::AWAY } } def assert_status_for(app, status) if not $STATUS[app].has_key? status throw Error.new("#{app.to_s} does not have status #{status.to_s}") end end def set_Skype_status_to(status) assert_status_for :Skype, status app = get_app "Skype" request = "SET USERSTATUS #{$STATUS[:Skype][status]}" app.send2 request, "" end def set_Adium_status_to(status) assert_status_for :Adium, status $Adium.adium_controller.my_status_type = $STATUS[:Adium][status] $Adium.adium_controller.my_status_message = status.to_s if status == :on $Adium.adium_controller.accounts.each { |a| a.connect } end end def set_iChat_status_to(status) assert_status_for :iChat, status $iChat.status = $STATUS[:iChat][status] end status = ARGV[0].intern #set_Skype_status_to status set_Adium_status_to status #set_iChat_status_to status