parse application source code into modules. replace HTTP query for brew version info

This commit is contained in:
Elizabeth Tackett 2020-06-30 09:57:34 -05:00
parent d557ca80bc
commit 3fb675626e
3 changed files with 95 additions and 5 deletions

View File

@ -0,0 +1,27 @@
# frozen_string_literal: true
require "open3"
module Livecheck
def livecheck_formula_response(formula_name)
puts "- livecheck formula : #{formula_name}"
command_args = [
"brew",
"livecheck",
formula_name,
"--quiet"
]
response = Open3.capture2e(*command_args)
parse_livecheck_response(response)
end
def parse_livecheck_response(response)
output = response.first.gsub(' ', '').split(/:|==>|\n/)
# eg: ["burp", "2.2.18", "2.2.18"]
package_name, brew_version, latest_version = output
{'name' => package_name, 'current_brew_version' => brew_version, 'livecheck_latest_version' => latest_version}
end
end

View File

@ -25,23 +25,50 @@ module RepologyParser
puts "\n- Paginating repology api page: #{page_no}"
outdated_packages = query_repology_api("")
last_pacakge_index = outdated_packages.size - 1
last_package_index = outdated_packages.size - 1
response_size = outdated_packages.size
while response_size > 1
while response_size > 1 do
page_no += 1
puts "\n- Paginating repology api page: #{page_no}"
last_package_in_response = outdated_packages.keys[last_pacakge_index]
last_package_in_response = outdated_packages.keys[last_package_index]
response = query_repology_api("#{last_package_in_response}/")
response_size = response.size
outdated_packages.merge!(response)
last_pacakge_index = outdated_packages.size - 1
last_package_index = outdated_packages.size - 1
end
puts "\n- #{outdated_packages.size} outdated packages identified by repology"
puts "\n- #{outdated_packages.size} outdated packages identified"
outdated_packages
end
def validate__repology_packages(outdated_repology_packages, brew_formulas)
puts "\n---- Verify Outdated Repology Packages as Homebrew Formulae -----"
packages = {}
outdated_repology_packages.each do |name, repositories|
# identify homebrew repo
repology_homebrew_repo = repositories.select do
|repo| repo['repo'] == 'homebrew'
end.first
next if repology_homebrew_repo.empty?
latest_version = nil
#identify latest version amongst repology repos
repositories.each do |repo|
latest_version = repo['version'] if repo['status'] == 'newest'
end
packages[repology_homebrew_repo['srcname']] = {
'repology_latest_version' => latest_version,
}
end
# hash of hashes {'openclonk' => {repology_latest_version => 7.0}, ..}
packages
end
end

View File

@ -0,0 +1,36 @@
# frozen_string_literal: true
require "open3"
require "formula"
module Versions
def current_formula_version(formula_name)
Formula[formula_name].version.to_s.to_f
end
def bump_formula_pr(formula_name, url)
command_args = [
"brew",
"bump-formula-pr",
"--no-browse",
"--dry-run",
formula_name,
"--url=#{url}",
]
response = Open3.capture2e(*command_args)
parse_formula_bump_response(response)
end
def parse_formula_bump_response(response)
response, status = formula_bump_response
response
end
def check_for_open_pr(formula_name, download_url)
puts "- Checking for open PRs for formula : #{formula_name}"
response = bump_formula_pr(formula_name, download_url)
!response.include? 'Error: These open pull requests may be duplicates'
end
end