summaryrefslogtreecommitdiff
path: root/lib/chef/knife/cookbook_site_list.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/chef/knife/cookbook_site_list.rb')
-rw-r--r--lib/chef/knife/cookbook_site_list.rb42
1 files changed, 6 insertions, 36 deletions
diff --git a/lib/chef/knife/cookbook_site_list.rb b/lib/chef/knife/cookbook_site_list.rb
index 3b0b20a4df..b0ec22ac1e 100644
--- a/lib/chef/knife/cookbook_site_list.rb
+++ b/lib/chef/knife/cookbook_site_list.rb
@@ -17,49 +17,19 @@
#
require "chef/knife"
+require "chef/knife/supermarket_list"
class Chef
class Knife
- class CookbookSiteList < Knife
+ class CookbookSiteList < Knife::SupermarketList
+
+ # Handle the subclassing (knife doesn't do this :()
+ dependency_loaders.concat(superclass.dependency_loaders)
+ options.merge!(superclass.options)
banner "knife cookbook site list (options)"
category "cookbook site"
- option :with_uri,
- short: "-w",
- long: "--with-uri",
- description: "Show corresponding URIs"
-
- option :supermarket_site,
- short: "-m SUPERMARKET_SITE",
- long: "--supermarket-site SUPERMARKET_SITE",
- description: "Supermarket Site",
- default: "https://supermarket.chef.io",
- proc: Proc.new { |supermarket| Chef::Config[:knife][:supermarket_site] = supermarket }
-
- def run
- if config[:with_uri]
- cookbooks = Hash.new
- get_cookbook_list.each { |k, v| cookbooks[k] = v["cookbook"] }
- ui.output(format_for_display(cookbooks))
- else
- ui.msg(ui.list(get_cookbook_list.keys.sort, :columns_down))
- end
- end
-
- def get_cookbook_list(items = 10, start = 0, cookbook_collection = {})
- cookbooks_url = "#{config[:supermarket_site]}/api/v1/cookbooks?items=#{items}&start=#{start}"
- cr = noauth_rest.get(cookbooks_url)
- cr["items"].each do |cookbook|
- cookbook_collection[cookbook["cookbook_name"]] = cookbook
- end
- new_start = start + cr["items"].length
- if new_start < cr["total"]
- get_cookbook_list(items, new_start, cookbook_collection)
- else
- cookbook_collection
- end
- end
end
end
end