vagrant-invade 0.5.5 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/.idea/dictionaries/lenste.xml +14 -0
  4. data/Gemfile +5 -1
  5. data/Gemfile.lock +81 -1
  6. data/README.md +37 -4
  7. data/invade.yml.dist +6 -0
  8. data/lib/vagrant-invade/action/check.rb +44 -0
  9. data/lib/vagrant-invade/action/config.rb +4 -3
  10. data/lib/vagrant-invade/action/create.rb +30 -63
  11. data/lib/vagrant-invade/action/process.rb +139 -0
  12. data/lib/vagrant-invade/action.rb +21 -14
  13. data/lib/vagrant-invade/command/build.rb +6 -9
  14. data/lib/vagrant-invade/command/check.rb +33 -0
  15. data/lib/vagrant-invade/command/init.rb +3 -3
  16. data/lib/vagrant-invade/command/root.rb +15 -9
  17. data/lib/vagrant-invade/command/validate.rb +8 -7
  18. data/lib/vagrant-invade/extend.rb +24 -0
  19. data/lib/vagrant-invade/generator/type.rb +15 -0
  20. data/lib/vagrant-invade/generator.rb +48 -4
  21. data/lib/vagrant-invade/helper/checksum.rb +58 -0
  22. data/lib/vagrant-invade/helper.rb +9 -0
  23. data/lib/vagrant-invade/{builder → module/hostmanager}/hostmanager.rb +3 -7
  24. data/lib/vagrant-invade/module/hostmanager/rules.yml +15 -0
  25. data/lib/vagrant-invade/{template/hostmanager.erb → module/hostmanager/template.erb} +1 -1
  26. data/lib/vagrant-invade/module/invade/invade.rb +12 -0
  27. data/lib/vagrant-invade/module/invade/machine/machine.rb +46 -0
  28. data/lib/vagrant-invade/{template/machine.erb → module/invade/machine/template.erb} +6 -2
  29. data/lib/vagrant-invade/{builder/network → module/network/forwarded_port}/forwarded_port.rb +3 -5
  30. data/lib/vagrant-invade/module/network/forwarded_port/rules.yml +19 -0
  31. data/lib/vagrant-invade/module/network/forwarded_port/template.erb +8 -0
  32. data/lib/vagrant-invade/module/network/network.rb +13 -0
  33. data/lib/vagrant-invade/{builder/network/private_network.rb → module/network/private/private.rb} +25 -11
  34. data/lib/vagrant-invade/module/network/private/rules.yml +16 -0
  35. data/lib/vagrant-invade/module/network/private/template.erb +5 -0
  36. data/lib/vagrant-invade/{builder/network/public_network.rb → module/network/public/public.rb} +3 -5
  37. data/lib/vagrant-invade/module/network/public/rules.yml +13 -0
  38. data/lib/vagrant-invade/{template/network/public_network.erb → module/network/public/template.erb} +0 -0
  39. data/lib/vagrant-invade/module/nfs/nfs.rb +36 -0
  40. data/lib/vagrant-invade/module/nfs/rules.yml +12 -0
  41. data/lib/vagrant-invade/module/nfs/template.erb +12 -0
  42. data/lib/vagrant-invade/{builder/plugin → module/plugin/hostmanager}/hostmanager.rb +7 -10
  43. data/lib/vagrant-invade/module/plugin/hostmanager/rules.yml +4 -0
  44. data/lib/vagrant-invade/{template/plugin/hostmanager.erb → module/plugin/hostmanager/template.erb} +0 -0
  45. data/lib/vagrant-invade/module/plugin/plugin.rb +13 -0
  46. data/lib/vagrant-invade/{builder/plugin → module/plugin/r10k}/r10k.rb +6 -9
  47. data/lib/vagrant-invade/module/plugin/r10k/rules.yml +15 -0
  48. data/lib/vagrant-invade/{template/plugin/r10k.erb → module/plugin/r10k/template.erb} +0 -0
  49. data/lib/vagrant-invade/module/plugin/winnfsd/rules.yml +10 -0
  50. data/lib/vagrant-invade/{template/plugin/winnfsd.erb → module/plugin/winnfsd/template.erb} +0 -0
  51. data/lib/vagrant-invade/{builder/plugin → module/plugin/winnfsd}/winnfsd.rb +5 -8
  52. data/lib/vagrant-invade/module/provider/provider.rb +12 -0
  53. data/lib/vagrant-invade/module/provider/virtualbox/rules.yml +25 -0
  54. data/lib/vagrant-invade/module/provider/virtualbox/template.erb +26 -0
  55. data/lib/vagrant-invade/{builder/provider → module/provider/virtualbox}/virtualbox.rb +6 -6
  56. data/lib/vagrant-invade/module/provider/vmware/rules.yml +13 -0
  57. data/lib/vagrant-invade/{template/provider/vmware.erb → module/provider/vmware/template.erb} +9 -0
  58. data/lib/vagrant-invade/{builder/provider → module/provider/vmware}/vmware.rb +4 -6
  59. data/lib/vagrant-invade/module/provision/provision.rb +15 -0
  60. data/lib/vagrant-invade/{builder/provision → module/provision/puppet_agent}/puppet_agent.rb +3 -6
  61. data/lib/vagrant-invade/module/provision/puppet_agent/rules.yml +19 -0
  62. data/lib/vagrant-invade/{template/provision/puppet_agent.erb → module/provision/puppet_agent/template.erb} +0 -0
  63. data/lib/vagrant-invade/{builder/provision → module/provision/puppet_apply}/puppet_apply.rb +11 -6
  64. data/lib/vagrant-invade/module/provision/puppet_apply/rules.yml +41 -0
  65. data/lib/vagrant-invade/module/provision/puppet_apply/template.erb +41 -0
  66. data/lib/vagrant-invade/module/provision/salt/rules.yml +64 -0
  67. data/lib/vagrant-invade/module/provision/salt/salt.rb +61 -0
  68. data/lib/vagrant-invade/module/provision/salt/template.erb +67 -0
  69. data/lib/vagrant-invade/module/provision/shell/rules.yml +12 -0
  70. data/lib/vagrant-invade/{builder/provision → module/provision/shell}/shell.rb +6 -10
  71. data/lib/vagrant-invade/module/provision/shell/template.erb +1 -0
  72. data/lib/vagrant-invade/module/provision/shell_inline/rules.yml +12 -0
  73. data/lib/vagrant-invade/{builder/provision → module/provision/shell_inline}/shell_inline.rb +6 -10
  74. data/lib/vagrant-invade/module/provision/shell_inline/template.erb +1 -0
  75. data/lib/vagrant-invade/module/ssh/rules.yml +48 -0
  76. data/lib/vagrant-invade/{builder → module/ssh}/ssh.rb +4 -6
  77. data/lib/vagrant-invade/module/ssh/template.erb +1 -0
  78. data/lib/vagrant-invade/{builder/synced_folder → module/synced_folder/nfs}/nfs.rb +3 -6
  79. data/lib/vagrant-invade/module/synced_folder/nfs/rules.yml +22 -0
  80. data/lib/vagrant-invade/module/synced_folder/nfs/template.erb +2 -0
  81. data/lib/vagrant-invade/module/synced_folder/synced_folder.rb +12 -0
  82. data/lib/vagrant-invade/module/synced_folder/virtualbox/rules.yml +21 -0
  83. data/lib/vagrant-invade/{template/synced_folder/virtualbox.erb → module/synced_folder/virtualbox/template.erb} +0 -0
  84. data/lib/vagrant-invade/{builder/synced_folder → module/synced_folder/virtualbox}/virtualbox.rb +3 -6
  85. data/lib/vagrant-invade/module/vm/rules.yml +9 -0
  86. data/lib/vagrant-invade/{template/vm/vm.erb → module/vm/template.erb} +0 -0
  87. data/lib/vagrant-invade/{builder → module/vm}/vm.rb +3 -7
  88. data/lib/vagrant-invade/module.rb +26 -0
  89. data/lib/vagrant-invade/plugin.rb +3 -5
  90. data/lib/vagrant-invade/validator/ruleset/yaml_ruleset.rb +97 -0
  91. data/lib/vagrant-invade/validator/ruleset.rb +12 -0
  92. data/lib/vagrant-invade/validator/type/type_array.rb +38 -0
  93. data/lib/vagrant-invade/validator/type/type_boolean.rb +38 -0
  94. data/lib/vagrant-invade/validator/type/type_hash.rb +39 -0
  95. data/lib/vagrant-invade/validator/type/type_integer.rb +46 -0
  96. data/lib/vagrant-invade/validator/type/type_string.rb +42 -0
  97. data/lib/vagrant-invade/validator/type/type_string_array.rb +42 -0
  98. data/lib/vagrant-invade/validator/type.rb +14 -0
  99. data/lib/vagrant-invade/validator.rb +51 -119
  100. data/lib/vagrant-invade/version.rb +1 -1
  101. data/lib/vagrant-invade.rb +3 -1
  102. metadata +85 -82
  103. data/lib/vagrant-invade/action/generate.rb +0 -115
  104. data/lib/vagrant-invade/action/validate.rb +0 -161
  105. data/lib/vagrant-invade/builder/machine.rb +0 -45
  106. data/lib/vagrant-invade/builder/network.rb +0 -13
  107. data/lib/vagrant-invade/builder/plugin.rb +0 -13
  108. data/lib/vagrant-invade/builder/provider.rb +0 -12
  109. data/lib/vagrant-invade/builder/provision.rb +0 -14
  110. data/lib/vagrant-invade/builder/synced_folder.rb +0 -12
  111. data/lib/vagrant-invade/builder/vagrantfile.rb +0 -36
  112. data/lib/vagrant-invade/builder.rb +0 -20
  113. data/lib/vagrant-invade/generator/hostmanager.rb +0 -23
  114. data/lib/vagrant-invade/generator/machine.rb +0 -25
  115. data/lib/vagrant-invade/generator/machine_part/network.rb +0 -38
  116. data/lib/vagrant-invade/generator/machine_part/plugin.rb +0 -39
  117. data/lib/vagrant-invade/generator/machine_part/provider.rb +0 -36
  118. data/lib/vagrant-invade/generator/machine_part/provision.rb +0 -40
  119. data/lib/vagrant-invade/generator/machine_part/ssh.rb +0 -27
  120. data/lib/vagrant-invade/generator/machine_part/synced_folder.rb +0 -35
  121. data/lib/vagrant-invade/generator/machine_part/vm.rb +0 -27
  122. data/lib/vagrant-invade/generator/machine_part.rb +0 -23
  123. data/lib/vagrant-invade/generator/vagrantfile.rb +0 -23
  124. data/lib/vagrant-invade/template/network/forwarded_port.erb +0 -8
  125. data/lib/vagrant-invade/template/network/private_network.erb +0 -2
  126. data/lib/vagrant-invade/template/provider/virtualbox.erb +0 -11
  127. data/lib/vagrant-invade/template/provision/puppet_apply.erb +0 -21
  128. data/lib/vagrant-invade/template/provision/shell.erb +0 -3
  129. data/lib/vagrant-invade/template/provision/shell_inline.erb +0 -3
  130. data/lib/vagrant-invade/template/ssh/ssh.erb +0 -2
  131. data/lib/vagrant-invade/template/synced_folder/nfs.erb +0 -12
  132. data/lib/vagrant-invade/template/v2.erb +0 -10
  133. data/lib/vagrant-invade/validator/hostmanager.rb +0 -56
  134. data/lib/vagrant-invade/validator/invade.rb +0 -38
  135. data/lib/vagrant-invade/validator/network/forwarded_port.rb +0 -68
  136. data/lib/vagrant-invade/validator/network/private_network.rb +0 -44
  137. data/lib/vagrant-invade/validator/network/public_network.rb +0 -56
  138. data/lib/vagrant-invade/validator/network.rb +0 -13
  139. data/lib/vagrant-invade/validator/plugin/hostmanager.rb +0 -34
  140. data/lib/vagrant-invade/validator/plugin/r10k.rb +0 -53
  141. data/lib/vagrant-invade/validator/plugin/winnfsd.rb +0 -46
  142. data/lib/vagrant-invade/validator/plugin.rb +0 -13
  143. data/lib/vagrant-invade/validator/provider/virtualbox.rb +0 -46
  144. data/lib/vagrant-invade/validator/provider/vmware.rb +0 -27
  145. data/lib/vagrant-invade/validator/provider.rb +0 -39
  146. data/lib/vagrant-invade/validator/provision/puppet_agent.rb +0 -68
  147. data/lib/vagrant-invade/validator/provision/puppet_apply.rb +0 -62
  148. data/lib/vagrant-invade/validator/provision/shell.rb +0 -53
  149. data/lib/vagrant-invade/validator/provision/shell_inline.rb +0 -53
  150. data/lib/vagrant-invade/validator/provision.rb +0 -24
  151. data/lib/vagrant-invade/validator/ssh.rb +0 -31
  152. data/lib/vagrant-invade/validator/synced_folder/nfs.rb +0 -46
  153. data/lib/vagrant-invade/validator/synced_folder/vb.rb +0 -52
  154. data/lib/vagrant-invade/validator/synced_folder.rb +0 -36
  155. data/lib/vagrant-invade/validator/vm.rb +0 -45
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4eb14c72832a49787843fbcb61f2ceeddaa1f1b1
4
- data.tar.gz: 6de14569a13b41479d284f197f10e1df5810b4d4
3
+ metadata.gz: 6e06288dca14df145c0464799d0da097feab7916
4
+ data.tar.gz: 5a151c1e3e863aabfeb0497df3874159dad6a13a
5
5
  SHA512:
6
- metadata.gz: 2f41c0f60be3cb2f0384dc38f373804110bc8da0915f0b318bdcc24901cb1a7527e9f359ab735ce8bafc7bb4f66f7a69631eee090839b5612ac38f7add2b31e1
7
- data.tar.gz: 13688fb8d5c068d48bdd3d919bbbaeda47ccc6125adca21622e52d9ab2631282762e72907916bb9fbf8bbc12f2a1e88eee624b967cc1c840af5be5c7abab4192
6
+ metadata.gz: 7b1339ac0eda98c1df71fd55261db75e03deeab302e3afcb7d2dc24e435f8ab62b040e73a8554a329e39ed09970f0056b5763a099d14e71f0a467d4177ad4730
7
+ data.tar.gz: 5a59b6bf983099845b2c3b5ea8af59d0ac1a56e3beefe1323c06a823504e145637fe5ce8e7aa90e733c7f67f2e53d1cdbd378334660ba44f4a8b92711e35c569
data/.gitignore CHANGED
@@ -1,4 +1,6 @@
1
1
  invade.yml
2
2
  Vagrantfile
3
+ Vagrantfile-*
3
4
  Vagrantfile.new
4
5
  .vagrant
6
+ .idea
@@ -0,0 +1,14 @@
1
+ <component name="ProjectDictionaryState">
2
+ <dictionary name="lenste">
3
+ <words>
4
+ <w>eruby</w>
5
+ <w>facter</w>
6
+ <w>masterless</w>
7
+ <w>puppetfile</w>
8
+ <w>syncdir</w>
9
+ <w>virtualbox</w>
10
+ <w>vmware</w>
11
+ <w>winnfsd</w>
12
+ </words>
13
+ </dictionary>
14
+ </component>
data/Gemfile CHANGED
@@ -1,10 +1,14 @@
1
1
  source "https://rubygems.org"
2
2
 
3
3
  group :development do
4
+ gem "rsense"
4
5
  gem "vagrant", git: "https://github.com/mitchellh/vagrant.git", :ref => 'v1.8.5'
5
- gem "vagrant-hostmanager", git: "https://github.com/devopsgroup-io/vagrant-hostmanager"
6
6
  end
7
7
 
8
8
  group :plugins do
9
9
  gem "vagrant-invade", path: "."
10
+ gem "vagrant-hostmanager", git: "https://github.com/devopsgroup-io/vagrant-hostmanager"
11
+ gem "vagrant-r10k", git: "https://github.com/jantman/vagrant-r10k"
12
+ # Windows only
13
+ # gem "vagrant-winnfsd", git: "https://github.com/winnfsd/vagrant-winnfsd"
10
14
  end
data/Gemfile.lock CHANGED
@@ -4,6 +4,13 @@ GIT
4
4
  specs:
5
5
  vagrant-hostmanager (1.8.5)
6
6
 
7
+ GIT
8
+ remote: https://github.com/jantman/vagrant-r10k
9
+ revision: aa33372532fc031d26da6b059bea3ff113a88947
10
+ specs:
11
+ vagrant-r10k (0.4.1)
12
+ r10k (~> 1.5.0)
13
+
7
14
  GIT
8
15
  remote: https://github.com/mitchellh/vagrant.git
9
16
  revision: 93f9528687b9a737585d22bc4db5d2ab5d9852d3
@@ -38,10 +45,28 @@ GEM
38
45
  builder (3.2.2)
39
46
  childprocess (0.5.9)
40
47
  ffi (~> 1.0, >= 1.0.11)
48
+ colored (1.2)
49
+ cri (2.6.1)
50
+ colored (~> 1.2)
41
51
  domain_name (0.5.20160615)
42
52
  unf (>= 0.0.5, < 1.0.0)
43
53
  erubis (2.7.0)
54
+ faraday (0.9.2)
55
+ multipart-post (>= 1.2, < 3)
56
+ faraday_middleware (0.9.2)
57
+ faraday (>= 0.7.4, < 0.10)
58
+ faraday_middleware-multi_json (0.0.6)
59
+ faraday_middleware
60
+ multi_json
61
+ fast_gettext (1.1.0)
44
62
  ffi (1.9.14)
63
+ filetree (1.0.0)
64
+ gettext (3.2.2)
65
+ locale (>= 2.0.5)
66
+ text (>= 1.3.0)
67
+ gettext-setup (0.6)
68
+ fast_gettext (~> 1.1.0)
69
+ gettext (>= 3.0.2)
45
70
  gssapi (1.2.0)
46
71
  ffi (>= 1.0.1)
47
72
  gyoku (1.3.1)
@@ -49,13 +74,17 @@ GEM
49
74
  hashicorp-checkpoint (0.1.4)
50
75
  http-cookie (1.0.2)
51
76
  domain_name (~> 0.5)
52
- httpclient (2.8.1)
77
+ httpclient (2.8.2.2)
53
78
  i18n (0.7.0)
79
+ jruby-jars (1.7.25)
80
+ jruby-parser (0.5.4)
81
+ json_pure (1.8.3)
54
82
  listen (3.1.5)
55
83
  rb-fsevent (~> 0.9, >= 0.9.4)
56
84
  rb-inotify (~> 0.9, >= 0.9.7)
57
85
  ruby_dep (~> 1.2)
58
86
  little-plugger (1.1.4)
87
+ locale (2.1.2)
59
88
  log4r (1.1.10)
60
89
  logging (2.1.0)
61
90
  little-plugger (~> 1.1)
@@ -65,6 +94,7 @@ GEM
65
94
  mime-types-data (3.2016.0521)
66
95
  mini_portile2 (2.0.0)
67
96
  multi_json (1.12.1)
97
+ multipart-post (2.0.0)
68
98
  net-scp (1.1.2)
69
99
  net-ssh (>= 2.6.5)
70
100
  net-sftp (2.1.2)
@@ -74,6 +104,19 @@ GEM
74
104
  nokogiri (1.6.7.1)
75
105
  mini_portile2 (~> 2.0.0.rc2)
76
106
  nori (2.6.0)
107
+ r10k (1.5.1)
108
+ colored (= 1.2)
109
+ cri (~> 2.6.1)
110
+ faraday (~> 0.9.0)
111
+ faraday_middleware (~> 0.9.0)
112
+ faraday_middleware-multi_json (~> 0.0.6)
113
+ json_pure (~> 1.8)
114
+ log4r (= 1.1.10)
115
+ multi_json (~> 1.10)
116
+ semantic_puppet (~> 0.1.0)
117
+ rack (1.6.4)
118
+ rack-protection (1.5.3)
119
+ rack
77
120
  rb-fsevent (0.9.7)
78
121
  rb-inotify (0.9.7)
79
122
  ffi (>= 0.5.0)
@@ -83,9 +126,44 @@ GEM
83
126
  http-cookie (>= 1.0.2, < 2.0)
84
127
  mime-types (>= 1.16, < 4.0)
85
128
  netrc (~> 0.8)
129
+ rsense (0.5.18)
130
+ bundler (~> 1.6)
131
+ filetree (~> 1.0.0)
132
+ jruby-jars (~> 1.7.4)
133
+ jruby-parser (~> 0.5.4)
134
+ rsense-core (~> 0.6.6)
135
+ rsense-server (~> 0.5.18)
136
+ spoon (~> 0.0.4)
137
+ thor (>= 0.18.1, < 0.20)
138
+ rsense-core (0.6.6)
139
+ filetree (~> 1.0.0)
140
+ jruby-jars (~> 1.7.4)
141
+ jruby-parser (~> 0.5.4)
142
+ spoon (~> 0.0.4)
143
+ thor (>= 0.18.1, < 0.20)
144
+ rsense-server (0.5.18)
145
+ bundler (~> 1.6)
146
+ faraday
147
+ filetree (~> 1.0.0)
148
+ jruby-jars (~> 1.7.4)
149
+ jruby-parser (~> 0.5.4)
150
+ rsense-core (~> 0.6.6)
151
+ sinatra
152
+ spoon (~> 0.0.4)
86
153
  ruby_dep (1.4.0)
87
154
  rubyntlm (0.6.0)
88
155
  rubyzip (1.2.0)
156
+ semantic_puppet (0.1.4)
157
+ gettext-setup (>= 0.3)
158
+ sinatra (1.4.7)
159
+ rack (~> 1.5)
160
+ rack-protection (~> 1.4)
161
+ tilt (>= 1.3, < 3)
162
+ spoon (0.0.4)
163
+ ffi
164
+ text (1.3.1)
165
+ thor (0.19.1)
166
+ tilt (2.0.5)
89
167
  unf (0.1.4)
90
168
  unf_ext
91
169
  unf_ext (0.0.7.2)
@@ -108,9 +186,11 @@ PLATFORMS
108
186
  ruby
109
187
 
110
188
  DEPENDENCIES
189
+ rsense
111
190
  vagrant!
112
191
  vagrant-hostmanager!
113
192
  vagrant-invade!
193
+ vagrant-r10k!
114
194
 
115
195
  BUNDLED WITH
116
196
  1.12.5
data/README.md CHANGED
@@ -17,11 +17,39 @@ There are new commands you can use to init, validate and build your Vagrantfile.
17
17
  ### Init
18
18
  `vagrant invade init` creates the default **invade.yml** configuration file for you.
19
19
 
20
+ ### Check
21
+ `vagrant invade check` will check the checksum of Vagrantfile and invade.yml data. Helpful to check the files without using the build command.
22
+
20
23
  ### Validate
21
24
  `vagrant invade validate` will validate the **invade.yml** file and gives you a **detailed output of missing values, wrong parameters and defaults** for each option.
22
25
 
23
26
  ### Build
24
- `vagrant invade build` will **build a Vagrantfile** based on what you set in the 'invade.yml' configuration file and place it to the directory you did run the command.
27
+ `vagrant invade build` will **build a Vagrantfile** based on what you configured in the 'invade.yml' file and place it to the directory you did run the command. The old Vagrantfile will be saved as backup.
28
+
29
+ ## Feature Support
30
+ * Box
31
+ * Network
32
+ * Provider
33
+ * VirtualBox
34
+ * VMWare
35
+ * Provision
36
+ * shell
37
+ * inline
38
+ * puppet-agent
39
+ * puppet-apply
40
+ * Synced Folder
41
+ * VB
42
+ * NFS (use *vagrant-winnfsd* plugin to support Windows)
43
+
44
+ **Not all features are supported yet. See source code for available options.**
45
+
46
+ With command `vagrant invade init` you can create an example invade.yml with all available options you can pick from.
47
+
48
+ ### 3rd party plugins
49
+ * [vagrant-hostmanager](https://github.com/devopsgroup-io/vagrant-hostmanager)
50
+ * [vagrant-r10k](https://github.com/jantman/vagrant-r10k)
51
+ * [vagrant-winnfsd](https://github.com/winnfsd/vagrant-winnfsd)
52
+
25
53
 
26
54
  ## Development
27
55
  You are able to collaborate to make this plugin even better. You just need a simple setup of ruby software to make it work. You could also use RVM to keep your ruby environment clean.
@@ -32,6 +60,11 @@ You are able to collaborate to make this plugin even better. You just need a sim
32
60
  3. RubyGems
33
61
  4. Bundler
34
62
 
35
- ### Setup
36
- 1. ``gem install bundler``
37
- 2. ``bundle install``
63
+ ### Setup with RVM
64
+ 1. `rvm gemset create vagrant-invade`
65
+ 2. `rvm gemset use vagrant-invade`
66
+ 1. `gem install bundler`
67
+ 2. `bundle install`
68
+
69
+ ### Execute vagrant while developing a plugin
70
+ 1. `bundle exec vagrant [command]`
data/invade.yml.dist CHANGED
@@ -74,6 +74,12 @@ machines:
74
74
  # package_state: 'present'
75
75
  # apt_update: true
76
76
 
77
+ nfs:
78
+ map_uid: Process.uid
79
+ map_gid: Process.gid
80
+ #functional: true
81
+ #verify_installed: false
82
+
77
83
  plugin:
78
84
  #hostmanager:
79
85
  # aliases:
@@ -0,0 +1,44 @@
1
+ module VagrantPlugins
2
+ module Invade
3
+ module Action
4
+
5
+ include Vagrant::Action::Builtin
6
+
7
+ class Check
8
+
9
+ def initialize(app, env)
10
+ @app = app
11
+ @env = env
12
+ @logger = Log4r::Logger.new('vagrant::invade::action::init')
13
+ @dir = Dir.pwd
14
+
15
+ ENV['VAGRANT_VAGRANTFILE'] ? @vagrantfile_name = ENV['VAGRANT_VAGRANTFILE'] : @vagrantfile_name = "Vagrantfile"
16
+ @root_path = Dir.pwd
17
+ end
18
+
19
+ def call(env)
20
+
21
+ data = @env[:invade]['vagrantfile']
22
+
23
+ checksum_helper = Helper::Checksum.new @env
24
+ vagrantfile_path = "#{@root_path}/#{@vagrantfile_name}"
25
+ md5_current = checksum_helper.get_checksum_of_file(vagrantfile_path)
26
+ md5_generated = checksum_helper.get_checksum_of_data(data)
27
+
28
+ if checksum_helper.check
29
+ @env[:ui].success "[Invade][CHECK] #{md5_current}"
30
+ @env[:ui].success "[Invade][CHECK] Checksum is valid!"
31
+ else
32
+ @env[:ui].warn "[Invade][CHECK] Changes found. Checksum is not equal!"
33
+ @env[:ui].warn "[Invade][CHECK] #{@vagrantfile_name} \tMD5:#{md5_current}"
34
+ @env[:ui].warn "[Invade][CHECK] invade.yml\tMD5:#{md5_generated}"
35
+ end
36
+
37
+ @app.call(env)
38
+ end
39
+
40
+ end
41
+
42
+ end
43
+ end
44
+ end
@@ -11,6 +11,7 @@ module VagrantPlugins
11
11
  def initialize(app, env)
12
12
  @app = app
13
13
  @env = env
14
+
14
15
  @logger = Log4r::Logger.new('vagrant::invade::action::config')
15
16
  @dir = Dir.pwd
16
17
  end
@@ -18,8 +19,8 @@ module VagrantPlugins
18
19
  def call(env)
19
20
 
20
21
  config_file_path = "#{@dir}/invade.yml"
21
- template_file_path = "#{config_file_path}.dist"
22
- default_config_file_path = "#{File.expand_path('../../../../', __FILE__)}/invade.yml.dist"
22
+ # template_file_path = "#{config_file_path}.dist"
23
+ # default_config_file_path = "#{File.expand_path('../../../../', __FILE__)}/invade.yml.dist"
23
24
 
24
25
  # Returns with invade in environment if Invade Configuration file already exists
25
26
  if File.exist?(config_file_path)
@@ -29,7 +30,7 @@ module VagrantPlugins
29
30
  # Add invade configuration as global environment variable since we know configuration file exists
30
31
  env[:invade] = Invade.get_invade_config
31
32
  unless env[:invade]
32
- raise "Something went wront. Configuration file could not be loaded."
33
+ raise 'Something went wrong. Configuration file could not be loaded.'
33
34
  end
34
35
  else
35
36
  @env[:ui].info "[Invade] 'invade.yml' not exists. You forgot a 'vagrant invade init'?"
@@ -9,28 +9,33 @@ module VagrantPlugins
9
9
  def initialize(app, env)
10
10
  @app = app
11
11
  @env = env
12
+ @ui = env[:ui]
12
13
  @logger = Log4r::Logger.new('vagrant::invade::action::create')
14
+
15
+ ENV['VAGRANT_VAGRANTFILE'] ? @vagrantfile_name = ENV['VAGRANT_VAGRANTFILE'] : @vagrantfile_name = 'Vagrantfile'
16
+ @root_path = Dir.pwd
13
17
  end
14
18
 
15
19
  def call(env)
16
20
 
17
- # Get project root where vagrant is running from
18
- # Since it is possible to set it through the environment we need to validate it
19
- root_path = Dir.pwd
20
- ENV['VAGRANT_VAGRANTFILE'] ? vagrantfile_name = ENV['VAGRANT_VAGRANTFILE'] : vagrantfile_name = "Vagrantfile"
21
+ data = @env[:invade]['vagrantfile']
21
22
 
22
- # Get generated Vagrantfile from environment
23
- if @env[:invade]['vagrantfile']
24
- generated_vagrantfile_data = @env[:invade]['vagrantfile']
25
- else
26
- raise "[Invade]: No generated data found. Can't build Vagrantfile."
27
- end
23
+ checksum_helper = Helper::Checksum.new @env
24
+ vagrantfile_path = "#{@root_path}/#{@vagrantfile_name}"
25
+ md5_current = checksum_helper.get_checksum_of_file(vagrantfile_path)
26
+ md5_generated = checksum_helper.get_checksum_of_data(data)
28
27
 
29
28
  # Write new Vagrantfile if checksum is not equal
30
- if !check_md5_checksum(@env[:ui], root_path, vagrantfile_name, generated_vagrantfile_data) || @env[:invade_build_force]
31
- @env[:invade_build_force] ?
32
- write_vagrantfile(@env[:ui], root_path, generated_vagrantfile_data, vagrantfile_name, true) :
33
- write_vagrantfile(@env[:ui], root_path, generated_vagrantfile_data, vagrantfile_name, false)
29
+ if !checksum_helper.check
30
+ write_vagrantfile(data, md5_current)
31
+
32
+ @env[:ui].success "[Invade][BUILD] Current : '#{md5_current}'"
33
+ @env[:ui].success "[Invade][BUILD] Generated : '#{md5_generated}'"
34
+ @env[:ui].success '[Invade][BUILD] Saved new Vagrantfile to:'
35
+ @env[:ui].success "[Invade][BUILD] #{vagrantfile_path}"
36
+ else
37
+ @ui.warn("[Invade][BUILD] Checksum: #{md5_current}")
38
+ @ui.warn('[Invade][BUILD] No changes found in invade.yml - Vagrantfile will remain untouched.')
34
39
  end
35
40
 
36
41
  @app.call(env)
@@ -38,63 +43,25 @@ module VagrantPlugins
38
43
 
39
44
  private
40
45
 
41
- # Compare md5 strings to replace Vagrantfile
42
- def check_md5_checksum(ui, root_path, vagrantfile_name, generated_vagrantfile_data)
43
-
44
- require 'digest'
45
-
46
- md5_new = Digest::MD5.hexdigest(generated_vagrantfile_data)
47
-
48
- if File.exists?("#{root_path}/#{vagrantfile_name}")
49
- md5_current = Digest::MD5.file("#{root_path}/#{vagrantfile_name}").hexdigest
50
- else
51
- md5_current = 0
52
- end
53
-
54
- (md5_new.eql? md5_current) ? md5_check = true : md5_check = false
46
+ def write_vagrantfile(data, checksum)
55
47
 
56
- unless md5_check
57
- ui.warn "[Invade] Checksum not equal!"
58
- ui.warn "[Invade] Current : '#{md5_current}'"
59
- ui.warn "[Invade] Generated : '#{md5_new}'"
48
+ vagrantfile = "#{@root_path}/#{@vagrantfile_name}"
60
49
 
61
- return false
62
- end
63
-
64
- ui.success "[Invade] Vagrantfile is still valid. Use '-f|--force' to force replacing it." unless @env[:invade_build_force]
65
-
66
- true
67
- end
68
-
69
- def reload(ui)
50
+ # Backup old Vagrantfile and safe it with checksum
51
+ backup_file = vagrantfile + '-' + "#{checksum}"
70
52
 
71
- # Get corrent command whether in development mode or using Vagrant for real
72
- unless Vagrant.in_installer? && Vagrant.very_quiet?
73
- command = 'bundle exec vagrant reload'
74
- else
75
- command = 'vagrant reload'
53
+ unless File.exist?(backup_file) || !File.exist?(vagrantfile)
54
+ File.rename(
55
+ vagrantfile,
56
+ backup_file
57
+ )
76
58
  end
77
59
 
78
- ui.warn '[Invade] Auto reload Vagrant with new Vagrantfile...'
79
- sleep 2
80
-
81
- Kernel.exec(command)
82
- end
83
-
84
- def write_vagrantfile(ui, root_path, vagrantfile, vagrantfile_name, overwrite)
85
-
86
- overwrite ?
87
- vagrantfile_path = "#{root_path}/#{vagrantfile_name}" :
88
- vagrantfile_path = "#{root_path}/#{vagrantfile_name}.new"
89
-
90
60
  # Write new Vagrantfile
91
- open(vagrantfile_path, "w+") do |f|
92
- f.puts vagrantfile
61
+ open(vagrantfile, 'w+') do |f|
62
+ f.puts data
93
63
  end
94
64
 
95
- overwrite ?
96
- ui.warn("[Invade] Replaced Vagrantfile at '#{root_path}/#{vagrantfile_name}'.") :
97
- ui.warn("[Invade] Saved new Vagrantfile at '#{root_path}/#{vagrantfile_name}.new'.")
98
65
  end
99
66
  end
100
67