Merge pull request #2359 from ilovezfs/migrator-allow-new-cellar-to-exist-already

migrator: allow new cellar to exist already
This commit is contained in:
ilovezfs 2017-03-23 07:56:58 -07:00 committed by GitHub
commit 54abadb202

View File

@ -147,15 +147,25 @@ class Migrator
end end
def migrate def migrate
if new_cellar.exist? if old_cellar.exist? && new_cellar.exist?
onoe "#{new_cellar} already exists; remove it manually and run brew migrate #{oldname}." conflicted = false
old_cellar.each_child do |c|
if (new_cellar/c.basename).exist?
conflicted = true
onoe "#{new_cellar/c.basename} already exists."
end
end
if conflicted
onoe "Remove #{new_cellar} manually and run brew migrate #{oldname}."
return return
end end
end
begin begin
oh1 "Migrating #{Formatter.identifier(oldname)} to #{Formatter.identifier(newname)}" oh1 "Migrating #{Formatter.identifier(oldname)} to #{Formatter.identifier(newname)}"
lock lock
unlink_oldname unlink_oldname
unlink_newname if new_cellar.exist?
move_to_new_directory move_to_new_directory
repin repin
link_oldname_cellar link_oldname_cellar
@ -178,8 +188,12 @@ class Migrator
# move everything from Cellar/oldname to Cellar/newname # move everything from Cellar/oldname to Cellar/newname
def move_to_new_directory def move_to_new_directory
puts "Moving to: #{new_cellar}" puts "Moving to: #{new_cellar}"
if new_cellar.exist?
FileUtils.mv(old_cellar.children, new_cellar)
else
FileUtils.mv(old_cellar, new_cellar) FileUtils.mv(old_cellar, new_cellar)
end end
end
def repin def repin
return unless pinned? return unless pinned?
@ -207,6 +221,14 @@ class Migrator
end end
end end
def unlink_newname
oh1 "Unlinking #{Formatter.identifier(newname)}"
new_cellar.subdirs.each do |d|
keg = Keg.new(d)
keg.unlink
end
end
def link_newname def link_newname
oh1 "Linking #{Formatter.identifier(newname)}" oh1 "Linking #{Formatter.identifier(newname)}"
new_keg = Keg.new(new_linked_keg_record) new_keg = Keg.new(new_linked_keg_record)