_zeus 2.3 KB
Newer Older
Tobias Preuss's avatar
Tobias Preuss committed
1
2
3
4
#compdef zeus
#autoload

# in order to make this work, you will need to have the gem zeus installed
5
# zeus zsh completion
Tobias Preuss's avatar
Tobias Preuss committed
6
7

local -a _1st_arguments
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
if [[ -e .zeus.sock ]]; then
  _1st_arguments=(
  'console:Lets you interact with your Rails application from the command line. (alias = c)'
  'cucumber:Runs cucumber.'
  'dbconsole:Figures out which database you are using and drops you into whichever command line interface.'
  'destroy:Figures out what generate did, and undoes it. (alias = d)'
  'generate:Uses templates to create a whole lot of things. (alias = g)'
  'rake:Execute rake tasks.'
  'runner:Runs Ruby code in the context of Rails non-interactively. (alias = r)'
  'server:Launches a small web server named WEBrick which comes bundled with Ruby. (alias = s)'
  'test:Runs RSpec tests. (alias = rspec, testrb)'
  'version:Shows the version number.'
  )
else
  _1st_arguments=(
  'start:Preloads the zeus environment'
  'init:Generate a zeus.json file'
  )
fi

_rails_generate_arguments() {
    generate_arguments=(
      controller
      generator
      helper
      integration_test
      mailer
      migration
      model
      observer
      performance_test
      plugin
      resource
      scaffold
      scaffold_controller
      session_migration
      stylesheets
    )
}

_rake_does_task_list_need_generating () {
  if [ ! -f .rake_tasks ]; then return 0;
  else
    accurate=$(stat -f%m .rake_tasks)
    changed=$(stat -f%m Rakefile)
    return $(expr $accurate '>=' $changed)
  fi
}

_zrake ()
{
    local expl
    declare -a tasks

    if [ -f Rakefile ]; then
      if _rake_does_task_list_need_generating; then
        echo "\nGenerating .rake_tasks..." > /dev/stderr
        rake --silent --tasks | cut -d " " -f 2 > .rake_tasks
      fi
      tasks=(`cat .rake_tasks`)
      _wanted tasks expl 'rake' compadd $tasks
    fi
}
Tobias Preuss's avatar
Tobias Preuss committed
71
72

local expl
73
74
local curcontext="$curcontext" state line
typeset -A opt_args
Tobias Preuss's avatar
Tobias Preuss committed
75

76
77
78
_arguments -C \
    ':command:->command' \
    '*::options:->options'
Tobias Preuss's avatar
Tobias Preuss committed
79
80


81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
case $state in
  (command)
    _describe -t commands "zeus subcommand" _1st_arguments
    return
  ;;

  (options)
    case $line[1] in
      (rake)
        _zrake
      ;;
      (generate|g|destroy|d)
        _rails_generate_arguments
        _wanted generate_arguments expl 'all generate' compadd -a generate_arguments
      ;;
    esac
  ;;
esac