@echo off setlocal enabledelayedexpansion REM Load environment variables from .env file if it exists if exist "..\.env" ( for /f "tokens=*" %%a in ('type "..\.env" ^| findstr /v "^#"') do ( for /f "tokens=1,2 delims==" %%b in ("%%a") do ( set "%%b=%%c" ) ) ) REM Use environment variables with defaults if not defined FTP_HOST ( set FTP_HOST=myserver.com echo Warning: FTP_HOST not set, using default value ) if not defined FTP_USER ( set FTP_USER=myuser echo Warning: FTP_USER not set, using default value ) if not defined FTP_PASSP ( set FTP_PASSP=mypass echo Warning: FTP_PASSP not set, using default value ) if not defined FTP_PORT set FTP_PORT=21 if not defined FTP_REMOTE_PATH set FTP_REMOTE_PATH=/packages REM Read package version from package.json if not exist "..\package.json" ( echo Error: package.json not found pause exit /b 1 ) REM Use PowerShell to extract the version from package.json for /f "usebackq tokens=*" %%i in (`powershell -command "(Get-Content -Raw ..\package.json | ConvertFrom-Json).version"`) do ( set PACKAGE_VERSION=%%i ) echo Detected package version: !PACKAGE_VERSION! REM Check if WinSCP is installed and accessible where winscp.com >nul 2>&1 if errorlevel 1 ( echo Error: WinSCP is not found in PATH. Please install WinSCP and add it to your PATH. echo Download: https://winscp.net/ pause exit /b 1 ) REM Get the dist directory path set DIST_DIR=%~dp0..\dist REM Check if dist directory exists if not exist "%DIST_DIR%" ( echo Error: Dist directory does not exist. Please run build/pack command first. pause exit /b 1 ) REM Check if there are any .tgz files matching the current version to upload set COUNT=0 for %%f in ("%DIST_DIR%\*!PACKAGE_VERSION!*.tgz") do set /a COUNT+=1 for %%f in ("%DIST_DIR%\*-latest.tgz") do set /a COUNT+=1 if !COUNT! EQU 0 ( echo No .tgz files found in dist directory matching version !PACKAGE_VERSION! And named `latest` pause exit /b 0 ) echo Found !COUNT! package files to upload for version !PACKAGE_VERSION! @REM exit /b 0 REM Create a temporary script file with actual values set TEMP_SCRIPT=%TEMP%\winscp_script_%RANDOM%.txt echo option batch abort > "%TEMP_SCRIPT%" echo option confirm off >> "%TEMP_SCRIPT%" echo open ftp://!FTP_USER!:!FTP_PASSP!@!FTP_HOST!:!FTP_PORT! >> "%TEMP_SCRIPT%" echo cd !FTP_REMOTE_PATH! >> "%TEMP_SCRIPT%" echo put "%DIST_DIR%\*!PACKAGE_VERSION!*.tgz" >> "%TEMP_SCRIPT%" echo put "%DIST_DIR%\index.html" >> "%TEMP_SCRIPT%" echo close >> "%TEMP_SCRIPT%" echo exit >> "%TEMP_SCRIPT%" REM Run WinSCP with the temporary script file echo Uploading packages via WinSCP... winscp.com /script="%TEMP_SCRIPT%" set RESULT=%ERRORLEVEL% REM Clean up the temporary script file del "%TEMP_SCRIPT%" if !RESULT! neq 0 ( echo Upload failed! pause exit /b 1 ) echo Upload completed successfully! @REM pause exit /b 0