Browse Source

fix(rake-fast): make `.rake_tasks` write atomic (#12108)

Oleg Grigoriev 4 months ago
parent
commit
2a15741656
1 changed files with 8 additions and 5 deletions
  1. 8 5
      plugins/rake-fast/rake-fast.plugin.zsh

+ 8 - 5
plugins/rake-fast/rake-fast.plugin.zsh

@@ -43,14 +43,17 @@ _tasks_changed () {
 }
 
 _rake_generate () {
-  echo "version:$_rake_tasks_version" > .rake_tasks
-
-  rake --silent --tasks --all \
+  local rake_tasks_content="version:$_rake_tasks_version\n"
+  rake_tasks_content+=$(rake --silent --tasks --all \
     | sed "s/^rake //" | sed "s/\:/\\\:/g" \
     | sed "s/\[[^]]*\]//g" \
     | sed "s/ *# /\:/" \
-    | sed "s/\:$//" \
-    >> .rake_tasks
+    | sed "s/\:$//")
+
+  local rake_tasks_file="$(mktemp -t .rake_tasks.XXXXXX)"
+  echo $rake_tasks_content > $rake_tasks_file
+
+  mv $rake_tasks_file .rake_tasks
 }
 
 _rake () {