Merge pull request #12702 from MikeMcQuaid/bump-open-pr
dev-cmd/bump: add switch to open pull requests.
This commit is contained in:
		
						commit
						56780a8d2d
					
				@ -25,12 +25,15 @@ module Homebrew
 | 
				
			|||||||
             description: "Check only formulae."
 | 
					             description: "Check only formulae."
 | 
				
			||||||
      switch "--cask", "--casks",
 | 
					      switch "--cask", "--casks",
 | 
				
			||||||
             description: "Check only casks."
 | 
					             description: "Check only casks."
 | 
				
			||||||
 | 
					      switch "--open-pr",
 | 
				
			||||||
 | 
					             description: "Open a pull request for the new version if there are none already open."
 | 
				
			||||||
      flag   "--limit=",
 | 
					      flag   "--limit=",
 | 
				
			||||||
             description: "Limit number of package results returned."
 | 
					             description: "Limit number of package results returned."
 | 
				
			||||||
      flag   "--start-with=",
 | 
					      flag   "--start-with=",
 | 
				
			||||||
             description: "Letter or word that the list of package results should alphabetically follow."
 | 
					             description: "Letter or word that the list of package results should alphabetically follow."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      conflicts "--cask", "--formula"
 | 
					      conflicts "--cask", "--formula"
 | 
				
			||||||
 | 
					      conflicts "--no-pull-requests", "--open-pr"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      named_args [:formula, :cask]
 | 
					      named_args [:formula, :cask]
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
@ -103,7 +106,7 @@ module Homebrew
 | 
				
			|||||||
        end
 | 
					        end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        package_data = Repology.single_package_query(name, repository: repository)
 | 
					        package_data = Repology.single_package_query(name, repository: repository)
 | 
				
			||||||
        retrieve_and_display_info(
 | 
					        retrieve_and_display_info_and_open_pr(
 | 
				
			||||||
          formula_or_cask,
 | 
					          formula_or_cask,
 | 
				
			||||||
          name,
 | 
					          name,
 | 
				
			||||||
          package_data&.values&.first,
 | 
					          package_data&.values&.first,
 | 
				
			||||||
@ -157,7 +160,13 @@ module Homebrew
 | 
				
			|||||||
          end
 | 
					          end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          puts if i.positive?
 | 
					          puts if i.positive?
 | 
				
			||||||
          retrieve_and_display_info(formula_or_cask, name, repositories, args: args, ambiguous_cask: ambiguous_cask)
 | 
					          retrieve_and_display_info_and_open_pr(
 | 
				
			||||||
 | 
					            formula_or_cask,
 | 
				
			||||||
 | 
					            name,
 | 
				
			||||||
 | 
					            repositories,
 | 
				
			||||||
 | 
					            args:           args,
 | 
				
			||||||
 | 
					            ambiguous_cask: ambiguous_cask,
 | 
				
			||||||
 | 
					          )
 | 
				
			||||||
        end
 | 
					        end
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
@ -205,44 +214,59 @@ module Homebrew
 | 
				
			|||||||
      pull_requests = pull_requests.map { |pr| "#{pr["title"]} (#{Formatter.url(pr["html_url"])})" }.join(", ")
 | 
					      pull_requests = pull_requests.map { |pr| "#{pr["title"]} (#{Formatter.url(pr["html_url"])})" }.join(", ")
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return "none" if pull_requests.blank?
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    pull_requests
 | 
					    pull_requests
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def retrieve_and_display_info(formula_or_cask, name, repositories, args:, ambiguous_cask: false)
 | 
					  def retrieve_and_display_info_and_open_pr(formula_or_cask, name, repositories, args:, ambiguous_cask: false)
 | 
				
			||||||
    current_version = if formula_or_cask.is_a?(Formula)
 | 
					    if formula_or_cask.is_a?(Formula)
 | 
				
			||||||
      formula_or_cask.stable.version
 | 
					      current_version = formula_or_cask.stable.version
 | 
				
			||||||
 | 
					      type = :formula
 | 
				
			||||||
 | 
					      version_name = "formula version"
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
      Version.new(formula_or_cask.version)
 | 
					      current_version = Version.new(formula_or_cask.version)
 | 
				
			||||||
 | 
					      type = :cask
 | 
				
			||||||
 | 
					      version_name = "cask version   "
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    livecheck_latest = livecheck_result(formula_or_cask)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    repology_latest = if repositories.present?
 | 
					    repology_latest = if repositories.present?
 | 
				
			||||||
      Repology.latest_version(repositories)
 | 
					      Repology.latest_version(repositories)
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
      "not found"
 | 
					      "not found"
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    livecheck_latest = livecheck_result(formula_or_cask)
 | 
					    new_version = if livecheck_latest.is_a?(Version) && livecheck_latest > current_version
 | 
				
			||||||
    pull_requests = if !args.no_pull_requests? && (args.named.present? ||
 | 
					      livecheck_latest
 | 
				
			||||||
                       (livecheck_latest.is_a?(Version) && livecheck_latest != current_version))
 | 
					    elsif repology_latest.is_a?(Version) && repology_latest > current_version
 | 
				
			||||||
      retrieve_pull_requests(formula_or_cask, name)
 | 
					      repology_latest
 | 
				
			||||||
    end
 | 
					    end.presence
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    name += " (cask)" if ambiguous_cask
 | 
					    pull_requests = if !args.no_pull_requests? && (args.named.present? || new_version)
 | 
				
			||||||
 | 
					      retrieve_pull_requests(formula_or_cask, name)
 | 
				
			||||||
 | 
					    end.presence
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    title_name = ambiguous_cask ? "#{name} (cask)" : name
 | 
				
			||||||
    title = if current_version == repology_latest &&
 | 
					    title = if current_version == repology_latest &&
 | 
				
			||||||
               current_version == livecheck_latest
 | 
					               current_version == livecheck_latest
 | 
				
			||||||
      "#{name} #{Tty.green}is up to date!#{Tty.reset}"
 | 
					      "#{title_name} #{Tty.green}is up to date!#{Tty.reset}"
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
      name
 | 
					      title_name
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ohai title
 | 
					    ohai title
 | 
				
			||||||
    puts <<~EOS
 | 
					    puts <<~EOS
 | 
				
			||||||
      Current #{formula_or_cask.is_a?(Formula) ? "formula version:" : "cask version:   "}  #{current_version}
 | 
					      Current #{version_name}:  #{current_version}
 | 
				
			||||||
      Latest livecheck version: #{livecheck_latest}
 | 
					      Latest livecheck version: #{livecheck_latest}
 | 
				
			||||||
      Latest Repology version:  #{repology_latest}
 | 
					      Latest Repology version:  #{repology_latest}
 | 
				
			||||||
 | 
					      Open pull requests:       #{pull_requests || "none"}
 | 
				
			||||||
    EOS
 | 
					    EOS
 | 
				
			||||||
    puts "Open pull requests:       #{pull_requests}" unless pull_requests.nil?
 | 
					
 | 
				
			||||||
 | 
					    return unless args.open_pr?
 | 
				
			||||||
 | 
					    return unless new_version
 | 
				
			||||||
 | 
					    return if pull_requests
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    system HOMEBREW_BREW_FILE, "bump-#{type}-pr", "--no-browse",
 | 
				
			||||||
 | 
					           "--message=Created by `brew bump`", "--version=#{new_version}", name
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
				
			|||||||
@ -99,6 +99,6 @@ module Repology
 | 
				
			|||||||
    # scheme
 | 
					    # scheme
 | 
				
			||||||
    return "no latest version" if latest_version.blank?
 | 
					    return "no latest version" if latest_version.blank?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    latest_version["version"]
 | 
					    Version.new(latest_version["version"])
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
				
			|||||||
@ -436,6 +436,7 @@ _brew_bump() {
 | 
				
			|||||||
      --help
 | 
					      --help
 | 
				
			||||||
      --limit
 | 
					      --limit
 | 
				
			||||||
      --no-pull-requests
 | 
					      --no-pull-requests
 | 
				
			||||||
 | 
					      --open-pr
 | 
				
			||||||
      --quiet
 | 
					      --quiet
 | 
				
			||||||
      --start-with
 | 
					      --start-with
 | 
				
			||||||
      --verbose
 | 
					      --verbose
 | 
				
			||||||
 | 
				
			|||||||
@ -388,6 +388,7 @@ __fish_brew_complete_arg 'bump' -l full-name -d 'Print formulae/casks with fully
 | 
				
			|||||||
__fish_brew_complete_arg 'bump' -l help -d 'Show this message'
 | 
					__fish_brew_complete_arg 'bump' -l help -d 'Show this message'
 | 
				
			||||||
__fish_brew_complete_arg 'bump' -l limit -d 'Limit number of package results returned'
 | 
					__fish_brew_complete_arg 'bump' -l limit -d 'Limit number of package results returned'
 | 
				
			||||||
__fish_brew_complete_arg 'bump' -l no-pull-requests -d 'Do not retrieve pull requests from GitHub'
 | 
					__fish_brew_complete_arg 'bump' -l no-pull-requests -d 'Do not retrieve pull requests from GitHub'
 | 
				
			||||||
 | 
					__fish_brew_complete_arg 'bump' -l open-pr -d 'Open a pull request for the new version if there are none already open'
 | 
				
			||||||
__fish_brew_complete_arg 'bump' -l quiet -d 'Make some output more quiet'
 | 
					__fish_brew_complete_arg 'bump' -l quiet -d 'Make some output more quiet'
 | 
				
			||||||
__fish_brew_complete_arg 'bump' -l start-with -d 'Letter or word that the list of package results should alphabetically follow'
 | 
					__fish_brew_complete_arg 'bump' -l start-with -d 'Letter or word that the list of package results should alphabetically follow'
 | 
				
			||||||
__fish_brew_complete_arg 'bump' -l verbose -d 'Make some output more verbose'
 | 
					__fish_brew_complete_arg 'bump' -l verbose -d 'Make some output more verbose'
 | 
				
			||||||
 | 
				
			|||||||
@ -478,6 +478,7 @@ _brew_bump() {
 | 
				
			|||||||
    '--help[Show this message]' \
 | 
					    '--help[Show this message]' \
 | 
				
			||||||
    '--limit[Limit number of package results returned]' \
 | 
					    '--limit[Limit number of package results returned]' \
 | 
				
			||||||
    '--no-pull-requests[Do not retrieve pull requests from GitHub]' \
 | 
					    '--no-pull-requests[Do not retrieve pull requests from GitHub]' \
 | 
				
			||||||
 | 
					    '--open-pr[Open a pull request for the new version if there are none already open]' \
 | 
				
			||||||
    '--quiet[Make some output more quiet]' \
 | 
					    '--quiet[Make some output more quiet]' \
 | 
				
			||||||
    '--start-with[Letter or word that the list of package results should alphabetically follow]' \
 | 
					    '--start-with[Letter or word that the list of package results should alphabetically follow]' \
 | 
				
			||||||
    '--verbose[Make some output more verbose]' \
 | 
					    '--verbose[Make some output more verbose]' \
 | 
				
			||||||
 | 
				
			|||||||
@ -926,6 +926,8 @@ formulae, also displays whether a pull request has been opened with the URL.
 | 
				
			|||||||
  Check only formulae.
 | 
					  Check only formulae.
 | 
				
			||||||
* `--cask`:
 | 
					* `--cask`:
 | 
				
			||||||
  Check only casks.
 | 
					  Check only casks.
 | 
				
			||||||
 | 
					* `--open-pr`:
 | 
				
			||||||
 | 
					  Open a pull request for the new version if there are none already open.
 | 
				
			||||||
* `--limit`:
 | 
					* `--limit`:
 | 
				
			||||||
  Limit number of package results returned.
 | 
					  Limit number of package results returned.
 | 
				
			||||||
* `--start-with`:
 | 
					* `--start-with`:
 | 
				
			||||||
 | 
				
			|||||||
@ -1295,6 +1295,10 @@ Check only formulae\.
 | 
				
			|||||||
Check only casks\.
 | 
					Check only casks\.
 | 
				
			||||||
.
 | 
					.
 | 
				
			||||||
.TP
 | 
					.TP
 | 
				
			||||||
 | 
					\fB\-\-open\-pr\fR
 | 
				
			||||||
 | 
					Open a pull request for the new version if there are none already open\.
 | 
				
			||||||
 | 
					.
 | 
				
			||||||
 | 
					.TP
 | 
				
			||||||
\fB\-\-limit\fR
 | 
					\fB\-\-limit\fR
 | 
				
			||||||
Limit number of package results returned\.
 | 
					Limit number of package results returned\.
 | 
				
			||||||
.
 | 
					.
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user