TSFastifyExample/start.bat

151 lines
3.3 KiB
Batchfile
Raw Normal View History

2024-08-08 08:20:58 -04:00
@echo off
setlocal enabledelayedexpansion
for %%I in ("%~dp0.") do set "SCRIPT_DIR=%%~fI"
cd /d "!SCRIPT_DIR!"
if not exist package.json (
echo package.json not found in !SCRIPT_DIR!
exit /b 1
)
set "PKG_MANAGER=bun"
set "MODE=dev"
set "next_is_value=0"
set "last_key="
for %%a in (%*) do (
set "arg=%%a"
if "!next_is_value!"=="1" (
if "!last_key!"=="manager" (
set "PKG_MANAGER=%%a"
)
if "!last_key!"=="mode" (
set "MODE=%%a"
)
set "next_is_value=0"
)
if "!arg!"=="clean" (
goto cleanup
)
if "!arg!"=="cleanup" (
goto cleanup
)
if "!arg!"=="manager" (
set "last_key=manager"
set "next_is_value=1"
)
if "!arg!"=="mode" (
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 %%a in (!ALLOWED_MANAGERS!) do (
if "!PKG_MANAGER!"=="%%a" (
set "manager_allowed=1"
)
)
set "mode_allowed=0"
for %%a in (!ALLOWED_MODES!) do (
if "!MODE!"=="%%a" (
set "mode_allowed=1"
)
)
if "!manager_allowed!"=="0" (
echo !PKG_MANAGER! is not a valid package manager, please use one of the following: !ALLOWED_MANAGERS!
exit /b 1
)
if "!mode_allowed!"=="0" (
echo !MODE! is not a valid mode, please use one of the following: !ALLOWED_MODES!
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 "!PKG_MANAGER!"=="npm" (
set "INSTALL_CMD=npm install"
set "RUN_CMD=npm run !MODE!"
set "CURRENT_MARKER=!NPM_MARKER!"
) else if "!PKG_MANAGER!"=="yarn" (
set "INSTALL_CMD=yarn"
set "RUN_CMD=yarn !MODE!"
set "CURRENT_MARKER=!YARN_MARKER!"
) else if "!PKG_MANAGER!"=="pnpm" (
set "INSTALL_CMD=pnpm install"
set "RUN_CMD=pnpm !MODE!"
set "CURRENT_MARKER=!PNPM_MARKER!"
) else if "!PKG_MANAGER!"=="bun" (
set "INSTALL_CMD=bun install"
set "RUN_CMD=bun !MODE!"
set "CURRENT_MARKER=!BUN_MARKER!"
)
if exist "!NPM_MARKER!" if not "!CURRENT_MARKER!"=="!NPM_MARKER!" goto cleanup
if exist "!YARN_MARKER!" if not "!CURRENT_MARKER!"=="!YARN_MARKER!" goto cleanup
if exist "!PNPM_MARKER!" if not "!CURRENT_MARKER!"=="!PNPM_MARKER!" goto cleanup
if exist "!BUN_MARKER!" if not "!CURRENT_MARKER!"=="!BUN_MARKER!" goto cleanup
goto run
: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=node_modules/.npm_used node_modules/.yarn_used node_modules/.pnpm_used node_modules/.bun_used"
echo Cleaning up files and folders...
for %%a in (!files_to_delete!) do (
if exist "%%a" (
echo Found %%a in !SCRIPT_DIR! - deleting...
del "%%a"
)
)
for %%a in (!folders_to_delete!) do (
if exist "%%a" (
echo Found %%a in !SCRIPT_DIR! - deleting...
rmdir /s /q "%%a"
)
)
for %%a in (!markers_to_delete!) do (
if exist "%%a" del "%%a"
)
if defined RUN_CMD (
goto run
)
exit /b 0
:run
if defined RUN_CMD (
echo Running !RUN_CMD!...
!INSTALL_CMD!
!RUN_CMD!
) else (
echo No run command set, exiting...
)
exit /b 0