vbox 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +14 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +68 -0
- data/README.md +5 -0
- data/Rakefile +91 -0
- data/bin/vbox +73 -0
- data/lib/java/README.txt +5 -0
- data/lib/java/dir2floppy.jar +0 -0
- data/lib/java/dir2floppy.java +134 -0
- data/lib/vagrant_init.rb +6 -0
- data/lib/vbox.rb +2 -0
- data/lib/vbox/command.rb +82 -0
- data/lib/vbox/config.rb +5 -0
- data/lib/vbox/export.rb +65 -0
- data/lib/vbox/scancode.rb +208 -0
- data/lib/vbox/session.rb +893 -0
- data/lib/vbox/shell.rb +54 -0
- data/lib/vbox/ssh.rb +193 -0
- data/lib/vbox/transaction.rb +122 -0
- data/lib/vbox/utils.rb +26 -0
- data/lib/vbox/version.rb +3 -0
- data/lib/vbox/web.rb +48 -0
- data/templates/CentOS-5.7-i386-netboot/definition.rb +16 -0
- data/templates/CentOS-5.7-i386-netboot/ks.cfg +45 -0
- data/templates/CentOS-5.7-i386-netboot/postinstall.sh +53 -0
- data/templates/CentOS-5.7-x86_64-netboot/definition.rb +16 -0
- data/templates/CentOS-5.7-x86_64-netboot/ks.cfg +45 -0
- data/templates/CentOS-5.7-x86_64-netboot/postinstall.sh +60 -0
- data/templates/CentOS-6.0-i386-netboot/definition.rb +16 -0
- data/templates/CentOS-6.0-i386-netboot/ks.cfg +52 -0
- data/templates/CentOS-6.0-i386-netboot/postinstall.sh +30 -0
- data/templates/CentOS-6.0-i386/definition.rb +17 -0
- data/templates/CentOS-6.0-i386/ks.cfg +47 -0
- data/templates/CentOS-6.0-i386/postinstall.sh +48 -0
- data/templates/CentOS-6.0-x86_64-netboot/definition.rb +16 -0
- data/templates/CentOS-6.0-x86_64-netboot/ks.cfg +52 -0
- data/templates/CentOS-6.0-x86_64-netboot/postinstall.sh +30 -0
- data/templates/CentOS-6.0-x86_64/definition.rb +17 -0
- data/templates/CentOS-6.0-x86_64/ks.cfg +47 -0
- data/templates/CentOS-6.0-x86_64/postinstall.sh +48 -0
- data/templates/Debian-6.0.3-amd64-netboot/definition.rb +42 -0
- data/templates/Debian-6.0.3-amd64-netboot/postinstall.sh +80 -0
- data/templates/Debian-6.0.3-amd64-netboot/preseed.cfg +42 -0
- data/templates/Debian-6.0.3-i386-netboot/definition.rb +44 -0
- data/templates/Debian-6.0.3-i386-netboot/postinstall.sh +80 -0
- data/templates/Debian-6.0.3-i386-netboot/preseed.cfg +42 -0
- data/templates/Fedora-15-i386-netboot/definition.rb +17 -0
- data/templates/Fedora-15-i386-netboot/ks.cfg +82 -0
- data/templates/Fedora-15-i386-netboot/postinstall.sh +18 -0
- data/templates/Fedora-15-i386/definition.rb +17 -0
- data/templates/Fedora-15-i386/ks.cfg +64 -0
- data/templates/Fedora-15-i386/postinstall.sh +33 -0
- data/templates/Fedora-15-x86_64-netboot/definition.rb +29 -0
- data/templates/Fedora-15-x86_64-netboot/ks.cfg +64 -0
- data/templates/Fedora-15-x86_64-netboot/postinstall.sh +33 -0
- data/templates/Fedora-15-x86_64/definition.rb +17 -0
- data/templates/Fedora-15-x86_64/ks.cfg +64 -0
- data/templates/Fedora-15-x86_64/postinstall.sh +33 -0
- data/templates/Sysrescuecd-2.0.0-experimental/autorun0 +3 -0
- data/templates/Sysrescuecd-2.0.0-experimental/definition.rb +20 -0
- data/templates/archlinux-i386-netboot/aif.cfg +34 -0
- data/templates/archlinux-i386-netboot/definition.rb +29 -0
- data/templates/archlinux-i386-netboot/postinstall.sh +87 -0
- data/templates/archlinux-i386-netboot/postinstall2.sh +28 -0
- data/templates/archlinux-i386/aif.cfg +33 -0
- data/templates/archlinux-i386/definition.rb +29 -0
- data/templates/archlinux-i386/postinstall.sh +106 -0
- data/templates/archlinux-x86_64-netboot/aif.cfg +34 -0
- data/templates/archlinux-x86_64-netboot/definition.rb +29 -0
- data/templates/archlinux-x86_64-netboot/postinstall.sh +90 -0
- data/templates/archlinux-x86_64-netboot/postinstall2.sh +28 -0
- data/templates/archlinux-x86_64/aif.cfg +33 -0
- data/templates/archlinux-x86_64/definition.rb +29 -0
- data/templates/archlinux-x86_64/postinstall.sh +90 -0
- data/templates/archlinux-x86_64/postinstall2.sh +38 -0
- data/templates/freebsd-8.2-experimental/definition.rb +19 -0
- data/templates/freebsd-8.2-experimental/postinstall.sh +191 -0
- data/templates/freebsd-8.2-pcbsd-i386-netboot/definition.rb +35 -0
- data/templates/freebsd-8.2-pcbsd-i386-netboot/pcinstall.fbg.cfg +58 -0
- data/templates/freebsd-8.2-pcbsd-i386-netboot/postinstall.sh +93 -0
- data/templates/freebsd-8.2-pcbsd-i386/definition.rb +31 -0
- data/templates/freebsd-8.2-pcbsd-i386/pcinstall.fbg.cfg +57 -0
- data/templates/freebsd-8.2-pcbsd-i386/postinstall.sh +93 -0
- data/templates/gentoo-latest-i386-experimental/definition.rb +29 -0
- data/templates/gentoo-latest-i386-experimental/postinstall.sh +184 -0
- data/templates/openSUSE-11.4-DVD-i586/autoinst_de.xml +1284 -0
- data/templates/openSUSE-11.4-DVD-i586/autoinst_en.xml +1284 -0
- data/templates/openSUSE-11.4-DVD-i586/definition.rb +28 -0
- data/templates/openSUSE-11.4-DVD-i586/postinstall.sh +43 -0
- data/templates/openSUSE-11.4-DVD-x86_64/autoinst_de.xml +1459 -0
- data/templates/openSUSE-11.4-DVD-x86_64/autoinst_en.xml +1459 -0
- data/templates/openSUSE-11.4-DVD-x86_64/definition.rb +28 -0
- data/templates/openSUSE-11.4-DVD-x86_64/postinstall.sh +43 -0
- data/templates/openSUSE-11.4-NET-i586/autoinst_de.xml +1278 -0
- data/templates/openSUSE-11.4-NET-i586/autoinst_en.xml +1278 -0
- data/templates/openSUSE-11.4-NET-i586/definition.rb +28 -0
- data/templates/openSUSE-11.4-NET-i586/postinstall.sh +43 -0
- data/templates/openSUSE-11.4-NET-x86_64/autoinst_de.xml +1453 -0
- data/templates/openSUSE-11.4-NET-x86_64/autoinst_en.xml +1453 -0
- data/templates/openSUSE-11.4-NET-x86_64/definition.rb +28 -0
- data/templates/openSUSE-11.4-NET-x86_64/postinstall.sh +43 -0
- data/templates/solaris-11-express-i386/auto_install/ai.dtd +58 -0
- data/templates/solaris-11-express-i386/auto_install/ai_manifest.xml +241 -0
- data/templates/solaris-11-express-i386/auto_install/configuration.dtd +44 -0
- data/templates/solaris-11-express-i386/auto_install/default.xml +124 -0
- data/templates/solaris-11-express-i386/auto_install/default.xml.orig +124 -0
- data/templates/solaris-11-express-i386/auto_install/sc_profiles/static_network.xml +105 -0
- data/templates/solaris-11-express-i386/auto_install/software.dtd +105 -0
- data/templates/solaris-11-express-i386/auto_install/target.dtd +196 -0
- data/templates/solaris-11-express-i386/default.xml +121 -0
- data/templates/solaris-11-express-i386/definition.rb +65 -0
- data/templates/solaris-11-express-i386/postinstall.sh +98 -0
- data/templates/ubuntu-10.04.3-server-amd64/definition.rb +54 -0
- data/templates/ubuntu-10.04.3-server-amd64/postinstall.sh +90 -0
- data/templates/ubuntu-10.04.3-server-amd64/preseed.cfg +87 -0
- data/templates/ubuntu-10.04.3-server-i386/definition.rb +24 -0
- data/templates/ubuntu-10.04.3-server-i386/postinstall.sh +91 -0
- data/templates/ubuntu-10.04.3-server-i386/preseed.cfg +87 -0
- data/templates/ubuntu-11.10-server-amd64/definition.rb +35 -0
- data/templates/ubuntu-11.10-server-amd64/postinstall.sh +90 -0
- data/templates/ubuntu-11.10-server-amd64/preseed.cfg +87 -0
- data/templates/ubuntu-11.10-server-i386/definition.rb +35 -0
- data/templates/ubuntu-11.10-server-i386/postinstall.sh +90 -0
- data/templates/ubuntu-11.10-server-i386/preseed.cfg +87 -0
- data/validation/features/steps/ssh_steps.rb +169 -0
- data/validation/support/env.rb +1 -0
- data/validation/vagrant-private.key +27 -0
- data/validation/vagrant.feature +52 -0
- data/validation/vagrant.pub +1 -0
- data/vbox.gemspec +32 -0
- metadata +338 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
vbox (0.0.4)
|
5
|
+
cucumber (~> 1.0.2)
|
6
|
+
highline (~> 1.6.1)
|
7
|
+
net-ssh (~> 2.1.0)
|
8
|
+
popen4 (~> 0.1.2)
|
9
|
+
progressbar
|
10
|
+
rspec (~> 2.5.0)
|
11
|
+
thor (~> 0.14.6)
|
12
|
+
vagrant (~> 0.8.2)
|
13
|
+
|
14
|
+
GEM
|
15
|
+
remote: http://rubygems.org/
|
16
|
+
specs:
|
17
|
+
Platform (0.4.0)
|
18
|
+
archive-tar-minitar (0.5.2)
|
19
|
+
builder (3.0.0)
|
20
|
+
cucumber (1.0.2)
|
21
|
+
builder (>= 2.1.2)
|
22
|
+
diff-lcs (>= 1.1.2)
|
23
|
+
gherkin (~> 2.4.5)
|
24
|
+
json (>= 1.4.6)
|
25
|
+
term-ansicolor (>= 1.0.5)
|
26
|
+
diff-lcs (1.1.3)
|
27
|
+
erubis (2.7.0)
|
28
|
+
ffi (1.0.11)
|
29
|
+
gherkin (2.4.21)
|
30
|
+
json (>= 1.4.6)
|
31
|
+
highline (1.6.8)
|
32
|
+
i18n (0.6.0)
|
33
|
+
json (1.5.3)
|
34
|
+
net-scp (1.0.4)
|
35
|
+
net-ssh (>= 1.99.1)
|
36
|
+
net-ssh (2.1.4)
|
37
|
+
open4 (1.3.0)
|
38
|
+
popen4 (0.1.2)
|
39
|
+
Platform (>= 0.4.0)
|
40
|
+
open4 (>= 0.4.0)
|
41
|
+
progressbar (0.9.2)
|
42
|
+
rspec (2.5.0)
|
43
|
+
rspec-core (~> 2.5.0)
|
44
|
+
rspec-expectations (~> 2.5.0)
|
45
|
+
rspec-mocks (~> 2.5.0)
|
46
|
+
rspec-core (2.5.2)
|
47
|
+
rspec-expectations (2.5.0)
|
48
|
+
diff-lcs (~> 1.1.2)
|
49
|
+
rspec-mocks (2.5.0)
|
50
|
+
term-ansicolor (1.0.7)
|
51
|
+
thor (0.14.6)
|
52
|
+
vagrant (0.8.7)
|
53
|
+
archive-tar-minitar (= 0.5.2)
|
54
|
+
erubis (~> 2.7.0)
|
55
|
+
i18n (~> 0.6.0)
|
56
|
+
json (~> 1.5.1)
|
57
|
+
net-scp (~> 1.0.4)
|
58
|
+
net-ssh (~> 2.1.4)
|
59
|
+
thor (~> 0.14.6)
|
60
|
+
virtualbox (~> 0.9.1)
|
61
|
+
virtualbox (0.9.2)
|
62
|
+
ffi (~> 1.0.9)
|
63
|
+
|
64
|
+
PLATFORMS
|
65
|
+
ruby
|
66
|
+
|
67
|
+
DEPENDENCIES
|
68
|
+
vbox!
|
data/README.md
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,91 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler'
|
3
|
+
require 'bundler/setup'
|
4
|
+
Bundler::GemHelper.install_tasks
|
5
|
+
|
6
|
+
#Setup some base variables to use
|
7
|
+
vbox_dir= "."
|
8
|
+
definition_dir= File.expand_path(File.join(vbox_dir, "definitions"))
|
9
|
+
lib_dir= File.expand_path(File.join(vbox_dir, "lib"))
|
10
|
+
box_dir= File.expand_path(File.join(vbox_dir, "boxes"))
|
11
|
+
template_dir=File.expand_path(File.join(vbox_dir, "templates"))
|
12
|
+
vbox_dir=File.expand_path(File.join(vbox_dir, "tmp"))
|
13
|
+
tmp_dir=File.expand_path(File.join(vbox_dir, "tmp"))
|
14
|
+
iso_dir=File.expand_path(File.join(vbox_dir, "iso"))
|
15
|
+
|
16
|
+
#Load vbox::Session libraries
|
17
|
+
Dir.glob(File.join(lib_dir, '**','*.rb')).each {|f|
|
18
|
+
require f }
|
19
|
+
|
20
|
+
#Initialize
|
21
|
+
vbox::Session.setenv({:vbox_dir => vbox_dir, :definition_dir => definition_dir,
|
22
|
+
:template_dir => template_dir, :iso_dir => iso_dir, :box_dir => box_dir, :tmp_dir => tmp_dir})
|
23
|
+
|
24
|
+
desc 'Default: list templates'
|
25
|
+
task :default => [:templates]
|
26
|
+
|
27
|
+
desc 'List templates'
|
28
|
+
task :templates do
|
29
|
+
vbox::Session.list_templates
|
30
|
+
end
|
31
|
+
|
32
|
+
desc 'Define box'
|
33
|
+
task :define, [:boxname,:template_name] do |t,args|
|
34
|
+
if args.to_hash.size!=2
|
35
|
+
puts "needs two arguments: rake define['boxname','template_name']"
|
36
|
+
exit
|
37
|
+
end
|
38
|
+
vbox::Session.define(args.boxname,args.template_name)
|
39
|
+
end
|
40
|
+
|
41
|
+
desc 'Undefine box'
|
42
|
+
task :undefine, [:boxname] do |t,args|
|
43
|
+
if args.to_hash.size!=1
|
44
|
+
puts "needs one arguments: rake undefine[\"yourname\"]"
|
45
|
+
exit
|
46
|
+
end
|
47
|
+
vbox::Session.undefine(args.boxname)
|
48
|
+
end
|
49
|
+
|
50
|
+
desc 'List Definitions'
|
51
|
+
task :definitions do
|
52
|
+
vbox::Session.list_definitions
|
53
|
+
end
|
54
|
+
|
55
|
+
desc 'Build box'
|
56
|
+
task :build, [:boxname] do |t,args|
|
57
|
+
if args.to_hash.size!=1
|
58
|
+
puts "needs one arguments: rake build['boxname']"
|
59
|
+
exit
|
60
|
+
end
|
61
|
+
vbox::Session.build(args.boxname)
|
62
|
+
end
|
63
|
+
|
64
|
+
desc 'List boxes'
|
65
|
+
task :boxes do
|
66
|
+
vbox::Session.list_boxes
|
67
|
+
end
|
68
|
+
|
69
|
+
desc 'Export box'
|
70
|
+
task :export, [:boxname] do |t,args|
|
71
|
+
if args.to_hash.size!=1
|
72
|
+
puts "needs one arguments: rake export['boxname']"
|
73
|
+
exit
|
74
|
+
end
|
75
|
+
vbox::Session.export_box(args.boxname)
|
76
|
+
end
|
77
|
+
|
78
|
+
desc 'Remove box'
|
79
|
+
task :remove_box, [:boxname] do |t,args|
|
80
|
+
vbox::Session.remove_box(args.boxname)
|
81
|
+
end
|
82
|
+
|
83
|
+
desc 'List ostypes available'
|
84
|
+
task :list_ostypes do |t,args|
|
85
|
+
vbox::Session.list_ostypes
|
86
|
+
end
|
87
|
+
|
88
|
+
desc 'Clean all unfinished builds'
|
89
|
+
task :clean do
|
90
|
+
vbox::Session.clean
|
91
|
+
end
|
data/bin/vbox
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'thor'
|
5
|
+
require 'bundler'
|
6
|
+
require 'virtualbox'
|
7
|
+
require 'vbox'
|
8
|
+
|
9
|
+
#Setup some base variables to use
|
10
|
+
vbox_dir= File.expand_path(File.join(File.dirname(__FILE__),".."))
|
11
|
+
definition_dir= File.expand_path(File.join(".", "definitions"))
|
12
|
+
lib_dir= File.expand_path(File.join(vbox_dir, "lib"))
|
13
|
+
box_dir= File.expand_path(File.join(vbox_dir, "boxes"))
|
14
|
+
template_dir=File.expand_path(File.join(vbox_dir, "templates"))
|
15
|
+
tmp_dir=File.expand_path(File.join(vbox_dir, "tmp"))
|
16
|
+
iso_dir=File.expand_path(File.join(vbox_dir, "iso"))
|
17
|
+
|
18
|
+
#Load Vbox::Session libraries
|
19
|
+
Dir.glob(File.join(lib_dir, '**','*.rb')).each {|f|
|
20
|
+
require f }
|
21
|
+
|
22
|
+
#Initialize
|
23
|
+
Vbox::Session.setenv({
|
24
|
+
:vbox_dir => vbox_dir,
|
25
|
+
:definition_dir => definition_dir,
|
26
|
+
:template_dir => template_dir,
|
27
|
+
:iso_dir => iso_dir,
|
28
|
+
:box_dir => box_dir,
|
29
|
+
:tmp_dir => tmp_dir})
|
30
|
+
|
31
|
+
class VboxCLI < Thor
|
32
|
+
|
33
|
+
desc "init [NAME] [TEMPLATE]", "initializes a vbox from a template"
|
34
|
+
method_options :force => :boolean
|
35
|
+
def init(boxname=nil, template=nil)
|
36
|
+
if (boxname.nil?)
|
37
|
+
puts "please provide a boxname"
|
38
|
+
exit
|
39
|
+
end
|
40
|
+
|
41
|
+
puts "Init a new box #{boxname}, starting from template #{template}"
|
42
|
+
Vbox::Session.define(boxname,template)
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
desc "templates", "list the template available"
|
47
|
+
def templates
|
48
|
+
Vbox::Session.list_templates
|
49
|
+
end
|
50
|
+
|
51
|
+
desc "build [NAME]", "build the box defined"
|
52
|
+
method_options :force => :boolean
|
53
|
+
def build(boxname)
|
54
|
+
puts "Building box #{boxname}"
|
55
|
+
Vbox::Session.build(boxname)
|
56
|
+
end
|
57
|
+
|
58
|
+
desc "export [NAME]", "export the box"
|
59
|
+
method_options :force => :boolean
|
60
|
+
def export(boxname)
|
61
|
+
if (!boxname.nil?)
|
62
|
+
Vbox::Session.export_box(boxname)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
|
68
|
+
version=VirtualBox.version
|
69
|
+
if (version.match(/^4./))
|
70
|
+
VboxCLI.start
|
71
|
+
else
|
72
|
+
puts "Vbox only supports VirtualBox 4.x"
|
73
|
+
end
|
data/lib/java/README.txt
ADDED
Binary file
|
@@ -0,0 +1,134 @@
|
|
1
|
+
package be.jedi.dir2floppy;
|
2
|
+
|
3
|
+
import java.io.File;
|
4
|
+
import java.io.FileInputStream;
|
5
|
+
import java.io.IOException;
|
6
|
+
import java.nio.ByteBuffer;
|
7
|
+
import java.nio.channels.FileChannel;
|
8
|
+
|
9
|
+
import de.waldheinz.fs.FileSystem;
|
10
|
+
import de.waldheinz.fs.FsDirectoryEntry;
|
11
|
+
import de.waldheinz.fs.FsFile;
|
12
|
+
import de.waldheinz.fs.fat.SuperFloppyFormatter;
|
13
|
+
import de.waldheinz.fs.util.FileDisk;
|
14
|
+
|
15
|
+
/**
|
16
|
+
* Hello world!
|
17
|
+
*
|
18
|
+
*/
|
19
|
+
public class Dir2Floppy {
|
20
|
+
public static void main(String[] args) {
|
21
|
+
if (args.length < 2) {
|
22
|
+
System.out
|
23
|
+
.println("Usage: java -jar dir2floppy.jar <sourcedir> <floppyfile>");
|
24
|
+
System.exit(-1);
|
25
|
+
}
|
26
|
+
|
27
|
+
FileDisk device = null;
|
28
|
+
|
29
|
+
// Create the floppy
|
30
|
+
try {
|
31
|
+
device = FileDisk.create(new File(args[1]), (long) 1440 * 1024);
|
32
|
+
} catch (IOException e) {
|
33
|
+
// TODO Auto-generated catch block
|
34
|
+
e.printStackTrace();
|
35
|
+
System.exit(-1);
|
36
|
+
}
|
37
|
+
|
38
|
+
// Format the floppy
|
39
|
+
FileSystem fs = null;
|
40
|
+
try {
|
41
|
+
fs = SuperFloppyFormatter.get(device).format();
|
42
|
+
|
43
|
+
} catch (IOException e) {
|
44
|
+
// TODO Auto-generated catch block
|
45
|
+
e.printStackTrace();
|
46
|
+
System.exit(-1);
|
47
|
+
|
48
|
+
}
|
49
|
+
|
50
|
+
// Iterate of directories
|
51
|
+
File dir = new File(args[0]);
|
52
|
+
|
53
|
+
String[] children = dir.list();
|
54
|
+
if (children == null) {
|
55
|
+
// Either dir does not exist or is not a directory
|
56
|
+
System.out.println("Error. does the directory exist?");
|
57
|
+
System.exit(-1);
|
58
|
+
} else {
|
59
|
+
for (int i = 0; i < children.length; i++) {
|
60
|
+
// Get filename of file or directory
|
61
|
+
File aFile = new File(dir.getAbsolutePath()
|
62
|
+
+ System.getProperty("file.separator") + children[i]);
|
63
|
+
|
64
|
+
try {
|
65
|
+
// Create the entry on the floppy
|
66
|
+
FsDirectoryEntry floppyEntry = fs.getRoot().addFile(
|
67
|
+
children[i]);
|
68
|
+
// floppyEntry.setName(children[i]);
|
69
|
+
System.out.print("- Processing file: " + children[i] + " ");
|
70
|
+
|
71
|
+
FsFile floppyfile = floppyEntry.getFile();
|
72
|
+
|
73
|
+
// Copy the file over
|
74
|
+
if (aFile.isFile()) {
|
75
|
+
FileInputStream fis = new FileInputStream(aFile);
|
76
|
+
|
77
|
+
FileChannel fci = fis.getChannel();
|
78
|
+
ByteBuffer buffer = ByteBuffer.allocate(1024);
|
79
|
+
|
80
|
+
long counter = 0;
|
81
|
+
int len;
|
82
|
+
|
83
|
+
// http://www.kodejava.org/examples/49.html
|
84
|
+
// Here we start to read the source file and write it
|
85
|
+
// to the destination file. We repeat this process
|
86
|
+
// until the read method of input stream channel return
|
87
|
+
// nothing (-1).
|
88
|
+
while (true) {
|
89
|
+
// read a block of data and put it in the buffer
|
90
|
+
int read = fci.read(buffer);
|
91
|
+
|
92
|
+
// did we reach the end of the channel? if yes
|
93
|
+
// jump out the while-loop
|
94
|
+
if (read == -1)
|
95
|
+
break;
|
96
|
+
|
97
|
+
// flip the buffer
|
98
|
+
buffer.flip();
|
99
|
+
|
100
|
+
// write to the destination channel
|
101
|
+
System.out.print(".");
|
102
|
+
floppyfile.write(counter * 1024, buffer);
|
103
|
+
counter++;
|
104
|
+
|
105
|
+
// clear the buffer and user it for the next read
|
106
|
+
// process
|
107
|
+
buffer.clear();
|
108
|
+
}
|
109
|
+
System.out.println();
|
110
|
+
|
111
|
+
floppyfile.flush();
|
112
|
+
|
113
|
+
fis.close();
|
114
|
+
}
|
115
|
+
} catch (IOException e) {
|
116
|
+
// TODO Auto-generated catch block
|
117
|
+
e.printStackTrace();
|
118
|
+
|
119
|
+
}
|
120
|
+
|
121
|
+
}
|
122
|
+
}
|
123
|
+
|
124
|
+
try {
|
125
|
+
fs.close();
|
126
|
+
} catch (IOException e) {
|
127
|
+
// TODO Auto-generated catch block
|
128
|
+
e.printStackTrace();
|
129
|
+
}
|
130
|
+
|
131
|
+
System.out.println("Done");
|
132
|
+
}
|
133
|
+
|
134
|
+
}
|
data/lib/vagrant_init.rb
ADDED
data/lib/vbox.rb
ADDED
data/lib/vbox/command.rb
ADDED
@@ -0,0 +1,82 @@
|
|
1
|
+
require 'vbox/session'
|
2
|
+
|
3
|
+
#Load Vbox::Session libraries
|
4
|
+
lib_dir= File.expand_path(File.join(File.dirname(__FILE__),"..","..", "lib"))
|
5
|
+
Dir.glob(File.join(lib_dir, '**','*.rb')).each {|f| require f }
|
6
|
+
|
7
|
+
#Setup some base variables to use
|
8
|
+
template_dir=File.expand_path(File.join(lib_dir,"..", "templates"))
|
9
|
+
|
10
|
+
vbox_dir="."
|
11
|
+
definition_dir= File.expand_path(File.join(vbox_dir, "definitions"))
|
12
|
+
tmp_dir=File.expand_path(File.join(vbox_dir, "tmp"))
|
13
|
+
iso_dir=File.expand_path(File.join(vbox_dir, "iso"))
|
14
|
+
box_dir=File.expand_path(File.join(vbox_dir, "boxes"))
|
15
|
+
validation_dir=File.expand_path(File.join(lib_dir, "..","validation"))
|
16
|
+
|
17
|
+
#Initialize
|
18
|
+
Vbox::Session.setenv({:vbox_dir => vbox_dir, :definition_dir => definition_dir,
|
19
|
+
:template_dir => template_dir, :iso_dir => iso_dir, :box_dir => box_dir, :tmp_dir => tmp_dir, :validation_dir => validation_dir})
|
20
|
+
|
21
|
+
module Vbox
|
22
|
+
class Command < Vagrant::Command::GroupBase
|
23
|
+
register "vboxes","Commands to manage vboxes"
|
24
|
+
|
25
|
+
desc "templates", "List the currently available basebox templates"
|
26
|
+
def templates
|
27
|
+
Vbox::Session.list_templates
|
28
|
+
end
|
29
|
+
|
30
|
+
desc "define BOXNAME TEMPLATE", "Define a new vbox starting from a template"
|
31
|
+
method_option :force,:type => :boolean , :default => false, :aliases => "-f", :desc => "overwrite the definition"
|
32
|
+
def define(boxname, template)
|
33
|
+
Vbox::Session.define(boxname,template,options)
|
34
|
+
end
|
35
|
+
|
36
|
+
desc "undefine BOXNAME", "Removes the definition of a vbox "
|
37
|
+
def undefine(boxname)
|
38
|
+
Vbox::Session.undefine(boxname)
|
39
|
+
end
|
40
|
+
|
41
|
+
desc "build BOXNAME", "Build the box BOXNAME"
|
42
|
+
method_option :force,:type => :boolean , :default => false, :aliases => "-f", :desc => "overwrite the vbox"
|
43
|
+
method_option :nogui,:type => :boolean , :default => false, :aliases => "-n", :desc => "no gui"
|
44
|
+
|
45
|
+
def build(boxname)
|
46
|
+
Vbox::Session.build(boxname,options)
|
47
|
+
end
|
48
|
+
|
49
|
+
desc "ostypes", "List the available Operating System types"
|
50
|
+
def ostypes
|
51
|
+
Vbox::Session.list_ostypes
|
52
|
+
end
|
53
|
+
|
54
|
+
desc "destroy BOXNAME", "Destroys the virtualmachine that was build for a vbox"
|
55
|
+
def destroy(boxname)
|
56
|
+
Vbox::Session.destroy_vm(boxname)
|
57
|
+
end
|
58
|
+
|
59
|
+
desc "list", "Lists all defined vbox"
|
60
|
+
def list
|
61
|
+
Vbox::Session.list_definitions
|
62
|
+
end
|
63
|
+
|
64
|
+
desc "export [NAME]", "Exports the vbox to the vagrant box format"
|
65
|
+
method_options :force => :boolean
|
66
|
+
def export(boxname)
|
67
|
+
if (!boxname.nil?)
|
68
|
+
Vbox::Session.export_box(boxname)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
desc "validate [NAME]", "Validates a box against vagrant compliancy rules"
|
73
|
+
method_option :user,:default => "vagrant", :aliases => "-u", :desc => "user to login with"
|
74
|
+
def validate(boxname)
|
75
|
+
if (!boxname.nil?)
|
76
|
+
Vbox::Session.validate_box(boxname,options)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|