@echo off
title Supabase 도구 다시 깔기

echo.
echo ============================================
echo    Supabase 도구만 다시 깔아드립니다
echo ============================================
echo.
echo   이 창은 Supabase 도구 하나만 손봅니다.
echo   먼저 깔아두신 다른 프로그램은 건드리지 않습니다.
echo   중간에 막히면 그 화면을 그대로 사진 찍어 보내주세요.
echo.
echo   시작하려면 아무 키나 누르세요.
pause >nul

echo.
echo [1/5] 이미 깔려 있는지 봅니다.
where supabase >nul 2>&1
if %errorlevel%==0 goto HAVE_IT
if exist "%USERPROFILE%\.local\bin\supabase.exe" goto SET_PATH
echo       아직 없습니다. 지금 내려받겠습니다.
goto CHECK_TAR

:HAVE_IT
echo       이미 깔려 있습니다. 로그인만 보겠습니다.
goto SHOW_VER

:CHECK_TAR
echo.
echo [2/5] 압축 푸는 도구가 있는지 봅니다.
where tar >nul 2>&1
if not %errorlevel%==0 goto NO_TAR
echo       있습니다.

echo.
echo [3/5] 내려받습니다. 파일이 커서 1~3분 걸립니다.
echo       화면이 멈춘 것처럼 보여도 그냥 두세요.
set "SUPA_ARCH=amd64"
if /I "%PROCESSOR_ARCHITECTURE%"=="ARM64" set "SUPA_ARCH=arm64"
set "SUPA_URL=https://github.com/supabase/cli/releases/latest/download/supabase_windows_%SUPA_ARCH%.tar.gz"
set "SUPA_TGZ=%TEMP%\supabase_cli.tar.gz"
set "SUPA_DIR=%USERPROFILE%\.local\bin"
if not exist "%SUPA_DIR%" mkdir "%SUPA_DIR%"

powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "$ErrorActionPreference='Stop'; [Net.ServicePointManager]::SecurityProtocol=[Net.SecurityProtocolType]::Tls12; try { Invoke-WebRequest -UseBasicParsing -Uri $env:SUPA_URL -OutFile $env:SUPA_TGZ; exit 0 } catch { Write-Host ('      [download error] ' + $_.Exception.Message); exit 1 }"
if %errorlevel%==0 goto UNPACK

echo.
echo       다른 방법으로 한 번 더 해보겠습니다.
curl.exe -L --ssl-no-revoke -o "%SUPA_TGZ%" "%SUPA_URL%"
if not exist "%SUPA_TGZ%" goto NO_NET

:UNPACK
echo.
echo [4/5] 압축을 풉니다.
tar -xzf "%SUPA_TGZ%" -C "%SUPA_DIR%"
if not exist "%SUPA_DIR%\supabase.exe" goto NO_UNPACK
echo       풀었습니다.

:SET_PATH
echo.
echo [5/5] 컴퓨터가 이 도구를 찾을 수 있게 길을 알려줍니다.
set "PATH=%USERPROFILE%\.local\bin;%PATH%"
powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "$p=[Environment]::GetEnvironmentVariable('PATH','User'); $d=Join-Path $env:USERPROFILE '.local\bin'; if ($p -notlike ('*'+$d+'*')) { [Environment]::SetEnvironmentVariable('PATH', ($p.TrimEnd(';')+';'+$d), 'User') }"
echo       알려줬습니다.

:SHOW_VER
echo.
echo ------------------------------------------------------------
call supabase --version
if not %errorlevel%==0 goto NO_RUN
echo ------------------------------------------------------------
echo   Supabase 도구가 준비됐습니다.
echo.
echo   이제 로그인만 하면 끝입니다.
call supabase projects list >nul 2>&1
if %errorlevel%==0 goto ALL_OK
echo.
echo   아무 키나 누르면 브라우저가 열립니다.
echo   가입하실 때 쓰신 GitHub 계정으로 승인해 주세요.
echo   승인한 뒤에는 이 검은 창으로 다시 돌아오세요.
pause >nul
echo.
call supabase login
call supabase projects list >nul 2>&1
if not %errorlevel%==0 goto NO_LOGIN

:ALL_OK
echo.
echo ------------------------------------------------------------
echo   마지막으로, 스스로 확인해 보세요
echo ------------------------------------------------------------
echo.
set "DESK=%USERPROFILE%\Desktop"
if not exist "%DESK%" set "DESK=%USERPROFILE%\OneDrive\바탕 화면"
if not exist "%DESK%" set "DESK=%USERPROFILE%\OneDrive\Desktop"
if not exist "%DESK%" set "DESK=%USERPROFILE%"
set "CHECK_TXT=%DESK%\바이브코딩_점검_프롬프트.txt"
>"%CHECK_TXT%" echo 내 컴퓨터에 바이브코딩 수업 준비물이 다 깔렸는지 확인해줘.
>>"%CHECK_TXT%" echo git, node, npm, gh, vercel, supabase 여섯 가지의 버전을 하나씩 확인하고,
>>"%CHECK_TXT%" echo gh 와 vercel 과 supabase 는 로그인까지 됐는지도 봐줘.
>>"%CHECK_TXT%" echo 결과를 표 없이 한 줄씩 '이름 : 준비됨 / 안 됨' 으로 알려주고,
>>"%CHECK_TXT%" echo 안 된 것이 있으면 비개발자가 따라 할 수 있게 쉬운 말로
>>"%CHECK_TXT%" echo 다음에 뭘 하면 되는지 알려줘.
echo   바탕화면에 '바이브코딩_점검_프롬프트.txt' 를 만들어 두었습니다.
echo   잠시 뒤 그 파일이 저절로 열립니다.
echo.
echo   1. PowerShell 을 열고  claude  라고 입력해 클로드 코드를 켭니다.
echo   2. 열린 메모장의 글을 전부 복사해 클로드 코드에 붙여넣고 Enter를 누릅니다.
echo   3. 클로드가 여섯 가지를 하나씩 점검해서 결과를 알려줍니다.
echo.
echo   '안 됨' 이 하나라도 나오면 그 화면을 사진으로 찍어 보내주세요.
echo.
start "" notepad "%CHECK_TXT%"
echo.
echo ============================================================
echo    전부 끝났습니다. 더 하실 일이 없습니다.
echo    이 창은 닫으셔도 됩니다.
echo ============================================================
echo.
goto END

:NO_TAR
echo.
echo   [막힘 1] 이 컴퓨터에는 압축 푸는 도구가 없습니다.
echo            윈도우가 오래된 판이라 그렇습니다.
echo            이 화면을 사진으로 찍어 보내주세요. 수업 때 따로 깔아드립니다.
goto END

:NO_NET
echo.
echo   [막힘 2] 파일을 내려받지 못했습니다.
echo            회사 인터넷이 github.com 을 막고 있을 수 있습니다.
echo            휴대전화 핫스팟에 연결한 뒤 이 파일을 다시 눌러보세요.
echo            그래도 안 되면 이 화면을 사진으로 찍어 보내주세요.
goto END

:NO_UNPACK
echo.
echo   [막힘 3] 내려받기는 됐는데 압축이 풀리지 않았습니다.
echo            백신 프로그램이 파일을 막았을 수 있습니다.
echo            이 화면을 사진으로 찍어 보내주세요.
goto END

:NO_RUN
echo ------------------------------------------------------------
echo   [막힘 4] 깔기는 했는데 실행이 되지 않습니다.
echo            백신 프로그램이 격리했을 수 있습니다.
echo            이 화면을 사진으로 찍어 보내주세요.
goto END

:NO_LOGIN
echo.
echo   [막힘 5] 도구는 준비됐는데 로그인이 끝나지 않았습니다.
echo            브라우저에서 승인을 마치지 않으셨을 수 있습니다.
echo            이 파일을 한 번 더 눌러 로그인만 다시 해보세요.
echo            도구 자체는 이미 깔렸으니 걱정하지 않으셔도 됩니다.
goto END

:END
echo.
echo 창을 닫으려면 아무 키나 누르세요.
pause >nul
