73 lines
1.6 KiB
Bash
Executable file
73 lines
1.6 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
|
|
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
|
|
|