netvbox 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
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: []