lib/cap_reserve.rb in cap_reserve-0.1.2 vs lib/cap_reserve.rb in cap_reserve-0.1.3
- old
+ new
@@ -8,69 +8,69 @@
Capistrano::Configuration.instance(:must_exist).load do
desc "Reserve environment using RESERVE=minutes"
task :maitre_d do
- env, user, time, force, url, destroy =
- ENV['RESERVE_ENV'], ENV['USER'], ENV['RESERVE'], ENV['FORCE'], ENV['RESERVE_URL'], ENV['DESTROY']
+ begin
+ env, user, time, force, url, destroy =
+ ENV['RESERVE_ENV'], ENV['USER'], ENV['RESERVE'], ENV['FORCE'], ENV['RESERVE_URL'], ENV['DESTROY']
- help = <<-HELP
-FORCE=1 to deploy anyway
-DESTROY=1 to deploy and destroy reservation
+ help = <<-HELP
+ FORCE=1 to deploy anyway
+ DESTROY=1 to deploy and destroy reservation
HELP
- expires_to_string = lambda do |expires|
- left = Time.at(expires) - Time.now
- if left < 60
- "#{left} seconds"
- elsif left / 60 < 60
- "#{sprintf "%.1f", left / 60} minutes"
- else
- "#{sprintf "%.1f", left / 60 / 60} hours"
+ expires_to_string = lambda do |expires|
+ left = Time.at(expires) - Time.now
+ if left < 60
+ "#{left} seconds"
+ elsif left / 60 < 60
+ "#{sprintf "%.1f", left / 60} minutes"
+ else
+ "#{sprintf "%.1f", left / 60 / 60} hours"
+ end
end
- end
- get = lambda do |full_url, hash|
- params = ''
- hash.each do |k, v|
- params << "#{URI.escape(k.to_s)}=#{URI.escape(v.to_s)}&"
+ get = lambda do |full_url, hash|
+ params = ''
+ hash.each do |k, v|
+ params << "#{URI.escape(k.to_s)}=#{URI.escape(v.to_s)}&"
+ end
+ params.chop! # trailing &
+
+ json = open("#{full_url}?#{params}").read
+ Yajl::Parser.parse(json)
end
- params.chop! # trailing &
- puts "#{full_url}?#{params}"
- json = open("#{full_url}?#{params}").read
- Yajl::Parser.parse(json)
- end
-
- create = lambda do |params|
- if time
- get.call("#{url}/reservations/create", {
- :environment => env, :user => user, :seconds => time.to_i * 60
- }.merge(params))
- puts "\n\e[32mReservation created\e[0m: \e[33m#{user}@#{env}\e[0m for \e[33m#{time.to_i} minutes\e[0m\n\n"
- elsif destroy
- res = get.call("#{url}/reservations/destroy", :environment => env)
- if res['status'] == 'reserved'
- puts "\n\e[32mReservation destroyed\e[0m: \e[33m#{res['user']}@#{env}\e[0m (\e[33m#{expires_to_string.call Time.at(res['expires'])}\e[0m left)\n\n"
+ create = lambda do |params|
+ if time
+ get.call("#{url}/reservations/create", {
+ :environment => env, :user => user, :seconds => time.to_i * 60
+ }.merge(params))
+ puts "\n\e[32mReservation created\e[0m: \e[33m#{user}@#{env}\e[0m for \e[33m#{time.to_i} minutes\e[0m\n\n"
+ elsif destroy
+ res = get.call("#{url}/reservations/destroy", :environment => env)
+ if res['status'] == 'reserved'
+ puts "\n\e[32mReservation destroyed\e[0m: \e[33m#{res['user']}@#{env}\e[0m (\e[33m#{expires_to_string.call Time.at(res['expires'])}\e[0m left)\n\n"
+ end
end
end
- end
- if env && user
- if destroy
- create.call({})
- elsif force
- create.call(:force => true)
- else
- res = get.call("#{url}/reservations/show", :environment => env)
- if res['status'] == 'reserved'
- puts "\n\e[31mReservation exists\e[0m: \e[33m#{res['user']}@#{env}\e[0m for \e[33m#{expires_to_string.call Time.at(res['expires'])}\e[0m\n#{help}\n"
- exit 0
- else
+ if env && user
+ if destroy
create.call({})
+ elsif force
+ create.call(:force => true)
+ else
+ res = get.call("#{url}/reservations/show", :environment => env)
+ if res['status'] == 'reserved'
+ puts "\n\e[31mReservation exists\e[0m: \e[33m#{res['user']}@#{env}\e[0m for \e[33m#{expires_to_string.call Time.at(res['expires'])}\e[0m\n#{help}\n"
+ exit 0
+ else
+ create.call({})
+ end
end
end
+ rescue Exception => e
end
-
- exit
end
end
\ No newline at end of file