Refactor bump.rb methods into seperate modules
This commit is contained in:
		
							parent
							
								
									63b19c3518
								
							
						
					
					
						commit
						5f19a53195
					
				@ -42,85 +42,16 @@ module Homebrew
 | 
			
		||||
      return
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    outdated_packages = validate_and_format_packages(outdated_repology_packages)
 | 
			
		||||
    outdated_packages = Repology.validate_and_format_packages(outdated_repology_packages)
 | 
			
		||||
    display(outdated_packages)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def validate_and_format_packages(outdated_repology_packages)
 | 
			
		||||
    packages = {}
 | 
			
		||||
    outdated_repology_packages.each do |_name, repositories|
 | 
			
		||||
      # identify homebrew repo
 | 
			
		||||
      repology_homebrew_repo = repositories.find do |repo|
 | 
			
		||||
        repo["repo"] == "homebrew"
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      next if repology_homebrew_repo.blank?
 | 
			
		||||
 | 
			
		||||
      latest_version = repositories.find { |repo| repo["status"] == "newest" }["version"]
 | 
			
		||||
      srcname = repology_homebrew_repo["srcname"]
 | 
			
		||||
      package_details = format_package(srcname, latest_version)
 | 
			
		||||
      packages[srcname] = package_details unless package_details.nil?
 | 
			
		||||
 | 
			
		||||
      break if Homebrew.args.limit && packages.size >= Homebrew.args.limit.to_i
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    packages
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def format_package(package_name, latest_version)
 | 
			
		||||
    formula = get_formula_details(package_name)
 | 
			
		||||
 | 
			
		||||
    return if formula.blank?
 | 
			
		||||
 | 
			
		||||
    tap_full_name = formula.tap&.full_name
 | 
			
		||||
    current_version = current_formula_version(formula)
 | 
			
		||||
    livecheck_response = livecheck_formula(package_name)
 | 
			
		||||
    pull_requests = GitHub.check_for_duplicate_pull_requests(formula, tap_full_name, latest_version)
 | 
			
		||||
 | 
			
		||||
    if pull_requests.try(:any?)
 | 
			
		||||
      pull_requests = pull_requests.map { |pr| "#{pr[:title]} (#{Formatter.url(pr[:url])})" }.join(", ")
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    {
 | 
			
		||||
      repology_latest_version:  latest_version,
 | 
			
		||||
      current_formula_version:  current_version.to_s,
 | 
			
		||||
      livecheck_latest_version: livecheck_response[:livecheck_version],
 | 
			
		||||
      open_pull_requests:       pull_requests,
 | 
			
		||||
    }
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def get_formula_details(formula_name)
 | 
			
		||||
    Formula[formula_name]
 | 
			
		||||
  rescue
 | 
			
		||||
    nil
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def current_formula_version(formula)
 | 
			
		||||
    formula.version.to_s
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def livecheck_formula(formula)
 | 
			
		||||
    ohai "Checking livecheck formula: #{formula}" if Homebrew.args.verbose?
 | 
			
		||||
 | 
			
		||||
    response = Utils.popen_read(HOMEBREW_BREW_FILE, "livecheck", formula, "--quiet").chomp
 | 
			
		||||
 | 
			
		||||
    parse_livecheck_response(response)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def parse_livecheck_response(response)
 | 
			
		||||
    # e.g response => aacgain : 7834 ==> 1.8
 | 
			
		||||
    output = response.delete(" ").split(/:|==>/)
 | 
			
		||||
 | 
			
		||||
    # e.g. ["openclonk", "7.0", "8.1"]
 | 
			
		||||
    package_name, brew_version, latest_version = output
 | 
			
		||||
 | 
			
		||||
    {
 | 
			
		||||
      name:              package_name,
 | 
			
		||||
      formula_version:   brew_version,
 | 
			
		||||
      livecheck_version: latest_version,
 | 
			
		||||
    }
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def display(outdated_packages)
 | 
			
		||||
    puts
 | 
			
		||||
    outdated_packages.each do |formula, package_details|
 | 
			
		||||
 | 
			
		||||
@ -9,6 +9,7 @@ require "utils/git"
 | 
			
		||||
require "utils/github"
 | 
			
		||||
require "utils/inreplace"
 | 
			
		||||
require "utils/link"
 | 
			
		||||
require "utils/livecheck_formula"
 | 
			
		||||
require "utils/popen"
 | 
			
		||||
require "utils/repology"
 | 
			
		||||
require "utils/svn"
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										27
									
								
								Library/Homebrew/utils/livecheck_formula.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								Library/Homebrew/utils/livecheck_formula.rb
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,27 @@
 | 
			
		||||
# frozen_string_literal: true
 | 
			
		||||
 | 
			
		||||
module LivecheckFormula
 | 
			
		||||
  module_function
 | 
			
		||||
 | 
			
		||||
  def init(formula)
 | 
			
		||||
    ohai "Checking livecheck formula: #{formula}" if Homebrew.args.verbose?
 | 
			
		||||
 | 
			
		||||
    response = Utils.popen_read(HOMEBREW_BREW_FILE, "livecheck", formula, "--quiet").chomp
 | 
			
		||||
 | 
			
		||||
    parse_livecheck_response(response)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def parse_livecheck_response(response)
 | 
			
		||||
    # e.g response => aacgain : 7834 ==> 1.8
 | 
			
		||||
    output = response.delete(" ").split(/:|==>/)
 | 
			
		||||
 | 
			
		||||
    # e.g. ["openclonk", "7.0", "8.1"]
 | 
			
		||||
    package_name, brew_version, latest_version = output
 | 
			
		||||
 | 
			
		||||
    {
 | 
			
		||||
      name:              package_name,
 | 
			
		||||
      formula_version:   brew_version,
 | 
			
		||||
      livecheck_version: latest_version,
 | 
			
		||||
    }
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
@ -52,4 +52,48 @@ module Repology
 | 
			
		||||
 | 
			
		||||
    outdated_packages
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def validate_and_format_packages(outdated_repology_packages)
 | 
			
		||||
    packages = {}
 | 
			
		||||
    outdated_repology_packages.each do |_name, repositories|
 | 
			
		||||
      # identify homebrew repo
 | 
			
		||||
      repology_homebrew_repo = repositories.find do |repo|
 | 
			
		||||
        repo["repo"] == "homebrew"
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      next if repology_homebrew_repo.blank?
 | 
			
		||||
 | 
			
		||||
      latest_version = repositories.find { |repo| repo["status"] == "newest" }["version"]
 | 
			
		||||
      srcname = repology_homebrew_repo["srcname"]
 | 
			
		||||
      package_details = format_package(srcname, latest_version)
 | 
			
		||||
      packages[srcname] = package_details unless package_details.nil?
 | 
			
		||||
 | 
			
		||||
      break if Homebrew.args.limit && packages.size >= Homebrew.args.limit.to_i
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    packages
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def format_package(package_name, latest_version)
 | 
			
		||||
    formula = Formula[package_name]
 | 
			
		||||
 | 
			
		||||
    return if formula.blank?
 | 
			
		||||
 | 
			
		||||
    tap_full_name = formula.tap&.full_name
 | 
			
		||||
    current_version = formula.version.to_s
 | 
			
		||||
    livecheck_response = LivecheckFormula.init(package_name)
 | 
			
		||||
    pull_requests = GitHub.check_for_duplicate_pull_requests(formula, tap_full_name, latest_version)
 | 
			
		||||
 | 
			
		||||
    if pull_requests.try(:any?)
 | 
			
		||||
      pull_requests = pull_requests.map { |pr| "#{pr[:title]} (#{Formatter.url(pr[:url])})" }.join(", ")
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    {
 | 
			
		||||
      repology_latest_version:  latest_version,
 | 
			
		||||
      current_formula_version:  current_version.to_s,
 | 
			
		||||
      livecheck_latest_version: livecheck_response[:livecheck_version],
 | 
			
		||||
      open_pull_requests:       pull_requests,
 | 
			
		||||
    }
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user