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 }