playbook/scripts/install_codex_skills.bat

76 lines
1.8 KiB
Batchfile

@echo off
setlocal enabledelayedexpansion
rem Install Codex skills from this Playbook snapshot into CODEX_HOME.
rem - Source: <snapshot>\codex\skills\<skill-name>\
rem - Dest: %CODEX_HOME%\skills\<skill-name>\ (default CODEX_HOME=%USERPROFILE%\.codex)
rem
rem Usage:
rem install_codex_skills.bat
rem install_codex_skills.bat style-cleanup code-review-workflow
rem
rem Notes:
rem - Codex loads skills at startup; restart `codex` after installation.
rem - Existing destination skill dirs are backed up with a random suffix.
set "SCRIPT_DIR=%~dp0"
for %%I in ("%SCRIPT_DIR%..") do set "SRC=%%~fI"
set "SKILLS_SRC_ROOT=%SRC%\\codex\\skills"
set "CODEX_HOME=%CODEX_HOME%"
if "%CODEX_HOME%"=="" set "CODEX_HOME=%USERPROFILE%\\.codex"
set "SKILLS_DST_ROOT=%CODEX_HOME%\\skills"
if not exist "%SKILLS_SRC_ROOT%" (
echo ERROR: skills source dir not found: "%SKILLS_SRC_ROOT%"
exit /b 1
)
if not exist "%SKILLS_DST_ROOT%" mkdir "%SKILLS_DST_ROOT%"
set "HAS_ARGS=0"
if not "%~1"=="" set "HAS_ARGS=1"
if "%HAS_ARGS%"=="1" (
for %%S in (%*) do call :InstallOne "%%~S"
goto Done
)
for /d %%D in ("%SKILLS_SRC_ROOT%\\*") do (
set "NAME=%%~nD"
if not "!NAME!"=="" if not "!NAME:~0,1!"=="." call :InstallOne "!NAME!"
)
:Done
echo Done. Skills installed to: "%SKILLS_DST_ROOT%"
endlocal
exit /b 0
:InstallOne
set "NAME=%~1"
set "SRC_DIR=%SKILLS_SRC_ROOT%\\%NAME%"
set "DST_DIR=%SKILLS_DST_ROOT%\\%NAME%"
if not exist "%SRC_DIR%" (
echo ERROR: skill not found: %NAME% "%SRC_DIR%"
exit /b 1
)
if exist "%DST_DIR%" (
set "RAND=%RANDOM%"
pushd "%SKILLS_DST_ROOT%"
ren "%NAME%" "%NAME%.bak.!RAND!"
popd
echo Backed up existing skill: %NAME% -> %NAME%.bak.!RAND!
)
xcopy "%SRC_DIR%\\*" "%DST_DIR%\\" /e /i /y >nul
if errorlevel 1 (
echo ERROR: failed to copy skill: %NAME%
exit /b 1
)
echo Installed: %NAME%
exit /b 0