instalatron 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/instalatron-changeterm +33 -0
- data/bin/instalatron-play +24 -4
- data/lib/instalatron.rb +8 -1
- metadata +5 -3
@@ -0,0 +1,33 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
def usage
|
4
|
+
puts "Usage: instalatron-changeterm <vm-name> <term-no>"
|
5
|
+
puts "\nvm-name is the name of the VirtualBox VM"
|
6
|
+
puts "term-no is the linux terminal number (1,2,3,4,5,...)"
|
7
|
+
exit 1
|
8
|
+
end
|
9
|
+
|
10
|
+
vm_name = ARGV[0]
|
11
|
+
term = ARGV[1]
|
12
|
+
if vm_name.nil? or term.nil?
|
13
|
+
usage
|
14
|
+
end
|
15
|
+
|
16
|
+
begin
|
17
|
+
term = term.to_i
|
18
|
+
rescue Exception
|
19
|
+
usage
|
20
|
+
end
|
21
|
+
|
22
|
+
kbd = [
|
23
|
+
'1d 38 3b',
|
24
|
+
'1d 38 3c',
|
25
|
+
'1d 38 3d',
|
26
|
+
'1d 38 3e',
|
27
|
+
'1d 38 3f',
|
28
|
+
'1d 38 40',
|
29
|
+
'1d 38 41',
|
30
|
+
'1d 38 42'
|
31
|
+
]
|
32
|
+
|
33
|
+
`VBoxManage controlvm #{vm_name} keyboardputscancode #{kbd[term]}`
|
data/bin/instalatron-play
CHANGED
@@ -4,11 +4,16 @@ require 'instalatron'
|
|
4
4
|
require 'yaml'
|
5
5
|
require 'mixlib/cli'
|
6
6
|
|
7
|
-
def play_session(vm_name, script)
|
7
|
+
def play_session(vm_name, script, custom_seq = nil)
|
8
8
|
ctrlc_gap = 0
|
9
9
|
basedir = File.dirname(script)
|
10
10
|
script = YAML.load_file(script)
|
11
|
-
|
11
|
+
if custom_seq
|
12
|
+
new_seq = script[0]
|
13
|
+
new_seq[:sequence] = custom_seq
|
14
|
+
script[0] = new_seq
|
15
|
+
end
|
16
|
+
step = 1
|
12
17
|
script.each do |screen|
|
13
18
|
ref_img = "#{basedir}/#{File.basename(screen[:image])}"
|
14
19
|
loop do
|
@@ -22,7 +27,7 @@ def play_session(vm_name, script)
|
|
22
27
|
rescue Interrupt, SystemExit
|
23
28
|
if Time.now.to_f - ctrlc_gap < 0.5
|
24
29
|
puts "\n\nDouble Ctrl-c detected. Aborting."
|
25
|
-
|
30
|
+
return
|
26
31
|
else
|
27
32
|
ctrlc_gap = Time.now.to_f
|
28
33
|
end
|
@@ -30,6 +35,7 @@ def play_session(vm_name, script)
|
|
30
35
|
break
|
31
36
|
end
|
32
37
|
end
|
38
|
+
step += 1
|
33
39
|
end
|
34
40
|
end
|
35
41
|
|
@@ -65,6 +71,15 @@ class MyCLI
|
|
65
71
|
:short => "-s SCRIPT",
|
66
72
|
:long => "--script SCRIPT",
|
67
73
|
:description => "Path to the script file (script.yml) or directory."
|
74
|
+
|
75
|
+
option :custom_sequence,
|
76
|
+
:short => "-c SEQUENCE",
|
77
|
+
:long => "--custom-sequence SEQUENCE",
|
78
|
+
:description => "Replace first step key sequence"
|
79
|
+
|
80
|
+
option :destroy_vm,
|
81
|
+
:long => "--destroy-vm",
|
82
|
+
:description => "Destroy the VM after running the tests"
|
68
83
|
|
69
84
|
option :help,
|
70
85
|
:short => "-h",
|
@@ -103,4 +118,9 @@ end
|
|
103
118
|
Instalatron.create_vm :vm_name => vm_name, :iso_file => iso_file
|
104
119
|
|
105
120
|
puts "Playing script using VM #{vm_name}\n\n"
|
106
|
-
play_session vm_name, script
|
121
|
+
play_session vm_name, script, cli.config[:custom_sequence]
|
122
|
+
|
123
|
+
if cli.config[:destroy_vm]
|
124
|
+
puts "Unregistering and deleting VM #{vm_name}"
|
125
|
+
Instalatron.destroy_vm(vm_name)
|
126
|
+
end
|
data/lib/instalatron.rb
CHANGED
@@ -4,7 +4,14 @@ require 'virtualbox'
|
|
4
4
|
|
5
5
|
module Instalatron
|
6
6
|
|
7
|
-
VERSION = '0.1.
|
7
|
+
VERSION = '0.1.2'
|
8
|
+
|
9
|
+
def self.destroy_vm(vm_name)
|
10
|
+
`VBoxManage controlvm '#{vm_name}' poweroff > /dev/null 2>&1`
|
11
|
+
# dumb
|
12
|
+
sleep 1
|
13
|
+
`VBoxManage unregistervm '#{vm_name}' --delete > /dev/null 2>&1`
|
14
|
+
end
|
8
15
|
|
9
16
|
def self.create_vm(params = {})
|
10
17
|
vm_name = params[:vm_name] || "instalatron_#{Time.now.to_f}"
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: instalatron
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 31
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 2
|
10
|
+
version: 0.1.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Sergio Rubio
|
@@ -99,6 +99,7 @@ email: srubio@abiquo.com
|
|
99
99
|
executables:
|
100
100
|
- print-yaml-keyseq
|
101
101
|
- instalatron-record
|
102
|
+
- instalatron-changeterm
|
102
103
|
- instalatron-play
|
103
104
|
- instalatron-monitor
|
104
105
|
extensions: []
|
@@ -112,6 +113,7 @@ files:
|
|
112
113
|
- LICENSE.txt
|
113
114
|
- README.rdoc
|
114
115
|
- Rakefile
|
116
|
+
- bin/instalatron-changeterm
|
115
117
|
- bin/instalatron-monitor
|
116
118
|
- bin/instalatron-play
|
117
119
|
- bin/instalatron-record
|