Files
autofirmer-expanded/setup-windows.bat
T
Brandon LiandClaude Opus 5 9bdd20f83a Add Windows setup script for new instances
Standalone batch file: clones (or pulls), installs, builds, seeds the
reporter settings, and writes a start-autofirmer.bat. Prompts for the master
dashboard URL and instance name, defaulting to %COMPUTERNAME%.

Two install hazards it handles:
- better-sqlite3 has no prebuilt binary above Node 22, so install silently
  falls back to node-gyp and dies without Visual Studio Build Tools. The
  script warns first and names the fix if install fails anyway
- playwright is declared but referenced nowhere in the source, so its
  postinstall browser download is skipped

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-30 16:16:06 -05:00

197 lines
6.2 KiB
Batchfile

@echo off
setlocal EnableExtensions
title AutoFirmer - Windows setup
REM ============================================================================
REM AutoFirmer instance setup for Windows.
REM
REM Standalone: drop this file anywhere and run it. It clones the repo into a
REM subfolder next to itself, installs, builds, and points the instance at the
REM master dashboard. Safe to re-run - it pulls and rebuilds instead of cloning.
REM ============================================================================
set "REPO_URL=https://git.juicerroom.com/senofy/autofirmer-expanded.git"
set "DEFAULT_MASTER=https://master.juicerroom.com"
set "TARGET=%~dp0autofirmer"
echo.
echo ============================================
echo AutoFirmer - Windows setup
echo ============================================
echo.
REM ---------------------------------------------------------------- git check
where git >nul 2>&1
if errorlevel 1 (
echo [X] Git is not installed, or not on PATH.
echo Install it from https://git-scm.com/download/win then re-run.
goto :fail
)
echo [ok] git
REM --------------------------------------------------------------- node check
where node >nul 2>&1
if errorlevel 1 (
echo [X] Node.js is not installed, or not on PATH.
echo Install Node 22 LTS from https://nodejs.org/ then re-run.
goto :fail
)
for /f "tokens=* usebackq" %%v in (`node -p "process.versions.node"`) do set "NODEVER=%%v"
for /f "tokens=1 delims=." %%m in ("%NODEVER%") do set "NODEMAJOR=%%m"
echo [ok] node v%NODEVER%
REM better-sqlite3 ships prebuilt binaries only for released Node ABIs. On a
REM newer major it falls back to node-gyp, which needs Visual Studio Build
REM Tools - a long, confusing failure if it is not installed.
if %NODEMAJOR% GEQ 23 goto :node_warn
goto :node_ok
:node_warn
echo.
echo [!] Node %NODEMAJOR% is newer than better-sqlite3's prebuilt binaries.
echo Install may try to compile from source and fail without Visual
echo Studio Build Tools. Node 22 LTS is the safe choice here.
echo.
set "GOON="
set /p "GOON= Continue anyway? [y/N] "
if /i not "%GOON%"=="y" goto :fail
:node_ok
REM ------------------------------------------------------------------- python
where python >nul 2>&1
if errorlevel 1 (
echo [--] python not found - the dashboard will still work.
echo Needed only for the clicker ^(clicker\runner.py^).
set "HAVE_PY=0"
) else (
echo [ok] python
set "HAVE_PY=1"
)
REM ------------------------------------------------------------------- prompts
echo.
set "MASTER_URL="
set /p "MASTER_URL= Master dashboard URL [%DEFAULT_MASTER%]: "
if "%MASTER_URL%"=="" set "MASTER_URL=%DEFAULT_MASTER%"
set "INSTANCE="
set /p "INSTANCE= Instance name [%COMPUTERNAME%]: "
if "%INSTANCE%"=="" set "INSTANCE=%COMPUTERNAME%"
echo.
echo Installing to: %TARGET%
echo.
REM -------------------------------------------------------------- clone / pull
if exist "%TARGET%\.git" (
echo [1/5] Existing checkout found - pulling latest...
pushd "%TARGET%"
git pull --ff-only
if errorlevel 1 (
popd
echo [X] git pull failed. Resolve local changes and re-run.
goto :fail
)
popd
) else (
echo [1/5] Cloning %REPO_URL% ...
git clone "%REPO_URL%" "%TARGET%"
if errorlevel 1 (
echo [X] Clone failed. Check network access to git.juicerroom.com.
goto :fail
)
)
pushd "%TARGET%"
REM ------------------------------------------------------------------- install
echo.
echo [2/5] Installing npm dependencies ^(this takes a few minutes^)...
REM playwright is declared but unreferenced anywhere in the source; skipping its
REM browser download saves several hundred MB and a lot of time.
set "PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1"
call npm install
if errorlevel 1 (
echo.
echo [X] npm install failed.
echo If the error mentions node-gyp, MSBuild, or better_sqlite3.cpp,
echo the native module could not find a prebuilt binary. Either switch
echo to Node 22 LTS, or install "Desktop development with C++" from the
echo Visual Studio Build Tools installer.
popd
goto :fail
)
REM --------------------------------------------------------------------- build
echo.
echo [3/5] Building...
call npm run build
if errorlevel 1 (
echo [X] Build failed.
popd
goto :fail
)
REM ------------------------------------------------------------------ settings
echo.
echo [4/5] Writing instance settings...
node scripts\seed-settings.js "%MASTER_URL%" "%INSTANCE%"
if errorlevel 1 (
echo [X] Could not write settings to autotrader.sqlite.
popd
goto :fail
)
REM ------------------------------------------------------ python deps (option)
if "%HAVE_PY%"=="1" (
echo.
echo [5/5] Installing clicker Python dependencies...
python -m pip install --quiet --disable-pip-version-check -r clicker\requirements.txt
if errorlevel 1 (
echo [!] pip install failed - the dashboard still works, the clicker will not.
)
) else (
echo.
echo [5/5] Skipping Python dependencies ^(python not found^).
)
REM ---------------------------------------------------------------- start file
> "%~dp0start-autofirmer.bat" (
echo @echo off
echo title AutoFirmer - %INSTANCE%
echo cd /d "%TARGET%"
echo echo Dashboard starting on http://localhost:3000
echo call npm run start
echo pause
)
popd
echo.
echo ============================================
echo Done.
echo ============================================
echo.
echo Instance name : %INSTANCE%
echo Reporting to : %MASTER_URL%
echo Installed in : %TARGET%
echo.
echo Start it with : start-autofirmer.bat
echo Dashboard at : http://localhost:3000
echo.
echo Still manual:
echo - Load the Chrome extension: chrome://extensions, enable Developer
echo mode, "Load unpacked", select %TARGET%\extension
echo - Add your firm credentials on the dashboard's Settings page
echo - Run the clicker when needed: python clicker\runner.py
echo.
pause
exit /b 0
:fail
echo.
echo Setup did not complete.
echo.
pause
exit /b 1