barkey/dev.sh

115 lines
3 KiB
Bash
Executable file

#!/bin/bash
read -p "How do you want to develop? [(l)ocal / (c)ontainer] " devset
case $devset in
[Ll] )
echo "Going to create postgres and redis containers now. They will log to this terminal."
echo "Press Ctrl + C to exit."
sleep 2
devmode="local-db"
;;
[Cc] )
echo "Going to create a container environment you can work in."
echo "Simply exit to stop the environment."
sleep 2
devmode="local-dev"
;;
* )
echo "Invalid option supplied. Quitting..."
exit -1
;;
esac
cp ".config/$devmode.yml" .config/default.yml
cp .config/docker_ci.env .config/docker.env
if [[ "$devmode" == "local-dev" ]]; then
docker compose -f "./compose.$devmode.yml" up -d
docker compose -f "./compose.$devmode.yml" exec web apt-get update
docker compose -f "./compose.$devmode.yml" exec web apt-get install -y bash
echo Installing dependencies...
docker compose -f "./compose.$devmode.yml" exec web apt-get install -y git wget curl build-essential python3 ffmpeg libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev
docker compose -f "./compose.$devmode.yml" exec web corepack enable
docker compose -f "./compose.$devmode.yml" exec web corepack prepare pnpm@latest --activate
docker compose -f "./compose.$devmode.yml" exec web git submodule update --init
docker compose -f "./compose.$devmode.yml" exec web pnpm install --frozen-lockfile
read -p "Is this a new database? [y/N] " runinit
case $runinit in
[Yy] )
docker compose -f "./compose.$devmode.yml" exec web pnpm build
docker compose -f "./compose.$devmode.yml" exec web pnpm migrate
;;
* )
;;
esac
docker compose -f "./compose.$devmode.yml" exec web bash
echo Stopping containers...
docker compose -f "./compose.$devmode.yml" stop
fi
if [[ "$devmode" == "local-db" ]]; then
read -p "Did you setup corepack and enable pnpm? [Y/n] " getpnpm
case $getpnpm in
[Nn] )
corepack enable
corepack prepare pnpm@latest --activate
;;
* )
;;
esac
pnpm i
read -p "Is this a new database? [y/N] " runinit
case $runinit in
[Yy] )
docker compose -f "./compose.$devmode.yml" up -d
pnpm build
pnpm migrate
docker compose -f "./compose.$devmode.yml" down
;;
* )
;;
esac
docker compose -f "./compose.$devmode.yml" up
fi
read -p "Scrub dev environment? (Deletes containers AND instance!!!) [y/N] " scrubDev
case $scrubDev in
[Yy] )
if [[ "$devmode" == "local-dev" ]]; then
docker compose -f "./compose.$devmode.yml" start web
docker compose -f "./compose.$devmode.yml" exec web pnpm clean-all
else
pnpm clean-all
fi
docker compose -f "./compose.$devmode.yml" down
rm -rf ./db -v
rm -rf ./redis -v
rm -rf ./files -v
rm -rf ./node_modules -v #TODO: check if these last two are needed
rm -rf ./pnpm-store -v
;;
* )
;;
esac
# read -p "Reset databases? [y/N] " cleardb
# case $cleardb in
# [Yy] )
# echo "Clearning postgres..."
# rm -rf ./db
# sleep 1
# echo "Clearing redis..."
# rm -rf ./redis
# sleep 1
# ;;
# * )
# ;;
# esac