Merge pull request #1093 from zsh-users/update-go-completion
Update go completion
This commit is contained in:
		
						commit
						77005bb0dc
					
				
							
								
								
									
										515
									
								
								src/_golang
								
								
								
								
							
							
						
						
									
										515
									
								
								src/_golang
								
								
								
								
							|  | @ -30,7 +30,7 @@ | |||
| # Description | ||||
| # ----------- | ||||
| # | ||||
| #  Completion script for go 1.21 (https://go.dev/). | ||||
| #  Completion script for go 1.22.5 (https://go.dev/). | ||||
| # | ||||
| # ------------------------------------------------------------------------------ | ||||
| # Authors | ||||
|  | @ -207,128 +207,131 @@ __go_envvarvals() { | |||
|   # decide which variable to go to.  if $1 is not set, then __go_envvarvals is | ||||
|   # called from the `go env` completion and the current word (with all after | ||||
|   # the first '=' removed) is the current variable. | ||||
|   local variable | ||||
|   variable=${1-${words[$CURRENT]%%=*}} | ||||
|   case $variable in | ||||
|   local env_variable=${1-${words[$CURRENT]%%=*}} | ||||
|   case $env_variable in | ||||
|     (GO111MODULE) | ||||
|       _values "module mode" off on auto | ||||
|       ;; | ||||
|     # commands | ||||
|     AR) | ||||
|       ;& | ||||
|     CC) | ||||
|       ;& | ||||
|     CXX) | ||||
|       ;& | ||||
|     FC) | ||||
|       ;& | ||||
|     GCCGO) | ||||
|     (AR|CC|CXX|FC|GCCGO) | ||||
|       _command_names -e | ||||
|       ;; | ||||
|     # directories (using fallthrough) | ||||
|     GOBIN) | ||||
|       ;& | ||||
|     GOCACHE) | ||||
|       ;& | ||||
|     GOTMPDIR) | ||||
|       ;& | ||||
|     GOTOOLDIR) | ||||
|       ;& | ||||
|     GOROOT) | ||||
|       ;& | ||||
|     GOROOT_FINAL) | ||||
|       ;& | ||||
|     GCCGOTOOLDIR) | ||||
|       ;& | ||||
|     GOPATH) | ||||
|       ;& | ||||
|     GOMODCACHE) | ||||
|     # directories | ||||
|     (GOBIN|GOCACHE|GOTMPDIR|GOTOOLDIR|GOROOT|GOROOT_FINAL|GCCGOTOOLDIR|GOPATH|GOMODCACHE|GOCOVERDIR) | ||||
|       _files -/ | ||||
|       ;; | ||||
|     # regular files (using fallthrough) | ||||
|     GOMOD) | ||||
|       ;& | ||||
|     PKG_CONFIG) | ||||
|       ;& | ||||
|     GOENV) | ||||
|     # regular files | ||||
|     (GOMOD|PKG_CONFIG|GOENV) | ||||
|       _files | ||||
|       ;; | ||||
|     # special | ||||
|     GOHOSTOS) | ||||
|       ;& | ||||
|     GOOS) | ||||
|     (GOHOSTOS|GOOS) | ||||
|       # from https://golang.org/doc/install/source#environment | ||||
|       _values 'operating system' aix android darwin dragonfly freebsd illumos ios js linux netbsd openbsd plan9 solaris windows wasip1 | ||||
|       local -a supported_os=( | ||||
|         aix android darwin dragonfly freebsd illumos ios js linux netbsd openbsd plan9 solaris wasip1 windows | ||||
|       ) | ||||
|       _values 'operating system' $supported_os | ||||
|       ;; | ||||
|     GOHOSTARCH) | ||||
|       ;& | ||||
|     GOARCH) | ||||
|       _values 'architecture' amd64 386 arm64 arm ppc64 ppc64le mips mipsle mips64 mips64le riscv64 s390x wasm | ||||
|     (GOHOSTARCH|GOARCH) | ||||
|       local -a supported_arch=( | ||||
|         amd64 386 arm arm64 ppc64le ppc64 mips64le mips64 mipsle mips s390x riscv64 wasm | ||||
|       ) | ||||
|       _values 'architecture' $supported_arch | ||||
|       ;; | ||||
|     CGO_ENABLED) | ||||
|     (CGO_ENABLED) | ||||
|       _values 'enable/disable cgo' 0 1 | ||||
|       ;; | ||||
|     GO_EXTLINK_ENABLED) | ||||
|     (GO_EXTLINK_ENABLED) | ||||
|       _values 'enable/disable external linkage' 0 1 | ||||
|       ;; | ||||
|     GOARM) | ||||
|     (GOARM) | ||||
|       _values 'target arm architecture' 5 6 7 | ||||
|       ;; | ||||
|     GO386) | ||||
|       _values 'x86 floating point instruction set' 387 sse2 | ||||
|     (GO386) | ||||
|       _values 'x86 floating point instruction set' sse2 softfloat | ||||
|       ;; | ||||
|     GOAMD64) | ||||
|     (GOAMD64) | ||||
|       _values 'amd64 instruction set' v1 v2 v3 v4 | ||||
|       ;; | ||||
|     GOMIPS*) | ||||
|     (GOMIPS*) | ||||
|       _values 'mips floating point instructions' hardfloat softfloat | ||||
|       ;; | ||||
|     GOPPC64) | ||||
|     (GOPPC64) | ||||
|       _values 'powerpc64 instruction set' power8 power9 power10 | ||||
|       ;; | ||||
|     GOWASM) | ||||
|     (GOWASM) | ||||
|       _values 'web assembly features' -s ',' satconv signext | ||||
|       ;; | ||||
|     GOPROXY) | ||||
|     (GOPROXY) | ||||
|       _urls | ||||
|       ;; | ||||
|     GOEXE) | ||||
|     (GOEXE) | ||||
|       _message "suffix for executables" | ||||
|       ;; | ||||
|     CGO_*FLAGS_*ALLOW) | ||||
|     (CGO_*FLAGS_*ALLOW) | ||||
|       _message "regexp" | ||||
|       ;; | ||||
|     CGO_*FLAGS) | ||||
|     (CGO_*FLAGS) | ||||
|       _dispatch $service -value-,${variable#CGO_},-default- | ||||
|       ;; | ||||
|     GODEBUG) | ||||
|     (GODEBUG) | ||||
|       __go_runtimedebug | ||||
|       ;; | ||||
|     GOFLAGS) | ||||
|     (GOFLAGS) | ||||
|       # not implemented, sorry | ||||
|       ;; | ||||
|     GOINSECURE) | ||||
|       ;& | ||||
|     GOPRIVATE) | ||||
|       ;& | ||||
|     GONOPROXY) | ||||
|       ;& | ||||
|     GONOSUMDB) | ||||
|     (GOINSECURE|GOPRIVATE|GONOPROXY|GONOSUMDB) | ||||
|       # comma separated glob patterns (in the syntax of Go's path.Match) | ||||
|       _message "comma separated glob pattern" | ||||
|       ;; | ||||
|     GOSUMDB) | ||||
|     (GOSUMDB) | ||||
|       _message "e.g. sum.golang.org+<publickey> https://sum.golang.org" | ||||
|       ;; | ||||
|   esac | ||||
| } | ||||
| 
 | ||||
| __go_packages() { | ||||
|   local -a gopaths=("${(s/:/)$(go env GOPATH)}") | ||||
|   gopaths+=("$(go env GOROOT)") | ||||
|   for p in $gopaths; do | ||||
|     _path_files $@ -W "$p/src" -/ | ||||
|   done | ||||
|   # no special treatment for | ||||
|   # - relative paths starting with .. | ||||
|   # - absolute path starting with / | ||||
|   # - variables, substitutions, subshells | ||||
|   if [[ $words[$CURRENT] = ..* || $words[$CURRENT] = \$* || $words[$CURRENT] = /* ]]; then | ||||
|     _path_files $@ -/ -g '*.go' | ||||
|   else | ||||
|     # go build accepts paths relative to the cwd but they must start with './', so prefix them | ||||
|     _path_files $@ -P './' -/ -g '*.go' | ||||
|   fi | ||||
| } | ||||
| 
 | ||||
| __go_fix_names() { | ||||
|   local -a fix_names=( | ||||
|     'buildtag[remove +build comments from modules using Go 1.18 or later]' | ||||
|     'cftype[fixes initialzers and casts of C.*Ref and JNI types]' | ||||
|     'context[Change imports of golang.org/x/net/context to context]' | ||||
|     'egl[fixes initializers of EGLDisplay]' | ||||
|     'eglconf[fixes initializers of EGLConfig]' | ||||
|     'gotypes[change imports of oglang.org/x/tools/go{exact,types} to go/{constant,types}]' | ||||
|     "jni[fixes initializers of JNI's jobject and subtypes]" | ||||
|     'netipv6zone[adapt element key to IPAddr, UPDAddr, TCPAddr composite literals]' | ||||
|     'printerconfig[add element keys to Config composite literals]' | ||||
|   ) | ||||
| 
 | ||||
|   _values -s ',' 'fix name' $fix_names | ||||
| } | ||||
| 
 | ||||
| if [[ "$service" = -value-* ]]; then | ||||
|   variable=${${service%,-default-}#-value-,} | ||||
|   local env_variable=${${service%,-default-}#-value-,} | ||||
|   # some special variables are not read from the environment | ||||
|   local -a blacklist | ||||
|   blacklist=('GOEXE' 'GOGCCFLAGS' 'GOHOSTARCH' 'GOHOSTOS' 'GOMOD' 'GOTOOLDIR') | ||||
|   if (($blacklist[(I)$variable])); then | ||||
|   local -a blacklist=('GOEXE' 'GOGCCFLAGS' 'GOHOSTARCH' 'GOHOSTOS' 'GOMOD' 'GOTOOLDIR') | ||||
|   if (($blacklist[(I)$env_variable])); then | ||||
|     return | ||||
|   fi | ||||
|   __go_envvarvals $variable | ||||
|   __go_envvarvals $env_variable | ||||
|   return | ||||
| fi | ||||
| 
 | ||||
|  | @ -377,40 +380,32 @@ case $state in | |||
|       '-go[sets the expected Go language version]:goversion' | ||||
|       '*-replace=[add a replacement of the given module path and version]:replace' | ||||
|       '*-dropreplace=[drop a replacement of the given module path and version]:dropreplace' | ||||
|       '-toolchain=[set the Go toolchain to use]:name' | ||||
|       '-json[prints the final go.mod/work file in JSON format]' | ||||
|       '-print[prints the final go.mod/work in its text format]' | ||||
|     ) | ||||
| 
 | ||||
|     __go_packages() { | ||||
|       local gopaths | ||||
|       declare -a gopaths | ||||
|       gopaths=("${(s/:/)$(go env GOPATH)}") | ||||
|       gopaths+=("$(go env GOROOT)") | ||||
|       for p in $gopaths; do | ||||
|         _path_files $@ -W "$p/src" -/ | ||||
|       done | ||||
|       # no special treatment for | ||||
|       # - relative paths starting with .. | ||||
|       # - absolute path starting with / | ||||
|       # - variables, substitutions, subshells | ||||
|       if [[ $words[$CURRENT] = ..* || $words[$CURRENT] = \$* || $words[$CURRENT] = /* ]]; then | ||||
|         _path_files $@ -/ -g '*.go' | ||||
|       else | ||||
|         # go build accepts paths relative to the cwd but they must start with './', so prefix them | ||||
|         _path_files $@ -P './' -/ -g '*.go' | ||||
|       fi | ||||
|     } | ||||
|     local -a mod_commands=( | ||||
|       'download:download modules to local cache' | ||||
|       'edit:edit go.mod from tools or scripts' | ||||
|       'graph:print module requirement graph' | ||||
|       'init:initialize new module in current directory' | ||||
|       'tidy:add missing and remove unused modules' | ||||
|       'vendor:make vendored copy of dependencies' | ||||
|       'verify:verify dependencies have expected content' | ||||
|       'why:explain why packages or modules are needed' | ||||
|       'help:get more information about a command' | ||||
|     ) | ||||
| 
 | ||||
|     case $words[1] in | ||||
|       build) | ||||
|       (build) | ||||
|         _arguments \ | ||||
|           '-o[force build to write to named output file or directory]:file or directory:_files' \ | ||||
|           ${build_flags[@]} \ | ||||
|           ${mod_flags[@]} \ | ||||
|           '*:importpaths:__go_packages' | ||||
|           ;; | ||||
|         ;; | ||||
| 
 | ||||
|       clean) | ||||
|       (clean) | ||||
|         _arguments \ | ||||
|           '-i[remove corresponding installed archive or binary]' \ | ||||
|           '-r[apply clean recursively on all dependencies]' \ | ||||
|  | @ -421,24 +416,28 @@ case $state in | |||
|           ${build_flags[@]} \ | ||||
|           ${mod_flags[@]} \ | ||||
|           '*:importpaths:__go_packages' | ||||
|           ;; | ||||
|         ;; | ||||
| 
 | ||||
|       doc) | ||||
|       (doc) | ||||
|         _arguments \ | ||||
|           '-all[show all the documentation for the package]' \ | ||||
|           '-c[respect case when matching symbols]' \ | ||||
|           '-cmd[treat a command (package main) like a regular package]' \ | ||||
|           '-short[one-line representation for each symbol]' \ | ||||
|           '-src[show the full source code for the symbol]' \ | ||||
|           '-u[show docs for unexported and exported symbols and methods]' | ||||
|           ;; | ||||
|           '-u[show docs for unexported and exported symbols and methods]' \ | ||||
|           '*:importpaths:__go_packages' | ||||
|         ;; | ||||
| 
 | ||||
|       env) | ||||
|       (env) | ||||
|         local -a goenvvars=( | ||||
|           "GOARCH[architecture, or processor, for which to compile code.]:architecture" | ||||
|           # General-purpose environment variables | ||||
|           "GO111MODULE[controls whether the go command runs in module-aware mode]:value" | ||||
|           "GCCGO[gccgo command to run.]:gccgo command" | ||||
|           "GOARCH[architecture, or processor, for which to compile code.]:architecture" | ||||
|           "GOBIN[directory where 'go install' installs to]:go install target dir" | ||||
|           "GOCACHE[directory to store cached information]:go build cache dir" | ||||
|           "GOMODCACHE[module cache directory]:path" | ||||
|           "GODEBUG[enable runtime debug facilities]:runtime debug settings" | ||||
|           "GOENV[location of the go environment configuration file]:configuration file" | ||||
|           "GOFLAGS[default go command line flags]:space separated default command line flags" | ||||
|  | @ -446,13 +445,16 @@ case $state in | |||
|           "GOOS[target operating system]:operating system" | ||||
|           "GOPATH[path to resolve import statements]:import path" | ||||
|           "GOPROXY[URL of go module proxy]:proxy url" | ||||
|           "GOROOT[root of the go tree]:go root directory" | ||||
|           "GOTMPDIR[directory for temporary sources, packages, and binaries]:tmp directory" | ||||
|           "GOPRIVATE[modules that should always be fetched directly]:comma separated glob patterns" | ||||
|           "GONOPROXY[modules that should always be fetched directly]:comma separated glob patterns" | ||||
|           "GONOSUMDB[modules that should not be compared against the checksum db]:comma separated glob patterns" | ||||
|           "GOMODCACHE[module cache directory]:path" | ||||
|           "GOROOT[root of the go tree]:go root directory" | ||||
|           "GOSUMDB[checksum database]:name(+publickey( url))" | ||||
|           "GOTOOLCHAIN[control which Go tool chain is used]:toolchain" | ||||
|           "GOTMPDIR[directory for temporary sources, packages, and binaries]:tmp directory" | ||||
|           "GOVCS[lists version control commands that may be used with matching servers]:commands" | ||||
|           "GOWORK[use the given go.work file as a workspace file]:workspace_file" | ||||
|           # Environment variables for use with cgo | ||||
|           "AR[command for manipulating library archives (for gccgo)]:archive manipulation program" | ||||
|           "CC[command to compile C code]:C compiler" | ||||
|           "CGO_ENABLED[enable/disable cgo]:boolean" | ||||
|  | @ -474,6 +476,7 @@ case $state in | |||
|           "CXX[command to compile C++]:C++ compiler" | ||||
|           "FC[command to compile Fortran]:Fortran compiler" | ||||
|           "PKG_CONFIG[Path to pkg-config tool.]:path to pkg-config" | ||||
|           # Architecture-specific environment variables | ||||
|           "GOARM[arm architecture]:arm architecture" | ||||
|           "GO386[x86 instruction set]:x86 instruction set" | ||||
|           "GOAMD64[amd64 instruction set]:amd64 instruction set" | ||||
|  | @ -481,20 +484,26 @@ case $state in | |||
|           "GOMIPS64[mips64 instruction set]:mips64 instruction set" | ||||
|           "GOPPC64[powerpc64 instruction set]:powerpc64 instruction set" | ||||
|           "GOWASM[web assembly features]:comma separated web assembly features" | ||||
|           # Environment variable for use with code coverage | ||||
|           "GOCOVERDIR[directory into which to write code coverage data files]" | ||||
|           # Special-purpose environment variables | ||||
|           "GCCGOTOOLDIR[directory of gccgo tools]:gccgo tool directory" | ||||
|           "GOEXPERIMENT[comma-separated list of toolchain experiments to enable or disable]" | ||||
|           "GOROOT_FINAL[root of the go tree]:go root" | ||||
|           "GO_EXTLINK_ENABLED[enable external linking mode]:boolean" | ||||
|           "GIT_ALLOW_PROTOCOL[schemes allowed to fetch]:colon separated git schemes" | ||||
|           # Additional information | ||||
|           "GOEXE[suffix for executables]:executable suffix" | ||||
|           "GOGCCFLAGS[arguments supplied to CC]:space separated arguments to CC" | ||||
|           "GOHOSTARCH[architecture of the toolchain binaries]:host os architecture" | ||||
|           "GOHOSTOS[operating system of the toolchain binaries]:host os" | ||||
|           "GOMOD[absolute path the the main go.mod]:abs path to main go.mod" | ||||
|           "GOTOOLDIR[installation directory of go tools]:tool installation directory" | ||||
|           "GOVERSION[The version of the installed Go tree]" | ||||
|         ) | ||||
|         local -a exclude_from_w=(GOENV) | ||||
| 
 | ||||
|         __list_env_vars() { | ||||
|         __go_list_env_vars() { | ||||
|           # the parameter expansion strops off everything after the first [ | ||||
|           _values -s ' ' -w 'environment variable' ${goenvvars[@]%%\[*} | ||||
|         } | ||||
|  | @ -506,35 +515,41 @@ case $state in | |||
|           '-json[print the environment in JSON format]' \ | ||||
|           '-u[unset environment variables]' \ | ||||
|           '-w[change the default setting of environment variables]' \ | ||||
|           '*:[show environment variable]: __list_env_vars' || _values \ | ||||
|           '*:[show environment variable]: __go_list_env_vars' || _values \ | ||||
|           -s ' ' -S "=" -w 'environment variable' ${^goenvvars:#GOENV*}": __go_envvarvals" | ||||
|         ;; | ||||
| 
 | ||||
|       fix) | ||||
|       (fix) | ||||
|         _arguments \ | ||||
|           '-C[change to directory before running the command]: :_files -/' \ | ||||
|           '-diff[display diffs instead of rewriting files]' \ | ||||
|           '-force[force these fixes to run even if the code looks updated]:fix_names:__go_fix_names' \ | ||||
|           '-go[go language version for files]:version' \ | ||||
|           '-r[restrict the rewrites to this comma-separated list]:fix_names:__go_fix_names' \ | ||||
|           '*:importpaths:__go_packages' | ||||
|         ;; | ||||
| 
 | ||||
|       fmt) | ||||
|       (fmt) | ||||
|         _arguments \ | ||||
|           '-C[change to directory before running the command]: :_files -/' \ | ||||
|           '-n[prints commands that would be executed]' \ | ||||
|           '-x[prints commands as they are executed]' \ | ||||
|           '-n[print commands that would be executed]' \ | ||||
|           '-x[print commands as they are executed]' \ | ||||
|           '-mod=[set which download mode to use]:mode:(readonly vendor)' \ | ||||
|           '*:importpaths:__go_packages' | ||||
|         ;; | ||||
| 
 | ||||
|       generate) | ||||
|       (generate) | ||||
|         _arguments \ | ||||
|           '-C[change to directory before running the command]: :_files -/' \ | ||||
|           '-run=[specifies a regular expression to select directives]:regex' \ | ||||
|           '-x[print the commands]' \ | ||||
|           '-n[print the commands but do not run them]' \ | ||||
|           '-v[print the names of packages as they are compiled]' \ | ||||
|           ${build_flags[@]} \ | ||||
|           "*:args:{ _alternative ':importpaths:__go_packages' _files }" | ||||
|         ;; | ||||
| 
 | ||||
|       get) | ||||
|       (get) | ||||
|         # no mod_flags for get | ||||
|         _arguments \ | ||||
|           '-d[instructs get to stop after downloading the packages]' \ | ||||
|  | @ -547,18 +562,21 @@ case $state in | |||
|           '*:importpaths:__go_packages' | ||||
|         ;; | ||||
| 
 | ||||
|       install) | ||||
|       (install) | ||||
|         _arguments ${build_flags[@]} \ | ||||
|           '*:importpaths:__go_packages' | ||||
|         ;; | ||||
| 
 | ||||
|       list) | ||||
|       (list) | ||||
|         local -a list_args=( | ||||
|           '-e[changes the handling of erroneous packages]' | ||||
|           '-f[specifies an alternate format for the list]:format' | ||||
|           '-json[causes package data to be printed in JSON format]' | ||||
|           '-compiled[set CompiledGoFiles to the Go source files presented to the compiler]' | ||||
|           '-deps[iterate over named packages and their dependencies]' | ||||
|           '-export[set the Export for the given package]:package' | ||||
|           '-find[identify the named packages but not resolve their dependencies]:package' | ||||
|           '-test[report not only the named packages but also their test binaries]' | ||||
|           '-m[list modules instead of packages]' | ||||
|           ${build_flags[@]} | ||||
|           ${mod_flags[@]} | ||||
|  | @ -567,40 +585,28 @@ case $state in | |||
|         # -u and -versions are only available if -m is present on the commandline | ||||
|         if (($words[(I)-m])); then | ||||
|           list_args+=( | ||||
|           '-u[adds information about available upgrades]' | ||||
|           '-versions[list all known versions of modules]' | ||||
|             '-u[adds information about available upgrades]' | ||||
|             '-versions[list all known versions of modules]' | ||||
|           ) | ||||
|         fi | ||||
|         _arguments ${list_args[@]} | ||||
|         ;; | ||||
| 
 | ||||
|       mod) | ||||
|         local -a mod_commands=( | ||||
|           'download:download modules to local cache' | ||||
|           'edit:edit go.mod from tools or scripts' | ||||
|           'graph:print module requirement graph' | ||||
|           'init:initialize new module in current directory' | ||||
|           'tidy:add missing and remove unused modules' | ||||
|           'vendor:make vendored copy of dependencies' | ||||
|           'verify:verify dependencies have expected content' | ||||
|           'why:explain why packages or modules are needed' | ||||
|           'help:get more information about a command' | ||||
|         ) | ||||
| 
 | ||||
|       (mod) | ||||
|         _arguments \ | ||||
|           "1: :{_describe 'command' mod_commands}" \ | ||||
|           '*:: :->args' | ||||
| 
 | ||||
|         case $state in | ||||
|           args) | ||||
|           (args) | ||||
|             case $words[1] in | ||||
|               download) | ||||
|               (download) | ||||
|                 _arguments \ | ||||
|                   '-json[print a sequence of JSON objects to standard output]' \ | ||||
|                   '-x[print the commands download executes]' | ||||
|                   '-x[print the commands download executes]' \ | ||||
|                   '-reuse[file containing the JSON output of a previous "go mod download -json" invocation]:json:_files -g "*.json"' | ||||
|                 ;; | ||||
| 
 | ||||
|               edit) | ||||
|               (edit) | ||||
|                 _arguments \ | ||||
|                   ${edit_flags[@]} \ | ||||
|                   "-module[change the module's path]" \ | ||||
|  | @ -608,31 +614,31 @@ case $state in | |||
|                   '*-dropexclude=[drop an exclusion for the given module path and version]:dropexclude' \ | ||||
|                   ':go.mod:_path_files -g "go.mod"' | ||||
|                 ;; | ||||
|               graph) | ||||
|               (graph) | ||||
|                 _arguments \ | ||||
|                   '-go[report the module graph as loaded by the given Go version]:goversion' | ||||
|                   '-go[report the module graph as loaded by the given Go version]:goversion' \ | ||||
|                   '-x[print the commands graph executes]' | ||||
|                 ;; | ||||
|               init) | ||||
|               (init) | ||||
|                 # Use go packages as module name suggestion | ||||
|                 _arguments \ | ||||
|                   '*:module:__go_packages' | ||||
|                 ;; | ||||
|               tidy) | ||||
|               (tidy) | ||||
|                 _arguments \ | ||||
|                   '-v[print information about removed modules to standard error]' \ | ||||
|                   '-e[attempt to proceed despite errors encountered while loading packages]' \ | ||||
|                   '-x[print the commands download executes]' \ | ||||
|                   '-go[update the go directive in the go.mod file to the given version]:goversion' \ | ||||
|                   '-compat[preserves additional checksums needed for the indicated Go version]' | ||||
|                   '-compat[preserves additional checksums needed for the indicated Go version]:version' | ||||
|                 ;; | ||||
|               vendor) | ||||
|               (vendor) | ||||
|                 _arguments \ | ||||
|                   '-v[print the names of vendored modules and packages to standard error]' \ | ||||
|                   '-e[attempt to proceed despite errors encountered while loading packages]' \ | ||||
|                   '-o[create the vendor directory at the given path instead of "vendor"]:directory:_path_files -/' | ||||
|                 ;; | ||||
|               verify) | ||||
|                 ;; | ||||
|               why) | ||||
|               (why) | ||||
|                 _arguments \ | ||||
|                   '-m[treats the arguments as a list of modules]' \ | ||||
|                   '-vendor[exclude tests of dependencies]' \ | ||||
|  | @ -643,14 +649,14 @@ case $state in | |||
|         esac | ||||
|         ;; | ||||
| 
 | ||||
|       run) | ||||
|       (run) | ||||
|         _arguments \ | ||||
|           ${build_flags[@]} \ | ||||
|           '-exec[invoke the binary using xprog]:xporg' \ | ||||
|           '*:importpaths:__go_packages' | ||||
|           ;; | ||||
|         ;; | ||||
| 
 | ||||
|       test) | ||||
|       (test) | ||||
|         if [[ $words[$CURRENT] = -test.* ]]; then | ||||
|           _arguments \ | ||||
|             '-test.bench[run only benchmarks matching regexp]:regexp' \ | ||||
|  | @ -709,11 +715,13 @@ case $state in | |||
|             '-memprofile[write a memory profile to file]:mem' \ | ||||
|             '-memprofilerate[enable more precise memory profiles]:n' \ | ||||
|             '-mutexprofile[write a mutex contention profile to the specified file]:file:_files' \ | ||||
|             '-outputdir[place output files from profiling in output dir]:dir' \ | ||||
|             '-mutexprofilefraction[sample 1 in n stack traces of goroutines holding a contended mutex]:n' \ | ||||
|             '-outputdir[place output files from profiling in output dir]:dir:_path_files -/' \ | ||||
|             '-parallel[allow parallel execution of test functions]:n' \ | ||||
|             '-run[run tests and examples matching the regular expression]:regexp' \ | ||||
|             '-short[tell long-running tests to shorten their run time]' \ | ||||
|             '-shuffle[randomize the execution order of tests and benchmarks]:type:(off on)' \ | ||||
|             '-skip[run only tests that do not match the regular expression]:pattern' \ | ||||
|             '-test.-[specify options for test running]:test running options:' \ | ||||
|             '-timeout[timeout long running tests]:t' \ | ||||
|             '-trace[write an execution trace to the specified file]:trace' \ | ||||
|  | @ -724,11 +732,10 @@ case $state in | |||
|             '-o[compile test binary to named file]:file:_files' \ | ||||
|             '*:importpaths:__go_packages' | ||||
|         fi | ||||
|           ;; | ||||
|         ;; | ||||
| 
 | ||||
|       tool) | ||||
|         local -a tools | ||||
|         tools=($(go tool)) | ||||
|       (tool) | ||||
|         local -a tools=($(go tool)) | ||||
| 
 | ||||
|         _arguments \ | ||||
|           '-n[print command that would be executed]' \ | ||||
|  | @ -736,62 +743,61 @@ case $state in | |||
|           '*:: :->args' | ||||
| 
 | ||||
|         case $state in | ||||
|           args) | ||||
|           (args) | ||||
|             case $words[1] in | ||||
|               addr2line) | ||||
|               (addr2line) | ||||
|                 _files | ||||
|                 ;; | ||||
| 
 | ||||
|               asm) | ||||
|               (asm) | ||||
|                 _arguments \ | ||||
|                   '-D[predefined symbol with optional simple value]:value' \ | ||||
|                   '-I[include directory]:value' \ | ||||
|                   '*-D[predefined symbol with optional simple value]:value' \ | ||||
|                   '*-I[include directory]:value' \ | ||||
|                   '-S[print assembly and machine code]' \ | ||||
|                   '(- *)-V[print assembler version and exit]' \ | ||||
|                   '-debug[dump instructions as they are parsed]' \ | ||||
|                   '-dynlink[support references to Go symbols]' \ | ||||
|                   '-o[output file]:string' \ | ||||
|                   '-e[no limit on number of errors reported]' \ | ||||
|                   '-gensymabis[write symbol ABI information to output file. Do not assemble]' \ | ||||
|                   '-o[output file]:string:_files' \ | ||||
|                   '-p[set expected package import to pkgpath]:pkgpath' \ | ||||
|                   '-shared[generate code that can be linked into a shared lib]' \ | ||||
|                   '-trimpath[remove prefix from recorded source file paths]:string' | ||||
|                   '-spectre[enable spectre mitigations in list]:list:(all ret)' \ | ||||
|                   '-trimpath[remove prefix from recorded source file paths]:string' \ | ||||
|                   '-v[print debug output]' \ | ||||
|                   '*:file:_files' | ||||
|                 ;; | ||||
| 
 | ||||
|               callgraph) | ||||
|                 local -a algos=( | ||||
|                   'static:static calls only' | ||||
|                   'cha:Class Hierarchy Analysis' | ||||
|                   'rta:Rapid Type Analysis' | ||||
|                   'pta:inclusion-based Points-To Analysis' | ||||
|                 ) | ||||
|                 local -a graphs=( | ||||
|                   'digraph:output in digraph format' | ||||
|                   'graphviz:output in AT&T GraphViz (.dot) format' | ||||
|                 ) | ||||
| 
 | ||||
|               (buildid) | ||||
|                 _arguments \ | ||||
|                   '-algo=[call-graph construction algorithm]:algos:{ _describe "algos" algos }' \ | ||||
|                   "-test[include the package's tests in the analysis]" \ | ||||
|                   '-format=[format in which each call graph edge is displayed]:graphs:{ _describe "graphs" graphs }' | ||||
|                   '-w[rewrite the build ID found in the file]' \ | ||||
|                   '*:file:_files' | ||||
|                 ;; | ||||
| 
 | ||||
|               cgo) | ||||
|               (cgo) | ||||
|                 _arguments \ | ||||
|                   '(- *)-V[print cgo version and exit]' \ | ||||
|                   '-debug-define[print relevant #defines]' \ | ||||
|                   '-debug-gcc[print gcc invocations]' \ | ||||
|                   '-dynimport[if non-empty, print dynamic import data]:string' \ | ||||
|                   '-dynlinker[record dynamic linker information]' \ | ||||
|                   '-dynout[write -dynimport output to file]:file' \ | ||||
|                   '-dynout[write -dynimport output to file]:file:_files' \ | ||||
|                   '-dynpackage[set Go package for -dynimport output]:string' \ | ||||
|                   '-exportheader[where to write export header]:string' \ | ||||
|                   '-gccgo[generate files for use with gccgo]' \ | ||||
|                   '-gccgopkgpath[-fgo-pkgpath option used with gccgo]:string' \ | ||||
|                   '-gccgoprefix[-fgo-prefix option used with gccgo]:string' \ | ||||
|                   '-godefs[write Go definitions for C file to stdout]' \ | ||||
|                   '-importpath[the import path for the Go package]:package' \ | ||||
|                   '-import_runtime_cgo[import runtime/cgo in generated code]' \ | ||||
|                   '-import_syscall[import syscall in generated code]' \ | ||||
|                   '-importpath[import path of package being built]:path' \ | ||||
|                   '-objdir[object directory]:dir' | ||||
|                   '-gccgo[generate files for use with gccgo]' \ | ||||
|                   '-gccgoprefix[-fgo-prefix option used with gccgo]:string' \ | ||||
|                   '-gccgopkgpath[-fgo-pkgpath option used with gccgo]:string:_path_files -/' \ | ||||
|                   '-gccgo_define_cgoincomplete[define cgo.Incomplete locally rather than importing it from "runtime/cgo" package]' \ | ||||
|                   '-godefs[write Go definitions for C file to stdout]' \ | ||||
|                   '-objdir[object directory]:dir:_path_files -/' \ | ||||
|                   '-srcdir[source directory]:dir:_path_files -/' \ | ||||
|                   '*:file:_files' | ||||
|                 ;; | ||||
| 
 | ||||
|               compile) | ||||
|               (compile) | ||||
|                 _arguments \ | ||||
|                   '-%[debug non-static initializers]' \ | ||||
|                   '-+[compiling runtime]' \ | ||||
|  | @ -799,35 +805,47 @@ case $state in | |||
|                   '-B[disable bounds checking]' \ | ||||
|                   '-D[set relative path for local imports]:path' \ | ||||
|                   '-E[debug symbol export]' \ | ||||
|                   '-I[add directory to import search path]:directory' \ | ||||
|                   '*-I[add directory to import search path]:directory' \ | ||||
|                   '-K[debug missing line numbers]' \ | ||||
|                   '-L[use full (long) path in error messages]' \ | ||||
|                   '-M[debug move generation]' \ | ||||
|                   '-N[disable optimizations]' \ | ||||
|                   '-P[debug peephole optimizer]' \ | ||||
|                   '-R[debug register optimizer]' \ | ||||
|                   '-S[print assembly listing]' \ | ||||
|                   '-V[print compiler version]' \ | ||||
|                   '*-S[print assembly listing]' \ | ||||
|                   '(- *)-V[print compiler version and exit]' \ | ||||
|                   '-W[debug parse tree after type checking]' \ | ||||
|                   '-asmhdr[write assembly header to file]:file' \ | ||||
|                   '-asan[insert calls to C/C++ address sanitizer]' \ | ||||
|                   '-buildid[record id as the build id in the export metadata]:id' \ | ||||
|                   '-blockprofile[write block profile for the compilation to file]:file:_files' \ | ||||
|                   '-c[concurrency during compilation]:concurrency' \ | ||||
|                   '-complete[compiling complete package (no C or assembly)]' \ | ||||
|                   '-cpuprofile[write cpu profile to file]:file' \ | ||||
|                   '-cpuprofile[write cpu profile to file]:file:_files' \ | ||||
|                   '-d[print debug information about items in list]:list' \ | ||||
|                   '-dwarf[generate DWARF symbols]' \ | ||||
|                   '-dwarflocationlists[add location lists to DWARF in optimized mode]' \ | ||||
|                   '-gendwarfinl[generate DWARF inline info records]:num' \ | ||||
|                   '-dynlink[support references to Go symbols]' \ | ||||
|                   '-e[no limit on number of errors reported]' \ | ||||
|                   '-f[debug stack frames]' \ | ||||
|                   '-g[debug code generation]' \ | ||||
|                   '-goversion[specify required go tool version of the runtime]:version' \ | ||||
|                   '-h[halt on error]' \ | ||||
|                   '-i[debug line number stack]' \ | ||||
|                   '-importcfg[read import configuration from file]:config:_files' \ | ||||
|                   '-installsuffix[set pkg directory suffix]:suffix' \ | ||||
|                   '-j[debug runtime-initialized variables]' \ | ||||
|                   '-l[disable inlining]' \ | ||||
|                   '-lang[set language version to compile]:version' \ | ||||
|                   '-largemodel[generate code that assumes a large memory model]' \ | ||||
|                   '-linjobj[write linker-specific object to file and compiler-specific object to usual output file]:file:_files' \ | ||||
|                   '-live[debug liveness analysis]' \ | ||||
|                   '-m[print optimization decisions]' \ | ||||
|                   '-memprofile[write memory profile to file]:file' \ | ||||
|                   '-memprofilerate[set runtime.MemProfileRate to rate]:rate' \ | ||||
|                   '-msan[insert calls to C/C++ memory sanitizer]' \ | ||||
|                   '-mutexprofile[write mutex profile for the compilation to file]:file:_files' \ | ||||
|                   '-nolocalimports[reject local (relative) imports]' \ | ||||
|                   '-o[write output to file]:file' \ | ||||
|                   '-p[set expected package import path]:path' \ | ||||
|  | @ -836,6 +854,8 @@ case $state in | |||
|                   '-race[enable race detector]' \ | ||||
|                   '-s[warn about composite literals that can be simplified]' \ | ||||
|                   '-shared[generate code that can be linked into a shared library]' \ | ||||
|                   '-spectre[enable spectre mitigations in list]:type:(all index ret)' \ | ||||
|                   '-traceprofile[write an execution trace to file]:file:_files' \ | ||||
|                   '-trimpath[remove prefix from recorded source file paths]:prefix' \ | ||||
|                   '-u[reject unsafe code]' \ | ||||
|                   '-v[increase debug verbosity]' \ | ||||
|  | @ -861,18 +881,19 @@ case $state in | |||
|                   '*:file:_files -g "*.go(-.)"' | ||||
|                 ;; | ||||
| 
 | ||||
|               doc) | ||||
|               (doc) | ||||
|                 _arguments \ | ||||
|                   '-c[respect case when matching symbols]' \ | ||||
|                   '-cmd[treat a command (package main) like a regular package]' \ | ||||
|                   '-u[show docs for unexported and exported symbols and methods]' \ | ||||
|                   ;; | ||||
|                   '-u[show docs for unexported and exported symbols and methods]' | ||||
|                 ;; | ||||
| 
 | ||||
|               fix) | ||||
|               (fix) | ||||
|                 _arguments \ | ||||
|                   '(* -)-help[show help message]' \ | ||||
|                   '-diff[display diffs instead of rewriting files]' \ | ||||
|                   '-force[force fixes to run even if the code looks updated]:string' \ | ||||
|                   '-r[restrict the rewrites]:string' \ | ||||
|                   '-force[force fixes to run even if the code looks updated]:string:__go_fix_names' \ | ||||
|                   '-r[restrict the rewrites]:string:__go_fix_names' \ | ||||
|                   '*:files:_files' | ||||
|                 ;; | ||||
| 
 | ||||
|  | @ -920,14 +941,25 @@ case $state in | |||
|                   '*:files:_files' | ||||
|                 ;; | ||||
| 
 | ||||
|               objdump) | ||||
|               (objdump) | ||||
|                 _arguments \ | ||||
|                   '-s[only dump symbols matching this regexp]:regexp' \ | ||||
|                   '*:files:_files' | ||||
|                 ;; | ||||
| 
 | ||||
|               pack) | ||||
|                 _arguments '1:ops:(c p r t x)' '::verbose:(v)' ':files:_files' | ||||
|               (pack) | ||||
|                 local -a pack_ops=( | ||||
|                   'c:append files to a new archive' | ||||
|                   'p:print files from the archive' | ||||
|                   'r:append files to the archive' | ||||
|                   't:list files from the archive' | ||||
|                   'x:extract files from the archive' | ||||
|                 ) | ||||
| 
 | ||||
|                 _arguments \ | ||||
|                   '1:ops:{_describe "ops" pack_ops}' \ | ||||
|                   '::verbose:(v)' \ | ||||
|                   ':files:_files' | ||||
|                 ;; | ||||
| 
 | ||||
|               pprof) | ||||
|  | @ -988,47 +1020,63 @@ case $state in | |||
|                   '*:files:_files' | ||||
|                 ;; | ||||
| 
 | ||||
|               trace) | ||||
|               (trace) | ||||
|                 local -a trace_types=( | ||||
|                   "net:network blocking profile" | ||||
|                   "sync:synchronization blocking profile" | ||||
|                   "syscall:syscall blocking profile" | ||||
|                   "scheduler:latency profile" | ||||
|                 ) | ||||
| 
 | ||||
|                 _arguments \ | ||||
|                   '-pprof=[profile type]:type:{_describe "type" trace_types}' \ | ||||
|                   '-http=[HTTP service address]:addr' \ | ||||
|                   '-d=[print debug info such as parsed events]:level:((1\:"high-level" 2\:"low-level"))' \ | ||||
|                   '*:files:_files' | ||||
|                 ;; | ||||
| 
 | ||||
|               vet) | ||||
|               (vet) | ||||
|                 _arguments \ | ||||
|                   '-all[check everything]' \ | ||||
|                   '(- *)-V[print version and exit]'\ | ||||
|                   '-appends[enable appends analysis]' \ | ||||
|                   '-asmdecl[check assembly against Go declarations]' \ | ||||
|                   '-assign[check for useless assignments]' \ | ||||
|                   '-atomic[check for common mistaken usages of the sync/atomic]' \ | ||||
|                   '-bool[check for mistakes involving boolean operators]' \ | ||||
|                   '-buildtags[check that +build tags are valid]' \ | ||||
|                   '-bools[enable bools analysis]' \ | ||||
|                   '-buildtag[check that +build tags are valid]' \ | ||||
|                   '-cgocall[enable cgocall analysis]' \ | ||||
|                   '-composites[check that composite literals used field-keyed elements]' \ | ||||
|                   '-compositewhitelist[use composite white list]' \ | ||||
|                   '-copylocks[check that locks are not passed by value]' \ | ||||
|                   '-defers[enable defers analysis]' \ | ||||
|                   '-directive[enable directive analysis]' \ | ||||
|                   '-errorsas[enable errorsas analysis]' \ | ||||
|                   '-flags[print analysis flags in JSON]' \ | ||||
|                   '-framepointer[enable framepointer analysis]' \ | ||||
|                   '-httpresponse[enable httpresponse analysis]' \ | ||||
|                   '-ifaceassert[enable ifaceassert analysis]' \ | ||||
|                   '-json[emit JSON output]' \ | ||||
|                   '-loopclosure[enable loopclosure analysis]' \ | ||||
|                   '-lostcancel[enable lostcancel analysis]' \ | ||||
|                   '-methods[check that canonically named methods are canonically defined]' \ | ||||
|                   '-nilfunc[check for comparisons between functions and nil]' \ | ||||
|                   '-printf[check printf-like invocations]' \ | ||||
|                   '-printfuncs[print function names to check]:string' \ | ||||
|                   '-rangeloops[check that range loop variables are used correctly]' \ | ||||
|                   '-shadow[check for shadowed variables]' \ | ||||
|                   '-shadowstrict[whether to be strict about shadowing]' \ | ||||
|                   '-shift[check for useless shifts]' \ | ||||
|                   '-shift[enable shift analysis]' \ | ||||
|                   '-sigchanyzer[enable sigchanyzer analysis]' \ | ||||
|                   '-slog[enable slog analysis]' \ | ||||
|                   '-stdmethods[enable stdmethods analysis]' \ | ||||
|                   '-stringintconv[enable stringintconv analysis]' \ | ||||
|                   '-structtags[check that struct field tags have canonical format]' \ | ||||
|                   '-tags[list of build tags to apply when parsing]:list' \ | ||||
|                   '-test[for testing only: sets -all and -shadow]' \ | ||||
|                   '-tests[enable tests analysis]' \ | ||||
|                   '-timeformat[enable time format analysis]' \ | ||||
|                   '-unmarshal[enable unmarshal analysis]' \ | ||||
|                   '-unreachable[check for unreachable code]' \ | ||||
|                   '-unsafeptr[check for misuse of unsafe.Pointer]' \ | ||||
|                   '-unusedfuncs[list of functions whose results must be used]:string' \ | ||||
|                   '-unusedresult[check for unused result of calls to functions in -unusedfuncs]' \ | ||||
|                   '-unusedstringmethods[list of methods whose results must be used]:string' \ | ||||
|                   '-v[verbose]' \ | ||||
|                   '*:files:_files' | ||||
|                 ;; | ||||
| 
 | ||||
|               yacc) | ||||
|                 _arguments \ | ||||
|                   '-o[output]:output' \ | ||||
|                   '-v[parsetable]:parsetable' \ | ||||
|                   '*:files:_files' | ||||
|                 ;; | ||||
|             esac | ||||
|  | @ -1036,27 +1084,29 @@ case $state in | |||
|         esac | ||||
|         ;; | ||||
| 
 | ||||
|       version) | ||||
|       (version) | ||||
|         _arguments \ | ||||
|           '-m[print each executable embedded module version information]' \ | ||||
|           '-v[report unrecognized files]' \ | ||||
|           '*:files:_files' | ||||
|         ;; | ||||
| 
 | ||||
|       vet) | ||||
|       (vet) | ||||
|         _arguments \ | ||||
|           '-n[print commands that would be executed]' \ | ||||
|           '-x[prints commands as they are executed]' \ | ||||
|           '-vettool[set a different analysis tool with alternative or additional checks]:prog:_files' \ | ||||
|           ${build_flags[@]} \ | ||||
|           '*:importpaths:__go_packages' | ||||
|         ;; | ||||
| 
 | ||||
|       work) | ||||
|       (work) | ||||
|         local -a work_commands=( | ||||
|           'edit:edit go.work from tools or scripts' | ||||
|           'init:initialize workspace file' | ||||
|           'sync:sync workspace build list to modules' | ||||
|           'use:add modules to workspace file' | ||||
|           'vendor:make vendored copy of dependencies' | ||||
|         ) | ||||
| 
 | ||||
|         _arguments \ | ||||
|  | @ -1064,9 +1114,9 @@ case $state in | |||
|           '*:: :->args' | ||||
| 
 | ||||
|         case $state in | ||||
|           args) | ||||
|           (args) | ||||
|             case $words[1] in | ||||
|               edit) | ||||
|               (edit) | ||||
|                 _arguments \ | ||||
|                   ${edit_flags[@]} \ | ||||
|                   '*-use[add use directive from the go.work set of module directories]' \ | ||||
|  | @ -1074,25 +1124,29 @@ case $state in | |||
|                   ':go.work:_path_files -g "go.work"' | ||||
|                 ;; | ||||
| 
 | ||||
|               init) | ||||
|               (init) | ||||
|                   _arguments \ | ||||
|                     '*:directory: _path_files -/' | ||||
|                 ;; | ||||
| 
 | ||||
|               sync) | ||||
|                 ;; | ||||
| 
 | ||||
|               use) | ||||
|               (use) | ||||
|                 _arguments \ | ||||
|                   '-r[searches recursively for modules in the argumentdirectories]' \ | ||||
|                   '*:directory: _path_files -/' | ||||
|                 ;; | ||||
| 
 | ||||
|               (vendor) | ||||
|                 _arguments \ | ||||
|                   '-v[print the names of vendored modules and packages to standard error]' \ | ||||
|                   '-e[attempt to proceed despite errors encountered while loading packages]' \ | ||||
|                   '-o[create the vendor directory at the given path instead of vendor]:outdir:_path_files -/' | ||||
|                 ;; | ||||
|             esac | ||||
|             ;; | ||||
|         esac | ||||
|         ;; | ||||
| 
 | ||||
|       help) | ||||
|       (help) | ||||
|         local -a topics=( | ||||
|           'buildconstraint:build constraints' | ||||
|           'buildmode:build modes' | ||||
|  | @ -1102,11 +1156,9 @@ case $state in | |||
|           'filetype:file types' | ||||
|           'go.mod:the go.mod file' | ||||
|           'gopath:GOPATH environment variable' | ||||
|           'gopath-get:legacy GOPATH go get' | ||||
|           'goproxy:module proxy protocol' | ||||
|           'importpath:import path syntax' | ||||
|           'modules:modules, module versions, and more' | ||||
|           'module-get:module-aware go get' | ||||
|           'module-auth:module authentication using go.sum' | ||||
|           'packages:package lists and patterns' | ||||
|           'private:configuration for downloading non-public code' | ||||
|  | @ -1115,7 +1167,14 @@ case $state in | |||
|           'vcs:controlling version control with GOVCS' | ||||
|         ) | ||||
| 
 | ||||
|         _arguments "1: :{_describe 'command' commands -- topics}" | ||||
|         case "$words[2]" in | ||||
|           (mod) | ||||
|             _arguments "2: :{_describe 'command' mod_commands}" | ||||
|             ;; | ||||
|           (*) | ||||
|             _arguments "1: :{_describe 'command' commands -- topics}" | ||||
|             ;; | ||||
|         esac | ||||
|         ;; | ||||
|     esac | ||||
|     ;; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue