sudo: change sudo_user to sudo_as_root.
This commit is contained in:
parent
d470661b37
commit
476d97934f
@ -105,27 +105,31 @@ module Cask
|
||||
|
||||
all_services.each do |service|
|
||||
ohai "Removing launchctl service #{service}"
|
||||
booleans.each do |with_sudo|
|
||||
sudo_user = with_sudo ? "root" : nil
|
||||
booleans.each do |sudo|
|
||||
plist_status = command.run(
|
||||
"/bin/launchctl",
|
||||
args: ["list", service],
|
||||
sudo: with_sudo,
|
||||
sudo_user: sudo_user,
|
||||
sudo: sudo,
|
||||
sudo_as_root: sudo,
|
||||
print_stderr: false,
|
||||
).stdout
|
||||
if plist_status.start_with?("{")
|
||||
command.run!("/bin/launchctl", args: ["remove", service], sudo: sudo_user)
|
||||
command.run!(
|
||||
"/bin/launchctl",
|
||||
args: ["remove", service],
|
||||
sudo: sudo,
|
||||
sudo_as_root: sudo,
|
||||
)
|
||||
sleep 1
|
||||
end
|
||||
paths = [
|
||||
+"/Library/LaunchAgents/#{service}.plist",
|
||||
+"/Library/LaunchDaemons/#{service}.plist",
|
||||
]
|
||||
paths.each { |elt| elt.prepend(Dir.home).freeze } unless with_sudo
|
||||
paths.each { |elt| elt.prepend(Dir.home).freeze } unless sudo
|
||||
paths = paths.map { |elt| Pathname(elt) }.select(&:exist?)
|
||||
paths.each do |path|
|
||||
command.run!("/bin/rm", args: ["-f", "--", path], sudo: with_sudo, sudo_user: sudo_user)
|
||||
command.run!("/bin/rm", args: ["-f", "--", path], sudo: sudo, sudo_as_root: sudo)
|
||||
end
|
||||
# undocumented and untested: pass a path to uninstall :launchctl
|
||||
next unless Pathname(service).exist?
|
||||
@ -133,14 +137,14 @@ module Cask
|
||||
command.run!(
|
||||
"/bin/launchctl",
|
||||
args: ["unload", "-w", "--", service],
|
||||
sudo: with_sudo,
|
||||
sudo_user: sudo_user,
|
||||
sudo: sudo,
|
||||
sudo_as_root: sudo,
|
||||
)
|
||||
command.run!(
|
||||
"/bin/rm",
|
||||
args: ["-f", "--", service],
|
||||
sudo: with_sudo,
|
||||
sudo_user: sudo_user,
|
||||
sudo: sudo,
|
||||
sudo_as_root: sudo,
|
||||
)
|
||||
sleep 1
|
||||
end
|
||||
@ -318,30 +322,30 @@ module Cask
|
||||
"/usr/sbin/kextstat",
|
||||
args: ["-l", "-b", kext],
|
||||
sudo: true,
|
||||
sudo_user: "root",
|
||||
sudo_as_root: true,
|
||||
).stdout
|
||||
if is_loaded.length > 1
|
||||
system_command!(
|
||||
"/sbin/kextunload",
|
||||
args: ["-b", kext],
|
||||
sudo: true,
|
||||
sudo_user: "root",
|
||||
sudo_as_root: true,
|
||||
)
|
||||
sleep 1
|
||||
end
|
||||
kexts = system_command!(
|
||||
found_kexts = system_command!(
|
||||
"/usr/sbin/kextfind",
|
||||
args: ["-b", kext],
|
||||
sudo: true,
|
||||
sudo_user: "root",
|
||||
).stdout
|
||||
kexts.chomp.lines.each do |kext_path|
|
||||
sudo_as_root: true,
|
||||
).stdout.chomp.lines
|
||||
found_kexts.each do |kext_path|
|
||||
ohai "Removing kernel extension #{kext_path}"
|
||||
system_command!(
|
||||
"/bin/rm",
|
||||
args: ["-rf", kext_path],
|
||||
sudo: true,
|
||||
sudo_user: "root",
|
||||
sudo_as_root: true,
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
@ -22,7 +22,12 @@ module Cask
|
||||
private
|
||||
|
||||
def delete_keyboard_layout_cache(command: nil, **_)
|
||||
command.run!("/bin/rm", args: ["-f", "--", "/System/Library/Caches/com.apple.IntlDataCache.le*"], sudo: true)
|
||||
command.run!(
|
||||
"/bin/rm",
|
||||
args: ["-f", "--", "/System/Library/Caches/com.apple.IntlDataCache.le*"],
|
||||
sudo: true,
|
||||
sudo_as_root: true,
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@ -62,7 +62,14 @@ module Cask
|
||||
"USER" => User.current,
|
||||
"USERNAME" => User.current,
|
||||
}
|
||||
command.run!("/usr/sbin/installer", sudo: true, sudo_user: "root", args: args, print_stdout: true, env: env)
|
||||
command.run!(
|
||||
"/usr/sbin/installer",
|
||||
sudo: true,
|
||||
sudo_as_root: true,
|
||||
args: args,
|
||||
print_stdout: true,
|
||||
env: env,
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@ -33,7 +33,7 @@ module Cask
|
||||
args: ["-0", "--", "/bin/rm", "--"],
|
||||
input: pkgutil_bom_files.join("\0"),
|
||||
sudo: true,
|
||||
sudo_user: "root",
|
||||
sudo_as_root: true,
|
||||
)
|
||||
end
|
||||
|
||||
@ -44,7 +44,7 @@ module Cask
|
||||
args: ["-0", "--", "/bin/rm", "--"],
|
||||
input: pkgutil_bom_specials.join("\0"),
|
||||
sudo: true,
|
||||
sudo_user: "root",
|
||||
sudo_as_root: true,
|
||||
)
|
||||
end
|
||||
|
||||
@ -61,7 +61,12 @@ module Cask
|
||||
sig { void }
|
||||
def forget
|
||||
odebug "Unregistering pkg receipt (aka forgetting)"
|
||||
@command.run!("/usr/sbin/pkgutil", args: ["--forget", package_id], sudo: true, sudo_user: "root")
|
||||
@command.run!(
|
||||
"/usr/sbin/pkgutil",
|
||||
args: ["--forget", package_id],
|
||||
sudo: true,
|
||||
sudo_as_root: true,
|
||||
)
|
||||
end
|
||||
|
||||
sig { returns(T::Array[Pathname]) }
|
||||
@ -117,7 +122,7 @@ module Cask
|
||||
args: ["-0", "--", RMDIR_SH.to_s],
|
||||
input: Array(path).join("\0"),
|
||||
sudo: true,
|
||||
sudo_user: "root",
|
||||
sudo_as_root: true,
|
||||
)
|
||||
end
|
||||
|
||||
|
||||
@ -107,6 +107,9 @@ class SystemCommand
|
||||
sig { returns(T::Boolean) }
|
||||
def sudo?; end
|
||||
|
||||
sig { returns(T::Boolean) }
|
||||
def sudo_as_root?; end
|
||||
|
||||
sig { returns(T::Boolean) }
|
||||
def print_stdout?; end
|
||||
|
||||
|
||||
@ -65,7 +65,7 @@ class SystemCommand
|
||||
executable: T.any(String, Pathname),
|
||||
args: T::Array[T.any(String, Integer, Float, URI::Generic)],
|
||||
sudo: T::Boolean,
|
||||
sudo_user: T.nilable(String),
|
||||
sudo_as_root: T::Boolean,
|
||||
env: T::Hash[String, String],
|
||||
input: T.any(String, T::Array[String]),
|
||||
must_succeed: T::Boolean,
|
||||
@ -82,7 +82,7 @@ class SystemCommand
|
||||
executable,
|
||||
args: [],
|
||||
sudo: false,
|
||||
sudo_user: nil,
|
||||
sudo_as_root: false,
|
||||
env: {},
|
||||
input: [],
|
||||
must_succeed: false,
|
||||
@ -98,10 +98,10 @@ class SystemCommand
|
||||
@executable = executable
|
||||
@args = args
|
||||
|
||||
raise ArgumentError, "sudo_user cannot be set if sudo is false" if !sudo && !sudo_user.nil?
|
||||
raise ArgumentError, "sudo_as_root cannot be set if sudo is false" if !sudo && sudo_as_root
|
||||
|
||||
@sudo = sudo
|
||||
@sudo_user = sudo_user
|
||||
@sudo_as_root = sudo_as_root
|
||||
env.each_key do |name|
|
||||
next if /^[\w&&\D]\w*$/.match?(name)
|
||||
|
||||
@ -128,7 +128,7 @@ class SystemCommand
|
||||
|
||||
attr_reader :executable, :args, :input, :chdir, :env
|
||||
|
||||
attr_predicate :sudo?, :print_stdout?, :print_stderr?, :must_succeed?
|
||||
attr_predicate :sudo?, :sudo_as_root?, :print_stdout?, :print_stderr?, :must_succeed?
|
||||
|
||||
sig { returns(T::Boolean) }
|
||||
def debug?
|
||||
@ -159,7 +159,8 @@ class SystemCommand
|
||||
|
||||
sig { returns(T::Array[String]) }
|
||||
def sudo_prefix
|
||||
user_flags = @sudo_user.nil? ? [] : ["-u", @sudo_user]
|
||||
user_flags = []
|
||||
user_flags += ["-u", "root"] if sudo_as_root?
|
||||
askpass_flags = ENV.key?("SUDO_ASKPASS") ? ["-A"] : []
|
||||
["/usr/bin/sudo", *user_flags, *askpass_flags, "-E", *env_args, "--"]
|
||||
end
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user