Add completion for Elixir mix
This commit is contained in:
		
							parent
							
								
									c2dde89fb3
								
							
						
					
					
						commit
						0ce85b45a2
					
				|  | @ -0,0 +1,138 @@ | ||||||
|  | #compdef mix | ||||||
|  | #autoload | ||||||
|  | 
 | ||||||
|  | # ------------------------------------------------------------------------------ | ||||||
|  | # 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 Elixir Mix | ||||||
|  | # | ||||||
|  | #  Last updated: 23.01.2016 | ||||||
|  | # | ||||||
|  | # ------------------------------------------------------------------------------ | ||||||
|  | # Authors | ||||||
|  | # ------- | ||||||
|  | # | ||||||
|  | #  * Han Ngo (https://github.com/tieubao) | ||||||
|  | # | ||||||
|  | # ------------------------------------------------------------------------------ | ||||||
|  | 
 | ||||||
|  | local -a _1st_arguments | ||||||
|  | _1st_arguments=( | ||||||
|  |     'app.start:Start all registered apps' | ||||||
|  |     'archive:List all archives' | ||||||
|  |     'archive.build:Archive this project into a .ez file' | ||||||
|  |     'archive.install:Install an archive locally' | ||||||
|  |     'archive.uninstall:Uninstall archives' | ||||||
|  |     'clean:Delete generated application files' | ||||||
|  |     'cmd:Executes the given command' | ||||||
|  |     'compile:Compile source files' | ||||||
|  |     'compile.protocols:Consolidates all protocols in all paths' | ||||||
|  |     'deps:List dependencies and their status' | ||||||
|  |     "deps.clean:Remove the given dependencies' files" | ||||||
|  |     'deps.compile:Compile dependencies' | ||||||
|  |     'deps.get:Get all out of date dependencies' | ||||||
|  |     'deps.unlock:Unlock the given dependencies' | ||||||
|  |     'deps.update:Update the given dependencies' | ||||||
|  |     'do:Executes the tasks separated by comma' | ||||||
|  |     'ecto.create:Create the storage for the repo' | ||||||
|  |     'ecto.drop:Drop the storage for the repo' | ||||||
|  |     'ecto.gen.migration:Generate a new migration for the repo' | ||||||
|  |     'ecto.gen.repo:Generate a new repository' | ||||||
|  |     'ecto.migrate:Run migrations up on a repo' | ||||||
|  |     'ecto.rollback:Rollback migrations from a repo' | ||||||
|  |     'escript.build:Builds an escript for the project' | ||||||
|  |     'gettext.extract:Get text extract' | ||||||
|  |     'gettext.merge:Get text merge' | ||||||
|  |     'help:Print help information for tasks' | ||||||
|  |     'hex:Print hex help information' | ||||||
|  |     'hex.build:Builds a new package version locally' | ||||||
|  |     'hex.config:Read or update hex config' | ||||||
|  |     'hex.docs:Publish docs for package' | ||||||
|  |     'hex.info:Print hex information' | ||||||
|  |     'hex.key:Hex API key tasks' | ||||||
|  |     'hex.outdated:Shows outdated hex deps for the current project' | ||||||
|  |     'hex.owner:Hex package ownership tasks' | ||||||
|  |     'hex.publish:Publish a new package version' | ||||||
|  |     'hex.registry:Hex registry tasks' | ||||||
|  |     'hex.search:Search for package names' | ||||||
|  |     'hex.user:Hex user tasks' | ||||||
|  |     'loadconfig:Loads and persists the given configuration' | ||||||
|  |     'local:List local tasks' | ||||||
|  |     'local.hex:Install hex locally' | ||||||
|  |     'local.public_keys:Public keys' | ||||||
|  |     'local.rebar:Install rebar locally' | ||||||
|  |     'new:Create a new Elixir project' | ||||||
|  |     'phoenix.digest:Digests and compress static files' | ||||||
|  |     'phoenix.gen.channel:Generates a Phoenix channel' | ||||||
|  |     'phoenix.gen.html:Generates controller, model and views for an HTML based resource' | ||||||
|  |     'phoenix.gen.json:Generates a controller and model for a JSON based resource' | ||||||
|  |     'phoenix.gen.model:Generates an Ecto model' | ||||||
|  |     'phoenix.gen.secret:Generates a secret' | ||||||
|  |     'phoenix.new:Create a new Phoenix application' | ||||||
|  |     'phoenix.routes:Prints all routes' | ||||||
|  |     'phoenix.server:Starts applications and their servers' | ||||||
|  |     'profile.fprof:Profiles the given file or expression with fprof' | ||||||
|  |     'run:Run the given file or expression' | ||||||
|  |     "test:Run a project's tests" | ||||||
|  |     '--help:Describe available tasks' | ||||||
|  |     '--version:Prints the Elixir version information' | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | __task_list () | ||||||
|  | { | ||||||
|  |     local expl | ||||||
|  |     declare -a tasks | ||||||
|  | 
 | ||||||
|  |     tasks=$(mix --help | grep -v "default task" | awk '{print $2}') | ||||||
|  | 
 | ||||||
|  |     _wanted tasks expl 'help' compadd $tasks | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | local expl | ||||||
|  | 
 | ||||||
|  | local curcontext="$curcontext" state line | ||||||
|  | typeset -A opt_args | ||||||
|  | 
 | ||||||
|  | _arguments -C \ | ||||||
|  |     ':command:->command' \ | ||||||
|  |     '*::options:->options' | ||||||
|  | 
 | ||||||
|  | case $state in | ||||||
|  |   (command) | ||||||
|  |       _describe -t commands "mix subcommand" _1st_arguments | ||||||
|  |       return | ||||||
|  |   ;; | ||||||
|  | 
 | ||||||
|  |   (options) | ||||||
|  |     case $line[1] in | ||||||
|  |       (help) | ||||||
|  |          _arguments ':feature:__task_list' | ||||||
|  |     esac | ||||||
|  |   ;; | ||||||
|  | esac | ||||||
		Loading…
	
		Reference in New Issue