tnargav 1.2.2

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 (452) hide show
  1. data/.gitignore +31 -0
  2. data/.gitsetup.yml +5 -0
  3. data/.travis.yml +7 -0
  4. data/.yardopts +1 -0
  5. data/CHANGELOG.md +1067 -0
  6. data/Gemfile +3 -0
  7. data/LICENSE +21 -0
  8. data/README.md +89 -0
  9. data/Rakefile +18 -0
  10. data/bin/vagrant +106 -0
  11. data/config/default.rb +36 -0
  12. data/contrib/README.md +12 -0
  13. data/contrib/bash/completion.sh +3 -0
  14. data/contrib/emacs/vagrant.el +8 -0
  15. data/contrib/vim/vagrantfile.vim +9 -0
  16. data/keys/README.md +17 -0
  17. data/keys/vagrant +27 -0
  18. data/keys/vagrant.pub +1 -0
  19. data/lib/vagrant/action/builder.rb +174 -0
  20. data/lib/vagrant/action/builtin/box_add.rb +81 -0
  21. data/lib/vagrant/action/builtin/call.rb +67 -0
  22. data/lib/vagrant/action/builtin/config_validate.rb +30 -0
  23. data/lib/vagrant/action/builtin/confirm.rb +38 -0
  24. data/lib/vagrant/action/builtin/destroy_confirm.rb +21 -0
  25. data/lib/vagrant/action/builtin/env_set.rb +24 -0
  26. data/lib/vagrant/action/builtin/graceful_halt.rb +73 -0
  27. data/lib/vagrant/action/builtin/handle_box_url.rb +77 -0
  28. data/lib/vagrant/action/builtin/handle_forwarded_port_collisions.rb +134 -0
  29. data/lib/vagrant/action/builtin/lock.rb +57 -0
  30. data/lib/vagrant/action/builtin/nfs.rb +118 -0
  31. data/lib/vagrant/action/builtin/provision.rb +70 -0
  32. data/lib/vagrant/action/builtin/set_hostname.rb +27 -0
  33. data/lib/vagrant/action/builtin/ssh_exec.rb +42 -0
  34. data/lib/vagrant/action/builtin/ssh_run.rb +43 -0
  35. data/lib/vagrant/action/general/package.rb +103 -0
  36. data/lib/vagrant/action/hook.rb +107 -0
  37. data/lib/vagrant/action/runner.rb +69 -0
  38. data/lib/vagrant/action/warden.rb +103 -0
  39. data/lib/vagrant/action.rb +43 -0
  40. data/lib/vagrant/batch_action.rb +113 -0
  41. data/lib/vagrant/box.rb +97 -0
  42. data/lib/vagrant/box_collection.rb +375 -0
  43. data/lib/vagrant/cli.rb +82 -0
  44. data/lib/vagrant/config/loader.rb +222 -0
  45. data/lib/vagrant/config/v1/dummy_config.rb +13 -0
  46. data/lib/vagrant/config/v1/loader.rb +105 -0
  47. data/lib/vagrant/config/v1/root.rb +60 -0
  48. data/lib/vagrant/config/v1.rb +9 -0
  49. data/lib/vagrant/config/v2/dummy_config.rb +13 -0
  50. data/lib/vagrant/config/v2/loader.rb +141 -0
  51. data/lib/vagrant/config/v2/root.rb +105 -0
  52. data/lib/vagrant/config/v2/util.rb +21 -0
  53. data/lib/vagrant/config/v2.rb +9 -0
  54. data/lib/vagrant/config/version_base.rb +80 -0
  55. data/lib/vagrant/config.rb +61 -0
  56. data/lib/vagrant/environment.rb +843 -0
  57. data/lib/vagrant/errors.rb +570 -0
  58. data/lib/vagrant/guest.rb +163 -0
  59. data/lib/vagrant/hosts.rb +28 -0
  60. data/lib/vagrant/machine.rb +325 -0
  61. data/lib/vagrant/machine_state.rb +45 -0
  62. data/lib/vagrant/plugin/v1/command.rb +169 -0
  63. data/lib/vagrant/plugin/v1/communicator.rb +98 -0
  64. data/lib/vagrant/plugin/v1/config.rb +112 -0
  65. data/lib/vagrant/plugin/v1/errors.rb +15 -0
  66. data/lib/vagrant/plugin/v1/guest.rb +92 -0
  67. data/lib/vagrant/plugin/v1/host.rb +66 -0
  68. data/lib/vagrant/plugin/v1/manager.rb +131 -0
  69. data/lib/vagrant/plugin/v1/plugin.rb +229 -0
  70. data/lib/vagrant/plugin/v1/provider.rb +68 -0
  71. data/lib/vagrant/plugin/v1/provisioner.rb +50 -0
  72. data/lib/vagrant/plugin/v1.rb +19 -0
  73. data/lib/vagrant/plugin/v2/command.rb +234 -0
  74. data/lib/vagrant/plugin/v2/communicator.rb +98 -0
  75. data/lib/vagrant/plugin/v2/components.rb +47 -0
  76. data/lib/vagrant/plugin/v2/config.rb +136 -0
  77. data/lib/vagrant/plugin/v2/errors.rb +15 -0
  78. data/lib/vagrant/plugin/v2/guest.rb +78 -0
  79. data/lib/vagrant/plugin/v2/host.rb +66 -0
  80. data/lib/vagrant/plugin/v2/manager.rb +173 -0
  81. data/lib/vagrant/plugin/v2/plugin.rb +226 -0
  82. data/lib/vagrant/plugin/v2/provider.rb +69 -0
  83. data/lib/vagrant/plugin/v2/provisioner.rb +47 -0
  84. data/lib/vagrant/plugin/v2.rb +22 -0
  85. data/lib/vagrant/plugin.rb +6 -0
  86. data/lib/vagrant/registry.rb +78 -0
  87. data/lib/vagrant/ui.rb +215 -0
  88. data/lib/vagrant/util/ansi_escape_code_remover.rb +34 -0
  89. data/lib/vagrant/util/busy.rb +59 -0
  90. data/lib/vagrant/util/counter.rb +24 -0
  91. data/lib/vagrant/util/downloader.rb +146 -0
  92. data/lib/vagrant/util/file_checksum.rb +38 -0
  93. data/lib/vagrant/util/file_mode.rb +12 -0
  94. data/lib/vagrant/util/hash_with_indifferent_access.rb +63 -0
  95. data/lib/vagrant/util/is_port_open.rb +38 -0
  96. data/lib/vagrant/util/line_ending_helpers.rb +14 -0
  97. data/lib/vagrant/util/network_ip.rb +28 -0
  98. data/lib/vagrant/util/platform.rb +58 -0
  99. data/lib/vagrant/util/retryable.rb +31 -0
  100. data/lib/vagrant/util/safe_chdir.rb +33 -0
  101. data/lib/vagrant/util/safe_exec.rb +36 -0
  102. data/lib/vagrant/util/safe_puts.rb +31 -0
  103. data/lib/vagrant/util/scoped_hash_override.rb +45 -0
  104. data/lib/vagrant/util/ssh.rb +150 -0
  105. data/lib/vagrant/util/stacked_proc_runner.rb +35 -0
  106. data/lib/vagrant/util/string_block_editor.rb +77 -0
  107. data/lib/vagrant/util/subprocess.rb +273 -0
  108. data/lib/vagrant/util/template_renderer.rb +83 -0
  109. data/lib/vagrant/util/which.rb +43 -0
  110. data/lib/vagrant/util.rb +12 -0
  111. data/lib/vagrant/version.rb +6 -0
  112. data/lib/vagrant.rb +258 -0
  113. data/plugins/README.md +5 -0
  114. data/plugins/commands/box/command/add.rb +51 -0
  115. data/plugins/commands/box/command/list.rb +41 -0
  116. data/plugins/commands/box/command/remove.rb +37 -0
  117. data/plugins/commands/box/command/repackage.rb +43 -0
  118. data/plugins/commands/box/command/root.rb +75 -0
  119. data/plugins/commands/box/plugin.rb +15 -0
  120. data/plugins/commands/destroy/command.rb +31 -0
  121. data/plugins/commands/destroy/plugin.rb +18 -0
  122. data/plugins/commands/halt/command.rb +33 -0
  123. data/plugins/commands/halt/plugin.rb +18 -0
  124. data/plugins/commands/init/command.rb +40 -0
  125. data/plugins/commands/init/plugin.rb +18 -0
  126. data/plugins/commands/package/command.rb +83 -0
  127. data/plugins/commands/package/plugin.rb +18 -0
  128. data/plugins/commands/plugin/action/bundler_check.rb +25 -0
  129. data/plugins/commands/plugin/action/install_gem.rb +81 -0
  130. data/plugins/commands/plugin/action/license_plugin.rb +54 -0
  131. data/plugins/commands/plugin/action/list_plugins.rb +54 -0
  132. data/plugins/commands/plugin/action/prune_gems.rb +149 -0
  133. data/plugins/commands/plugin/action/uninstall_plugin.rb +23 -0
  134. data/plugins/commands/plugin/action.rb +52 -0
  135. data/plugins/commands/plugin/command/base.rb +22 -0
  136. data/plugins/commands/plugin/command/install.rb +58 -0
  137. data/plugins/commands/plugin/command/license.rb +31 -0
  138. data/plugins/commands/plugin/command/list.rb +28 -0
  139. data/plugins/commands/plugin/command/root.rb +75 -0
  140. data/plugins/commands/plugin/command/uninstall.rb +28 -0
  141. data/plugins/commands/plugin/gem_helper.rb +74 -0
  142. data/plugins/commands/plugin/plugin.rb +22 -0
  143. data/plugins/commands/plugin/state_file.rb +57 -0
  144. data/plugins/commands/provision/command.rb +34 -0
  145. data/plugins/commands/provision/plugin.rb +18 -0
  146. data/plugins/commands/reload/command.rb +37 -0
  147. data/plugins/commands/reload/plugin.rb +18 -0
  148. data/plugins/commands/resume/command.rb +25 -0
  149. data/plugins/commands/resume/plugin.rb +17 -0
  150. data/plugins/commands/ssh/command.rb +63 -0
  151. data/plugins/commands/ssh/plugin.rb +17 -0
  152. data/plugins/commands/ssh_config/command.rb +49 -0
  153. data/plugins/commands/ssh_config/plugin.rb +18 -0
  154. data/plugins/commands/status/command.rb +39 -0
  155. data/plugins/commands/status/plugin.rb +18 -0
  156. data/plugins/commands/suspend/command.rb +25 -0
  157. data/plugins/commands/suspend/plugin.rb +18 -0
  158. data/plugins/commands/up/command.rb +57 -0
  159. data/plugins/commands/up/plugin.rb +17 -0
  160. data/plugins/commands/up/start_mixins.rb +26 -0
  161. data/plugins/communicators/ssh/communicator.rb +342 -0
  162. data/plugins/communicators/ssh/plugin.rb +19 -0
  163. data/plugins/guests/arch/cap/change_host_name.rb +18 -0
  164. data/plugins/guests/arch/cap/configure_networks.rb +23 -0
  165. data/plugins/guests/arch/guest.rb +11 -0
  166. data/plugins/guests/arch/plugin.rb +25 -0
  167. data/plugins/guests/debian/cap/change_host_name.rb +18 -0
  168. data/plugins/guests/debian/cap/configure_networks.rb +61 -0
  169. data/plugins/guests/debian/guest.rb +9 -0
  170. data/plugins/guests/debian/plugin.rb +25 -0
  171. data/plugins/guests/fedora/cap/configure_networks.rb +59 -0
  172. data/plugins/guests/fedora/cap/network_scripts_dir.rb +15 -0
  173. data/plugins/guests/fedora/guest.rb +11 -0
  174. data/plugins/guests/fedora/plugin.rb +25 -0
  175. data/plugins/guests/freebsd/cap/change_host_name.rb +14 -0
  176. data/plugins/guests/freebsd/cap/configure_networks.rb +39 -0
  177. data/plugins/guests/freebsd/cap/halt.rb +16 -0
  178. data/plugins/guests/freebsd/cap/mount_nfs_folder.rb +14 -0
  179. data/plugins/guests/freebsd/guest.rb +14 -0
  180. data/plugins/guests/freebsd/plugin.rb +35 -0
  181. data/plugins/guests/gentoo/cap/change_host_name.rb +17 -0
  182. data/plugins/guests/gentoo/cap/configure_networks.rb +43 -0
  183. data/plugins/guests/gentoo/guest.rb +9 -0
  184. data/plugins/guests/gentoo/plugin.rb +25 -0
  185. data/plugins/guests/linux/cap/halt.rb +16 -0
  186. data/plugins/guests/linux/cap/mount_nfs.rb +30 -0
  187. data/plugins/guests/linux/cap/mount_virtualbox_shared_folder.rb +40 -0
  188. data/plugins/guests/linux/cap/read_ip_address.rb +17 -0
  189. data/plugins/guests/linux/cap/shell_expand_guest_path.rb +26 -0
  190. data/plugins/guests/linux/guest.rb +11 -0
  191. data/plugins/guests/linux/plugin.rb +40 -0
  192. data/plugins/guests/openbsd/cap/halt.rb +16 -0
  193. data/plugins/guests/openbsd/guest.rb +11 -0
  194. data/plugins/guests/openbsd/plugin.rb +20 -0
  195. data/plugins/guests/pld/cap/network_scripts_dir.rb +11 -0
  196. data/plugins/guests/pld/guest.rb +11 -0
  197. data/plugins/guests/pld/plugin.rb +20 -0
  198. data/plugins/guests/redhat/cap/change_host_name.rb +18 -0
  199. data/plugins/guests/redhat/cap/configure_networks.rb +60 -0
  200. data/plugins/guests/redhat/cap/network_scripts_dir.rb +11 -0
  201. data/plugins/guests/redhat/guest.rb +11 -0
  202. data/plugins/guests/redhat/plugin.rb +30 -0
  203. data/plugins/guests/solaris/cap/change_host_name.rb +17 -0
  204. data/plugins/guests/solaris/cap/configure_networks.rb +25 -0
  205. data/plugins/guests/solaris/cap/halt.rb +21 -0
  206. data/plugins/guests/solaris/cap/mount_virtualbox_shared_folder.rb +28 -0
  207. data/plugins/guests/solaris/config.rb +18 -0
  208. data/plugins/guests/solaris/guest.rb +14 -0
  209. data/plugins/guests/solaris/plugin.rb +40 -0
  210. data/plugins/guests/suse/cap/change_host_name.rb +18 -0
  211. data/plugins/guests/suse/cap/network_scripts_dir.rb +11 -0
  212. data/plugins/guests/suse/guest.rb +11 -0
  213. data/plugins/guests/suse/plugin.rb +25 -0
  214. data/plugins/guests/ubuntu/cap/change_host_name.rb +23 -0
  215. data/plugins/guests/ubuntu/guest.rb +32 -0
  216. data/plugins/guests/ubuntu/plugin.rb +20 -0
  217. data/plugins/hosts/arch/host.rb +68 -0
  218. data/plugins/hosts/arch/plugin.rb +15 -0
  219. data/plugins/hosts/bsd/host.rb +102 -0
  220. data/plugins/hosts/bsd/plugin.rb +15 -0
  221. data/plugins/hosts/fedora/host.rb +51 -0
  222. data/plugins/hosts/fedora/plugin.rb +15 -0
  223. data/plugins/hosts/freebsd/host.rb +43 -0
  224. data/plugins/hosts/freebsd/plugin.rb +15 -0
  225. data/plugins/hosts/gentoo/host.rb +24 -0
  226. data/plugins/hosts/gentoo/plugin.rb +15 -0
  227. data/plugins/hosts/linux/host.rb +95 -0
  228. data/plugins/hosts/linux/plugin.rb +15 -0
  229. data/plugins/hosts/opensuse/host.rb +34 -0
  230. data/plugins/hosts/opensuse/plugin.rb +15 -0
  231. data/plugins/hosts/windows/host.rb +17 -0
  232. data/plugins/hosts/windows/plugin.rb +15 -0
  233. data/plugins/kernel_v1/config/nfs.rb +20 -0
  234. data/plugins/kernel_v1/config/package.rb +17 -0
  235. data/plugins/kernel_v1/config/ssh.rb +46 -0
  236. data/plugins/kernel_v1/config/vagrant.rb +31 -0
  237. data/plugins/kernel_v1/config/vm.rb +184 -0
  238. data/plugins/kernel_v1/plugin.rb +44 -0
  239. data/plugins/kernel_v2/config/nfs.rb +14 -0
  240. data/plugins/kernel_v2/config/package.rb +13 -0
  241. data/plugins/kernel_v2/config/ssh.rb +76 -0
  242. data/plugins/kernel_v2/config/ssh_connect.rb +40 -0
  243. data/plugins/kernel_v2/config/vagrant.rb +13 -0
  244. data/plugins/kernel_v2/config/vm.rb +416 -0
  245. data/plugins/kernel_v2/config/vm_provisioner.rb +55 -0
  246. data/plugins/kernel_v2/config/vm_subvm.rb +30 -0
  247. data/plugins/kernel_v2/plugin.rb +44 -0
  248. data/plugins/providers/virtualbox/action/boot.rb +49 -0
  249. data/plugins/providers/virtualbox/action/check_accessible.rb +23 -0
  250. data/plugins/providers/virtualbox/action/check_created.rb +21 -0
  251. data/plugins/providers/virtualbox/action/check_guest_additions.rb +45 -0
  252. data/plugins/providers/virtualbox/action/check_running.rb +21 -0
  253. data/plugins/providers/virtualbox/action/check_virtualbox.rb +22 -0
  254. data/plugins/providers/virtualbox/action/clean_machine_folder.rb +43 -0
  255. data/plugins/providers/virtualbox/action/clear_forwarded_ports.rb +18 -0
  256. data/plugins/providers/virtualbox/action/clear_network_interfaces.rb +31 -0
  257. data/plugins/providers/virtualbox/action/clear_shared_folders.rb +17 -0
  258. data/plugins/providers/virtualbox/action/created.rb +20 -0
  259. data/plugins/providers/virtualbox/action/customize.rb +36 -0
  260. data/plugins/providers/virtualbox/action/destroy.rb +19 -0
  261. data/plugins/providers/virtualbox/action/destroy_unused_network_interfaces.rb +16 -0
  262. data/plugins/providers/virtualbox/action/discard_state.rb +20 -0
  263. data/plugins/providers/virtualbox/action/export.rb +57 -0
  264. data/plugins/providers/virtualbox/action/forced_halt.rb +25 -0
  265. data/plugins/providers/virtualbox/action/forward_ports.rb +87 -0
  266. data/plugins/providers/virtualbox/action/import.rb +51 -0
  267. data/plugins/providers/virtualbox/action/is_paused.rb +20 -0
  268. data/plugins/providers/virtualbox/action/is_running.rb +20 -0
  269. data/plugins/providers/virtualbox/action/is_saved.rb +20 -0
  270. data/plugins/providers/virtualbox/action/match_mac_address.rb +21 -0
  271. data/plugins/providers/virtualbox/action/message_already_running.rb +16 -0
  272. data/plugins/providers/virtualbox/action/message_not_created.rb +16 -0
  273. data/plugins/providers/virtualbox/action/message_not_running.rb +16 -0
  274. data/plugins/providers/virtualbox/action/message_will_not_destroy.rb +17 -0
  275. data/plugins/providers/virtualbox/action/network.rb +410 -0
  276. data/plugins/providers/virtualbox/action/package.rb +20 -0
  277. data/plugins/providers/virtualbox/action/package_vagrantfile.rb +33 -0
  278. data/plugins/providers/virtualbox/action/prepare_forwarded_port_collision_params.rb +35 -0
  279. data/plugins/providers/virtualbox/action/prepare_nfs_settings.rb +64 -0
  280. data/plugins/providers/virtualbox/action/prune_nfs_exports.rb +20 -0
  281. data/plugins/providers/virtualbox/action/resume.rb +25 -0
  282. data/plugins/providers/virtualbox/action/sane_defaults.rb +91 -0
  283. data/plugins/providers/virtualbox/action/set_name.rb +40 -0
  284. data/plugins/providers/virtualbox/action/setup_package_files.rb +51 -0
  285. data/plugins/providers/virtualbox/action/share_folders.rb +128 -0
  286. data/plugins/providers/virtualbox/action/suspend.rb +20 -0
  287. data/plugins/providers/virtualbox/action.rb +311 -0
  288. data/plugins/providers/virtualbox/config.rb +86 -0
  289. data/plugins/providers/virtualbox/driver/base.rb +360 -0
  290. data/plugins/providers/virtualbox/driver/meta.rb +142 -0
  291. data/plugins/providers/virtualbox/driver/version_4_0.rb +485 -0
  292. data/plugins/providers/virtualbox/driver/version_4_1.rb +485 -0
  293. data/plugins/providers/virtualbox/driver/version_4_2.rb +482 -0
  294. data/plugins/providers/virtualbox/model/forwarded_port.rb +58 -0
  295. data/plugins/providers/virtualbox/plugin.rb +42 -0
  296. data/plugins/providers/virtualbox/provider.rb +92 -0
  297. data/plugins/providers/virtualbox/util/compile_forwarded_ports.rb +31 -0
  298. data/plugins/provisioners/ansible/config.rb +72 -0
  299. data/plugins/provisioners/ansible/plugin.rb +23 -0
  300. data/plugins/provisioners/ansible/provisioner.rb +45 -0
  301. data/plugins/provisioners/cfengine/cap/debian/cfengine_install.rb +19 -0
  302. data/plugins/provisioners/cfengine/cap/linux/cfengine_installed.rb +14 -0
  303. data/plugins/provisioners/cfengine/cap/linux/cfengine_needs_bootstrap.rb +34 -0
  304. data/plugins/provisioners/cfengine/cap/redhat/cfengine_install.rb +24 -0
  305. data/plugins/provisioners/cfengine/config.rb +120 -0
  306. data/plugins/provisioners/cfengine/plugin.rb +42 -0
  307. data/plugins/provisioners/cfengine/provisioner.rb +136 -0
  308. data/plugins/provisioners/chef/config/base.rb +85 -0
  309. data/plugins/provisioners/chef/config/chef_client.rb +57 -0
  310. data/plugins/provisioners/chef/config/chef_solo.rb +87 -0
  311. data/plugins/provisioners/chef/plugin.rb +33 -0
  312. data/plugins/provisioners/chef/provisioner/base.rb +93 -0
  313. data/plugins/provisioners/chef/provisioner/chef_client.rb +107 -0
  314. data/plugins/provisioners/chef/provisioner/chef_solo.rb +192 -0
  315. data/plugins/provisioners/puppet/config/puppet.rb +70 -0
  316. data/plugins/provisioners/puppet/config/puppet_server.rb +16 -0
  317. data/plugins/provisioners/puppet/plugin.rb +33 -0
  318. data/plugins/provisioners/puppet/provisioner/puppet.rb +117 -0
  319. data/plugins/provisioners/puppet/provisioner/puppet_server.rb +67 -0
  320. data/plugins/provisioners/shell/config.rb +56 -0
  321. data/plugins/provisioners/shell/plugin.rb +23 -0
  322. data/plugins/provisioners/shell/provisioner.rb +86 -0
  323. data/tasks/acceptance.rake +113 -0
  324. data/tasks/bundler.rake +3 -0
  325. data/tasks/test.rake +20 -0
  326. data/templates/commands/init/Vagrantfile.erb +111 -0
  327. data/templates/commands/ssh_config/config.erb +16 -0
  328. data/templates/config/messages.erb +14 -0
  329. data/templates/config/validation_failed.erb +7 -0
  330. data/templates/guests/arch/network_dhcp.erb +4 -0
  331. data/templates/guests/arch/network_static.erb +6 -0
  332. data/templates/guests/debian/network_dhcp.erb +11 -0
  333. data/templates/guests/debian/network_static.erb +7 -0
  334. data/templates/guests/fedora/network_dhcp.erb +6 -0
  335. data/templates/guests/fedora/network_static.erb +13 -0
  336. data/templates/guests/freebsd/network_dhcp.erb +3 -0
  337. data/templates/guests/freebsd/network_static.erb +3 -0
  338. data/templates/guests/gentoo/network_dhcp.erb +4 -0
  339. data/templates/guests/gentoo/network_static.erb +4 -0
  340. data/templates/guests/redhat/network_dhcp.erb +6 -0
  341. data/templates/guests/redhat/network_static.erb +8 -0
  342. data/templates/locales/en.yml +1126 -0
  343. data/templates/nfs/exports.erb +5 -0
  344. data/templates/nfs/exports_freebsd.erb +5 -0
  345. data/templates/nfs/exports_linux.erb +5 -0
  346. data/templates/package_Vagrantfile.erb +11 -0
  347. data/templates/provisioners/chef_client/client.erb +32 -0
  348. data/templates/provisioners/chef_solo/solo.erb +25 -0
  349. data/templates/rgloader.rb +9 -0
  350. data/test/acceptance/base.rb +48 -0
  351. data/test/acceptance/box_test.rb +99 -0
  352. data/test/acceptance/destroy_test.rb +37 -0
  353. data/test/acceptance/halt_test.rb +72 -0
  354. data/test/acceptance/init_test.rb +33 -0
  355. data/test/acceptance/networking/host_only_test.rb +37 -0
  356. data/test/acceptance/networking/port_forward_test.rb +125 -0
  357. data/test/acceptance/package_test.rb +46 -0
  358. data/test/acceptance/provisioning/basic_test.rb +61 -0
  359. data/test/acceptance/provisioning/chef_solo_test.rb +37 -0
  360. data/test/acceptance/provisioning/shell_test.rb +53 -0
  361. data/test/acceptance/resume_test.rb +17 -0
  362. data/test/acceptance/shared_folders_test.rb +84 -0
  363. data/test/acceptance/skeletons/chef_solo_basic/README.md +3 -0
  364. data/test/acceptance/skeletons/chef_solo_basic/cookbooks/basic/recipes/default.rb +5 -0
  365. data/test/acceptance/skeletons/chef_solo_json/README.md +3 -0
  366. data/test/acceptance/skeletons/chef_solo_json/cookbooks/basic/recipes/default.rb +6 -0
  367. data/test/acceptance/skeletons/provisioner_multi/README.md +3 -0
  368. data/test/acceptance/skeletons/provisioner_multi/cookbooks/basic/recipes/default.rb +5 -0
  369. data/test/acceptance/ssh_test.rb +46 -0
  370. data/test/acceptance/support/config.rb +42 -0
  371. data/test/acceptance/support/isolated_environment.rb +118 -0
  372. data/test/acceptance/support/matchers/have_color.rb +9 -0
  373. data/test/acceptance/support/matchers/match_output.rb +14 -0
  374. data/test/acceptance/support/matchers/succeed.rb +14 -0
  375. data/test/acceptance/support/network_tests.rb +29 -0
  376. data/test/acceptance/support/output.rb +95 -0
  377. data/test/acceptance/support/shared/base_context.rb +72 -0
  378. data/test/acceptance/support/shared/command_examples.rb +33 -0
  379. data/test/acceptance/support/virtualbox.rb +36 -0
  380. data/test/acceptance/suspend_test.rb +56 -0
  381. data/test/acceptance/up_basic_test.rb +33 -0
  382. data/test/acceptance/up_with_box_url.rb +40 -0
  383. data/test/acceptance/vagrant_test.rb +47 -0
  384. data/test/acceptance/version_test.rb +15 -0
  385. data/test/config/acceptance_boxes.yml +7 -0
  386. data/test/support/isolated_environment.rb +46 -0
  387. data/test/support/tempdir.rb +43 -0
  388. data/test/unit/base.rb +27 -0
  389. data/test/unit/support/dummy_provider.rb +16 -0
  390. data/test/unit/support/isolated_environment.rb +179 -0
  391. data/test/unit/support/shared/base_context.rb +104 -0
  392. data/test/unit/vagrant/action/builder_test.rb +242 -0
  393. data/test/unit/vagrant/action/builtin/call_test.rb +145 -0
  394. data/test/unit/vagrant/action/builtin/confirm_test.rb +36 -0
  395. data/test/unit/vagrant/action/builtin/env_set_test.rb +20 -0
  396. data/test/unit/vagrant/action/builtin/graceful_halt_test.rb +61 -0
  397. data/test/unit/vagrant/action/builtin/lock_test.rb +98 -0
  398. data/test/unit/vagrant/action/builtin/ssh_exec_test.rb +57 -0
  399. data/test/unit/vagrant/action/hook_test.rb +120 -0
  400. data/test/unit/vagrant/action/runner_test.rb +71 -0
  401. data/test/unit/vagrant/action/warden_test.rb +92 -0
  402. data/test/unit/vagrant/batch_action_test.rb +36 -0
  403. data/test/unit/vagrant/box_collection_test.rb +237 -0
  404. data/test/unit/vagrant/box_test.rb +122 -0
  405. data/test/unit/vagrant/cli_test.rb +27 -0
  406. data/test/unit/vagrant/config/loader_test.rb +184 -0
  407. data/test/unit/vagrant/config/v1/dummy_config_test.rb +24 -0
  408. data/test/unit/vagrant/config/v1/loader_test.rb +145 -0
  409. data/test/unit/vagrant/config/v1/root_test.rb +40 -0
  410. data/test/unit/vagrant/config/v2/dummy_config_test.rb +24 -0
  411. data/test/unit/vagrant/config/v2/loader_test.rb +151 -0
  412. data/test/unit/vagrant/config/v2/root_test.rb +97 -0
  413. data/test/unit/vagrant/config/v2/util_test.rb +21 -0
  414. data/test/unit/vagrant/config_test.rb +66 -0
  415. data/test/unit/vagrant/environment_test.rb +721 -0
  416. data/test/unit/vagrant/guest_test.rb +166 -0
  417. data/test/unit/vagrant/hosts_test.rb +37 -0
  418. data/test/unit/vagrant/machine_state_test.rb +26 -0
  419. data/test/unit/vagrant/machine_test.rb +384 -0
  420. data/test/unit/vagrant/plugin/v1/command_test.rb +143 -0
  421. data/test/unit/vagrant/plugin/v1/communicator_test.rb +9 -0
  422. data/test/unit/vagrant/plugin/v1/config_test.rb +50 -0
  423. data/test/unit/vagrant/plugin/v1/host_test.rb +5 -0
  424. data/test/unit/vagrant/plugin/v1/manager_test.rb +114 -0
  425. data/test/unit/vagrant/plugin/v1/plugin_test.rb +267 -0
  426. data/test/unit/vagrant/plugin/v1/provider_test.rb +18 -0
  427. data/test/unit/vagrant/plugin/v2/command_test.rb +238 -0
  428. data/test/unit/vagrant/plugin/v2/communicator_test.rb +9 -0
  429. data/test/unit/vagrant/plugin/v2/components_test.rb +17 -0
  430. data/test/unit/vagrant/plugin/v2/config_test.rb +60 -0
  431. data/test/unit/vagrant/plugin/v2/host_test.rb +5 -0
  432. data/test/unit/vagrant/plugin/v2/manager_test.rb +174 -0
  433. data/test/unit/vagrant/plugin/v2/plugin_test.rb +305 -0
  434. data/test/unit/vagrant/plugin/v2/provider_test.rb +18 -0
  435. data/test/unit/vagrant/registry_test.rb +128 -0
  436. data/test/unit/vagrant/util/ansi_escape_code_remover_test.rb +16 -0
  437. data/test/unit/vagrant/util/downloader_test.rb +57 -0
  438. data/test/unit/vagrant/util/file_checksum_test.rb +23 -0
  439. data/test/unit/vagrant/util/hash_with_indifferent_access_test.rb +38 -0
  440. data/test/unit/vagrant/util/is_port_open_test.rb +53 -0
  441. data/test/unit/vagrant/util/line_endings_helper_test.rb +16 -0
  442. data/test/unit/vagrant/util/network_ip_test.rb +17 -0
  443. data/test/unit/vagrant/util/retryable_test.rb +106 -0
  444. data/test/unit/vagrant/util/safe_chdir_test.rb +43 -0
  445. data/test/unit/vagrant/util/scoped_hash_override_test.rb +48 -0
  446. data/test/unit/vagrant/util/ssh_test.rb +30 -0
  447. data/test/unit/vagrant/util/string_block_editor_test.rb +106 -0
  448. data/test/unit/vagrant/util/which_test.rb +43 -0
  449. data/test/unit/vagrant_test.rb +56 -0
  450. data/tnargav.gemspec +69 -0
  451. data/vagrant.gemspec +69 -0
  452. metadata +730 -0
@@ -0,0 +1,106 @@
1
+ require File.expand_path("../../../base", __FILE__)
2
+
3
+ require "vagrant/util/retryable"
4
+
5
+ describe Vagrant::Util::Retryable do
6
+ let(:klass) do
7
+ Class.new do
8
+ extend Vagrant::Util::Retryable
9
+ end
10
+ end
11
+
12
+ it "doesn't retry by default" do
13
+ tries = 0
14
+
15
+ block = lambda do
16
+ tries += 1
17
+ raise RuntimeError, "Try"
18
+ end
19
+
20
+ # It should re-raise the error
21
+ expect { klass.retryable(&block) }.
22
+ to raise_error(RuntimeError)
23
+
24
+ # It should've tried once
25
+ tries.should == 1
26
+ end
27
+
28
+ it "retries the set number of times" do
29
+ tries = 0
30
+
31
+ block = lambda do
32
+ tries += 1
33
+ raise RuntimeError, "Try"
34
+ end
35
+
36
+ # It should re-raise the error
37
+ expect { klass.retryable(:tries => 5, &block) }.
38
+ to raise_error(RuntimeError)
39
+
40
+ # It should've tried all specified times
41
+ tries.should == 5
42
+ end
43
+
44
+ it "only retries on the given exception" do
45
+ tries = 0
46
+
47
+ block = lambda do
48
+ tries += 1
49
+ raise StandardError, "Try"
50
+ end
51
+
52
+ # It should re-raise the error
53
+ expect { klass.retryable(:tries => 5, :on => RuntimeError, &block) }.
54
+ to raise_error(StandardError)
55
+
56
+ # It should've never tried since it was a different kind of error
57
+ tries.should == 1
58
+ end
59
+
60
+ it "can retry on multiple types of errors" do
61
+ tries = 0
62
+
63
+ foo_error = Class.new(StandardError)
64
+ bar_error = Class.new(StandardError)
65
+
66
+ block = lambda do
67
+ tries += 1
68
+ raise foo_error, "Try" if tries == 1
69
+ raise bar_error, "Try" if tries == 2
70
+ raise RuntimeError, "YAY"
71
+ end
72
+
73
+ # It should re-raise the error
74
+ expect { klass.retryable(:tries => 5, :on => [foo_error, bar_error], &block) }.
75
+ to raise_error(RuntimeError)
76
+
77
+ # It should've never tried since it was a different kind of error
78
+ tries.should == 3
79
+ end
80
+
81
+ it "doesn't sleep between tries by default" do
82
+ block = lambda do
83
+ raise RuntimeError, "Try"
84
+ end
85
+
86
+ # Sleep should never be called
87
+ klass.should_not_receive(:sleep)
88
+
89
+ # Run it.
90
+ expect { klass.retryable(:tries => 5, &block) }.
91
+ to raise_error(RuntimeError)
92
+ end
93
+
94
+ it "sleeps specified amount between retries" do
95
+ block = lambda do
96
+ raise RuntimeError, "Try"
97
+ end
98
+
99
+ # Sleep should be called between each retry
100
+ klass.should_receive(:sleep).with(10).exactly(4).times
101
+
102
+ # Run it.
103
+ expect { klass.retryable(:tries => 5, :sleep => 10, &block) }.
104
+ to raise_error(RuntimeError)
105
+ end
106
+ end
@@ -0,0 +1,43 @@
1
+ require 'tmpdir'
2
+
3
+ require File.expand_path("../../../base", __FILE__)
4
+
5
+ require 'vagrant/util/safe_chdir'
6
+
7
+ describe Vagrant::Util::SafeChdir do
8
+ it "should change directories" do
9
+ expected = nil
10
+ result = nil
11
+ temp_dir = Dir.mktmpdir
12
+
13
+ Dir.chdir(temp_dir) do
14
+ expected = Dir.pwd
15
+ end
16
+
17
+ described_class.safe_chdir(temp_dir) do
18
+ result = Dir.pwd
19
+ end
20
+
21
+ result.should == expected
22
+ end
23
+
24
+ it "should allow recursive chdir" do
25
+ expected = nil
26
+ result = nil
27
+ temp_path = Dir.mktmpdir
28
+
29
+ Dir.chdir(temp_path) do
30
+ expected = Dir.pwd
31
+ end
32
+
33
+ expect do
34
+ described_class.safe_chdir(Dir.mktmpdir) do
35
+ described_class.safe_chdir(temp_path) do
36
+ result = Dir.pwd
37
+ end
38
+ end
39
+ end.to_not raise_error
40
+
41
+ result.should == expected
42
+ end
43
+ end
@@ -0,0 +1,48 @@
1
+ require File.expand_path("../../../base", __FILE__)
2
+
3
+ require "vagrant/util/scoped_hash_override"
4
+
5
+ describe Vagrant::Util::ScopedHashOverride do
6
+ let(:klass) do
7
+ Class.new do
8
+ extend Vagrant::Util::ScopedHashOverride
9
+ end
10
+ end
11
+
12
+ it "should not mess with non-overrides" do
13
+ original = {
14
+ :key => "value",
15
+ :another_value => "foo"
16
+ }
17
+
18
+ klass.scoped_hash_override(original, "foo").should == original
19
+ end
20
+
21
+ it "should override if the scope matches" do
22
+ original = {
23
+ :key => "value",
24
+ :scope__key => "replaced"
25
+ }
26
+
27
+ expected = {
28
+ :key => "replaced"
29
+ }
30
+
31
+ klass.scoped_hash_override(original, "scope").should == expected
32
+ end
33
+
34
+ it "should ignore non-matching scopes" do
35
+ original = {
36
+ :key => "value",
37
+ :scope__key => "replaced",
38
+ :another__key => "value"
39
+ }
40
+
41
+ expected = {
42
+ :key => "replaced",
43
+ :another__key => "value"
44
+ }
45
+
46
+ klass.scoped_hash_override(original, "scope").should == expected
47
+ end
48
+ end
@@ -0,0 +1,30 @@
1
+ require File.expand_path("../../../base", __FILE__)
2
+
3
+ require "vagrant/util/platform"
4
+ require "vagrant/util/ssh"
5
+
6
+ describe Vagrant::Util::SSH do
7
+ include_context "unit"
8
+
9
+ describe "checking key permissions" do
10
+ let(:key_path) { temporary_file }
11
+
12
+ it "should do nothing on Windows" do
13
+ Vagrant::Util::Platform.stub(:windows?).and_return(true)
14
+
15
+ key_path.chmod(0700)
16
+
17
+ # Get the mode now and verify that it is untouched afterwards
18
+ mode = key_path.stat.mode
19
+ described_class.check_key_permissions(key_path)
20
+ key_path.stat.mode.should == mode
21
+ end
22
+
23
+ it "should fix the permissions" do
24
+ key_path.chmod(0644)
25
+
26
+ described_class.check_key_permissions(key_path)
27
+ key_path.stat.mode.should == 0100600
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,106 @@
1
+ require File.expand_path("../../../base", __FILE__)
2
+
3
+ require "vagrant/util/string_block_editor"
4
+
5
+ describe Vagrant::Util::StringBlockEditor do
6
+ describe "#keys" do
7
+ it "should return all the keys" do
8
+ data = <<DATA
9
+ # VAGRANT-BEGIN: foo
10
+ value
11
+ # VAGRANT-END: foo
12
+ another
13
+ # VAGRANT-BEGIN: bar
14
+ content
15
+ # VAGRANT-END: bar
16
+ DATA
17
+
18
+ described_class.new(data).keys.should == ["foo", "bar"]
19
+ end
20
+ end
21
+
22
+ describe "#delete" do
23
+ it "should delete nothing if the key doesn't exist" do
24
+ data = "foo"
25
+
26
+ instance = described_class.new(data)
27
+ instance.delete("key")
28
+ instance.value.should == data
29
+ end
30
+
31
+ it "should delete the matching blocks if they exist" do
32
+ data = <<DATA
33
+ # VAGRANT-BEGIN: foo
34
+ value
35
+ # VAGRANT-END: foo
36
+ # VAGRANT-BEGIN: foo
37
+ another
38
+ # VAGRANT-END: foo
39
+ another
40
+ # VAGRANT-BEGIN: bar
41
+ content
42
+ # VAGRANT-END: bar
43
+ DATA
44
+
45
+ new_data = <<DATA
46
+ another
47
+ # VAGRANT-BEGIN: bar
48
+ content
49
+ # VAGRANT-END: bar
50
+ DATA
51
+
52
+ instance = described_class.new(data)
53
+ instance.delete("foo")
54
+ instance.value.should == new_data
55
+ end
56
+ end
57
+
58
+ describe "#get" do
59
+ let(:data) do
60
+ <<DATA
61
+ # VAGRANT-BEGIN: bar
62
+ content
63
+ # VAGRANT-END: bar
64
+ # VAGRANT-BEGIN: /Users/studio/Projects (studio)/tubes/.vagrant/machines/web/vmware_fusion/vm.vmwarevm
65
+ complex
66
+ # VAGRANT-END: /Users/studio/Projects (studio)/tubes/.vagrant/machines/web/vmware_fusion/vm.vmwarevm
67
+ DATA
68
+ end
69
+
70
+ subject { described_class.new(data) }
71
+
72
+ it "should get the value" do
73
+ subject.get("bar").should == "content"
74
+ end
75
+
76
+ it "should get nil for nonexistent values" do
77
+ subject.get("baz").should be_nil
78
+ end
79
+
80
+ it "should get complicated keys" do
81
+ result = subject.get("/Users/studio/Projects (studio)/tubes/.vagrant/machines/web/vmware_fusion/vm.vmwarevm")
82
+ result.should == "complex"
83
+ end
84
+ end
85
+
86
+ describe "#insert" do
87
+ it "should insert the given key and value" do
88
+ data = <<DATA
89
+ # VAGRANT-BEGIN: bar
90
+ content
91
+ # VAGRANT-END: bar
92
+ DATA
93
+
94
+ new_data = <<DATA
95
+ #{data.chomp}
96
+ # VAGRANT-BEGIN: foo
97
+ value
98
+ # VAGRANT-END: foo
99
+ DATA
100
+
101
+ instance = described_class.new(data)
102
+ instance.insert("foo", "value")
103
+ instance.value.should == new_data
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,43 @@
1
+ require File.expand_path("../../../base", __FILE__)
2
+
3
+ require 'vagrant/util/platform'
4
+ require 'vagrant/util/which'
5
+
6
+ describe Vagrant::Util::Which do
7
+ def tester (file_extension, test_extension, mode, &block)
8
+ # create file in temp directory
9
+ filename = '__vagrant_unit_test__'
10
+ dir = Dir.tmpdir
11
+ file = Pathname(dir) + (filename + file_extension)
12
+ file.open("w") { |f| f.write("#") }
13
+ file.chmod(mode)
14
+
15
+ # set the path to the directory where the file is located
16
+ savepath = ENV['PATH']
17
+ ENV['PATH'] = dir.to_s
18
+ block.call filename + test_extension
19
+ ENV['PATH'] = savepath
20
+
21
+ file.unlink
22
+ end
23
+
24
+ it "should return a path for an executable file" do
25
+ tester '.bat', '.bat', 0755 do |name|
26
+ described_class.which(name).should_not be_nil
27
+ end
28
+ end
29
+
30
+ if Vagrant::Util::Platform.windows?
31
+ it "should return a path for a Windows executable file" do
32
+ tester '.bat', '', 0755 do |name|
33
+ described_class.which(name).should_not be_nil
34
+ end
35
+ end
36
+ end
37
+
38
+ it "should return nil for a non-executable file" do
39
+ tester '.txt', '.txt', 0644 do |name|
40
+ described_class.which(name).should be_nil
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,56 @@
1
+ require File.expand_path("../base", __FILE__)
2
+
3
+ describe Vagrant do
4
+ include_context "unit"
5
+
6
+ it "has the path to the source root" do
7
+ described_class.source_root.should == Pathname.new(File.expand_path("../../../", __FILE__))
8
+ end
9
+
10
+ describe "plugin superclass" do
11
+ describe "v1" do
12
+ it "returns the proper class for version 1" do
13
+ described_class.plugin("1").should == Vagrant::Plugin::V1::Plugin
14
+ end
15
+
16
+ it "returns the proper components for version 1" do
17
+ described_class.plugin("1", :command).should == Vagrant::Plugin::V1::Command
18
+ described_class.plugin("1", :communicator).should == Vagrant::Plugin::V1::Communicator
19
+ described_class.plugin("1", :config).should == Vagrant::Plugin::V1::Config
20
+ described_class.plugin("1", :guest).should == Vagrant::Plugin::V1::Guest
21
+ described_class.plugin("1", :host).should == Vagrant::Plugin::V1::Host
22
+ described_class.plugin("1", :provider).should == Vagrant::Plugin::V1::Provider
23
+ described_class.plugin("1", :provisioner).should == Vagrant::Plugin::V1::Provisioner
24
+ end
25
+ end
26
+
27
+ it "raises an exception if an unsupported version is given" do
28
+ expect { described_class.plugin("88") }.
29
+ to raise_error(ArgumentError)
30
+ end
31
+ end
32
+
33
+ describe "requiring plugins" do
34
+ it "should require the plugin given" do
35
+ # For now, just require a stdlib
36
+ expect { described_class.require_plugin "set" }.
37
+ to_not raise_error
38
+ end
39
+
40
+ it "should raise an error if the file doesn't exist" do
41
+ expect { described_class.require_plugin("i_dont_exist") }.
42
+ to raise_error(Vagrant::Errors::PluginLoadError)
43
+ end
44
+
45
+ it "should raise an error if the loading failed in some other way" do
46
+ plugin_dir = temporary_dir
47
+ plugin_path = plugin_dir.join("test.rb")
48
+ plugin_path.open("w") do |f|
49
+ f.write(%Q[require 'I_dont_exist'])
50
+ end
51
+
52
+ expect { described_class.require_plugin(plugin_path.to_s) }.
53
+ to raise_error(Vagrant::Errors::PluginLoadFailed)
54
+ end
55
+ end
56
+ end
data/tnargav.gemspec ADDED
@@ -0,0 +1,69 @@
1
+ $:.unshift File.expand_path("../lib", __FILE__)
2
+ require "vagrant/version"
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "tnargav"
6
+ s.version = Vagrant::VERSION
7
+ s.platform = Gem::Platform::RUBY
8
+ s.authors = ["Mitchell Hashimoto", "John Bender"]
9
+ s.email = ["mitchell.hashimoto@gmail.com", "john.m.bender@gmail.com"]
10
+ s.homepage = "http://vagrantup.com"
11
+ s.summary = "Build and distribute virtualized development environments."
12
+ s.description = "Vagrant is a tool for building and distributing virtualized development environments."
13
+
14
+ s.required_rubygems_version = ">= 1.3.6"
15
+ s.rubyforge_project = "vagrant"
16
+
17
+ s.add_dependency "childprocess", "~> 0.3.7"
18
+ s.add_dependency "erubis", "~> 2.7.0"
19
+ s.add_dependency "i18n", "~> 0.6.0"
20
+ s.add_dependency "json", ">= 1.5.1", "< 1.8.0"
21
+ s.add_dependency "log4r", "~> 1.1.9"
22
+ s.add_dependency "net-ssh", "~> 2.6.6"
23
+ s.add_dependency "net-scp", "~> 1.1.0"
24
+
25
+ s.add_development_dependency "rake"
26
+ s.add_development_dependency "contest", ">= 0.1.2"
27
+ s.add_development_dependency "minitest", "~> 2.5.1"
28
+ s.add_development_dependency "mocha"
29
+ # This has problems on Windows, we need to find a better way:
30
+ # s.add_development_dependency "sys-proctable", "~> 0.9.0"
31
+ s.add_development_dependency "rspec-core", "~> 2.11.0"
32
+ s.add_development_dependency "rspec-expectations", "~> 2.11.0"
33
+ s.add_development_dependency "rspec-mocks", "~> 2.11.0"
34
+
35
+ # The following block of code determines the files that should be included
36
+ # in the gem. It does this by reading all the files in the directory where
37
+ # this gemspec is, and parsing out the ignored files from the gitignore.
38
+ # Note that the entire gitignore(5) syntax is not supported, specifically
39
+ # the "!" syntax, but it should mostly work correctly.
40
+ root_path = File.dirname(__FILE__)
41
+ all_files = Dir.chdir(root_path) { Dir.glob("**/{*,.*}") }
42
+ all_files.reject! { |file| [".", ".."].include?(File.basename(file)) }
43
+ gitignore_path = File.join(root_path, ".gitignore")
44
+ gitignore = File.readlines(gitignore_path)
45
+ gitignore.map! { |line| line.chomp.strip }
46
+ gitignore.reject! { |line| line.empty? || line =~ /^(#|!)/ }
47
+
48
+ unignored_files = all_files.reject do |file|
49
+ # Ignore any directories, the gemspec only cares about files
50
+ next true if File.directory?(file)
51
+
52
+ # Ignore any paths that match anything in the gitignore. We do
53
+ # two tests here:
54
+ #
55
+ # - First, test to see if the entire path matches the gitignore.
56
+ # - Second, match if the basename does, this makes it so that things
57
+ # like '.DS_Store' will match sub-directories too (same behavior
58
+ # as git).
59
+ #
60
+ gitignore.any? do |ignore|
61
+ File.fnmatch(ignore, file, File::FNM_PATHNAME) ||
62
+ File.fnmatch(ignore, File.basename(file), File::FNM_PATHNAME)
63
+ end
64
+ end
65
+
66
+ s.files = unignored_files
67
+ s.executables = unignored_files.map { |f| f[/^bin\/(.*)/, 1] }.compact
68
+ s.require_path = 'lib'
69
+ end
data/vagrant.gemspec ADDED
@@ -0,0 +1,69 @@
1
+ $:.unshift File.expand_path("../lib", __FILE__)
2
+ require "vagrant/version"
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "vagrant"
6
+ s.version = Vagrant::VERSION
7
+ s.platform = Gem::Platform::RUBY
8
+ s.authors = ["Mitchell Hashimoto", "John Bender"]
9
+ s.email = ["mitchell.hashimoto@gmail.com", "john.m.bender@gmail.com"]
10
+ s.homepage = "http://vagrantup.com"
11
+ s.summary = "Build and distribute virtualized development environments."
12
+ s.description = "Vagrant is a tool for building and distributing virtualized development environments."
13
+
14
+ s.required_rubygems_version = ">= 1.3.6"
15
+ s.rubyforge_project = "vagrant"
16
+
17
+ s.add_dependency "childprocess", "~> 0.3.7"
18
+ s.add_dependency "erubis", "~> 2.7.0"
19
+ s.add_dependency "i18n", "~> 0.6.0"
20
+ s.add_dependency "json", ">= 1.5.1", "< 1.8.0"
21
+ s.add_dependency "log4r", "~> 1.1.9"
22
+ s.add_dependency "net-ssh", "~> 2.6.6"
23
+ s.add_dependency "net-scp", "~> 1.1.0"
24
+
25
+ s.add_development_dependency "rake"
26
+ s.add_development_dependency "contest", ">= 0.1.2"
27
+ s.add_development_dependency "minitest", "~> 2.5.1"
28
+ s.add_development_dependency "mocha"
29
+ # This has problems on Windows, we need to find a better way:
30
+ # s.add_development_dependency "sys-proctable", "~> 0.9.0"
31
+ s.add_development_dependency "rspec-core", "~> 2.11.0"
32
+ s.add_development_dependency "rspec-expectations", "~> 2.11.0"
33
+ s.add_development_dependency "rspec-mocks", "~> 2.11.0"
34
+
35
+ # The following block of code determines the files that should be included
36
+ # in the gem. It does this by reading all the files in the directory where
37
+ # this gemspec is, and parsing out the ignored files from the gitignore.
38
+ # Note that the entire gitignore(5) syntax is not supported, specifically
39
+ # the "!" syntax, but it should mostly work correctly.
40
+ root_path = File.dirname(__FILE__)
41
+ all_files = Dir.chdir(root_path) { Dir.glob("**/{*,.*}") }
42
+ all_files.reject! { |file| [".", ".."].include?(File.basename(file)) }
43
+ gitignore_path = File.join(root_path, ".gitignore")
44
+ gitignore = File.readlines(gitignore_path)
45
+ gitignore.map! { |line| line.chomp.strip }
46
+ gitignore.reject! { |line| line.empty? || line =~ /^(#|!)/ }
47
+
48
+ unignored_files = all_files.reject do |file|
49
+ # Ignore any directories, the gemspec only cares about files
50
+ next true if File.directory?(file)
51
+
52
+ # Ignore any paths that match anything in the gitignore. We do
53
+ # two tests here:
54
+ #
55
+ # - First, test to see if the entire path matches the gitignore.
56
+ # - Second, match if the basename does, this makes it so that things
57
+ # like '.DS_Store' will match sub-directories too (same behavior
58
+ # as git).
59
+ #
60
+ gitignore.any? do |ignore|
61
+ File.fnmatch(ignore, file, File::FNM_PATHNAME) ||
62
+ File.fnmatch(ignore, File.basename(file), File::FNM_PATHNAME)
63
+ end
64
+ end
65
+
66
+ s.files = unignored_files
67
+ s.executables = unignored_files.map { |f| f[/^bin\/(.*)/, 1] }.compact
68
+ s.require_path = 'lib'
69
+ end