ubalo 0.8 → 0.9

Sign up to get free protection for your applications and to get access to all the features.
data/bin/ubalo CHANGED
@@ -41,7 +41,7 @@ end
41
41
 
42
42
  def pod
43
43
  unless @pod
44
- @pod = account.pod_or_create_by_name!(pod_dir.name)
44
+ @pod = account.pod_by_name(pod_dir.name)
45
45
  end
46
46
  @pod
47
47
  end
@@ -154,7 +154,7 @@ command :init do |c|
154
154
 
155
155
  c.action do |global_options,options,args|
156
156
  name = options[:name] || hl.ask(" pod name: "){|q| q.echo = true}
157
- pod = account.pod_or_create_by_name!(name)
157
+ pod = account.pod_by_name(name)
158
158
  pod_dir.init(pod.fullname, logger)
159
159
  logger.puts "Success! Next, run ubalo push."
160
160
  end
@@ -176,6 +176,7 @@ end
176
176
  desc 'Show information about a pod'
177
177
  command :pod do |c|
178
178
  c.action do |global_options,options,args|
179
+ pod.refresh!
179
180
  puts pod.printable_result
180
181
  end
181
182
  end
@@ -204,6 +205,26 @@ command :task do |c|
204
205
  end
205
206
  end
206
207
 
208
+ desc 'Stop a task'
209
+ arg_name '<task label>'
210
+ command 'task:stop' do |c|
211
+ c.action do |global_options,options,args|
212
+ if label = args.shift
213
+ task = account.task_by_label!(label)
214
+ else
215
+ task = pod.latest_task
216
+ end
217
+
218
+ task.stop!
219
+
220
+ logger.poll_on("Stopping task #{task.label.inspect}...") do
221
+ task.refresh!
222
+ task.complete?
223
+ end
224
+ puts task.printable_result
225
+ end
226
+ end
227
+
207
228
  desc 'Push files to Ubalo'
208
229
  command :push do |c|
209
230
  c.action do |global_options,options,args|
@@ -231,7 +252,7 @@ pre do |global,command,options,args|
231
252
  end
232
253
 
233
254
  if pod_name = global['pod']
234
- @pod = account.pod_or_create_by_name!(pod_name)
255
+ @pod = account.pod_by_name(pod_name)
235
256
  end
236
257
 
237
258
  @pod_dir = Ubalo::PodDir.new(global['pod-dir'] || ".")
@@ -50,16 +50,14 @@ module Ubalo
50
50
  end
51
51
  end
52
52
 
53
- def pod_by_name!(name)
53
+ def pod_by_name(name)
54
54
  pod_username, pod_name = Util.normalize_pod_name(username, name)
55
- pod = Pod.new(self, pod_username, pod_name, {})
56
- pod.refresh!
55
+ Pod.new(self, pod_username, pod_name, {})
57
56
  end
58
57
 
59
- def pod_or_create_by_name!(name)
60
- pod_username, pod_name = Util.normalize_pod_name(username, name)
61
- pod = Pod.new(self, pod_username, pod_name, {})
62
- pod.update!
58
+ def pod_by_name!(name)
59
+ pod = pod_by_name(name)
60
+ pod.refresh!
63
61
  end
64
62
 
65
63
  def task_by_label!(label)
@@ -6,7 +6,7 @@ module Ubalo
6
6
  new(account, json.fetch('user').fetch('username'), json.fetch('name'), json)
7
7
  end
8
8
 
9
- attr_reader :username, :name, :state, :archive, :updated_at, :compilation_run
9
+ attr_reader :username, :name, :state, :archive, :updated_at, :compilation_process
10
10
 
11
11
  def initialize(account, username, name, attributes)
12
12
  @account = account
@@ -43,6 +43,8 @@ module Ubalo
43
43
  :arg => UbaloJSON.dump(arg)
44
44
  }
45
45
  @account.task_from_json(request(:post, "/tasks", :params => params))
46
+ rescue RestClient::Conflict
47
+ raise Ubalo::Error, "Cannot run pod while compiling"
46
48
  end
47
49
 
48
50
  def latest_task
@@ -54,6 +56,7 @@ module Ubalo
54
56
  end
55
57
 
56
58
  def push_from(pod_dir)
59
+ update!
57
60
  new_archive.activate_from(pod_dir)
58
61
  refresh!
59
62
  end
@@ -82,15 +85,15 @@ module Ubalo
82
85
  s << " name: #{fullname}\n"
83
86
  s << " state: #{state}\n"
84
87
 
85
- if compilation_run
86
- s << "status: #{compilation_run.fetch('exit_result')}\n"
88
+ if compilation_process
89
+ s << "status: #{compilation_process.fetch('exit_result')}\n"
87
90
 
88
- if stdout = compilation_run.fetch('stdout') and stdout.length > 0
91
+ if stdout = compilation_process.fetch('stdout') and stdout.length > 0
89
92
  s << "stdout:\n"
90
93
  s << Util.indent(stdout)
91
94
  end
92
95
 
93
- if stderr = compilation_run.fetch('stderr') and stderr.length > 0
96
+ if stderr = compilation_process.fetch('stderr') and stderr.length > 0
94
97
  s << "stderr:\n"
95
98
  s << Util.indent(stderr)
96
99
  end
@@ -109,7 +112,7 @@ module Ubalo
109
112
  private
110
113
  def update_attributes(attributes)
111
114
  @state = attributes['state']
112
- @compilation_run = attributes['compilation_run']
115
+ @compilation_process = attributes['compilation_process']
113
116
  if archive_attr = attributes['archive']
114
117
  @archive = @account.archive_from_json(archive_attr)
115
118
  end
@@ -16,10 +16,16 @@ module Ubalo
16
16
  with_temp_archive do |archive_name|
17
17
  pod_dir.make_archive(archive_name)
18
18
  Util.put_targz(put_url, archive_name)
19
- request(:put, "/activate")
19
+ activate
20
20
  end
21
21
  end
22
22
 
23
+ def activate
24
+ request(:put, "/activate")
25
+ rescue RestClient::Conflict
26
+ raise Ubalo::Error, "Pod is already compiling"
27
+ end
28
+
23
29
  def extract_to(pod_dir)
24
30
  with_temp_archive do |archive_name|
25
31
  Util.get_targz(get_url, archive_name)
@@ -26,6 +26,11 @@ module Ubalo
26
26
  state == 'exited'
27
27
  end
28
28
 
29
+ def stop!
30
+ request(:put, "/stop")
31
+ refresh!
32
+ end
33
+
29
34
  def inspect
30
35
  "#<Task #{label.inspect} state=#{state.inspect}>"
31
36
  end
@@ -110,7 +110,9 @@ module Ubalo
110
110
  raise "don't understand request method #{method.inspect}"
111
111
  end
112
112
 
113
- if options.delete(:parse) == false
113
+ if response.code == 204
114
+ nil
115
+ elsif options.delete(:parse) == false
114
116
  response
115
117
  else
116
118
  JSON.load(response)
@@ -1,6 +1,6 @@
1
1
  module Ubalo
2
2
  unless const_defined?('VERSION')
3
- VERSION = "0.8"
3
+ VERSION = "0.9"
4
4
  end
5
5
 
6
6
  def self.version
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ubalo
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.8'
4
+ version: '0.9'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-12 00:00:00.000000000 Z
12
+ date: 2012-04-13 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: gli
16
- requirement: &70170534374580 !ruby/object:Gem::Requirement
16
+ requirement: &70214700595780 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70170534374580
24
+ version_requirements: *70214700595780
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: highline
27
- requirement: &70170534373220 !ruby/object:Gem::Requirement
27
+ requirement: &70214700594160 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70170534373220
35
+ version_requirements: *70214700594160
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: json
38
- requirement: &70170534371160 !ruby/object:Gem::Requirement
38
+ requirement: &70214700592680 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70170534371160
46
+ version_requirements: *70214700592680
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rest-client
49
- requirement: &70170534390100 !ruby/object:Gem::Requirement
49
+ requirement: &70214700591800 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 1.6.3
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70170534390100
57
+ version_requirements: *70214700591800
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: archive-tar-minitar
60
- requirement: &70170534389520 !ruby/object:Gem::Requirement
60
+ requirement: &70214700591020 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: '0'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *70170534389520
68
+ version_requirements: *70214700591020
69
69
  description: CLI and API client for Ubalo
70
70
  email: dev@ubalo.com
71
71
  executables:
@@ -98,7 +98,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
98
98
  version: '0'
99
99
  segments:
100
100
  - 0
101
- hash: -2627822707844365386
101
+ hash: -2863097484302400668
102
102
  required_rubygems_version: !ruby/object:Gem::Requirement
103
103
  none: false
104
104
  requirements:
@@ -107,10 +107,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
107
107
  version: '0'
108
108
  segments:
109
109
  - 0
110
- hash: -2627822707844365386
110
+ hash: -2863097484302400668
111
111
  requirements: []
112
112
  rubyforge_project:
113
- rubygems_version: 1.8.11
113
+ rubygems_version: 1.8.10
114
114
  signing_key:
115
115
  specification_version: 3
116
116
  summary: CLI and API client for Ubalo