homebrew-cask/developer/bin/list_loaded_launchjob_ids

85 lines
1.7 KiB
Bash
Executable File

#!/bin/bash
#
# list_loaded_launchjob_ids
#
###
### settings
###
set -e # exit on any uncaught error
set +o histexpand # don't expand history expressions
shopt -s nocasematch # case-insensitive regular expressions
###
### global variables
###
###
### functions
###
launchjob_id_source_1 () {
if [[ "$EUID" -ne 0 ]]; then
/usr/bin/sudo -p 'Optionally give your sudo password: ' -- /bin/launchctl list | /usr/bin/cut -f3
fi
}
launchjob_id_source_2 () {
/bin/launchctl list | /usr/bin/cut -f3
}
merge_sources () {
/usr/bin/sort | /usr/bin/uniq
}
clean_sources () {
/usr/bin/egrep -v '^Label$' | \
/usr/bin/egrep -v '^com\.apple\.' | \
/usr/bin/egrep -v '^0x[0-9a-f]+\.anonymous\.' | \
/usr/bin/egrep -v '^\[0x' | \
/usr/bin/egrep -v '\.[0-9]+$'
}
###
### main
###
_list_loaded_launchjob_ids () {
{
launchjob_id_source_1;
launchjob_id_source_2;
} | \
clean_sources | \
merge_sources
}
# process args
if [[ $1 =~ ^-+h(elp)?$ ]]; then
printf "list_loaded_launchjob_ids
List IDs for currently-loaded launchctl jobs, which may be useful
in a Cask uninstall stanza, eg
uninstall :launchctl => 'job.id.goes.here'
If this command is not run as the superuser, you will be prompted
for a password to run a subcommand using 'sudo'. The password is
not required, but supplying it may reveal additional job ids. To
skip using the password, press <return> repeatedly.
Launchctl jobs attributed to Apple are excluded from the output.
See CONTRIBUTING.md and 'man launchctl' for more information.
"
exit
fi
# dispatch main
_list_loaded_launchjob_ids "${@}"
#