aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew
diff options
context:
space:
mode:
authorXu Cheng2016-02-25 14:14:33 +0800
committerXu Cheng2016-02-25 17:22:28 +0800
commit87ecd621ebd3f3bfc170fc6e09eba84301b80027 (patch)
tree937f65705f90fff9969e994520ecf10ebf5cb1a8 /Library/Homebrew
parenta7869783ada72693b4c1cd1b3247e268a35f7348 (diff)
downloadbrew-87ecd621ebd3f3bfc170fc6e09eba84301b80027.tar.bz2
add Tap#tap_migrations
This enables tap migration feature in per tap case, which will ultimately help core/formula separation.
Diffstat (limited to 'Library/Homebrew')
-rw-r--r--Library/Homebrew/core_formula_repository.rb6
-rw-r--r--Library/Homebrew/tap.rb12
-rw-r--r--Library/Homebrew/test/test_tap.rb4
3 files changed, 22 insertions, 0 deletions
diff --git a/Library/Homebrew/core_formula_repository.rb b/Library/Homebrew/core_formula_repository.rb
index 124e9ea3a..c29b89566 100644
--- a/Library/Homebrew/core_formula_repository.rb
+++ b/Library/Homebrew/core_formula_repository.rb
@@ -69,6 +69,12 @@ class CoreFormulaRepository < Tap
end
# @private
+ def tap_migrations
+ require "tap_migrations"
+ TAP_MIGRATIONS
+ end
+
+ # @private
def formula_file_to_name(file)
file.basename(".rb").to_s
end
diff --git a/Library/Homebrew/tap.rb b/Library/Homebrew/tap.rb
index 08e85688d..b1bc9ab0b 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 1159eb992..278132bad 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)