fog--fog/bin/fog

51 lines
1.4 KiB
Ruby
Executable File

#!/usr/bin/env ruby
require File.join(File.dirname(__FILE__), '..', 'lib', 'fog')
require 'irb'
require 'yaml'
require File.join('fog', 'credentials')
require File.join('fog', 'bin')
Fog.credential = ARGV.first ? :"#{ARGV.first}" : :default
unless Fog.credentials
exit
end
require File.join('fog', 'aws', 'bin')
require File.join('fog', 'local', 'bin')
require File.join('fog', 'rackspace', 'bin')
require File.join('fog', 'slicehost', 'bin')
require File.join('fog', 'terremark', 'bin')
require File.join('fog', 'vcloud', 'bin')
require File.join('fog', 'bluebox', 'bin')
if ARGV.length > 1
print(instance_eval(ARGV[1..-1].join(' ')).to_json)
else
ARGV.clear # Avoid passing args to IRB
IRB.setup(nil)
@irb = IRB::Irb.new(nil)
IRB.conf[:MAIN_CONTEXT] = @irb.context
IRB.conf[:PROMPT][:FOG] = IRB.conf[:PROMPT][:SIMPLE].dup
IRB.conf[:PROMPT][:FOG][:RETURN] = "%s\n"
@irb.context.prompt_mode = :FOG
@irb.context.workspace = IRB::WorkSpace.new(binding)
services = Fog.services.map{|service| service.to_s}
available_services = if services.length > 1
services[0...-1].join(', ') << ' and ' << services[-1]
else
services.first
end
print "Welcome to fog interactive!\n"
print "Your '#{Fog.credential.to_s}' configuration provides access to #{available_services}.\n"
Fog.services.each do |service|
if service.respond_to?(:startup_notice)
service.send(:startup_notice)
end
end
catch(:IRB_EXIT) { @irb.eval_input }
end