124 lines
4.2 KiB
Bash
124 lines
4.2 KiB
Bash
#!/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 ""
|