#!/bin/zsh # Setting up colors BOLDRED="$(printf '\033[1;31m')" BOLDGREEN="$(printf '\033[1;32m')" NC="$(printf '\033[0m')" # No Color userid=$(id -u) # Stop and unload the service if it's running launchctl bootout gui/${userid}/org.user.Jackett &>/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 echo "Launching agent..." #launchctl load ~/Library/LaunchAgents/org.user.Jackett.plist launchctl bootstrap gui/${userid} ~/Library/LaunchAgents/org.user.Jackett.plist sleep .5 # Check that it's loaded if [[ $(launchctl list | grep org.user.Jackett) ]]; then # Check that service is running if [[ $(launchctl print gui/${userid}/org.user.Jackett | grep 'state') =~ "running" ]]; then echo "${BOLDGREEN}Agent successfully installed and running!${NC}" echo "Jackett location: ${jackettdir}" echo "Jackett agent:" launchctl print gui/${userid}/org.user.Jackett | egrep 'state|pid |path|working' else cat << EOL ${BOLDRED}ERROR${NC}: Agent was loaded but is not running. The installation might have failed. Please open an issue on https://github.com/Jackett/Jackett/issues and paste following information: *Jackett directory*: ${jackettdir} *launchctl info*: $(launchctl print gui/${userid}/org.user.Jackett) *LaunchAgents permissions*: $(ls -la ~/Library/LaunchAgents | egrep ' \.|Jackett') EOL fi else echo "${BOLDRED}ERROR${NC}: Agent could not be loaded. Please open an issue on https://github.com/Jackett/Jackett/issues and paste the output." echo "*Jackett directory*: ${jackettdir}" echo "*LaunchAgents permissions*:" ls -la ~/Library/LaunchAgents | egrep ' \.|Jackett' fi