summaryrefslogtreecommitdiff
path: root/plugins/zeus
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/zeus')
-rw-r--r--plugins/zeus/README.md16
-rw-r--r--plugins/zeus/_zeus110
-rw-r--r--plugins/zeus/zeus.plugin.zsh5
3 files changed, 100 insertions, 31 deletions
diff --git a/plugins/zeus/README.md b/plugins/zeus/README.md
index 8964eaaec..84ed70c91 100644
--- a/plugins/zeus/README.md
+++ b/plugins/zeus/README.md
@@ -24,6 +24,7 @@
* `zcu` aliases `zeus cucumber`
* `zucumber` aliases `zeus cucumber`
+* `zwip` aliases `zeus cucumber --profile wip`
* `zspec` aliases `zeus rspec`
@@ -42,12 +43,15 @@
* `zsw` aliases `rm .zeus.sock`
* `zweep` aliases `rm .zeus.sock`
-`zdbr` aliases `zeus rake db:reset db:test:prepare`
-`zdbreset` aliases `zeus rake db:reset db:test:prepare`
+* `zdbr` aliases `zeus rake db:reset db:test:prepare`
+* `zdbreset` aliases `zeus rake db:reset db:test:prepare`
-`zdbm` aliases `zeus rake db:migrate db:test:prepare`
-`zdbmigrate` aliases `zeus rake db:migrate db:test:prepare`
+* `zdbm` aliases `zeus rake db:migrate db:test:prepare`
+* `zdbmigrate` aliases `zeus rake db:migrate db:test:prepare`
-`zdbc` aliases `zeus rake db:create`
+* `zdbc` aliases `zeus rake db:create`
-`zdbcm` aliases `zeus rake db:create db:migrate db:test:prepare`
+* `zdbcm` aliases `zeus rake db:create db:migrate db:test:prepare`
+
+## Installation
+Add zeus to the plugins line of your `.zshconfig` file (e.g. `plugins=(rails git zeus)`)
diff --git a/plugins/zeus/_zeus b/plugins/zeus/_zeus
index 5a13bd9ec..78f0c545e 100644
--- a/plugins/zeus/_zeus
+++ b/plugins/zeus/_zeus
@@ -2,33 +2,97 @@
#autoload
# in order to make this work, you will need to have the gem zeus installed
-
-# zeus zsh completion, based on adb completion
+# zeus zsh completion
local -a _1st_arguments
-_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)'
-'start:Preloads the zeus environment'
-'test:Runs RSpec tests. (alias = rspec, testrb)'
-'version:Shows the version number.'
-)
+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
+}
local expl
-local -a pkgs installed_pkgs
+local curcontext="$curcontext" state line
+typeset -A opt_args
-_arguments \
- '*:: :->subcmds' && return 0
+_arguments -C \
+ ':command:->command' \
+ '*::options:->options'
-if (( CURRENT == 1 )); then
- _describe -t commands "zeus subcommand" _1st_arguments
- return
-fi
-_files
+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
diff --git a/plugins/zeus/zeus.plugin.zsh b/plugins/zeus/zeus.plugin.zsh
index 5ec9fa579..5dec1a48c 100644
--- a/plugins/zeus/zeus.plugin.zsh
+++ b/plugins/zeus/zeus.plugin.zsh
@@ -19,8 +19,8 @@ alias zsr='zeus server'
alias zerver='zeus server'
# Rake
-alias zr='zeus rake'
-alias zake='zeus rake'
+alias zr='noglob zeus rake'
+alias zake='noglob zeus rake'
# Generate
alias zg='zeus generate'
@@ -33,6 +33,7 @@ alias zunner='zeus runner'
# Cucumber
alias zcu='zeus cucumber'
alias zucumber='zeus cucumber'
+alias zwip='zeus cucumber --profile wip'
# Rspec
alias zspec='zeus rspec'