netvbox 0.0.4 → 0.0.5

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/bin/netvbox CHANGED
@@ -3,6 +3,7 @@
3
3
  require 'netvbox/vm_set_config'
4
4
  require 'netvbox/vm_set_manager'
5
5
  require 'netvbox/printing_delegator'
6
+ require 'netvbox/wizard_delegator'
6
7
  require 'netvbox/version'
7
8
 
8
9
  NETVBOX_HOME = "#{ENV['HOME']}/.netvbox"
@@ -38,6 +39,9 @@ def print_help
38
39
  puts ' uses the default vm set'
39
40
  puts ' useset <set name>'
40
41
  puts ' uses the vm set with the specified name'
42
+ puts
43
+ puts '* Tip: You will be prompted for input if you leave out sub-command'
44
+ puts ' arguments (e.g. netvbox add)'
41
45
  end
42
46
 
43
47
  def expect_args(num_expected_args)
@@ -53,40 +57,50 @@ def process_args
53
57
  command = ARGV[0]
54
58
  vm_set_manager = NetVbox::VmSetManager.new(NETVBOX_HOME)
55
59
  vm_set = vm_set_manager.current_set
56
- delegator = NetVbox::PrintingDelegator.new(vm_set_manager, vm_set)
57
- case command
58
- when 'add'
59
- expect_args(6) do
60
- hostname, username, password, vm_name, snapshot_name = ARGV[1..5]
61
- delegator.add_vm(hostname, username, password, vm_name, snapshot_name)
62
- end
63
- when 'list'
64
- delegator.list_vms
65
- when 'load'
66
- delegator.load_snapshots
67
- when 'poweroff'
68
- delegator.poweroff_all
69
- when 'remove'
70
- expect_args(5) do
71
- hostname, username, vm_name, snapshot_name = ARGV[1..4]
72
- delegator.remove_vm(hostname, username, vm_name, snapshot_name)
60
+ printing_delegator = NetVbox::PrintingDelegator.new(vm_set_manager, vm_set)
61
+ wizard_delegator = NetVbox::WizardDelegator.new(printing_delegator)
62
+ begin
63
+ case command
64
+ when 'add'
65
+ return wizard_delegator.add_vm if ARGV.length == 1
66
+ expect_args(6) do
67
+ hostname, username, password, vm_name, snapshot_name = ARGV[1..5]
68
+ printing_delegator.add_vm(hostname, username, password, vm_name, snapshot_name)
69
+ end
70
+ when 'list'
71
+ printing_delegator.list_vms
72
+ when 'load'
73
+ printing_delegator.load_snapshots
74
+ when 'poweroff'
75
+ printing_delegator.poweroff_all
76
+ when 'remove'
77
+ return wizard_delegator.remove_vm if ARGV.length == 1
78
+ expect_args(5) do
79
+ hostname, username, vm_name, snapshot_name = ARGV[1..4]
80
+ printing_delegator.remove_vm(hostname, username, vm_name, snapshot_name)
81
+ end
82
+ when 'status'
83
+ printing_delegator.print_status
84
+ when 'createset'
85
+ return wizard_delegator.create_set if ARGV.length == 1
86
+ expect_args(2) {printing_delegator.create_set ARGV[1]}
87
+ when 'currentset'
88
+ printing_delegator.print_current_set
89
+ when 'listsets'
90
+ printing_delegator.list_sets
91
+ when 'removeset'
92
+ return wizard_delegator.remove_set if ARGV.length == 1
93
+ expect_args(2) {printing_delegator.remove_set ARGV[1]}
94
+ when 'usedefaultset'
95
+ printing_delegator.use_default_set
96
+ when 'useset'
97
+ return wizard_delegator.use_set if ARGV.length == 1
98
+ expect_args(2) {printing_delegator.use_set ARGV[1]}
99
+ else
100
+ puts "Unknown command: #{command}. See help."
73
101
  end
74
- when 'status'
75
- delegator.print_status
76
- when 'createset'
77
- expect_args(2) {delegator.create_set ARGV[1]}
78
- when 'currentset'
79
- delegator.print_current_set
80
- when 'listsets'
81
- delegator.list_sets
82
- when 'removeset'
83
- expect_args(2) {delegator.remove_set ARGV[1]}
84
- when 'usedefaultset'
85
- delegator.use_default_set
86
- when 'useset'
87
- expect_args(2) {delegator.use_set ARGV[1]}
88
- else
89
- puts "Unknown command: #{command}. See help."
102
+ rescue Interrupt
103
+ puts
90
104
  end
91
105
  end
92
106
 
@@ -1,3 +1,3 @@
1
1
  module NetVbox
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
@@ -0,0 +1,63 @@
1
+ require 'netvbox/printing_delegator'
2
+ require 'highline/import'
3
+
4
+ module NetVbox
5
+ class WizardDelegator
6
+ def initialize(printing_delegator)
7
+ @printing_delegator = printing_delegator
8
+ end
9
+
10
+ def add_vm
11
+ hostname = get_value 'Enter hostname of VM host: '
12
+ username = get_value 'Enter ssh username: '
13
+ pw = get_password 'Enter ssh password: '
14
+ vm_name = get_value 'Enter VM name: '
15
+ snapshot_name = get_value 'Enter snapshot name: '
16
+ @printing_delegator.add_vm(hostname, username, pw, vm_name, snapshot_name)
17
+ end
18
+
19
+ def remove_vm
20
+ hostname = get_value 'Enter hostname of VM host: '
21
+ username = get_value 'Enter ssh username: '
22
+ vm_name = get_value 'Enter VM name: '
23
+ snapshot_name = get_value 'Enter snapshot name: '
24
+ @printing_delegator.remove_vm(hostname, username, vm_name, snapshot_name)
25
+ end
26
+
27
+ def create_set
28
+ set_name = get_value 'Enter set name: '
29
+ @printing_delegator.create_set set_name
30
+ end
31
+
32
+ def remove_set
33
+ set_name = get_value 'Enter set name: '
34
+ @printing_delegator.remove_set set_name
35
+ end
36
+
37
+ def use_set
38
+ set_name = get_value 'Enter set name: '
39
+ @printing_delegator.use_set set_name
40
+ end
41
+
42
+ private
43
+
44
+ def get_value(prompt)
45
+ input = ''
46
+ while input.empty?
47
+ print prompt
48
+ input = STDIN.gets.chomp
49
+ puts 'Cannot be blank' if input.empty?
50
+ end
51
+ input
52
+ end
53
+
54
+ def get_password(prompt)
55
+ pw = ''
56
+ while pw.empty?
57
+ pw = ask(prompt) {|q| q.echo = false}
58
+ puts 'Cannot be blank' if pw.empty?
59
+ end
60
+ pw
61
+ end
62
+ end
63
+ end
data/netvbox.gemspec CHANGED
@@ -12,8 +12,9 @@ Gem::Specification.new do |s|
12
12
 
13
13
  s.files = `git ls-files`.split("\n")
14
14
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
15
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
15
+ s.executables = `git ls-files -- bin/*`.split("\n").map{|f| File.basename(f)}
16
16
  s.require_paths = ["lib"]
17
17
 
18
- s.add_dependency "net-ssh"
18
+ s.add_dependency 'net-ssh'
19
+ s.add_dependency 'highline'
19
20
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: netvbox
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
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: 2011-12-01 00:00:00.000000000 Z
12
+ date: 2011-12-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: net-ssh
16
- requirement: &13997300 !ruby/object:Gem::Requirement
16
+ requirement: &8515500 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,7 +21,18 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *13997300
24
+ version_requirements: *8515500
25
+ - !ruby/object:Gem::Dependency
26
+ name: highline
27
+ requirement: &8529760 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *8529760
25
36
  description:
26
37
  email:
27
38
  - hsu.dennis@gmail.com
@@ -42,6 +53,7 @@ files:
42
53
  - lib/netvbox/vm_set.rb
43
54
  - lib/netvbox/vm_set_config.rb
44
55
  - lib/netvbox/vm_set_manager.rb
56
+ - lib/netvbox/wizard_delegator.rb
45
57
  - netvbox.gemspec
46
58
  homepage: https://github.com/dhsu/netvbox
47
59
  licenses: []