# HG changeset patch # User Patrik Svestka # Date 1500379222 -7200 # Node ID 919fad4de40f1a36c277259acbce9cfd58410952 # Parent 4bdcdc52e55a2e1d7efb0e0bffe77ad10c1bd17c version 1.4.6 [BATCH] printing stdout is done, if possible, via :print_message function [BATCH] when both manual and automatic switches detected - manual wins (--image vs --Ignoreimage) [PS] kicked out the pause when logging is ignored do to locked log file diff -r 4bdcdc52e55a -r 919fad4de40f smalltalk.bat --- a/smalltalk.bat Wed Jul 12 10:25:43 2017 +0200 +++ b/smalltalk.bat Tue Jul 18 14:00:22 2017 +0200 @@ -53,7 +53,7 @@ :: Versions = :: ========== :: This script -SET batch_script_version=1.4.5 +SET batch_script_version=1.4.6 :: Smalltalk/X SET stx_version=6.2.6 @@ -440,17 +440,8 @@ ) ) IF "!stx.verify_print_message!" EQU "TRUE" ( - IF "!use_color!" EQU "TRUE" ( - CALL :printInColor !stx.stdout_VerboseBackgroundColor! !stx.stdout_VerboseForegroundColor! "===============================" - CALL :printInColor !stx.stdout_VerboseBackgroundColor! !stx.stdout_VerboseForegroundColor! "Variable syntax validated. =" - CALL :printInColor !stx.stdout_VerboseBackgroundColor! !stx.stdout_VerboseForegroundColor! "===============================" - ECHO: - ) ELSE ( - ECHO "===============================" - ECHO "Variable syntax validated. =" - ECHO "===============================" - ECHO: - ) + CALL :print_message !use_color! !stx.stdout_VerboseBackgroundColor! !stx.stdout_VerboseForegroundColor! "===============================" "Variable syntax validated. =" "===============================" + ECHO: ) ) @@ -462,27 +453,11 @@ :: THEN quick start is used IF "!stx.__binary.stx_quick_start!" EQU "TRUE" ( IF "!stx.__binary.start_with_image!" EQU "TRUE" ( - IF "!use_color!" EQU "TRUE" ( - CALL :printInColor !stx.stdout_WarningBackgroundColor! !stx.stdout_WarningForegroundColor! "[WARN] Your configuration flawed - compensating." - CALL :printInColor !stx.stdout_WarningBackgroundColor! !stx.stdout_WarningForegroundColor! "[WARN] stx_quick_start=TRUE AND start_with_image=TRUE which makes no sense." - CALL :printInColor !stx.stdout_WarningBackgroundColor! !stx.stdout_WarningForegroundColor! "[WARN] Using only image functionality. start_with_image=TRUE and stx_quick_start=FALSE" - ) ELSE ( - ECHO "[WARN] Your configuration flawed - compensating." - ECHO "[WARN] stx_quick_start=TRUE AND start_with_image=TRUE which makes no sense." - ECHO "[WARN] Using only image functionality. start_with_image=TRUE and stx_quick_start=FALSE" - ) + CALL :print_message !use_color! !stx.stdout_WarningBackgroundColor! !stx.stdout_WarningForegroundColor! "[WARN] Your configuration flawed - compensating." "[WARN] stx_quick_start=TRUE AND start_with_image=TRUE which makes no sense." "[WARN] Using only image functionality. start_with_image=TRUE and stx_quick_start=FALSE" ECHO: SET "stx.__binary.stx_quick_start=FALSE" ) ELSE IF "!stx.__binary.list_available_images!" EQU "TRUE" ( - IF "!use_color!" EQU "TRUE" ( - CALL :printInColor !stx.stdout_WarningBackgroundColor! !stx.stdout_WarningForegroundColor! "[WARN] Your configuration flawed - compensating." - CALL :printInColor !stx.stdout_WarningBackgroundColor! !stx.stdout_WarningForegroundColor! "[WARN] start_with_image=FALSE, list_available_images=TRUE, AND stx_quick_start=TRUE which makes no sense." - CALL :printInColor !stx.stdout_WarningBackgroundColor! !stx.stdout_WarningForegroundColor! "[WARN] Using only stx_quick_start=TRUE" - ) ELSE ( - ECHO "[WARN] Your configuration flawed - compensating." - ECHO "[WARN] start_with_image=FALSE, list_available_images=TRUE, AND stx_quick_start=TRUE which makes no sense." - ECHO "[WARN] Using only stx_quick_start=TRUE" - ) + CALL :print_message !use_color! !stx.stdout_WarningBackgroundColor! !stx.stdout_WarningForegroundColor! "[WARN] Your configuration flawed - compensating." "[WARN] start_with_image=FALSE, list_available_images=TRUE, AND stx_quick_start=TRUE which makes no sense." "[WARN] Using only stx_quick_start=TRUE" ECHO: SET "stx.__binary.list_available_images=FALSE" ) @@ -491,6 +466,7 @@ :: ========================================================================== :: Pair stx.__binary.start_with_image ^& stx.__binary.list_available_images = :: ========================================================================== +:: NOTE: not using :print_message -> sending too many messages IF "!stx.__binary.start_with_image!" EQU "FALSE" ( IF "!stx.__binary.list_available_images!" EQU "TRUE" ( IF "!use_color!" EQU "TRUE" ( @@ -512,6 +488,7 @@ :: ============================================================================================ :: Pair variables (work together) stx.__binary.record_log_file and stx.__binary.append_to_log = :: ============================================================================================ +:: NOTE: not using :print_message -> sending too many messages IF "!stx.__binary.record_log_file!" EQU "FALSE" ( IF "!stx.__binary.append_to_log!" EQU "TRUE" ( ECHO: @@ -604,13 +581,7 @@ :: Checking existence of logging directory, if not found all logging is disabled = :: =============================================================================== IF NOT EXIST "!stx.log_directory!" ( - IF "!use_color" EQU "TRUE" ( - CALL :printInColor !stx.stdout_WarningBackgroundColor! !stx.stdout_WarningForegroundColor! "[WARN] The logging path: !stx.log_directory! NOT found." - CALL :printInColor !stx.stdout_WarningBackgroundColor! !stx.stdout_WarningForegroundColor! "[WARN] Logging will be DISABLED." - ) ELSE ( - ECHO "[WARN] The logging path: !stx.log_directory! NOT found." - ECHO "[WARN] Logging will be DISABLED." - ) + CALL :print_message !use_color! !stx.stdout_WarningBackgroundColor! !stx.stdout_WarningForegroundColor! "[WARN] The logging path: !stx.log_directory! NOT found." "[WARN] Logging will be DISABLED." ECHO: SET stx.__binary.start_with_image=FALSE SET stx.__binary.append_to_log=FALSE @@ -620,11 +591,7 @@ :: Checking existence of log file if not found append is disabled = :: ================================================================ IF NOT EXIST "!log_filename!" ( - IF "!use_color!" EQU "TRUE" ( - CALL :printInColor !stx.stdout_VerboseBackgroundColor! !stx.stdout_VerboseForegroundColor! "[INFO] No log file found turning off the append mode." - ) ELSE ( - ECHO "[INFO] No log file found turning off the append mode." - ) + CALL :print_message !use_color! !stx.stdout_VerboseBackgroundColor! !stx.stdout_VerboseForegroundColor! "[INFO] No log file found turning off the append mode." ECHO: SET stx.__binary.append_to_log=FALSE ) @@ -729,13 +696,7 @@ IF "!stx_manual_switch_detected!" EQU "TRUE" ( IF "!stx.__binary.cmd_in_powershell!" EQU "TRUE" ( ECHO: - IF "!use_color!" EQU "TRUE" ( - CALL :printInColor !stx.stdout_WarningBackgroundColor! !stx.stdout_WarningForegroundColor! "[WARN] You can not simultaneously pass command-line switches to stx.com and log using CMD PowerShell mode - __binary.cmd_in_powershell=TRUE" - CALL :printInColor !stx.stdout_WarningBackgroundColor! !stx.stdout_WarningForegroundColor! "[WARN] Switching off LOGGING and executing only via cmd.exe." - ) ELSE ( - ECHO "[WARN] You can not simultaneously pass command-line switches to stx.com and log using CMD PowerShell mode - __binary.cmd_in_powershell=TRUE" - ECHO "[WARN] Switching off LOGGING and executing only via cmd.exe." - ) + CALL :print_message !use_color! !stx.stdout_WarningBackgroundColor! !stx.stdout_WarningForegroundColor! "[WARN] You can not simultaneously pass command-line switches to stx.com and log using CMD PowerShell mode - __binary.cmd_in_powershell=TRUE" "[WARN] Switching off LOGGING and executing only via cmd.exe." ECHO: SET stx.__binary.record_log_file=FALSE SET stx.__binary.append_to_log=FALSE @@ -752,11 +713,7 @@ IF "!stx.__binary.list_available_images!" EQU "TRUE" ( REM USER INPUT CALL :user_input !stx.image_path! stx.image_name !stx.image_suffix! - IF "!use_color!" EQU "TRUE" ( - CALL :printInColor !stx.stdout_VerboseBackgroundColor! !stx.stdout_VerboseForegroundColor! "[INFO] Loading image =>!stx.image_name:"=!"<= selected by the user." - ) ELSE ( - ECHO "[INFO] Loading image =>!stx.image_name:"=!"<= selected by the user." - ) + CALL :print_message !use_color! !stx.stdout_VerboseBackgroundColor! !stx.stdout_VerboseForegroundColor! "[INFO] Loading image =>!stx.image_name:"=!"<= selected by the user." SET user_selected_image="!stx.image_name:"=!" IF DEFINED internal_runtime_options ( SET stx_switch=!stx_switch! !internal_runtime_options! "--image" !user_selected_image! @@ -765,11 +722,7 @@ ) SET user_selected_image= ) ELSE ( - IF "!use_color!" EQU "TRUE" ( - CALL :printInColor !stx.stdout_VerboseBackgroundColor! !stx.stdout_VerboseForegroundColor! "[INFO] DEFAULT IMAGE: !stx.image_path:"=!!default_image_name:"=! starts" - ) ELSE ( - ECHO "[INFO] DEFAULT IMAGE: !stx.image_path:"=!!default_image_name:"=! starts" - ) + CALL :print_message !use_color! !stx.stdout_VerboseBackgroundColor! !stx.stdout_VerboseForegroundColor! "[INFO] DEFAULT IMAGE: !stx.image_path:"=!!default_image_name:"=! starts" IF DEFINED internal_runtime_options ( SET stx_switch="--image" !default_image_name! !internal_runtime_options! !stx_switch! ) ELSE ( @@ -778,7 +731,10 @@ ) ) ELSE ( IF "!stx.__binary.stx_quick_start!" EQU "TRUE" ( - IF DEFINED internal_runtime_options ( + IF "!stx_manual_switch_detected!" EQU "TRUE" ( + CALL :print_message !use_color! !stx.stdout_VerboseBackgroundColor! !stx.stdout_VerboseForegroundColor! "[INFO] Manual switch detected - configuration is ignored" + SET stx_switch= !stx_switch! + ) ELSE IF DEFINED internal_runtime_options ( SET stx_switch="--ignoreImage" !stx_switch! !internal_runtime_options! "--quick" ) ELSE ( SET stx_switch="--ignoreImage" !stx_switch! "--quick" @@ -802,6 +758,7 @@ :: ============================================================================= :: Check if the log file is not too big (with jumping into log file directory) = :: ============================================================================= +:: NOTE: not using :print_message -> sending too many messages :: Changing to log directory pushd "!stx.log_directory!" IF "!stx.__binary.append_to_log!" EQU "TRUE" ( @@ -854,17 +811,9 @@ SET exec_command$=CALL !powershell_exec! -WindowStyle Normal -nologo -noninteractive -NoProfile -ExecutionPolicy Bypass -Command "& {!powershell_script_file! -executable '!smalltalk_executable:"=!' -log_file '!stx.log_directory:"=!!log_filename:"=!' -log_file_encoding '!stx.log_file_encoding!' -append_to_log '!stx.__binary.append_to_log!' -cmd_close '!cmd_close!' -PowerShellVersion '!PowerShellVersion!' -cmd_in_powershell '!stx.__binary.cmd_in_powershell!' -stx_manual_switch_detected '!stx_manual_switch_detected!'};" ) ELSE ( ECHO: - IF "!use_color!" EQU "TRUE" ( - CALL :printInColor !stx.stdout_WarningBackgroundColor! !stx.stdout_WarningForegroundColor! "[WARN] NO LOGGING" - ECHO: - CALL :printInColor !stx.stdout_VerboseBackgroundColor! !stx.stdout_VerboseForegroundColor! "[INFO] User disabled or limitation applies." - CALL :printInColor !stx.stdout_VerboseBackgroundColor! !stx.stdout_VerboseForegroundColor! "[INFO] Executing: cmd.exe !cmd_close:"=! CALL !smalltalk_executable:"=! !stx_switch!" - ) ELSE ( - ECHO "[WARN] NO LOGGING." - ECHO: - ECHO "[INFO] User disabled or limitation applies." - ECHO "[INFO] Executing: cmd.exe !cmd_close:"=! CALL !smalltalk_executable:"=! !stx_switch!" - ) + CALL :print_message !use_color! !stx.stdout_WarningBackgroundColor! !stx.stdout_WarningForegroundColor! "[WARN] NO LOGGING" + ECHO: + CALL :print_message !use_color! !stx.stdout_VerboseBackgroundColor! !stx.stdout_VerboseForegroundColor! "[INFO] User disabled or limitation applies." "[INFO] Executing: cmd.exe !cmd_close:"=! CALL !smalltalk_executable:"=! !stx_switch!" SET "exec_command$=cmd.exe !cmd_close! CALL !smalltalk_executable:"=! !stx_switch!" ) @@ -938,27 +887,13 @@ IF "!__numeric.exit_value!" NEQ "0" ( IF "%~1" NEQ "" ( ECHO: - IF "!use_color!" EQU "TRUE" ( - CALL :printInColor !stx.stdout_ErrorForegroundColor! !stx.stdout_ErrorBackgroundColor! "[ERROR] "%1"" - ) ELSE ( - ECHO "%~1" - ) + CALL :print_message !use_color! !stx.stdout_ErrorForegroundColor! !stx.stdout_ErrorBackgroundColor! "[ERROR] "%1"" ) IF "%~2" NEQ "" ( - IF "!use_color!" EQU "TRUE" ( - CALL :printInColor !stx.stdout_ErrorForegroundColor! !stx.stdout_ErrorBackgroundColor! "[ERROR] "%2"" - ) ELSE ( - ECHO "%~2" - ) + CALL :print_message !use_color! !stx.stdout_ErrorForegroundColor! !stx.stdout_ErrorBackgroundColor! "[ERROR] "%2"" ) ECHO: - IF "!use_color!" EQU "TRUE" ( - CALL :printInColor !stx.stdout_ErrorForegroundColor! !stx.stdout_ErrorBackgroundColor! "[ERROR] Exiting with error. Script __numeric.exit_value: !__numeric.exit_value!." - CALL :printInColor !stx.stdout_ErrorForegroundColor! !stx.stdout_ErrorForegroundColor! "[ERROR] Batch errorlevel: !ERRORLEVEL!" - ) ELSE ( - ECHO "[ERROR] Exiting with error. Script __numeric.exit_value: !__numeric.exit_value!." - ECHO "[ERROR] Batch errorlevel: !ERRORLEVEL!" - ) + CALL :print_message !use_color! !stx.stdout_ErrorForegroundColor! !stx.stdout_ErrorBackgroundColor! "[ERROR] Exiting with error. Script __numeric.exit_value: !__numeric.exit_value!." "[ERROR] Batch errorlevel: !ERRORLEVEL!" PAUSE REM Cleanup namespace stx. REM nul redirection stops error output if no stx. var is set @@ -970,11 +905,7 @@ EXIT /B 1 ) ELSE ( ECHO: - IF "!use_color!" EQU "TRUE" ( - CALL :printInColor !stx.stdout_VerboseBackgroundColor! !stx.stdout_VerboseForegroundColor! "[INFO] Exiting correctly." - ) ELSE ( - ECHO "[INFO] Exiting correctly." - ) + CALL :print_message !use_color! !stx.stdout_VerboseBackgroundColor! !stx.stdout_VerboseForegroundColor! "[INFO] Exiting correctly." REM Cleanup namespace stx. REM nul redirection stops error output if no stx. var is set FOR /F "tokens=1 delims==" %%V IN ('SET stx. 2^>NUL') DO ( @@ -1189,6 +1120,44 @@ EXIT /B +:print_message +SET "use_color=%1" +SET "stdout_VerboseBackgroundColor=%2" +SET "stdout_VerboseForegroundColor=%3" +REM ECHO here. +REM ECHO %use_color% +REM ECHO %stdout_VerboseBackgroundColor% +REM ECHO %stdout_VerboseForegroundColor% +REM pause +SET "message1=%4" +SET "message2=%5" +SET "message3=%6" + +IF "%use_color%" EQU "TRUE" ( + IF DEFINED message1 ( + CALL :printInColor %stdout_VerboseBackgroundColor% %stdout_VerboseForegroundColor% %message1% + ) ELSE ( + CALL :printInColor %stdout_VerboseBackgroundColor% %stdout_VerboseForegroundColor% "[ERROR] No message defined." + ) + IF DEFINED message2 ( + CALL :printInColor %stdout_VerboseBackgroundColor% %stdout_VerboseForegroundColor% %message2% + IF DEFINED message3 ( + CALL :printInColor %stdout_VerboseBackgroundColor% %stdout_VerboseForegroundColor% %message2% + ) + ) +) ELSE ( + IF DEFINED message1 ( + ECHO "%message1%" + ) ELSE ( + ECHO "[ERROR] No message defined." + ) + IF DEFINED message2 ( + ECHO "%message2%" + IF DEFINED message3 ( + ECHO "%message3%" + ) + ) +) :: ====================================== :: Native Shell coloring for Windows 10 = diff -r 4bdcdc52e55a -r 919fad4de40f smalltalk.ps1 --- a/smalltalk.ps1 Wed Jul 12 10:25:43 2017 +0200 +++ b/smalltalk.ps1 Tue Jul 18 14:00:22 2017 +0200 @@ -14,6 +14,7 @@ # =========================================================================== # StX switches which are build during batch file execution $env:stx_switch; $stx_switch = [environment]::GetEnvironmentVariable("stx_switch"); + # PowerShell version detected during batch file execution $env:powershell_version_all_functionality; $stx_powershell_version = [environment]::GetEnvironmentVariable("powershell_version_all_functionality"); # getting line width for the log file @@ -148,6 +149,7 @@ $execute_command ) try { + "`n", "[INFO] Executing command: $execute_command" | PrintMessage; Invoke-Expression -Command:$execute_command If ($lastexitcode -ne 0) { $result = $result -join "`n"; @@ -219,8 +221,8 @@ If ($is_logfile_locked){ "`n", "[WARN] Log file $log_file in use.`n`n !!NO LOGGING will be available for this Smalltalk/X instance!!" | PrintMessage; '[INFO] Press any key to continue ...' | PrintMessage; - # waits for pressing any key - $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") | Out-null; + # pause - waits for pressing any key + # $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") | Out-null; $logging_function = "Tee-Host | Out-null"; } Else { If ($append_to_log) {