Add limit to repology api
This commit is contained in:
parent
7982e6f3c0
commit
afe9a48373
@ -38,7 +38,7 @@ module Homebrew
|
|||||||
|
|
||||||
response
|
response
|
||||||
else
|
else
|
||||||
Repology.parse_api_response
|
Repology.parse_api_response(requested_limit)
|
||||||
end
|
end
|
||||||
|
|
||||||
validated_formulae = {}
|
validated_formulae = {}
|
||||||
|
|||||||
@ -5,8 +5,6 @@ require "utils/curl"
|
|||||||
module Repology
|
module Repology
|
||||||
module_function
|
module_function
|
||||||
|
|
||||||
MAX_PAGINATION = 15
|
|
||||||
|
|
||||||
def query_api(last_package_in_response = "")
|
def query_api(last_package_in_response = "")
|
||||||
last_package_in_response += "/" if last_package_in_response.present?
|
last_package_in_response += "/" if last_package_in_response.present?
|
||||||
url = "https://repology.org/api/v1/projects/#{last_package_in_response}?inrepo=homebrew&outdated=1"
|
url = "https://repology.org/api/v1/projects/#{last_package_in_response}?inrepo=homebrew&outdated=1"
|
||||||
@ -28,26 +26,27 @@ module Repology
|
|||||||
homebrew.empty? ? nil : { name => data }
|
homebrew.empty? ? nil : { name => data }
|
||||||
end
|
end
|
||||||
|
|
||||||
def parse_api_response
|
def parse_api_response(limit = nil)
|
||||||
ohai "Querying outdated packages from Repology"
|
ohai "Querying outdated packages from Repology"
|
||||||
|
|
||||||
outdated_packages = query_api
|
|
||||||
last_package_index = outdated_packages.size - 1
|
|
||||||
response_size = outdated_packages.size
|
|
||||||
page_no = 1
|
page_no = 1
|
||||||
|
outdated_packages = query_api
|
||||||
|
response_size = outdated_packages.size
|
||||||
|
last_package_index = outdated_packages.size - 1
|
||||||
|
max_pagination = limit.nil? ? 15 : (limit.to_f / 200).ceil
|
||||||
|
|
||||||
while response_size > 1 && page_no <= MAX_PAGINATION
|
while response_size > 1 && page_no <= max_pagination
|
||||||
odebug "Paginating Repology API page: #{page_no}"
|
odebug "Paginating Repology API page: #{page_no}"
|
||||||
|
|
||||||
last_package_in_response = outdated_packages.keys[last_package_index]
|
last_package_in_response = outdated_packages.keys[last_package_index]
|
||||||
response = query_api(last_package_in_response)
|
response = query_api(last_package_in_response)
|
||||||
|
|
||||||
response_size = response.size
|
response_size = response.size
|
||||||
outdated_packages.merge!(response)
|
outdated_packages.merge!(response)
|
||||||
last_package_index = outdated_packages.size - 1
|
last_package_index = outdated_packages.size - 1
|
||||||
page_no += 1
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
outdated_packages = outdated_packages.first(limit) if outdated_packages.size > limit
|
||||||
|
|
||||||
puts "#{outdated_packages.size} outdated #{"package".pluralize(outdated_packages.size)} found"
|
puts "#{outdated_packages.size} outdated #{"package".pluralize(outdated_packages.size)} found"
|
||||||
puts
|
puts
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user