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