posimai-root/create-app.sh

124 lines
4.2 KiB
Bash
Raw Normal View History

#!/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 <app-id> <app-name> [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 ""