Jafner.net/projects/5etools-docker/new-init.sh
2024-08-16 12:45:31 -07:00

138 lines
5.2 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
{
# Step 1. Check and print variable values:
echo " # Check and print variables:"
echo " # PUID:PGID: $PUID:$PGID"
echo " # OFFLINE_MODE: $OFFLINE_MODE"
echo " # GET_IMAGES: $GET_IMAGES"
echo " # HOMEBREW_URLS: $HOMEBREW_URLS"
# $HOMEBREW_PATH; host path containing homebrew json files to load
# $CONTENT_BLOCKLIST_FILE; file automatically imported to block content
}
{
# Step 2. Assert ownership of site files.
echo " # Setting ownership of site directory"
chown -R $PUID:$PGID /usr/local/apache2/htdocs
}
{
# Step 3. Check for offline mode.
# - If OFFLINE_MODE is set to TRUE, we check if the site files directory
# has a valid 5eTools version file.
# - If there is a valid version file, we start the server.
# - If there is no valid version, we exit with error.
# - Else we continue to step 4.
echo -n " # Checking OFFLINE_MODE: "
if [ "$OFFLINE_MODE" = "TRUE" ]; then
echo "enabled"
echo " # Will try to launch from local files."
echo -n " # Checking local version: "
if [ -f /usr/local/apache2/htdocs/package.json ]; then
VERSION=$(jq -r .version package.json) # Get version from package.json
echo "$VERSION"
echo " # Starting!"
httpd-foreground
else
echo "None found."
echo " # No local version detected. Exiting."
exit 1
fi
fi
}
{
# Step 4. Check for site update.
# - First we gather facts: local version, remote version, GET_IMAGES bool.
# - Check local and remote version tags of main site
cd /usr/local/apache2/htdocs
echo " # Checking version info"
echo -n " # Local version: "
if ! [[ -f package.json ]]; then
echo "None"
else
CURRENT_RELEASE_VERSION="v$(jq -r .version package.json)"
echo "$CURRENT_RELEASE_VERSION"
fi
echo -n " # Remote version: "
LATEST_RELEASE_VERSION=$(curl -s https://api.github.com/repos/5etools-mirror-2/5etools-mirror-2.github.io/releases/latest | grep tag_name | cut -d':' -f2 | tr -d \" | tr -d \,| head -n 1 | xargs)
echo "$LATEST_RELEASE_VERSION"
}
{
# Step 5. Handle image files.
# - Check if images are wanted, present:
# - Not wanted, not present: Skip.
# - Not wanted, present: Delete.
# - Wanted, not present: Get.
# - Wanted, present: Update.
echo " # Checking for image files"
if [[ "$GET_IMAGES" == "FALSE" ]]; then
if ! [[ -f /usr/local/apache2/htdocs/img/.version ]];
echo " # Image files not wanted, not present. Skipping."
else
echo " # Image files not wanted, but found locally. Deleting."
rm -rf /usr/local/apache2/htdocs/img
fi
else
if ! [[ -f /usr/local/apache2/htdocs/img/.version ]];
echo " # Image files wanted, not present. Downloading."
# TODO: Download image files. Create `.version` file for images.
IMG_LATEST_RELEASE_VERSION=$(curl -s https://api.github.com/repos/5etools-mirror-2/5etools-img/releases/latest | grep tag_name | cut -d':' -f2 | tr -d \" | tr -d \,| head -n 1 | xargs)
echo " # Getting list of img release files"
IMG_URLS=$(curl -s https://api.github.com/repos/5etools-mirror-2/5etools-img/releases/latest | grep browser_download_url | cut -d':' -f2,3 | tr -d \" | xargs)
echo " # Downloading img release files"
for file in $(echo $IMG_URLS); do echo "Downloading file: $file"; wget --directory-prefix=/tmp/ "$file"; done
echo " # Extracting img release archives"
unzip -d /usr/local/apache2/htdocs/img/ -n /tmp/img-*.zip
echo "$IMAGE_LATEST_RELEASE_VERSION" > /usr/local/apache2/htdocs/img/.version
echo " # Cleaning up archives"
rm /tmp/img-*
else
echo " # Image files wanted, and found locally. Checking for update."
# TODO: Diff local tag to remote latest. If different, download update.
# $1 = Repo path like 5etools-mirror-2/5etools-img
# $2 = Current tag like v1.209.0
# $3 = Compare tag like v1.209.3
# Returns bool; 1 if tags are identical
IMG_REPO=5etools-mirror-2/5etools-img
IMG_CURRENT_RELEASE_VERSION=$(cat /usr/local/apache2/htdocs/img/.version)
IMG_LATEST_RELEASE_VERSION=$(curl -s https://api.github.com/repos/5etools-mirror-2/5etools-img/releases/latest | grep tag_name | cut -d':' -f2 | tr -d \" | tr -d \,| head -n 1 | xargs)
TESTURL=${"https://github.com/$IMG_REPO/compare/$IMG_CURRENT_RELEASE_VERSION..$IMG_LATEST_RELEASE_VERSION"}
curl -s $TESTURL | grep "There isnt anything to compare"
DIFFERENT=$?
if [[ "$DIFFERENT" == "1" ]]; then
echo "new images, re-downloading image repo."
else
echo "no new images, skipping update."
fi
fi
fi
if [[ "$CURRENT_RELEASE_VERSION" == "$LATEST_RELEASE_VERSION" ]]; then
echo " # Downloading latest release"
fi
}
{
# Step 6. Update main site.
wget -O /tmp/5etools.zip $LATEST_RELEASE_URL
find /usr/local/apache2/htdocs/ -path ./homebrew -prune -o -type f -exec rm "{}" \;
unzip -d /usr/local/apache2/htdocs/ -n /tmp/5etools.zip
rm /tmp/5etools.zip
}
if [[ -f /usr/local/apache2/htdocs/img/.version ]]
# check for local image files in the img/ directory
# get image files
if [[ "$GET_IMAGES"=="TRUE" ]]; then
fi