changeset 13:16fe881b8d75

Generate tags in a temp file first. This is because otherwise jumping to a tag while the tag file is being generated will result in a "tag file not sorted" warning.
author Ludovic Chabant <ludovic@chabant.com>
date Tue, 29 Jul 2014 16:07:11 -0700
parents e9d605753a8a
children b8f23bf7b20f
files plat/unix/update_tags.sh plat/win32/update_tags.cmd
diffstat 2 files changed, 16 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/plat/unix/update_tags.sh	Wed Jul 23 17:04:47 2014 -0700
+++ b/plat/unix/update_tags.sh	Tue Jul 29 16:07:11 2014 -0700
@@ -59,16 +59,19 @@
 if [[ -f "$TAGS_FILE" ]]; then
     if [[ "$UPDATED_SOURCE" != "" ]]; then
         echo "Removing references to: $UPDATED_SOURCE"
-        echo "grep -v $UPDATED_SOURCE \"$TAGS_FILE\" > \"$TAGS_FILE.filter\""
-        grep -v $UPDATED_SOURCE "$TAGS_FILE" > "$TAGS_FILE.filter"
-        mv "$TAGS_FILE.filter" "$TAGS_FILE"
+        echo "grep -v $UPDATED_SOURCE \"$TAGS_FILE\" > \"$TAGS_FILE.temp\""
+        grep -v $UPDATED_SOURCE "$TAGS_FILE" > "$TAGS_FILE.temp"
         CTAGS_ARGS="$CTAGS_ARGS --append $UPDATED_SOURCE"
     fi
 fi
 
 echo "Running ctags"
-echo "$CTAGS_EXE -R -f \"$TAGS_FILE\" $CTAGS_ARGS"
-$CTAGS_EXE -R -f "$TAGS_FILE" $CTAGS_ARGS
+echo "$CTAGS_EXE -R -f \"$TAGS_FILE.temp\" $CTAGS_ARGS"
+$CTAGS_EXE -R -f "$TAGS_FILE.temp" $CTAGS_ARGS
+
+echo "Replacing tags file"
+echo "mv -f \"$TAGS_FILE.temp\" \"$TAGS_FILE\""
+mv -f "$TAGS_FILE.temp" "$TAGS_FILE"
 
 echo "Unlocking tags file..."
 rm -f "$TAGS_FILE.lock"
--- a/plat/win32/update_tags.cmd	Wed Jul 23 17:04:47 2014 -0700
+++ b/plat/win32/update_tags.cmd	Tue Jul 29 16:07:11 2014 -0700
@@ -66,17 +66,19 @@
 if exist "%TAGS_FILE%" (
     if not [%UPDATED_SOURCE%]==[] (
         echo Removing references to: %UPDATED_SOURCE% >> %LOG_FILE%
-        echo type "%TAGS_FILE%" ^| findstr /V /C:"%UPDATED_SOURCE%" ^> "%TAGS_FILE%.filter" >> %LOG_FILE%
-        findstr /V /C:"%UPDATED_SOURCE%" "%TAGS_FILE%" > "%TAGS_FILE%.filter"
-        echo move /Y "%TAGS_FILE%.filter" "%TAGS_FILE%" >> %LOG_FILE%
-        move /Y "%TAGS_FILE%.filter" "%TAGS_FILE%"
+        echo type "%TAGS_FILE%" ^| findstr /V /C:"%UPDATED_SOURCE%" ^> "%TAGS_FILE%.temp" >> %LOG_FILE%
+        findstr /V /C:"%UPDATED_SOURCE%" "%TAGS_FILE%" > "%TAGS_FILE%.temp"
         set CTAGS_ARGS=--append %UPDATED_SOURCE%
     )
 )
 
 echo Running ctags >> %LOG_FILE%
-echo "%CTAGS_EXE%" -R -f "%TAGS_FILE%" %CTAGS_ARGS% >> %LOG_FILE%
-"%CTAGS_EXE%" -R -f "%TAGS_FILE%" %CTAGS_ARGS%
+echo "%CTAGS_EXE%" -R -f "%TAGS_FILE%.temp" %CTAGS_ARGS% >> %LOG_FILE%
+"%CTAGS_EXE%" -R -f "%TAGS_FILE%.temp" %CTAGS_ARGS%
+
+echo Replacing tags file >> %LOG_FILE%
+echo move /Y "%TAGS_FILE%.temp" "%TAGS_FILE%" >> %LOG_FILE%
+move /Y "%TAGS_FILE%.temp" "%TAGS_FILE%" >NUL 2>&1
 
 echo Unlocking tags file... >> %LOG_FILE%
 del /F "%TAGS_FILE%.lock"