crafty-4/docker_launcher.sh
Zedifus c0006e47f4 Add version inheretence & config check
Also add pretty colours

Also config check will always return true but meh 🤷‍♂️
If api key location changes it will be accurate
2022-06-16 16:45:08 +01:00

60 lines
2.7 KiB
Bash
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/sh
# Check if config exists taking one from image if needed.
if [ ! "$(ls -A --ignore=.gitkeep ./app/config)" ]; then
echo "\033[36mWrapper | \033[33m🏗 Config not found, pulling defaults..."
mkdir ./app/config/ 2> /dev/null
cp -r ./app/config_original/* ./app/config/
if [ $(id -u) -eq 0 ]; then
# We're running as root;
# Look for files & dirs that require group permissions to be fixed
# This will do the full /crafty dir, so will take a miniute.
echo "\033[36mWrapper | \033[35m📋 Looking for problem bind mount permissions globally..."
find . ! -group root -exec chgrp root {} \;
find . ! -perm g+rw -exec chmod g+rw {} \;
find . -type d ! -perm g+s -exec chmod g+s {} \;
fi
else
# Keep version file up to date with image
cp -f ./app/config_original/version.json ./app/config/version.json
# Compare if user's config is different from image, and show differences.
echo "\033[36mWrapper | \033[35m🏗 Checking for config.json changes..."
cp -f ./app/config_original/config.json ./app/config/config_image_template
if [ "$(diff -q ./app/config/config.json ./app/config/config_image_template)" ]; then
echo "\033[36mWrapper | \033[33m👷 We've found differences in your local config, please review!,"
echo "\033[36m | \033[33m (This could be an outdated config.json)"
else
echo "\033[36mWrapper | \033[32m✅ Config good! Proceeding..."
fi
fi
if [ $(id -u) -eq 0 ]; then
# We're running as root
# If we find files in import directory, we need to ensure all dirs are owned by the root group,
# This fixes bind mounts that may have incorrect perms.
if [ "$(ls -A --ignore=.gitkeep ./import)" ]; then
echo "\033[36mWrapper | \033[35m📋 Files present in import directory, checking/fixing permissions..."
echo "\033[36mWrapper | \033[33m⏳ Please be paitent for larger servers..."
find . ! -group root -exec chgrp root {} \;
find . ! -perm g+rw -exec chmod g+rw {} \;
find . -type d ! -perm g+s -exec chmod g+s {} \;
echo "\033[36mWrapper | \033[32m✅ Permissions Fixed! (This will happen every boot until /import is empty!)"
fi
# Switch user, activate our prepared venv and lauch crafty
args="$@"
echo "\033[36mWrapper | \033[32m🚀 Launching crafty with [\033[34m$args\033[32m]"
exec sudo -u crafty bash -c "source ./.venv/bin/activate && exec python3 main.py $args"
else
# Activate our prepared venv
echo "\033[36mWrapper | \033[32m🚀 Non-root host detected, using normal exec"
. ./.venv/bin/activate
# Use exec as our perms are already correct
# This is likely if using Kubernetes/OpenShift etc
exec python3 main.py $@
fi