vagrant 0.8.10 → 0.9.0
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/CHANGELOG.md +77 -1
- data/Gemfile +0 -14
- data/LICENSE +1 -1
- data/bin/vagrant +47 -20
- data/config/default.rb +6 -14
- data/lib/vagrant.rb +132 -5
- data/lib/vagrant/action.rb +45 -123
- data/lib/vagrant/action/box/destroy.rb +7 -3
- data/lib/vagrant/action/box/download.rb +8 -8
- data/lib/vagrant/action/box/package.rb +2 -2
- data/lib/vagrant/action/box/unpackage.rb +13 -7
- data/lib/vagrant/action/box/verify.rb +5 -5
- data/lib/vagrant/action/builder.rb +23 -19
- data/lib/vagrant/action/builtin.rb +117 -79
- data/lib/vagrant/action/env/set.rb +7 -4
- data/lib/vagrant/action/environment.rb +3 -41
- data/lib/vagrant/action/general/package.rb +14 -29
- data/lib/vagrant/action/general/validate.rb +2 -2
- data/lib/vagrant/action/runner.rb +53 -0
- data/lib/vagrant/action/vm/boot.rb +9 -9
- data/lib/vagrant/action/vm/check_accessible.rb +2 -2
- data/lib/vagrant/action/vm/check_box.rb +10 -12
- data/lib/vagrant/action/vm/check_guest_additions.rb +8 -8
- data/lib/vagrant/action/vm/check_port_collisions.rb +85 -0
- data/lib/vagrant/action/vm/clean_machine_folder.rb +4 -4
- data/lib/vagrant/action/vm/clear_forwarded_ports.rb +3 -11
- data/lib/vagrant/action/vm/clear_network_interfaces.rb +31 -0
- data/lib/vagrant/action/vm/clear_shared_folders.rb +2 -11
- data/lib/vagrant/action/vm/customize.rb +19 -9
- data/lib/vagrant/action/vm/destroy.rb +4 -4
- data/lib/vagrant/action/vm/destroy_unused_network_interfaces.rb +2 -12
- data/lib/vagrant/action/vm/discard_state.rb +4 -4
- data/lib/vagrant/action/vm/export.rb +13 -8
- data/lib/vagrant/action/vm/forward_ports.rb +55 -102
- data/lib/vagrant/action/vm/halt.rb +9 -6
- data/lib/vagrant/action/vm/host_name.rb +4 -4
- data/lib/vagrant/action/vm/import.rb +19 -10
- data/lib/vagrant/action/vm/match_mac_address.rb +4 -9
- data/lib/vagrant/action/vm/network.rb +300 -94
- data/lib/vagrant/action/vm/nfs.rb +41 -26
- data/lib/vagrant/action/vm/package.rb +1 -1
- data/lib/vagrant/action/vm/package_vagrantfile.rb +5 -2
- data/lib/vagrant/action/vm/provision.rb +42 -13
- data/lib/vagrant/action/vm/provisioner_cleanup.rb +2 -2
- data/lib/vagrant/action/vm/{clear_nfs_exports.rb → prune_nfs_exports.rb} +7 -7
- data/lib/vagrant/action/vm/resume.rb +4 -4
- data/lib/vagrant/action/vm/setup_package_files.rb +54 -0
- data/lib/vagrant/action/vm/share_folders.rb +63 -39
- data/lib/vagrant/action/vm/suspend.rb +4 -4
- data/lib/vagrant/action/warden.rb +13 -6
- data/lib/vagrant/box.rb +9 -55
- data/lib/vagrant/box_collection.rb +22 -17
- data/lib/vagrant/cli.rb +62 -47
- data/lib/vagrant/command.rb +18 -20
- data/lib/vagrant/command/base.rb +135 -90
- data/lib/vagrant/command/box.rb +46 -21
- data/lib/vagrant/command/box_add.rb +33 -0
- data/lib/vagrant/command/box_list.rb +25 -0
- data/lib/vagrant/command/box_remove.rb +23 -0
- data/lib/vagrant/command/box_repackage.rb +23 -0
- data/lib/vagrant/command/destroy.rb +16 -5
- data/lib/vagrant/command/halt.rb +25 -7
- data/lib/vagrant/command/init.rb +30 -7
- data/lib/vagrant/command/package.rb +49 -18
- data/lib/vagrant/command/provision.rb +22 -9
- data/lib/vagrant/command/reload.rb +18 -5
- data/lib/vagrant/command/resume.rb +18 -5
- data/lib/vagrant/command/ssh.rb +69 -31
- data/lib/vagrant/command/ssh_config.rb +37 -22
- data/lib/vagrant/command/status.rb +22 -20
- data/lib/vagrant/command/suspend.rb +18 -5
- data/lib/vagrant/command/up.rb +41 -8
- data/lib/vagrant/communication.rb +7 -0
- data/lib/vagrant/communication/base.rb +56 -0
- data/lib/vagrant/communication/ssh.rb +200 -0
- data/lib/vagrant/config.rb +29 -103
- data/lib/vagrant/config/base.rb +18 -26
- data/lib/vagrant/config/container.rb +37 -0
- data/lib/vagrant/config/error_recorder.rb +1 -1
- data/lib/vagrant/config/loader.rb +125 -0
- data/lib/vagrant/config/nfs.rb +1 -3
- data/lib/vagrant/config/package.rb +1 -3
- data/lib/vagrant/config/ssh.rb +31 -16
- data/lib/vagrant/config/top.rb +36 -25
- data/lib/vagrant/config/vagrant.rb +2 -5
- data/lib/vagrant/config/vm.rb +115 -56
- data/lib/vagrant/config/vm/provisioner.rb +16 -20
- data/lib/vagrant/config/vm/sub_vm.rb +1 -1
- data/lib/vagrant/data_store.rb +23 -15
- data/lib/vagrant/downloaders/base.rb +7 -5
- data/lib/vagrant/downloaders/file.rb +4 -4
- data/lib/vagrant/downloaders/http.rb +4 -5
- data/lib/vagrant/driver.rb +7 -0
- data/lib/vagrant/driver/virtualbox.rb +121 -0
- data/lib/vagrant/driver/virtualbox_4_0.rb +411 -0
- data/lib/vagrant/driver/virtualbox_4_1.rb +411 -0
- data/lib/vagrant/driver/virtualbox_base.rb +284 -0
- data/lib/vagrant/environment.rb +221 -240
- data/lib/vagrant/errors.rb +74 -25
- data/lib/vagrant/guest.rb +16 -0
- data/lib/vagrant/guest/arch.rb +48 -0
- data/lib/vagrant/{systems → guest}/base.rb +30 -18
- data/lib/vagrant/guest/debian.rb +61 -0
- data/lib/vagrant/{systems → guest}/freebsd.rb +11 -18
- data/lib/vagrant/guest/gentoo.rb +32 -0
- data/lib/vagrant/guest/linux.rb +78 -0
- data/lib/vagrant/{systems → guest}/linux/config.rb +2 -4
- data/lib/vagrant/guest/linux/error.rb +9 -0
- data/lib/vagrant/guest/redhat.rb +66 -0
- data/lib/vagrant/guest/solaris.rb +114 -0
- data/lib/vagrant/{systems → guest}/suse.rb +2 -2
- data/lib/vagrant/guest/ubuntu.rb +23 -0
- data/lib/vagrant/hosts.rb +23 -6
- data/lib/vagrant/hosts/arch.rb +7 -3
- data/lib/vagrant/hosts/base.rb +36 -46
- data/lib/vagrant/hosts/bsd.rb +53 -16
- data/lib/vagrant/hosts/fedora.rb +14 -0
- data/lib/vagrant/hosts/freebsd.rb +6 -36
- data/lib/vagrant/hosts/linux.rb +45 -20
- data/lib/vagrant/hosts/windows.rb +16 -0
- data/lib/vagrant/provisioners.rb +10 -7
- data/lib/vagrant/provisioners/base.rb +11 -34
- data/lib/vagrant/provisioners/chef.rb +30 -26
- data/lib/vagrant/provisioners/chef_client.rb +37 -23
- data/lib/vagrant/provisioners/chef_solo.rb +61 -16
- data/lib/vagrant/provisioners/puppet.rb +70 -38
- data/lib/vagrant/provisioners/puppet_server.rb +12 -13
- data/lib/vagrant/provisioners/shell.rb +24 -24
- data/lib/vagrant/registry.rb +49 -0
- data/lib/vagrant/ssh.rb +82 -153
- data/lib/vagrant/ui.rb +118 -50
- data/lib/vagrant/util/busy.rb +1 -1
- data/lib/vagrant/util/file_mode.rb +12 -0
- data/lib/vagrant/util/network_ip.rb +28 -0
- data/lib/vagrant/util/platform.rb +1 -0
- data/lib/vagrant/util/subprocess.rb +227 -0
- data/lib/vagrant/version.rb +1 -1
- data/lib/vagrant/vm.rb +111 -97
- data/tasks/acceptance.rake +3 -3
- data/tasks/test.rake +7 -2
- data/templates/commands/init/Vagrantfile.erb +11 -4
- data/templates/{ssh_config.erb → commands/ssh_config/config.erb} +0 -0
- data/templates/guests/arch/network_dhcp.erb +7 -0
- data/templates/guests/arch/network_static.erb +7 -0
- data/templates/guests/debian/network_dhcp.erb +6 -0
- data/templates/guests/debian/network_static.erb +7 -0
- data/templates/guests/gentoo/network_dhcp.erb +4 -0
- data/templates/guests/gentoo/network_static.erb +4 -0
- data/templates/guests/redhat/network_dhcp.erb +6 -0
- data/templates/guests/redhat/network_static.erb +7 -0
- data/templates/locales/en.yml +241 -122
- data/templates/{chef_server_client.erb → provisioners/chef_client/client.erb} +0 -0
- data/templates/{chef_solo_solo.erb → provisioners/chef_solo/solo.erb} +0 -0
- data/test/acceptance/base.rb +10 -10
- data/test/acceptance/box_test.rb +28 -6
- data/test/acceptance/destroy_test.rb +1 -1
- data/test/acceptance/halt_test.rb +4 -4
- data/test/acceptance/init_test.rb +3 -3
- data/test/acceptance/networking/host_only_test.rb +37 -0
- data/test/acceptance/networking/port_forward_test.rb +125 -0
- data/test/acceptance/package_test.rb +46 -0
- data/test/acceptance/provisioning/basic_test.rb +61 -0
- data/test/acceptance/provisioning/chef_solo_test.rb +37 -0
- data/test/acceptance/provisioning/shell_test.rb +53 -0
- data/test/acceptance/resume_test.rb +1 -1
- data/test/acceptance/skeletons/chef_solo_basic/README.md +3 -0
- data/test/acceptance/skeletons/chef_solo_basic/cookbooks/basic/recipes/default.rb +5 -0
- data/test/acceptance/skeletons/chef_solo_json/README.md +3 -0
- data/test/acceptance/skeletons/chef_solo_json/cookbooks/basic/recipes/default.rb +6 -0
- data/test/acceptance/skeletons/provisioner_multi/README.md +3 -0
- data/test/acceptance/skeletons/provisioner_multi/cookbooks/basic/recipes/default.rb +5 -0
- data/test/acceptance/ssh_test.rb +7 -2
- data/test/acceptance/support/config.rb +1 -1
- data/test/acceptance/support/isolated_environment.rb +41 -150
- data/test/acceptance/support/matchers/match_output.rb +1 -1
- data/test/acceptance/support/matchers/succeed.rb +14 -0
- data/test/acceptance/support/network_tests.rb +29 -0
- data/test/acceptance/support/output.rb +9 -1
- data/test/acceptance/support/shared/base_context.rb +16 -9
- data/test/acceptance/support/shared/command_examples.rb +4 -4
- data/test/acceptance/suspend_test.rb +1 -1
- data/test/acceptance/up_basic_test.rb +26 -7
- data/test/acceptance/up_with_box_url.rb +1 -1
- data/test/acceptance/vagrant_test.rb +1 -1
- data/test/acceptance/version_test.rb +0 -5
- data/test/support/isolated_environment.rb +46 -0
- data/test/{acceptance/support → support}/tempdir.rb +0 -0
- data/test/unit/base.rb +21 -0
- data/test/unit/support/isolated_environment.rb +39 -0
- data/test/unit/support/shared/base_context.rb +30 -0
- data/test/unit/vagrant/action/builder_test.rb +126 -177
- data/test/unit/vagrant/action/environment_test.rb +10 -21
- data/test/unit/vagrant/action/runner_test.rb +65 -0
- data/test/unit/vagrant/action/warden_test.rb +64 -97
- data/test/unit/vagrant/box_collection_test.rb +44 -33
- data/test/unit/vagrant/box_test.rb +25 -65
- data/test/unit/vagrant/command/base_test.rb +141 -14
- data/test/unit/vagrant/config/base_test.rb +16 -43
- data/test/unit/vagrant/config/loader_test.rb +79 -0
- data/test/unit/vagrant/config/top_test.rb +69 -0
- data/test/unit/vagrant/config/vm_test.rb +62 -47
- data/test/unit/vagrant/config_test.rb +16 -151
- data/test/unit/vagrant/data_store_test.rb +43 -61
- data/test/unit/vagrant/downloaders/base_test.rb +12 -22
- data/test/unit/vagrant/downloaders/file_test.rb +58 -31
- data/test/unit/vagrant/downloaders/http_test.rb +12 -86
- data/test/unit/vagrant/environment_test.rb +107 -536
- data/test/unit/vagrant/hosts_test.rb +36 -0
- data/test/unit/vagrant/registry_test.rb +56 -0
- data/test/unit/vagrant/util/file_checksum_test.rb +23 -0
- data/test/unit/vagrant/util/hash_with_indifferent_access_test.rb +23 -24
- data/test/unit/vagrant/util/network_ip_test.rb +17 -0
- data/test/unit/vagrant/util/retryable_test.rb +90 -34
- data/test/unit/vagrant_test.rb +27 -0
- data/test/{unit → unit_legacy}/locales/en.yml +0 -0
- data/test/{unit → unit_legacy}/test_helper.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/box/destroy_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/box/download_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/box/package_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/box/unpackage_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/box/verify_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/env/set_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/general/package_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/general/validate_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/boot_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/check_accessible_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/check_box_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/check_guest_additions_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/clean_machine_folder_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/clear_forwarded_ports_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/clear_nfs_exports_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/clear_shared_folders_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/customize_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/destroy_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/destroy_unused_network_interfaces_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/discard_state_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/export_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/forward_ports_helpers_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/forward_ports_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/halt_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/host_name_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/import_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/match_mac_address_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/modify_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/network_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/nfs_helpers_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/nfs_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/package_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/package_vagrantfile_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/provision_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/provisioner_cleanup_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/resume_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/share_folders_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/suspend_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action_test.rb +0 -0
- data/test/unit_legacy/vagrant/box_collection_test.rb +45 -0
- data/test/unit_legacy/vagrant/box_test.rb +74 -0
- data/test/{unit → unit_legacy}/vagrant/cli_test.rb +0 -0
- data/test/unit_legacy/vagrant/command/base_test.rb +23 -0
- data/test/{unit → unit_legacy}/vagrant/command/group_base_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/command/helpers_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/command/init_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/command/package_test.rb +0 -0
- data/test/unit_legacy/vagrant/config/base_test.rb +52 -0
- data/test/{unit → unit_legacy}/vagrant/config/error_recorder_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/config/ssh_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/config/vagrant_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/config/vm/provisioner_test.rb +0 -0
- data/test/unit_legacy/vagrant/config/vm_test.rb +47 -0
- data/test/unit_legacy/vagrant/config_test.rb +148 -0
- data/test/unit_legacy/vagrant/downloaders/http_test.rb +93 -0
- data/test/unit_legacy/vagrant/environment_test.rb +539 -0
- data/test/{unit → unit_legacy}/vagrant/errors_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/hosts/base_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/hosts/bsd_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/hosts/linux_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/plugin_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/provisioners/base_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/provisioners/chef_client_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/provisioners/chef_solo_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/provisioners/chef_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/provisioners/puppet_server_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/provisioners/puppet_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/provisioners/shell_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/ssh/session_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/ssh_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/systems/base_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/systems/linux_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/util/busy_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/util/counter_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/util/platform_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/util/stacked_proc_runner_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/util/template_renderer_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/vm_test.rb +0 -0
- data/vagrant.gemspec +7 -9
- metadata +214 -216
- data/keys/vagrant.ppk +0 -26
- data/lib/vagrant/action/box.rb +0 -11
- data/lib/vagrant/action/env.rb +0 -7
- data/lib/vagrant/action/general.rb +0 -8
- data/lib/vagrant/action/vm.rb +0 -34
- data/lib/vagrant/action/vm/forward_ports_helpers.rb +0 -28
- data/lib/vagrant/action/vm/modify.rb +0 -37
- data/lib/vagrant/action/vm/nfs_helpers.rb +0 -11
- data/lib/vagrant/command/group_base.rb +0 -107
- data/lib/vagrant/command/helpers.rb +0 -33
- data/lib/vagrant/command/named_base.rb +0 -14
- data/lib/vagrant/command/upgrade_to_060.rb +0 -45
- data/lib/vagrant/command/version.rb +0 -13
- data/lib/vagrant/ssh/session.rb +0 -136
- data/lib/vagrant/systems.rb +0 -13
- data/lib/vagrant/systems/arch.rb +0 -34
- data/lib/vagrant/systems/debian.rb +0 -36
- data/lib/vagrant/systems/gentoo.rb +0 -27
- data/lib/vagrant/systems/linux.rb +0 -82
- data/lib/vagrant/systems/linux/error.rb +0 -9
- data/lib/vagrant/systems/redhat.rb +0 -48
- data/lib/vagrant/systems/solaris.rb +0 -113
- data/lib/vagrant/systems/ubuntu.rb +0 -17
- data/templates/network_entry_arch.erb +0 -9
- data/templates/network_entry_debian.erb +0 -8
- data/templates/network_entry_gentoo.erb +0 -5
- data/templates/network_entry_redhat.erb +0 -9
- data/test/unit/vagrant/ui_test.rb +0 -29
data/lib/vagrant/command/box.rb
CHANGED
@@ -1,32 +1,57 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
|
1
3
|
module Vagrant
|
2
4
|
module Command
|
3
|
-
class
|
4
|
-
|
5
|
+
class Box < Base
|
6
|
+
def initialize(argv, env)
|
7
|
+
super
|
5
8
|
|
6
|
-
|
7
|
-
def add(name, uri)
|
8
|
-
Box.add(env, name, uri)
|
9
|
-
end
|
9
|
+
@main_args, @sub_command, @sub_args = split_main_and_subcommand(argv)
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
11
|
+
@subcommands = Registry.new
|
12
|
+
@subcommands.register(:add) { Vagrant::Command::BoxAdd }
|
13
|
+
@subcommands.register(:remove) { Vagrant::Command::BoxRemove }
|
14
|
+
@subcommands.register(:repackage) { Vagrant::Command::BoxRepackage }
|
15
|
+
@subcommands.register(:list) { Vagrant::Command::BoxList }
|
16
16
|
end
|
17
17
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
18
|
+
def execute
|
19
|
+
if @main_args.include?("-h") || @main_args.include?("--help")
|
20
|
+
# Print the help for all the box commands.
|
21
|
+
return help
|
22
|
+
end
|
23
|
+
|
24
|
+
# If we reached this far then we must have a subcommand. If not,
|
25
|
+
# then we also just print the help and exit.
|
26
|
+
command_class = @subcommands.get(@sub_command.to_sym) if @sub_command
|
27
|
+
return help if !command_class || !@sub_command
|
28
|
+
@logger.debug("Invoking command class: #{command_class} #{@sub_args.inspect}")
|
29
|
+
|
30
|
+
# Initialize and execute the command class
|
31
|
+
command_class.new(@sub_args, @env).execute
|
23
32
|
end
|
24
33
|
|
25
|
-
|
26
|
-
def
|
27
|
-
|
28
|
-
|
29
|
-
|
34
|
+
# Prints the help out for this command
|
35
|
+
def help
|
36
|
+
opts = OptionParser.new do |opts|
|
37
|
+
opts.banner = "Usage: vagrant box <command> [<args>]"
|
38
|
+
opts.separator ""
|
39
|
+
opts.separator "Available subcommands:"
|
40
|
+
|
41
|
+
# Add the available subcommands as separators in order to print them
|
42
|
+
# out as well.
|
43
|
+
keys = []
|
44
|
+
@subcommands.each { |key, value| keys << key }
|
45
|
+
|
46
|
+
keys.sort.each do |key|
|
47
|
+
opts.separator " #{key}"
|
48
|
+
end
|
49
|
+
|
50
|
+
opts.separator ""
|
51
|
+
opts.separator "For help on any individual command run `vagrant box COMMAND -h`"
|
52
|
+
end
|
53
|
+
|
54
|
+
@env.ui.info(opts.help, :prefix => false)
|
30
55
|
end
|
31
56
|
end
|
32
57
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
|
3
|
+
module Vagrant
|
4
|
+
module Command
|
5
|
+
class BoxAdd < Base
|
6
|
+
def execute
|
7
|
+
options = {}
|
8
|
+
|
9
|
+
opts = OptionParser.new do |opts|
|
10
|
+
opts.banner = "Usage: vagrant box add <name> <url>"
|
11
|
+
opts.separator ""
|
12
|
+
|
13
|
+
opts.on("-f", "--force", "Overwrite an existing box if it exists.") do |f|
|
14
|
+
options[:force] = f
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
# Parse the options
|
19
|
+
argv = parse_options(opts)
|
20
|
+
return if !argv
|
21
|
+
|
22
|
+
# If we're force adding, then be sure to destroy any existing box if it
|
23
|
+
# exists.
|
24
|
+
if options[:force]
|
25
|
+
existing = @env.boxes.find(argv[0])
|
26
|
+
existing.destroy if existing
|
27
|
+
end
|
28
|
+
|
29
|
+
@env.boxes.add(argv[0], argv[1])
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
|
3
|
+
module Vagrant
|
4
|
+
module Command
|
5
|
+
class BoxList < Base
|
6
|
+
def execute
|
7
|
+
options = {}
|
8
|
+
|
9
|
+
opts = OptionParser.new do |opts|
|
10
|
+
opts.banner = "Usage: vagrant box list"
|
11
|
+
end
|
12
|
+
|
13
|
+
# Parse the options
|
14
|
+
argv = parse_options(opts)
|
15
|
+
return if !argv
|
16
|
+
|
17
|
+
boxes = @env.boxes.sort
|
18
|
+
if boxes.empty?
|
19
|
+
return @env.ui.warn(I18n.t("vagrant.commands.box.no_installed_boxes"), :prefix => false)
|
20
|
+
end
|
21
|
+
boxes.each { |b| @env.ui.info(b.name, :prefix => false) }
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
|
3
|
+
module Vagrant
|
4
|
+
module Command
|
5
|
+
class BoxRemove < Base
|
6
|
+
def execute
|
7
|
+
options = {}
|
8
|
+
|
9
|
+
opts = OptionParser.new do |opts|
|
10
|
+
opts.banner = "Usage: vagrant box remove <name>"
|
11
|
+
end
|
12
|
+
|
13
|
+
# Parse the options
|
14
|
+
argv = parse_options(opts)
|
15
|
+
return if !argv
|
16
|
+
|
17
|
+
b = @env.boxes.find(argv[0])
|
18
|
+
raise Errors::BoxNotFound, :name => argv[0] if !b
|
19
|
+
b.destroy
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
|
3
|
+
module Vagrant
|
4
|
+
module Command
|
5
|
+
class BoxRepackage < Base
|
6
|
+
def execute
|
7
|
+
options = {}
|
8
|
+
|
9
|
+
opts = OptionParser.new do |opts|
|
10
|
+
opts.banner = "Usage: vagrant box repackage <name>"
|
11
|
+
end
|
12
|
+
|
13
|
+
# Parse the options
|
14
|
+
argv = parse_options(opts)
|
15
|
+
return if !argv
|
16
|
+
|
17
|
+
b = @env.boxes.find(argv[0])
|
18
|
+
raise Errors::BoxNotFound, :name => argv[0] if !b
|
19
|
+
b.repackage
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -1,14 +1,25 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
|
1
3
|
module Vagrant
|
2
4
|
module Command
|
3
|
-
class
|
4
|
-
register "destroy", "Destroy the environment, deleting the created virtual machines"
|
5
|
-
|
5
|
+
class Destroy < Base
|
6
6
|
def execute
|
7
|
-
|
7
|
+
opts = OptionParser.new do |opts|
|
8
|
+
opts.banner = "Usage: vagrant destroy [vm-name]"
|
9
|
+
end
|
10
|
+
|
11
|
+
# Parse the options
|
12
|
+
argv = parse_options(opts)
|
13
|
+
return if !argv
|
14
|
+
|
15
|
+
@logger.debug("'Destroy' each target VM...")
|
16
|
+
with_target_vms(argv[0]) do |vm|
|
8
17
|
if vm.created?
|
18
|
+
@logger.info("Destroying: #{vm.name}")
|
9
19
|
vm.destroy
|
10
20
|
else
|
11
|
-
|
21
|
+
@logger.info("Not destroying #{vm.name}, since it isn't created.")
|
22
|
+
vm.ui.info I18n.t("vagrant.commands.common.vm_not_created")
|
12
23
|
end
|
13
24
|
end
|
14
25
|
end
|
data/lib/vagrant/command/halt.rb
CHANGED
@@ -1,15 +1,33 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
|
1
3
|
module Vagrant
|
2
4
|
module Command
|
3
|
-
class
|
4
|
-
class_option :force, :type => :boolean, :default => false, :aliases => "-f"
|
5
|
-
register "halt", "Halt the running VMs in the environment"
|
6
|
-
|
5
|
+
class Halt < Base
|
7
6
|
def execute
|
8
|
-
|
7
|
+
options = {}
|
8
|
+
|
9
|
+
opts = OptionParser.new do |opts|
|
10
|
+
opts.banner = "Usage: vagrant halt [vm-name] [--force] [-h]"
|
11
|
+
|
12
|
+
opts.separator ""
|
13
|
+
|
14
|
+
opts.on("-f", "--force", "Force shut down (equivalent of pulling power)") do |f|
|
15
|
+
options[:force] = f
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
# Parse the options
|
20
|
+
argv = parse_options(opts)
|
21
|
+
return if !argv
|
22
|
+
|
23
|
+
@logger.debug("Halt command: #{argv.inspect} #{options.inspect}")
|
24
|
+
with_target_vms(argv[0]) do |vm|
|
9
25
|
if vm.created?
|
10
|
-
vm.
|
26
|
+
@logger.info("Halting #{vm.name}")
|
27
|
+
vm.halt(:force => options[:force])
|
11
28
|
else
|
12
|
-
|
29
|
+
@logger.info("Not halting #{vm.name}, since not created.")
|
30
|
+
vm.ui.info I18n.t("vagrant.commands.common.vm_not_created")
|
13
31
|
end
|
14
32
|
end
|
15
33
|
end
|
data/lib/vagrant/command/init.rb
CHANGED
@@ -1,13 +1,36 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
|
3
|
+
require 'vagrant/util/template_renderer'
|
4
|
+
|
1
5
|
module Vagrant
|
2
6
|
module Command
|
3
|
-
class
|
4
|
-
argument :box_name, :type => :string, :optional => true, :default => "base"
|
5
|
-
argument :box_url, :type => :string, :optional => true
|
6
|
-
source_root File.expand_path("templates/commands/init", Vagrant.source_root)
|
7
|
-
register "init [box_name] [box_url]", "Initializes the current folder for Vagrant usage"
|
8
|
-
|
7
|
+
class Init < Base
|
9
8
|
def execute
|
10
|
-
|
9
|
+
options = {}
|
10
|
+
|
11
|
+
opts = OptionParser.new do |opts|
|
12
|
+
opts.banner = "Usage: vagrant init [box-name] [box-url]"
|
13
|
+
end
|
14
|
+
|
15
|
+
# Parse the options
|
16
|
+
argv = parse_options(opts)
|
17
|
+
return if !argv
|
18
|
+
|
19
|
+
save_path = @env.cwd.join("Vagrantfile")
|
20
|
+
raise Errors::VagrantfileExistsError if save_path.exist?
|
21
|
+
|
22
|
+
template_path = ::Vagrant.source_root.join("templates/commands/init/Vagrantfile")
|
23
|
+
contents = Vagrant::Util::TemplateRenderer.render(template_path,
|
24
|
+
:box_name => argv[0] || "base",
|
25
|
+
:box_url => argv[1])
|
26
|
+
|
27
|
+
# Write out the contents
|
28
|
+
save_path.open("w+") do |f|
|
29
|
+
f.write(contents)
|
30
|
+
end
|
31
|
+
|
32
|
+
@env.ui.info(I18n.t("vagrant.commands.init.success"),
|
33
|
+
:prefix => false)
|
11
34
|
end
|
12
35
|
end
|
13
36
|
end
|
@@ -1,33 +1,64 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
|
1
3
|
module Vagrant
|
2
4
|
module Command
|
3
|
-
class
|
4
|
-
class_option :base, :type => :string, :default => nil
|
5
|
-
class_option :output, :type => :string, :default => nil
|
6
|
-
class_option :include, :type => :array, :default => nil
|
7
|
-
class_option :vagrantfile, :type => :string, :default => nil
|
8
|
-
register "package", "Package a Vagrant environment for distribution"
|
9
|
-
|
5
|
+
class Package < Base
|
10
6
|
def execute
|
11
|
-
|
12
|
-
|
7
|
+
options = {}
|
8
|
+
|
9
|
+
opts = OptionParser.new do |opts|
|
10
|
+
opts.banner = "Usage: vagrant package [vm-name] [--base name] [--output name.box]"
|
11
|
+
opts.separator " [--include one,two,three] [--vagrantfile file]"
|
12
|
+
|
13
|
+
opts.separator ""
|
14
|
+
|
15
|
+
opts.on("--base NAME", "Name of a VM in virtualbox to package as a base box") do |b|
|
16
|
+
options[:base] = b
|
17
|
+
end
|
18
|
+
|
19
|
+
opts.on("--output NAME", "Name of the file to output") do |o|
|
20
|
+
options[:output] = o
|
21
|
+
end
|
22
|
+
|
23
|
+
opts.on("--include x,y,z", Array, "Additional files to package with the box.") do |i|
|
24
|
+
options[:include] = i
|
25
|
+
end
|
26
|
+
|
27
|
+
opts.on("--vagrantfile file", "Vagrantfile to package with the box.") do |v|
|
28
|
+
options[:vagrantfile] = v
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
# Parse the options
|
33
|
+
argv = parse_options(opts)
|
34
|
+
return if !argv
|
35
|
+
|
36
|
+
@logger.debug("package options: #{options.inspect}")
|
37
|
+
if options[:base]
|
38
|
+
package_base(options)
|
39
|
+
else
|
40
|
+
package_target(argv[0], options)
|
41
|
+
end
|
13
42
|
end
|
14
43
|
|
15
44
|
protected
|
16
45
|
|
17
|
-
def package_base
|
18
|
-
vm = VM.
|
46
|
+
def package_base(options)
|
47
|
+
vm = VM.new(options[:base], @env, @env.config.global, :base => true)
|
19
48
|
raise Errors::BaseVMNotFound, :name => options[:base] if !vm.created?
|
20
|
-
|
49
|
+
@logger.debug("Packaging base VM: #{vm.name}")
|
50
|
+
package_vm(vm, options)
|
21
51
|
end
|
22
52
|
|
23
|
-
def package_target
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
53
|
+
def package_target(name, options)
|
54
|
+
with_target_vms(name, true) do |vm|
|
55
|
+
raise Errors::VMNotCreatedError if !vm.created?
|
56
|
+
@logger.debug("Packaging VM: #{vm.name}")
|
57
|
+
package_vm(vm, options)
|
58
|
+
end
|
28
59
|
end
|
29
60
|
|
30
|
-
def package_vm(vm)
|
61
|
+
def package_vm(vm, options)
|
31
62
|
opts = options.inject({}) do |acc, data|
|
32
63
|
k,v = data
|
33
64
|
acc["package.#{k}"] = v
|
@@ -1,20 +1,33 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
|
1
3
|
module Vagrant
|
2
4
|
module Command
|
3
|
-
class
|
4
|
-
register "provision", "Rerun the provisioning scripts on a running VM"
|
5
|
-
|
5
|
+
class Provision < Base
|
6
6
|
def execute
|
7
|
-
|
7
|
+
options = {}
|
8
|
+
|
9
|
+
opts = OptionParser.new do |opts|
|
10
|
+
opts.banner = "Usage: vagrant provision [vm-name]"
|
11
|
+
end
|
12
|
+
|
13
|
+
# Parse the options
|
14
|
+
argv = parse_options(opts)
|
15
|
+
return if !argv
|
16
|
+
|
17
|
+
# Go over each VM and provision!
|
18
|
+
@logger.debug("'provision' each target VM...")
|
19
|
+
with_target_vms(argv[0]) do |vm|
|
8
20
|
if vm.created?
|
9
|
-
if
|
10
|
-
|
11
|
-
elsif vm.vm.running?
|
21
|
+
if vm.state == :running
|
22
|
+
@logger.info("Provisioning: #{vm.name}")
|
12
23
|
vm.provision
|
13
24
|
else
|
14
|
-
|
25
|
+
@logger.info("#{vm.name} not running. Not provisioning.")
|
26
|
+
vm.ui.info I18n.t("vagrant.commands.common.vm_not_running")
|
15
27
|
end
|
16
28
|
else
|
17
|
-
|
29
|
+
@logger.info("#{vm.name} not created. Not provisioning.")
|
30
|
+
vm.ui.info I18n.t("vagrant.commands.common.vm_not_created")
|
18
31
|
end
|
19
32
|
end
|
20
33
|
end
|
@@ -1,14 +1,27 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
|
1
3
|
module Vagrant
|
2
4
|
module Command
|
3
|
-
class
|
4
|
-
register "reload", "Reload the environment, halting it then restarting it."
|
5
|
-
|
5
|
+
class Reload < Base
|
6
6
|
def execute
|
7
|
-
|
7
|
+
options = {}
|
8
|
+
|
9
|
+
opts = OptionParser.new do |opts|
|
10
|
+
opts.banner = "Usage: vagrant reload [vm-name]"
|
11
|
+
end
|
12
|
+
|
13
|
+
# Parse the options
|
14
|
+
argv = parse_options(opts)
|
15
|
+
return if !argv
|
16
|
+
|
17
|
+
@logger.debug("'reload' each target VM...")
|
18
|
+
with_target_vms(argv[0]) do |vm|
|
8
19
|
if vm.created?
|
20
|
+
@logger.info("Reloading: #{vm.name}")
|
9
21
|
vm.reload
|
10
22
|
else
|
11
|
-
|
23
|
+
@logger.info("Not created: #{vm.name}. Not reloading.")
|
24
|
+
vm.ui.info I18n.t("vagrant.commands.common.vm_not_created")
|
12
25
|
end
|
13
26
|
end
|
14
27
|
end
|