#!/bin/zsh # Setting up colors BOLDRED="$(printf '\033[1;31m')" BOLDGREEN="$(printf '\033[1;32m')" NC="$(printf '\033[0m')" # No Color # Stop and unload the service if it's running launchctl unload ~/Library/LaunchAgents/org.user.Jackett.plist &>/dev/null # Move working directory to Jackett's cd "$(dirname "$0")" # Check if we're running from Jackett's directory if [ ! -f ./jackett ]; then echo "${BOLDRED}ERROR${NC}: Couldn't locate ./jackett - Is the script in the right directory?" exit 1 fi jackettdir="$(pwd)" # Check that no other service called Jackett is already running if [[ $(launchctl list | grep org.user.Jackett) ]]; then echo "${BOLDRED}ERROR${NC}: Jackett already seems to be running as a service. Please stop it before running this script again." exit 1 fi # Write the plist to LaunchAgents mkdir -p ~/Library/LaunchAgents/ cat >~/Library/LaunchAgents/org.user.Jackett.plist < EnvironmentVariables PATH /usr/bin:/bin:/usr/sbin:/sbin KeepAlive Label org.user.Jackett ProgramArguments ${jackettdir}/jackett --NoRestart RunAtLoad WorkingDirectory ${jackettdir} EOL # Un-quarantine all dylib and DLL files qstr="$(xattr -p com.apple.quarantine jackett)" 2>/dev/null if [[ $qstr ]]; then echo "Removing Jackett executable and all .dylib and .dll files from quarantine..." qstr="00c1${qstr:4}" xattr -w com.apple.quarantine $qstr jackett xattr -w com.apple.quarantine $qstr *.{dylib,dll} fi # Run the agent launchctl load ~/Library/LaunchAgents/org.user.Jackett.plist # Check that it's running if [[ $(launchctl list | grep org.user.Jackett) ]]; then echo "${BOLDGREEN}Agent successfully installed and launched!${NC}" else cat << EOL ${BOLDRED}ERROR${NC}: Could not launch agent. The installation might have failed. Please open an issue on https://github.com/Jackett/Jackett/issues and paste following information: Jackett directory: \`${jackettdir}\` EOL fi