diff --git a/build/upload.cmd b/build/upload.cmd index f379be3..bcad519 100644 --- a/build/upload.cmd +++ b/build/upload.cmd @@ -1,43 +1,94 @@ -setlocal enabledelayedexpansion @echo off +setlocal enabledelayedexpansion +set RETRY_COUNT=0 +set MAX_RETRIES=5 +set SUCCESS=0 + +:: Get the current date and time using WMI +for /f "tokens=2 delims==" %%a in ('wmic os get localdatetime /value') do ( + set "dt=%%a" +) +set "LOG_DATE=!dt:~0,4!-!dt:~4,2!-!dt:~6,2!" +set "LOG_TIME=!dt:~8,2!:!dt:~10,2!:!dt:~12,2!" + +set "LOG_MESSAGE=echo [!LOG_DATE! !LOG_TIME!] !*" + +:: Save the current directory and move to the script's location. set CURRENT_DIR=%cd% cd /d %~dp0.. +:: Define API variables set API_URL=https://api.azaion.com set RESOURCES_FOLDER=%1 set EMAIL=uploader@azaion.com set PASSWORD=Az@1on_10Upl0@der +:: Find the file to upload set "UPLOAD_FILE=" for /f "delims=" %%i in ('dir /b /a-d "AzaionSuite.Iterative*"') do ( if not defined UPLOAD_FILE set "UPLOAD_FILE=%%i" ) if not defined UPLOAD_FILE ( - echo No matching file found. - exit /b + %LOG_MESSAGE% [ERROR] No matching file found for upload. + exit /b 1 ) -echo Logging in and retrieving token... +echo. +%LOG_MESSAGE% === Starting AzaionSuite Upload Script === +echo. +%LOG_MESSAGE% [INFO] Logging in and retrieving token... for /f "tokens=*" %%i in ('curl -s -X POST -H "Content-Type: application/json" ^ - -d "{\"email\":\"%EMAIL%\",\"password\":\"%PASSWORD%\"}" %API_URL%/login') do set RESPONSE=%%i + -d "{\"email\":\"%EMAIL%\",\"password\":\"%PASSWORD%\"}" %API_URL%/login') do set RESPONSE=%%i -for /f "tokens=2 delims=:" %%a in ('echo %RESPONSE% ^| findstr /i "token"') do ( +%LOG_MESSAGE% [DEBUG] API Login Response: !RESPONSE! + +for /f "tokens=2 delims=:" %%a in ('echo !RESPONSE! ^| findstr /i "token"') do ( set "TOKEN=%%a" set "TOKEN=!TOKEN:~1,-1!" set "TOKEN=!TOKEN:~0,-2!" ) -echo clear suite folder +if not defined TOKEN ( + %LOG_MESSAGE% [ERROR] Failed to retrieve authentication token. Exiting. + exit /b 1 +) +%LOG_MESSAGE% [INFO] Login successful. -curl -X POST %API_URL%/resources/clear/%RESOURCES_FOLDER% -d {} -H "Authorization: Bearer %TOKEN%" +echo. +%LOG_MESSAGE% [INFO] Clearing resources folder: %RESOURCES_FOLDER% +curl -s -X POST %API_URL%/resources/clear/%RESOURCES_FOLDER% -d {} -H "Authorization: Bearer !TOKEN!" +echo. +%LOG_MESSAGE% [INFO] Folder clear command sent. -echo Uploading files to resources... +:RETRY_UPLOAD +set /a RETRY_COUNT+=1 +echo. +%LOG_MESSAGE% [INFO] Attempting to upload file: %UPLOAD_FILE% (Attempt !RETRY_COUNT! of !MAX_RETRIES!) -curl --location %API_URL%/resources/%RESOURCES_FOLDER% ^ - -H "Authorization: Bearer %TOKEN%" ^ +curl --location --fail %API_URL%/resources/%RESOURCES_FOLDER% ^ + -H "Authorization: Bearer !TOKEN!" ^ -H "Content-Type: multipart/form-data" ^ - --form "data=@%UPLOAD_FILE%" + --form "data=@%UPLOAD_FILE%" >NUL && set SUCCESS=1 +if "!SUCCESS!"=="1" ( + echo. + %LOG_MESSAGE% [SUCCESS] File uploaded successfully on attempt !RETRY_COUNT!. + goto UPLOAD_DONE +) else ( + echo. + %LOG_MESSAGE% [ERROR] Upload failed on attempt !RETRY_COUNT!. + if !RETRY_COUNT! lss !MAX_RETRIES! ( + %LOG_MESSAGE% [INFO] Waiting 10 seconds before retrying... + timeout /t 10 /nobreak >NUL + goto RETRY_UPLOAD + ) else ( + %LOG_MESSAGE% [FATAL] All upload attempts failed. The Jenkins job will now fail. + exit /b 1 + ) +) + +:UPLOAD_DONE cd /d %CURRENT_DIR% -echo Done! +echo. +%LOG_MESSAGE% === Script execution complete. ===