From 87ecd621ebd3f3bfc170fc6e09eba84301b80027 Mon Sep 17 00:00:00 2001 From: Xu Cheng Date: Thu, 25 Feb 2016 14:14:33 +0800 Subject: [PATCH] add Tap#tap_migrations This enables tap migration feature in per tap case, which will ultimately help core/formula separation. --- Library/Homebrew/core_formula_repository.rb | 6 ++++++ Library/Homebrew/tap.rb | 12 ++++++++++++ Library/Homebrew/test/test_tap.rb | 4 ++++ 3 files changed, 22 insertions(+) diff --git a/Library/Homebrew/core_formula_repository.rb b/Library/Homebrew/core_formula_repository.rb index 124e9ea3ab..c29b89566a 100644 --- a/Library/Homebrew/core_formula_repository.rb +++ b/Library/Homebrew/core_formula_repository.rb @@ -68,6 +68,12 @@ class CoreFormulaRepository < Tap FORMULA_RENAMES end + # @private + def tap_migrations + require "tap_migrations" + TAP_MIGRATIONS + end + # @private def formula_file_to_name(file) file.basename(".rb").to_s diff --git a/Library/Homebrew/tap.rb b/Library/Homebrew/tap.rb index 08e85688db..b1bc9ab0b7 100644 --- a/Library/Homebrew/tap.rb +++ b/Library/Homebrew/tap.rb @@ -76,6 +76,7 @@ class Tap @alias_reverse_table = nil @command_files = nil @formula_renames = nil + @tap_migrations = nil end # The remote path to this {Tap}. @@ -370,6 +371,17 @@ class Tap end end + # Hash with tap migrations + def tap_migrations + require "utils/json" + + @tap_migrations ||= if (migration_file = path/"tap_migrations.json").file? + Utils::JSON.load(migration_file.read) + else + {} + end + end + def ==(other) other = Tap.fetch(other) if other.is_a?(String) self.class == other.class && self.name == other.name diff --git a/Library/Homebrew/test/test_tap.rb b/Library/Homebrew/test/test_tap.rb index 1159eb9921..278132bade 100644 --- a/Library/Homebrew/test/test_tap.rb +++ b/Library/Homebrew/test/test_tap.rb @@ -20,6 +20,9 @@ class TapTest < Homebrew::TestCase (@path/"formula_renames.json").write <<-EOS.undent { "oldname": "foo" } EOS + (@path/"tap_migrations.json").write <<-EOS.undent + { "removed-formula": "homebrew/foo" } + EOS @cmd_file = @path/"cmd/brew-tap-cmd.rb" @cmd_file.parent.mkpath FileUtils.touch @cmd_file @@ -93,6 +96,7 @@ class TapTest < Homebrew::TestCase assert_equal @tap.alias_table, "homebrew/foo/bar" => "homebrew/foo/foo" assert_equal @tap.alias_reverse_table, "homebrew/foo/foo" => ["homebrew/foo/bar"] assert_equal @tap.formula_renames, "oldname" => "foo" + assert_equal @tap.tap_migrations, "removed-formula" => "homebrew/foo" assert_equal [@cmd_file], @tap.command_files assert_kind_of Hash, @tap.to_hash assert_equal true, @tap.formula_file?(@formula_file)