Blame view

plugins/rake-fast/rake-fast.plugin.zsh 842 Bytes
d9bebbb3c   mj   Squashed 'repos/r...
1
2
  _rake_does_task_list_need_generating () {
    [[ ! -f .rake_tasks ]] || [[ Rakefile -nt .rake_tasks ]] || { _is_rails_app && _tasks_changed }
093a6c34b   mj   Squashed 'repos/r...
3
  }
d9bebbb3c   mj   Squashed 'repos/r...
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  _is_rails_app () {
    [[ -e "bin/rails" ]] || [[ -e "script/rails" ]]
  }
  
  _tasks_changed () {
    local -a files
    files=(lib/tasks lib/tasks/**/*(N))
  
    for file in $files; do
      if [[ "$file" -nt .rake_tasks ]]; then
        return 0
      fi
    done
  
    return 1
093a6c34b   mj   Squashed 'repos/r...
19
20
21
22
23
24
25
  }
  
  _rake_generate () {
    rake --silent --tasks | cut -d " " -f 2 > .rake_tasks
  }
  
  _rake () {
d9bebbb3c   mj   Squashed 'repos/r...
26
    if [[ -f Rakefile ]]; then
093a6c34b   mj   Squashed 'repos/r...
27
      if _rake_does_task_list_need_generating; then
d9bebbb3c   mj   Squashed 'repos/r...
28
29
        echo "
  Generating .rake_tasks..." >&2
093a6c34b   mj   Squashed 'repos/r...
30
31
        _rake_generate
      fi
d9bebbb3c   mj   Squashed 'repos/r...
32
      compadd $(cat .rake_tasks)
093a6c34b   mj   Squashed 'repos/r...
33
34
    fi
  }
093a6c34b   mj   Squashed 'repos/r...
35
  compdef _rake rake
d9bebbb3c   mj   Squashed 'repos/r...
36
37
38
39
40
41
42
43
  
  rake_refresh () {
    [[ -f .rake_tasks ]] && rm -f .rake_tasks
  
    echo "Generating .rake_tasks..." >&2
    _rake_generate
    cat .rake_tasks
  }