Sha256: ea48560453d6528ca95255839cc007ced9dbd9b6da89b42784182cf044cd700f

Contents?: true

Size: 1.89 KB

Versions: 2

Compression:

Stored size: 1.89 KB

Contents

#
# Author:: Adam Jacob (<adam@opscode.com>)
# Author:: Daniel DeLeo (<dan@opscode.com>)
# Copyright:: Copyright (c) 2009, 2010 Opscode, Inc.
# License:: Apache License, Version 2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# 
#     http://www.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

require 'chef/knife'
require 'chef/knife/cookbook_delete'

class Chef
  class Knife
    class CookbookBulkDelete < Knife

      banner "Sub-Command: cookbook bulk delete REGEX (options)"

      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)
        
        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}")
            Chef::Log.info("Deleted cookbook  #{cookbook_name.ljust(25)} [#{version}]")
          end
        end
      end
    end
  end
end







Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
chef-0.9.0.rc01 lib/chef/knife/cookbook_bulk_delete.rb
chef-0.9.0.b02 lib/chef/knife/cookbook_bulk_delete.rb