DebArrs/sonarr.sh

98 lines
2.9 KiB
Bash
Raw Normal View History

2024-05-18 12:01:42 +10:00
#!/usr/bin/env zsh
json=$(curl -Ls https://api.github.com/repos/Sonarr/Sonarr/releases/latest --header "Authorization: Bearer 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" --header "X-GitHub-Api-Version: 2022-11-28")
name=$(jq '.name' <<<$json | tr -d '"')
2024-05-18 12:10:07 +10:00
echo "Building Sonarr v$name"
2024-05-18 12:01:42 +10:00
control_file="Section: video
Priority: optional
Standards-Version: 3.9.2
Maintainer: alex
Package: sonarr
Version: $name
Architecture: REPLACE_ARCHITECTURE
Description: sonarr"
package_info="PackageAuthor=alex
UpdateMethod=External
UpdateMethodMessage=rebuild apt packages
Branch=main"
2024-05-18 12:31:20 +10:00
service_file="# Be sure to use \`systemctl edit sonarr\` to modify this service with an override.conf because
2024-05-18 12:01:42 +10:00
# direct changes will be overwritten by package updates.
#
# A user per service w/ shared group setup would have an override like:
# [Service]
# Group=sharedgroupname
# UMask=002
[Unit]
Description=Sonarr Service
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=sonarr
Group=sonarr
SyslogIdentifier=sonarr
ExecStart=/usr/lib/sonarr/bin/Sonarr -nobrowser -data=/var/lib/sonarr
Restart=on-failure
[Install]
WantedBy=multi-user.target"
sysusers_file="u sonarr - - /var/lib/sonarr
g sonarr -"
tmpfiles_file="# Override this file with a modified version in /etc/tmpfiles.d/
d /var/lib/sonarr 0755 sonarr sonarr
Z /var/lib/sonarr - sonarr sonarr
L /var/log/sonarr - - - - /var/lib/sonarr/logs/"
rel_info=$(jq '.assets[] | select(.name | contains("linux")) | select(.name | contains("musl") | not)' <<<$json)
declare -a tarballs=($(jq '"\(.browser_download_url) /\(.name)"' <<<$rel_info | tr -d '"' | tr "\n" " "))
for ((i = 1; i < ${#tarballs[@]}; i += 2)); do
url="${tarballs[i]}"
filename="${tarballs[i + 1]#/}"
arch=$(sed -E "s/^.+?linux-(.+?).tar.gz$/\1/g" <<<"${tarballs[i + 1]}")
if [[ "$arch" == "x64" ]]; then
arch="amd64"
fi
if [[ "$arch" == "arm" ]]; then
arch="armhf"
fi
if [ -z "$1" ] || [[ "$arch" == "$1" ]]; then
2024-05-18 12:21:01 +10:00
echo "Building for $arch..."
2024-05-18 12:01:42 +10:00
dir=$(mktemp -d)
current_dir=$PWD
mkdir -p $dir/sonarr
cd $dir/sonarr
mkdir -p usr/lib/sysusers.d
echo $sysusers_file >usr/lib/sysusers.d/sonarr.conf
mkdir -p usr/lib/systemd/system
echo $service_file >usr/lib/systemd/system/sonarr.service
mkdir -p usr/lib/tmpfiles.d
echo $tmpfiles_file >usr/lib/tmpfiles.d/sonarr.conf
mkdir -p usr/lib/sonarr
echo "$package_info\nPackageVersion=$name" >usr/lib/sonarr/package_info
curl -Ls $url | tar xz
rm -rf Sonarr/Sonarr.Update
mv Sonarr usr/lib/sonarr/bin
2024-05-18 12:37:38 +10:00
chmod -R a=,a+rX,u+w usr/lib/sonarr/bin
2024-05-18 12:36:05 +10:00
chmod +x usr/lib/sonarr/bin/Sonarr
2024-05-18 12:01:42 +10:00
mkdir -p DEBIAN
echo $control_file | sed -E "s/REPLACE_ARCHITECTURE/$arch/g" >DEBIAN/control
cd $dir
dpkg-deb --build sonarr
2024-05-18 12:14:59 +10:00
mkdir -p $current_dir/build/sonarr
cp sonarr.deb $current_dir/build/sonarr/sonarr-$name-$arch.deb
2024-05-18 12:01:42 +10:00
cd $current_dir
2024-05-18 12:23:03 +10:00
rm -rf $dir
2024-05-18 12:01:42 +10:00
else
2024-05-18 12:21:01 +10:00
echo "Skipping arch $arch"
2024-05-18 12:01:42 +10:00
fi
done