#!/bin/bash set -euo pipefail if [ -z "${1:-}" ]; then echo "Usage: ./scripts/new-service.sh " echo " Example: ./scripts/new-service.sh garage" echo "" echo "Creates docker//compose.yml and .gitea/workflows/deploy-.yml" exit 1 fi APP="$1" if ! [[ "$APP" =~ ^[a-zA-Z0-9][a-zA-Z0-9._-]*$ ]]; then echo "Error: name must be alphanumeric (hyphens, dots, underscores allowed)." exit 1 fi REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)" if [ -d "$REPO_ROOT/docker/$APP" ]; then echo "Error: docker/$APP already exists." exit 1 fi echo "Creating docker/$APP/compose.yml..." mkdir -p "$REPO_ROOT/docker/$APP" cat > "$REPO_ROOT/docker/$APP/compose.yml" < "$REPO_ROOT/.gitea/workflows/deploy-$APP.yml" <<'OUTER' name: Deploy APP_PLACEHOLDER on: push: branches: [main] paths: - 'docker/APP_PLACEHOLDER/**' jobs: deploy: runs-on: ubuntu-latest steps: - name: Deploy via SSH run: | mkdir -p ~/.ssh echo "${{ secrets.DEPLOY_SSH_KEY }}" > ~/.ssh/deploy_key chmod 600 ~/.ssh/deploy_key ssh -o StrictHostKeyChecking=accept-new -i ~/.ssh/deploy_key deploy@${{ vars.DEPLOY_HOST }} deploy-APP_PLACEHOLDER OUTER sed -i "s/APP_PLACEHOLDER/$APP/g" "$REPO_ROOT/.gitea/workflows/deploy-$APP.yml" echo "Done. Edit docker/$APP/compose.yml, then commit and push."