TSFastifyExample/start.bat

183 lines
4.7 KiB
Batchfile
Raw Normal View History

2024-08-08 08:20:58 -04:00
@echo off
setlocal enabledelayedexpansion
cd /d %~dp0
2024-08-08 08:20:58 -04:00
if not exist "package.json" (
echo package.json not found in %~dp0
2024-08-08 08:20:58 -04:00
exit /b 1
)
set "PKG_MANAGER=bun"
set "MODE=dev"
set "next_is_value=0"
set "last_key="
for %%a in (%*) do (
if "!next_is_value!" == "1" (
if "!last_key!" == "manager" (
2024-08-08 08:20:58 -04:00
set "PKG_MANAGER=%%a"
) else if "!last_key!" == "mode" (
2024-08-08 08:20:58 -04:00
set "MODE=%%a"
)
set "next_is_value=0"
)
if "%%a" == "clean" (
set "goto_cleanup=1"
) else if "%%a" == "cleanup" (
set "goto_cleanup=1"
) else if "%%a" == "manager" (
2024-08-08 08:20:58 -04:00
set "last_key=manager"
set "next_is_value=1"
) else if "%%a" == "mode" (
2024-08-08 08:20:58 -04:00
set "last_key=mode"
set "next_is_value=1"
)
)
set "ALLOWED_MANAGERS=bun npm yarn pnpm"
set "ALLOWED_MODES=dev prod development production"
set "manager_allowed=0"
for %%m in (%ALLOWED_MANAGERS%) do (
if "!PKG_MANAGER!" == "%%m" (
2024-08-08 08:20:58 -04:00
set "manager_allowed=1"
)
)
set "mode_allowed=0"
for %%m in (%ALLOWED_MODES%) do (
if "!MODE!" == "%%m" (
2024-08-08 08:20:58 -04:00
set "mode_allowed=1"
)
)
if "!manager_allowed!" == "0" (
echo !PKG_MANAGER! is not a valid package manager. Use one of: %ALLOWED_MANAGERS%
2024-08-08 08:20:58 -04:00
exit /b 1
)
if "!mode_allowed!" == "0" (
echo !MODE! is not a valid mode. Use one of: %ALLOWED_MODES%
2024-08-08 08:20:58 -04:00
exit /b 1
)
echo Using package manager: !PKG_MANAGER!
echo Mode: !MODE!
set "NPM_MARKER=node_modules\.npm_used"
set "YARN_MARKER=node_modules\.yarn_used"
set "PNPM_MARKER=node_modules\.pnpm_used"
set "BUN_MARKER=node_modules\.bun_used"
if not "!PKG_MANAGER!" == "bun" (
where nodemon >nul 2>&1
if errorlevel 1 (
echo nodemon not found, installing...
if "!PKG_MANAGER!" == "npm" (
npm install -g nodemon
) else if "!PKG_MANAGER!" == "yarn" (
yarn global add nodemon
) else if "!PKG_MANAGER!" == "pnpm" (
pnpm add -g nodemon
) else (
echo Unsupported package manager: !PKG_MANAGER!
exit /b 1
)
)
where tsx >nul 2>&1
if errorlevel 1 (
echo tsx not found, installing...
if "!PKG_MANAGER!" == "npm" (
npm install -g tsx
) else if "!PKG_MANAGER!" == "yarn" (
yarn add tsx --dev
) else if "!PKG_MANAGER!" == "pnpm" (
pnpm add -D tsx
) else (
echo Unsupported package manager: !PKG_MANAGER!
exit /b 1
)
)
)
2024-08-08 08:20:58 -04:00
if "!PKG_MANAGER!" == "npm" (
2024-08-08 08:20:58 -04:00
set "INSTALL_CMD=npm install"
if "!MODE!" == "dev" (
set "RUN_CMD=nodemon --watch src --exec npm exec tsx src/index.ts"
) else (
set "RUN_CMD=npm exec tsx src/index.ts"
)
2024-08-08 08:20:58 -04:00
set "CURRENT_MARKER=!NPM_MARKER!"
) else if "!PKG_MANAGER!" == "yarn" (
set "INSTALL_CMD=yarn install"
if "!MODE!" == "dev" (
set "RUN_CMD=nodemon --watch src --exec yarn exec tsx src/index.ts"
) else (
set "RUN_CMD=yarn exec tsx src/index.ts"
)
2024-08-08 08:20:58 -04:00
set "CURRENT_MARKER=!YARN_MARKER!"
) else if "!PKG_MANAGER!" == "pnpm" (
2024-08-08 08:20:58 -04:00
set "INSTALL_CMD=pnpm install"
if "!MODE!" == "dev" (
set "RUN_CMD=nodemon --watch src --exec pnpm exec tsx src/index.ts"
) else (
set "RUN_CMD=pnpm exec tsx src/index.ts"
)
2024-08-08 08:20:58 -04:00
set "CURRENT_MARKER=!PNPM_MARKER!"
) else if "!PKG_MANAGER!" == "bun" (
2024-08-08 08:20:58 -04:00
set "INSTALL_CMD=bun install"
if "!MODE!" == "dev" (
set "RUN_CMD=bun run --watch src/index.ts --development"
) else (
set "RUN_CMD=bun run src/index.ts"
)
2024-08-08 08:20:58 -04:00
set "CURRENT_MARKER=!BUN_MARKER!"
)
if exist "!NPM_MARKER!" if not "!CURRENT_MARKER!" == "!NPM_MARKER!" set "goto_cleanup=1"
if exist "!YARN_MARKER!" if not "!CURRENT_MARKER!" == "!YARN_MARKER!" set "goto_cleanup=1"
if exist "!PNPM_MARKER!" if not "!CURRENT_MARKER!" == "!PNPM_MARKER!" set "goto_cleanup=1"
if exist "!BUN_MARKER!" if not "!CURRENT_MARKER!" == "!BUN_MARKER!" set "goto_cleanup=1"
2024-08-08 08:20:58 -04:00
if defined goto_cleanup (
set "files_to_delete=package-lock.json yarn.lock pnpm-lock.yaml bun.lockb"
set "folders_to_delete=node_modules dist logs"
set "markers_to_delete=!NPM_MARKER! !YARN_MARKER! !PNPM_MARKER! !BUN_MARKER!"
2024-08-08 08:20:58 -04:00
echo Cleaning up files and folders...
2024-08-08 08:20:58 -04:00
for %%f in (!files_to_delete!) do (
if exist "%%f" (
echo Deleting %%f...
del /q "%%f"
)
2024-08-08 08:20:58 -04:00
)
for %%d in (!folders_to_delete!) do (
if exist "%%d" (
echo Deleting %%d...
rmdir /s /q "%%d"
)
2024-08-08 08:20:58 -04:00
)
for %%m in (!markers_to_delete!) do (
if exist "%%m" (
del /q "%%m"
)
)
2024-08-08 08:20:58 -04:00
exit /b 0
2024-08-08 08:20:58 -04:00
)
if not "%RUN_CMD%" == "" (
echo Running %RUN_CMD%...
%INSTALL_CMD%
%RUN_CMD%
2024-08-08 08:20:58 -04:00
) else (
echo No run command set, exiting...
)
exit /b 0