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

     1  // +build ignore
     2  
     3  // This program generates bash and zsh completion scripts.
     4  // It can be invoked by running 'go generate ./completion/shells/...'
     5  package main
     6  
     7  import (
     8  	"errors"
     9  	"os"
    10  	"strings"
    11  
    12  	"github.com/jfrog/jfrog-cli-go/completion/shells/bash"
    13  	"github.com/jfrog/jfrog-cli-go/completion/shells/zsh"
    14  	"github.com/jfrog/jfrog-cli-go/utils/cliutils"
    15  	"github.com/jfrog/jfrog-cli-go/utils/log"
    16  )
    17  
    18  func main() {
    19  	log.SetDefaultLogger()
    20  	dir, err := os.Getwd()
    21  	cliutils.ExitOnErr(err)
    22  	if strings.HasSuffix(dir, "bash") {
    23  		writeScript(bash.BashAutocomplete)
    24  	} else if strings.HasSuffix(dir, "zsh") {
    25  		writeScript(zsh.ZshAutocomplete)
    26  	} else {
    27  		cliutils.ExitOnErr(errors.New("Unexpected script to create"))
    28  	}
    29  }
    30  
    31  func writeScript(script string) {
    32  	scriptFile, err := os.Create("jfrog")
    33  	cliutils.ExitOnErr(err)
    34  	defer scriptFile.Close()
    35  	err = os.Chmod("jfrog", os.ModePerm)
    36  	cliutils.ExitOnErr(err)
    37  	_, err = scriptFile.WriteString(script)
    38  	cliutils.ExitOnErr(err)
    39  }