Merge pull request #6361 from reitermarkus/login-items

Support deleting login items by path.
This commit is contained in:
Markus Reiter 2019-08-14 04:30:08 +02:00 committed by GitHub
commit 72c8a04c84
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -206,13 +206,22 @@ module Cask
def uninstall_login_item(*login_items, command: nil, upgrade: false, **_)
return if upgrade
login_items.each do |name|
ohai "Removing login item #{name}"
apps = cask.artifacts.select { |a| a.class.dsl_key == :app }
derived_login_items = apps.map { |a| { path: a.target } }
[*derived_login_items, *login_items].each do |item|
type, id = if item.respond_to?(:key) && item.key?(:path)
["path", item[:path]]
else
["name", item]
end
ohai "Removing login item #{id}"
system_command!(
"osascript",
args: [
"-e",
%Q(tell application "System Events" to delete every login item whose name is "#{name}"),
%Q(tell application "System Events" to delete every login item whose #{type} is #{id.to_s.inspect}),
],
)
sleep 1