def run
unless regex_str = @name_args.first
Chef::Log.fatal("You must supply a regular expression to match the results against")
exit 42
end
regex = Regexp.new(regex_str)
all_cookbooks = Chef::CookbookVersion.list
cookbooks_names = all_cookbooks.keys.grep(regex)
cookbooks_to_delete = cookbooks_names.inject({}) { |hash, name| hash[name] = all_cookbooks[name];hash }
output(format_list_for_display(cookbooks_to_delete))
confirm("Do you really want to delete these cookbooks? All versions will be deleted. (Y/N) ", false)
confirm("Files that are common to multiple cookbooks are shared, so purging the files may disable other cookbooks. Are you sure you want to purge files instead of just deleting the cookbooks") if config[:purge]
cookbooks_names.each do |cookbook_name|
versions = rest.get_rest("cookbooks/#{cookbook_name}").values.flatten
versions.each do |version|
object = rest.delete_rest("cookbooks/#{cookbook_name}/#{version}#{config[:purge] ? "?purge=true" : ""}")
Chef::Log.info("Deleted cookbook #{cookbook_name.ljust(25)} [#{version}]")
end
end
end