vmc 0.3.14.beta.3 → 0.3.14.beta.4

Sign up to get free protection for your applications and to get access to all the features.
data/config/clients.yml CHANGED
@@ -8,4 +8,7 @@ mongodb:
8
8
  mongo: mongo --host ${host} --port ${port} -u ${user} -p ${password} ${name}
9
9
 
10
10
  postgresql:
11
- psql: PGPASSWORD='${password}' psql -h ${host} -p ${port} -d ${name} -U ${user} -w
11
+ psql:
12
+ command: psql -h ${host} -p ${port} -d ${name} -U ${user} -w
13
+ environment:
14
+ - PGPASSWORD='${password}'
@@ -151,21 +151,24 @@ module VMC::Cli::Command
151
151
  start_tunnel(service, port, conn_info, auth)
152
152
 
153
153
  clients = get_clients_for(info[:vendor])
154
+
154
155
  if clients.empty?
155
- which = "none"
156
+ client_name ||= "none"
156
157
  else
157
- which = client_name || ask(
158
+ client_name ||= ask(
158
159
  "Which client would you like to start?",
159
160
  :choices => ["none"] + clients.keys,
160
161
  :indexed => true
161
162
  )
162
163
  end
163
164
 
164
- if which == "none"
165
+ if client_name == "none"
165
166
  wait_for_tunnel_end
166
167
  else
167
168
  wait_for_tunnel_start(port)
168
- start_local_prog(which, local_prog_cmdline(clients[which], port, conn_info))
169
+ unless start_local_prog(clients[client_name], conn_info, port)
170
+ err "'#{client_name}' executation failed; is it in your $PATH?"
171
+ end
169
172
  end
170
173
  end
171
174
 
@@ -231,9 +231,8 @@ module VMC::Cli
231
231
  @local_tunnel_thread.join
232
232
  end
233
233
 
234
- def local_prog_cmdline(command, local_port, tunnel_info)
235
- cmd = command.dup
236
- cmd.gsub!(/\$\{\s*([^\}]+)\s*\}/) do
234
+ def resolve_symbols(str, info, local_port)
235
+ str.gsub(/\$\{\s*([^\}]+)\s*\}/) do
237
236
  case $1
238
237
  when "host"
239
238
  # TODO: determine proper host
@@ -241,20 +240,31 @@ module VMC::Cli
241
240
  when "port"
242
241
  local_port
243
242
  when "user", "username"
244
- tunnel_info["username"]
243
+ info["username"]
245
244
  else
246
- tunnel_info[$1] || err("Unknown symbol '#{$1}'")
245
+ info[$1] || err("Unknown symbol '#{$1}'")
247
246
  end
248
247
  end
249
- cmd
250
248
  end
251
249
 
252
- def start_local_prog(which, cmdline)
250
+ def start_local_prog(client, info, port)
251
+ case client
252
+ when Hash
253
+ cmdline = resolve_symbols(client["command"], info, port)
254
+ client["environment"].each do |e|
255
+ e =~ /([^=]+)=(["']?)([^"']*)\2/
256
+ ENV[$1] = resolve_symbols($3, info, port)
257
+ end
258
+ when String
259
+ cmdline = resolve_symbols(client, info, port)
260
+ else
261
+ err "Unknown client info: #{client.inspect}."
262
+ end
263
+
253
264
  display "Launching '#{cmdline}'"
254
265
  display ''
255
- unless system(cmdline)
256
- err "Failed to start '#{which}' client; is it in your $PATH?"
257
- end
266
+
267
+ system(cmdline)
258
268
  end
259
269
 
260
270
  def push_caldecott(token)
data/lib/cli/version.rb CHANGED
@@ -2,6 +2,6 @@ module VMC
2
2
  module Cli
3
3
  # This version number is used as the RubyGem release version.
4
4
  # The internal VMC version number is VMC::VERSION.
5
- VERSION = '0.3.14.beta.3'
5
+ VERSION = '0.3.14.beta.4'
6
6
  end
7
7
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: vmc
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease: 7
5
- version: 0.3.14.beta.3
5
+ version: 0.3.14.beta.4
6
6
  platform: ruby
7
7
  authors:
8
8
  - VMware
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-11-14 00:00:00 -08:00
13
+ date: 2011-11-16 00:00:00 -08:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency