vagrant-unbundled 2.0.3.0 → 2.0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +43 -10
- data/Gemfile.lock +16 -2
- data/README.md +1 -0
- data/bin/vagrant +1 -1
- data/lib/vagrant/action/builtin/handle_box.rb +1 -1
- data/lib/vagrant/action/general/package.rb +1 -1
- data/lib/vagrant/action.rb +3 -1
- data/lib/vagrant/alias.rb +56 -0
- data/lib/vagrant/bundler.rb +1 -1
- data/lib/vagrant/capability_host.rb +1 -1
- data/lib/vagrant/cli.rb +8 -0
- data/lib/vagrant/config/version_base.rb +1 -1
- data/lib/vagrant/environment.rb +7 -1
- data/lib/vagrant/errors.rb +4 -0
- data/lib/vagrant/host.rb +1 -1
- data/lib/vagrant/machine.rb +1 -1
- data/lib/vagrant/machine_index.rb +1 -1
- data/lib/vagrant/plugin/v1/guest.rb +1 -1
- data/lib/vagrant/plugin/v1/host.rb +1 -1
- data/lib/vagrant/plugin/v1/plugin.rb +1 -1
- data/lib/vagrant/plugin/v1/provider.rb +1 -1
- data/lib/vagrant/plugin/v2/guest.rb +1 -1
- data/lib/vagrant/plugin/v2/host.rb +1 -1
- data/lib/vagrant/plugin/v2/plugin.rb +1 -1
- data/lib/vagrant/plugin/v2/provider.rb +1 -1
- data/lib/vagrant/shared_helpers.rb +30 -9
- data/lib/vagrant/util/checkpoint_client.rb +8 -0
- data/lib/vagrant/util/downloader.rb +1 -1
- data/lib/vagrant/util/platform.rb +11 -3
- data/lib/vagrant/util/powershell.rb +17 -1
- data/lib/vagrant/util/safe_exec.rb +1 -1
- data/lib/vagrant/util/ssh.rb +4 -1
- data/lib/vagrant/util/stacked_proc_runner.rb +1 -1
- data/lib/vagrant/util/template_renderer.rb +2 -2
- data/lib/vagrant/vagrantfile.rb +1 -1
- data/lib/vagrant.rb +8 -0
- data/plugins/commands/plugin/gem_helper.rb +1 -1
- data/plugins/commands/powershell/command.rb +2 -2
- data/plugins/commands/powershell/scripts/enable_psremoting.ps1 +1 -1
- data/plugins/communicators/ssh/communicator.rb +10 -1
- data/plugins/communicators/winrm/command_filters/mkdir.rb +4 -2
- data/plugins/communicators/winrm/command_filters/rm.rb +5 -3
- data/plugins/communicators/winrm/command_filters/test.rb +3 -1
- data/plugins/communicators/winrm/command_filters/which.rb +4 -2
- data/plugins/communicators/winrm/communicator.rb +3 -3
- data/plugins/guests/amazon/cap/flavor.rb +1 -1
- data/plugins/guests/coreos/cap/configure_networks.rb +1 -1
- data/plugins/guests/coreos/guest.rb +1 -1
- data/plugins/guests/debian/cap/configure_networks.rb +1 -1
- data/plugins/guests/freebsd/cap/configure_networks.rb +1 -1
- data/plugins/guests/photon/guest.rb +1 -1
- data/plugins/guests/windows/cap/change_host_name.rb +6 -1
- data/plugins/guests/windows/cap/mount_shared_folder.rb +1 -1
- data/plugins/hosts/alt/plugin.rb +1 -1
- data/plugins/hosts/arch/plugin.rb +1 -1
- data/plugins/hosts/gentoo/plugin.rb +1 -1
- data/plugins/hosts/linux/plugin.rb +1 -1
- data/plugins/hosts/redhat/plugin.rb +1 -1
- data/plugins/hosts/slackware/plugin.rb +2 -2
- data/plugins/kernel_v2/config/push.rb +1 -1
- data/plugins/kernel_v2/config/vm.rb +1 -1
- data/plugins/providers/docker/action/compare_synced_folders.rb +1 -1
- data/plugins/providers/virtualbox/action/network.rb +9 -5
- data/plugins/providers/virtualbox/action/network_fix_ipv6.rb +1 -1
- data/plugins/provisioners/chef/config/chef_zero.rb +1 -1
- data/plugins/provisioners/chef/provisioner/chef_solo.rb +2 -2
- data/plugins/provisioners/chef/provisioner/chef_zero.rb +3 -3
- data/plugins/provisioners/puppet/config/puppet.rb +2 -0
- data/plugins/provisioners/puppet/provisioner/puppet.rb +18 -1
- data/plugins/provisioners/salt/config.rb +6 -0
- data/plugins/provisioners/salt/provisioner.rb +11 -1
- data/templates/locales/command_ps.yml +1 -1
- data/templates/locales/en.yml +13 -4
- data/templates/locales/guest_windows.yml +1 -1
- data/templates/locales/providers_docker.yml +1 -1
- data/templates/locales/synced_folder_smb.yml +2 -2
- data/vagrant.gemspec +2 -0
- data/vendor/bundle/ruby/2.5.0/bundler/gems/vagrant-spec-f3daedaac493/vagrant-spec.gemspec +1 -1
- data/vendor/bundle/ruby/2.5.0/gems/domain_name-0.5.20180417/.document +5 -0
- data/vendor/bundle/ruby/2.5.0/gems/domain_name-0.5.20180417/.gitignore +17 -0
- data/vendor/bundle/ruby/2.5.0/gems/domain_name-0.5.20180417/.travis.yml +21 -0
- data/vendor/bundle/ruby/2.5.0/gems/domain_name-0.5.20180417/CHANGELOG.md +209 -0
- data/vendor/bundle/ruby/2.5.0/gems/domain_name-0.5.20180417/Gemfile +4 -0
- data/vendor/bundle/ruby/2.5.0/gems/domain_name-0.5.20180417/LICENSE.txt +78 -0
- data/vendor/bundle/ruby/2.5.0/gems/domain_name-0.5.20180417/README.md +67 -0
- data/vendor/bundle/ruby/2.5.0/gems/domain_name-0.5.20180417/Rakefile +88 -0
- data/vendor/bundle/ruby/2.5.0/gems/domain_name-0.5.20180417/data/public_suffix_list.dat +12440 -0
- data/vendor/bundle/ruby/2.5.0/gems/domain_name-0.5.20180417/domain_name.gemspec +36 -0
- data/vendor/bundle/ruby/2.5.0/gems/domain_name-0.5.20180417/lib/domain_name/etld_data.rb +8474 -0
- data/vendor/bundle/ruby/2.5.0/gems/domain_name-0.5.20180417/lib/domain_name/etld_data.rb.erb +11 -0
- data/vendor/bundle/ruby/2.5.0/gems/domain_name-0.5.20180417/lib/domain_name/punycode.rb +283 -0
- data/vendor/bundle/ruby/2.5.0/gems/domain_name-0.5.20180417/lib/domain_name/version.rb +3 -0
- data/vendor/bundle/ruby/2.5.0/gems/domain_name-0.5.20180417/lib/domain_name.rb +297 -0
- data/vendor/bundle/ruby/2.5.0/gems/domain_name-0.5.20180417/test/helper.rb +17 -0
- data/vendor/bundle/ruby/2.5.0/gems/domain_name-0.5.20180417/test/test_domain_name-punycode.rb +97 -0
- data/vendor/bundle/ruby/2.5.0/gems/domain_name-0.5.20180417/test/test_domain_name.rb +317 -0
- data/vendor/bundle/ruby/2.5.0/gems/domain_name-0.5.20180417/tool/gen_etld_data.rb +63 -0
- data/vendor/bundle/ruby/2.5.0/gems/ffi-win32-extensions-1.0.3/CHANGES +13 -0
- data/vendor/bundle/ruby/2.5.0/gems/ffi-win32-extensions-1.0.3/LICENSE +201 -0
- data/vendor/bundle/ruby/2.5.0/gems/ffi-win32-extensions-1.0.3/MANIFEST +9 -0
- data/vendor/bundle/ruby/2.5.0/gems/ffi-win32-extensions-1.0.3/README +48 -0
- data/vendor/bundle/ruby/2.5.0/gems/ffi-win32-extensions-1.0.3/Rakefile +42 -0
- data/vendor/bundle/ruby/2.5.0/gems/ffi-win32-extensions-1.0.3/certs/djberg96_pub.pem +21 -0
- data/vendor/bundle/ruby/2.5.0/gems/ffi-win32-extensions-1.0.3/ffi-win32-extensions.gemspec +25 -0
- data/vendor/bundle/ruby/2.5.0/gems/ffi-win32-extensions-1.0.3/lib/ffi/win32/extensions.rb +96 -0
- data/vendor/bundle/ruby/2.5.0/gems/ffi-win32-extensions-1.0.3/lib/ffi-win32-extensions.rb +1 -0
- data/vendor/bundle/ruby/2.5.0/gems/ffi-win32-extensions-1.0.3/test/test_ffi_extensions.rb +41 -0
- data/vendor/bundle/ruby/2.5.0/gems/ffi-win32-extensions-1.0.3/test/test_string_extensions.rb +20 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-0.8.1/CHANGES +235 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-0.8.1/MANIFEST +16 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-0.8.1/README +73 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-0.8.1/Rakefile +49 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-0.8.1/appveyor.yml +50 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-0.8.1/certs/djberg96_pub.pem +21 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-0.8.1/lib/win32/file/constants.rb +33 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-0.8.1/lib/win32/file/functions.rb +42 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-0.8.1/lib/win32/file/structs.rb +54 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-0.8.1/lib/win32/file.rb +585 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-0.8.1/lib/win32-file.rb +1 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-0.8.1/test/test_win32_file_link.rb +141 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-0.8.1/test/test_win32_file_misc.rb +16 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-0.8.1/test/test_win32_file_path.rb +282 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-0.8.1/test/test_win32_file_stat.rb +330 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-0.8.1/win32-file.gemspec +33 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-security-1.0.10/CHANGES +63 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-security-1.0.10/MANIFEST +18 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-security-1.0.10/README +47 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-security-1.0.10/Rakefile +66 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-security-1.0.10/appveyor.yml +53 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-security-1.0.10/certs/djberg96_pub.pem +21 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-security-1.0.10/lib/win32/file/security/constants.rb +149 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-security-1.0.10/lib/win32/file/security/functions.rb +63 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-security-1.0.10/lib/win32/file/security/structs.rb +68 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-security-1.0.10/lib/win32/file/security.rb +963 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-security-1.0.10/lib/win32-file-security.rb +1 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-security-1.0.10/test/test_win32_file_security_acls.rb +34 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-security-1.0.10/test/test_win32_file_security_constants.rb +54 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-security-1.0.10/test/test_win32_file_security_encryption.rb +90 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-security-1.0.10/test/test_win32_file_security_ffi.rb +33 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-security-1.0.10/test/test_win32_file_security_ownership.rb +174 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-security-1.0.10/test/test_win32_file_security_permissions.rb +88 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-security-1.0.10/test/test_win32_file_security_version.rb +14 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-security-1.0.10/win32-file-security.gemspec +28 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-stat-1.5.5/CHANGES +169 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-stat-1.5.5/MANIFEST +12 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-stat-1.5.5/README +94 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-stat-1.5.5/Rakefile +28 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-stat-1.5.5/appveyor.yml +48 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-stat-1.5.5/certs/djberg96_pub.pem +21 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-stat-1.5.5/lib/win32/file/stat.rb +1008 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-stat-1.5.5/lib/win32/file/windows/constants.rb +94 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-stat-1.5.5/lib/win32/file/windows/functions.rb +68 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-stat-1.5.5/lib/win32/file/windows/structs.rb +196 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-stat-1.5.5/lib/win32-file-stat.rb +1 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-stat-1.5.5/test/test_file_stat.rb +677 -0
- data/vendor/bundle/ruby/2.5.0/gems/win32-file-stat-1.5.5/win32-file-stat.gemspec +30 -0
- data/vendor/bundle/ruby/2.5.0/specifications/domain_name-0.5.20180417.gemspec +46 -0
- data/vendor/bundle/ruby/2.5.0/specifications/ffi-win32-extensions-1.0.3.gemspec +38 -0
- data/vendor/bundle/ruby/2.5.0/specifications/win32-file-0.8.1.gemspec +51 -0
- data/vendor/bundle/ruby/2.5.0/specifications/win32-file-security-1.0.10.gemspec +47 -0
- data/vendor/bundle/ruby/2.5.0/specifications/win32-file-stat-1.5.5.gemspec +48 -0
- data/version.txt +1 -1
- metadata +114 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7f05389ae1ff4023e08b4a240e16afc13f24fb766254196f09ce91cf0f0c70b4
|
4
|
+
data.tar.gz: e76853469f4db645991f1b98bebca28cffc1cbfbe4d29f4c11033dc1e1099ce4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 499aa7f81c240e7b9e313ffc2dc2f6c9d85a8d0b06d8582e16fb05e5b6b762a56b35ba3c738bfb506fb7f085048a4c239dd47861b25cd1c949d214618e68e43a
|
7
|
+
data.tar.gz: e1dede9125879c569429a21d1c4f698f2d13c8cbad9bc84616a5a784ddfb30dce10ade705bbc1a0bf408fbe2ea23ae97ede54b44de71c942b4f1c8c1c004a131
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,36 @@
|
|
1
|
+
## 2.0.4 (April 20, 2018)
|
2
|
+
|
3
|
+
FEATURES:
|
4
|
+
|
5
|
+
- core: Vagrant aliases [GH-9504]
|
6
|
+
|
7
|
+
IMPROVEMENTS:
|
8
|
+
|
9
|
+
- communicators/ssh: Update file permissions when generating new key pairs [GH-9676]
|
10
|
+
- core: Make resolv-replace usage opt-in instead of opt-out [GH-9644]
|
11
|
+
- core: Suppress error messages from checkpoint runs [GH-9645]
|
12
|
+
- guests/coreos: Identify operating systems closely related to CoreOS [GH-9600]
|
13
|
+
- guests/debian: Adjust network configuration file prefix to 50- [GH-9646]
|
14
|
+
- guests/photon: Less specific string grep to fix PhotonOS 2.0 detection [GH-9528]
|
15
|
+
- guests/windows: Fix slow timeout when updating windows hostname [GH-9578]
|
16
|
+
- hosts/windows: Make powershell version detection timeout configurable [GH-9506]
|
17
|
+
- providers/virtualbox: Improve network collision error message [GH-9685]
|
18
|
+
- provisioner/chef_solo: Improve Windows drive letter removal hack for remote paths[GH-9490]
|
19
|
+
- provisioner/chef_zero: File path expand all chef_zero config path options [GH-9690]
|
20
|
+
- provisioner/puppet: Puppet structured facts toyaml on provisioner [GH-9670]
|
21
|
+
- provisioner/salt: Add master_json_config & minion_json_config options [GH-9420]
|
22
|
+
- util/platform: Warn on ArgumentError exceptions from encoding [GH-9506]
|
23
|
+
|
24
|
+
BUG FIXES:
|
25
|
+
|
26
|
+
- commands/package: Fix uninitialized constant error [GH-9654]
|
27
|
+
- communicators/winrm: Fix command filter to properly parse commands [GH-9673]
|
28
|
+
- hosts/windows: Properly respect the VAGRANT_PREFER_SYSTEM_BIN environment variable [GH-9503]
|
29
|
+
- hosts/windows: Fix virtualbox shared folders path for windows guests [GH-8099]
|
30
|
+
- guests/freebsd: Fix typo in command that manages configuring networks [GH-9705]
|
31
|
+
- util/checkpoint_client: Respect VAGRANT_CHECKPOINT_DISABLE environment variable [GH-9659]
|
32
|
+
- util/platform: Use `--version` instead of `version` for WSL validation [GH-9674]
|
33
|
+
|
1
34
|
## 2.0.3 (March 15, 2018)
|
2
35
|
|
3
36
|
IMPROVEMENTS:
|
@@ -306,7 +339,7 @@ BUG FIXES:
|
|
306
339
|
- core/bundler: Check if source is local path and prevent addition to remote sources [GH-8401]
|
307
340
|
- core/ui: Prevent deadlock detection errors [GH-8414, GH-8125]
|
308
341
|
- guests/debian: Remove hardcoded device name in interface template [GH-8336, GH-7960]
|
309
|
-
- guests/linux: Fix SMB mount
|
342
|
+
- guests/linux: Fix SMB mount capability [GH-8410, GH-8404]
|
310
343
|
- hosts/windows: Fix issues with Windows encoding [GH-8385, GH-8380, GH-8212, GH-8207, GH-7516]
|
311
344
|
- hosts/windows: Fix UNC path generation when UNC path is provided [GH-8504]
|
312
345
|
- provisioners/salt: Allow Salt version to match 2 digit month [GH-8428]
|
@@ -524,7 +557,7 @@ BUG FIXES:
|
|
524
557
|
- guests/redhat: Use `/sbin/ip` to list and configure networks for
|
525
558
|
compatability with older versions of CentOS [GH-7482]
|
526
559
|
- guests/redhat: Ensure newline when inserting public key [GH-7598, GH-7605]
|
527
|
-
- guests/ubuntu: Use /etc/os-release to
|
560
|
+
- guests/ubuntu: Use /etc/os-release to detect [GH-7524]
|
528
561
|
- guests/ubuntu: Use short hostname [GH-7488, GH-7605]
|
529
562
|
- providers/hyperv: Fix version check and catch statement [GH-7447, GH-7487]
|
530
563
|
|
@@ -658,7 +691,7 @@ BUG FIXES:
|
|
658
691
|
- providers/virtualbox: Set maximum network adapters to 36 [GH-7293, GH-7286]
|
659
692
|
- providers/virtualbox: Do not fail when master VM from linked clone is
|
660
693
|
missing [GH-7126, GH-6742]
|
661
|
-
- providers/virtualbox: Use scoped overrides in
|
694
|
+
- providers/virtualbox: Use scoped overrides in preparing NFS
|
662
695
|
[GH-7387, GH-7386]
|
663
696
|
- provisioners/ansible: Fix a race condition in the concurrent generations of
|
664
697
|
the ansible inventory file, while running `vagrant up --parallel`
|
@@ -1014,7 +1047,7 @@ BUG FIXES:
|
|
1014
1047
|
- provisioners/ansible: disable color if Vagrant is not colored [GH-5531, GH-5532]
|
1015
1048
|
- provisioners/ansible: only show ansible-playbook command when `verbose` option is enabled [GH-5803]
|
1016
1049
|
- provisioners/ansible: fix a race condition in the inventory file generation [GH-5551]
|
1017
|
-
- provisioners/docker: use `service` to restart Docker
|
1050
|
+
- provisioners/docker: use `service` to restart Docker instead of upstart [GH-5245, GH-5577]
|
1018
1051
|
- provisioners/docker: Only add docker user to group if exists. [GH-5315]
|
1019
1052
|
- provisioners/docker: Use https for repo [GH-5749]
|
1020
1053
|
- provisioners/docker: `apt-get update` before installing linux kernel
|
@@ -1249,7 +1282,7 @@ IMPROVEMENTS:
|
|
1249
1282
|
deleted by default. [GH-4327]
|
1250
1283
|
- commands/plugin: Better error output is shown when plugin installation
|
1251
1284
|
fails.
|
1252
|
-
- commands/reload: show post up
|
1285
|
+
- commands/reload: show post up message [GH-4168]
|
1253
1286
|
- commands/rsync-auto: Add `--poll` flag. [GH-4392]
|
1254
1287
|
- communicators/winrm: Show stdout/stderr if command fails. [GH-4094]
|
1255
1288
|
- guests/nixos: Added better NFS support. [GH-3983]
|
@@ -1537,7 +1570,7 @@ BUG FIXES:
|
|
1537
1570
|
already for 127.0.1.1 [GH-3271]
|
1538
1571
|
- guests/linux: For `read_ip_address` capability, set `LANG=en` so
|
1539
1572
|
it works on international systems. [GH-3029]
|
1540
|
-
- providers/virtualbox:
|
1573
|
+
- providers/virtualbox: VirtualBox detection works properly again on
|
1541
1574
|
Windows when the `VBOX_INSTALL_PATH` has multiple elements. [GH-3549]
|
1542
1575
|
- providers/virtualbox: Forcing MAC address on private network works
|
1543
1576
|
properly again. [GH-3588]
|
@@ -1714,7 +1747,7 @@ BUG FIXES:
|
|
1714
1747
|
- core: Assume a box isn't metadata if it exceeds 20 MB. [GH-3107]
|
1715
1748
|
- core: Asking for input works even in consoles that don't support
|
1716
1749
|
hiding input. [GH-3119]
|
1717
|
-
- core: Adding a box by path in Cygwin on
|
1750
|
+
- core: Adding a box by path in Cygwin on Windows works. [GH-3132]
|
1718
1751
|
- core: PowerShell scripts work when they're in a directory with
|
1719
1752
|
spaces. [GH-3100]
|
1720
1753
|
- core: If you add a box path that doesn't exist, error earlier. [GH-3091]
|
@@ -2030,7 +2063,7 @@ BUG FIXES:
|
|
2030
2063
|
- core: Don't load Vagrantfile on `vagrant plugin` commands, allowing
|
2031
2064
|
Vagrantfiles that use plugins to work. [GH-2388]
|
2032
2065
|
- core: global flags are ignored past the "--" on the CLI. [GH-2491]
|
2033
|
-
- core:
|
2066
|
+
- core: provisioning will properly happen if `up` failed. [GH-2488]
|
2034
2067
|
- guests/freebsd: Mounting NFS folders works. [GH-2400]
|
2035
2068
|
- guests/freebsd: Uses `sh` by default for shell. [GH-2485]
|
2036
2069
|
- guests/linux: upstart events listening for `vagrant-mounted` won't
|
@@ -3036,7 +3069,7 @@ IMPROVEMENTS / BUG FIXES:
|
|
3036
3069
|
the behavior seems different/wrong.
|
3037
3070
|
- Give a nice error if `:vagrant` is used as a JSON key, since Vagrant
|
3038
3071
|
uses this. [GH-661]
|
3039
|
-
- If there is only one
|
3072
|
+
- If there is only one bridgeable interface, use that without asking
|
3040
3073
|
the user. [GH-655]
|
3041
3074
|
- The shell will have color output if ANSICON is installed on Windows. [GH-666]
|
3042
3075
|
|
@@ -3087,7 +3120,7 @@ IMPROVEMENTS / BUG FIXES:
|
|
3087
3120
|
port of the virtual machine.
|
3088
3121
|
- If a shared folder now has a `:create` flag set to `true`, the path on the
|
3089
3122
|
host will be created if it doesn't exist.
|
3090
|
-
- Added `--force` flag to `box add`, which will
|
3123
|
+
- Added `--force` flag to `box add`, which will overwrite any existing boxes
|
3091
3124
|
if they exist. [GH-631]
|
3092
3125
|
- Added `--provision-with` to `up` which configures what provisioners run,
|
3093
3126
|
by shortcut. [GH-367]
|
data/Gemfile.lock
CHANGED
@@ -11,7 +11,7 @@ GIT
|
|
11
11
|
PATH
|
12
12
|
remote: .
|
13
13
|
specs:
|
14
|
-
vagrant-unbundled (2.0.
|
14
|
+
vagrant-unbundled (2.0.4.0)
|
15
15
|
childprocess (~> 0.6.0)
|
16
16
|
erubis (~> 2.7.0)
|
17
17
|
hashicorp-checkpoint (~> 0.1.5)
|
@@ -25,6 +25,8 @@ PATH
|
|
25
25
|
rest-client (~> 2.0)
|
26
26
|
ruby_dep (<= 1.3.1)
|
27
27
|
wdm (~> 0.1.0)
|
28
|
+
win32-file (~> 0.8.1)
|
29
|
+
win32-file-security (~> 1.0.10)
|
28
30
|
winrm (~> 2.1)
|
29
31
|
winrm-elevated (~> 1.1)
|
30
32
|
winrm-fs (~> 1.0)
|
@@ -40,11 +42,13 @@ GEM
|
|
40
42
|
crack (0.4.3)
|
41
43
|
safe_yaml (~> 1.0.0)
|
42
44
|
diff-lcs (1.3)
|
43
|
-
domain_name (0.5.
|
45
|
+
domain_name (0.5.20180417)
|
44
46
|
unf (>= 0.0.5, < 1.0.0)
|
45
47
|
erubis (2.7.0)
|
46
48
|
fake_ftp (0.1.1)
|
47
49
|
ffi (1.9.23)
|
50
|
+
ffi-win32-extensions (1.0.3)
|
51
|
+
ffi
|
48
52
|
gssapi (1.2.0)
|
49
53
|
ffi (>= 1.0.1)
|
50
54
|
gyoku (1.3.1)
|
@@ -115,6 +119,16 @@ GEM
|
|
115
119
|
addressable (>= 2.3.6)
|
116
120
|
crack (>= 0.3.2)
|
117
121
|
hashdiff
|
122
|
+
win32-file (0.8.1)
|
123
|
+
ffi
|
124
|
+
ffi-win32-extensions
|
125
|
+
win32-file-stat (>= 1.4.0)
|
126
|
+
win32-file-security (1.0.10)
|
127
|
+
ffi
|
128
|
+
ffi-win32-extensions
|
129
|
+
win32-file-stat (1.5.5)
|
130
|
+
ffi
|
131
|
+
ffi-win32-extensions
|
118
132
|
winrm (2.2.3)
|
119
133
|
builder (>= 2.1.2)
|
120
134
|
erubis (~> 2.7)
|
data/README.md
CHANGED
@@ -4,6 +4,7 @@
|
|
4
4
|
* Source: [https://github.com/hashicorp/vagrant](https://github.com/hashicorp/vagrant)
|
5
5
|
* [![Gitter chat](https://badges.gitter.im/mitchellh/vagrant.png)](https://gitter.im/mitchellh/vagrant)
|
6
6
|
* Mailing list: [Google Groups](https://groups.google.com/group/vagrant-up)
|
7
|
+
* IRC: #vagrant on freenode.org
|
7
8
|
|
8
9
|
Vagrant is a tool for building and distributing development environments.
|
9
10
|
|
data/bin/vagrant
CHANGED
@@ -6,7 +6,7 @@ module Vagrant
|
|
6
6
|
module Action
|
7
7
|
module Builtin
|
8
8
|
# This built-in middleware handles the `box` setting by verifying
|
9
|
-
# the box is already installed,
|
9
|
+
# the box is already installed, downloading the box if it isn't,
|
10
10
|
# updating the box if it is requested, etc.
|
11
11
|
class HandleBox
|
12
12
|
@@big_lock = Mutex.new
|
@@ -121,7 +121,7 @@ module Vagrant
|
|
121
121
|
@env[:ui].info I18n.t("vagrant.actions.general.package.packaging", file: from)
|
122
122
|
FileUtils.mkdir_p(to.parent)
|
123
123
|
|
124
|
-
# Copy
|
124
|
+
# Copy directory contents recursively.
|
125
125
|
if File.directory?(from)
|
126
126
|
FileUtils.cp_r(Dir.glob(from), to.parent, preserve: true)
|
127
127
|
else
|
data/lib/vagrant/action.rb
CHANGED
@@ -36,7 +36,9 @@ module Vagrant
|
|
36
36
|
end
|
37
37
|
|
38
38
|
module General
|
39
|
-
autoload :Package,
|
39
|
+
autoload :Package, 'vagrant/action/general/package'
|
40
|
+
autoload :PackageSetupFiles, 'vagrant/action/general/package_setup_files'
|
41
|
+
autoload :PackageSetupFolders, 'vagrant/action/general/package_setup_folders'
|
40
42
|
end
|
41
43
|
|
42
44
|
# This is the action that will add a box from a URL. This middleware
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require "vagrant/registry"
|
2
|
+
|
3
|
+
module Vagrant
|
4
|
+
# This class imports and processes CLI aliases stored in ~/.vagrant.d/aliases
|
5
|
+
class Alias
|
6
|
+
def initialize(env)
|
7
|
+
@aliases = Registry.new
|
8
|
+
@env = env
|
9
|
+
|
10
|
+
if env.aliases_path.file?
|
11
|
+
env.aliases_path.readlines.each do |line|
|
12
|
+
# separate keyword-command pairs
|
13
|
+
keyword, command = interpret(line)
|
14
|
+
|
15
|
+
if keyword && command
|
16
|
+
register(keyword, command)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
# This returns all the registered alias commands.
|
23
|
+
def commands
|
24
|
+
@aliases
|
25
|
+
end
|
26
|
+
|
27
|
+
# This interprets a raw line from the aliases file.
|
28
|
+
def interpret(line)
|
29
|
+
# is it a comment?
|
30
|
+
return nil if line.strip.start_with?("#")
|
31
|
+
|
32
|
+
keyword, command = line.split("=", 2).collect(&:strip)
|
33
|
+
|
34
|
+
# validate the keyword
|
35
|
+
if keyword.match(/\s/i)
|
36
|
+
raise Errors::AliasInvalidError, alias: line, message: "Alias keywords must not contain any whitespace."
|
37
|
+
end
|
38
|
+
|
39
|
+
[keyword, command]
|
40
|
+
end
|
41
|
+
|
42
|
+
# This registers an alias.
|
43
|
+
def register(keyword, command)
|
44
|
+
@aliases.register(keyword.to_sym) do
|
45
|
+
lambda do |args|
|
46
|
+
# directly execute shell commands
|
47
|
+
if command.start_with?("!")
|
48
|
+
return Util::SafeExec.exec "#{command[1..-1]} #{args.join(" ")}".strip
|
49
|
+
end
|
50
|
+
|
51
|
+
return CLI.new(command.split.concat(args), @env).execute
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
data/lib/vagrant/bundler.rb
CHANGED
@@ -307,7 +307,7 @@ module Vagrant
|
|
307
307
|
|
308
308
|
# Install all remote gems into plugin path. Set the installer to ignore dependencies
|
309
309
|
# as we know the dependencies are satisfied and it will attempt to validate a gem's
|
310
|
-
# dependencies are
|
310
|
+
# dependencies are satisfied by gems in the install directory (which will likely not
|
311
311
|
# be true)
|
312
312
|
result = request_set.install_into(plugin_gem_path.to_s, true,
|
313
313
|
ignore_dependencies: true,
|
@@ -5,7 +5,7 @@ module Vagrant
|
|
5
5
|
#
|
6
6
|
# Capabilities allow small pieces of functionality to be plugged in using
|
7
7
|
# the Vagrant plugin model. Capabilities even allow for a certain amount
|
8
|
-
# of
|
8
|
+
# of inheritance, where only a subset of capabilities may be implemented but
|
9
9
|
# a parent implements the rest.
|
10
10
|
#
|
11
11
|
# Capabilities are used heavily in Vagrant for host/guest interactions. For
|
data/lib/vagrant/cli.rb
CHANGED
@@ -28,6 +28,14 @@ module Vagrant
|
|
28
28
|
command_plugin = nil
|
29
29
|
if @sub_command
|
30
30
|
command_plugin = Vagrant.plugin("2").manager.commands[@sub_command.to_sym]
|
31
|
+
|
32
|
+
if !command_plugin
|
33
|
+
alias_command = Alias.new(@env).commands[@sub_command.to_sym]
|
34
|
+
|
35
|
+
if alias_command
|
36
|
+
return alias_command.call(@sub_args)
|
37
|
+
end
|
38
|
+
end
|
31
39
|
end
|
32
40
|
|
33
41
|
if !command_plugin || !@sub_command
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Vagrant
|
2
2
|
module Config
|
3
3
|
# This is the base class for any configuration versions, and includes
|
4
|
-
# the stub methods that
|
4
|
+
# the stub methods that configuration versions must implement. Vagrant
|
5
5
|
# supports configuration versioning so that backwards compatibility can be
|
6
6
|
# maintained for past Vagrantfiles while newer configurations are added.
|
7
7
|
# Vagrant only introduces new configuration versions for major versions
|
data/lib/vagrant/environment.rb
CHANGED
@@ -56,6 +56,9 @@ module Vagrant
|
|
56
56
|
# The directory where temporary files for Vagrant go.
|
57
57
|
attr_reader :tmp_path
|
58
58
|
|
59
|
+
# File where command line aliases go.
|
60
|
+
attr_reader :aliases_path
|
61
|
+
|
59
62
|
# The directory where boxes are stored.
|
60
63
|
attr_reader :boxes_path
|
61
64
|
|
@@ -124,6 +127,9 @@ module Vagrant
|
|
124
127
|
@tmp_path = @home_path.join("tmp")
|
125
128
|
@machine_index_dir = @data_dir.join("machine-index")
|
126
129
|
|
130
|
+
@aliases_path = Pathname.new(ENV["VAGRANT_ALIAS_FILE"]).expand_path if ENV.key?("VAGRANT_ALIAS_FILE")
|
131
|
+
@aliases_path ||= @home_path.join("aliases")
|
132
|
+
|
127
133
|
# Prepare the directories
|
128
134
|
setup_home_path
|
129
135
|
|
@@ -446,7 +452,7 @@ module Vagrant
|
|
446
452
|
temp_dir_root: tmp_path)
|
447
453
|
end
|
448
454
|
|
449
|
-
# Returns the {Config::Loader} that can be used to load
|
455
|
+
# Returns the {Config::Loader} that can be used to load Vagrantfiles
|
450
456
|
# given the settings of this environment.
|
451
457
|
#
|
452
458
|
# @return [Config::Loader]
|
data/lib/vagrant/errors.rb
CHANGED
@@ -108,6 +108,10 @@ module Vagrant
|
|
108
108
|
error_key(:active_machine_with_different_provider)
|
109
109
|
end
|
110
110
|
|
111
|
+
class AliasInvalidError < VagrantError
|
112
|
+
error_key(:alias_invalid_error)
|
113
|
+
end
|
114
|
+
|
111
115
|
class BatchMultiError < VagrantError
|
112
116
|
error_key(:batch_multi_error)
|
113
117
|
end
|
data/lib/vagrant/host.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require "vagrant/capability_host"
|
2
2
|
|
3
3
|
module Vagrant
|
4
|
-
# This class handles host-OS specific
|
4
|
+
# This class handles host-OS specific interactions. It is responsible for
|
5
5
|
# detecting the proper host OS implementation and delegating capabilities
|
6
6
|
# to plugins.
|
7
7
|
#
|
data/lib/vagrant/machine.rb
CHANGED
@@ -456,7 +456,7 @@ module Vagrant
|
|
456
456
|
info[:password] = @config.ssh.password if @config.ssh.password
|
457
457
|
info[:extra_args] = @config.ssh.extra_args if @config.ssh.extra_args
|
458
458
|
|
459
|
-
# We also set some fields that are purely controlled by
|
459
|
+
# We also set some fields that are purely controlled by Vagrant
|
460
460
|
info[:forward_agent] = @config.ssh.forward_agent
|
461
461
|
info[:forward_x11] = @config.ssh.forward_x11
|
462
462
|
info[:forward_env] = @config.ssh.forward_env
|
@@ -404,7 +404,7 @@ module Vagrant
|
|
404
404
|
end
|
405
405
|
|
406
406
|
# Returns boolean true if this entry appears to be valid.
|
407
|
-
# The
|
407
|
+
# The criteria for being valid:
|
408
408
|
#
|
409
409
|
# * Vagrantfile directory exists
|
410
410
|
# * Vagrant environment contains a machine with this
|
@@ -3,7 +3,7 @@ module Vagrant
|
|
3
3
|
module V1
|
4
4
|
# The base class for a guest. A guest represents an installed system
|
5
5
|
# within a machine that Vagrant manages. There are some portions of
|
6
|
-
# Vagrant which are OS-specific such as
|
6
|
+
# Vagrant which are OS-specific such as mounting shared folders and
|
7
7
|
# halting the machine, and this abstraction allows the implementation
|
8
8
|
# for these to be separate from the core of Vagrant.
|
9
9
|
class Guest
|
@@ -3,7 +3,7 @@ module Vagrant
|
|
3
3
|
module V1
|
4
4
|
# Base class for a host in Vagrant. A host class contains functionality
|
5
5
|
# that is specific to a specific OS that is running Vagrant. This
|
6
|
-
# abstraction is done
|
6
|
+
# abstraction is done because there is some host-specific logic that
|
7
7
|
# Vagrant must do in some cases.
|
8
8
|
class Host
|
9
9
|
# This returns true/false depending on if the current running system
|
@@ -21,7 +21,7 @@ module Vagrant
|
|
21
21
|
nil
|
22
22
|
end
|
23
23
|
|
24
|
-
# This method is called if the
|
24
|
+
# This method is called if the underlying machine ID changes. Providers
|
25
25
|
# can use this method to load in new data for the actual backing
|
26
26
|
# machine or to realize that the machine is now gone (the ID can
|
27
27
|
# become `nil`). No parameters are given, since the underlying machine
|
@@ -7,7 +7,7 @@ module Vagrant
|
|
7
7
|
# own form of plugin.
|
8
8
|
#
|
9
9
|
# The guest class itself is only responsible for detecting itself,
|
10
|
-
# and may provide helpers for the
|
10
|
+
# and may provide helpers for the capabilities.
|
11
11
|
class Guest
|
12
12
|
# This method is called when the machine is booted and has communication
|
13
13
|
# capabilities in order to detect whether this guest operating system
|
@@ -3,7 +3,7 @@ module Vagrant
|
|
3
3
|
module V2
|
4
4
|
# Base class for a host in Vagrant. A host class contains functionality
|
5
5
|
# that is specific to a specific OS that is running Vagrant. This
|
6
|
-
# abstraction is done
|
6
|
+
# abstraction is done because there is some host-specific logic that
|
7
7
|
# Vagrant must do in some cases.
|
8
8
|
class Host
|
9
9
|
# This returns true/false depending on if the current running system
|
@@ -55,7 +55,7 @@ module Vagrant
|
|
55
55
|
nil
|
56
56
|
end
|
57
57
|
|
58
|
-
# This method is called if the
|
58
|
+
# This method is called if the underlying machine ID changes. Providers
|
59
59
|
# can use this method to load in new data for the actual backing
|
60
60
|
# machine or to realize that the machine is now gone (the ID can
|
61
61
|
# become `nil`). No parameters are given, since the underlying machine
|
@@ -15,7 +15,7 @@ module Vagrant
|
|
15
15
|
# Max number of seconds to wait for joining an active thread.
|
16
16
|
#
|
17
17
|
# @return [Integer]
|
18
|
-
# @note This is not the
|
18
|
+
# @note This is not the maximum time for a thread to complete.
|
19
19
|
THREAD_MAX_JOIN_TIMEOUT = 60
|
20
20
|
|
21
21
|
# This holds a global lock for the duration of the block. This should
|
@@ -93,7 +93,7 @@ module Vagrant
|
|
93
93
|
#
|
94
94
|
# @return [Pathname]
|
95
95
|
def self.user_data_path
|
96
|
-
# Use user
|
96
|
+
# Use user specified env var if available
|
97
97
|
path = ENV["VAGRANT_HOME"]
|
98
98
|
|
99
99
|
# On Windows, we default to the USERPROFILE directory if it
|
@@ -134,15 +134,36 @@ module Vagrant
|
|
134
134
|
#
|
135
135
|
# @return [boolean] enabled or not
|
136
136
|
def self.enable_resolv_replace
|
137
|
-
if
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
137
|
+
if ENV["VAGRANT_ENABLE_RESOLV_REPLACE"]
|
138
|
+
if !ENV["VAGRANT_DISABLE_RESOLV_REPLACE"]
|
139
|
+
begin
|
140
|
+
require "resolv-replace"
|
141
|
+
true
|
142
|
+
rescue
|
143
|
+
false
|
144
|
+
end
|
145
|
+
else
|
142
146
|
false
|
143
147
|
end
|
144
|
-
else
|
145
|
-
false
|
146
148
|
end
|
147
149
|
end
|
150
|
+
|
151
|
+
# Set the global logger
|
152
|
+
#
|
153
|
+
# @param log Logger
|
154
|
+
# @return [Logger]
|
155
|
+
def self.global_logger=(log)
|
156
|
+
@_global_logger = log
|
157
|
+
end
|
158
|
+
|
159
|
+
# Get the global logger instance
|
160
|
+
#
|
161
|
+
# @return [Logger]
|
162
|
+
def self.global_logger
|
163
|
+
if @_global_logger.nil?
|
164
|
+
require "log4r"
|
165
|
+
@_global_logger = Log4r::Logger.new("vagrant::global")
|
166
|
+
end
|
167
|
+
@_global_logger
|
168
|
+
end
|
148
169
|
end
|
@@ -39,6 +39,10 @@ module Vagrant
|
|
39
39
|
rescue LoadError
|
40
40
|
@logger.warn("checkpoint library not found. disabling.")
|
41
41
|
end
|
42
|
+
if ENV["VAGRANT_CHECKPOINT_DISABLE"]
|
43
|
+
@logger.debug("checkpoint disabled via explicit user request")
|
44
|
+
@enabled = false
|
45
|
+
end
|
42
46
|
@files = {
|
43
47
|
signature: env.data_dir.join("checkpoint_signature"),
|
44
48
|
cache: env.data_dir.join("checkpoint_cache")
|
@@ -74,6 +78,10 @@ module Vagrant
|
|
74
78
|
if enabled && @checkpoint_thread.nil?
|
75
79
|
logger.debug("starting plugin check")
|
76
80
|
@checkpoint_thread = Thread.new do
|
81
|
+
Thread.current.abort_on_exception = false
|
82
|
+
if Thread.current.respond_to?(:report_on_exception=)
|
83
|
+
Thread.current.report_on_exception = false
|
84
|
+
end
|
77
85
|
begin
|
78
86
|
Thread.current[:result] = Checkpoint.check(
|
79
87
|
product: "vagrant",
|
@@ -223,7 +223,15 @@ module Vagrant
|
|
223
223
|
# Traverse each part and join it into the resulting path
|
224
224
|
original.each do |single|
|
225
225
|
Dir.entries(path).each do |entry|
|
226
|
-
|
226
|
+
begin
|
227
|
+
single = single.encode("filesystem").to_s
|
228
|
+
rescue ArgumentError => err
|
229
|
+
Vagrant.global_logger.warn("path encoding failed - part=#{single} err=#{err.class} msg=#{err}")
|
230
|
+
# NOTE: Depending on the Windows environment the above
|
231
|
+
# encode will generate an "input string invalid" when
|
232
|
+
# attempting to encode. If that happens, continue on
|
233
|
+
end
|
234
|
+
if entry.downcase == single.downcase
|
227
235
|
path = path.join(entry)
|
228
236
|
end
|
229
237
|
end
|
@@ -553,9 +561,9 @@ module Vagrant
|
|
553
561
|
def wsl_validate_matching_vagrant_versions!
|
554
562
|
valid = false
|
555
563
|
if Util::Which.which("vagrant.exe")
|
556
|
-
result = Util::Subprocess.execute("vagrant.exe", "version")
|
564
|
+
result = Util::Subprocess.execute("vagrant.exe", "--version")
|
557
565
|
if result.exit_code == 0
|
558
|
-
windows_version = result.stdout.match(/
|
566
|
+
windows_version = result.stdout.match(/Vagrant (?<version>[\w.-]+)/)
|
559
567
|
if windows_version
|
560
568
|
windows_version = windows_version[:version].strip
|
561
569
|
valid = windows_version == Vagrant::VERSION
|
@@ -11,6 +11,8 @@ module Vagrant
|
|
11
11
|
class PowerShell
|
12
12
|
# NOTE: Version checks are only on Major
|
13
13
|
MINIMUM_REQUIRED_VERSION = 3
|
14
|
+
# Number of seconds to wait while attempting to get powershell version
|
15
|
+
DEFAULT_VERSION_DETECTION_TIMEOUT = 30
|
14
16
|
LOGGER = Log4r::Logger.new("vagrant::util::powershell")
|
15
17
|
|
16
18
|
# @return [String|nil] a powershell executable, depending on environment
|
@@ -101,8 +103,15 @@ module Vagrant
|
|
101
103
|
].flatten
|
102
104
|
|
103
105
|
version = nil
|
106
|
+
timeout = ENV["VAGRANT_POWERSHELL_VERSION_DETECTION_TIMEOUT"].to_i
|
107
|
+
if timeout < 1
|
108
|
+
timeout = DEFAULT_VERSION_DETECTION_TIMEOUT
|
109
|
+
end
|
104
110
|
begin
|
105
|
-
r = Subprocess.execute(*command,
|
111
|
+
r = Subprocess.execute(*command,
|
112
|
+
notify: [:stdout, :stderr],
|
113
|
+
timeout: timeout,
|
114
|
+
) {|io_name,data| version = data}
|
106
115
|
rescue Vagrant::Util::Subprocess::TimeoutExceeded
|
107
116
|
LOGGER.debug("Timeout exceeded while attempting to determine version of Powershell.")
|
108
117
|
end
|
@@ -183,6 +192,13 @@ module Vagrant
|
|
183
192
|
Subprocess::Result.new(code, r_stdout, r_stderr)
|
184
193
|
end
|
185
194
|
end
|
195
|
+
|
196
|
+
# @private
|
197
|
+
# Reset the cached values for platform. This is not considered a public
|
198
|
+
# API and should only be used for testing.
|
199
|
+
def self.reset!
|
200
|
+
instance_variables.each(&method(:remove_instance_variable))
|
201
|
+
end
|
186
202
|
end
|
187
203
|
end
|
188
204
|
end
|