github.com/jfrog/jfrog-cli-go@v1.22.1-0.20200318093948-4826ef344ffd/completion/shells/zsh/zsh.go (about)

     1  package zsh
     2  
     3  //go:generate go run ../generate_scripts.go
     4  
     5  import (
     6  	"fmt"
     7  	"github.com/jfrog/jfrog-cli-go/utils/cliutils"
     8  	"github.com/jfrog/jfrog-client-go/utils/log"
     9  	"io/ioutil"
    10  	"path/filepath"
    11  )
    12  
    13  const ZshAutocomplete = `_jfrog() {
    14  	local -a opts
    15  	opts=("${(@f)$(_CLI_ZSH_AUTOCOMPLETE_HACK=1 ${words[@]:0:#words[@]-1} --generate-bash-completion)}")
    16  	_describe 'values' opts
    17  	if [[ $compstate[nmatches] -eq 0 && $words[$CURRENT] != -* ]]; then
    18  		_files
    19  	fi
    20  }
    21  
    22  compdef _jfrog jfrog`
    23  
    24  func WriteZshCompletionScript() {
    25  	homeDir, err := cliutils.GetJfrogHomeDir()
    26  	if err != nil {
    27  		log.Error(err)
    28  		return
    29  	}
    30  	completionPath := filepath.Join(homeDir, "jfrog_zsh_completion")
    31  	if err = ioutil.WriteFile(completionPath, []byte(ZshAutocomplete), 0600); err != nil {
    32  		log.Error(err)
    33  		return
    34  	}
    35  	sourceCommand := "source " + completionPath + ""
    36  	fmt.Printf(`Generated zsh completion script at %s.
    37  To activate auto-completion on this shell only, source the completion script by running the following three commands:
    38  
    39  autoload -Uz compinit
    40  compinit
    41  %s
    42  
    43  To activate auto-completion permanently, put the above three commands in ~/.zshrc.
    44  
    45  `,
    46  		completionPath, sourceCommand)
    47  }