#!/usr/bin/env bash # ============================================ # Posimai — 新規アプリ作成スクリプト # 使い方: bash create-app.sh posimai-myapp "My App Name" "アプリの説明" # ============================================ set -e APP_ID="${1}" APP_NAME="${2}" APP_DESC="${3:-${APP_NAME}}" # --- 引数チェック --- if [ -z "$APP_ID" ] || [ -z "$APP_NAME" ]; then echo "使い方: bash create-app.sh [description]" echo "例: bash create-app.sh posimai-memo \"Posimai Memo\" \"メモ帳\"" exit 1 fi SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" TARGET_DIR="$SCRIPT_DIR/$APP_ID" if [ -d "$TARGET_DIR" ]; then echo "[ERROR] ディレクトリが既に存在します: $TARGET_DIR" exit 1 fi GITEA_BASE="http://100.76.7.3:3000/mai" GITHUB_ORG="posimai" echo "========================================" echo " Posimai App Creator" echo "========================================" echo " APP_ID : $APP_ID" echo " APP_NAME: $APP_NAME" echo " APP_DESC: $APP_DESC" echo "========================================" echo "" # --- Step 1: テンプレートコピー & 置換 --- echo "Step 1: テンプレートをコピーして置換..." cp -r "$SCRIPT_DIR/_template" "$TARGET_DIR" # sed で 3 変数を一括置換(macOS / Linux / Git Bash 対応) find "$TARGET_DIR" -type f \( -name "*.html" -o -name "*.json" -o -name "*.js" -o -name "*.md" \) | while IFS= read -r f; do sed -i "s/APP_NAME/$APP_NAME/g; s/APP_ID/$APP_ID/g; s/APP_DESCRIPTION/$APP_DESC/g" "$f" done echo " コピー完了: $TARGET_DIR" # --- Step 2: Git 初期化 --- echo "" echo "Step 2: Git 初期化..." cd "$TARGET_DIR" git init -b main git add . git commit -m "init: $APP_NAME" echo " Git 初期化完了" # --- Step 3: Gitea にリポジトリ作成 --- echo "" echo "Step 3: Gitea にリポジトリを作成..." # Gitea の認証情報(~/.netrc または環境変数から取得) GITEA_TOKEN="${GITEA_TOKEN:-}" if [ -n "$GITEA_TOKEN" ]; then GITEA_AUTH="-H \"Authorization: token $GITEA_TOKEN\"" curl -s -X POST "http://100.76.7.3:3000/api/v1/user/repos" \ -H "Content-Type: application/json" \ -H "Authorization: token $GITEA_TOKEN" \ -d "{\"name\":\"$APP_ID\",\"private\":false,\"auto_init\":false}" \ > /dev/null echo " Gitea リポジトリ作成完了(API)" else echo " [WARN] GITEA_TOKEN 未設定。Gitea リポジトリは手動で作成してください:" echo " → http://100.76.7.3:3000 で $APP_ID リポジトリを作成後、Enter を押してください" read -r fi # --- Step 4: GitHub にリポジトリ作成 --- echo "" echo "Step 4: GitHub にリポジトリを作成..." gh repo create "$GITHUB_ORG/$APP_ID" --private --description "$APP_DESC" 2>&1 || { echo " [WARN] GitHub リポジトリ作成に失敗(既存の可能性)。続行します。" } echo " GitHub リポジトリ作成完了" # --- Step 5: リモート追加 & push --- echo "" echo "Step 5: リモートを追加して push..." git remote add gitea "$GITEA_BASE/$APP_ID.git" git remote add github "https://github.com/$GITHUB_ORG/$APP_ID.git" npm run deploy echo " push 完了" # --- Step 6: Vercel 連携 --- echo "" echo "Step 6: Vercel と GitHub を連携..." echo "https://github.com/$GITHUB_ORG/$APP_ID.git" | vercel git connect 2>&1 || { echo " [WARN] vercel git connect に失敗。手動で連携してください。" } # --- Step 7: 初回本番デプロイ --- echo "" echo "Step 7: 初回本番デプロイをトリガー..." git commit --allow-empty -m "ci: trigger initial Vercel deployment" npm run deploy echo "" echo "========================================" echo " 完了! $APP_NAME" echo "========================================" echo "" echo " ディレクトリ : $TARGET_DIR" echo " Gitea : http://100.76.7.3:3000/mai/$APP_ID" echo " GitHub : https://github.com/$GITHUB_ORG/$APP_ID" echo "" echo " 次の必須作業(Dashboard 更新):" echo " 1. posimai-dashboard/src/data/projects.json にカードを追加" echo " 2. ecosystem/page.tsx の NODES / EDGES に追加" echo " 3. timeline/page.tsx の EVENTS に追加" echo " 4. access/page.tsx の APPS に追加" echo " 5. Dashboard をデプロイ: cd posimai-dashboard && npm run deploy" echo ""