bump-formula-pr: rename versioned alias if necessary

This commit is contained in:
Christian Moritz 2019-07-14 02:02:31 +02:00
parent 59b1d63bb0
commit 2d9e7922b9

View File

@ -273,6 +273,12 @@ module Homebrew
EOS
end
alias_rename = alias_update_pair(formula, new_formula_version)
if alias_rename.present?
ohai "renaming alias #{alias_rename.first} to #{alias_rename.last}"
alias_rename.map! { |a| formula.tap.alias_dir/a }
end
if args.dry_run?
if args.no_audit?
ohai "Skipping `brew audit`"
@ -282,6 +288,7 @@ module Homebrew
ohai "brew audit #{formula.path.basename}"
end
else
FileUtils.mv alias_rename.first, alias_rename.last if alias_rename.present?
failed_audit = false
if args.no_audit?
ohai "Skipping `brew audit`"
@ -294,6 +301,7 @@ module Homebrew
end
if failed_audit
formula.path.atomic_write(backup_file)
FileUtils.mv alias_rename.last, alias_rename.first if alias_rename.present?
odie "brew audit failed!"
end
end
@ -302,13 +310,16 @@ module Homebrew
branch = "#{formula.name}-#{new_formula_version}"
git_dir = Utils.popen_read("git rev-parse --git-dir").chomp
shallow = !git_dir.empty? && File.exist?("#{git_dir}/shallow")
changed_files = [formula.path]
changed_files += alias_rename if alias_rename.present?
if args.dry_run?
ohai "try to fork repository with GitHub API"
ohai "git fetch --unshallow origin" if shallow
ohai "git add #{alias_rename.first} #{alias_rename.last}" if alias_rename.present?
ohai "git checkout --no-track -b #{branch} origin/master"
ohai "git commit --no-edit --verbose --message='#{formula.name} " \
"#{new_formula_version}#{devel_message}' -- #{formula.path}"
"#{new_formula_version}#{devel_message}' -- #{changed_files.join(" ")}"
ohai "git push --set-upstream $HUB_REMOTE #{branch}:#{branch}"
ohai "git checkout --quiet -"
ohai "create pull request with GitHub API"
@ -338,10 +349,11 @@ module Homebrew
end
safe_system "git", "fetch", "--unshallow", "origin" if shallow
safe_system "git", "add", *alias_rename if alias_rename.present?
safe_system "git", "checkout", "--no-track", "-b", branch, "origin/master"
safe_system "git", "commit", "--no-edit", "--verbose",
"--message=#{formula.name} #{new_formula_version}#{devel_message}",
"--", formula.path
"--", *changed_files
safe_system "git", "push", "--set-upstream", remote_url, "#{branch}:#{branch}"
safe_system "git", "checkout", "--quiet", "-"
pr_message = <<~EOS
@ -440,4 +452,16 @@ module Homebrew
EOS
end
end
def alias_update_pair(formula, new_formula_version)
versioned_alias = formula.aliases.grep(/^.*@\d+(\.\d+)?$/).first
return if versioned_alias.nil?
name, old_alias_version = versioned_alias.split("@")
new_alias_regex = (old_alias_version.split(".").length == 1) ? /^\d+/ : /^\d+\.\d+/
new_alias_version, = *new_formula_version.to_s.match(new_alias_regex)
return if Version.create(new_alias_version) <= Version.create(old_alias_version)
[versioned_alias, "#{name}@#{new_alias_version}"]
end
end