add alias to avoid explicit python commands, scheduled runs and bug fixes
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
@echo off
|
||||
rem ai-chat-exporter.cmd - run the exporter without activating a virtualenv.
|
||||
rem
|
||||
rem Command Prompt (cmd.exe) - the documented way:
|
||||
rem cd C:\path\to\AIChatExporter
|
||||
rem ai-chat-exporter export --provider all
|
||||
rem
|
||||
rem cmd.exe searches the current directory before PATH and resolves the bare
|
||||
rem name through PATHEXT (which includes .CMD), so no ".\" and no extension are
|
||||
rem needed. The extensionless POSIX sibling is ignored: it is not in PATHEXT.
|
||||
rem
|
||||
rem PowerShell does NOT search the current directory, and ".\ai-chat-exporter"
|
||||
rem there would resolve to the extensionless POSIX script, which PowerShell
|
||||
rem cannot run. In PowerShell, name this file explicitly:
|
||||
rem .\ai-chat-exporter.cmd export --provider all
|
||||
rem
|
||||
rem Creates .venv and installs dependencies on first run, so a fresh clone needs
|
||||
rem no "python -m venv" / ".venv\Scripts\activate" ceremony. Reinstalls
|
||||
rem automatically when pyproject.toml changes.
|
||||
rem
|
||||
rem The working directory is deliberately NOT changed - EXPORT_DIR, CACHE_DIR
|
||||
rem and .env discovery are all relative to it. POSIX equivalent: ai-chat-exporter
|
||||
|
||||
setlocal enabledelayedexpansion
|
||||
|
||||
set "DIR=%~dp0"
|
||||
if "%DIR:~-1%"=="\" set "DIR=%DIR:~0,-1%"
|
||||
set "VENV=%DIR%\.venv"
|
||||
set "PY=%VENV%\Scripts\python.exe"
|
||||
set "STAMP=%VENV%\.deps-stamp"
|
||||
|
||||
rem See the POSIX script for why this warns rather than blocks: cache\ resolves
|
||||
rem against the current directory, so the wrong one silently starts a second
|
||||
rem archive instead of failing.
|
||||
if /i not "%CD%"=="%DIR%" if "%AI_CHAT_EXPORTER_QUIET_CWD%"=="" (
|
||||
echo warning: running from %CD%, not %DIR% 1>&2
|
||||
echo cache\ and exports\ resolve against the current directory, 1>&2
|
||||
echo so this may start a separate archive. Set 1>&2
|
||||
echo AI_CHAT_EXPORTER_QUIET_CWD=1 to silence this. 1>&2
|
||||
)
|
||||
|
||||
if not exist "%PY%" (
|
||||
echo Creating virtualenv in %VENV% ... 1>&2
|
||||
rem The py launcher is the reliable way to get a specific version; fall back
|
||||
rem to whatever "python" is if it is not installed.
|
||||
where py >nul 2>&1
|
||||
if !errorlevel! equ 0 (
|
||||
py -3 -m venv "%VENV%"
|
||||
) else (
|
||||
python -m venv "%VENV%"
|
||||
)
|
||||
if not exist "%PY%" (
|
||||
echo error: could not create a virtualenv - install Python 3.11+ from 1>&2
|
||||
echo python.org or the Microsoft Store, then re-run. 1>&2
|
||||
exit /b 1
|
||||
)
|
||||
if exist "%STAMP%" del "%STAMP%"
|
||||
)
|
||||
|
||||
rem Staleness check, in pure batch: %%~tF is the file's last-modified stamp, so
|
||||
rem storing it and comparing strings needs no external process. The obvious
|
||||
rem alternative - asking PowerShell to compare timestamps - costs ~1s of
|
||||
rem interpreter startup on *every* command, which is a lot to pay to almost
|
||||
rem always learn that nothing changed.
|
||||
set "PYPROJ_TIME="
|
||||
for %%F in ("%DIR%\pyproject.toml") do set "PYPROJ_TIME=%%~tF"
|
||||
|
||||
set "SAVED_TIME="
|
||||
if exist "%STAMP%" set /p SAVED_TIME=<"%STAMP%"
|
||||
|
||||
if not "%SAVED_TIME%"=="%PYPROJ_TIME%" (
|
||||
echo Installing dependencies ... 1>&2
|
||||
"%PY%" -m pip install --quiet --upgrade pip
|
||||
"%PY%" -m pip install --quiet -e "%DIR%"
|
||||
if !errorlevel! neq 0 (
|
||||
echo error: dependency installation failed. 1>&2
|
||||
exit /b !errorlevel!
|
||||
)
|
||||
> "%STAMP%" echo !PYPROJ_TIME!
|
||||
)
|
||||
|
||||
"%PY%" -m src.main %*
|
||||
exit /b %errorlevel%
|
||||
Reference in New Issue
Block a user