deployment/compile.sh
2025-03-18 23:27:50 +00:00

79 lines
1.9 KiB
Bash
Executable file

#!/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 --recurse-submodules
else
git clone --recurse-submodules "$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 buildx 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" \
--build-arg "VITE_SITE_NAME_SHORT=$VITE_SITE_NAME_SHORT" \
--build-arg "VITE_SITE_NAME_LONG=$VITE_SITE_NAME_LONG" \
--build-arg "VITE_DEFAULT_THEME=$VITE_DEFAULT_THEME" \
.
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