vagrant 1.5.0 → 2.4.5

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.
Files changed (1103) hide show
  1. checksums.yaml +5 -5
  2. data/.copywrite.hcl +15 -0
  3. data/.gitignore +79 -14
  4. data/.gitmodules +0 -0
  5. data/.vimrc +5 -0
  6. data/.yardopts +1 -0
  7. data/CHANGELOG.md +4520 -0
  8. data/Gemfile +10 -2
  9. data/LICENSE +92 -0
  10. data/README.md +55 -3
  11. data/RELEASE.md +11 -0
  12. data/Rakefile +22 -1
  13. data/Vagrantfile +31 -0
  14. data/bin/vagrant +268 -2
  15. data/contrib/README.md +17 -0
  16. data/contrib/bash/completion.sh +190 -0
  17. data/contrib/emacs/vagrant.el +11 -0
  18. data/contrib/st/Ruby.sublime-settings +6 -0
  19. data/contrib/sudoers/linux-fedora +7 -0
  20. data/contrib/sudoers/linux-suse +6 -0
  21. data/contrib/sudoers/linux-ubuntu +8 -0
  22. data/contrib/sudoers/osx +10 -0
  23. data/contrib/vim/vagrantfile.vim +9 -0
  24. data/contrib/zsh/_vagrant +738 -0
  25. data/contrib/zsh/generate_zsh_completion.rb +168 -0
  26. data/ext/vagrant/vagrant_ssl/extconf.rb +24 -0
  27. data/ext/vagrant/vagrant_ssl/vagrant_ssl.c +37 -0
  28. data/ext/vagrant/vagrant_ssl/vagrant_ssl.h +19 -0
  29. data/keys/README.md +23 -0
  30. data/keys/vagrant +27 -0
  31. data/keys/vagrant.key.ed25519 +7 -0
  32. data/keys/vagrant.key.rsa +27 -0
  33. data/keys/vagrant.pub +2 -0
  34. data/keys/vagrant.pub.ed25519 +1 -0
  35. data/keys/vagrant.pub.rsa +1 -0
  36. data/lib/vagrant/action/builder.rb +356 -0
  37. data/lib/vagrant/action/builtin/box_add.rb +638 -0
  38. data/lib/vagrant/action/builtin/box_check_outdated.rb +116 -0
  39. data/lib/vagrant/action/builtin/box_remove.rb +181 -0
  40. data/lib/vagrant/action/builtin/box_update.rb +23 -0
  41. data/lib/vagrant/action/builtin/call.rb +69 -0
  42. data/lib/vagrant/action/builtin/cleanup_disks.rb +59 -0
  43. data/lib/vagrant/action/builtin/cloud_init_setup.rb +125 -0
  44. data/lib/vagrant/action/builtin/cloud_init_wait.rb +35 -0
  45. data/lib/vagrant/action/builtin/config_validate.rb +33 -0
  46. data/lib/vagrant/action/builtin/confirm.rb +51 -0
  47. data/lib/vagrant/action/builtin/delayed.rb +29 -0
  48. data/lib/vagrant/action/builtin/destroy_confirm.rb +24 -0
  49. data/lib/vagrant/action/builtin/disk.rb +55 -0
  50. data/lib/vagrant/action/builtin/env_set.rb +27 -0
  51. data/lib/vagrant/action/builtin/graceful_halt.rb +88 -0
  52. data/lib/vagrant/action/builtin/handle_box.rb +111 -0
  53. data/lib/vagrant/action/builtin/handle_box_url.rb +17 -0
  54. data/lib/vagrant/action/builtin/handle_forwarded_port_collisions.rb +300 -0
  55. data/lib/vagrant/action/builtin/has_provisioner.rb +39 -0
  56. data/lib/vagrant/action/builtin/is_env_set.rb +25 -0
  57. data/lib/vagrant/action/builtin/is_state.rb +35 -0
  58. data/lib/vagrant/action/builtin/lock.rb +60 -0
  59. data/lib/vagrant/action/builtin/message.rb +29 -0
  60. data/lib/vagrant/action/builtin/mixin_provisioners.rb +159 -0
  61. data/lib/vagrant/action/builtin/mixin_synced_folders.rb +267 -0
  62. data/lib/vagrant/action/builtin/prepare_clone.rb +41 -0
  63. data/lib/vagrant/action/builtin/provision.rb +146 -0
  64. data/lib/vagrant/action/builtin/provisioner_cleanup.rb +57 -0
  65. data/lib/vagrant/action/builtin/set_hostname.rb +34 -0
  66. data/lib/vagrant/action/builtin/ssh_exec.rb +47 -0
  67. data/lib/vagrant/action/builtin/ssh_run.rb +88 -0
  68. data/lib/vagrant/action/builtin/synced_folder_cleanup.rb +36 -0
  69. data/lib/vagrant/action/builtin/synced_folders.rb +154 -0
  70. data/lib/vagrant/action/builtin/trigger.rb +40 -0
  71. data/lib/vagrant/action/builtin/wait_for_communicator.rb +82 -0
  72. data/lib/vagrant/action/general/package.rb +248 -0
  73. data/lib/vagrant/action/general/package_setup_files.rb +54 -0
  74. data/lib/vagrant/action/general/package_setup_folders.rb +40 -0
  75. data/lib/vagrant/action/hook.rb +163 -0
  76. data/lib/vagrant/action/primary_runner.rb +18 -0
  77. data/lib/vagrant/action/runner.rb +112 -0
  78. data/lib/vagrant/action/warden.rb +126 -0
  79. data/lib/vagrant/action.rb +88 -0
  80. data/lib/vagrant/alias.rb +59 -0
  81. data/lib/vagrant/batch_action.rb +181 -0
  82. data/lib/vagrant/box.rb +260 -0
  83. data/lib/vagrant/box_collection.rb +563 -0
  84. data/lib/vagrant/box_metadata.rb +275 -0
  85. data/lib/vagrant/bundler.rb +938 -0
  86. data/lib/vagrant/capability_host.rb +180 -0
  87. data/lib/vagrant/cli.rb +122 -0
  88. data/lib/vagrant/config/loader.rb +323 -0
  89. data/lib/vagrant/config/v1/dummy_config.rb +16 -0
  90. data/lib/vagrant/config/v1/loader.rb +108 -0
  91. data/lib/vagrant/config/v1/root.rb +63 -0
  92. data/lib/vagrant/config/v1.rb +12 -0
  93. data/lib/vagrant/config/v2/dummy_config.rb +60 -0
  94. data/lib/vagrant/config/v2/loader.rb +154 -0
  95. data/lib/vagrant/config/v2/root.rb +122 -0
  96. data/lib/vagrant/config/v2/util.rb +24 -0
  97. data/lib/vagrant/config/v2.rb +13 -0
  98. data/lib/vagrant/config/version_base.rb +83 -0
  99. data/lib/vagrant/config.rb +64 -0
  100. data/lib/vagrant/environment.rb +1230 -0
  101. data/lib/vagrant/errors.rb +1158 -0
  102. data/lib/vagrant/guest.rb +72 -0
  103. data/lib/vagrant/host.rb +19 -0
  104. data/lib/vagrant/machine.rb +672 -0
  105. data/lib/vagrant/machine_index.rb +527 -0
  106. data/lib/vagrant/machine_state.rb +54 -0
  107. data/lib/vagrant/patches/builder/mkmf.rb +116 -0
  108. data/lib/vagrant/patches/fake_ftp.rb +28 -0
  109. data/lib/vagrant/patches/log4r.rb +54 -0
  110. data/lib/vagrant/patches/net-ssh.rb +76 -0
  111. data/lib/vagrant/patches/rubygems.rb +23 -0
  112. data/lib/vagrant/patches/timeout_error.rb +5 -0
  113. data/lib/vagrant/plugin/manager.rb +406 -0
  114. data/lib/vagrant/plugin/state_file.rb +136 -0
  115. data/lib/vagrant/plugin/v1/command.rb +171 -0
  116. data/lib/vagrant/plugin/v1/communicator.rb +101 -0
  117. data/lib/vagrant/plugin/v1/config.rb +115 -0
  118. data/lib/vagrant/plugin/v1/errors.rb +18 -0
  119. data/lib/vagrant/plugin/v1/guest.rb +95 -0
  120. data/lib/vagrant/plugin/v1/host.rb +69 -0
  121. data/lib/vagrant/plugin/v1/manager.rb +134 -0
  122. data/lib/vagrant/plugin/v1/plugin.rb +231 -0
  123. data/lib/vagrant/plugin/v1/provider.rb +71 -0
  124. data/lib/vagrant/plugin/v1/provisioner.rb +53 -0
  125. data/lib/vagrant/plugin/v1.rb +25 -0
  126. data/lib/vagrant/plugin/v2/command.rb +309 -0
  127. data/lib/vagrant/plugin/v2/communicator.rb +133 -0
  128. data/lib/vagrant/plugin/v2/components.rb +94 -0
  129. data/lib/vagrant/plugin/v2/config.rb +167 -0
  130. data/lib/vagrant/plugin/v2/errors.rb +18 -0
  131. data/lib/vagrant/plugin/v2/guest.rb +26 -0
  132. data/lib/vagrant/plugin/v2/host.rb +22 -0
  133. data/lib/vagrant/plugin/v2/manager.rb +306 -0
  134. data/lib/vagrant/plugin/v2/plugin.rb +296 -0
  135. data/lib/vagrant/plugin/v2/provider.rb +118 -0
  136. data/lib/vagrant/plugin/v2/provisioner.rb +56 -0
  137. data/lib/vagrant/plugin/v2/push.rb +30 -0
  138. data/lib/vagrant/plugin/v2/synced_folder.rb +113 -0
  139. data/lib/vagrant/plugin/v2/trigger.rb +367 -0
  140. data/lib/vagrant/plugin/v2.rb +33 -0
  141. data/lib/vagrant/plugin.rb +11 -0
  142. data/lib/vagrant/registry.rb +113 -0
  143. data/lib/vagrant/shared_helpers.rb +238 -0
  144. data/lib/vagrant/ui.rb +449 -0
  145. data/lib/vagrant/util/ansi_escape_code_remover.rb +37 -0
  146. data/lib/vagrant/util/busy.rb +62 -0
  147. data/lib/vagrant/util/caps.rb +51 -0
  148. data/lib/vagrant/util/checkpoint_client.rb +186 -0
  149. data/lib/vagrant/util/command_deprecation.rb +59 -0
  150. data/lib/vagrant/util/counter.rb +27 -0
  151. data/lib/vagrant/util/credential_scrubber.rb +74 -0
  152. data/lib/vagrant/util/curl_helper.rb +104 -0
  153. data/lib/vagrant/util/deep_merge.rb +23 -0
  154. data/lib/vagrant/util/directory.rb +22 -0
  155. data/lib/vagrant/util/downloader.rb +278 -0
  156. data/lib/vagrant/util/env.rb +56 -0
  157. data/lib/vagrant/util/experimental.rb +79 -0
  158. data/lib/vagrant/util/file_checksum.rb +77 -0
  159. data/lib/vagrant/util/file_mode.rb +15 -0
  160. data/lib/vagrant/util/file_mutex.rb +50 -0
  161. data/lib/vagrant/util/guest_hosts.rb +71 -0
  162. data/lib/vagrant/util/guest_inspection.rb +118 -0
  163. data/lib/vagrant/util/guest_networks.rb +107 -0
  164. data/lib/vagrant/util/hash_with_indifferent_access.rb +66 -0
  165. data/lib/vagrant/util/install_cli_autocomplete.rb +121 -0
  166. data/lib/vagrant/util/io.rb +53 -0
  167. data/lib/vagrant/util/ipv4_interfaces.rb +18 -0
  168. data/lib/vagrant/util/is_port_open.rb +31 -0
  169. data/lib/vagrant/util/keypair.rb +293 -0
  170. data/lib/vagrant/util/line_buffer.rb +63 -0
  171. data/lib/vagrant/util/line_ending_helpers.rb +17 -0
  172. data/lib/vagrant/util/logging_formatter.rb +70 -0
  173. data/lib/vagrant/util/map_command_options.rb +36 -0
  174. data/lib/vagrant/util/mime.rb +95 -0
  175. data/lib/vagrant/util/network_ip.rb +27 -0
  176. data/lib/vagrant/util/numeric.rb +92 -0
  177. data/lib/vagrant/util/platform.rb +737 -0
  178. data/lib/vagrant/util/powershell.rb +316 -0
  179. data/lib/vagrant/util/presence.rb +48 -0
  180. data/lib/vagrant/util/retryable.rb +34 -0
  181. data/lib/vagrant/util/safe_chdir.rb +36 -0
  182. data/lib/vagrant/util/safe_env.rb +17 -0
  183. data/lib/vagrant/util/safe_exec.rb +78 -0
  184. data/lib/vagrant/util/safe_puts.rb +34 -0
  185. data/lib/vagrant/util/scoped_hash_override.rb +47 -0
  186. data/lib/vagrant/util/shell_quote.rb +18 -0
  187. data/lib/vagrant/util/silence_warnings.rb +17 -0
  188. data/lib/vagrant/util/ssh.rb +267 -0
  189. data/lib/vagrant/util/stacked_proc_runner.rb +38 -0
  190. data/lib/vagrant/util/string_block_editor.rb +80 -0
  191. data/lib/vagrant/util/subprocess.rb +365 -0
  192. data/lib/vagrant/util/template_renderer.rb +91 -0
  193. data/lib/vagrant/util/uploader.rb +109 -0
  194. data/lib/vagrant/util/which.rb +56 -0
  195. data/lib/vagrant/util/windows_path.rb +41 -0
  196. data/lib/vagrant/util.rb +63 -0
  197. data/lib/vagrant/vagrantfile.rb +320 -0
  198. data/lib/vagrant/version.rb +10 -0
  199. data/lib/vagrant.rb +380 -0
  200. data/plugins/README.md +11 -0
  201. data/plugins/commands/autocomplete/command/install.rb +52 -0
  202. data/plugins/commands/autocomplete/command/root.rb +69 -0
  203. data/plugins/commands/autocomplete/plugin.rb +21 -0
  204. data/plugins/commands/box/command/add.rb +111 -0
  205. data/plugins/commands/box/command/download_mixins.rb +32 -0
  206. data/plugins/commands/box/command/list.rb +82 -0
  207. data/plugins/commands/box/command/outdated.rb +109 -0
  208. data/plugins/commands/box/command/prune.rb +136 -0
  209. data/plugins/commands/box/command/remove.rb +83 -0
  210. data/plugins/commands/box/command/repackage.rb +46 -0
  211. data/plugins/commands/box/command/root.rb +98 -0
  212. data/plugins/commands/box/command/update.rb +206 -0
  213. data/plugins/commands/box/plugin.rb +18 -0
  214. data/plugins/commands/cap/command.rb +83 -0
  215. data/plugins/commands/cap/plugin.rb +20 -0
  216. data/plugins/commands/cloud/auth/login.rb +90 -0
  217. data/plugins/commands/cloud/auth/logout.rb +37 -0
  218. data/plugins/commands/cloud/auth/middleware/add_authentication.rb +116 -0
  219. data/plugins/commands/cloud/auth/middleware/add_downloader_authentication.rb +68 -0
  220. data/plugins/commands/cloud/auth/plugin.rb +23 -0
  221. data/plugins/commands/cloud/auth/root.rb +77 -0
  222. data/plugins/commands/cloud/auth/whoami.rb +63 -0
  223. data/plugins/commands/cloud/box/create.rb +82 -0
  224. data/plugins/commands/cloud/box/delete.rb +74 -0
  225. data/plugins/commands/cloud/box/plugin.rb +22 -0
  226. data/plugins/commands/cloud/box/root.rb +81 -0
  227. data/plugins/commands/cloud/box/show.rb +133 -0
  228. data/plugins/commands/cloud/box/update.rb +82 -0
  229. data/plugins/commands/cloud/client/client.rb +257 -0
  230. data/plugins/commands/cloud/errors.rb +31 -0
  231. data/plugins/commands/cloud/list.rb +54 -0
  232. data/plugins/commands/cloud/locales/en.yml +197 -0
  233. data/plugins/commands/cloud/plugin.rb +48 -0
  234. data/plugins/commands/cloud/provider/create.rb +105 -0
  235. data/plugins/commands/cloud/provider/delete.rb +109 -0
  236. data/plugins/commands/cloud/provider/plugin.rb +22 -0
  237. data/plugins/commands/cloud/provider/root.rb +81 -0
  238. data/plugins/commands/cloud/provider/update.rb +102 -0
  239. data/plugins/commands/cloud/provider/upload.rb +100 -0
  240. data/plugins/commands/cloud/publish.rb +297 -0
  241. data/plugins/commands/cloud/root.rb +108 -0
  242. data/plugins/commands/cloud/search.rb +102 -0
  243. data/plugins/commands/cloud/util.rb +371 -0
  244. data/plugins/commands/cloud/version/create.rb +77 -0
  245. data/plugins/commands/cloud/version/delete.rb +78 -0
  246. data/plugins/commands/cloud/version/plugin.rb +22 -0
  247. data/plugins/commands/cloud/version/release.rb +78 -0
  248. data/plugins/commands/cloud/version/revoke.rb +79 -0
  249. data/plugins/commands/cloud/version/root.rb +85 -0
  250. data/plugins/commands/cloud/version/update.rb +76 -0
  251. data/plugins/commands/destroy/command.rb +79 -0
  252. data/plugins/commands/destroy/plugin.rb +21 -0
  253. data/plugins/commands/global-status/command.rb +114 -0
  254. data/plugins/commands/global-status/plugin.rb +21 -0
  255. data/plugins/commands/halt/command.rb +42 -0
  256. data/plugins/commands/halt/plugin.rb +21 -0
  257. data/plugins/commands/help/command.rb +19 -0
  258. data/plugins/commands/help/plugin.rb +20 -0
  259. data/plugins/commands/init/command.rb +110 -0
  260. data/plugins/commands/init/plugin.rb +21 -0
  261. data/plugins/commands/list-commands/command.rb +46 -0
  262. data/plugins/commands/list-commands/plugin.rb +21 -0
  263. data/plugins/commands/login/plugin.rb +20 -0
  264. data/plugins/commands/package/command.rb +104 -0
  265. data/plugins/commands/package/plugin.rb +21 -0
  266. data/plugins/commands/plugin/action/expunge_plugins.rb +77 -0
  267. data/plugins/commands/plugin/action/install_gem.rb +80 -0
  268. data/plugins/commands/plugin/action/license_plugin.rb +48 -0
  269. data/plugins/commands/plugin/action/list_plugins.rb +79 -0
  270. data/plugins/commands/plugin/action/plugin_exists_check.rb +28 -0
  271. data/plugins/commands/plugin/action/repair_plugins.rb +67 -0
  272. data/plugins/commands/plugin/action/uninstall_plugin.rb +28 -0
  273. data/plugins/commands/plugin/action/update_gems.rb +52 -0
  274. data/plugins/commands/plugin/action.rb +82 -0
  275. data/plugins/commands/plugin/command/base.rb +22 -0
  276. data/plugins/commands/plugin/command/expunge.rb +95 -0
  277. data/plugins/commands/plugin/command/install.rb +90 -0
  278. data/plugins/commands/plugin/command/license.rb +34 -0
  279. data/plugins/commands/plugin/command/list.rb +34 -0
  280. data/plugins/commands/plugin/command/mixin_install_opts.rb +34 -0
  281. data/plugins/commands/plugin/command/repair.rb +41 -0
  282. data/plugins/commands/plugin/command/root.rb +98 -0
  283. data/plugins/commands/plugin/command/uninstall.rb +38 -0
  284. data/plugins/commands/plugin/command/update.rb +42 -0
  285. data/plugins/commands/plugin/gem_helper.rb +89 -0
  286. data/plugins/commands/plugin/plugin.rb +23 -0
  287. data/plugins/commands/port/command.rb +91 -0
  288. data/plugins/commands/port/locales/en.yml +23 -0
  289. data/plugins/commands/port/plugin.rb +30 -0
  290. data/plugins/commands/powershell/command.rb +132 -0
  291. data/plugins/commands/powershell/errors.rb +29 -0
  292. data/plugins/commands/powershell/plugin.rb +34 -0
  293. data/plugins/commands/powershell/scripts/enable_psremoting.ps1 +63 -0
  294. data/plugins/commands/powershell/scripts/reset_trustedhosts.ps1 +15 -0
  295. data/plugins/commands/provider/command.rb +77 -0
  296. data/plugins/commands/provider/plugin.rb +21 -0
  297. data/plugins/commands/provision/command.rb +41 -0
  298. data/plugins/commands/provision/plugin.rb +21 -0
  299. data/plugins/commands/push/command.rb +78 -0
  300. data/plugins/commands/push/plugin.rb +20 -0
  301. data/plugins/commands/rdp/command.rb +114 -0
  302. data/plugins/commands/rdp/config.rb +29 -0
  303. data/plugins/commands/rdp/errors.rb +21 -0
  304. data/plugins/commands/rdp/plugin.rb +39 -0
  305. data/plugins/commands/reload/command.rb +67 -0
  306. data/plugins/commands/reload/plugin.rb +21 -0
  307. data/plugins/commands/resume/command.rb +46 -0
  308. data/plugins/commands/resume/plugin.rb +20 -0
  309. data/plugins/commands/snapshot/command/delete.rb +50 -0
  310. data/plugins/commands/snapshot/command/list.rb +50 -0
  311. data/plugins/commands/snapshot/command/pop.rb +52 -0
  312. data/plugins/commands/snapshot/command/push.rb +36 -0
  313. data/plugins/commands/snapshot/command/push_shared.rb +58 -0
  314. data/plugins/commands/snapshot/command/restore.rb +67 -0
  315. data/plugins/commands/snapshot/command/root.rb +95 -0
  316. data/plugins/commands/snapshot/command/save.rb +75 -0
  317. data/plugins/commands/snapshot/plugin.rb +18 -0
  318. data/plugins/commands/ssh/command.rb +80 -0
  319. data/plugins/commands/ssh/plugin.rb +20 -0
  320. data/plugins/commands/ssh_config/command.rb +78 -0
  321. data/plugins/commands/ssh_config/plugin.rb +21 -0
  322. data/plugins/commands/status/command.rb +59 -0
  323. data/plugins/commands/status/plugin.rb +21 -0
  324. data/plugins/commands/suspend/command.rb +49 -0
  325. data/plugins/commands/suspend/plugin.rb +21 -0
  326. data/plugins/commands/up/command.rb +194 -0
  327. data/plugins/commands/up/middleware/store_box_metadata.rb +40 -0
  328. data/plugins/commands/up/plugin.rb +25 -0
  329. data/plugins/commands/up/start_mixins.rb +58 -0
  330. data/plugins/commands/upload/command.rb +239 -0
  331. data/plugins/commands/upload/plugin.rb +20 -0
  332. data/plugins/commands/validate/command.rb +107 -0
  333. data/plugins/commands/validate/plugin.rb +20 -0
  334. data/plugins/commands/version/command.rb +60 -0
  335. data/plugins/commands/version/plugin.rb +21 -0
  336. data/plugins/commands/winrm/command.rb +71 -0
  337. data/plugins/commands/winrm/plugin.rb +20 -0
  338. data/plugins/commands/winrm_config/command.rb +129 -0
  339. data/plugins/commands/winrm_config/plugin.rb +20 -0
  340. data/plugins/communicators/none/communicator.rb +46 -0
  341. data/plugins/communicators/none/plugin.rb +26 -0
  342. data/plugins/communicators/ssh/communicator.rb +898 -0
  343. data/plugins/communicators/ssh/plugin.rb +22 -0
  344. data/plugins/communicators/winrm/command_filter.rb +49 -0
  345. data/plugins/communicators/winrm/command_filters/cat.rb +26 -0
  346. data/plugins/communicators/winrm/command_filters/chmod.rb +20 -0
  347. data/plugins/communicators/winrm/command_filters/chown.rb +20 -0
  348. data/plugins/communicators/winrm/command_filters/grep.rb +26 -0
  349. data/plugins/communicators/winrm/command_filters/mkdir.rb +30 -0
  350. data/plugins/communicators/winrm/command_filters/rm.rb +50 -0
  351. data/plugins/communicators/winrm/command_filters/test.rb +68 -0
  352. data/plugins/communicators/winrm/command_filters/uname.rb +30 -0
  353. data/plugins/communicators/winrm/command_filters/which.rb +27 -0
  354. data/plugins/communicators/winrm/communicator.rb +230 -0
  355. data/plugins/communicators/winrm/config.rb +76 -0
  356. data/plugins/communicators/winrm/errors.rb +72 -0
  357. data/plugins/communicators/winrm/helper.rb +91 -0
  358. data/plugins/communicators/winrm/plugin.rb +69 -0
  359. data/plugins/communicators/winrm/shell.rb +267 -0
  360. data/plugins/communicators/winssh/communicator.rb +252 -0
  361. data/plugins/communicators/winssh/config.rb +37 -0
  362. data/plugins/communicators/winssh/plugin.rb +24 -0
  363. data/plugins/guests/alma/cap/flavor.rb +26 -0
  364. data/plugins/guests/alma/guest.rb +13 -0
  365. data/plugins/guests/alma/plugin.rb +23 -0
  366. data/plugins/guests/alpine/cap/change_host_name.rb +85 -0
  367. data/plugins/guests/alpine/cap/configure_networks.rb +67 -0
  368. data/plugins/guests/alpine/cap/halt.rb +24 -0
  369. data/plugins/guests/alpine/cap/nfs_client.rb +17 -0
  370. data/plugins/guests/alpine/cap/rsync.rb +20 -0
  371. data/plugins/guests/alpine/cap/smb.rb +16 -0
  372. data/plugins/guests/alpine/guest.rb +14 -0
  373. data/plugins/guests/alpine/plugin.rb +69 -0
  374. data/plugins/guests/alt/cap/change_host_name.rb +55 -0
  375. data/plugins/guests/alt/cap/configure_networks.rb +132 -0
  376. data/plugins/guests/alt/cap/flavor.rb +66 -0
  377. data/plugins/guests/alt/cap/network_scripts_dir.rb +14 -0
  378. data/plugins/guests/alt/cap/rsync.rb +16 -0
  379. data/plugins/guests/alt/guest.rb +12 -0
  380. data/plugins/guests/alt/plugin.rb +43 -0
  381. data/plugins/guests/amazon/cap/configure_networks.rb +26 -0
  382. data/plugins/guests/amazon/cap/flavor.rb +17 -0
  383. data/plugins/guests/amazon/guest.rb +12 -0
  384. data/plugins/guests/amazon/plugin.rb +28 -0
  385. data/plugins/guests/arch/cap/change_host_name.rb +18 -0
  386. data/plugins/guests/arch/cap/configure_networks.rb +81 -0
  387. data/plugins/guests/arch/cap/nfs.rb +36 -0
  388. data/plugins/guests/arch/cap/rsync.rb +19 -0
  389. data/plugins/guests/arch/cap/smb.rb +20 -0
  390. data/plugins/guests/arch/guest.rb +14 -0
  391. data/plugins/guests/arch/plugin.rb +53 -0
  392. data/plugins/guests/atomic/cap/change_host_name.rb +18 -0
  393. data/plugins/guests/atomic/cap/docker.rb +14 -0
  394. data/plugins/guests/atomic/guest.rb +14 -0
  395. data/plugins/guests/atomic/plugin.rb +28 -0
  396. data/plugins/guests/bsd/cap/file_system.rb +80 -0
  397. data/plugins/guests/bsd/cap/halt.rb +19 -0
  398. data/plugins/guests/bsd/cap/mount_virtualbox_shared_folder.rb +19 -0
  399. data/plugins/guests/bsd/cap/nfs.rb +50 -0
  400. data/plugins/guests/bsd/cap/public_key.rb +69 -0
  401. data/plugins/guests/bsd/guest.rb +12 -0
  402. data/plugins/guests/bsd/plugin.rb +58 -0
  403. data/plugins/guests/centos/cap/flavor.rb +32 -0
  404. data/plugins/guests/centos/guest.rb +14 -0
  405. data/plugins/guests/centos/plugin.rb +23 -0
  406. data/plugins/guests/coreos/cap/change_host_name.rb +41 -0
  407. data/plugins/guests/coreos/cap/configure_networks.rb +138 -0
  408. data/plugins/guests/coreos/cap/docker.rb +14 -0
  409. data/plugins/guests/coreos/guest.rb +14 -0
  410. data/plugins/guests/coreos/plugin.rb +33 -0
  411. data/plugins/guests/darwin/cap/change_host_name.rb +43 -0
  412. data/plugins/guests/darwin/cap/choose_addressable_ip_addr.rb +23 -0
  413. data/plugins/guests/darwin/cap/configure_networks.rb +126 -0
  414. data/plugins/guests/darwin/cap/darwin_version.rb +43 -0
  415. data/plugins/guests/darwin/cap/halt.rb +21 -0
  416. data/plugins/guests/darwin/cap/mount_smb_shared_folder.rb +46 -0
  417. data/plugins/guests/darwin/cap/mount_vmware_shared_folder.rb +135 -0
  418. data/plugins/guests/darwin/cap/rsync.rb +14 -0
  419. data/plugins/guests/darwin/cap/shell_expand_guest_path.rb +30 -0
  420. data/plugins/guests/darwin/cap/verify_vmware_hgfs.rb +15 -0
  421. data/plugins/guests/darwin/guest.rb +18 -0
  422. data/plugins/guests/darwin/plugin.rb +93 -0
  423. data/plugins/guests/debian/cap/change_host_name.rb +110 -0
  424. data/plugins/guests/debian/cap/configure_networks.rb +205 -0
  425. data/plugins/guests/debian/cap/nfs.rb +19 -0
  426. data/plugins/guests/debian/cap/rsync.rb +18 -0
  427. data/plugins/guests/debian/cap/smb.rb +20 -0
  428. data/plugins/guests/debian/guest.rb +13 -0
  429. data/plugins/guests/debian/plugin.rb +43 -0
  430. data/plugins/guests/dragonflybsd/guest.rb +12 -0
  431. data/plugins/guests/dragonflybsd/plugin.rb +18 -0
  432. data/plugins/guests/elementary/guest.rb +13 -0
  433. data/plugins/guests/elementary/plugin.rb +18 -0
  434. data/plugins/guests/esxi/cap/change_host_name.rb +16 -0
  435. data/plugins/guests/esxi/cap/configure_networks.rb +41 -0
  436. data/plugins/guests/esxi/cap/halt.rb +19 -0
  437. data/plugins/guests/esxi/cap/mount_nfs_folder.rb +43 -0
  438. data/plugins/guests/esxi/cap/public_key.rb +68 -0
  439. data/plugins/guests/esxi/guest.rb +14 -0
  440. data/plugins/guests/esxi/plugin.rb +49 -0
  441. data/plugins/guests/fedora/cap/flavor.rb +26 -0
  442. data/plugins/guests/fedora/guest.rb +14 -0
  443. data/plugins/guests/fedora/plugin.rb +23 -0
  444. data/plugins/guests/freebsd/cap/change_host_name.rb +34 -0
  445. data/plugins/guests/freebsd/cap/configure_networks.rb +70 -0
  446. data/plugins/guests/freebsd/cap/mount_virtualbox_shared_folder.rb +79 -0
  447. data/plugins/guests/freebsd/cap/rsync.rb +18 -0
  448. data/plugins/guests/freebsd/cap/shell_expand_guest_path.rb +31 -0
  449. data/plugins/guests/freebsd/guest.rb +17 -0
  450. data/plugins/guests/freebsd/plugin.rb +68 -0
  451. data/plugins/guests/funtoo/cap/configure_networks.rb +50 -0
  452. data/plugins/guests/funtoo/guest.rb +12 -0
  453. data/plugins/guests/funtoo/plugin.rb +23 -0
  454. data/plugins/guests/gentoo/cap/change_host_name.rb +27 -0
  455. data/plugins/guests/gentoo/cap/configure_networks.rb +92 -0
  456. data/plugins/guests/gentoo/guest.rb +12 -0
  457. data/plugins/guests/gentoo/plugin.rb +28 -0
  458. data/plugins/guests/haiku/cap/change_host_name.rb +36 -0
  459. data/plugins/guests/haiku/cap/halt.rb +19 -0
  460. data/plugins/guests/haiku/cap/insert_public_key.rb +24 -0
  461. data/plugins/guests/haiku/cap/remove_public_key.rb +24 -0
  462. data/plugins/guests/haiku/cap/rsync.rb +22 -0
  463. data/plugins/guests/haiku/guest.rb +14 -0
  464. data/plugins/guests/haiku/plugin.rb +53 -0
  465. data/plugins/guests/kali/guest.rb +13 -0
  466. data/plugins/guests/kali/plugin.rb +18 -0
  467. data/plugins/guests/linux/cap/change_host_name.rb +49 -0
  468. data/plugins/guests/linux/cap/choose_addressable_ip_addr.rb +22 -0
  469. data/plugins/guests/linux/cap/file_system.rb +82 -0
  470. data/plugins/guests/linux/cap/halt.rb +27 -0
  471. data/plugins/guests/linux/cap/mount_smb_shared_folder.rb +95 -0
  472. data/plugins/guests/linux/cap/mount_virtualbox_shared_folder.rb +78 -0
  473. data/plugins/guests/linux/cap/network_interfaces.rb +89 -0
  474. data/plugins/guests/linux/cap/nfs.rb +51 -0
  475. data/plugins/guests/linux/cap/persist_mount_shared_folder.rb +77 -0
  476. data/plugins/guests/linux/cap/port.rb +14 -0
  477. data/plugins/guests/linux/cap/public_key.rb +65 -0
  478. data/plugins/guests/linux/cap/read_ip_address.rb +28 -0
  479. data/plugins/guests/linux/cap/reboot.rb +74 -0
  480. data/plugins/guests/linux/cap/rsync.rb +14 -0
  481. data/plugins/guests/linux/cap/shell_expand_guest_path.rb +35 -0
  482. data/plugins/guests/linux/guest.rb +26 -0
  483. data/plugins/guests/linux/plugin.rb +139 -0
  484. data/plugins/guests/mint/guest.rb +13 -0
  485. data/plugins/guests/mint/plugin.rb +18 -0
  486. data/plugins/guests/netbsd/cap/change_host_name.rb +20 -0
  487. data/plugins/guests/netbsd/cap/configure_networks.rb +56 -0
  488. data/plugins/guests/netbsd/cap/rsync.rb +23 -0
  489. data/plugins/guests/netbsd/cap/shell_expand_guest_path.rb +30 -0
  490. data/plugins/guests/netbsd/guest.rb +14 -0
  491. data/plugins/guests/netbsd/plugin.rb +58 -0
  492. data/plugins/guests/nixos/cap/change_host_name.rb +47 -0
  493. data/plugins/guests/nixos/cap/configure_networks.rb +135 -0
  494. data/plugins/guests/nixos/cap/nfs_client.rb +14 -0
  495. data/plugins/guests/nixos/guest.rb +20 -0
  496. data/plugins/guests/nixos/plugin.rb +33 -0
  497. data/plugins/guests/omnios/cap/change_host_name.rb +23 -0
  498. data/plugins/guests/omnios/cap/mount_nfs_folder.rb +24 -0
  499. data/plugins/guests/omnios/cap/rsync.rb +14 -0
  500. data/plugins/guests/omnios/guest.rb +12 -0
  501. data/plugins/guests/omnios/plugin.rb +33 -0
  502. data/plugins/guests/openbsd/cap/change_host_name.rb +35 -0
  503. data/plugins/guests/openbsd/cap/configure_networks.rb +49 -0
  504. data/plugins/guests/openbsd/cap/halt.rb +22 -0
  505. data/plugins/guests/openbsd/cap/rsync.rb +32 -0
  506. data/plugins/guests/openbsd/cap/shell_expand_guest_path.rb +30 -0
  507. data/plugins/guests/openbsd/guest.rb +14 -0
  508. data/plugins/guests/openbsd/plugin.rb +63 -0
  509. data/plugins/guests/openwrt/cap/change_host_name.rb +22 -0
  510. data/plugins/guests/openwrt/cap/halt.rb +19 -0
  511. data/plugins/guests/openwrt/cap/insert_public_key.rb +23 -0
  512. data/plugins/guests/openwrt/cap/remove_public_key.rb +25 -0
  513. data/plugins/guests/openwrt/cap/rsync.rb +38 -0
  514. data/plugins/guests/openwrt/guest.rb +26 -0
  515. data/plugins/guests/openwrt/plugin.rb +64 -0
  516. data/plugins/guests/photon/cap/change_host_name.rb +22 -0
  517. data/plugins/guests/photon/cap/configure_networks.rb +33 -0
  518. data/plugins/guests/photon/cap/docker.rb +14 -0
  519. data/plugins/guests/photon/guest.rb +12 -0
  520. data/plugins/guests/photon/plugin.rb +33 -0
  521. data/plugins/guests/pld/cap/change_host_name.rb +26 -0
  522. data/plugins/guests/pld/cap/flavor.rb +14 -0
  523. data/plugins/guests/pld/cap/network_scripts_dir.rb +14 -0
  524. data/plugins/guests/pld/guest.rb +12 -0
  525. data/plugins/guests/pld/plugin.rb +33 -0
  526. data/plugins/guests/redhat/cap/change_host_name.rb +59 -0
  527. data/plugins/guests/redhat/cap/configure_networks.rb +113 -0
  528. data/plugins/guests/redhat/cap/flavor.rb +32 -0
  529. data/plugins/guests/redhat/cap/network_scripts_dir.rb +18 -0
  530. data/plugins/guests/redhat/cap/nfs_client.rb +33 -0
  531. data/plugins/guests/redhat/cap/rsync.rb +20 -0
  532. data/plugins/guests/redhat/cap/smb.rb +23 -0
  533. data/plugins/guests/redhat/guest.rb +12 -0
  534. data/plugins/guests/redhat/plugin.rb +53 -0
  535. data/plugins/guests/rocky/cap/flavor.rb +26 -0
  536. data/plugins/guests/rocky/guest.rb +13 -0
  537. data/plugins/guests/rocky/plugin.rb +23 -0
  538. data/plugins/guests/slackware/cap/change_host_name.rb +24 -0
  539. data/plugins/guests/slackware/cap/configure_networks.rb +51 -0
  540. data/plugins/guests/slackware/guest.rb +12 -0
  541. data/plugins/guests/slackware/plugin.rb +28 -0
  542. data/plugins/guests/smartos/cap/change_host_name.rb +29 -0
  543. data/plugins/guests/smartos/cap/configure_networks.rb +30 -0
  544. data/plugins/guests/smartos/cap/halt.rb +25 -0
  545. data/plugins/guests/smartos/cap/insert_public_key.rb +31 -0
  546. data/plugins/guests/smartos/cap/mount_nfs.rb +31 -0
  547. data/plugins/guests/smartos/cap/remove_public_key.rb +28 -0
  548. data/plugins/guests/smartos/cap/rsync.rb +36 -0
  549. data/plugins/guests/smartos/config.rb +18 -0
  550. data/plugins/guests/smartos/guest.rb +14 -0
  551. data/plugins/guests/smartos/plugin.rb +74 -0
  552. data/plugins/guests/solaris/cap/change_host_name.rb +20 -0
  553. data/plugins/guests/solaris/cap/configure_networks.rb +28 -0
  554. data/plugins/guests/solaris/cap/file_system.rb +80 -0
  555. data/plugins/guests/solaris/cap/halt.rb +25 -0
  556. data/plugins/guests/solaris/cap/insert_public_key.rb +25 -0
  557. data/plugins/guests/solaris/cap/mount_virtualbox_shared_folder.rb +44 -0
  558. data/plugins/guests/solaris/cap/remove_public_key.rb +25 -0
  559. data/plugins/guests/solaris/cap/rsync.rb +36 -0
  560. data/plugins/guests/solaris/config.rb +34 -0
  561. data/plugins/guests/solaris/guest.rb +17 -0
  562. data/plugins/guests/solaris/plugin.rb +88 -0
  563. data/plugins/guests/solaris11/cap/change_host_name.rb +26 -0
  564. data/plugins/guests/solaris11/cap/configure_networks.rb +37 -0
  565. data/plugins/guests/solaris11/config.rb +37 -0
  566. data/plugins/guests/solaris11/guest.rb +22 -0
  567. data/plugins/guests/solaris11/plugin.rb +42 -0
  568. data/plugins/guests/suse/cap/change_host_name.rb +48 -0
  569. data/plugins/guests/suse/cap/configure_networks.rb +53 -0
  570. data/plugins/guests/suse/cap/halt.rb +23 -0
  571. data/plugins/guests/suse/cap/network_scripts_dir.rb +14 -0
  572. data/plugins/guests/suse/cap/nfs_client.rb +18 -0
  573. data/plugins/guests/suse/cap/rsync.rb +18 -0
  574. data/plugins/guests/suse/guest.rb +12 -0
  575. data/plugins/guests/suse/plugin.rb +53 -0
  576. data/plugins/guests/tinycore/cap/change_host_name.rb +16 -0
  577. data/plugins/guests/tinycore/cap/configure_networks.rb +29 -0
  578. data/plugins/guests/tinycore/cap/halt.rb +19 -0
  579. data/plugins/guests/tinycore/cap/mount_nfs.rb +44 -0
  580. data/plugins/guests/tinycore/cap/rsync.rb +20 -0
  581. data/plugins/guests/tinycore/guest.rb +13 -0
  582. data/plugins/guests/tinycore/plugin.rb +43 -0
  583. data/plugins/guests/trisquel/guest.rb +12 -0
  584. data/plugins/guests/trisquel/plugin.rb +18 -0
  585. data/plugins/guests/ubuntu/guest.rb +13 -0
  586. data/plugins/guests/ubuntu/plugin.rb +18 -0
  587. data/plugins/guests/windows/cap/change_host_name.rb +36 -0
  588. data/plugins/guests/windows/cap/choose_addressable_ip_addr.rb +23 -0
  589. data/plugins/guests/windows/cap/configure_networks.rb +83 -0
  590. data/plugins/guests/windows/cap/file_system.rb +68 -0
  591. data/plugins/guests/windows/cap/halt.rb +19 -0
  592. data/plugins/guests/windows/cap/mount_shared_folder.rb +60 -0
  593. data/plugins/guests/windows/cap/public_key.rb +87 -0
  594. data/plugins/guests/windows/cap/reboot.rb +63 -0
  595. data/plugins/guests/windows/cap/rsync.rb +29 -0
  596. data/plugins/guests/windows/config.rb +26 -0
  597. data/plugins/guests/windows/errors.rb +25 -0
  598. data/plugins/guests/windows/guest.rb +13 -0
  599. data/plugins/guests/windows/guest_network.rb +128 -0
  600. data/plugins/guests/windows/plugin.rb +116 -0
  601. data/plugins/guests/windows/scripts/mount_volume.ps1.erb +48 -0
  602. data/plugins/guests/windows/scripts/reboot_detect.ps1 +50 -0
  603. data/plugins/guests/windows/scripts/set_work_network.ps1 +9 -0
  604. data/plugins/guests/windows/scripts/winrs_v3_get_adapters.ps1 +14 -0
  605. data/plugins/hosts/alt/cap/nfs.rb +46 -0
  606. data/plugins/hosts/alt/host.rb +14 -0
  607. data/plugins/hosts/alt/plugin.rb +35 -0
  608. data/plugins/hosts/arch/cap/nfs.rb +22 -0
  609. data/plugins/hosts/arch/host.rb +14 -0
  610. data/plugins/hosts/arch/plugin.rb +35 -0
  611. data/plugins/hosts/bsd/cap/nfs.rb +218 -0
  612. data/plugins/hosts/bsd/cap/path.rb +14 -0
  613. data/plugins/hosts/bsd/cap/ssh.rb +19 -0
  614. data/plugins/hosts/bsd/host.rb +15 -0
  615. data/plugins/hosts/bsd/plugin.rb +63 -0
  616. data/plugins/hosts/darwin/cap/configured_ip_addresses.rb +21 -0
  617. data/plugins/hosts/darwin/cap/fs_iso.rb +52 -0
  618. data/plugins/hosts/darwin/cap/nfs.rb +14 -0
  619. data/plugins/hosts/darwin/cap/path.rb +66 -0
  620. data/plugins/hosts/darwin/cap/provider_install_virtualbox.rb +64 -0
  621. data/plugins/hosts/darwin/cap/rdp.rb +64 -0
  622. data/plugins/hosts/darwin/cap/smb.rb +128 -0
  623. data/plugins/hosts/darwin/cap/version.rb +26 -0
  624. data/plugins/hosts/darwin/host.rb +14 -0
  625. data/plugins/hosts/darwin/plugin.rb +83 -0
  626. data/plugins/hosts/darwin/scripts/install_virtualbox.sh +18 -0
  627. data/plugins/hosts/freebsd/cap/nfs.rb +34 -0
  628. data/plugins/hosts/freebsd/host.rb +15 -0
  629. data/plugins/hosts/freebsd/plugin.rb +34 -0
  630. data/plugins/hosts/gentoo/cap/nfs.rb +42 -0
  631. data/plugins/hosts/gentoo/host.rb +14 -0
  632. data/plugins/hosts/gentoo/plugin.rb +31 -0
  633. data/plugins/hosts/linux/cap/fs_iso.rb +52 -0
  634. data/plugins/hosts/linux/cap/nfs.rb +296 -0
  635. data/plugins/hosts/linux/cap/rdp.rb +59 -0
  636. data/plugins/hosts/linux/cap/ssh.rb +19 -0
  637. data/plugins/hosts/linux/host.rb +15 -0
  638. data/plugins/hosts/linux/plugin.rb +70 -0
  639. data/plugins/hosts/null/host.rb +15 -0
  640. data/plugins/hosts/null/plugin.rb +18 -0
  641. data/plugins/hosts/redhat/cap/nfs.rb +58 -0
  642. data/plugins/hosts/redhat/host.rb +31 -0
  643. data/plugins/hosts/redhat/plugin.rb +30 -0
  644. data/plugins/hosts/slackware/cap/nfs.rb +18 -0
  645. data/plugins/hosts/slackware/host.rb +15 -0
  646. data/plugins/hosts/slackware/plugin.rb +30 -0
  647. data/plugins/hosts/suse/cap/nfs.rb +22 -0
  648. data/plugins/hosts/suse/host.rb +30 -0
  649. data/plugins/hosts/suse/plugin.rb +33 -0
  650. data/plugins/hosts/void/cap/nfs.rb +27 -0
  651. data/plugins/hosts/void/host.rb +23 -0
  652. data/plugins/hosts/void/plugin.rb +33 -0
  653. data/plugins/hosts/windows/cap/configured_ip_addresses.rb +32 -0
  654. data/plugins/hosts/windows/cap/fs_iso.rb +51 -0
  655. data/plugins/hosts/windows/cap/nfs.rb +14 -0
  656. data/plugins/hosts/windows/cap/provider_install_virtualbox.rb +65 -0
  657. data/plugins/hosts/windows/cap/ps.rb +50 -0
  658. data/plugins/hosts/windows/cap/rdp.rb +33 -0
  659. data/plugins/hosts/windows/cap/smb.rb +203 -0
  660. data/plugins/hosts/windows/cap/ssh.rb +29 -0
  661. data/plugins/hosts/windows/host.rb +26 -0
  662. data/plugins/hosts/windows/plugin.rb +83 -0
  663. data/plugins/hosts/windows/scripts/check_credentials.ps1 +37 -0
  664. data/plugins/hosts/windows/scripts/host_info.ps1 +24 -0
  665. data/plugins/hosts/windows/scripts/install_virtualbox.ps1 +40 -0
  666. data/plugins/hosts/windows/scripts/set_share.ps1 +40 -0
  667. data/plugins/hosts/windows/scripts/set_ssh_key_permissions.ps1 +20 -0
  668. data/plugins/hosts/windows/scripts/unset_share.ps1 +13 -0
  669. data/plugins/hosts/windows/scripts/utils/VagrantSSH/VagrantSSH.psm1 +29 -0
  670. data/plugins/kernel_v1/config/nfs.rb +23 -0
  671. data/plugins/kernel_v1/config/package.rb +20 -0
  672. data/plugins/kernel_v1/config/ssh.rb +50 -0
  673. data/plugins/kernel_v1/config/vagrant.rb +34 -0
  674. data/plugins/kernel_v1/config/vm.rb +191 -0
  675. data/plugins/kernel_v1/plugin.rb +47 -0
  676. data/plugins/kernel_v2/config/cloud_init.rb +136 -0
  677. data/plugins/kernel_v2/config/disk.rb +224 -0
  678. data/plugins/kernel_v2/config/package.rb +24 -0
  679. data/plugins/kernel_v2/config/push.rb +155 -0
  680. data/plugins/kernel_v2/config/ssh.rb +93 -0
  681. data/plugins/kernel_v2/config/ssh_connect.rb +194 -0
  682. data/plugins/kernel_v2/config/trigger.rb +214 -0
  683. data/plugins/kernel_v2/config/vagrant.rb +99 -0
  684. data/plugins/kernel_v2/config/vm.rb +1062 -0
  685. data/plugins/kernel_v2/config/vm_provisioner.rb +202 -0
  686. data/plugins/kernel_v2/config/vm_subvm.rb +33 -0
  687. data/plugins/kernel_v2/config/vm_trigger.rb +297 -0
  688. data/plugins/kernel_v2/plugin.rb +71 -0
  689. data/plugins/providers/docker/action/build.rb +99 -0
  690. data/plugins/providers/docker/action/compare_synced_folders.rb +65 -0
  691. data/plugins/providers/docker/action/connect_networks.rb +80 -0
  692. data/plugins/providers/docker/action/create.rb +162 -0
  693. data/plugins/providers/docker/action/destroy.rb +34 -0
  694. data/plugins/providers/docker/action/destroy_build_image.rb +51 -0
  695. data/plugins/providers/docker/action/destroy_network.rb +53 -0
  696. data/plugins/providers/docker/action/forwarded_ports.rb +36 -0
  697. data/plugins/providers/docker/action/has_ssh.rb +21 -0
  698. data/plugins/providers/docker/action/host_machine.rb +75 -0
  699. data/plugins/providers/docker/action/host_machine_build_dir.rb +48 -0
  700. data/plugins/providers/docker/action/host_machine_port_checker.rb +34 -0
  701. data/plugins/providers/docker/action/host_machine_port_warning.rb +40 -0
  702. data/plugins/providers/docker/action/host_machine_required.rb +20 -0
  703. data/plugins/providers/docker/action/host_machine_sync_folders.rb +175 -0
  704. data/plugins/providers/docker/action/host_machine_sync_folders_disable.rb +91 -0
  705. data/plugins/providers/docker/action/init_state.rb +23 -0
  706. data/plugins/providers/docker/action/is_build.rb +19 -0
  707. data/plugins/providers/docker/action/is_host_machine_created.rb +32 -0
  708. data/plugins/providers/docker/action/login.rb +51 -0
  709. data/plugins/providers/docker/action/prepare_forwarded_port_collision_params.rb +64 -0
  710. data/plugins/providers/docker/action/prepare_networks.rb +372 -0
  711. data/plugins/providers/docker/action/prepare_nfs_settings.rb +60 -0
  712. data/plugins/providers/docker/action/prepare_nfs_valid_ids.rb +22 -0
  713. data/plugins/providers/docker/action/prepare_ssh.rb +48 -0
  714. data/plugins/providers/docker/action/pull.rb +30 -0
  715. data/plugins/providers/docker/action/start.rb +24 -0
  716. data/plugins/providers/docker/action/stop.rb +24 -0
  717. data/plugins/providers/docker/action/wait_for_running.rb +70 -0
  718. data/plugins/providers/docker/action.rb +319 -0
  719. data/plugins/providers/docker/cap/has_communicator.rb +14 -0
  720. data/plugins/providers/docker/cap/proxy_machine.rb +15 -0
  721. data/plugins/providers/docker/cap/public_address.rb +26 -0
  722. data/plugins/providers/docker/command/exec.rb +112 -0
  723. data/plugins/providers/docker/command/logs.rb +111 -0
  724. data/plugins/providers/docker/command/run.rb +76 -0
  725. data/plugins/providers/docker/communicator.rb +199 -0
  726. data/plugins/providers/docker/config.rb +362 -0
  727. data/plugins/providers/docker/driver/compose.rb +315 -0
  728. data/plugins/providers/docker/driver.rb +416 -0
  729. data/plugins/providers/docker/errors.rb +108 -0
  730. data/plugins/providers/docker/executor/local.rb +48 -0
  731. data/plugins/providers/docker/executor/vagrant.rb +88 -0
  732. data/plugins/providers/docker/hostmachine/Vagrantfile +3 -0
  733. data/plugins/providers/docker/plugin.rb +89 -0
  734. data/plugins/providers/docker/provider.rb +215 -0
  735. data/plugins/providers/docker/synced_folder.rb +35 -0
  736. data/plugins/providers/hyperv/action/check_access.rb +27 -0
  737. data/plugins/providers/hyperv/action/check_enabled.rb +25 -0
  738. data/plugins/providers/hyperv/action/configure.rb +115 -0
  739. data/plugins/providers/hyperv/action/delete_vm.rb +28 -0
  740. data/plugins/providers/hyperv/action/export.rb +45 -0
  741. data/plugins/providers/hyperv/action/import.rb +86 -0
  742. data/plugins/providers/hyperv/action/is_windows.rb +19 -0
  743. data/plugins/providers/hyperv/action/message_will_not_destroy.rb +20 -0
  744. data/plugins/providers/hyperv/action/net_set_mac.rb +23 -0
  745. data/plugins/providers/hyperv/action/net_set_vlan.rb +23 -0
  746. data/plugins/providers/hyperv/action/package.rb +19 -0
  747. data/plugins/providers/hyperv/action/package_metadata_json.rb +37 -0
  748. data/plugins/providers/hyperv/action/package_setup_files.rb +19 -0
  749. data/plugins/providers/hyperv/action/package_setup_folders.rb +21 -0
  750. data/plugins/providers/hyperv/action/package_vagrantfile.rb +37 -0
  751. data/plugins/providers/hyperv/action/read_guest_ip.rb +45 -0
  752. data/plugins/providers/hyperv/action/read_state.rb +33 -0
  753. data/plugins/providers/hyperv/action/resume_vm.rb +20 -0
  754. data/plugins/providers/hyperv/action/set_name.rb +46 -0
  755. data/plugins/providers/hyperv/action/snapshot_delete.rb +30 -0
  756. data/plugins/providers/hyperv/action/snapshot_restore.rb +26 -0
  757. data/plugins/providers/hyperv/action/snapshot_save.rb +30 -0
  758. data/plugins/providers/hyperv/action/start_instance.rb +20 -0
  759. data/plugins/providers/hyperv/action/stop_instance.rb +20 -0
  760. data/plugins/providers/hyperv/action/suspend_vm.rb +20 -0
  761. data/plugins/providers/hyperv/action/wait_for_ip_address.rb +62 -0
  762. data/plugins/providers/hyperv/action.rb +326 -0
  763. data/plugins/providers/hyperv/cap/cleanup_disks.rb +92 -0
  764. data/plugins/providers/hyperv/cap/configure_disks.rb +248 -0
  765. data/plugins/providers/hyperv/cap/public_address.rb +18 -0
  766. data/plugins/providers/hyperv/cap/snapshot_list.rb +14 -0
  767. data/plugins/providers/hyperv/cap/validate_disk_ext.rb +37 -0
  768. data/plugins/providers/hyperv/config.rb +148 -0
  769. data/plugins/providers/hyperv/driver.rb +368 -0
  770. data/plugins/providers/hyperv/errors.rb +49 -0
  771. data/plugins/providers/hyperv/plugin.rb +74 -0
  772. data/plugins/providers/hyperv/provider.rb +116 -0
  773. data/plugins/providers/hyperv/scripts/add_dvd.ps1 +18 -0
  774. data/plugins/providers/hyperv/scripts/attach_disk_drive.ps1 +31 -0
  775. data/plugins/providers/hyperv/scripts/check_hyperv.ps1 +11 -0
  776. data/plugins/providers/hyperv/scripts/check_hyperv_access.ps1 +17 -0
  777. data/plugins/providers/hyperv/scripts/clone_vhd.ps1 +21 -0
  778. data/plugins/providers/hyperv/scripts/configure_vm.ps1 +130 -0
  779. data/plugins/providers/hyperv/scripts/create_snapshot.ps1 +27 -0
  780. data/plugins/providers/hyperv/scripts/delete_snapshot.ps1 +19 -0
  781. data/plugins/providers/hyperv/scripts/delete_vm.ps1 +22 -0
  782. data/plugins/providers/hyperv/scripts/dismount_vhd.ps1 +16 -0
  783. data/plugins/providers/hyperv/scripts/export_vm.ps1 +32 -0
  784. data/plugins/providers/hyperv/scripts/file_sync.ps1 +123 -0
  785. data/plugins/providers/hyperv/scripts/get_network_config.ps1 +68 -0
  786. data/plugins/providers/hyperv/scripts/get_network_mac.ps1 +35 -0
  787. data/plugins/providers/hyperv/scripts/get_scsi_controller.ps1 +19 -0
  788. data/plugins/providers/hyperv/scripts/get_switches.ps1 +13 -0
  789. data/plugins/providers/hyperv/scripts/get_vhd.ps1 +19 -0
  790. data/plugins/providers/hyperv/scripts/get_vm_status.ps1 +52 -0
  791. data/plugins/providers/hyperv/scripts/has_vmcx_support.ps1 +12 -0
  792. data/plugins/providers/hyperv/scripts/import_vm.ps1 +40 -0
  793. data/plugins/providers/hyperv/scripts/list_hdds.ps1 +20 -0
  794. data/plugins/providers/hyperv/scripts/list_snapshots.ps1 +22 -0
  795. data/plugins/providers/hyperv/scripts/new_vhd.ps1 +34 -0
  796. data/plugins/providers/hyperv/scripts/remove_disk_drive.ps1 +28 -0
  797. data/plugins/providers/hyperv/scripts/remove_dvd.ps1 +21 -0
  798. data/plugins/providers/hyperv/scripts/resize_disk_drive.ps1 +21 -0
  799. data/plugins/providers/hyperv/scripts/restore_snapshot.ps1 +20 -0
  800. data/plugins/providers/hyperv/scripts/resume_vm.ps1 +19 -0
  801. data/plugins/providers/hyperv/scripts/set_enhanced_session_transport_type.ps1 +36 -0
  802. data/plugins/providers/hyperv/scripts/set_name.ps1 +27 -0
  803. data/plugins/providers/hyperv/scripts/set_network_mac.ps1 +21 -0
  804. data/plugins/providers/hyperv/scripts/set_network_vlan.ps1 +19 -0
  805. data/plugins/providers/hyperv/scripts/set_vm_integration_services.ps1 +30 -0
  806. data/plugins/providers/hyperv/scripts/start_vm.ps1 +29 -0
  807. data/plugins/providers/hyperv/scripts/stop_vm.ps1 +20 -0
  808. data/plugins/providers/hyperv/scripts/suspend_vm.ps1 +19 -0
  809. data/plugins/providers/hyperv/scripts/utils/VagrantMessages/VagrantMessages.psm1 +27 -0
  810. data/plugins/providers/hyperv/scripts/utils/VagrantVM/VagrantVM.psm1 +776 -0
  811. data/plugins/providers/virtualbox/action/boot.rb +26 -0
  812. data/plugins/providers/virtualbox/action/check_accessible.rb +26 -0
  813. data/plugins/providers/virtualbox/action/check_created.rb +24 -0
  814. data/plugins/providers/virtualbox/action/check_guest_additions.rb +58 -0
  815. data/plugins/providers/virtualbox/action/check_running.rb +24 -0
  816. data/plugins/providers/virtualbox/action/check_virtualbox.rb +28 -0
  817. data/plugins/providers/virtualbox/action/clean_machine_folder.rb +55 -0
  818. data/plugins/providers/virtualbox/action/clear_forwarded_ports.rb +23 -0
  819. data/plugins/providers/virtualbox/action/clear_network_interfaces.rb +34 -0
  820. data/plugins/providers/virtualbox/action/created.rb +23 -0
  821. data/plugins/providers/virtualbox/action/customize.rb +48 -0
  822. data/plugins/providers/virtualbox/action/destroy.rb +22 -0
  823. data/plugins/providers/virtualbox/action/destroy_unused_network_interfaces.rb +26 -0
  824. data/plugins/providers/virtualbox/action/discard_state.rb +23 -0
  825. data/plugins/providers/virtualbox/action/export.rb +54 -0
  826. data/plugins/providers/virtualbox/action/forced_halt.rb +28 -0
  827. data/plugins/providers/virtualbox/action/forward_ports.rb +92 -0
  828. data/plugins/providers/virtualbox/action/import.rb +110 -0
  829. data/plugins/providers/virtualbox/action/import_master.rb +83 -0
  830. data/plugins/providers/virtualbox/action/is_paused.rb +23 -0
  831. data/plugins/providers/virtualbox/action/is_running.rb +23 -0
  832. data/plugins/providers/virtualbox/action/is_saved.rb +23 -0
  833. data/plugins/providers/virtualbox/action/match_mac_address.rb +30 -0
  834. data/plugins/providers/virtualbox/action/message_already_running.rb +19 -0
  835. data/plugins/providers/virtualbox/action/message_not_created.rb +19 -0
  836. data/plugins/providers/virtualbox/action/message_not_running.rb +19 -0
  837. data/plugins/providers/virtualbox/action/message_will_not_destroy.rb +20 -0
  838. data/plugins/providers/virtualbox/action/network.rb +638 -0
  839. data/plugins/providers/virtualbox/action/network_fix_ipv6.rb +87 -0
  840. data/plugins/providers/virtualbox/action/package.rb +19 -0
  841. data/plugins/providers/virtualbox/action/package_setup_files.rb +19 -0
  842. data/plugins/providers/virtualbox/action/package_setup_folders.rb +21 -0
  843. data/plugins/providers/virtualbox/action/package_vagrantfile.rb +36 -0
  844. data/plugins/providers/virtualbox/action/prepare_clone_snapshot.rb +69 -0
  845. data/plugins/providers/virtualbox/action/prepare_forwarded_port_collision_params.rb +38 -0
  846. data/plugins/providers/virtualbox/action/prepare_nfs_settings.rb +162 -0
  847. data/plugins/providers/virtualbox/action/prepare_nfs_valid_ids.rb +20 -0
  848. data/plugins/providers/virtualbox/action/resume.rb +28 -0
  849. data/plugins/providers/virtualbox/action/sane_defaults.rb +92 -0
  850. data/plugins/providers/virtualbox/action/set_default_nic_type.rb +72 -0
  851. data/plugins/providers/virtualbox/action/set_name.rb +58 -0
  852. data/plugins/providers/virtualbox/action/setup_package_files.rb +20 -0
  853. data/plugins/providers/virtualbox/action/snapshot_delete.rb +37 -0
  854. data/plugins/providers/virtualbox/action/snapshot_restore.rb +33 -0
  855. data/plugins/providers/virtualbox/action/snapshot_save.rb +28 -0
  856. data/plugins/providers/virtualbox/action/suspend.rb +23 -0
  857. data/plugins/providers/virtualbox/action.rb +433 -0
  858. data/plugins/providers/virtualbox/cap/cleanup_disks.rb +86 -0
  859. data/plugins/providers/virtualbox/cap/configure_disks.rb +441 -0
  860. data/plugins/providers/virtualbox/cap/mount_options.rb +43 -0
  861. data/plugins/providers/virtualbox/cap/public_address.rb +18 -0
  862. data/plugins/providers/virtualbox/cap/validate_disk_ext.rb +37 -0
  863. data/plugins/providers/virtualbox/cap.rb +40 -0
  864. data/plugins/providers/virtualbox/config.rb +211 -0
  865. data/plugins/providers/virtualbox/driver/base.rb +530 -0
  866. data/plugins/providers/virtualbox/driver/meta.rb +212 -0
  867. data/plugins/providers/virtualbox/driver/version_4_0.rb +574 -0
  868. data/plugins/providers/virtualbox/driver/version_4_1.rb +699 -0
  869. data/plugins/providers/virtualbox/driver/version_4_2.rb +713 -0
  870. data/plugins/providers/virtualbox/driver/version_4_3.rb +757 -0
  871. data/plugins/providers/virtualbox/driver/version_5_0.rb +1022 -0
  872. data/plugins/providers/virtualbox/driver/version_5_1.rb +19 -0
  873. data/plugins/providers/virtualbox/driver/version_5_2.rb +19 -0
  874. data/plugins/providers/virtualbox/driver/version_6_0.rb +105 -0
  875. data/plugins/providers/virtualbox/driver/version_6_1.rb +42 -0
  876. data/plugins/providers/virtualbox/driver/version_7_0.rb +306 -0
  877. data/plugins/providers/virtualbox/driver/version_7_1.rb +19 -0
  878. data/plugins/providers/virtualbox/model/forwarded_port.rb +73 -0
  879. data/plugins/providers/virtualbox/model/storage_controller.rb +138 -0
  880. data/plugins/providers/virtualbox/model/storage_controller_array.rb +101 -0
  881. data/plugins/providers/virtualbox/plugin.rb +120 -0
  882. data/plugins/providers/virtualbox/provider.rb +133 -0
  883. data/plugins/providers/virtualbox/synced_folder.rb +153 -0
  884. data/plugins/providers/virtualbox/util/compile_forwarded_ports.rb +40 -0
  885. data/plugins/provisioners/ansible/cap/guest/alpine/ansible_install.rb +47 -0
  886. data/plugins/provisioners/ansible/cap/guest/arch/ansible_install.rb +44 -0
  887. data/plugins/provisioners/ansible/cap/guest/debian/ansible_install.rb +56 -0
  888. data/plugins/provisioners/ansible/cap/guest/facts.rb +27 -0
  889. data/plugins/provisioners/ansible/cap/guest/fedora/ansible_install.rb +43 -0
  890. data/plugins/provisioners/ansible/cap/guest/freebsd/ansible_install.rb +26 -0
  891. data/plugins/provisioners/ansible/cap/guest/pip/pip.rb +49 -0
  892. data/plugins/provisioners/ansible/cap/guest/posix/ansible_installed.rb +28 -0
  893. data/plugins/provisioners/ansible/cap/guest/redhat/ansible_install.rb +75 -0
  894. data/plugins/provisioners/ansible/cap/guest/suse/ansible_install.rb +26 -0
  895. data/plugins/provisioners/ansible/cap/guest/ubuntu/ansible_install.rb +42 -0
  896. data/plugins/provisioners/ansible/config/base.rb +157 -0
  897. data/plugins/provisioners/ansible/config/guest.rb +59 -0
  898. data/plugins/provisioners/ansible/config/host.rb +66 -0
  899. data/plugins/provisioners/ansible/constants.rb +17 -0
  900. data/plugins/provisioners/ansible/errors.rb +43 -0
  901. data/plugins/provisioners/ansible/helpers.rb +20 -0
  902. data/plugins/provisioners/ansible/plugin.rb +88 -0
  903. data/plugins/provisioners/ansible/provisioner/base.rb +405 -0
  904. data/plugins/provisioners/ansible/provisioner/guest.rb +197 -0
  905. data/plugins/provisioners/ansible/provisioner/host.rb +352 -0
  906. data/plugins/provisioners/cfengine/cap/debian/cfengine_install.rb +24 -0
  907. data/plugins/provisioners/cfengine/cap/linux/cfengine_installed.rb +17 -0
  908. data/plugins/provisioners/cfengine/cap/linux/cfengine_needs_bootstrap.rb +37 -0
  909. data/plugins/provisioners/cfengine/cap/redhat/cfengine_install.rb +37 -0
  910. data/plugins/provisioners/cfengine/cap/suse/cfengine_install.rb +21 -0
  911. data/plugins/provisioners/cfengine/config.rb +127 -0
  912. data/plugins/provisioners/cfengine/plugin.rb +50 -0
  913. data/plugins/provisioners/cfengine/provisioner.rb +142 -0
  914. data/plugins/provisioners/chef/cap/debian/chef_install.rb +22 -0
  915. data/plugins/provisioners/chef/cap/freebsd/chef_install.rb +21 -0
  916. data/plugins/provisioners/chef/cap/freebsd/chef_installed.rb +27 -0
  917. data/plugins/provisioners/chef/cap/linux/chef_installed.rb +27 -0
  918. data/plugins/provisioners/chef/cap/omnios/chef_install.rb +23 -0
  919. data/plugins/provisioners/chef/cap/omnios/chef_installed.rb +28 -0
  920. data/plugins/provisioners/chef/cap/redhat/chef_install.rb +27 -0
  921. data/plugins/provisioners/chef/cap/suse/chef_install.rb +30 -0
  922. data/plugins/provisioners/chef/cap/windows/chef_install.rb +19 -0
  923. data/plugins/provisioners/chef/cap/windows/chef_installed.rb +24 -0
  924. data/plugins/provisioners/chef/command_builder.rb +87 -0
  925. data/plugins/provisioners/chef/config/base.rb +139 -0
  926. data/plugins/provisioners/chef/config/base_runner.rb +131 -0
  927. data/plugins/provisioners/chef/config/chef_apply.rb +53 -0
  928. data/plugins/provisioners/chef/config/chef_client.rb +77 -0
  929. data/plugins/provisioners/chef/config/chef_solo.rb +141 -0
  930. data/plugins/provisioners/chef/config/chef_zero.rb +133 -0
  931. data/plugins/provisioners/chef/installer.rb +51 -0
  932. data/plugins/provisioners/chef/omnibus.rb +40 -0
  933. data/plugins/provisioners/chef/plugin.rb +108 -0
  934. data/plugins/provisioners/chef/provisioner/base.rb +258 -0
  935. data/plugins/provisioners/chef/provisioner/chef_apply.rb +74 -0
  936. data/plugins/provisioners/chef/provisioner/chef_client.rb +179 -0
  937. data/plugins/provisioners/chef/provisioner/chef_solo.rb +244 -0
  938. data/plugins/provisioners/chef/provisioner/chef_zero.rb +123 -0
  939. data/plugins/provisioners/container/client.rb +206 -0
  940. data/plugins/provisioners/container/config.rb +86 -0
  941. data/plugins/provisioners/container/installer.rb +16 -0
  942. data/plugins/provisioners/container/plugin.rb +26 -0
  943. data/plugins/provisioners/container/provisioner.rb +31 -0
  944. data/plugins/provisioners/docker/cap/centos/docker_install.rb +44 -0
  945. data/plugins/provisioners/docker/cap/centos/docker_start_service.rb +27 -0
  946. data/plugins/provisioners/docker/cap/debian/docker_install.rb +21 -0
  947. data/plugins/provisioners/docker/cap/debian/docker_start_service.rb +16 -0
  948. data/plugins/provisioners/docker/cap/fedora/docker_install.rb +30 -0
  949. data/plugins/provisioners/docker/cap/linux/docker_configure_vagrant_user.rb +23 -0
  950. data/plugins/provisioners/docker/cap/linux/docker_daemon_running.rb +16 -0
  951. data/plugins/provisioners/docker/cap/linux/docker_installed.rb +29 -0
  952. data/plugins/provisioners/docker/cap/windows/docker_daemon_running.rb +16 -0
  953. data/plugins/provisioners/docker/client.rb +26 -0
  954. data/plugins/provisioners/docker/config.rb +19 -0
  955. data/plugins/provisioners/docker/installer.rb +37 -0
  956. data/plugins/provisioners/docker/plugin.rb +71 -0
  957. data/plugins/provisioners/docker/provisioner.rb +59 -0
  958. data/plugins/provisioners/file/config.rb +32 -0
  959. data/plugins/provisioners/file/plugin.rb +26 -0
  960. data/plugins/provisioners/file/provisioner.rb +46 -0
  961. data/plugins/provisioners/podman/cap/centos/podman_install.rb +38 -0
  962. data/plugins/provisioners/podman/cap/linux/podman_installed.rb +16 -0
  963. data/plugins/provisioners/podman/cap/redhat/podman_install.rb +29 -0
  964. data/plugins/provisioners/podman/client.rb +15 -0
  965. data/plugins/provisioners/podman/config.rb +31 -0
  966. data/plugins/provisioners/podman/installer.rb +36 -0
  967. data/plugins/provisioners/podman/plugin.rb +41 -0
  968. data/plugins/provisioners/podman/provisioner.rb +55 -0
  969. data/plugins/provisioners/puppet/config/puppet.rb +178 -0
  970. data/plugins/provisioners/puppet/config/puppet_server.rb +84 -0
  971. data/plugins/provisioners/puppet/plugin.rb +36 -0
  972. data/plugins/provisioners/puppet/provisioner/puppet.rb +336 -0
  973. data/plugins/provisioners/puppet/provisioner/puppet_server.rb +114 -0
  974. data/plugins/provisioners/salt/bootstrap_downloader.rb +62 -0
  975. data/plugins/provisioners/salt/config.rb +194 -0
  976. data/plugins/provisioners/salt/errors.rb +18 -0
  977. data/plugins/provisioners/salt/plugin.rb +25 -0
  978. data/plugins/provisioners/salt/provisioner.rb +499 -0
  979. data/plugins/provisioners/shell/config.rb +146 -0
  980. data/plugins/provisioners/shell/plugin.rb +26 -0
  981. data/plugins/provisioners/shell/provisioner.rb +368 -0
  982. data/plugins/pushes/atlas/config.rb +151 -0
  983. data/plugins/pushes/atlas/errors.rb +16 -0
  984. data/plugins/pushes/atlas/locales/en.yml +25 -0
  985. data/plugins/pushes/atlas/plugin.rb +38 -0
  986. data/plugins/pushes/atlas/push.rb +87 -0
  987. data/plugins/pushes/ftp/adapter.rb +147 -0
  988. data/plugins/pushes/ftp/config.rb +133 -0
  989. data/plugins/pushes/ftp/errors.rb +16 -0
  990. data/plugins/pushes/ftp/locales/en.yml +19 -0
  991. data/plugins/pushes/ftp/plugin.rb +36 -0
  992. data/plugins/pushes/ftp/push.rb +137 -0
  993. data/plugins/pushes/heroku/config.rb +77 -0
  994. data/plugins/pushes/heroku/errors.rb +24 -0
  995. data/plugins/pushes/heroku/locales/en.yml +33 -0
  996. data/plugins/pushes/heroku/plugin.rb +36 -0
  997. data/plugins/pushes/heroku/push.rb +147 -0
  998. data/plugins/pushes/local-exec/config.rb +80 -0
  999. data/plugins/pushes/local-exec/errors.rb +16 -0
  1000. data/plugins/pushes/local-exec/locales/en.yml +26 -0
  1001. data/plugins/pushes/local-exec/plugin.rb +36 -0
  1002. data/plugins/pushes/local-exec/push.rb +91 -0
  1003. data/plugins/pushes/noop/config.rb +19 -0
  1004. data/plugins/pushes/noop/plugin.rb +25 -0
  1005. data/plugins/pushes/noop/push.rb +12 -0
  1006. data/plugins/synced_folders/nfs/action_cleanup.rb +32 -0
  1007. data/plugins/synced_folders/nfs/config.rb +35 -0
  1008. data/plugins/synced_folders/nfs/plugin.rb +49 -0
  1009. data/plugins/synced_folders/nfs/synced_folder.rb +171 -0
  1010. data/plugins/synced_folders/rsync/command/rsync.rb +81 -0
  1011. data/plugins/synced_folders/rsync/command/rsync_auto.rb +244 -0
  1012. data/plugins/synced_folders/rsync/default_unix_cap.rb +49 -0
  1013. data/plugins/synced_folders/rsync/helper.rb +296 -0
  1014. data/plugins/synced_folders/rsync/plugin.rb +31 -0
  1015. data/plugins/synced_folders/rsync/synced_folder.rb +62 -0
  1016. data/plugins/synced_folders/smb/cap/default_fstab_modification.rb +14 -0
  1017. data/plugins/synced_folders/smb/cap/mount_options.rb +59 -0
  1018. data/plugins/synced_folders/smb/config.rb +26 -0
  1019. data/plugins/synced_folders/smb/errors.rb +65 -0
  1020. data/plugins/synced_folders/smb/plugin.rb +60 -0
  1021. data/plugins/synced_folders/smb/synced_folder.rb +189 -0
  1022. data/plugins/synced_folders/unix_mount_helpers.rb +122 -0
  1023. data/scripts/install_rvm +19 -0
  1024. data/scripts/setup_tests +49 -0
  1025. data/scripts/sign.sh +29 -0
  1026. data/scripts/website_push_www.sh +43 -0
  1027. data/tasks/acceptance.rake +22 -0
  1028. data/tasks/bundler.rake +3 -0
  1029. data/tasks/test.rake +8 -0
  1030. data/templates/commands/init/Vagrantfile.erb +86 -0
  1031. data/templates/commands/init/Vagrantfile.min.erb +12 -0
  1032. data/templates/commands/ssh_config/config.erb +42 -0
  1033. data/templates/commands/winrm_config/config.erb +11 -0
  1034. data/templates/config/messages.erb +14 -0
  1035. data/templates/config/validation_failed.erb +7 -0
  1036. data/templates/guests/alpine/network_dhcp.erb +13 -0
  1037. data/templates/guests/alpine/network_static.erb +7 -0
  1038. data/templates/guests/alt/network_dhcp.erb +7 -0
  1039. data/templates/guests/alt/network_ipv4address.erb +3 -0
  1040. data/templates/guests/alt/network_ipv4route.erb +5 -0
  1041. data/templates/guests/alt/network_static.erb +7 -0
  1042. data/templates/guests/arch/default_network/network_dhcp.erb +4 -0
  1043. data/templates/guests/arch/default_network/network_static.erb +8 -0
  1044. data/templates/guests/arch/default_network/network_static6.erb +8 -0
  1045. data/templates/guests/arch/systemd_networkd/network_dhcp.erb +6 -0
  1046. data/templates/guests/arch/systemd_networkd/network_static.erb +9 -0
  1047. data/templates/guests/arch/systemd_networkd/network_static6.erb +9 -0
  1048. data/templates/guests/coreos/etcd.service.erb +10 -0
  1049. data/templates/guests/debian/network_dhcp.erb +13 -0
  1050. data/templates/guests/debian/network_static.erb +10 -0
  1051. data/templates/guests/debian/network_static6.erb +10 -0
  1052. data/templates/guests/freebsd/network_dhcp.erb +4 -0
  1053. data/templates/guests/freebsd/network_static.erb +6 -0
  1054. data/templates/guests/freebsd/network_static6.erb +6 -0
  1055. data/templates/guests/funtoo/network_dhcp.erb +4 -0
  1056. data/templates/guests/funtoo/network_static.erb +10 -0
  1057. data/templates/guests/funtoo/network_static6.erb +9 -0
  1058. data/templates/guests/gentoo/network_dhcp.erb +4 -0
  1059. data/templates/guests/gentoo/network_static.erb +8 -0
  1060. data/templates/guests/gentoo/network_static6.erb +8 -0
  1061. data/templates/guests/gentoo/network_systemd.erb +16 -0
  1062. data/templates/guests/linux/etc_fstab.erb +6 -0
  1063. data/templates/guests/netbsd/network_dhcp.erb +3 -0
  1064. data/templates/guests/netbsd/network_static.erb +3 -0
  1065. data/templates/guests/nixos/hostname.erb +6 -0
  1066. data/templates/guests/nixos/network.erb +15 -0
  1067. data/templates/guests/openbsd/network_dhcp.erb +1 -0
  1068. data/templates/guests/openbsd/network_static.erb +1 -0
  1069. data/templates/guests/openbsd/network_static6.erb +1 -0
  1070. data/templates/guests/redhat/network_dhcp.erb +7 -0
  1071. data/templates/guests/redhat/network_static.erb +16 -0
  1072. data/templates/guests/redhat/network_static6.erb +12 -0
  1073. data/templates/guests/slackware/network_dhcp.erb +11 -0
  1074. data/templates/guests/slackware/network_static.erb +13 -0
  1075. data/templates/guests/suse/network_dhcp.erb +6 -0
  1076. data/templates/guests/suse/network_static.erb +13 -0
  1077. data/templates/guests/suse/network_static6.erb +16 -0
  1078. data/templates/license/license.html.tmpl +127 -0
  1079. data/templates/license/license.rtf.tmpl +0 -0
  1080. data/templates/license/license.tmpl +92 -0
  1081. data/templates/locales/comm_winrm.yml +85 -0
  1082. data/templates/locales/command_ps.yml +35 -0
  1083. data/templates/locales/command_rdp.yml +28 -0
  1084. data/templates/locales/en.yml +3149 -0
  1085. data/templates/locales/guest_windows.yml +26 -0
  1086. data/templates/locales/providers_docker.yml +321 -0
  1087. data/templates/locales/providers_hyperv.yml +111 -0
  1088. data/templates/locales/synced_folder_smb.yml +98 -0
  1089. data/templates/networking/network_manager/network_manager_device.erb +41 -0
  1090. data/templates/nfs/exports_bsd.erb +5 -0
  1091. data/templates/nfs/exports_darwin.erb +7 -0
  1092. data/templates/nfs/exports_linux.erb +7 -0
  1093. data/templates/package_Vagrantfile.erb +11 -0
  1094. data/templates/provisioners/chef_client/client.erb +41 -0
  1095. data/templates/provisioners/chef_solo/solo.erb +52 -0
  1096. data/templates/provisioners/chef_zero/zero.erb +45 -0
  1097. data/templates/rgloader.rb +12 -0
  1098. data/vagrant-spec.config.example.rb +13 -0
  1099. data/vagrant.gemspec +110 -20
  1100. data/version.txt +1 -0
  1101. metadata +1581 -43
  1102. data/LICENSE.txt +0 -22
  1103. data/message.txt +0 -17
@@ -0,0 +1,238 @@
1
+ # Copyright (c) HashiCorp, Inc.
2
+ # SPDX-License-Identifier: BUSL-1.1
3
+
4
+ require "pathname"
5
+ require "tempfile"
6
+ require "thread"
7
+
8
+ module Vagrant
9
+ @@global_lock = Mutex.new
10
+
11
+ # This is the default endpoint of the Vagrant Cloud in
12
+ # use. API calls will be made to this for various functions
13
+ # of Vagrant that may require remote access.
14
+ #
15
+ # @return [String]
16
+ DEFAULT_SERVER_URL = "https://vagrantcloud.com".freeze
17
+
18
+ # Max number of seconds to wait for joining an active thread.
19
+ #
20
+ # @return [Integer]
21
+ # @note This is not the maximum time for a thread to complete.
22
+ THREAD_MAX_JOIN_TIMEOUT = 60
23
+
24
+ # List of required external tools that are expected to be
25
+ # present when running outside of the installers
26
+ REQUIRED_EXTERNAL_TOOLS = ["bsdtar", "curl", "ssh"].map(&:freeze).freeze
27
+
28
+ # This holds a global lock for the duration of the block. This should
29
+ # be invoked around anything that is modifying process state (such as
30
+ # environmental variables).
31
+ def self.global_lock
32
+ @@global_lock.synchronize do
33
+ return yield
34
+ end
35
+ end
36
+
37
+ # This returns a true/false showing whether we're running from the
38
+ # environment setup by the Vagrant installers.
39
+ #
40
+ # @return [Boolean]
41
+ def self.in_installer?
42
+ !!ENV["VAGRANT_INSTALLER_ENV"]
43
+ end
44
+
45
+ # This returns a true/false if we are running within a bundler environment
46
+ #
47
+ # @return [Boolean]
48
+ def self.in_bundler?
49
+ !!ENV["BUNDLE_GEMFILE"] &&
50
+ !defined?(::Bundler).nil?
51
+ end
52
+
53
+ # Returns the path to the embedded directory of the Vagrant installer,
54
+ # if there is one (if we're running in an installer).
55
+ #
56
+ # @return [String]
57
+ def self.installer_embedded_dir
58
+ return nil if !Vagrant.in_installer?
59
+ ENV["VAGRANT_INSTALLER_EMBEDDED_DIR"]
60
+ end
61
+
62
+ # Should the plugin system be initialized
63
+ #
64
+ # @return [Boolean]
65
+ def self.plugins_init?
66
+ !ENV['VAGRANT_DISABLE_PLUGIN_INIT']
67
+ end
68
+
69
+ # This returns whether or not 3rd party plugins should and can be loaded.
70
+ #
71
+ # @return [Boolean]
72
+ def self.plugins_enabled?
73
+ !ENV["VAGRANT_NO_PLUGINS"]
74
+ end
75
+
76
+ # Whether or not super quiet mode is enabled. This is ill-advised.
77
+ #
78
+ # @return [Boolean]
79
+ def self.very_quiet?
80
+ !!ENV["VAGRANT_I_KNOW_WHAT_IM_DOING_PLEASE_BE_QUIET"]
81
+ end
82
+
83
+ # The current log level for Vagrant
84
+ #
85
+ # @return [String]
86
+ def self.log_level
87
+ ENV.fetch("VAGRANT_LOG", "fatal").downcase
88
+ end
89
+
90
+ # Returns the URL prefix to the server.
91
+ #
92
+ # @return [String]
93
+ def self.server_url(config_server_url=nil)
94
+ result = ENV["VAGRANT_SERVER_URL"]
95
+ result = config_server_url if result == "" or result == nil
96
+ result || DEFAULT_SERVER_URL
97
+ end
98
+
99
+ # The source root is the path to the root directory of the Vagrant source.
100
+ #
101
+ # @return [Pathname]
102
+ def self.source_root
103
+ @source_root ||= Pathname.new(File.expand_path('../../../', __FILE__))
104
+ end
105
+
106
+ # This returns the path to the ~/.vagrant.d folder where Vagrant's
107
+ # per-user state is stored.
108
+ #
109
+ # @return [Pathname]
110
+ def self.user_data_path
111
+ # Use user specified env var if available
112
+ path = ENV["VAGRANT_HOME"]
113
+
114
+ # On Windows, we default to the USERPROFILE directory if it
115
+ # is available. This is more compatible with Cygwin and sharing
116
+ # the home directory across shells.
117
+ if !path && ENV["USERPROFILE"]
118
+ path = "#{ENV["USERPROFILE"]}/.vagrant.d"
119
+ end
120
+
121
+ # Fallback to the default
122
+ path ||= "~/.vagrant.d"
123
+
124
+ Pathname.new(path).expand_path
125
+ end
126
+
127
+ # This returns true/false if the running version of Vagrant is
128
+ # a pre-release version (development)
129
+ #
130
+ # @return [Boolean]
131
+ def self.prerelease?
132
+ Gem::Version.new(Vagrant::VERSION).prerelease?
133
+ end
134
+
135
+ # This returns true/false if the Vagrant should allow prerelease
136
+ # versions when resolving plugin dependency constraints
137
+ #
138
+ # @return [Boolean]
139
+ def self.allow_prerelease_dependencies?
140
+ !!ENV["VAGRANT_ALLOW_PRERELEASE"]
141
+ end
142
+
143
+ # This allows control over dependency resolution when installing
144
+ # plugins into vagrant. When true, dependency libraries that Vagrant
145
+ # core relies upon will be hard constraints.
146
+ #
147
+ # @return [Boolean]
148
+ def self.strict_dependency_enforcement
149
+ if ENV["VAGRANT_DISABLE_STRICT_DEPENDENCY_ENFORCEMENT"]
150
+ false
151
+ else
152
+ true
153
+ end
154
+ end
155
+
156
+ # Automatically install locally defined plugins instead of
157
+ # waiting for user confirmation.
158
+ #
159
+ # @return [Boolean]
160
+ def self.auto_install_local_plugins?
161
+ if ENV["VAGRANT_INSTALL_LOCAL_PLUGINS"]
162
+ true
163
+ else
164
+ false
165
+ end
166
+ end
167
+
168
+ # Use Ruby Resolv in place of libc
169
+ #
170
+ # @return [boolean] enabled or not
171
+ def self.enable_resolv_replace
172
+ if ENV["VAGRANT_ENABLE_RESOLV_REPLACE"]
173
+ if !ENV["VAGRANT_DISABLE_RESOLV_REPLACE"]
174
+ begin
175
+ require "resolv-replace"
176
+ true
177
+ rescue
178
+ false
179
+ end
180
+ else
181
+ false
182
+ end
183
+ end
184
+ end
185
+
186
+ # Set the global logger
187
+ #
188
+ # @param log Logger
189
+ # @return [Logger]
190
+ def self.global_logger=(log)
191
+ @_global_logger = log
192
+ end
193
+
194
+ # Get the global logger instance
195
+ #
196
+ # @return [Logger]
197
+ def self.global_logger
198
+ if @_global_logger.nil?
199
+ require "log4r"
200
+ @_global_logger = Log4r::Logger.new("vagrant::global")
201
+ end
202
+ @_global_logger
203
+ end
204
+
205
+ # Add a new block of default CLI options which
206
+ # should be automatically added to all commands
207
+ #
208
+ # @param [Proc] block Proc instance containing OptParser configuration
209
+ # @return [nil]
210
+ def self.add_default_cli_options(block)
211
+ if !block.is_a?(Proc)
212
+ raise TypeError,
213
+ "Expecting type `Proc` but received `#{block.class}`"
214
+ end
215
+ if block.arity != 1 && block.arity != -1
216
+ raise ArgumentError,
217
+ "Proc must accept OptionParser argument"
218
+ end
219
+ @_default_cli_options = [] if !@_default_cli_options
220
+ @_default_cli_options << block
221
+ nil
222
+ end
223
+
224
+ # Array of default CLI options to automatically
225
+ # add to commands.
226
+ #
227
+ # @return [Array<Proc>] Default optparse options
228
+ def self.default_cli_options
229
+ @_default_cli_options = [] if !@_default_cli_options
230
+ @_default_cli_options.dup
231
+ end
232
+
233
+ def self.detect_missing_tools
234
+ REQUIRED_EXTERNAL_TOOLS.find_all do |tool|
235
+ !Vagrant::Util::Which.which(tool)
236
+ end
237
+ end
238
+ end
data/lib/vagrant/ui.rb ADDED
@@ -0,0 +1,449 @@
1
+ # Copyright (c) HashiCorp, Inc.
2
+ # SPDX-License-Identifier: BUSL-1.1
3
+
4
+ require "delegate"
5
+ require "io/console"
6
+ require "thread"
7
+ require "log4r"
8
+ require "vagrant/util/platform"
9
+ require "vagrant/util/safe_puts"
10
+
11
+ module Vagrant
12
+ module UI
13
+ # Vagrant UIs handle communication with the outside world (typically
14
+ # through a shell). They must respond to the following methods:
15
+ #
16
+ # * `info`
17
+ # * `warn`
18
+ # * `error`
19
+ # * `success`
20
+ class Interface
21
+ # Opts can be used to set some options. These options are implementation
22
+ # specific. See the implementation for more docs.
23
+ attr_accessor :opts
24
+
25
+ # @return [IO] UI input. Defaults to `$stdin`.
26
+ attr_accessor :stdin
27
+
28
+ # @return [IO] UI output. Defaults to `$stdout`.
29
+ attr_accessor :stdout
30
+
31
+ # @return [IO] UI error output. Defaults to `$stderr`.
32
+ attr_accessor :stderr
33
+
34
+ def initialize
35
+ @logger = Log4r::Logger.new("vagrant::ui::interface")
36
+ @opts = {}
37
+
38
+ @stdin = $stdin
39
+ @stdout = $stdout
40
+ @stderr = $stderr
41
+ end
42
+
43
+ def initialize_copy(original)
44
+ super
45
+ @opts = original.opts.dup
46
+ end
47
+
48
+ [:ask, :detail, :warn, :error, :info, :output, :success].each do |method|
49
+ define_method(method) do |message, **opts|
50
+ # Log normal console messages
51
+ begin
52
+ @logger.info { "#{method}: #{message}" }
53
+ rescue ThreadError
54
+ # We're being called in a trap-context. Wrap in a thread.
55
+ Thread.new do
56
+ @logger.info { "#{method}: #{message}" }
57
+ end.join(THREAD_MAX_JOIN_TIMEOUT)
58
+ end
59
+ end
60
+ end
61
+
62
+ [:clear_line, :report_progress].each do |method|
63
+ # By default do nothing, these aren't logged
64
+ define_method(method) { |*args| }
65
+ end
66
+
67
+ # @return [false]
68
+ def color?
69
+ return false
70
+ end
71
+
72
+ # For machine-readable output.
73
+ #
74
+ # @param [String] type The type of the data
75
+ # @param [Array] data The data associated with the type
76
+ def machine(type, *data)
77
+ @logger.info("Machine: #{type} #{data.inspect}")
78
+ end
79
+
80
+ # Yields self (UI)
81
+ # Provides a way for selectively displaying or not displaying
82
+ # updating content like download progress.
83
+ def rewriting
84
+ yield self
85
+ end
86
+
87
+ def to_proto
88
+ raise NotImplementedError,
89
+ "Vagrant::UI::Interface#to_proto"
90
+ end
91
+ end
92
+
93
+ # This is a UI implementation that does nothing.
94
+ class Silent < Interface
95
+ def ask(*args, **opts)
96
+ super
97
+
98
+ # Silent can't do this, obviously.
99
+ raise Errors::UIExpectsTTY
100
+ end
101
+ end
102
+
103
+ class MachineReadable < Interface
104
+ include Util::SafePuts
105
+
106
+ def initialize
107
+ super
108
+
109
+ @lock = Mutex.new
110
+ end
111
+
112
+ def ask(*args, **opts)
113
+ super
114
+
115
+ # Machine-readable can't ask for input
116
+ raise Errors::UIExpectsTTY
117
+ end
118
+
119
+ [:detail, :warn, :error, :info, :output, :success].each do |method|
120
+ define_method(method) do |message, **opts|
121
+ machine("ui", method.to_s, message, **opts)
122
+ end
123
+ end
124
+
125
+ def machine(type, *data)
126
+ opts = {}
127
+ opts = data.pop if data.last.kind_of?(Hash)
128
+
129
+ target = opts[:target] || ""
130
+
131
+ # Prepare the data by replacing characters that aren't outputted
132
+ data.each_index do |i|
133
+ data[i] = data[i].to_s.dup
134
+ data[i].gsub!(",", "%!(VAGRANT_COMMA)")
135
+ data[i].gsub!("\n", "\\n")
136
+ data[i].gsub!("\r", "\\r")
137
+ end
138
+
139
+ # Avoid locks in a trap context introduced from Ruby 2.0
140
+ Thread.new do
141
+ @lock.synchronize do
142
+ safe_puts("#{Time.now.utc.to_i},#{target},#{type},#{data.join(",")}")
143
+ end
144
+ end.join(THREAD_MAX_JOIN_TIMEOUT)
145
+ end
146
+ end
147
+
148
+ # This is a UI implementation that outputs the text as is. It
149
+ # doesn't add any color.
150
+ class Basic < Interface
151
+ include Util::SafePuts
152
+
153
+ def initialize
154
+ super
155
+
156
+ @lock = Mutex.new
157
+ end
158
+
159
+ # Use some light meta-programming to create the various methods to
160
+ # output text to the UI. These all delegate the real functionality
161
+ # to `say`.
162
+ [:detail, :info, :warn, :error, :output, :success].each do |method|
163
+ class_eval <<-CODE
164
+ def #{method}(message, **opts)
165
+ super(message)
166
+ say(#{method.inspect}, message, **opts)
167
+ end
168
+ CODE
169
+ end
170
+
171
+ def ask(message, **opts)
172
+ super(message)
173
+
174
+ # We can't ask questions when the output isn't a TTY.
175
+ raise Errors::UIExpectsTTY if !@stdin.tty? && !Vagrant::Util::Platform.windows?
176
+
177
+ # Setup the options so that the new line is suppressed
178
+ opts ||= {}
179
+ opts[:echo] = true if !opts.key?(:echo)
180
+ opts[:new_line] = false if !opts.key?(:new_line)
181
+ opts[:prefix] = false if !opts.key?(:prefix)
182
+
183
+ # Output the data
184
+ say(:info, message, opts)
185
+
186
+ input = nil
187
+ if opts[:echo] || !@stdin.respond_to?(:noecho)
188
+ input = @stdin.gets
189
+ else
190
+ begin
191
+ input = @stdin.noecho(&:gets)
192
+
193
+ # Output a newline because without echo, the newline isn't
194
+ # echoed either.
195
+ say(:info, "\n", opts)
196
+ rescue Errno::EBADF
197
+ # This means that stdin doesn't support echoless input.
198
+ say(:info, "\n#{I18n.t("vagrant.stdin_cant_hide_input")}\n ", opts)
199
+
200
+ # Ask again, with echo enabled
201
+ input = ask(message, **opts.merge(echo: true))
202
+ end
203
+ end
204
+
205
+ # Get the results and chomp off the newline. We do a logical OR
206
+ # here because `gets` can return a nil, for example in the case
207
+ # that ctrl-D is pressed on the input.
208
+ (input || "").chomp
209
+ end
210
+
211
+ # This is used to output progress reports to the UI.
212
+ # Send this method progress/total and it will output it
213
+ # to the UI. Send `clear_line` to clear the line to show
214
+ # a continuous progress meter.
215
+ def report_progress(progress, total, show_parts=true)
216
+ if total && total > 0
217
+ percent = (progress.to_f / total.to_f) * 100
218
+ line = "Progress: #{percent.to_i}%"
219
+ line << " (#{progress} / #{total})" if show_parts
220
+ else
221
+ line = "Progress: #{progress}"
222
+ end
223
+
224
+ info(line, new_line: false)
225
+ end
226
+
227
+ def clear_line
228
+ # See: https://en.wikipedia.org/wiki/ANSI_escape_code
229
+ reset = "\r\033[K"
230
+
231
+ info(reset, new_line: false)
232
+ end
233
+
234
+ # This method handles actually outputting a message of a given type
235
+ # to the console.
236
+ def say(type, message, opts={})
237
+ defaults = { new_line: true, prefix: true }
238
+ opts = defaults.merge(@opts).merge(opts)
239
+
240
+ # Don't output if we're hiding details
241
+ return if type == :detail && opts[:hide_detail]
242
+
243
+ # Determine whether we're expecting to output our
244
+ # own new line or not.
245
+ printer = opts[:new_line] ? :puts : :print
246
+
247
+ # Determine the proper IO channel to send this message
248
+ # to based on the type of the message
249
+ channel = type == :error || opts[:channel] == :error ? @stderr : @stdout
250
+
251
+ # Output! We wrap this in a lock so that it safely outputs only
252
+ # one line at a time. We wrap this in a thread because as of Ruby 2.0
253
+ # we can't acquire locks in a trap context (ctrl-c), so we have to
254
+ # do this.
255
+ Thread.new do
256
+ @lock.synchronize do
257
+ safe_puts(format_message(type, message, **opts),
258
+ io: channel, printer: printer)
259
+ end
260
+ end.join(THREAD_MAX_JOIN_TIMEOUT)
261
+ end
262
+
263
+ def format_message(type, message, **opts)
264
+ Util::CredentialScrubber.desensitize(message)
265
+ end
266
+ end
267
+
268
+ class NonInteractive < Basic
269
+ def initialize
270
+ super
271
+ end
272
+
273
+ def rewriting
274
+ # no-op
275
+ end
276
+
277
+ def report_progress(progress, total, show_parts=true)
278
+ # no-op
279
+ end
280
+
281
+ def clear_line
282
+ @logger.warn("Using `clear line` in a non interactive ui")
283
+ say(:info, "\n", opts)
284
+ end
285
+
286
+ def ask(*args, **opts)
287
+ # Non interactive can't ask for input
288
+ raise Errors::UIExpectsTTY
289
+ end
290
+ end
291
+
292
+ # Prefixed wraps an existing UI and adds a prefix to it.
293
+ class Prefixed < Interface
294
+ # The prefix for `output` messages.
295
+ OUTPUT_PREFIX = "==> "
296
+
297
+ def initialize(ui, prefix)
298
+ super()
299
+
300
+ @prefix = prefix
301
+ @ui = ui
302
+ end
303
+
304
+ def to_proto
305
+ @ui.to_proto
306
+ end
307
+
308
+ def client
309
+ @ui.client
310
+ end
311
+
312
+ def initialize_copy(original)
313
+ super
314
+ @ui = original.instance_variable_get(:@ui).dup
315
+ end
316
+
317
+ # Use some light meta-programming to create the various methods to
318
+ # output text to the UI. These all delegate the real functionality
319
+ # to `say`.
320
+ [:ask, :detail, :info, :warn, :error, :output, :success].each do |method|
321
+ class_eval <<-CODE
322
+ def #{method}(message, **opts)
323
+ super(message)
324
+ if !@ui.opts.key?(:bold) && !opts.key?(:bold)
325
+ opts[:bold] = #{method.inspect} != :detail && \
326
+ #{method.inspect} != :ask
327
+ end
328
+ if !opts.key?(:target)
329
+ opts[:target] = @prefix
330
+ end
331
+ @ui.#{method}(format_message(#{method.inspect}, message, **opts), **opts)
332
+ end
333
+ CODE
334
+ end
335
+
336
+ [:clear_line, :report_progress].each do |method|
337
+ # By default do nothing, these aren't formatted
338
+ define_method(method) do |*args|
339
+ @ui.send(method, *args)
340
+ end
341
+ end
342
+
343
+ # For machine-readable output, set the prefix in the
344
+ # options hash and continue it on.
345
+ def machine(type, *data)
346
+ opts = {}
347
+ opts = data.pop if data.last.is_a?(Hash)
348
+ opts[:target] = @prefix
349
+ data << opts
350
+ @ui.machine(type, *data)
351
+ end
352
+
353
+ # Return the parent's opts.
354
+ #
355
+ # @return [Hash]
356
+ def opts
357
+ @ui.opts
358
+ end
359
+
360
+ def format_message(type, message, **opts)
361
+ opts = self.opts.merge(opts)
362
+
363
+ prefix = ""
364
+ if !opts.key?(:prefix) || opts[:prefix]
365
+ prefix = OUTPUT_PREFIX
366
+ prefix = " " * OUTPUT_PREFIX.length if \
367
+ type == :detail || type == :ask || opts[:prefix_spaces]
368
+ end
369
+
370
+ message = Util::CredentialScrubber.desensitize(message)
371
+
372
+ # Fast-path if there is no prefix
373
+ return message if prefix.empty?
374
+
375
+ target = @prefix
376
+ target = opts[:target] if opts.key?(:target)
377
+ target = "#{target}:" if target != ""
378
+
379
+ lines = [message]
380
+ if message != ""
381
+ lines = [].tap do |l|
382
+ message.scan(/(.*?)(\n|$)/).each do |m|
383
+ l << m.first if m.first != "" || (m.first == "" && m.last == "\n")
384
+ end
385
+ end
386
+ lines << "" if message.end_with?("\n")
387
+ end
388
+
389
+ # Otherwise, make sure to prefix every line properly
390
+ lines.map do |line|
391
+ "#{prefix}#{target} #{line}"
392
+ end.join("\n")
393
+ end
394
+
395
+ def rewriting
396
+ @ui.rewriting do |ui|
397
+ yield ui
398
+ end
399
+ end
400
+
401
+ end
402
+
403
+ # This is a UI implementation that outputs color for various types
404
+ # of messages. This should only be used with a TTY that supports color,
405
+ # but is up to the user of the class to verify this is the case.
406
+ class Colored < Basic
407
+ # Terminal colors
408
+ COLORS = {
409
+ red: 31,
410
+ green: 32,
411
+ yellow: 33,
412
+ blue: 34,
413
+ magenta: 35,
414
+ cyan: 36,
415
+ white: 37,
416
+ }
417
+
418
+ # @return [true]
419
+ def color?
420
+ return true
421
+ end
422
+
423
+ # This is called by `say` to format the message for output.
424
+ def format_message(type, message, **opts)
425
+ # Get the format of the message before adding color.
426
+ message = super
427
+
428
+ opts = @opts.merge(opts)
429
+
430
+ # Special case some colors for certain message types
431
+ opts[:color] = :red if type == :error
432
+ opts[:color] = :green if type == :success
433
+ opts[:color] = :yellow if type == :warn
434
+
435
+ # If it is a detail, it is not bold. Every other message type
436
+ # is bolded.
437
+ bold = !!opts[:bold]
438
+ colorseq = "#{bold ? 1 : 0 }"
439
+ if opts[:color] && opts[:color] != :default
440
+ color = COLORS[opts[:color]]
441
+ colorseq += ";#{color}"
442
+ end
443
+
444
+ # Color the message and make sure to reset the color at the end
445
+ "\033[#{colorseq}m#{message}\033[0m"
446
+ end
447
+ end
448
+ end
449
+ end
@@ -0,0 +1,37 @@
1
+ # Copyright (c) HashiCorp, Inc.
2
+ # SPDX-License-Identifier: BUSL-1.1
3
+
4
+ module Vagrant
5
+ module Util
6
+ module ANSIEscapeCodeRemover
7
+ # Removes ANSI escape code sequences from the text and returns
8
+ # it.
9
+ #
10
+ # This removes all the ANSI escape codes listed here along with
11
+ # the escape codes for VT100 terminals:
12
+ #
13
+ # http://ascii-table.com/ansi-escape-sequences.php
14
+ def remove_ansi_escape_codes(text)
15
+ # An array of regular expressions which match various kinds
16
+ # of escape sequences. I can't think of a better single regular
17
+ # expression or any faster way to do this.
18
+ matchers = [/\e\[\d*[ABCD]/, # Matches things like \e[4D
19
+ /\e\[(\d*;)?\d*[HF]/, # Matches \e[1;2H or \e[H
20
+ /\e\[(s|u|2J|K)/, # Matches \e[s, \e[2J, etc.
21
+ /\e\[=\d*[hl]/, # Matches \e[=24h
22
+ /\e\[\?[1-9][hl]/, # Matches \e[?2h
23
+ /\e\[20[hl]/, # Matches \e[20l]
24
+ /\e[DME78H]/, # Matches \eD, \eH, etc.
25
+ /\e\[[0-3]?[JK]/, # Matches \e[0J, \e[K, etc.
26
+ ]
27
+
28
+ # Take each matcher and replace it with emptiness.
29
+ matchers.each do |matcher|
30
+ text.gsub!(matcher, "")
31
+ end
32
+
33
+ text
34
+ end
35
+ end
36
+ end
37
+ end