dab09cc0eec220f5c1a541ccb75449c62c20bdb4
- Author
- Oleg Grigoriev <mehanoid.ru@gmail.com>
- Committer
- GitHub <noreply@github.com>
- Date
Message
feat(rake-fast): show task descriptions in autocomplete (#11653)
Diff
1diff --git a/plugins/rake-fast/rake-fast.plugin.zsh b/plugins/rake-fast/rake-fast.plugin.zsh
2index 19dab154bac9fd197dbd54e6479e6da6167205ab..86e5ed58603cbf045faa4526f021cbe902ba8f3b 100644
3--- a/plugins/rake-fast/rake-fast.plugin.zsh
4+++ b/plugins/rake-fast/rake-fast.plugin.zsh
5@@ -1,5 +1,28 @@
6+# The version of the format of .rake_tasks. If the output of _rake_generate
7+# changes, incrementing this number will force it to regenerate
8+_rake_tasks_version=2
9+
10 _rake_does_task_list_need_generating () {
11- [[ ! -f .rake_tasks ]] || [[ Rakefile -nt .rake_tasks ]] || { _is_rails_app && _tasks_changed }
12+ _rake_tasks_missing || _rake_tasks_version_changed || _rakefile_has_changes || { _is_rails_app && _tasks_changed }
13+}
14+
15+_rake_tasks_missing () {
16+ [[ ! -f .rake_tasks ]]
17+}
18+
19+_rake_tasks_version_changed () {
20+ local -a file_version
21+ file_version=`head -n 1 .rake_tasks | sed "s/^version\://"`
22+
23+ if ! [[ $file_version =~ '^[0-9]*$' ]]; then
24+ return true
25+ fi
26+
27+ [[ $file_version -ne $_rake_tasks_version ]]
28+}
29+
30+_rakefile_has_changes () {
31+ [[ Rakefile -nt .rake_tasks ]]
32 }
33
34 _is_rails_app () {
35@@ -20,7 +43,14 @@ _tasks_changed () {
36 }
37
38 _rake_generate () {
39- rake --silent --tasks | cut -d " " -f 2 | sed 's/\[.*\]//g' > .rake_tasks
40+ echo "version:$_rake_tasks_version" > .rake_tasks
41+
42+ rake --silent --tasks --all \
43+ | sed "s/^rake //" | sed "s/\:/\\\:/g" \
44+ | sed "s/\[[^]]*\]//g" \
45+ | sed "s/ *# /\:/" \
46+ | sed "s/\:$//" \
47+ >> .rake_tasks
48 }
49
50 _rake () {
51@@ -29,7 +59,10 @@ _rake () {
52 echo "\nGenerating .rake_tasks..." >&2
53 _rake_generate
54 fi
55- compadd $(cat .rake_tasks)
56+ local -a rake_options
57+ rake_options=("${(@f)$(cat .rake_tasks)}")
58+ shift rake_options
59+ _describe 'rake tasks' rake_options
60 fi
61 }
62 compdef _rake rake