cap_reserve 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/cap_reserve.gemspec +1 -1
- data/lib/cap_reserve.rb +48 -48
- metadata +3 -3
data/cap_reserve.gemspec
CHANGED
data/lib/cap_reserve.rb
CHANGED
@@ -10,67 +10,67 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
10
10
|
|
11
11
|
desc "Reserve environment using RESERVE=minutes"
|
12
12
|
task :maitre_d do
|
13
|
-
|
14
|
-
|
13
|
+
begin
|
14
|
+
env, user, time, force, url, destroy =
|
15
|
+
ENV['RESERVE_ENV'], ENV['USER'], ENV['RESERVE'], ENV['FORCE'], ENV['RESERVE_URL'], ENV['DESTROY']
|
15
16
|
|
16
|
-
|
17
|
-
FORCE=1 to deploy anyway
|
18
|
-
DESTROY=1 to deploy and destroy reservation
|
17
|
+
help = <<-HELP
|
18
|
+
FORCE=1 to deploy anyway
|
19
|
+
DESTROY=1 to deploy and destroy reservation
|
19
20
|
HELP
|
20
21
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
22
|
+
expires_to_string = lambda do |expires|
|
23
|
+
left = Time.at(expires) - Time.now
|
24
|
+
if left < 60
|
25
|
+
"#{left} seconds"
|
26
|
+
elsif left / 60 < 60
|
27
|
+
"#{sprintf "%.1f", left / 60} minutes"
|
28
|
+
else
|
29
|
+
"#{sprintf "%.1f", left / 60 / 60} hours"
|
30
|
+
end
|
29
31
|
end
|
30
|
-
end
|
31
32
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
33
|
+
get = lambda do |full_url, hash|
|
34
|
+
params = ''
|
35
|
+
hash.each do |k, v|
|
36
|
+
params << "#{URI.escape(k.to_s)}=#{URI.escape(v.to_s)}&"
|
37
|
+
end
|
38
|
+
params.chop! # trailing &
|
38
39
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
end
|
40
|
+
json = open("#{full_url}?#{params}").read
|
41
|
+
Yajl::Parser.parse(json)
|
42
|
+
end
|
43
43
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
44
|
+
create = lambda do |params|
|
45
|
+
if time
|
46
|
+
get.call("#{url}/reservations/create", {
|
47
|
+
:environment => env, :user => user, :seconds => time.to_i * 60
|
48
|
+
}.merge(params))
|
49
|
+
puts "\n\e[32mReservation created\e[0m: \e[33m#{user}@#{env}\e[0m for \e[33m#{time.to_i} minutes\e[0m\n\n"
|
50
|
+
elsif destroy
|
51
|
+
res = get.call("#{url}/reservations/destroy", :environment => env)
|
52
|
+
if res['status'] == 'reserved'
|
53
|
+
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"
|
54
|
+
end
|
54
55
|
end
|
55
56
|
end
|
56
|
-
end
|
57
57
|
|
58
|
-
|
59
|
-
|
60
|
-
create.call({})
|
61
|
-
elsif force
|
62
|
-
create.call(:force => true)
|
63
|
-
else
|
64
|
-
res = get.call("#{url}/reservations/show", :environment => env)
|
65
|
-
if res['status'] == 'reserved'
|
66
|
-
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"
|
67
|
-
exit 0
|
68
|
-
else
|
58
|
+
if env && user
|
59
|
+
if destroy
|
69
60
|
create.call({})
|
61
|
+
elsif force
|
62
|
+
create.call(:force => true)
|
63
|
+
else
|
64
|
+
res = get.call("#{url}/reservations/show", :environment => env)
|
65
|
+
if res['status'] == 'reserved'
|
66
|
+
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"
|
67
|
+
exit 0
|
68
|
+
else
|
69
|
+
create.call({})
|
70
|
+
end
|
70
71
|
end
|
71
72
|
end
|
73
|
+
rescue Exception => e
|
72
74
|
end
|
73
|
-
|
74
|
-
exit
|
75
75
|
end
|
76
76
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cap_reserve
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 29
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 3
|
10
|
+
version: 0.1.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Winton Welsh
|