diff options
Diffstat (limited to 'config/essentials/zsh/completions/_g')
| -rw-r--r-- | config/essentials/zsh/completions/_g | 102 | 
1 files changed, 102 insertions, 0 deletions
diff --git a/config/essentials/zsh/completions/_g b/config/essentials/zsh/completions/_g new file mode 100644 index 0000000..31e60d0 --- /dev/null +++ b/config/essentials/zsh/completions/_g @@ -0,0 +1,102 @@ +#compdef g + +# ----------------------------------------------------------------------------- +# Copyright 2023, Matthew Winter +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +#     https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------------------------ +# Description +# ----------- +# +#  Completion script for g (https://github.com/stefanmaric/g). +# +# ----------------------------------------------------------------------------- +# +# https://github.com/wintermi/zsh-golang +# +# ----------------------------------------------------------------------------- + +_g() { +    local line state + +    _arguments -C \ +        "1: :->cmds" \ +        "*::arg:->args" + +    case "$state" in +        cmds) +            _values "g command" \ +                "install[Download and set the go <version>]" \ +                "download[Download go <version>]" \ +                "remove[Remove the given versions]" \ +                "run[Run a given version of go]" \ +                "set[Switch to go <version>]" \ +                "which[Output bin path for <version>]" \ +                "prune[Remove all versions except the current version]" \ +                "list[Output downloaded go versions]" \ +                "list-all[Output all available, remote go versions]" \ +                "self-upgrade[Upgrades g to the latest version]" \ +                "help[Display help information, same as g --help]" \ +            ;; +        args) +            case $line[1] in +                download) +                    __remoteVersions +                    ;; +                install) +                    _alternative \ +                        'args:latest:(latest)' \ +                        __remoteVersions +                    ;; +                remove | run | set | which) +                    __installedVersions +                    ;; +                *) +                    ;; +            esac +            ;; +    esac +} + +# Completing list of Installed Versions +__installedVersions() { +  declare -a installed_versions_cmd +  installed_versions_cmd=( $(ls -r "$GOROOT/.versions") ) +  _describe 'Installed Versions' installed_versions_cmd  -o nosort +} + +# Completing list of Remote Versions +__remoteVersions() { +  declare -a remote_versions_cmd +  remote_versions_cmd=( $(cat "$HOME/.cache/zsh-golang/go_versions") ) +  _describe 'Remote Versions' remote_versions_cmd  -o nosort +} + +# TODO: add the completion for the Options + +# Completing 'g' Options +__completeOptions() { +    _arguments -s -S -C \ +      "(-h,--help)"{-h,--help}"[Display help information and exit]" \ +      "(-v,--version)"{-v,--version}"[Output current version of g and exit]" \ +      "(-q,--quiet)"{-q,--quiet}"[Suppress almost all output]" \ +      "(-c,--no-color)"{-c,--no-color}"[Force disabled color output]" \ +      "(-y,--non-interactive)"{-y,--non-interactive}"[Prevent prompts]" \ +      "(-o,--os)"{-o+,--os=}"[Override operating system]:string" \ +      "(-a,--arch)"{-a+,--arch=}"[Override system architecture]:string" \ +      "(u,--unstable)"{-u,--unstable}"[Include unstable versions in list]" +} + +_g "$*" + +# vim:ft=zsh:et:sts=2:sw=2  | 
