ubalo 0.0.16 → 0.0.17

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/bin/ubalo +31 -9
  2. data/lib/ubalo.rb +20 -19
  3. data/lib/ubalo/version.rb +3 -0
  4. metadata +11 -10
data/bin/ubalo CHANGED
@@ -69,6 +69,9 @@ program_desc 'Command-line access to ubalo.com.'
69
69
  desc "Change the connect url"
70
70
  flag 'connect-url'
71
71
 
72
+ desc "Prints the current version of the Ubalo gem"
73
+ switch 'version'
74
+
72
75
  desc 'Display authentication information'
73
76
  command :whoami do |c|
74
77
  c.action do |global_options,options,args|
@@ -289,7 +292,7 @@ command :stop do |c|
289
292
  end
290
293
  end
291
294
 
292
- desc 'Add an ssh key (defaults to ~/.ssh/id_rsa.pub)'
295
+ desc 'Upload your ssh key (defaults to ~/.ssh/id_rsa.pub)'
293
296
  arg_name '<file containing ssh key>'
294
297
  command :add_key do |c|
295
298
  c.action do |global_options,options,args|
@@ -300,10 +303,10 @@ command :add_key do |c|
300
303
  end
301
304
  end
302
305
 
303
- desc 'Clear all ssh keys'
304
- command :clear_keys do |c|
306
+ desc 'Clear your ssh key'
307
+ command :clear_key do |c|
305
308
  c.action do |global_options,options,args|
306
- puts ubalo.clear_keys.fetch('message')
309
+ puts ubalo.clear_key.fetch('message')
307
310
  end
308
311
  end
309
312
 
@@ -385,7 +388,17 @@ desc 'Edit your environment'
385
388
  command :edit do |c|
386
389
  c.action do |global_options,options,args|
387
390
  username = args.first || local_username
388
- ubalo.ssh(username)
391
+ puts "Opening an ssh connection to edit the environment belonging to #{username}."
392
+ ubalo.ssh(username, 'edit-environment')
393
+ end
394
+ end
395
+
396
+ desc 'Edit your shared data'
397
+ command "shared:edit" do |c|
398
+ c.action do |global_options,options,args|
399
+ username = args.first || local_username
400
+ puts "Opening an ssh connection to edit the shared data belonging to #{username}."
401
+ ubalo.ssh(username, 'edit-shared-data')
389
402
  end
390
403
  end
391
404
 
@@ -439,7 +452,7 @@ command :publish do |c|
439
452
  $stderr.print "Publishing #{pod_name}..."
440
453
  response = ubalo.publish(pod_name)
441
454
  $stderr.puts " done."
442
- $stderr.puts "Your pod is now available at #{response.fetch('pod_url')}."
455
+ $stderr.puts "Your pod is now available at #{response.fetch('url')}."
443
456
  end
444
457
  end
445
458
 
@@ -456,19 +469,28 @@ command :unpublish do |c|
456
469
  end
457
470
  end
458
471
 
472
+ def unauthorized_command?(command)
473
+ command && [:login, :help].include?(command.name)
474
+ end
475
+
459
476
  pre do |global,command,options,args|
460
477
  config = Ubalo.config
461
- connect_url = global['connect-url'] || config['connect-url'] || "https://ubalo.com/api"
478
+ connect_url = global['connect-url'] || config['connect-url'] || "https://ubalo.com"
479
+
480
+ if global[:version]
481
+ print "Ubalo version #{Ubalo::VERSION}"
482
+ raise UbaloExit, 0
483
+ end
462
484
 
463
485
  # When logging in, don't use the authorization:
464
- unless command && command.name == :login
486
+ unless unauthorized_command?(command)
465
487
  if host_config = config[connect_url]
466
488
  @local_username = host_config['username']
467
489
  authorization = host_config['authorization']
468
490
  end
469
491
  end
470
492
 
471
- unless authorization or (command && command.name == :login)
493
+ unless authorization or unauthorized_command?(command)
472
494
  raise UbaloMessage, "No credentials found. Please run 'ubalo login'."
473
495
  end
474
496
 
data/lib/ubalo.rb CHANGED
@@ -62,7 +62,7 @@ class Ubalo
62
62
  else
63
63
  name = pod['name']
64
64
  end
65
- " #{name} - #{pod['language']}"
65
+ " #{name} - #{pod['language_name']}"
66
66
  end
67
67
 
68
68
  private
@@ -103,22 +103,22 @@ class Ubalo
103
103
  end
104
104
 
105
105
  def get(action, params={})
106
- url = "#{base_url}/#{action}"
106
+ url = "#{base_url}/api/#{action}"
107
107
  url_get(url, params)
108
108
  end
109
109
 
110
110
  def url_get url, params={}
111
- response = RestClient.get url, add_authorization(:params => params)
111
+ response = RestClient.get url, add_headers(:params => params, :accept => :json)
112
112
  parse(response)
113
113
  end
114
114
 
115
115
  def post(action, params={})
116
- url = "#{base_url}/#{action}"
116
+ url = "#{base_url}/api/#{action}"
117
117
  url_post(url, params)
118
118
  end
119
119
 
120
120
  def url_post(url, params={})
121
- response = RestClient.post url, params, add_authorization({})
121
+ response = RestClient.post url, params, add_headers(:accept => :json)
122
122
  parse(response)
123
123
  end
124
124
 
@@ -162,8 +162,8 @@ class Ubalo
162
162
  post(:upload_key, :key => key)
163
163
  end
164
164
 
165
- def clear_keys
166
- post(:clear_keys)
165
+ def clear_key
166
+ post(:clear_key)
167
167
  end
168
168
 
169
169
  def download(name)
@@ -183,10 +183,9 @@ class Ubalo
183
183
  get(:pods)
184
184
  end
185
185
 
186
- def ssh(username)
187
- puts "Opening an ssh connection to edit the environment belonging to #{username}."
188
- ssh_command = "ssh -o SendEnv='UBALO_DISTRIBUTION_OWNER TERM' -tq #{ssh_path}"
189
- Process.spawn({'UBALO_DISTRIBUTION_OWNER' => username}, ssh_command)
186
+ def ssh(username, action)
187
+ ssh_command = "ssh -o SendEnv='UBALO_OWNER_NAME UBALO_ACTION TERM' -tq #{ssh_path}"
188
+ Process.spawn({'UBALO_OWNER_NAME' => username, 'UBALO_ACTION' => action}, ssh_command)
190
189
  pid, status = Process.wait2
191
190
  unless status.success?
192
191
  abort "Error running ssh"
@@ -194,8 +193,8 @@ class Ubalo
194
193
  end
195
194
 
196
195
  def scp(username, opts, args)
197
- scp_command = "scp -o SendEnv=UBALO_DISTRIBUTION_OWNER #{opts} #{args}"
198
- Process.spawn({'UBALO_DISTRIBUTION_OWNER' => username}, scp_command)
196
+ scp_command = "scp -o SendEnv='UBALO_OWNER_NAME UBALO_ACTION' #{opts} #{args}"
197
+ Process.spawn({'UBALO_OWNER_NAME' => username, 'UBALO_ACTION' => 'edit-environment'}, scp_command)
199
198
  pid, status = Process.wait2
200
199
  unless status.success?
201
200
  abort "Error running cp"
@@ -265,21 +264,23 @@ class Ubalo
265
264
  end
266
265
 
267
266
  def publish pod_name
268
- post(:publish, :pod_name => pod_name)
267
+ url_post("#{base_url}/pods/#{pod_name}/publish")
269
268
  end
270
269
 
271
270
  def unpublish pod_name
272
- post(:unpublish, :pod_name => pod_name)
271
+ url_post("#{base_url}/pods/#{pod_name}/unpublish")
273
272
  end
274
273
 
275
274
  private
276
275
 
277
- def add_authorization(headers)
276
+ def add_headers headers
277
+ # Add authorization headers.
278
278
  if authorization
279
- headers.merge(:authorization => authorization)
280
- else
281
- headers
279
+ headers.merge!(:authorization => authorization)
282
280
  end
281
+
282
+ # Add version header.
283
+ headers.merge!('X-Ubalo-Version' => Ubalo::VERSION)
283
284
  end
284
285
 
285
286
  def parse(result)
@@ -0,0 +1,3 @@
1
+ class Ubalo
2
+ VERSION = "0.0.17"
3
+ end
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.0.16
4
+ version: 0.0.17
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-01-03 00:00:00.000000000Z
12
+ date: 2012-01-12 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: gli
16
- requirement: &70254281845560 !ruby/object:Gem::Requirement
16
+ requirement: &70162737169520 !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: *70254281845560
24
+ version_requirements: *70162737169520
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: highline
27
- requirement: &70254281845120 !ruby/object:Gem::Requirement
27
+ requirement: &70162737168820 !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: *70254281845120
35
+ version_requirements: *70162737168820
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: json
38
- requirement: &70254281844640 !ruby/object:Gem::Requirement
38
+ requirement: &70162737168140 !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: *70254281844640
46
+ version_requirements: *70162737168140
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rest-client
49
- requirement: &70254281844000 !ruby/object:Gem::Requirement
49
+ requirement: &70162737167480 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: 1.6.3
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70254281844000
57
+ version_requirements: *70162737167480
58
58
  description: CLI and API client for Ubalo
59
59
  email: dev@ubalo.com
60
60
  executables:
@@ -62,6 +62,7 @@ executables:
62
62
  extensions: []
63
63
  extra_rdoc_files: []
64
64
  files:
65
+ - lib/ubalo/version.rb
65
66
  - lib/ubalo.rb
66
67
  - bin/ubalo
67
68
  homepage: http://ubalo.com/