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
def migrate
if new_cellar.exist?
onoe "#{new_cellar} already exists; remove it manually and run brew migrate #{oldname}."
return
if old_cellar.exist? && new_cellar.exist?
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
end
end
begin
oh1 "Migrating #{Formatter.identifier(oldname)} to #{Formatter.identifier(newname)}"
lock
unlink_oldname
unlink_newname if new_cellar.exist?
move_to_new_directory
repin
link_oldname_cellar
@ -178,7 +188,11 @@ class Migrator
# move everything from Cellar/oldname to Cellar/newname
def move_to_new_directory
puts "Moving to: #{new_cellar}"
FileUtils.mv(old_cellar, new_cellar)
if new_cellar.exist?
FileUtils.mv(old_cellar.children, new_cellar)
else
FileUtils.mv(old_cellar, new_cellar)
end
end
def repin
@ -207,6 +221,14 @@ class Migrator
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
oh1 "Linking #{Formatter.identifier(newname)}"
new_keg = Keg.new(new_linked_keg_record)