From c3a2bf34a2bb11b9354f88bbbd83a817b6b879bf Mon Sep 17 00:00:00 2001
From: Mike McQuaid <mike@mikemcquaid.com>
Date: Sun, 18 Dec 2016 13:18:46 -0800
Subject: [PATCH] tap_migrations: support renaming to/from casks.

Allow `tap_migrations` entries to have a `user/repo/formula` or
`user/repo/cask` format for migration of formulae to/from casks.
---
 Library/Homebrew/cmd/update-report.rb | 23 ++++++++++++++++-------
 Library/Homebrew/formulary.rb         |  2 ++
 2 files changed, 18 insertions(+), 7 deletions(-)

diff --git a/Library/Homebrew/cmd/update-report.rb b/Library/Homebrew/cmd/update-report.rb
index 10b433dd25..caa1e01adf 100644
--- a/Library/Homebrew/cmd/update-report.rb
+++ b/Library/Homebrew/cmd/update-report.rb
@@ -421,18 +421,27 @@ class Reporter
       new_tap_name = tap.tap_migrations[name]
       next if new_tap_name.nil? # skip if not in tap_migrations list.
 
+      new_tap_user, new_tap_repo, new_tap_new_name = new_tap_name.split("/")
+      new_name = if new_tap_new_name
+        new_full_name = new_tap_new_name
+        new_tap_name = "#{new_tap_user}/#{new_tap_repo}"
+        new_tap_new_name
+      else
+        new_full_name = "#{new_tap_name}/#{name}"
+        name
+      end
+
       # This means it is a Cask
       if report[:DC].include? full_name
-        next unless (HOMEBREW_PREFIX/"Caskroom"/name).exist?
+        next unless (HOMEBREW_PREFIX/"Caskroom"/new_name).exist?
         new_tap = Tap.fetch(new_tap_name)
         new_tap.install unless new_tap.installed?
         ohai "#{name} has been moved to Homebrew.", <<-EOS.undent
           To uninstall the cask run:
             brew cask uninstall --force #{name}
         EOS
-        new_full_name = "#{new_tap_name}/#{name}"
-        next if (HOMEBREW_CELLAR/name.split("/").last).directory?
-        ohai "Installing #{name}..."
+        next if (HOMEBREW_CELLAR/new_name.split("/").last).directory?
+        ohai "Installing #{new_name}..."
         system HOMEBREW_BREW_FILE, "install", new_full_name
         begin
           unless Formulary.factory(new_full_name).keg_only?
@@ -456,13 +465,13 @@ class Reporter
           system HOMEBREW_BREW_FILE, "uninstall", "--force", name
           ohai "brew prune"
           system HOMEBREW_BREW_FILE, "prune"
-          ohai "brew cask install #{name}"
-          system HOMEBREW_BREW_FILE, "cask", "install", name
+          ohai "brew cask install #{new_name}"
+          system HOMEBREW_BREW_FILE, "cask", "install", new_name
         else
           ohai "#{name} has been moved to Homebrew-Cask.", <<-EOS.undent
             To uninstall the formula and install the cask run:
               brew uninstall --force #{name}
-              brew cask install #{name}
+              brew cask install #{new_name}
           EOS
         end
       else
diff --git a/Library/Homebrew/formulary.rb b/Library/Homebrew/formulary.rb
index 40370cec3a..fadd894570 100644
--- a/Library/Homebrew/formulary.rb
+++ b/Library/Homebrew/formulary.rb
@@ -186,6 +186,8 @@ class Formulary
           name = new_name
           new_name = @tap.core_tap? ? name : "#{@tap}/#{name}"
         elsif (new_tap_name = @tap.tap_migrations[name])
+          new_tap_user, new_tap_repo, = new_tap_name.split("/")
+          new_tap_name = "#{new_tap_user}/#{new_tap_repo}"
           new_tap = Tap.fetch new_tap_name
           new_tap.install unless new_tap.installed?
           new_tapped_name = "#{new_tap_name}/#{name}"
-- 
GitLab