summaryrefslogtreecommitdiff
path: root/plugins/rake-fast
diff options
context:
space:
mode:
authorOleg Grigoriev <mehanoid.ru@gmail.com>2023-12-20 22:52:27 +0300
committerGitHub <noreply@github.com>2023-12-20 20:52:27 +0100
commit2a1574165691495d21b3f243f50e1b655b361d9b (patch)
treecaea35049aa08d24c477b7a27f904d888b785467 /plugins/rake-fast
parent0bb00eddbbc25564b5329899fcdfcd28153da720 (diff)
downloadzsh-2a1574165691495d21b3f243f50e1b655b361d9b.tar.gz
zsh-2a1574165691495d21b3f243f50e1b655b361d9b.tar.bz2
zsh-2a1574165691495d21b3f243f50e1b655b361d9b.zip
fix(rake-fast): make `.rake_tasks` write atomic (#12108)
Diffstat (limited to 'plugins/rake-fast')
-rw-r--r--plugins/rake-fast/rake-fast.plugin.zsh13
1 files changed, 8 insertions, 5 deletions
diff --git a/plugins/rake-fast/rake-fast.plugin.zsh b/plugins/rake-fast/rake-fast.plugin.zsh
index 86e5ed586..082f02f29 100644
--- a/plugins/rake-fast/rake-fast.plugin.zsh
+++ b/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 () {