81 lines
3.1 KiB
PowerShell
81 lines
3.1 KiB
PowerShell
|
|
# 너드나비스 조직 레포 - Windows PC 셋업
|
||
|
|
# 사용: PowerShell에서 실행
|
||
|
|
# .\setup_windows.ps1
|
||
|
|
# 또는 인자로 지정: .\setup_windows.ps1 -NerdNavisRoot "C:\...\너드나비스"
|
||
|
|
|
||
|
|
param(
|
||
|
|
[string]$NerdNavisRoot = $(Resolve-Path (Join-Path $PSScriptRoot "..")).Path,
|
||
|
|
[string]$UnityRoot = "D:\NerdNavis\FilGoodBandits\DeckBuilding",
|
||
|
|
[string]$FrameworkRoot = "D:\NerdNavis\NerdNavis.Framework",
|
||
|
|
[string]$GiteaUrl = "https://burning.i234.me",
|
||
|
|
[string]$GiteaSsh = "ssh://git@burning.i234.me:30030"
|
||
|
|
)
|
||
|
|
|
||
|
|
$ErrorActionPreference = "Stop"
|
||
|
|
|
||
|
|
Write-Host "=== 너드나비스 조직 레포 셋업 ==="
|
||
|
|
Write-Host "NerdNavisRoot: $NerdNavisRoot"
|
||
|
|
|
||
|
|
# 1. Git 확인
|
||
|
|
git --version | Out-Null
|
||
|
|
if (-not $?) { throw "Git이 설치되지 않았습니다." }
|
||
|
|
|
||
|
|
# 2. paths.local.json 생성
|
||
|
|
$pathsFile = Join-Path $NerdNavisRoot "paths.local.json"
|
||
|
|
if (-not (Test-Path $pathsFile)) {
|
||
|
|
$paths = [ordered]@{
|
||
|
|
"_description" = "로컬 환경 경로. 커밋 금지."
|
||
|
|
NERDNAVIS_ROOT = $NerdNavisRoot
|
||
|
|
UNITY_PROJECT_ROOT = $UnityRoot
|
||
|
|
FRAMEWORK_PKG_ROOT = $FrameworkRoot
|
||
|
|
TABLE_EXPORT_ROOT = (Join-Path $UnityRoot "Assets\ResWork\Table\Export")
|
||
|
|
GITEA_URL = $GiteaUrl
|
||
|
|
GITEA_SSH = $GiteaSsh
|
||
|
|
HOSTNAME = $env:COMPUTERNAME
|
||
|
|
}
|
||
|
|
$paths | ConvertTo-Json -Depth 5 | Out-File -FilePath $pathsFile -Encoding utf8
|
||
|
|
Write-Host "paths.local.json 작성 완료: $pathsFile"
|
||
|
|
} else {
|
||
|
|
Write-Host "paths.local.json 이미 존재. 유지."
|
||
|
|
}
|
||
|
|
|
||
|
|
# 3. Claude 사용자 메모리 연결 (junction)
|
||
|
|
$claudeMemoryBase = "$env:USERPROFILE\.claude\projects"
|
||
|
|
$orgMemoryTarget = Join-Path $NerdNavisRoot "memory\org"
|
||
|
|
|
||
|
|
if (-not (Test-Path $orgMemoryTarget)) {
|
||
|
|
New-Item -ItemType Directory -Path $orgMemoryTarget | Out-Null
|
||
|
|
}
|
||
|
|
|
||
|
|
$hashDirs = @()
|
||
|
|
if (Test-Path $claudeMemoryBase) {
|
||
|
|
$hashDirs = Get-ChildItem $claudeMemoryBase -Directory -ErrorAction SilentlyContinue |
|
||
|
|
Where-Object { $_.Name -like "*Documents*" -or $_.Name -like "*너드나비스*" }
|
||
|
|
}
|
||
|
|
|
||
|
|
foreach ($d in $hashDirs) {
|
||
|
|
$memLink = Join-Path $d.FullName "memory"
|
||
|
|
if (Test-Path $memLink) {
|
||
|
|
$attr = (Get-Item $memLink -Force).Attributes
|
||
|
|
if (($attr -band [IO.FileAttributes]::ReparsePoint) -eq 0) {
|
||
|
|
# 실체 폴더. 백업 후 junction으로 교체
|
||
|
|
$bak = "$memLink.bak-$(Get-Date -Format yyyyMMddHHmmss)"
|
||
|
|
Rename-Item $memLink $bak
|
||
|
|
Write-Host "기존 memory 폴더 백업: $bak"
|
||
|
|
cmd /c mklink /J "`"$memLink`"" "`"$orgMemoryTarget`"" | Out-Null
|
||
|
|
Write-Host "Junction 생성: $memLink -> $orgMemoryTarget"
|
||
|
|
} else {
|
||
|
|
Write-Host "이미 junction/symlink. 유지: $memLink"
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
cmd /c mklink /J "`"$memLink`"" "`"$orgMemoryTarget`"" | Out-Null
|
||
|
|
Write-Host "Junction 생성: $memLink -> $orgMemoryTarget"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
if ($hashDirs.Count -eq 0) {
|
||
|
|
Write-Warning "Claude 프로젝트 해시 폴더를 찾지 못했습니다. 수동 연결 필요."
|
||
|
|
}
|
||
|
|
|
||
|
|
Write-Host "셋업 완료. 'git pull'로 최신 상태 유지 권장."
|