Source: https://github.com/zsh-users/zsh-completions/blob/55d07cc/src/_railsmaster
parent
98ed582e6a
commit
40f49342f5
1 changed files with 623 additions and 65 deletions
@ -1,66 +1,624 @@ |
||||
#compdef rails |
||||
#autoload |
||||
|
||||
local -a _1st_arguments |
||||
_1st_arguments=( |
||||
'generate:Generate new code (short-cut alias: "g")' |
||||
'console:Start the Rails console (short-cut alias: "c")' |
||||
'server:Start the Rails server (short-cut alias: "s")' |
||||
'dbconsole:Start a console for the database specified in config/database.yml (short-cut alias: "db")' |
||||
'new:Create a new Rails application. "rails new my_app" creates a new application called MyApp in "./my_app"' |
||||
'application:Generate the Rails application code' |
||||
'destroy:Undo code generated with "generate"' |
||||
|
||||
'benchmarker:See how fast a piece of code runs' |
||||
'profiler:Get profile information from a piece of code' |
||||
'plugin:Install a plugin' |
||||
|
||||
'plugin new:Generates skeleton for developing a Rails plugin' |
||||
'runner:Run a piece of code in the application environment (short-cut alias: "r")' |
||||
) |
||||
|
||||
_rails_generate_arguments() { |
||||
generate_arguments=( |
||||
assets |
||||
controller |
||||
decorator |
||||
generator |
||||
helper |
||||
integration_test |
||||
mailer |
||||
migration |
||||
model |
||||
observer |
||||
performance_test |
||||
plugin |
||||
resource |
||||
scaffold |
||||
scaffold_controller |
||||
session_migration |
||||
stylesheets |
||||
task |
||||
) |
||||
} |
||||
|
||||
|
||||
_arguments \ |
||||
'(--version)--version[show version]' \ |
||||
'(--help)--help[show help]' \ |
||||
'*:: :->subcmds' && return 0 |
||||
|
||||
if (( CURRENT == 1 )); then |
||||
_describe -t commands "rails subcommand" _1st_arguments |
||||
return |
||||
else |
||||
_files |
||||
return |
||||
fi |
||||
|
||||
case "$words[1]" in |
||||
g|generate) |
||||
_rails_generate_arguments |
||||
_wanted generate_arguments expl 'all generate' compadd -a generate_arguments ;; |
||||
d|destroy) |
||||
_rails_generate_arguments |
||||
_wanted generate_arguments expl 'all generate' compadd -a generate_arguments ;; |
||||
esac |
||||
# ------------------------------------------------------------------------------ |
||||
# Copyright (c) 2016 Github zsh-users - http://github.com/zsh-users |
||||
# All rights reserved. |
||||
# |
||||
# Redistribution and use in source and binary forms, with or without |
||||
# modification, are permitted provided that the following conditions are met: |
||||
# * Redistributions of source code must retain the above copyright |
||||
# notice, this list of conditions and the following disclaimer. |
||||
# * Redistributions in binary form must reproduce the above copyright |
||||
# notice, this list of conditions and the following disclaimer in the |
||||
# documentation and/or other materials provided with the distribution. |
||||
# * Neither the name of the zsh-users nor the |
||||
# names of its contributors may be used to endorse or promote products |
||||
# derived from this software without specific prior written permission. |
||||
# |
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND |
||||
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
||||
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
||||
# DISCLAIMED. IN NO EVENT SHALL ZSH-USERS BE LIABLE FOR ANY |
||||
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
||||
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
||||
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
||||
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
# ------------------------------------------------------------------------------ |
||||
# Description |
||||
# ----------- |
||||
# |
||||
# Completion script for Ruby on Rails (http://rubyonrails.org/). |
||||
# |
||||
# ------------------------------------------------------------------------------ |
||||
# Authors |
||||
# ------- |
||||
# |
||||
# * Kazuya Takeshima (https://github.com/mitukiii) |
||||
# |
||||
# ------------------------------------------------------------------------------ |
||||
|
||||
|
||||
_rails() { |
||||
local context state line curcontext="$curcontext" |
||||
|
||||
if (( CURRENT > 2 )); then |
||||
(( CURRENT-- )) |
||||
shift words |
||||
_call_function - "_rails_${words[1]}" || _nothing |
||||
else |
||||
__rails_commands |
||||
fi |
||||
} |
||||
|
||||
__rails_commands() { |
||||
local context state line curcontext="$curcontext" |
||||
|
||||
local -a rails_options |
||||
__rails_setup_rails_options |
||||
|
||||
_arguments -C \ |
||||
$rails_options \ |
||||
': :->command' |
||||
|
||||
case "$state" in |
||||
command) |
||||
local -a commands |
||||
local application_directory |
||||
__rails_setup_application_directory |
||||
|
||||
if [ -n "$application_directory" ]; then |
||||
commands=( |
||||
{generate,g}'[Generate new code]' |
||||
{console,c}'[Start the Rails console]' |
||||
{server,s}'[Start the Rails server]' |
||||
{dbconsole,db}'[Start a console for the database specified in config/database.yml]' |
||||
application'[Generate the Rails application code]' |
||||
{destroy,d}'[Undo code generated with "generate"]' |
||||
benchmarker'[See how fast a piece of code runs]' |
||||
profiler'[Get profile information from a piece of code]' |
||||
plugin'[Install a plugin]' |
||||
{runner,r}'[Run a piece of code in the application environment]' |
||||
{test,t}'[Run tests]' |
||||
) |
||||
else |
||||
commands=( |
||||
new'[Create a new Rails application]' |
||||
) |
||||
fi |
||||
|
||||
_values 'command' $commands |
||||
;; |
||||
esac |
||||
} |
||||
|
||||
__rails_setup_application_directory() { |
||||
application_directory="$(pwd)" |
||||
|
||||
while [ -n "$application_directory" ]; do |
||||
if [ -f "${application_directory}/script/rails" -o -f "${application_directory}/bin/rails" ]; then |
||||
return |
||||
fi |
||||
application_directory="${application_directory%/*}" |
||||
done |
||||
|
||||
application_directory= |
||||
} |
||||
|
||||
__rails_setup_rails_options() { |
||||
rails_options=( |
||||
{-h,--help}'[Show this help message and quit]' |
||||
{-v,--version}'[Show Rails version number and quit]' |
||||
) |
||||
} |
||||
|
||||
__rails_setup_runtime_options() { |
||||
runtime_options=( |
||||
'(-f --force)'{-f,--force}'[Overwrite files that already exist]' |
||||
'(-p --pretend)'{-p,--pretend}'[Run but do not make any changes]' |
||||
'(-q --quiet)'{-q,--quiet}'[Suppress status output]' |
||||
'(-s --skip)'{-s,--skip}'[Skip files that already exist]' |
||||
) |
||||
} |
||||
|
||||
__rails_setup_generators_options() { |
||||
local -a runtime_options |
||||
__rails_setup_runtime_options |
||||
|
||||
generators_options=( |
||||
$runtime_options |
||||
--skip-namespace'[Skip namespace (affects only isolated applications)]' |
||||
--old-style-hash"[Force using old style hash (:foo => 'bar') on Ruby >= 1.9]" |
||||
) |
||||
} |
||||
|
||||
__rails_setup_model_generators_options() { |
||||
local -a generators_options |
||||
__rails_setup_generators_options |
||||
|
||||
model_generators_options=( |
||||
$generators_options |
||||
'(-o --orm)'{-o,--orm=}'[Orm to be invoked]:orm' |
||||
) |
||||
} |
||||
|
||||
__rails_setup_resource_generators_options() { |
||||
local -a model_generators_options |
||||
__rails_setup_model_generators_options |
||||
|
||||
resource_generators_options=( |
||||
$model_generators_options |
||||
--force-plural'[Forces the use of a plural ModelName]' |
||||
--resource-route'[Indicates when to generate resource route]: :__rails_boolean' |
||||
) |
||||
} |
||||
|
||||
__rails_boolean() { |
||||
_values 'boolean' 'true' 'false' |
||||
} |
||||
|
||||
__rails_migration_fields() { |
||||
if compset -P '*:*:'; then |
||||
_values 'index' 'index' 'uniq' |
||||
else |
||||
if compset -P '*:'; then |
||||
_values -s ':' 'type' 'string' 'text' 'integer' 'float' 'decimal' 'datetime' 'timestamp' 'time' 'date' 'binary' 'boolean' 'references' |
||||
else |
||||
_guard '[[:alnum:]_]#' 'field' |
||||
fi |
||||
fi |
||||
} |
||||
|
||||
_rails_generate() { |
||||
local context state line curcontext="$curcontext" |
||||
|
||||
if (( CURRENT > 2 )); then |
||||
(( CURRENT-- )) |
||||
shift words |
||||
_call_function - "_rails_generate_${words[1]}" || _rails_generate_default |
||||
else |
||||
__rails_generate_commands |
||||
fi |
||||
} |
||||
|
||||
_rails_g() { |
||||
_rails_generate |
||||
} |
||||
|
||||
__rails_generate_commands() { |
||||
local context curcontext="$curcontext" update_policy |
||||
|
||||
zstyle -s ":completion:${curcontext}:" cache-policy update_policy |
||||
if [ -z "$update_policy" ]; then |
||||
zstyle ":completion:${curcontext}:" cache-policy _rails_generate_commands_caching_policy |
||||
fi |
||||
|
||||
local application_directory |
||||
__rails_setup_application_directory |
||||
local cache_name |
||||
cache_name="rails/${application_directory##*/}/all_generators" |
||||
if ! _retrieve_cache ${cache_name}; then |
||||
local -a all_generators |
||||
all_generators=($(_call_program rails_generators rails generate 2> /dev/null | awk '/^ [a-zA-Z_]+/{ print $1 }')) |
||||
_store_cache ${cache_name} all_generators |
||||
fi |
||||
|
||||
local -a rails_generators |
||||
rails_generators=(${all_generators:#*:*}) |
||||
_describe -t rails_generators 'rails generator' rails_generators |
||||
|
||||
local -a -U namespaces |
||||
local namespace |
||||
local -a generators |
||||
namespaces=(${(R)${(M)all_generators:#*:*}%:*}) |
||||
for namespace in $namespaces; do |
||||
generators=(${${(M)all_generators:#${namespace}:*}/:/\\:}) |
||||
_describe -t ${namespace}_generators "${namespace/_/ } generator" generators |
||||
done |
||||
} |
||||
|
||||
_rails_generate_commands_caching_policy() { |
||||
local application_directory |
||||
__rails_setup_application_directory |
||||
|
||||
if [ "${application_directory}/Gemfile" -nt "$1" ]; then |
||||
return 0 |
||||
fi |
||||
|
||||
local -a oldp |
||||
oldp=( "$1"(Nmw+1) ) |
||||
(( $#oldp )) |
||||
} |
||||
|
||||
_rails_generate_default() { |
||||
local -a generators_options |
||||
__rails_setup_generators_options |
||||
|
||||
_arguments \ |
||||
$generators_options \ |
||||
'*:argument' |
||||
} |
||||
|
||||
_rails_generate_assets() { |
||||
local -a generators_options |
||||
__rails_setup_generators_options |
||||
|
||||
_arguments \ |
||||
$generators_options \ |
||||
'(-j --javascripts)'{-j,--javascripts}'[Generate JavaScripts]: :__rails_boolean' \ |
||||
'(-y --stylesheets)'{-y,--stylesheets}'[Generate Stylesheets]: :__rails_boolean' \ |
||||
'(-je --javascript-engine)'{-je,--javascript-engine=}'[Engine for JavaScripts]:javascript engine' \ |
||||
'(-se --stylesheet-engine)'{-se,--stylesheet-engine=}'[Engine for Stylesheets]:stylesheet engine' \ |
||||
': :_guard "^-*" "name"' |
||||
} |
||||
|
||||
_rails_generate_controller() { |
||||
local -a generators_options |
||||
__rails_setup_generators_options |
||||
|
||||
_arguments \ |
||||
$generators_options \ |
||||
'(-e --template-engine)'{-e,--template-engine=}'[Template engine to be invoked]:template engine' \ |
||||
'(-t --test-framework)'{-t,--test-framework=}'[Test framework to be invoked]:test framework' \ |
||||
--helper'[Indicates when to generate helper]: :__rails_boolean' \ |
||||
--assets'[Indicates when to generate assets]: :__rails_boolean' \ |
||||
': :_guard "^-*" "name"' \ |
||||
'*: :_guard "^-*" "action"' |
||||
} |
||||
|
||||
_rails_generate_generator() { |
||||
local -a generators_options |
||||
__rails_setup_generators_options |
||||
|
||||
_arguments \ |
||||
$generators_options \ |
||||
--namespace'[Namespace generator under lib/generators/name]: :__rails_boolean' \ |
||||
': :_guard "^-*" "name"' |
||||
} |
||||
|
||||
_rails_generate_helper() { |
||||
local -a generators_options |
||||
__rails_setup_generators_options |
||||
|
||||
_arguments \ |
||||
$generators_options \ |
||||
'(-t --test-framework)'{-t,--test-framework=}'[Test framework to be invoked]:test framework' \ |
||||
': :_guard "^-*" "name"' \ |
||||
} |
||||
|
||||
_rails_generate_integration_test() { |
||||
local -a generators_options |
||||
__rails_setup_generators_options |
||||
|
||||
_arguments \ |
||||
$generators_options \ |
||||
--integration-tool='[Integration tool to be invoke]:integration tool' \ |
||||
': :_guard "^-*" "name"' \ |
||||
} |
||||
|
||||
_rails_generate_jbuilder() { |
||||
local -a generators_options |
||||
__rails_setup_generators_options |
||||
|
||||
_arguments \ |
||||
$generators_options \ |
||||
': :_guard "^-*" "name"' \ |
||||
'*: :__rails_migration_fields' |
||||
} |
||||
|
||||
_rails_generate_mailer() { |
||||
local -a generators_options |
||||
__rails_setup_generators_options |
||||
|
||||
_arguments \ |
||||
$generators_options \ |
||||
'(-e --template-engine)'{-e,--template-engine=}'[Template engine to be invoked]:template engine' \ |
||||
'(-t --test-framework)'{-t,--test-framework=}'[Test framework to be invoked]:test framework' \ |
||||
': :_guard "^-*" "name"' \ |
||||
'*: :_guard "^-*" "method"' |
||||
} |
||||
|
||||
_rails_generate_migration() { |
||||
local -a modelgenerators_options |
||||
__rails_setup_model_generators_options |
||||
|
||||
_arguments \ |
||||
$model_generators_options \ |
||||
': :_guard "^-*" "name"' \ |
||||
'*: :__rails_migration_fields' |
||||
} |
||||
|
||||
_rails_generate_model() { |
||||
_rails_generate_migration |
||||
} |
||||
|
||||
_rails_generate_observer() { |
||||
local -a model_generators_options |
||||
__rails_setup_model_generators_options |
||||
|
||||
_arguments \ |
||||
$model_generators_options \ |
||||
': :_guard "^-*" "name"' |
||||
} |
||||
|
||||
_rails_generate_performance_test() { |
||||
local -a generators_options |
||||
__rails_setup_generators_options |
||||
|
||||
_arguments \ |
||||
$generators_options \ |
||||
--performance-tool='[Performance tool to be invoked]:performance tool' \ |
||||
': :_guard "^-*" "name"' \ |
||||
} |
||||
|
||||
_rails_generate_resource() { |
||||
local context state line curcontext="$curcontext" |
||||
|
||||
local -a resource_generators_options |
||||
__rails_setup_resource_generators_options |
||||
|
||||
_arguments -C \ |
||||
$resource_generators_options \ |
||||
'(-c --resource-controller)'{-c,--resource-controller=}'[Resource controller to be invoked]:name' \ |
||||
'(-a --actions)'{-a,--actions=}'[Actions for the resource controller]: :->actions' \ |
||||
': :->name' \ |
||||
'*: :->fields' |
||||
|
||||
if (( words[(I)(--actions=*|-a)] > 0 && words[(I)(--actions=*|-a)] == words[(I)-*] )); then |
||||
state=actions |
||||
fi |
||||
|
||||
case "$state" in |
||||
actions) |
||||
_guard "[[:alnum:]_]#" "actions" |
||||
;; |
||||
name) |
||||
_guard "^-*" "name" |
||||
;; |
||||
fields) |
||||
__rails_migration_fields |
||||
;; |
||||
esac |
||||
} |
||||
|
||||
_rails_generate_scaffold() { |
||||
local -a resource_generators_options |
||||
__rails_setup_resource_generators_options |
||||
|
||||
_arguments \ |
||||
$resource_generators_options \ |
||||
'(-y --stylesheets)'{-y,--stylesheets}'[Generate Stylesheets]: :__rails_boolean' \ |
||||
'(-se --stylesheet-engine)'{-se,--stylesheet-engine=}'[Engine for Stylesheets]:stylesheet engine' \ |
||||
'(-c --scaffold-controller)'{-c,--scaffold-controller=}'[Scaffold controller to be invoked]:name' \ |
||||
--assets'[Indicates when to generate assets]:boolean:(true false)' \ |
||||
': :_guard "^-*" "name"' \ |
||||
'*: :__rails_migration_fields' |
||||
} |
||||
|
||||
_rails_generate_scaffold_controller() { |
||||
local -a model_generators_options |
||||
__rails_setup_model_generators_options |
||||
|
||||
_arguments \ |
||||
$model_generators_options \ |
||||
'(-e --template-engine)'{-e,--template-engine=}'[Template engine to be invoked]:template engine' \ |
||||
'(-t --test-framework)'{-t,--test-framework=}'[Test framework to be invoked]:test framework' \ |
||||
--helper'[Indicates when to generate helper]: :__rails_boolean' \ |
||||
': :_guard "^-*" "name"' |
||||
} |
||||
|
||||
_rails_generate_session_migration() { |
||||
local -a model_generators_options |
||||
__rails_setup_model_generators_options |
||||
|
||||
_arguments \ |
||||
$model_generators_options \ |
||||
': :_guard "^-*" "name"' |
||||
} |
||||
|
||||
_rails_generate_task() { |
||||
local -a generators_options |
||||
__rails_setup_generators_options |
||||
|
||||
_arguments \ |
||||
$generators_options \ |
||||
': :_guard "^-*" "name"' \ |
||||
'*: :_guard "^-*" "action"' |
||||
} |
||||
|
||||
_rails_console() { |
||||
_arguments \ |
||||
'(- *)'{-h,--help}'[Show this help message]' \ |
||||
'(-s --sandbox)'{-s,--sandbox}'[Rollback database modifications on exit]' \ |
||||
--debugger'[Enable ruby-debugging for the console]' |
||||
} |
||||
|
||||
_rails_c() { |
||||
_rails_console |
||||
} |
||||
|
||||
_rails_server() { |
||||
_arguments \ |
||||
'(- *)'{-h,--help}'[Show this help message]' \ |
||||
'(-p --port)'{-p,--port=}'[Runs Rails on the specified port]: :_guard "[[\:digit\:]]#" "port"' \ |
||||
'(-b --binding)'{-b,--binding=}'[Binds Rails to the specified ip]:ip:_hosts' \ |
||||
'(-c --config)'{-c,--config=}'[Use custom rackup configuration file]:file:_files -g "*.ru"' \ |
||||
'(-d --daemon)'{-d,--daemon}'[Make server run as a Daemon]' \ |
||||
'(-u --debugger)'{-u,--debugger}'[Enable ruby-debugging for the server]' \ |
||||
'(-e --environment)'{-e,--environment=}'[Specifies the environment to run this server under (test/development/production)]:name:(test development production)' \ |
||||
'(-P --pid)'{-P,--pid=}'[Specifies the PID file]:pid:_files -g "*.pid"' |
||||
} |
||||
|
||||
_rails_s() { |
||||
_rails_server |
||||
} |
||||
|
||||
_rails_dbconsole() { |
||||
_arguments \ |
||||
'(- *)'--help'[Show this help message]' \ |
||||
'(-p --include-password)'{-p,--include-password}'[Automatically provide the password from database.yml]' \ |
||||
--mode'[Automatically put the sqlite3 database in the specified mode (html, list, line, column)]:mode:(html list line column)' \ |
||||
--header |
||||
} |
||||
|
||||
_rails_new() { |
||||
local context state line curcontext="$curcontext" |
||||
|
||||
local _a rails_options runtime_options |
||||
__rails_setup_rails_options |
||||
__rails_setup_runtime_options |
||||
|
||||
_arguments -C \ |
||||
$rails_options \ |
||||
$runtime_options \ |
||||
'(-r --ruby)'{-r,--ruby=}'[Path to the Ruby binary of your choice]:path' \ |
||||
'(-b --builder)'{-b,--builder=}'[Path to a application builder (can be a filesystem path or URL)]: :->path_or_url' \ |
||||
'(-m --template)'{-m,--template=}'[Path to an application template (can be a filesystem path or URL)]: :->path_or_url' \ |
||||
--skip-gemfile"[Don't create a Gemfile]" \ |
||||
--skip-bundle"[Don't run bundle install]" \ |
||||
'(-G --skip-git)'{-G,--skip-git}'[Skip Git ignores and keeps]' \ |
||||
'(-O --skip-active-record)'{-O,--skip-active-record}'[Skip Active Record files]' \ |
||||
'(-S --skip-sprockets)'{-S,--skip-sprockets}'[Skip Sprockets files]' \ |
||||
'(-d --database)'{-d,--database=}'[Preconfigure for selected database]:database:(mysql oracle postgresql sqlite3 frontbase ibm_db sqlserver jdbcmysql jdbcsqlite3 jdbcpostgresql jdbc)' \ |
||||
'(-j --javascript)'{-j,--javascript=}'[Preconfigure for selected JavaScript library]:javascript' \ |
||||
'(-J --skip-javascript)'{-J,--skip-javascript}'[Skip JavaScript files]' \ |
||||
--dev'[Setup the application with Gemfile pointing to your Rails checkout]' \ |
||||
--edge'[Setup the application with Gemfile pointing to Rails repository]' \ |
||||
'(-T --skip-test-unit)'{-T,--skip-test-unit}'[Skip Test::Unit files]' \ |
||||
--old-style-hash"[Force using old style hash (:foo => 'bar') on Ruby >= 1.9]" \ |
||||
':app path:_directories' |
||||
|
||||
case "$state" in |
||||
path_or_url) |
||||
_alternative \ |
||||
'files:path:_files -g "*.rb"' \ |
||||
'url:url:_urls' |
||||
;; |
||||
esac |
||||
} |
||||
|
||||
_rails_application() { |
||||
_rails_new |
||||
} |
||||
|
||||
_rails_db() { |
||||
_rails_dbconsole |
||||
} |
||||
|
||||
_rails_destroy() { |
||||
_rails_generate |
||||
} |
||||
|
||||
_rails_d() { |
||||
_rails_destroy |
||||
} |
||||
|
||||
_rails_benchmarker() { |
||||
_arguments \ |
||||
'(- *)'{-h,--help}'[Show this help message]' \ |
||||
'(-r --runs)'{-r,--runs}'[Number of runs]: :_guard "[[\:digit\:]]#" "number"' \ |
||||
'(-o --output)'{-o,--output}'[Directory to use when writing the results]:directory:_directories' \ |
||||
'(-m --metrics)'{-m,--metrics}'[Metrics to use]: :_values -s "," "metrics" "wall_time" "memory" "objects" "gc_runs" "gc_time"' \ |
||||
'*: :_guard "^-*" "ruby code"' |
||||
} |
||||
|
||||
_rails_profiler() { |
||||
_arguments \ |
||||
'(- *)'{-h,--help}'[Show this help message]' \ |
||||
'(-r --runs)'{-r,--runs}'[Number of runs]: :_guard "[[\:digit\:]]#" "number"' \ |
||||
'(-o --output)'{-o,--output}'[Directory to use when writing the results]:directory:_directories' \ |
||||
'(-m --metrics)'{-m,--metrics}'[Metrics to use]: :_values -s "," "metrics" "process_time" "memory" "objects"' \ |
||||
'(-f --formats)'{-f,--formats}'[Formats to output to]: :_values -s "," "formats" "flat" "graph" "html" "call_tree" "call_stack"' \ |
||||
'*: :_guard "^-*" "ruby code"' |
||||
} |
||||
|
||||
_rails_plugin() { |
||||
local context state line curcontext="$curcontext" |
||||
|
||||
if (( CURRENT > 2 )); then |
||||
(( CURRENT-- )) |
||||
shift words |
||||
_call_function - "_rails_plugin_${words[1]}" || _nothing |
||||
else |
||||
__rails_plugin_commands |
||||
fi |
||||
} |
||||
|
||||
__rails_plugin_commands() { |
||||
_values 'plugin command' \ |
||||
install'[Install plugin(s) from known repositories or URLs]' \ |
||||
remove'[Uninstall plugins]' \ |
||||
new |
||||
} |
||||
|
||||
_rails_plugin_install() { |
||||
_arguments \ |
||||
'(-x --externals)'{-x,--externals}'[Use svn:externals to grab the plugin. Enables plugin updates and plugin versioning]' \ |
||||
'(-o --checkout)'{-o,--checkout}'[Use svn checkout to grab the plugin. Enables updating but does not add a svn:externals entry]' \ |
||||
'(-e --export)'{-e,--export}'[Use svn export to grab the plugin. Exports the plugin, allowing you to check it into your local repository. Does not enable updates or add an svn:externals entry]' \ |
||||
'(-q --quiet)'{-q,--quiet}'[Suppresses the output from installation. Ignored if -v is passed (rails plugin -v install ...)]' \ |
||||
'(-r --revision)'{-r,--revision=}'[Checks out the given revision from subversion or git. Ignored if subversion/git is not used]:revision' \ |
||||
'(-f --force)'{-f,--force}"[Reinstalls a plugin if it's already installed]" \ |
||||
'*:plugin:_urls' |
||||
} |
||||
|
||||
_rails_plugin_remove() { |
||||
local -a plugins |
||||
|
||||
plugins=($(_call_program rails_plugins ls -1 vendor/plugins)) |
||||
|
||||
_describe -t plugins 'plugin' plugins |
||||
} |
||||
|
||||
_rails_plugin_new() { |
||||
_rails_new |
||||
} |
||||
|
||||
_rails_runner() { |
||||
local context state line curcontext="$curcontext" |
||||
|
||||
_arguments -C \ |
||||
'(- *)'{-h,--help}'[Show this help message]' \ |
||||
'(-e --environment)'{-e,--environment=}'[Specifies the environment for the runner to operate under (test/development/production)]:name:(test development production)' \ |
||||
': :->code_or_path' |
||||
|
||||
case "$state" in |
||||
code_or_path) |
||||
_alternative \ |
||||
'files:filename:_files -g "*.rb"' \ |
||||
'codes:ruby code:_guard "^-*" "ruby code"' |
||||
;; |
||||
esac |
||||
} |
||||
|
||||
_rails_r() { |
||||
_rails_runner |
||||
} |
||||
|
||||
_rails_test() { |
||||
local context state line curcontext="$curcontext" |
||||
|
||||
_arguments -C \ |
||||
': :->path' |
||||
|
||||
case "$state" in |
||||
path) |
||||
_alternative \ |
||||
'files:filename:_files -g "*.rb"' |
||||
;; |
||||
esac |
||||
} |
||||
|
||||
_rails_t() { |
||||
_rails_test |
||||
} |
||||
|
||||
_rails "$@" |
||||
|
||||
# Local Variables: |
||||
# mode: Shell-Script |
||||
# sh-indentation: 2 |
||||
# indent-tabs-mode: nil |
||||
# sh-basic-offset: 2 |
||||
# End: |
||||
# vim: ft=zsh sw=2 ts=2 et |
||||
|
||||
Loading…
Reference in new issue