_zeus
2352 bytes
1#compdef zeus
2#autoload
3
4# in order to make this work, you will need to have the gem zeus installed
5# zeus zsh completion
6
7local -a _1st_arguments
8if [[ -e .zeus.sock ]]; then
9 _1st_arguments=(
10 'console:Lets you interact with your Rails application from the command line. (alias = c)'
11 'cucumber:Runs cucumber.'
12 'dbconsole:Figures out which database you are using and drops you into whichever command line interface.'
13 'destroy:Figures out what generate did, and undoes it. (alias = d)'
14 'generate:Uses templates to create a whole lot of things. (alias = g)'
15 'rake:Execute rake tasks.'
16 'runner:Runs Ruby code in the context of Rails non-interactively. (alias = r)'
17 'server:Launches a small web server named WEBrick which comes bundled with Ruby. (alias = s)'
18 'test:Runs RSpec tests. (alias = rspec, testrb)'
19 'version:Shows the version number.'
20 )
21else
22 _1st_arguments=(
23 'start:Preloads the zeus environment'
24 'init:Generate a zeus.json file'
25 )
26fi
27
28_rails_generate_arguments() {
29 generate_arguments=(
30 controller
31 generator
32 helper
33 integration_test
34 mailer
35 migration
36 model
37 observer
38 performance_test
39 plugin
40 resource
41 scaffold
42 scaffold_controller
43 session_migration
44 stylesheets
45 )
46}
47
48_rake_does_task_list_need_generating () {
49 if [ ! -f .rake_tasks ]; then return 0;
50 else
51 accurate=$(stat -f%m .rake_tasks)
52 changed=$(stat -f%m Rakefile)
53 return $(expr $accurate '>=' $changed)
54 fi
55}
56
57_zrake ()
58{
59 local expl
60 declare -a tasks
61
62 if [ -f Rakefile ]; then
63 if _rake_does_task_list_need_generating; then
64 echo "\nGenerating .rake_tasks..." > /dev/stderr
65 rake --silent --tasks | cut -d " " -f 2 > .rake_tasks
66 fi
67 tasks=(`cat .rake_tasks`)
68 _wanted tasks expl 'rake' compadd $tasks
69 fi
70}
71
72local expl
73local curcontext="$curcontext" state line
74typeset -A opt_args
75
76_arguments -C \
77 ':command:->command' \
78 '*::options:->options'
79
80
81case $state in
82 (command)
83 _describe -t commands "zeus subcommand" _1st_arguments
84 return
85 ;;
86
87 (options)
88 case $line[1] in
89 (rake)
90 _zrake
91 ;;
92 (generate|g|destroy|d)
93 _rails_generate_arguments
94 _wanted generate_arguments expl 'all generate' compadd -a generate_arguments
95 ;;
96 esac
97 ;;
98esac