morpheus-cli 0.9.6 → 0.9.7

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 225abeec72be29393b66192db842883e5a6a0260
4
- data.tar.gz: ddcee03ffae03cc3ade5f42d727bda5da4481e14
3
+ metadata.gz: 7f4478e92b5478811a8d5520c5295009bc6a9547
4
+ data.tar.gz: 7bacea0771637cf3e033e5c962bbe2f1e0bd67f6
5
5
  SHA512:
6
- metadata.gz: 5396e4da45c594a30ead62e81349439edafff63faaeae9a1b11cd18d684973d313487c4a67193389c461d877ef6c4e2c0cd2d94a40aa3e04d2834e5dfcaa2bc7
7
- data.tar.gz: 06b4067301d92403d0190c2290cbf02a99f1c4707a142c5162a508a3372417c060feb8ef0eafdfc25c3159e1c5c885688ad0b45e2329c96c769341d8e26ca0d4
6
+ metadata.gz: 3039dd65f5c4a4e56c9efcb89db550183e8c2e0ed36ccafcd97a2ab2efb7763ca8d1f4ee7a32d01e1f6ee20e5f9c44681d96f11bcc658d8fe21a33bc19513a9e
7
+ data.tar.gz: d876f23eafb32db8354b7805dde7814b477c37b966adeb4e50a1e02834fa14684073e5e46706bb3f8c716a94a6f05cf6a04bf5f91e600ea4e4d88187e2945e95
@@ -148,17 +148,18 @@ class Morpheus::Cli::KeyPairs
148
148
  # exit 1
149
149
  # end
150
150
  account_name = nil
151
+ keypair_name = args[0]
151
152
  options = {}
152
153
  optparse = OptionParser.new do|opts|
153
- opts.banner = "Usage: morpheus key-pairs add [options]"
154
+ opts.banner = "Usage: morpheus key-pairs add [name] [options]"
154
155
 
155
156
  opts.on( '-a', '--account ACCOUNT', "Account Name" ) do |val|
156
157
  account_name = val
157
158
  end
158
159
 
159
160
  opts.on( '', '--public-key-file FILENAME', "Public Key File" ) do |filename|
160
- if File.exists?(filename)
161
- options['publicKey'] = File.read(filename)
161
+ if File.exists?(File.expand_path(filename))
162
+ options['publicKey'] = File.read(File.expand_path(filename))
162
163
  options[:options] ||= {}
163
164
  options[:options]['publicKey'] = options['publicKey']
164
165
  else
@@ -174,8 +175,8 @@ class Morpheus::Cli::KeyPairs
174
175
  end
175
176
 
176
177
  opts.on( '', '--private-key-file FILENAME', "Private Key File" ) do |filename|
177
- if File.exists?(filename)
178
- options['privateKey'] = File.read(filename)
178
+ if File.exists?(File.expand_path(filename))
179
+ options['privateKey'] = File.read(File.expand_path(filename))
179
180
  options[:options] ||= {}
180
181
  options[:options]['privateKey'] = options['privateKey']
181
182
  else
@@ -192,6 +193,10 @@ class Morpheus::Cli::KeyPairs
192
193
 
193
194
  Morpheus::Cli::CliCommand.genericOptions(opts,options)
194
195
  end
196
+ if args.count < 1
197
+ puts "\n#{optparse}\n\n"
198
+ exit 1
199
+ end
195
200
  optparse.parse(args)
196
201
 
197
202
  connect(options)
@@ -215,12 +220,13 @@ class Morpheus::Cli::KeyPairs
215
220
  print_red_alert "privateKey is required"
216
221
  exit 1
217
222
  end
223
+ params['name'] = args[0]
218
224
 
219
- key_pair_payload = params.select {|k,v| ['name', 'publicKey', 'privateKey'].include?(k) }
225
+ key_pair_payload = params.select {|k,v| ['name','publicKey', 'privateKey'].include?(k) }
220
226
 
221
227
  request_payload = {keyPair: key_pair_payload}
222
228
  response = @key_pairs_interface.create(account_id, request_payload)
223
- print "\n", cyan, "Account #{key_pair_payload['name']} added", reset, "\n\n"
229
+ print "\n", cyan, "Keypair #{key_pair_payload['name']} added", reset, "\n\n"
224
230
  rescue RestClient::Exception => e
225
231
  ::Morpheus::Cli::ErrorHandler.new.print_rest_exception(e)
226
232
  exit 1
@@ -378,7 +384,6 @@ private
378
384
 
379
385
  def add_key_pair_option_types
380
386
  [
381
- {'fieldName' => 'name', 'fieldLabel' => 'Name', 'type' => 'text', 'required' => true, 'displayOrder' => 1},
382
387
  {'fieldName' => 'publicKey', 'fieldLabel' => 'Public Key', 'type' => 'text', 'required' => true, 'displayOrder' => 2},
383
388
  {'fieldName' => 'privateKey', 'fieldLabel' => 'Private Key', 'type' => 'text', 'required' => true, 'displayOrder' => 3},
384
389
  ]
@@ -1,5 +1,5 @@
1
1
  require 'term/ansicolor'
2
-
2
+ require 'readline'
3
3
  module Morpheus
4
4
  module Cli
5
5
  module OptionTypes
@@ -138,8 +138,11 @@ module Morpheus
138
138
  value = source_option['value']
139
139
  end
140
140
  while !value_found do
141
- print "#{option_type['fieldLabel']}#{option_type['fieldAddOn'] ? ('(' + option_type['fieldAddOn'] + ') ') : '' }#{!option_type['required'] ? ' (optional)' : ''} ['?' for options]: "
142
- input = $stdin.gets.chomp!
141
+ Readline.completion_append_character = ""
142
+ Readline.basic_word_break_characters = ''
143
+ Readline.completion_proc = proc {|s| source_options.collect{|opt| opt['name']}.grep(/^#{Regexp.escape(s)}/)}
144
+ input = Readline.readline("#{option_type['fieldLabel']}#{option_type['fieldAddOn'] ? ('(' + option_type['fieldAddOn'] + ') ') : '' }#{!option_type['required'] ? ' (optional)' : ''} ['?' for options]: ", false).to_s
145
+ input = input.chomp.strip
143
146
  if option_type['optionSource']
144
147
  source_option = source_options.find{|b| b['name'] == input || (!b['value'].nil? && b['value'].to_s == input) || (b['value'].nil? && input.empty?)}
145
148
  if source_option
@@ -6,6 +6,7 @@ require 'optparse'
6
6
  require 'table_print'
7
7
  require 'morpheus/cli/cli_command'
8
8
  require "shellwords"
9
+ require 'readline'
9
10
 
10
11
 
11
12
  class Morpheus::Cli::Shell
@@ -13,6 +14,17 @@ class Morpheus::Cli::Shell
13
14
  include Term::ANSIColor
14
15
  def initialize()
15
16
  @appliance_name, @appliance_url = Morpheus::Cli::Remote.active_appliance
17
+ @auto_complete = proc do |s|
18
+ command_list = Morpheus::Cli::CliRegistry.all.keys
19
+ result = command_list.grep(/^#{Regexp.escape(s)}/)
20
+ if result.nil? || result.empty?
21
+ Readline::FILENAME_COMPLETION_PROC.call(s)
22
+ else
23
+ result
24
+ end
25
+ end
26
+
27
+
16
28
  end
17
29
 
18
30
  def handle(args)
@@ -41,8 +53,12 @@ class Morpheus::Cli::Shell
41
53
  remote_handler = Morpheus::Cli::Remote.new()
42
54
  exit = false
43
55
  while !exit do
44
- print cyan,"morpheus > ",reset
45
- input = $stdin.gets.chomp!
56
+ Readline.completion_append_character = " "
57
+ Readline.completion_proc = @auto_complete
58
+ Readline.basic_word_break_characters = "\t\n\"\‘`@$><=;|&{( "
59
+ input = Readline.readline("#{cyan}morpheus> #{reset}", true).to_s
60
+ # print cyan,"morpheus > ",reset
61
+ # input = $stdin.gets.chomp!
46
62
  if !input.empty?
47
63
 
48
64
  if input == 'exit'
@@ -85,6 +101,7 @@ class Morpheus::Cli::Shell
85
101
  puts "Argument Syntax Error..."
86
102
  rescue SystemExit, Interrupt
87
103
  # nothing to do
104
+ puts "Interrupted..."
88
105
  rescue => e
89
106
  print red, "\n", e.message, "\n", reset
90
107
  print e.backtrace.join("\n"), "\n"
@@ -1,5 +1,5 @@
1
1
  module Morpheus
2
2
  module Cli
3
- VERSION = "0.9.6"
3
+ VERSION = "0.9.7"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: morpheus-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.6
4
+ version: 0.9.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Estes
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-08-31 00:00:00.000000000 Z
13
+ date: 2016-09-01 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler