Add fvm completion
This commit is contained in:
		
							parent
							
								
									655576f336
								
							
						
					
					
						commit
						aedae136e7
					
				|  | @ -0,0 +1,183 @@ | |||
| #compdef fvm | ||||
| # ------------------------------------------------------------------------------ | ||||
| # Copyright (c) 2022 Github zsh-users - https://github.com/zsh-users | ||||
| # | ||||
| # Permission is hereby granted, free of charge, to any person obtaining | ||||
| # a copy of this software and associated documentation files (the | ||||
| # "Software"), to deal in the Software without restriction, including | ||||
| # without limitation the rights to use, copy, modify, merge, publish, | ||||
| # distribute, sublicense, and/or sell copies of the Software, and to | ||||
| # permit persons to whom the Software is furnished to do so, subject to | ||||
| # the following conditions: | ||||
| # | ||||
| # The above copyright notice and this permission notice shall be included | ||||
| # in all copies or substantial portions of the Software. | ||||
| # | ||||
| # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | ||||
| # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL | ||||
| # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR | ||||
| # OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, | ||||
| # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||||
| # OTHER DEALINGS IN THE SOFTWARE. | ||||
| # ------------------------------------------------------------------------------ | ||||
| # Description | ||||
| # ----------- | ||||
| # | ||||
| #  Completion script for fvm. (https://github.com/fluttertools/fvm) | ||||
| # | ||||
| # ------------------------------------------------------------------------------ | ||||
| # Authors | ||||
| # ------- | ||||
| # | ||||
| #  * Shohei Yoshida (https://github.com/syohex) <syohex@gmail.com> | ||||
| # | ||||
| # ------------------------------------------------------------------------------ | ||||
| 
 | ||||
| _fvm_versions() { | ||||
|   local -a versions | ||||
|   versions=($(fvm releases | grep -E '[0-9]+\.[0-9]+.[0-9]+' | sed -e 's/^.* \(v\?[0-9][0-9]*\.[^ ]*\).*$/\1/g')) | ||||
|   versions=(master beta stable $versions) | ||||
|   _describe 'versions' versions | ||||
| } | ||||
| 
 | ||||
| _fvm_installed_versions() { | ||||
|   local -a versions | ||||
|   versions=($(fvm list | sed -e '1,2d')) | ||||
|   _describe 'installed_versions' versions | ||||
| } | ||||
| 
 | ||||
| _fvm_run_flutter() { | ||||
|   local begin=$(($CURRENT - 1)) | ||||
|   if (( $+functions[_flutter] )); then | ||||
|     compset -n $begin | ||||
|     _flutter "$@" | ||||
|   fi | ||||
| } | ||||
| 
 | ||||
| _fvm() { | ||||
|   typeset -A opt_args | ||||
|   local context state line | ||||
|   local curcontext="$curcontext" | ||||
|   local ret=1 | ||||
| 
 | ||||
|   _arguments -C -A "-*" \ | ||||
|     '(- *)'{-h,--help}'[Print this usage information]' \ | ||||
|     '--verbose[Print verbose output]' \ | ||||
|     '(- *)--version[current version]' \ | ||||
|     '1: :_fvm_subcommands' \ | ||||
|     '*::arg:->args' \ | ||||
|     && ret=0 | ||||
| 
 | ||||
|   case "$state" in | ||||
|     (args) | ||||
|       case $words[1] in | ||||
|         (help) | ||||
|           _arguments -C \ | ||||
|            '(- *)'{-h,--help}'[Print this usage information]' \ | ||||
|            '1: :_fvm_subcommands' \ | ||||
|             && ret=0 | ||||
|           ;; | ||||
|         (config) | ||||
|           _arguments -C \ | ||||
|             '(- *)'{-h,--help}'[Print this usage information]' \ | ||||
|             '(-c --cache-path)'{-c,--cache-path}'[Set the path which FVM will cache the version.Priority over FVM_HOME]::_path_files -/' \ | ||||
|             '(-s --skip-setup --no-skip-setup)'{-s,--skip-setup}'[Skip setup after a version install]' \ | ||||
|             '(-s --skip-setup --no-skip-setup)--no-skip-setup[No skip setup after a version install]' \ | ||||
|             '(-g --git-cache --no-git-cache)'{-g,--git-cache}'[Will cache a local version of Flutter repo for faster version install]' \ | ||||
|             '(-g --git-cache --no-git-cache)--no-git-cache[Will not cache a local version of Flutter repo for faster version install]' \ | ||||
|             && ret=0 | ||||
|           ;; | ||||
|         (destroy|doctor|flavor|list|releases) | ||||
|           _arguments -C \ | ||||
|            '(- *)'{-h,--help}'[Print this usage information]' \ | ||||
|             && ret=0 | ||||
|           ;; | ||||
|         (exec) | ||||
|           _arguments -C \ | ||||
|            '*::args:_normal' \ | ||||
|             && ret=0 | ||||
|           ;; | ||||
|         (flutter) | ||||
|           _arguments -C \ | ||||
|            '1: :_fvm_run_flutter' \ | ||||
|            '*: :_normal' \ | ||||
|             && ret=0 | ||||
|           ;; | ||||
|         (global) | ||||
|           _arguments -C \ | ||||
|            '(- *)'{-h,--help}'[Print this usage information]' \ | ||||
|            '*::args:_fvm_installed_versions' \ | ||||
|             && ret=0 | ||||
|           ;; | ||||
|         (install) | ||||
|           _arguments -C \ | ||||
|            '(- *)'{-h,--help}'[Print this usage information]' \ | ||||
|            '(-s --skip-setup)'{-s,--skip-setup}'[Skips Flutter setup after install]' \ | ||||
|            '1: :_fvm_versions' \ | ||||
|             && ret=0 | ||||
|           ;; | ||||
|         (remove) | ||||
|           _arguments -C \ | ||||
|            '(- *)'{-h,--help}'[Print this usage information]' \ | ||||
|            '--force[Skips version global check]' \ | ||||
|            '1: :_fvm_installed_versions' \ | ||||
|             && ret=0 | ||||
|           ;; | ||||
|         (spawn) | ||||
|           _arguments -C \ | ||||
|             '1: :_fvm_installed_versions' \ | ||||
|             '2: :_fvm_run_flutter' \ | ||||
|             '*: :_normal' \ | ||||
|             && ret=0 | ||||
|           ;; | ||||
|         (use) | ||||
|           _arguments -C \ | ||||
|            '(- *)'{-h,--help}'[Print this usage information]' \ | ||||
|            '(-f --force)'{-f,--force}'[Skips command guards that does Flutter project checks]' \ | ||||
|            '(-p --pin)'{-p,--pin}'[If version provided is a channel. Will pin the latest release of the channel]' \ | ||||
|            '--flavor[Sets version for a project flavor]' \ | ||||
|            '(-s --skip-setup)'{-s,--skip-setup}'[Skips Flutter setup after install]' \ | ||||
|            '1: :_fvm_installed_versions' \ | ||||
|             && ret=0 | ||||
|           ;; | ||||
|       esac | ||||
|       ;; | ||||
|   esac | ||||
| 
 | ||||
|   return ret | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| (( $+functions[_fvm_subcommands] )) || | ||||
| _fvm_subcommands() { | ||||
|   local commands; | ||||
|   commands=( | ||||
|     'config:Set configuration for FVM' | ||||
|     'dart:Proxies Dart Commands' | ||||
|     'destroy:Destroy FVM cache by deleting FVM directory' | ||||
|     'doctor:Shows information about environment, and project configuration' | ||||
|     'exec:Executes scripts with the configured Flutter SDK' | ||||
|     'flavor:Switches between different project flavors' | ||||
|     'flutter:Proxies Flutter Commands' | ||||
|     'global:Sets Flutter SDK Version as a global' | ||||
|     'install:Installs Flutter SDK version' | ||||
|     'list:Lists installed Flutter SDK Versions' | ||||
|     'releases:View all Flutter SDK releases available for install' | ||||
|     'remove:Removes Flutter SDK Version' | ||||
|     'spawn:Spawns a command on a Flutter version' | ||||
|     'use:Sets Flutter SDK Version you would like to use in a project' | ||||
|   ) | ||||
|   _describe -t commands 'command' commands "$@" | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| _fvm "$@" | ||||
| 
 | ||||
| # 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