mirror of
https://github.com/Jackett/Jackett
synced 2024-12-22 07:43:13 +00:00
280572b3aa
Updates some legacy launchctl commands and adds a very short delay before installer checks whether agent was successfully launched
100 lines
3.2 KiB
Bash
Executable file
100 lines
3.2 KiB
Bash
Executable file
#!/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 <<EOL
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
<plist version="1.0">
|
|
<dict>
|
|
<key>EnvironmentVariables</key>
|
|
<dict>
|
|
<key>PATH</key>
|
|
<string>/usr/bin:/bin:/usr/sbin:/sbin</string>
|
|
</dict>
|
|
<key>KeepAlive</key>
|
|
<true/>
|
|
<key>Label</key>
|
|
<string>org.user.Jackett</string>
|
|
<key>ProgramArguments</key>
|
|
<array>
|
|
<string>${jackettdir}/jackett</string>
|
|
<string>--NoRestart</string>
|
|
</array>
|
|
<key>RunAtLoad</key>
|
|
<true/>
|
|
<key>WorkingDirectory</key>
|
|
<string>${jackettdir}</string>
|
|
</dict>
|
|
</plist>
|
|
|
|
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
|