bump-formula-pr: make --dry-run conflict with --write
Also add `--commit` to a create commit without opening a pull request
This commit is contained in:
parent
537a93ceef
commit
88ebbd5692
@ -32,9 +32,11 @@ module Homebrew
|
||||
switch "-n", "--dry-run",
|
||||
description: "Print what would be done rather than doing it."
|
||||
switch "--write",
|
||||
depends_on: "--dry-run",
|
||||
description: "When passed along with `--dry-run`, perform a not-so-dry run by making the expected "\
|
||||
"file modifications but not taking any Git actions."
|
||||
description: "Make the expected file modifications without taking any Git actions."
|
||||
switch "--commit",
|
||||
depends_on: "--write",
|
||||
description: "When passed with `--write`, generate a new commit after writing changes "\
|
||||
"to the formula file."
|
||||
switch "--no-audit",
|
||||
description: "Don't run `brew audit` before opening the PR."
|
||||
switch "--strict",
|
||||
@ -66,6 +68,7 @@ module Homebrew
|
||||
switch "-f", "--force",
|
||||
description: "Ignore duplicate open PRs. Remove all mirrors if --mirror= was not specified."
|
||||
|
||||
conflicts "--dry-run", "--write"
|
||||
conflicts "--no-audit", "--strict"
|
||||
conflicts "--url", "--tag"
|
||||
max_named 1
|
||||
@ -83,7 +86,7 @@ module Homebrew
|
||||
previous_branch = "master" if previous_branch.empty?
|
||||
formula_path = formula.path.to_s[%r{(Formula/.*)}, 1]
|
||||
|
||||
if args.dry_run?
|
||||
if args.dry_run? || args.write?
|
||||
ohai "git remote add #{homebrew_core_remote} #{homebrew_core_url}"
|
||||
ohai "git fetch #{homebrew_core_remote} #{homebrew_core_branch}"
|
||||
ohai "git cat-file -e #{origin_branch}:#{formula_path}"
|
||||
@ -245,8 +248,7 @@ module Homebrew
|
||||
]
|
||||
end
|
||||
|
||||
read_only_run = args.dry_run? && !args.write?
|
||||
old_contents = File.read(formula.path) unless read_only_run
|
||||
old_contents = File.read(formula.path) unless args.dry_run?
|
||||
|
||||
if new_mirrors
|
||||
replacement_pairs << [
|
||||
@ -296,7 +298,7 @@ module Homebrew
|
||||
end
|
||||
new_contents = Utils::Inreplace.inreplace_pairs(formula.path,
|
||||
replacement_pairs.uniq.compact,
|
||||
read_only_run: read_only_run,
|
||||
read_only_run: args.dry_run?,
|
||||
silent: args.quiet?)
|
||||
|
||||
new_formula_version = formula_version(formula, requested_spec, new_contents)
|
||||
@ -313,13 +315,13 @@ module Homebrew
|
||||
end
|
||||
|
||||
if new_formula_version < old_formula_version
|
||||
formula.path.atomic_write(old_contents) unless read_only_run
|
||||
formula.path.atomic_write(old_contents) unless args.dry_run?
|
||||
odie <<~EOS
|
||||
You need to bump this formula manually since changing the
|
||||
version from #{old_formula_version} to #{new_formula_version} would be a downgrade.
|
||||
EOS
|
||||
elsif new_formula_version == old_formula_version
|
||||
formula.path.atomic_write(old_contents) unless read_only_run
|
||||
formula.path.atomic_write(old_contents) unless args.dry_run?
|
||||
odie <<~EOS
|
||||
You need to bump this formula manually since the new version
|
||||
and old version are both #{new_formula_version}.
|
||||
@ -332,7 +334,7 @@ module Homebrew
|
||||
alias_rename.map! { |a| formula.tap.alias_dir/a }
|
||||
end
|
||||
|
||||
unless read_only_run
|
||||
unless args.dry_run?
|
||||
PyPI.update_python_resources! formula, new_formula_version, silent: args.quiet?, ignore_non_pypi_packages: true
|
||||
end
|
||||
|
||||
@ -346,7 +348,7 @@ module Homebrew
|
||||
changed_files = [formula.path]
|
||||
changed_files += alias_rename if alias_rename.present?
|
||||
|
||||
if args.dry_run?
|
||||
if args.dry_run? || (args.write? && !args.commit?)
|
||||
ohai "try to fork repository with GitHub API" unless args.no_fork?
|
||||
ohai "git fetch --unshallow origin" if shallow
|
||||
ohai "git add #{alias_rename.first} #{alias_rename.last}" if alias_rename.present?
|
||||
@ -358,24 +360,15 @@ module Homebrew
|
||||
ohai "create pull request with GitHub API (base branch: #{base_branch})"
|
||||
else
|
||||
|
||||
if args.no_fork?
|
||||
remote_url = Utils.popen_read("git remote get-url --push origin").chomp
|
||||
username = formula.tap.user
|
||||
else
|
||||
begin
|
||||
remote_url, username = GitHub.forked_repo_info!(tap_full_name)
|
||||
rescue *GitHub.api_errors => e
|
||||
formula.path.atomic_write(old_contents)
|
||||
odie "Unable to fork: #{e.message}!"
|
||||
end
|
||||
end
|
||||
|
||||
safe_system "git", "fetch", "--unshallow", "origin" if shallow
|
||||
safe_system "git", "fetch", "--unshallow", "origin" if shallow && !args.commit?
|
||||
safe_system "git", "add", *alias_rename if alias_rename.present?
|
||||
safe_system "git", "checkout", "--no-track", "-b", branch, origin_branch
|
||||
safe_system "git", "checkout", "--no-track", "-b", branch, origin_branch unless args.commit?
|
||||
safe_system "git", "commit", "--no-edit", "--verbose",
|
||||
"--message=#{formula.name} #{new_formula_version}",
|
||||
"--", *changed_files
|
||||
return if args.commit?
|
||||
|
||||
remote_url, username = determine_remote_and_username(formula, tap_full_name, old_contents, args: args)
|
||||
safe_system "git", "push", "--set-upstream", remote_url, "#{branch}:#{branch}"
|
||||
safe_system "git", "checkout", "--quiet", previous_branch
|
||||
pr_message = <<~EOS
|
||||
@ -514,4 +507,19 @@ module Homebrew
|
||||
FileUtils.mv alias_rename.last, alias_rename.first if alias_rename.present?
|
||||
odie "`brew audit` failed!"
|
||||
end
|
||||
|
||||
def determine_remote_and_username(formula, tap_full_name, old_contents, args:)
|
||||
if args.no_fork?
|
||||
remote_url = Utils.popen_read("git remote get-url --push origin").chomp
|
||||
username = formula.tap.user
|
||||
[remote_url, username]
|
||||
else
|
||||
begin
|
||||
GitHub.forked_repo_info!(tap_full_name)
|
||||
rescue *GitHub.api_errors => e
|
||||
formula.path.atomic_write(old_contents)
|
||||
odie "Unable to fork: #{e.message}!"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@ -841,7 +841,9 @@ nor vice versa. It must use whichever style specification the formula already us
|
||||
* `-n`, `--dry-run`:
|
||||
Print what would be done rather than doing it.
|
||||
* `--write`:
|
||||
When passed along with `--dry-run`, perform a not-so-dry run by making the expected file modifications but not taking any Git actions.
|
||||
Make the expected file modifications without taking any Git actions.
|
||||
* `--commit`:
|
||||
When passed with `--write`, generate a new commit after writing changes to the formula file.
|
||||
* `--no-audit`:
|
||||
Don't run `brew audit` before opening the PR.
|
||||
* `--strict`:
|
||||
|
||||
@ -1155,7 +1155,11 @@ Print what would be done rather than doing it\.
|
||||
.
|
||||
.TP
|
||||
\fB\-\-write\fR
|
||||
When passed along with \fB\-\-dry\-run\fR, perform a not\-so\-dry run by making the expected file modifications but not taking any Git actions\.
|
||||
Make the expected file modifications without taking any Git actions\.
|
||||
.
|
||||
.TP
|
||||
\fB\-\-commit\fR
|
||||
When passed with \fB\-\-write\fR, generate a new commit after writing changes to the formula file\.
|
||||
.
|
||||
.TP
|
||||
\fB\-\-no\-audit\fR
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user