graphify 설치 스크립트 추가 및 README 바이브 코딩 도우미 섹션 개편
This commit is contained in:
1 parent
4e82bde404
commit
1de104e30c
5 files changed
+438
-1
No files matched your search
Executable
+139
@@ -0,0 +1,139 @@
|
||||
#!/usr/bin/env bash
|
||||
# shellcheck disable=SC2086
|
||||
|
||||
# graphify 설치 및 바이브 코딩 에이전트 연동 스크립트
|
||||
#
|
||||
# uv tool을 이용하여 graphifyy를 설치하고, 다양한 AI 코딩 에이전트(Antigravity, Claude, Codex, OpenCode)
|
||||
# 및 Gemini MCP 설정을 자동으로 구성합니다.
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# ────────────────────────────────────────────
|
||||
# 유틸리티 함수 (모두 stderr 출력)
|
||||
# ────────────────────────────────────────────
|
||||
info() { echo "[INFO] $*" >&2; }
|
||||
warn() { echo "[WARN] $*" >&2; }
|
||||
error() { echo "[ERROR] $*" >&2; exit 1; }
|
||||
success() { echo "[OK] $*" >&2; }
|
||||
|
||||
# ────────────────────────────────────────────
|
||||
# 필수 명령어 확인
|
||||
# ────────────────────────────────────────────
|
||||
check_requirements() {
|
||||
if ! command -v uv &>/dev/null; then
|
||||
echo "" >&2
|
||||
echo "=================================================================" >&2
|
||||
echo "[ERROR] 'uv' 패키지 관리자가 설치되어 있지 않습니다." >&2
|
||||
echo "graphify를 설치하려면 먼저 uv가 필요합니다." >&2
|
||||
echo "아래 명령어를 실행하여 uv를 먼저 설치해 주세요:" >&2
|
||||
echo "" >&2
|
||||
echo " curl -fsSL https://astral.sh/uv/install.sh | bash" >&2
|
||||
echo "=================================================================" >&2
|
||||
echo "" >&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# ────────────────────────────────────────────
|
||||
# Gemini MCP 설정 갱신/작성
|
||||
# ────────────────────────────────────────────
|
||||
configure_gemini_mcp() {
|
||||
local target_dir="$HOME/.gemini/antigravity"
|
||||
local config_file="$target_dir/mcp_config.json"
|
||||
|
||||
mkdir -p "$target_dir"
|
||||
info "Gemini MCP 설정 파일 구성 중: $config_file"
|
||||
|
||||
# uv run python을 활용하여 안전하게 JSON 구조 생성 또는 병합
|
||||
uv run - << 'EOF'
|
||||
import json
|
||||
import os
|
||||
import sys
|
||||
|
||||
target_dir = os.path.expanduser("~/.gemini/antigravity")
|
||||
config_file = os.path.join(target_dir, "mcp_config.json")
|
||||
|
||||
graphify_entry = {
|
||||
"command": "uv",
|
||||
"args": [
|
||||
"run",
|
||||
"--with",
|
||||
"graphifyy",
|
||||
"--with",
|
||||
"mcp",
|
||||
"-m",
|
||||
"graphify.serve",
|
||||
"${workspace.path}/graphify-out/graph.json"
|
||||
]
|
||||
}
|
||||
|
||||
data = {}
|
||||
if os.path.exists(config_file):
|
||||
try:
|
||||
with open(config_file, "r", encoding="utf-8") as f:
|
||||
content = f.read().strip()
|
||||
if content.startswith("{") and content.endswith("}"):
|
||||
data = json.loads(content)
|
||||
elif content.startswith('"graphify"'):
|
||||
# Handle key-only fragments if previously written
|
||||
data = json.loads("{" + content + "}")
|
||||
except Exception as e:
|
||||
sys.stderr.write(f"[WARN] 기존 설정 파싱 실패 (신규 파일로 생성합니다): {e}\n")
|
||||
data = {}
|
||||
|
||||
# Antigravity/Gemini mcp_config structure handling
|
||||
if "mcpServers" in data and isinstance(data["mcpServers"], dict):
|
||||
data["mcpServers"]["graphify"] = graphify_entry
|
||||
else:
|
||||
data["graphify"] = graphify_entry
|
||||
|
||||
with open(config_file, "w", encoding="utf-8") as f:
|
||||
json.dump(data, f, indent=2, ensure_ascii=False)
|
||||
f.write("\n")
|
||||
|
||||
print(f"[OK] Gemini MCP 설정이 성공적으로 저장되었습니다: {config_file}")
|
||||
EOF
|
||||
}
|
||||
|
||||
# ────────────────────────────────────────────
|
||||
# 메인 설치 로직
|
||||
# ────────────────────────────────────────────
|
||||
main() {
|
||||
info "===== Graphify 지식 그래프 도구 설치 스크립트 ====="
|
||||
|
||||
# 1. uv 확인
|
||||
check_requirements
|
||||
success "uv 패키지 관리자가 확인되었습니다."
|
||||
|
||||
# 2. graphifyy 설치 (uv tool)
|
||||
info "uv tool을 통해 'graphifyy[pdf,openai,anthropic,gemini]' 패키지를 설치/업데이트합니다..."
|
||||
uv tool install --upgrade 'graphifyy[pdf,openai,anthropic,gemini]'
|
||||
success "graphify 도구 설치가 완료되었습니다."
|
||||
|
||||
# 3. 바이브 코딩 에이전트 연동
|
||||
info "바이브 코딩 에이전트별 연동 설정을 진행합니다..."
|
||||
|
||||
agents=("antigravity" "claude" "codex" "opencode")
|
||||
for agent in "${agents[@]}"; do
|
||||
info "에이전트 연동 실행 중: graphify $agent install"
|
||||
if uv tool run --from graphifyy graphify "$agent" install 2>&1 | sed 's/^/ [agent] /'; then
|
||||
success "graphify $agent 연동 완료"
|
||||
else
|
||||
warn "graphify $agent 연동 중 경고/에러가 발생했으나 계속 진행합니다."
|
||||
fi
|
||||
done
|
||||
|
||||
# 4. Gemini MCP 설정 작성
|
||||
configure_gemini_mcp
|
||||
|
||||
echo ""
|
||||
success "===== Graphify 및 에이전트 연동 설치가 모두 완료되었습니다! ====="
|
||||
info "사용 방법 안내:"
|
||||
info " 1. 코드베이스 그래프 생성: graphify ."
|
||||
info " 2. 자연어 질의: graphify query \"프로젝트 구조 설명해줘\""
|
||||
info " 3. 관계 경로 분석: graphify path \"ClassA\" \"ClassB\""
|
||||
info " 4. 개념 상세 확인: graphify explain \"AuthManager\""
|
||||
echo ""
|
||||
}
|
||||
|
||||
main "$@"
|
||||
Reference in new issue
Block a user