Browse Source

cli: WriteDemoConfig -> WriteConfigVals

pull/1842/head
Ethan Buchman 7 years ago
parent
commit
690d6c6070
4 changed files with 30 additions and 16 deletions
  1. +6
    -0
      CHANGELOG.md
  2. +5
    -11
      cli/helper.go
  3. +4
    -2
      cli/setup.go
  4. +15
    -3
      cli/setup_test.go

+ 6
- 0
CHANGELOG.md View File

@ -1,5 +1,11 @@
# Changelog # Changelog
## 0.7.0 (TBD)
BREAKING:
- [cli] WriteDemoConfig -> WriteConfigValues
## 0.6.0 (December 29, 2017) ## 0.6.0 (December 29, 2017)
BREAKING: BREAKING:


+ 5
- 11
cli/helper.go View File

@ -9,21 +9,15 @@ import (
"path/filepath" "path/filepath"
) )
// WriteDemoConfig writes a toml file with the given values.
// It returns the RootDir the config.toml file is stored in,
// or an error if writing was impossible
func WriteDemoConfig(vals map[string]string) (string, error) {
cdir, err := ioutil.TempDir("", "test-cli")
if err != nil {
return "", err
}
// WriteConfigVals writes a toml file with the given values.
// It returns an error if writing was impossible.
func WriteConfigVals(dir string, vals map[string]string) error {
data := "" data := ""
for k, v := range vals { for k, v := range vals {
data = data + fmt.Sprintf("%s = \"%s\"\n", k, v) data = data + fmt.Sprintf("%s = \"%s\"\n", k, v)
} }
cfile := filepath.Join(cdir, "config.toml")
err = ioutil.WriteFile(cfile, []byte(data), 0666)
return cdir, err
cfile := filepath.Join(dir, "config.toml")
return ioutil.WriteFile(cfile, []byte(data), 0666)
} }
// RunWithArgs executes the given command with the specified command line args // RunWithArgs executes the given command with the specified command line args


+ 4
- 2
cli/setup.go View File

@ -3,6 +3,7 @@ package cli
import ( import (
"fmt" "fmt"
"os" "os"
"path/filepath"
"strings" "strings"
"github.com/pkg/errors" "github.com/pkg/errors"
@ -129,8 +130,9 @@ func bindFlagsLoadViper(cmd *cobra.Command, args []string) error {
homeDir := viper.GetString(HomeFlag) homeDir := viper.GetString(HomeFlag)
viper.Set(HomeFlag, homeDir) viper.Set(HomeFlag, homeDir)
viper.SetConfigName("config") // name of config file (without extension)
viper.AddConfigPath(homeDir) // search root directory
viper.SetConfigName("config") // name of config file (without extension)
viper.AddConfigPath(homeDir) // search root directory
viper.AddConfigPath(filepath.Join(homeDir, "config")) // search root directory /config
// If a config file is found, read it in. // If a config file is found, read it in.
if err := viper.ReadInConfig(); err == nil { if err := viper.ReadInConfig(); err == nil {


+ 15
- 3
cli/setup_test.go View File

@ -2,6 +2,7 @@ package cli
import ( import (
"fmt" "fmt"
"io/ioutil"
"strconv" "strconv"
"strings" "strings"
"testing" "testing"
@ -54,11 +55,20 @@ func TestSetupEnv(t *testing.T) {
} }
} }
func tempDir() string {
cdir, err := ioutil.TempDir("", "test-cli")
if err != nil {
panic(err)
}
return cdir
}
func TestSetupConfig(t *testing.T) { func TestSetupConfig(t *testing.T) {
// we pre-create two config files we can refer to in the rest of // we pre-create two config files we can refer to in the rest of
// the test cases. // the test cases.
cval1 := "fubble" cval1 := "fubble"
conf1, err := WriteDemoConfig(map[string]string{"boo": cval1})
conf1 := tempDir()
err := WriteConfigVals(conf1, map[string]string{"boo": cval1})
require.Nil(t, err) require.Nil(t, err)
cases := []struct { cases := []struct {
@ -116,10 +126,12 @@ func TestSetupUnmarshal(t *testing.T) {
// we pre-create two config files we can refer to in the rest of // we pre-create two config files we can refer to in the rest of
// the test cases. // the test cases.
cval1, cval2 := "someone", "else" cval1, cval2 := "someone", "else"
conf1, err := WriteDemoConfig(map[string]string{"name": cval1})
conf1 := tempDir()
err := WriteConfigVals(conf1, map[string]string{"name": cval1})
require.Nil(t, err) require.Nil(t, err)
// even with some ignored fields, should be no problem // even with some ignored fields, should be no problem
conf2, err := WriteDemoConfig(map[string]string{"name": cval2, "foo": "bar"})
conf2 := tempDir()
err = WriteConfigVals(conf2, map[string]string{"name": cval2, "foo": "bar"})
require.Nil(t, err) require.Nil(t, err)
// unused is not declared on a flag and remains from base // unused is not declared on a flag and remains from base


Loading…
Cancel
Save