vagrant-cookbook-fetcher 0.0.8 → 0.0.9

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 (3) hide show
  1. data/ChangeLog +4 -0
  2. data/lib/vagrant_cookbook_fetcher.rb +46 -25
  3. metadata +1 -1
data/ChangeLog CHANGED
@@ -1,3 +1,7 @@
1
+ 2013-04-09 0.0.9 Clinton Wolfe <clintoncwolfe at gmail dot com>
2
+ * Rewrite combined/ linker to be more flexible
3
+ * Create two spec directories in combined/ - one symlinked from the perspective of
4
+ the VM host, and one from the perspective of the VM guest
1
5
 
2
6
  2013-04-08 0.0.8 Clinton Wolfe <clintoncwolfe at gmail dot com>
3
7
  * Correct rspec directory name specs => spec
@@ -142,18 +142,25 @@ module CookbookFetcher
142
142
  # already been performed, creates the combined/ directory in the current directory,
143
143
  # and symlinks in the roles, nodes, etc.
144
144
  def update_links (checkouts,logger)
145
- things_to_link = ["roles", "nodes", "handlers", "data_bags", "spec"]
146
- logger.info "Updating links to #{things_to_link.join(', ')}"
145
+ things_to_link = {
146
+ "roles" => {:vagrant_pov_link => true, :target_dir => "roles", :step_in => false },
147
+ "nodes" => {:vagrant_pov_link => true, :target_dir => "nodes", :step_in => false },
148
+ "handlers" => {:vagrant_pov_link => true, :target_dir => "handlers", :step_in => false },
149
+ "data_bags" => {:vagrant_pov_link => true, :target_dir => "data_bags", :step_in => true },
150
+ "spec_ext" => {:vagrant_pov_link => false, :target_dir => "spec", :step_in => false },
151
+ "spec_int" => {:vagrant_pov_link => true, :target_dir => "spec", :step_in => false },
152
+ }
153
+ logger.info "Updating links to #{things_to_link.keys.sort.join(', ')}"
147
154
 
148
155
  if !Dir.exists?("combined") then Dir.mkdir("combined") end
149
156
  Dir.chdir("combined") do
150
157
 
151
158
  # Create/clear the subdirs
152
- things_to_link.each do |thing|
159
+ things_to_link.keys.each do |thing|
153
160
  if !Dir.exists?(thing) then Dir.mkdir(thing) end
154
- if (thing == "data_bags") then
155
- Dir.foreach(thing) do |dbag_dir|
156
- Dir.foreach(thing + '/' + dbag_dir) do |file|
161
+ if (things_to_link[thing][:step_in]) then
162
+ Dir.foreach(thing) do |top_dir|
163
+ Dir.foreach(thing + '/' + top_dir) do |file|
157
164
  if FileTest.symlink?(file) then File.delete(file) end
158
165
  end
159
166
  end
@@ -168,29 +175,43 @@ module CookbookFetcher
168
175
  # Being careful to go in cookbook order, symlink the files
169
176
  checkouts[:cookbook_list].each do |cookbook_dir|
170
177
  checkout_dir = (cookbook_dir.split('/'))[1]
171
- things_to_link.each do |thing|
172
- co_thing_dir = "checkouts/#{checkout_dir}/#{thing}"
178
+ things_to_link.each do |thing, opts|
179
+ checkout_thing_dir = "checkouts/#{checkout_dir}/#{opts[:target_dir]}"
173
180
  combined_dir = "combined/#{thing}"
174
- if Dir.exists?(co_thing_dir) then
175
- if (thing == "data_bags") then
176
- Dir.foreach(co_thing_dir) do |co_dbag_dir|
177
- next unless File.directory?(co_thing_dir + '/' + co_dbag_dir)
178
- next if co_dbag_dir.start_with?('.')
179
- combined_dbag_dir = combined_dir + '/' + co_dbag_dir
180
- if !Dir.exists?(combined_dbag_dir) then Dir.mkdir(combined_dbag_dir) end
181
- Dir.entries(co_thing_dir + '/' + co_dbag_dir).grep(/\.(rb|json)$/).each do |file|
182
- # Under vagrant, we see this directory as /vagrant/checkouts/<checkout>/data_bags/<dbag>/<dbag_entry.json>
183
- # Use -f so later checkouts can override earlier ones
184
- cmd = "ln -sf /vagrant/#{co_thing_dir + '/' + co_dbag_dir}/#{file} combined/#{thing}/#{co_dbag_dir}/#{file}"
185
- unless system cmd then raise "Could not '#{cmd}'" end
181
+ if Dir.exists?(checkout_thing_dir) then
182
+ if opts[:step_in] then
183
+ Dir.foreach(checkout_thing_dir) do |checkout_top_dir|
184
+ next unless File.directory?(checkout_thing_dir + '/' + checkout_top_dir)
185
+ next if checkout_top_dir.start_with?('.')
186
+ combined_top_dir = combined_dir + '/' + checkout_top_dir
187
+ if !Dir.exists?(combined_top_dir) then Dir.mkdir(combined_top_dir) end
188
+ Dir.entries(checkout_thing_dir + '/' + checkout_top_dir).grep(/\.(rb|json)$/).each do |file|
189
+ if opts[:vagrant_pov_link] then
190
+ # Under vagrant, we see this directory as /vagrant/checkouts/<checkout>/data_bags/<dbag>/<dbag_entry.json>
191
+ # Use -f so later checkouts can override earlier ones
192
+ cmd = "ln -sf /vagrant/#{checkout_thing_dir + '/' + checkout_top_dir}/#{file} combined/#{thing}/#{checkout_top_dir}/#{file}"
193
+ unless system cmd then raise "Could not '#{cmd}'" end
194
+ else
195
+ # Link as visible to the host machine
196
+ # Use -f so later checkouts can override earlier ones
197
+ cmd = "ln -sf ../../#{checkout_thing_dir + '/' + checkout_top_dir}/#{file} combined/#{thing}/#{checkout_top_dir}/#{file}"
198
+ unless system cmd then raise "Could not '#{cmd}'" end
199
+ end
186
200
  end
187
201
  end
188
202
  else
189
- Dir.entries(co_thing_dir).grep(/\.(rb|json)$/).each do |file|
190
- # Under vagrant, we see this directory as /vagrant/checkouts/foo/role/bar.rb
191
- # Use -f so later checkouts can override earlier ones
192
- cmd = "ln -sf /vagrant/#{co_thing_dir}/#{file} combined/#{thing}/#{file}"
193
- unless system cmd then raise "Could not '#{cmd}'" end
203
+ Dir.entries(checkout_thing_dir).grep(/\.(rb|json)$/).each do |file|
204
+ if opts[:vagrant_pov_link] then
205
+ # Under vagrant, we see this directory as /vagrant/checkouts/foo/role/bar.rb
206
+ # Use -f so later checkouts can override earlier ones
207
+ cmd = "ln -sf /vagrant/#{checkout_thing_dir}/#{file} combined/#{thing}/#{file}"
208
+ unless system cmd then raise "Could not '#{cmd}'" end
209
+ else
210
+ # Link as visible to the host machine
211
+ # Use -f so later checkouts can override earlier ones
212
+ cmd = "ln -sf ../../#{checkout_thing_dir}/#{file} combined/#{thing}/#{file}"
213
+ unless system cmd then raise "Could not '#{cmd}'" end
214
+ end
194
215
  end
195
216
  end
196
217
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-cookbook-fetcher
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: