Ver Fonte

Merge branch 'bugfix/export_scripts_err_messages_and_returncodes' into 'master'

tools/echo and cleanup fix in export scripts

Closes IDFGH-3923 and IDFGH-3835

See merge request espressif/esp-idf!15411
Marek Fiala há 4 anos atrás
pai
commit
5eb30c2a7c
3 ficheiros alterados com 49 adições e 40 exclusões
  1. 9 10
      export.bat
  2. 3 3
      export.fish
  3. 37 27
      export.sh

+ 9 - 10
export.bat

@@ -12,7 +12,7 @@ if %errorlevel% neq 0 set "MISSING_REQUIREMENTS=  python &echo\"
 git.exe --version >NUL 2>NUL
 git.exe --version >NUL 2>NUL
 if %errorlevel% neq 0 set "MISSING_REQUIREMENTS=%MISSING_REQUIREMENTS%  git"
 if %errorlevel% neq 0 set "MISSING_REQUIREMENTS=%MISSING_REQUIREMENTS%  git"
 
 
-if not "%MISSING_REQUIREMENTS%" == "" goto :error_missing_requirements
+if not "%MISSING_REQUIREMENTS%" == "" goto :__error_missing_requirements
 
 
 set PREFIX=python.exe %IDF_PATH%
 set PREFIX=python.exe %IDF_PATH%
 DOSKEY idf.py=%PREFIX%\tools\idf.py $*
 DOSKEY idf.py=%PREFIX%\tools\idf.py $*
@@ -39,7 +39,7 @@ echo Adding ESP-IDF tools to PATH...
 :: but that way it is impossible to get the exit code of idf_tools.py.
 :: but that way it is impossible to get the exit code of idf_tools.py.
 set "IDF_TOOLS_EXPORTS_FILE=%TEMP%\idf_export_vars.tmp"
 set "IDF_TOOLS_EXPORTS_FILE=%TEMP%\idf_export_vars.tmp"
 python.exe %IDF_PATH%\tools\idf_tools.py export --format key-value >"%IDF_TOOLS_EXPORTS_FILE%"
 python.exe %IDF_PATH%\tools\idf_tools.py export --format key-value >"%IDF_TOOLS_EXPORTS_FILE%"
-if %errorlevel% neq 0 goto :end
+if %errorlevel% neq 0 goto :__end
 
 
 for /f "usebackq tokens=1,2 eol=# delims==" %%a in ("%IDF_TOOLS_EXPORTS_FILE%") do (
 for /f "usebackq tokens=1,2 eol=# delims==" %%a in ("%IDF_TOOLS_EXPORTS_FILE%") do (
       call set "%%a=%%b"
       call set "%%a=%%b"
@@ -48,12 +48,12 @@ for /f "usebackq tokens=1,2 eol=# delims==" %%a in ("%IDF_TOOLS_EXPORTS_FILE%")
 :: This removes OLD_PATH substring from PATH, leaving only the paths which have been added,
 :: This removes OLD_PATH substring from PATH, leaving only the paths which have been added,
 :: and prints semicolon-delimited components of the path on separate lines
 :: and prints semicolon-delimited components of the path on separate lines
 call set PATH_ADDITIONS=%%PATH:%OLD_PATH%=%%
 call set PATH_ADDITIONS=%%PATH:%OLD_PATH%=%%
-if "%PATH_ADDITIONS%"=="" call :print_nothing_added
+if "%PATH_ADDITIONS%"=="" call :__print_nothing_added
 if not "%PATH_ADDITIONS%"=="" echo     %PATH_ADDITIONS:;=&echo.    %
 if not "%PATH_ADDITIONS%"=="" echo     %PATH_ADDITIONS:;=&echo.    %
 
 
 echo Checking if Python packages are up to date...
 echo Checking if Python packages are up to date...
 python.exe %IDF_PATH%\tools\check_python_dependencies.py
 python.exe %IDF_PATH%\tools\check_python_dependencies.py
-if %errorlevel% neq 0 goto :end
+if %errorlevel% neq 0 goto :__end
 
 
 echo.
 echo.
 echo Done! You can now compile ESP-IDF projects.
 echo Done! You can now compile ESP-IDF projects.
@@ -62,16 +62,16 @@ echo.
 echo   idf.py build
 echo   idf.py build
 echo.
 echo.
 
 
-goto :end
+goto :__end
 
 
-:print_nothing_added
+:__print_nothing_added
     echo No directories added to PATH:
     echo No directories added to PATH:
     echo.
     echo.
     echo %PATH%
     echo %PATH%
     echo.
     echo.
     goto :eof
     goto :eof
 
 
-:error_missing_requirements
+:__error_missing_requirements
     echo.
     echo.
     echo Error^: The following tools are not installed in your environment.
     echo Error^: The following tools are not installed in your environment.
     echo.
     echo.
@@ -80,10 +80,9 @@ goto :end
     echo Please use the Windows Tool installer for setting up your environment.
     echo Please use the Windows Tool installer for setting up your environment.
     echo Download link: https://dl.espressif.com/dl/esp-idf/
     echo Download link: https://dl.espressif.com/dl/esp-idf/
     echo For more details please visit our website: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/windows-setup.html
     echo For more details please visit our website: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/windows-setup.html
-    goto :end
-
-:end
+    goto :__end
 
 
+:__end
 :: Clean up
 :: Clean up
 if not "%IDF_TOOLS_EXPORTS_FILE%"=="" (
 if not "%IDF_TOOLS_EXPORTS_FILE%"=="" (
     del "%IDF_TOOLS_EXPORTS_FILE%" 1>nul 2>nul
     del "%IDF_TOOLS_EXPORTS_FILE%" 1>nul 2>nul

+ 3 - 3
export.fish

@@ -1,6 +1,6 @@
 # This script should be sourced, not executed.
 # This script should be sourced, not executed.
 
 
-function idf_export_main
+function __main
     if not set -q IDF_PATH
     if not set -q IDF_PATH
         echo "IDF_PATH must be set before sourcing this script"
         echo "IDF_PATH must be set before sourcing this script"
         return 1
         return 1
@@ -65,7 +65,7 @@ function idf_export_main
     echo ""
     echo ""
 end
 end
 
 
-idf_export_main
+__main
 
 
 set click_version (python -c 'import click; print(click.__version__.split(".")[0])')
 set click_version (python -c 'import click; print(click.__version__.split(".")[0])')
 if test $click_version -lt 8
 if test $click_version -lt 8
@@ -75,4 +75,4 @@ else
 end
 end
 
 
 
 
-set -e idf_export_main
+set -e __main

+ 37 - 27
export.sh

@@ -1,6 +1,6 @@
 # This script should be sourced, not executed.
 # This script should be sourced, not executed.
 
 
-realpath_int() {
+__realpath() {
     wdir="$PWD"; [ "$PWD" = "/" ] && wdir=""
     wdir="$PWD"; [ "$PWD" = "/" ] && wdir=""
     arg=$1
     arg=$1
     case "$arg" in
     case "$arg" in
@@ -12,7 +12,12 @@ realpath_int() {
 }
 }
 
 
 
 
-idf_export_main() {
+__verbose() {
+    [ -n "${IDF_EXPORT_QUIET}" ] && return
+    echo "$@"
+}
+
+__main() {
     # The file doesn't have executable permissions, so this shouldn't really happen.
     # The file doesn't have executable permissions, so this shouldn't really happen.
     # Doing this in case someone tries to chmod +x it and execute...
     # Doing this in case someone tries to chmod +x it and execute...
 
 
@@ -82,15 +87,15 @@ idf_export_main() {
     echo "Detecting the Python interpreter"
     echo "Detecting the Python interpreter"
     . "${IDF_PATH}/tools/detect_python.sh"
     . "${IDF_PATH}/tools/detect_python.sh"
 
 
-    echo "Adding ESP-IDF tools to PATH..."
+    __verbose "Adding ESP-IDF tools to PATH..."
     # Call idf_tools.py to export tool paths
     # Call idf_tools.py to export tool paths
     export IDF_TOOLS_EXPORT_CMD=${IDF_PATH}/export.sh
     export IDF_TOOLS_EXPORT_CMD=${IDF_PATH}/export.sh
     export IDF_TOOLS_INSTALL_CMD=${IDF_PATH}/install.sh
     export IDF_TOOLS_INSTALL_CMD=${IDF_PATH}/install.sh
     idf_exports=$("$ESP_PYTHON" "${IDF_PATH}/tools/idf_tools.py" export) || return 1
     idf_exports=$("$ESP_PYTHON" "${IDF_PATH}/tools/idf_tools.py" export) || return 1
     eval "${idf_exports}"
     eval "${idf_exports}"
 
 
-    echo "Using Python interpreter in $(which python)"
-    echo "Checking if Python packages are up to date..."
+    __verbose "Using Python interpreter in $(which python)"
+    __verbose "Checking if Python packages are up to date..."
     python "${IDF_PATH}/tools/check_python_dependencies.py" || return 1
     python "${IDF_PATH}/tools/check_python_dependencies.py" || return 1
 
 
 
 
@@ -108,20 +113,28 @@ idf_export_main() {
         # shellcheck disable=SC2169,SC2039  # unreachable with 'dash'
         # shellcheck disable=SC2169,SC2039  # unreachable with 'dash'
         paths="${path_prefix//:/ }"
         paths="${path_prefix//:/ }"
         if [ -n "${paths}" ]; then
         if [ -n "${paths}" ]; then
-            echo "Added the following directories to PATH:"
+            __verbose "Added the following directories to PATH:"
         else
         else
-            echo "All paths are already set."
+            __verbose "All paths are already set."
         fi
         fi
         for path_entry in ${paths}
         for path_entry in ${paths}
         do
         do
-            echo "  ${path_entry}"
+            __verbose "  ${path_entry}"
         done
         done
     else
     else
-        echo "Updated PATH variable:"
-        echo "  ${PATH}"
+        __verbose "Updated PATH variable:"
+        __verbose "  ${PATH}"
     fi
     fi
 
 
-    # Clean up
+
+    __verbose "Done! You can now compile ESP-IDF projects."
+    __verbose "Go to the project directory and run:"
+    __verbose ""
+    __verbose "  idf.py build"
+    __verbose ""
+}
+
+__cleanup() {
     unset old_path
     unset old_path
     unset paths
     unset paths
     unset path_prefix
     unset path_prefix
@@ -129,18 +142,23 @@ idf_export_main() {
     unset IDF_ADD_PATHS_EXTRAS
     unset IDF_ADD_PATHS_EXTRAS
     unset idf_exports
     unset idf_exports
     unset ESP_PYTHON
     unset ESP_PYTHON
+    unset SOURCE_ZSH
+    unset SOURCE_BASH
+
+    unset __realpath
+    unset __main
+    unset __verbose
+    unset __enable_autocomplete
+    unset __cleanup
 
 
     # Not unsetting IDF_PYTHON_ENV_PATH, it can be used by IDF build system
     # Not unsetting IDF_PYTHON_ENV_PATH, it can be used by IDF build system
     # to check whether we are using a private Python environment
     # to check whether we are using a private Python environment
 
 
-    echo "Done! You can now compile ESP-IDF projects."
-    echo "Go to the project directory and run:"
-    echo ""
-    echo "  idf.py build"
-    echo ""
+    return $1
 }
 }
 
 
-enable_autocomplete() {
+
+__enable_autocomplete() {
     click_version="$(python -c 'import click; print(click.__version__.split(".")[0])')"
     click_version="$(python -c 'import click; print(click.__version__.split(".")[0])')"
     if [[ click_version -lt 8 ]]
     if [[ click_version -lt 8 ]]
     then
     then
@@ -158,15 +176,7 @@ enable_autocomplete() {
     then
     then
         eval "$(env LANG=en _IDF.PY_COMPLETE=$SOURCE_BASH idf.py)"  || echo "WARNING: Failed to load shell autocompletion for bash version: $BASH_VERSION!"
         eval "$(env LANG=en _IDF.PY_COMPLETE=$SOURCE_BASH idf.py)"  || echo "WARNING: Failed to load shell autocompletion for bash version: $BASH_VERSION!"
     fi
     fi
-
-    unset SOURCE_ZSH
-    unset SOURCE_BASH
-
 }
 }
 
 
-idf_export_main
-enable_autocomplete
-
-unset realpath_int
-unset idf_export_main
-unset enable_autocomplete
+__main && __enable_autocomplete
+__cleanup $?