116 lines
3.4 KiB
Bash
Executable File
116 lines
3.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Commandline args
|
|
action="$1"
|
|
environment="$2"
|
|
|
|
# local args
|
|
config="project.toml"
|
|
|
|
# pull project info from project.toml
|
|
project_info() {
|
|
local name=$(awk -F'[" ]+' '/^\[project\]/{getline; print $3}' "$config")
|
|
# project_version
|
|
local description=$(awk -F'[" ]+' '/description =/{print $3}' "$config")
|
|
local authors=$(awk -F'[" ]+' '/authors =/{gsub(/[\[\]]/, ""); getline; print $0}' "$config")
|
|
local src=$(awk -F'[" ]+' '/source =/{print $3}' "$config")
|
|
local license=$(awk -F'[" ]+' '/license =/{print $3}' "$config")
|
|
|
|
echo "$name $description $authors $src $license"
|
|
}
|
|
|
|
# Pulls container version from version.toml
|
|
container_version() {
|
|
local container="$1"
|
|
local version=$(awk -F'[" ]+' -v container="$container" '/^\[containers\]/{block=$1} block == "[containers]" && $1 == container {getline; print $3}' "$config")
|
|
echo "v$version"
|
|
}
|
|
|
|
# Pull project info
|
|
INFO=$(project_info)
|
|
echo $INFO
|
|
read -r name description authors src license <<< "$result"
|
|
echo $project_version
|
|
BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')
|
|
GIT_COMMIT=$(git rev-parse --short HEAD)
|
|
PROJECT_VERSION=$description
|
|
|
|
case $action in
|
|
help)
|
|
echo "timmypidashev.com | deploy script"
|
|
echo "Environments:"
|
|
echo " * dev"
|
|
echo " - development environment, builds include local https, debug mode, and hot reloading"
|
|
echo ""
|
|
echo " * prod"
|
|
echo " - production environment, builds include optimizations and are ready to roll"
|
|
echo ""
|
|
echo "Actions:"
|
|
echo " * build"
|
|
echo " - builds the entire stack without cache"
|
|
echo " - example: '{action} {environment}' or '{action} {environment}"
|
|
echo ""
|
|
echo " * run"
|
|
echo " - runs the entire stack with caching enabled"
|
|
echo " - example: '{action} {environment}'"
|
|
echo " - Note: individual containers cannot run on their own"
|
|
echo ""
|
|
echo " * bump"
|
|
echo " - bumps a containers version and the project version"
|
|
echo " - example: '{action} {container}'"
|
|
echo ""
|
|
echo " * push"
|
|
echo " - pushes an image to ghcr.io"
|
|
echo " - example: '{action} {container}"
|
|
echo " - Note: only production images are pushed"
|
|
exit 1
|
|
;;
|
|
|
|
build)
|
|
if [ "$environment" == "dev" ];
|
|
then
|
|
docker compose --file compose.dev.yml build \
|
|
--build-arg BUILD_DATE=$BUILD_DATE \
|
|
--build-arg GIT_COMMIT=$GIT_COMMIT \
|
|
--build-arg PROJECT_VERSION="$PROJECT_VERSION" \
|
|
--build-arg DNS_VERSION=$(container_version "dns") \
|
|
--build-arg PROXY_VERSION=$(container_version "proxy") \
|
|
|
|
elif [ "$environment" == "prod" ];
|
|
then
|
|
echo "build prod"
|
|
|
|
else
|
|
echo "Invalid environment. Use 'dev' or 'prod'!"
|
|
exit 1
|
|
fi
|
|
;;
|
|
|
|
run)
|
|
if [ "$environment" == "dev" ];
|
|
then
|
|
echo "run dev"
|
|
|
|
elif [ "$environment" == "prod" ];
|
|
then
|
|
echo "run prod"
|
|
|
|
else
|
|
echo "Invalid environment. Use 'dev' or 'prod'!"
|
|
exit 1
|
|
fi
|
|
;;
|
|
|
|
bump)
|
|
"bump pkg"
|
|
;;
|
|
|
|
push)
|
|
"push pkg"
|
|
;;
|
|
|
|
*)
|
|
echo "Invalid action. Use 'build', 'run', or 'push'!"
|
|
;;
|
|
esac
|