# File lib/chef/knife/cookbook_bulk_delete.rb, line 31
      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