summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/spf13/cobra/cobra/cmd
diff options
context:
space:
mode:
authorChristopher Speller <crspeller@gmail.com>2018-04-16 05:37:14 -0700
committerJoram Wilander <jwawilander@gmail.com>2018-04-16 08:37:14 -0400
commit6e2cb00008cbf09e556b00f87603797fcaa47e09 (patch)
tree3c0eb55ff4226a3f024aad373140d1fb860a6404 /vendor/github.com/spf13/cobra/cobra/cmd
parentbf24f51c4e1cc6286885460672f7f449e8c6f5ef (diff)
downloadchat-6e2cb00008cbf09e556b00f87603797fcaa47e09.tar.gz
chat-6e2cb00008cbf09e556b00f87603797fcaa47e09.tar.bz2
chat-6e2cb00008cbf09e556b00f87603797fcaa47e09.zip
Depenancy upgrades and movign to dep. (#8630)
Diffstat (limited to 'vendor/github.com/spf13/cobra/cobra/cmd')
-rw-r--r--vendor/github.com/spf13/cobra/cobra/cmd/add.go179
-rw-r--r--vendor/github.com/spf13/cobra/cobra/cmd/add_test.go109
-rw-r--r--vendor/github.com/spf13/cobra/cobra/cmd/golden_test.go77
-rw-r--r--vendor/github.com/spf13/cobra/cobra/cmd/helpers.go168
-rw-r--r--vendor/github.com/spf13/cobra/cobra/cmd/init.go234
-rw-r--r--vendor/github.com/spf13/cobra/cobra/cmd/init_test.go83
-rw-r--r--vendor/github.com/spf13/cobra/cobra/cmd/project.go200
-rw-r--r--vendor/github.com/spf13/cobra/cobra/cmd/project_test.go24
-rw-r--r--vendor/github.com/spf13/cobra/cobra/cmd/root.go79
-rw-r--r--vendor/github.com/spf13/cobra/cobra/cmd/testdata/main.go.golden21
-rw-r--r--vendor/github.com/spf13/cobra/cobra/cmd/testdata/root.go.golden89
-rw-r--r--vendor/github.com/spf13/cobra/cobra/cmd/testdata/test.go.golden50
12 files changed, 0 insertions, 1313 deletions
diff --git a/vendor/github.com/spf13/cobra/cobra/cmd/add.go b/vendor/github.com/spf13/cobra/cobra/cmd/add.go
deleted file mode 100644
index fb22096a3..000000000
--- a/vendor/github.com/spf13/cobra/cobra/cmd/add.go
+++ /dev/null
@@ -1,179 +0,0 @@
-// Copyright © 2015 Steve Francia <spf@spf13.com>.
-//
-// 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
-// http://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.
-
-package cmd
-
-import (
- "fmt"
- "os"
- "path/filepath"
- "unicode"
-
- "github.com/spf13/cobra"
-)
-
-func init() {
- addCmd.Flags().StringVarP(&packageName, "package", "t", "", "target package name (e.g. github.com/spf13/hugo)")
- addCmd.Flags().StringVarP(&parentName, "parent", "p", "rootCmd", "variable name of parent command for this command")
-}
-
-var packageName, parentName string
-
-var addCmd = &cobra.Command{
- Use: "add [command name]",
- Aliases: []string{"command"},
- Short: "Add a command to a Cobra Application",
- Long: `Add (cobra add) will create a new command, with a license and
-the appropriate structure for a Cobra-based CLI application,
-and register it to its parent (default rootCmd).
-
-If you want your command to be public, pass in the command name
-with an initial uppercase letter.
-
-Example: cobra add server -> resulting in a new cmd/server.go`,
-
- Run: func(cmd *cobra.Command, args []string) {
- if len(args) < 1 {
- er("add needs a name for the command")
- }
-
- var project *Project
- if packageName != "" {
- project = NewProject(packageName)
- } else {
- wd, err := os.Getwd()
- if err != nil {
- er(err)
- }
- project = NewProjectFromPath(wd)
- }
-
- cmdName := validateCmdName(args[0])
- cmdPath := filepath.Join(project.CmdPath(), cmdName+".go")
- createCmdFile(project.License(), cmdPath, cmdName)
-
- fmt.Fprintln(cmd.OutOrStdout(), cmdName, "created at", cmdPath)
- },
-}
-
-// validateCmdName returns source without any dashes and underscore.
-// If there will be dash or underscore, next letter will be uppered.
-// It supports only ASCII (1-byte character) strings.
-// https://github.com/spf13/cobra/issues/269
-func validateCmdName(source string) string {
- i := 0
- l := len(source)
- // The output is initialized on demand, then first dash or underscore
- // occurs.
- var output string
-
- for i < l {
- if source[i] == '-' || source[i] == '_' {
- if output == "" {
- output = source[:i]
- }
-
- // If it's last rune and it's dash or underscore,
- // don't add it output and break the loop.
- if i == l-1 {
- break
- }
-
- // If next character is dash or underscore,
- // just skip the current character.
- if source[i+1] == '-' || source[i+1] == '_' {
- i++
- continue
- }
-
- // If the current character is dash or underscore,
- // upper next letter and add to output.
- output += string(unicode.ToUpper(rune(source[i+1])))
- // We know, what source[i] is dash or underscore and source[i+1] is
- // uppered character, so make i = i+2.
- i += 2
- continue
- }
-
- // If the current character isn't dash or underscore,
- // just add it.
- if output != "" {
- output += string(source[i])
- }
- i++
- }
-
- if output == "" {
- return source // source is initially valid name.
- }
- return output
-}
-
-func createCmdFile(license License, path, cmdName string) {
- template := `{{comment .copyright}}
-{{if .license}}{{comment .license}}{{end}}
-
-package {{.cmdPackage}}
-
-import (
- "fmt"
-
- "github.com/spf13/cobra"
-)
-
-// {{.cmdName}}Cmd represents the {{.cmdName}} command
-var {{.cmdName}}Cmd = &cobra.Command{
- Use: "{{.cmdName}}",
- Short: "A brief description of your command",
- Long: ` + "`" + `A longer description that spans multiple lines and likely contains examples
-and usage of using your command. For example:
-
-Cobra is a CLI library for Go that empowers applications.
-This application is a tool to generate the needed files
-to quickly create a Cobra application.` + "`" + `,
- Run: func(cmd *cobra.Command, args []string) {
- fmt.Println("{{.cmdName}} called")
- },
-}
-
-func init() {
- {{.parentName}}.AddCommand({{.cmdName}}Cmd)
-
- // Here you will define your flags and configuration settings.
-
- // Cobra supports Persistent Flags which will work for this command
- // and all subcommands, e.g.:
- // {{.cmdName}}Cmd.PersistentFlags().String("foo", "", "A help for foo")
-
- // Cobra supports local flags which will only run when this command
- // is called directly, e.g.:
- // {{.cmdName}}Cmd.Flags().BoolP("toggle", "t", false, "Help message for toggle")
-}
-`
-
- data := make(map[string]interface{})
- data["copyright"] = copyrightLine()
- data["license"] = license.Header
- data["cmdPackage"] = filepath.Base(filepath.Dir(path)) // last dir of path
- data["parentName"] = parentName
- data["cmdName"] = cmdName
-
- cmdScript, err := executeTemplate(template, data)
- if err != nil {
- er(err)
- }
- err = writeStringToFile(path, cmdScript)
- if err != nil {
- er(err)
- }
-}
diff --git a/vendor/github.com/spf13/cobra/cobra/cmd/add_test.go b/vendor/github.com/spf13/cobra/cobra/cmd/add_test.go
deleted file mode 100644
index b920e2b9d..000000000
--- a/vendor/github.com/spf13/cobra/cobra/cmd/add_test.go
+++ /dev/null
@@ -1,109 +0,0 @@
-package cmd
-
-import (
- "errors"
- "io/ioutil"
- "os"
- "path/filepath"
- "testing"
-
- "github.com/spf13/viper"
-)
-
-// TestGoldenAddCmd initializes the project "github.com/spf13/testproject"
-// in GOPATH, adds "test" command
-// and compares the content of all files in cmd directory of testproject
-// with appropriate golden files.
-// Use -update to update existing golden files.
-func TestGoldenAddCmd(t *testing.T) {
- projectName := "github.com/spf13/testproject"
- project := NewProject(projectName)
- defer os.RemoveAll(project.AbsPath())
-
- viper.Set("author", "NAME HERE <EMAIL ADDRESS>")
- viper.Set("license", "apache")
- viper.Set("year", 2017)
- defer viper.Set("author", nil)
- defer viper.Set("license", nil)
- defer viper.Set("year", nil)
-
- // Initialize the project first.
- initializeProject(project)
-
- // Then add the "test" command.
- cmdName := "test"
- cmdPath := filepath.Join(project.CmdPath(), cmdName+".go")
- createCmdFile(project.License(), cmdPath, cmdName)
-
- expectedFiles := []string{".", "root.go", "test.go"}
- gotFiles := []string{}
-
- // Check project file hierarchy and compare the content of every single file
- // with appropriate golden file.
- err := filepath.Walk(project.CmdPath(), func(path string, info os.FileInfo, err error) error {
- if err != nil {
- return err
- }
-
- // Make path relative to project.CmdPath().
- // E.g. path = "/home/user/go/src/github.com/spf13/testproject/cmd/root.go"
- // then it returns just "root.go".
- relPath, err := filepath.Rel(project.CmdPath(), path)
- if err != nil {
- return err
- }
- relPath = filepath.ToSlash(relPath)
- gotFiles = append(gotFiles, relPath)
- goldenPath := filepath.Join("testdata", filepath.Base(path)+".golden")
-
- switch relPath {
- // Known directories.
- case ".":
- return nil
- // Known files.
- case "root.go", "test.go":
- if *update {
- got, err := ioutil.ReadFile(path)
- if err != nil {
- return err
- }
- ioutil.WriteFile(goldenPath, got, 0644)
- }
- return compareFiles(path, goldenPath)
- }
- // Unknown file.
- return errors.New("unknown file: " + path)
- })
- if err != nil {
- t.Fatal(err)
- }
-
- // Check if some files lack.
- if err := checkLackFiles(expectedFiles, gotFiles); err != nil {
- t.Fatal(err)
- }
-}
-
-func TestValidateCmdName(t *testing.T) {
- testCases := []struct {
- input string
- expected string
- }{
- {"cmdName", "cmdName"},
- {"cmd_name", "cmdName"},
- {"cmd-name", "cmdName"},
- {"cmd______Name", "cmdName"},
- {"cmd------Name", "cmdName"},
- {"cmd______name", "cmdName"},
- {"cmd------name", "cmdName"},
- {"cmdName-----", "cmdName"},
- {"cmdname-", "cmdname"},
- }
-
- for _, testCase := range testCases {
- got := validateCmdName(testCase.input)
- if testCase.expected != got {
- t.Errorf("Expected %q, got %q", testCase.expected, got)
- }
- }
-}
diff --git a/vendor/github.com/spf13/cobra/cobra/cmd/golden_test.go b/vendor/github.com/spf13/cobra/cobra/cmd/golden_test.go
deleted file mode 100644
index 59a5a1c9f..000000000
--- a/vendor/github.com/spf13/cobra/cobra/cmd/golden_test.go
+++ /dev/null
@@ -1,77 +0,0 @@
-package cmd
-
-import (
- "bytes"
- "errors"
- "flag"
- "fmt"
- "io/ioutil"
- "os/exec"
-)
-
-var update = flag.Bool("update", false, "update .golden files")
-
-func init() {
- // Mute commands.
- addCmd.SetOutput(new(bytes.Buffer))
- initCmd.SetOutput(new(bytes.Buffer))
-}
-
-// compareFiles compares the content of files with pathA and pathB.
-// If contents are equal, it returns nil.
-// If not, it returns which files are not equal
-// and diff (if system has diff command) between these files.
-func compareFiles(pathA, pathB string) error {
- contentA, err := ioutil.ReadFile(pathA)
- if err != nil {
- return err
- }
- contentB, err := ioutil.ReadFile(pathB)
- if err != nil {
- return err
- }
- if !bytes.Equal(contentA, contentB) {
- output := new(bytes.Buffer)
- output.WriteString(fmt.Sprintf("%q and %q are not equal!\n\n", pathA, pathB))
-
- diffPath, err := exec.LookPath("diff")
- if err != nil {
- // Don't execute diff if it can't be found.
- return nil
- }
- diffCmd := exec.Command(diffPath, "-u", pathA, pathB)
- diffCmd.Stdout = output
- diffCmd.Stderr = output
-
- output.WriteString("$ diff -u " + pathA + " " + pathB + "\n")
- if err := diffCmd.Run(); err != nil {
- output.WriteString("\n" + err.Error())
- }
- return errors.New(output.String())
- }
- return nil
-}
-
-// checkLackFiles checks if all elements of expected are in got.
-func checkLackFiles(expected, got []string) error {
- lacks := make([]string, 0, len(expected))
- for _, ev := range expected {
- if !stringInStringSlice(ev, got) {
- lacks = append(lacks, ev)
- }
- }
- if len(lacks) > 0 {
- return fmt.Errorf("Lack %v file(s): %v", len(lacks), lacks)
- }
- return nil
-}
-
-// stringInStringSlice checks if s is an element of slice.
-func stringInStringSlice(s string, slice []string) bool {
- for _, v := range slice {
- if s == v {
- return true
- }
- }
- return false
-}
diff --git a/vendor/github.com/spf13/cobra/cobra/cmd/helpers.go b/vendor/github.com/spf13/cobra/cobra/cmd/helpers.go
deleted file mode 100644
index cd94b3e31..000000000
--- a/vendor/github.com/spf13/cobra/cobra/cmd/helpers.go
+++ /dev/null
@@ -1,168 +0,0 @@
-// Copyright © 2015 Steve Francia <spf@spf13.com>.
-//
-// 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
-// http://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.
-
-package cmd
-
-import (
- "bytes"
- "fmt"
- "io"
- "os"
- "os/exec"
- "path/filepath"
- "strings"
- "text/template"
-)
-
-var srcPaths []string
-
-func init() {
- // Initialize srcPaths.
- envGoPath := os.Getenv("GOPATH")
- goPaths := filepath.SplitList(envGoPath)
- if len(goPaths) == 0 {
- // Adapted from https://github.com/Masterminds/glide/pull/798/files.
- // As of Go 1.8 the GOPATH is no longer required to be set. Instead there
- // is a default value. If there is no GOPATH check for the default value.
- // Note, checking the GOPATH first to avoid invoking the go toolchain if
- // possible.
-
- goExecutable := os.Getenv("COBRA_GO_EXECUTABLE")
- if len(goExecutable) <= 0 {
- goExecutable = "go"
- }
-
- out, err := exec.Command(goExecutable, "env", "GOPATH").Output()
- if err != nil {
- er(err)
- }
-
- toolchainGoPath := strings.TrimSpace(string(out))
- goPaths = filepath.SplitList(toolchainGoPath)
- if len(goPaths) == 0 {
- er("$GOPATH is not set")
- }
- }
- srcPaths = make([]string, 0, len(goPaths))
- for _, goPath := range goPaths {
- srcPaths = append(srcPaths, filepath.Join(goPath, "src"))
- }
-}
-
-func er(msg interface{}) {
- fmt.Println("Error:", msg)
- os.Exit(1)
-}
-
-// isEmpty checks if a given path is empty.
-// Hidden files in path are ignored.
-func isEmpty(path string) bool {
- fi, err := os.Stat(path)
- if err != nil {
- er(err)
- }
-
- if !fi.IsDir() {
- return fi.Size() == 0
- }
-
- f, err := os.Open(path)
- if err != nil {
- er(err)
- }
- defer f.Close()
-
- names, err := f.Readdirnames(-1)
- if err != nil && err != io.EOF {
- er(err)
- }
-
- for _, name := range names {
- if len(name) > 0 && name[0] != '.' {
- return false
- }
- }
- return true
-}
-
-// exists checks if a file or directory exists.
-func exists(path string) bool {
- if path == "" {
- return false
- }
- _, err := os.Stat(path)
- if err == nil {
- return true
- }
- if !os.IsNotExist(err) {
- er(err)
- }
- return false
-}
-
-func executeTemplate(tmplStr string, data interface{}) (string, error) {
- tmpl, err := template.New("").Funcs(template.FuncMap{"comment": commentifyString}).Parse(tmplStr)
- if err != nil {
- return "", err
- }
-
- buf := new(bytes.Buffer)
- err = tmpl.Execute(buf, data)
- return buf.String(), err
-}
-
-func writeStringToFile(path string, s string) error {
- return writeToFile(path, strings.NewReader(s))
-}
-
-// writeToFile writes r to file with path only
-// if file/directory on given path doesn't exist.
-func writeToFile(path string, r io.Reader) error {
- if exists(path) {
- return fmt.Errorf("%v already exists", path)
- }
-
- dir := filepath.Dir(path)
- if dir != "" {
- if err := os.MkdirAll(dir, 0777); err != nil {
- return err
- }
- }
-
- file, err := os.Create(path)
- if err != nil {
- return err
- }
- defer file.Close()
-
- _, err = io.Copy(file, r)
- return err
-}
-
-// commentfyString comments every line of in.
-func commentifyString(in string) string {
- var newlines []string
- lines := strings.Split(in, "\n")
- for _, line := range lines {
- if strings.HasPrefix(line, "//") {
- newlines = append(newlines, line)
- } else {
- if line == "" {
- newlines = append(newlines, "//")
- } else {
- newlines = append(newlines, "// "+line)
- }
- }
- }
- return strings.Join(newlines, "\n")
-}
diff --git a/vendor/github.com/spf13/cobra/cobra/cmd/init.go b/vendor/github.com/spf13/cobra/cobra/cmd/init.go
deleted file mode 100644
index 244137015..000000000
--- a/vendor/github.com/spf13/cobra/cobra/cmd/init.go
+++ /dev/null
@@ -1,234 +0,0 @@
-// Copyright © 2015 Steve Francia <spf@spf13.com>.
-//
-// 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
-// http://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.
-
-package cmd
-
-import (
- "fmt"
- "os"
- "path"
- "path/filepath"
-
- "github.com/spf13/cobra"
- "github.com/spf13/viper"
-)
-
-var initCmd = &cobra.Command{
- Use: "init [name]",
- Aliases: []string{"initialize", "initialise", "create"},
- Short: "Initialize a Cobra Application",
- Long: `Initialize (cobra init) will create a new application, with a license
-and the appropriate structure for a Cobra-based CLI application.
-
- * If a name is provided, it will be created in the current directory;
- * If no name is provided, the current directory will be assumed;
- * If a relative path is provided, it will be created inside $GOPATH
- (e.g. github.com/spf13/hugo);
- * If an absolute path is provided, it will be created;
- * If the directory already exists but is empty, it will be used.
-
-Init will not use an existing directory with contents.`,
-
- Run: func(cmd *cobra.Command, args []string) {
- wd, err := os.Getwd()
- if err != nil {
- er(err)
- }
-
- var project *Project
- if len(args) == 0 {
- project = NewProjectFromPath(wd)
- } else if len(args) == 1 {
- arg := args[0]
- if arg[0] == '.' {
- arg = filepath.Join(wd, arg)
- }
- if filepath.IsAbs(arg) {
- project = NewProjectFromPath(arg)
- } else {
- project = NewProject(arg)
- }
- } else {
- er("please provide only one argument")
- }
-
- initializeProject(project)
-
- fmt.Fprintln(cmd.OutOrStdout(), `Your Cobra application is ready at
-`+project.AbsPath()+`.
-
-Give it a try by going there and running `+"`go run main.go`."+`
-Add commands to it by running `+"`cobra add [cmdname]`.")
- },
-}
-
-func initializeProject(project *Project) {
- if !exists(project.AbsPath()) { // If path doesn't yet exist, create it
- err := os.MkdirAll(project.AbsPath(), os.ModePerm)
- if err != nil {
- er(err)
- }
- } else if !isEmpty(project.AbsPath()) { // If path exists and is not empty don't use it
- er("Cobra will not create a new project in a non empty directory: " + project.AbsPath())
- }
-
- // We have a directory and it's empty. Time to initialize it.
- createLicenseFile(project.License(), project.AbsPath())
- createMainFile(project)
- createRootCmdFile(project)
-}
-
-func createLicenseFile(license License, path string) {
- data := make(map[string]interface{})
- data["copyright"] = copyrightLine()
-
- // Generate license template from text and data.
- text, err := executeTemplate(license.Text, data)
- if err != nil {
- er(err)
- }
-
- // Write license text to LICENSE file.
- err = writeStringToFile(filepath.Join(path, "LICENSE"), text)
- if err != nil {
- er(err)
- }
-}
-
-func createMainFile(project *Project) {
- mainTemplate := `{{ comment .copyright }}
-{{if .license}}{{ comment .license }}{{end}}
-
-package main
-
-import "{{ .importpath }}"
-
-func main() {
- cmd.Execute()
-}
-`
- data := make(map[string]interface{})
- data["copyright"] = copyrightLine()
- data["license"] = project.License().Header
- data["importpath"] = path.Join(project.Name(), filepath.Base(project.CmdPath()))
-
- mainScript, err := executeTemplate(mainTemplate, data)
- if err != nil {
- er(err)
- }
-
- err = writeStringToFile(filepath.Join(project.AbsPath(), "main.go"), mainScript)
- if err != nil {
- er(err)
- }
-}
-
-func createRootCmdFile(project *Project) {
- template := `{{comment .copyright}}
-{{if .license}}{{comment .license}}{{end}}
-
-package cmd
-
-import (
- "fmt"
- "os"
-{{if .viper}}
- homedir "github.com/mitchellh/go-homedir"{{end}}
- "github.com/spf13/cobra"{{if .viper}}
- "github.com/spf13/viper"{{end}}
-){{if .viper}}
-
-var cfgFile string{{end}}
-
-// rootCmd represents the base command when called without any subcommands
-var rootCmd = &cobra.Command{
- Use: "{{.appName}}",
- Short: "A brief description of your application",
- Long: ` + "`" + `A longer description that spans multiple lines and likely contains
-examples and usage of using your application. For example:
-
-Cobra is a CLI library for Go that empowers applications.
-This application is a tool to generate the needed files
-to quickly create a Cobra application.` + "`" + `,
- // Uncomment the following line if your bare application
- // has an action associated with it:
- // Run: func(cmd *cobra.Command, args []string) { },
-}
-
-// Execute adds all child commands to the root command and sets flags appropriately.
-// This is called by main.main(). It only needs to happen once to the rootCmd.
-func Execute() {
- if err := rootCmd.Execute(); err != nil {
- fmt.Println(err)
- os.Exit(1)
- }
-}
-
-func init() { {{- if .viper}}
- cobra.OnInitialize(initConfig)
-{{end}}
- // Here you will define your flags and configuration settings.
- // Cobra supports persistent flags, which, if defined here,
- // will be global for your application.{{ if .viper }}
- rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.{{ .appName }}.yaml)"){{ else }}
- // rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.{{ .appName }}.yaml)"){{ end }}
-
- // Cobra also supports local flags, which will only run
- // when this action is called directly.
- rootCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle")
-}{{ if .viper }}
-
-// initConfig reads in config file and ENV variables if set.
-func initConfig() {
- if cfgFile != "" {
- // Use config file from the flag.
- viper.SetConfigFile(cfgFile)
- } else {
- // Find home directory.
- home, err := homedir.Dir()
- if err != nil {
- fmt.Println(err)
- os.Exit(1)
- }
-
- // Search config in home directory with name ".{{ .appName }}" (without extension).
- viper.AddConfigPath(home)
- viper.SetConfigName(".{{ .appName }}")
- }
-
- viper.AutomaticEnv() // read in environment variables that match
-
- // If a config file is found, read it in.
- if err := viper.ReadInConfig(); err == nil {
- fmt.Println("Using config file:", viper.ConfigFileUsed())
- }
-}{{ end }}
-`
-
- data := make(map[string]interface{})
- data["copyright"] = copyrightLine()
- data["viper"] = viper.GetBool("useViper")
- data["license"] = project.License().Header
- data["appName"] = path.Base(project.Name())
-
- rootCmdScript, err := executeTemplate(template, data)
- if err != nil {
- er(err)
- }
-
- err = writeStringToFile(filepath.Join(project.CmdPath(), "root.go"), rootCmdScript)
- if err != nil {
- er(err)
- }
-
-}
diff --git a/vendor/github.com/spf13/cobra/cobra/cmd/init_test.go b/vendor/github.com/spf13/cobra/cobra/cmd/init_test.go
deleted file mode 100644
index 40eb4038e..000000000
--- a/vendor/github.com/spf13/cobra/cobra/cmd/init_test.go
+++ /dev/null
@@ -1,83 +0,0 @@
-package cmd
-
-import (
- "errors"
- "io/ioutil"
- "os"
- "path/filepath"
- "testing"
-
- "github.com/spf13/viper"
-)
-
-// TestGoldenInitCmd initializes the project "github.com/spf13/testproject"
-// in GOPATH and compares the content of files in initialized project with
-// appropriate golden files ("testdata/*.golden").
-// Use -update to update existing golden files.
-func TestGoldenInitCmd(t *testing.T) {
- projectName := "github.com/spf13/testproject"
- project := NewProject(projectName)
- defer os.RemoveAll(project.AbsPath())
-
- viper.Set("author", "NAME HERE <EMAIL ADDRESS>")
- viper.Set("license", "apache")
- viper.Set("year", 2017)
- defer viper.Set("author", nil)
- defer viper.Set("license", nil)
- defer viper.Set("year", nil)
-
- os.Args = []string{"cobra", "init", projectName}
- if err := rootCmd.Execute(); err != nil {
- t.Fatal("Error by execution:", err)
- }
-
- expectedFiles := []string{".", "cmd", "LICENSE", "main.go", "cmd/root.go"}
- gotFiles := []string{}
-
- // Check project file hierarchy and compare the content of every single file
- // with appropriate golden file.
- err := filepath.Walk(project.AbsPath(), func(path string, info os.FileInfo, err error) error {
- if err != nil {
- return err
- }
-
- // Make path relative to project.AbsPath().
- // E.g. path = "/home/user/go/src/github.com/spf13/testproject/cmd/root.go"
- // then it returns just "cmd/root.go".
- relPath, err := filepath.Rel(project.AbsPath(), path)
- if err != nil {
- return err
- }
- relPath = filepath.ToSlash(relPath)
- gotFiles = append(gotFiles, relPath)
- goldenPath := filepath.Join("testdata", filepath.Base(path)+".golden")
-
- switch relPath {
- // Known directories.
- case ".", "cmd":
- return nil
- // Known files.
- case "LICENSE", "main.go", "cmd/root.go":
- if *update {
- got, err := ioutil.ReadFile(path)
- if err != nil {
- return err
- }
- if err := ioutil.WriteFile(goldenPath, got, 0644); err != nil {
- t.Fatal("Error while updating file:", err)
- }
- }
- return compareFiles(path, goldenPath)
- }
- // Unknown file.
- return errors.New("unknown file: " + path)
- })
- if err != nil {
- t.Fatal(err)
- }
-
- // Check if some files lack.
- if err := checkLackFiles(expectedFiles, gotFiles); err != nil {
- t.Fatal(err)
- }
-}
diff --git a/vendor/github.com/spf13/cobra/cobra/cmd/project.go b/vendor/github.com/spf13/cobra/cobra/cmd/project.go
deleted file mode 100644
index 7ddb82585..000000000
--- a/vendor/github.com/spf13/cobra/cobra/cmd/project.go
+++ /dev/null
@@ -1,200 +0,0 @@
-package cmd
-
-import (
- "os"
- "path/filepath"
- "runtime"
- "strings"
-)
-
-// Project contains name, license and paths to projects.
-type Project struct {
- absPath string
- cmdPath string
- srcPath string
- license License
- name string
-}
-
-// NewProject returns Project with specified project name.
-func NewProject(projectName string) *Project {
- if projectName == "" {
- er("can't create project with blank name")
- }
-
- p := new(Project)
- p.name = projectName
-
- // 1. Find already created protect.
- p.absPath = findPackage(projectName)
-
- // 2. If there are no created project with this path, and user is in GOPATH,
- // then use GOPATH/src/projectName.
- if p.absPath == "" {
- wd, err := os.Getwd()
- if err != nil {
- er(err)
- }
- for _, srcPath := range srcPaths {
- goPath := filepath.Dir(srcPath)
- if filepathHasPrefix(wd, goPath) {
- p.absPath = filepath.Join(srcPath, projectName)
- break
- }
- }
- }
-
- // 3. If user is not in GOPATH, then use (first GOPATH)/src/projectName.
- if p.absPath == "" {
- p.absPath = filepath.Join(srcPaths[0], projectName)
- }
-
- return p
-}
-
-// findPackage returns full path to existing go package in GOPATHs.
-func findPackage(packageName string) string {
- if packageName == "" {
- return ""
- }
-
- for _, srcPath := range srcPaths {
- packagePath := filepath.Join(srcPath, packageName)
- if exists(packagePath) {
- return packagePath
- }
- }
-
- return ""
-}
-
-// NewProjectFromPath returns Project with specified absolute path to
-// package.
-func NewProjectFromPath(absPath string) *Project {
- if absPath == "" {
- er("can't create project: absPath can't be blank")
- }
- if !filepath.IsAbs(absPath) {
- er("can't create project: absPath is not absolute")
- }
-
- // If absPath is symlink, use its destination.
- fi, err := os.Lstat(absPath)
- if err != nil {
- er("can't read path info: " + err.Error())
- }
- if fi.Mode()&os.ModeSymlink != 0 {
- path, err := os.Readlink(absPath)
- if err != nil {
- er("can't read the destination of symlink: " + err.Error())
- }
- absPath = path
- }
-
- p := new(Project)
- p.absPath = strings.TrimSuffix(absPath, findCmdDir(absPath))
- p.name = filepath.ToSlash(trimSrcPath(p.absPath, p.SrcPath()))
- return p
-}
-
-// trimSrcPath trims at the beginning of absPath the srcPath.
-func trimSrcPath(absPath, srcPath string) string {
- relPath, err := filepath.Rel(srcPath, absPath)
- if err != nil {
- er(err)
- }
- return relPath
-}
-
-// License returns the License object of project.
-func (p *Project) License() License {
- if p.license.Text == "" && p.license.Name != "None" {
- p.license = getLicense()
- }
- return p.license
-}
-
-// Name returns the name of project, e.g. "github.com/spf13/cobra"
-func (p Project) Name() string {
- return p.name
-}
-
-// CmdPath returns absolute path to directory, where all commands are located.
-func (p *Project) CmdPath() string {
- if p.absPath == "" {
- return ""
- }
- if p.cmdPath == "" {
- p.cmdPath = filepath.Join(p.absPath, findCmdDir(p.absPath))
- }
- return p.cmdPath
-}
-
-// findCmdDir checks if base of absPath is cmd dir and returns it or
-// looks for existing cmd dir in absPath.
-func findCmdDir(absPath string) string {
- if !exists(absPath) || isEmpty(absPath) {
- return "cmd"
- }
-
- if isCmdDir(absPath) {
- return filepath.Base(absPath)
- }
-
- files, _ := filepath.Glob(filepath.Join(absPath, "c*"))
- for _, file := range files {
- if isCmdDir(file) {
- return filepath.Base(file)
- }
- }
-
- return "cmd"
-}
-
-// isCmdDir checks if base of name is one of cmdDir.
-func isCmdDir(name string) bool {
- name = filepath.Base(name)
- for _, cmdDir := range []string{"cmd", "cmds", "command", "commands"} {
- if name == cmdDir {
- return true
- }
- }
- return false
-}
-
-// AbsPath returns absolute path of project.
-func (p Project) AbsPath() string {
- return p.absPath
-}
-
-// SrcPath returns absolute path to $GOPATH/src where project is located.
-func (p *Project) SrcPath() string {
- if p.srcPath != "" {
- return p.srcPath
- }
- if p.absPath == "" {
- p.srcPath = srcPaths[0]
- return p.srcPath
- }
-
- for _, srcPath := range srcPaths {
- if filepathHasPrefix(p.absPath, srcPath) {
- p.srcPath = srcPath
- break
- }
- }
-
- return p.srcPath
-}
-
-func filepathHasPrefix(path string, prefix string) bool {
- if len(path) <= len(prefix) {
- return false
- }
- if runtime.GOOS == "windows" {
- // Paths in windows are case-insensitive.
- return strings.EqualFold(path[0:len(prefix)], prefix)
- }
- return path[0:len(prefix)] == prefix
-
-}
diff --git a/vendor/github.com/spf13/cobra/cobra/cmd/project_test.go b/vendor/github.com/spf13/cobra/cobra/cmd/project_test.go
deleted file mode 100644
index 037f7c554..000000000
--- a/vendor/github.com/spf13/cobra/cobra/cmd/project_test.go
+++ /dev/null
@@ -1,24 +0,0 @@
-package cmd
-
-import (
- "testing"
-)
-
-func TestFindExistingPackage(t *testing.T) {
- path := findPackage("github.com/spf13/cobra")
- if path == "" {
- t.Fatal("findPackage didn't find the existing package")
- }
- if !hasGoPathPrefix(path) {
- t.Fatalf("%q is not in GOPATH, but must be", path)
- }
-}
-
-func hasGoPathPrefix(path string) bool {
- for _, srcPath := range srcPaths {
- if filepathHasPrefix(path, srcPath) {
- return true
- }
- }
- return false
-}
diff --git a/vendor/github.com/spf13/cobra/cobra/cmd/root.go b/vendor/github.com/spf13/cobra/cobra/cmd/root.go
deleted file mode 100644
index 19568f980..000000000
--- a/vendor/github.com/spf13/cobra/cobra/cmd/root.go
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright © 2015 Steve Francia <spf@spf13.com>.
-//
-// 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
-// http://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.
-
-package cmd
-
-import (
- "fmt"
-
- homedir "github.com/mitchellh/go-homedir"
- "github.com/spf13/cobra"
- "github.com/spf13/viper"
-)
-
-var (
- // Used for flags.
- cfgFile, userLicense string
-
- rootCmd = &cobra.Command{
- Use: "cobra",
- Short: "A generator for Cobra based Applications",
- Long: `Cobra is a CLI library for Go that empowers applications.
-This application is a tool to generate the needed files
-to quickly create a Cobra application.`,
- }
-)
-
-// Execute executes the root command.
-func Execute() {
- rootCmd.Execute()
-}
-
-func init() {
- cobra.OnInitialize(initConfig)
-
- rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.cobra.yaml)")
- rootCmd.PersistentFlags().StringP("author", "a", "YOUR NAME", "author name for copyright attribution")
- rootCmd.PersistentFlags().StringVarP(&userLicense, "license", "l", "", "name of license for the project")
- rootCmd.PersistentFlags().Bool("viper", true, "use Viper for configuration")
- viper.BindPFlag("author", rootCmd.PersistentFlags().Lookup("author"))
- viper.BindPFlag("useViper", rootCmd.PersistentFlags().Lookup("viper"))
- viper.SetDefault("author", "NAME HERE <EMAIL ADDRESS>")
- viper.SetDefault("license", "apache")
-
- rootCmd.AddCommand(addCmd)
- rootCmd.AddCommand(initCmd)
-}
-
-func initConfig() {
- if cfgFile != "" {
- // Use config file from the flag.
- viper.SetConfigFile(cfgFile)
- } else {
- // Find home directory.
- home, err := homedir.Dir()
- if err != nil {
- er(err)
- }
-
- // Search config in home directory with name ".cobra" (without extension).
- viper.AddConfigPath(home)
- viper.SetConfigName(".cobra")
- }
-
- viper.AutomaticEnv()
-
- if err := viper.ReadInConfig(); err == nil {
- fmt.Println("Using config file:", viper.ConfigFileUsed())
- }
-}
diff --git a/vendor/github.com/spf13/cobra/cobra/cmd/testdata/main.go.golden b/vendor/github.com/spf13/cobra/cobra/cmd/testdata/main.go.golden
deleted file mode 100644
index cdbe38d70..000000000
--- a/vendor/github.com/spf13/cobra/cobra/cmd/testdata/main.go.golden
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright © 2017 NAME HERE <EMAIL ADDRESS>
-//
-// 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
-//
-// http://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.
-
-package main
-
-import "github.com/spf13/testproject/cmd"
-
-func main() {
- cmd.Execute()
-}
diff --git a/vendor/github.com/spf13/cobra/cobra/cmd/testdata/root.go.golden b/vendor/github.com/spf13/cobra/cobra/cmd/testdata/root.go.golden
deleted file mode 100644
index d74f4cd45..000000000
--- a/vendor/github.com/spf13/cobra/cobra/cmd/testdata/root.go.golden
+++ /dev/null
@@ -1,89 +0,0 @@
-// Copyright © 2017 NAME HERE <EMAIL ADDRESS>
-//
-// 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
-//
-// http://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.
-
-package cmd
-
-import (
- "fmt"
- "os"
-
- homedir "github.com/mitchellh/go-homedir"
- "github.com/spf13/cobra"
- "github.com/spf13/viper"
-)
-
-var cfgFile string
-
-// rootCmd represents the base command when called without any subcommands
-var rootCmd = &cobra.Command{
- Use: "testproject",
- Short: "A brief description of your application",
- Long: `A longer description that spans multiple lines and likely contains
-examples and usage of using your application. For example:
-
-Cobra is a CLI library for Go that empowers applications.
-This application is a tool to generate the needed files
-to quickly create a Cobra application.`,
- // Uncomment the following line if your bare application
- // has an action associated with it:
- // Run: func(cmd *cobra.Command, args []string) { },
-}
-
-// Execute adds all child commands to the root command and sets flags appropriately.
-// This is called by main.main(). It only needs to happen once to the rootCmd.
-func Execute() {
- if err := rootCmd.Execute(); err != nil {
- fmt.Println(err)
- os.Exit(1)
- }
-}
-
-func init() {
- cobra.OnInitialize(initConfig)
-
- // Here you will define your flags and configuration settings.
- // Cobra supports persistent flags, which, if defined here,
- // will be global for your application.
- rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.testproject.yaml)")
-
- // Cobra also supports local flags, which will only run
- // when this action is called directly.
- rootCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle")
-}
-
-// initConfig reads in config file and ENV variables if set.
-func initConfig() {
- if cfgFile != "" {
- // Use config file from the flag.
- viper.SetConfigFile(cfgFile)
- } else {
- // Find home directory.
- home, err := homedir.Dir()
- if err != nil {
- fmt.Println(err)
- os.Exit(1)
- }
-
- // Search config in home directory with name ".testproject" (without extension).
- viper.AddConfigPath(home)
- viper.SetConfigName(".testproject")
- }
-
- viper.AutomaticEnv() // read in environment variables that match
-
- // If a config file is found, read it in.
- if err := viper.ReadInConfig(); err == nil {
- fmt.Println("Using config file:", viper.ConfigFileUsed())
- }
-}
diff --git a/vendor/github.com/spf13/cobra/cobra/cmd/testdata/test.go.golden b/vendor/github.com/spf13/cobra/cobra/cmd/testdata/test.go.golden
deleted file mode 100644
index ed6442755..000000000
--- a/vendor/github.com/spf13/cobra/cobra/cmd/testdata/test.go.golden
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright © 2017 NAME HERE <EMAIL ADDRESS>
-//
-// 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
-//
-// http://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.
-
-package cmd
-
-import (
- "fmt"
-
- "github.com/spf13/cobra"
-)
-
-// testCmd represents the test command
-var testCmd = &cobra.Command{
- Use: "test",
- Short: "A brief description of your command",
- Long: `A longer description that spans multiple lines and likely contains examples
-and usage of using your command. For example:
-
-Cobra is a CLI library for Go that empowers applications.
-This application is a tool to generate the needed files
-to quickly create a Cobra application.`,
- Run: func(cmd *cobra.Command, args []string) {
- fmt.Println("test called")
- },
-}
-
-func init() {
- rootCmd.AddCommand(testCmd)
-
- // Here you will define your flags and configuration settings.
-
- // Cobra supports Persistent Flags which will work for this command
- // and all subcommands, e.g.:
- // testCmd.PersistentFlags().String("foo", "", "A help for foo")
-
- // Cobra supports local flags which will only run when this command
- // is called directly, e.g.:
- // testCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle")
-}