#!/bin/bash set -euo pipefail if [ -z "${1:-}" ]; then echo "Usage: ./scripts/new-app.sh " echo "Example: ./scripts/new-app.sh my-blog" exit 1 fi APP="$1" if ! [[ "$APP" =~ ^[a-zA-Z0-9][a-zA-Z0-9._-]*$ ]]; then echo "Error: app 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@${{ secrets.DEPLOY_HOST }} deploy-APP_PLACEHOLDER OUTER sed -i "s/APP_PLACEHOLDER/$APP/g" "$REPO_ROOT/.gitea/workflows/deploy-$APP.yml" echo "" echo "Done! Files created:" echo " - docker/$APP/compose.yml" echo " - .gitea/workflows/deploy-$APP.yml" echo "" echo "Next steps:" echo " 1. Edit docker/$APP/compose.yml to fit your app" echo " 2. Commit and push to deploy" echo " 3. Configure the proxy host in Nginx Proxy Manager"