@@ -313,6 +313,35 @@ def self.json_create(o)
313313 cookbook
314314 end
315315
316+ def display_manifest ( &url_generation )
317+ self . manifest ? self . manifest : self . generate_manifest
318+ [ 'resources' , 'providers' , 'recipes' , 'definitions' , 'libraries' , 'attributes' , 'files' , 'templates' ] . each do |segment |
319+ if manifest . has_key? ( segment )
320+ manifest [ segment ] . each do |segment_item |
321+ puts segment_item . inspect
322+ url_options = { :cookbook_id => name . to_s , :segment => segment , :id => segment_item [ "name" ] }
323+ set_specificity_arguments ( segment_item [ "specificity" ] , url_options )
324+ segment_item [ "uri" ] = url_generation . call ( url_options )
325+ end
326+ end
327+ end
328+ manifest
329+ end
330+
331+ def set_specificity_arguments ( specificity , url_options = { } )
332+ case specificity
333+ when "default"
334+ when /^host-(.+)$/
335+ url_options [ :fqdn ] = $1
336+ when /^(.+)-(.+)$/
337+ url_options [ :platform ] = $1
338+ url_options [ :version ] = $2
339+ when /^(.+)$/
340+ url_options [ :platform ] = $1
341+ end
342+ url_options
343+ end
344+
316345 def generate_manifest ( &url_generation )
317346 response = {
318347 :recipes => Array . new ,
@@ -324,6 +353,7 @@ def generate_manifest(&url_generation)
324353 :resources => Array . new ,
325354 :providers => Array . new
326355 }
356+
327357 [ :resources , :providers , :recipes , :definitions , :libraries , :attributes , :files , :templates ] . each do |segment |
328358 segment_files ( segment ) . each do |sf |
329359 next if File . directory? ( sf )
@@ -342,18 +372,7 @@ def generate_manifest(&url_generation)
342372 specificity = mo [ 1 ]
343373 file_name = mo [ 2 ]
344374 url_options = { :cookbook_id => name . to_s , :segment => segment , :id => file_name }
345-
346- case specificity
347- when "default"
348- when /^host-(.+)$/
349- url_options [ :fqdn ] = $1
350- when /^(.+)-(.+)$/
351- url_options [ :platform ] = $1
352- url_options [ :version ] = $2
353- when /^(.+)$/
354- url_options [ :platform ] = $1
355- end
356-
375+ set_specificity_arguments ( specificity , url_options )
357376 file_specificity = specificity
358377 else
359378 mo = sf . match ( "cookbooks/#{ name } /#{ segment } /(.+)" )
@@ -375,6 +394,7 @@ def generate_manifest(&url_generation)
375394 :checksum => checksum ( sf )
376395 }
377396 rs [ :specificity ] = file_specificity if file_specificity
397+
378398 response [ segment ] << rs
379399 end
380400 end
0 commit comments