Files
autopirate/patch_compose.sh

76 lines
2.9 KiB
Bash
Executable File

#!/bin/bash
if [ ! -f .env ]; then
echo "Please create a .env file"
exit 1
fi
source .env
# User / Group ID will be determined automagically
id_output=$(id)
PUID=$(echo "$id_output" | awk -F'[=|(]' '{print $2}')
PGID=$(echo "$id_output" | awk -F'[=|(]' '{print $4}')
# Hack for synology...
PGID=101
# Create the necessary folders
mkdir -p $PATH_TO_DOWNLOADS/{complete,incomplete,sonarr,radarr,readarr_audio,readarr_book,torrents}
mkdir -p "$PATH_TO_TV" "$PATH_TO_MOVIES" "$PATH_TO_AUDIOBOOKS" "$PATH_TO_BOOKS"
mkdir -p $PATH_TO_CONFIG/{deluge,gluetun,overseer,prowlarr,radarr,readarr_audiobooks,readarr_books,sabnzbd,sonarr}
mkdir -p $PATH_TO_CONFIG/plex/{tmp,config,transcode}
# Use the correct sed command depending on host system
if [[ "$OSTYPE" == "linux-gnu" ]]; then
SED="sed -i"
elif [[ "$OSTYPE" == "darwin"* ]]; then
SED="sed -i ''"
else
echo "Unsupported operating system"
exit 1
fi
cp docker-compose.yaml.tmpl docker-compose.yaml
# Preserve ownership between host and containers
eval "$SED \"s/{{PUID}}/$PUID/g\" docker-compose.yaml"
eval "$SED \"s/{{PGID}}/$PGID/g\" docker-compose.yaml"
# Network Config
eval "$SED \"s/{{GLUETUN_SUBNET}}/$(echo "$GLUETUN_SUBNET" | sed 's/\//\\\//g')/g\" docker-compose.yaml"
eval "$SED \"s/{{GLUETUN_IP}}/$GLUETUN_IP/g\" docker-compose.yaml"
eval "$SED \"s/{{PLEX_IP}}/$PLEX_IP/g\" docker-compose.yaml"
# Path Config
eval "$SED \"s/{{PATH_TO_DOWNLOADS}}/$(echo "$PATH_TO_DOWNLOADS" | sed 's/\//\\\//g')/g\" docker-compose.yaml"
eval "$SED \"s/{{PATH_TO_CONFIG}}/$(echo "$PATH_TO_CONFIG" | sed 's/\//\\\//g')/g\" docker-compose.yaml"
eval "$SED \"s/{{PATH_TO_TV}}/$(echo "$PATH_TO_TV" | sed 's/\//\\\//g')/g\" docker-compose.yaml"
eval "$SED \"s/{{PATH_TO_MOVIES}}/$(echo "$PATH_TO_MOVIES" | sed 's/\//\\\//g')/g\" docker-compose.yaml"
eval "$SED \"s/{{PATH_TO_BOOKS}}/$(echo "$PATH_TO_BOOKS" | sed 's/\//\\\//g')/g\" docker-compose.yaml"
eval "$SED \"s/{{PATH_TO_AUDIOBOOKS}}/$(echo "$PATH_TO_AUDIOBOOKS" | sed 's/\//\\\//g')/g\" docker-compose.yaml"
if [[ "$VPN_SERVICE_PROVIDER" == "mullvad" ]]; then
VPN_CONFIG=$(cat <<EOF
- VPN_TYPE=$VPN_TYPE
- VPN_SERVICE_PROVIDER=$VPN_SERVICE_PROVIDER
- WIREGUARD_PRIVATE_KEY=$WIREGUARD_PRIVATE_KEY
- WIREGUARD_ADDRESSES=$WIREGUARD_ADDRESSES
- SERVER_CITIES=$SERVER_CITIES
EOF
)
elif [[ "$VPN_SERVICE_PROVIDER" == "custom" ]]; then
VPN_CONFIG=$(cat <<EOF
- VPN_TYPE=$VPN_TYPE
- VPN_SERVICE_PROVIDER=$VPN_SERVICE_PROVIDER
- VPN_ENDPOINT_IP=$VPN_ENDPOINT_IP
- VPN_ENDPOINT_PORT=$VPN_ENDPOINT_PORT
- WIREGUARD_PRIVATE_KEY=$WIREGUARD_PRIVATE_KEY
- WIREGUARD_PUBLIC_KEY=$WIREGUARD_PUBLIC_KEY
- WIREGUARD_ADDRESSES=$WIREGUARD_ADDRESSES
EOF
)
fi
# Perform the substitution using awk with suppressed warning
awk -v new_config="$VPN_CONFIG" '{ sub(/{{VPN_CONFIG}}/, new_config) }1' docker-compose.yaml > docker-compose.tmp
mv docker-compose.tmp docker-compose.yaml