#!/bin/bash #set -ex set -uo pipefail touch .hash source .hash echo "" > .hash FORCE="${1:-false}" function clone { DIRECTORY=$(basename "$1" .git) if [ -d "$DIRECTORY" ]; then pushd "$DIRECTORY" git pull else git clone "$1" declare HASH_$DIRECTORY=0 pushd "$DIRECTORY" fi REVPARSE=$(git rev-parse HEAD) TAINT=$(git status --porcelain | wc -l) OLD="HASH_$DIRECTORY" if [ "${!OLD:=0}" != "$REVPARSE" ]; then readonly TAINTED_$DIRECTORY="true" elif [ "$TAINT" != "0" ]; then readonly TAINTED_$DIRECTORY="true" else readonly TAINTED_$DIRECTORY="$FORCE" fi popd echo "HASH_$DIRECTORY=$REVPARSE" >> .hash } taintop() { TAINTED="TAINTED_$1" echo "tainted: $TAINTED" if [ "${!TAINTED}" = "true" ]; then pushd $1 shift 1 "$@" popd else echo "Taint not detected in $1, not building" fi } clone https://git.cef.icu/CEF/ergo.git clone https://git.cef.icu/CEF/grumble.git clone https://git.cef.icu/CEF/mediamtx.git clone https://git.cef.icu/CEF/3M.git clone https://git.cef.icu/CEF/CEF.git source .env taintop ergo docker build -t ergo . taintop grumble docker build -t grumble . taintop mediamtx docker build -t mediamtx . taintop 3M docker build -t 3m . taintop CEF docker build -t cef --build-arg "VITE_IRC_WEBSOCKET=$VITE_IRC_WEBSOCKET" --build-arg "VITE_3M_ADDRESS=$VITE_3M_ADDRESS" --build-arg "VITE_HOSTING_ADDRESS=$VITE_HOSTING_ADDRESS" --build-arg "VITE_VOICE_ADDRESS=$VITE_VOICE_ADDRESS" . mkdir -p www rm -rf www/* id=$(docker create cef) docker cp $id:/home/bun/app/dist /tmp/ sleep 1 docker cp $id:/home/bun/app/assets /tmp/ docker rm -v $id cp -r /tmp/dist/* www cp -r /tmp/assets/* www/assets rm -rf /tmp/dist