Merge pull request #2431 from reitermarkus/fix-sudo-root-wheel
Use `sudo` if parent path of `target` is not writable.
This commit is contained in:
commit
a365e16b48
@ -31,20 +31,26 @@ module Hbc
|
||||
|
||||
ohai "Moving #{self.class.artifact_english_name} '#{source.basename}' to '#{target}'."
|
||||
target.dirname.mkpath
|
||||
FileUtils.move(source, target)
|
||||
|
||||
if target.parent.writable?
|
||||
FileUtils.move(source, target)
|
||||
else
|
||||
SystemCommand.run("/bin/mv", args: [source, target], sudo: true)
|
||||
end
|
||||
|
||||
add_altname_metadata target, source.basename.to_s
|
||||
end
|
||||
|
||||
def delete
|
||||
ohai "Removing #{self.class.artifact_english_name} '#{target}'."
|
||||
return unless Utils.path_occupied?(target)
|
||||
|
||||
raise CaskError, "Cannot remove undeletable #{self.class.artifact_english_name}." if MacOS.undeletable?(target)
|
||||
|
||||
if force
|
||||
Utils.gain_permissions_remove(target, command: @command)
|
||||
else
|
||||
return unless Utils.path_occupied?(target)
|
||||
|
||||
if target.parent.writable? && !force
|
||||
target.rmtree
|
||||
else
|
||||
Utils.gain_permissions_remove(target, command: @command)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@ -38,7 +38,15 @@ module Hbc
|
||||
module Utils
|
||||
def self.gain_permissions_remove(path, command: SystemCommand)
|
||||
if path.respond_to?(:rmtree) && path.exist?
|
||||
gain_permissions(path, ["-R"], command, &:rmtree)
|
||||
gain_permissions(path, ["-R"], command) do |p|
|
||||
if p.parent.writable?
|
||||
p.rmtree
|
||||
else
|
||||
command.run("/bin/rm",
|
||||
args: command_args + ["-r", "-f", "--", p],
|
||||
sudo: true)
|
||||
end
|
||||
end
|
||||
elsif File.symlink?(path)
|
||||
gain_permissions(path, ["-h"], command, &FileUtils.method(:rm_f))
|
||||
end
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user