#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" COMPOSE_FILE="$SCRIPT_DIR/compose.yaml" SERVICE_NAME="jdescoping-host" show_help() { cat </dev/null 2>&1; then echo "docker is not installed or not in PATH" >&2 exit 1 fi if ! docker compose version >/dev/null 2>&1; then echo "docker compose is not available" >&2 exit 1 fi } compose() { docker compose -f "$COMPOSE_FILE" "$@" } command="deploy" no_build="false" remove_volumes="false" if [[ $# -gt 0 ]]; then command="$1" shift fi while [[ $# -gt 0 ]]; do case "$1" in --no-build) no_build="true" ;; --volumes) remove_volumes="true" ;; -h|--help) show_help exit 0 ;; *) echo "Unknown option: $1" >&2 show_help exit 1 ;; esac shift done ensure_compose case "$command" in deploy) if [[ "$no_build" == "true" ]]; then compose up -d --force-recreate --no-build "$SERVICE_NAME" else compose up -d --build --force-recreate "$SERVICE_NAME" fi ;; start) compose start "$SERVICE_NAME" ;; stop) compose stop "$SERVICE_NAME" ;; restart) if [[ "$no_build" == "true" ]]; then compose up -d --force-recreate --no-build "$SERVICE_NAME" else compose up -d --build --force-recreate "$SERVICE_NAME" fi ;; rebuild) compose build --no-cache "$SERVICE_NAME" compose up -d --force-recreate --no-build "$SERVICE_NAME" ;; logs) compose logs -f "$SERVICE_NAME" ;; status) compose ps "$SERVICE_NAME" ;; destroy) if [[ "$remove_volumes" == "true" ]]; then compose down --volumes --remove-orphans else compose down --remove-orphans fi ;; help) show_help ;; *) echo "Unknown command: $command" >&2 show_help exit 1 ;; esac