This commit is contained in:
parent
973270b8b5
commit
1fbc07a2b4
@ -1,7 +1,6 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"log"
|
||||
"os"
|
||||
"path"
|
||||
"path/filepath"
|
||||
@ -18,14 +17,12 @@ func LoadAbraConfig() Abra {
|
||||
configFile := findAbraConfig(wd)
|
||||
if configFile == "" {
|
||||
logrus.Debugf("no config file found")
|
||||
log.Println("no config file found")
|
||||
return Abra{}
|
||||
}
|
||||
data, err := os.ReadFile(configFile)
|
||||
if err != nil {
|
||||
// Do nothing, when an error occurs
|
||||
logrus.Debugf("error reading config file: %s", err)
|
||||
log.Printf("error reading config file: %s", err)
|
||||
return Abra{}
|
||||
}
|
||||
|
||||
@ -34,7 +31,6 @@ func LoadAbraConfig() Abra {
|
||||
if err != nil {
|
||||
// Do nothing, when an error occurs
|
||||
logrus.Debugf("error loading config file: %s", err)
|
||||
log.Printf("error loading config file: %s", err)
|
||||
return Abra{}
|
||||
}
|
||||
logrus.Debugf("config file loaded from: %s", configFile)
|
||||
@ -47,24 +43,19 @@ func LoadAbraConfig() Abra {
|
||||
// directory until the home directory is hit. When no abra config was found it
|
||||
// returns an empty string.
|
||||
func findAbraConfig(dir string) string {
|
||||
log.Println("find", dir)
|
||||
dir, err := filepath.Abs(dir)
|
||||
if err != nil {
|
||||
log.Println("here")
|
||||
return ""
|
||||
}
|
||||
if dir == os.ExpandEnv("$HOME") || dir == "/" {
|
||||
log.Println("there")
|
||||
return ""
|
||||
}
|
||||
p := path.Join(dir, "abra.yaml")
|
||||
if _, err := os.Stat(p); err == nil {
|
||||
log.Println("where", p)
|
||||
return p
|
||||
}
|
||||
p = path.Join(dir, "abra.yml")
|
||||
if _, err := os.Stat(p); err == nil {
|
||||
log.Println("lhere", p)
|
||||
return p
|
||||
}
|
||||
return findAbraConfig(filepath.Dir(dir))
|
||||
@ -81,17 +72,19 @@ type Abra struct {
|
||||
// 2. check if abraDir was set in a config file
|
||||
// 3. use $HOME/.abra when above two options failed
|
||||
func (a Abra) GetAbraDir() string {
|
||||
log.Println(os.LookupEnv("ABRA_DIR"))
|
||||
if dir, exists := os.LookupEnv("ABRA_DIR"); exists && dir != "" {
|
||||
logrus.Debug("read abra dir from $ABRA_DIR")
|
||||
return dir
|
||||
}
|
||||
if a.AbraDir != "" {
|
||||
logrus.Debug("read abra dir from config file")
|
||||
if path.IsAbs(a.AbraDir) {
|
||||
return a.AbraDir
|
||||
}
|
||||
// Make the path absolute
|
||||
return path.Join(a.configPath, a.AbraDir)
|
||||
}
|
||||
logrus.Debug("using default abra dir")
|
||||
return os.ExpandEnv("$HOME/.abra")
|
||||
}
|
||||
|
||||
|
@ -7,60 +7,61 @@ import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
// func TestFindAbraConfig(t *testing.T) {
|
||||
// wd, err := os.Getwd()
|
||||
// if err != nil {
|
||||
// log.Fatal(err)
|
||||
// }
|
||||
// tests := []struct {
|
||||
// Dir string
|
||||
// Config string
|
||||
// }{
|
||||
// {
|
||||
// Dir: "testdata/abraconfig1",
|
||||
// Config: filepath.Join(wd, "testdata/abraconfig1/abra.yaml"),
|
||||
// },
|
||||
// {
|
||||
// Dir: "testdata/abraconfig1/subdir",
|
||||
// Config: filepath.Join(wd, "testdata/abraconfig1/abra.yaml"),
|
||||
// },
|
||||
// {
|
||||
// Dir: "testdata/abraconfig2",
|
||||
// Config: filepath.Join(wd, "testdata/abraconfig2/abra.yml"),
|
||||
// },
|
||||
// {
|
||||
// Dir: "testdata/abraconfig2/subdir",
|
||||
// Config: filepath.Join(wd, "testdata/abraconfig2/abra.yml"),
|
||||
// },
|
||||
// {
|
||||
// Dir: "testdata",
|
||||
// Config: "",
|
||||
// },
|
||||
// }
|
||||
//
|
||||
// for _, tc := range tests {
|
||||
// t.Run(tc.Dir, func(t *testing.T) {
|
||||
// config := findAbraConfig(tc.Dir)
|
||||
// if config != tc.Config {
|
||||
// t.Errorf("\nwant: %s\ngot: %s", tc.Config, config)
|
||||
// }
|
||||
// })
|
||||
// }
|
||||
// }
|
||||
func TestFindAbraConfig(t *testing.T) {
|
||||
wd, err := os.Getwd()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
tests := []struct {
|
||||
Dir string
|
||||
Config string
|
||||
}{
|
||||
{
|
||||
Dir: "testdata/abraconfig1",
|
||||
Config: filepath.Join(wd, "testdata/abraconfig1/abra.yaml"),
|
||||
},
|
||||
{
|
||||
Dir: "testdata/abraconfig1/subdir",
|
||||
Config: filepath.Join(wd, "testdata/abraconfig1/abra.yaml"),
|
||||
},
|
||||
{
|
||||
Dir: "testdata/abraconfig2",
|
||||
Config: filepath.Join(wd, "testdata/abraconfig2/abra.yml"),
|
||||
},
|
||||
{
|
||||
Dir: "testdata/abraconfig2/subdir",
|
||||
Config: filepath.Join(wd, "testdata/abraconfig2/abra.yml"),
|
||||
},
|
||||
{
|
||||
Dir: "testdata",
|
||||
Config: "",
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range tests {
|
||||
t.Run(tc.Dir, func(t *testing.T) {
|
||||
config := findAbraConfig(tc.Dir)
|
||||
if config != tc.Config {
|
||||
t.Errorf("\nwant: %s\ngot: %s", tc.Config, config)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestLoadAbraConfigGetAbraDir(t *testing.T) {
|
||||
wd, err := os.Getwd()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
t.Setenv("ABRA_DIR", "")
|
||||
|
||||
// t.Run("default", func(t *testing.T) {
|
||||
// cfg := LoadAbraConfig()
|
||||
// wantAbraDir := os.ExpandEnv("$HOME/.abra")
|
||||
// if cfg.GetAbraDir() != wantAbraDir {
|
||||
// t.Errorf("\nwant: %s\ngot: %s", wantAbraDir, cfg.GetAbraDir())
|
||||
// }
|
||||
// })
|
||||
t.Run("default", func(t *testing.T) {
|
||||
cfg := LoadAbraConfig()
|
||||
wantAbraDir := os.ExpandEnv("$HOME/.abra")
|
||||
if cfg.GetAbraDir() != wantAbraDir {
|
||||
t.Errorf("\nwant: %s\ngot: %s", wantAbraDir, cfg.GetAbraDir())
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("from config file", func(t *testing.T) {
|
||||
t.Cleanup(func() { os.Chdir(wd) })
|
||||
@ -75,29 +76,28 @@ func TestLoadAbraConfigGetAbraDir(t *testing.T) {
|
||||
if cfg.GetAbraDir() != wantAbraDir {
|
||||
t.Errorf("\nwant: %s\ngot: %s", wantAbraDir, cfg.GetAbraDir())
|
||||
}
|
||||
t.Fatal()
|
||||
})
|
||||
|
||||
// t.Run("default when config file is empty", func(t *testing.T) {
|
||||
// t.Cleanup(func() { os.Chdir(wd) })
|
||||
// err := os.Chdir(filepath.Join(wd, "testdata/abraconfig2"))
|
||||
// if err != nil {
|
||||
// log.Fatal(err)
|
||||
// }
|
||||
//
|
||||
// cfg := LoadAbraConfig()
|
||||
// wantAbraDir := os.ExpandEnv("$HOME/.abra")
|
||||
// if cfg.GetAbraDir() != wantAbraDir {
|
||||
// t.Errorf("\nwant: %s\ngot: %s", wantAbraDir, cfg.GetAbraDir())
|
||||
// }
|
||||
// })
|
||||
//
|
||||
// t.Run("from env variable", func(t *testing.T) {
|
||||
// t.Setenv("ABRA_DIR", "foo")
|
||||
// cfg := LoadAbraConfig()
|
||||
// wantAbraDir := "foo"
|
||||
// if cfg.GetAbraDir() != wantAbraDir {
|
||||
// t.Errorf("\nwant: %s\ngot: %s", wantAbraDir, cfg.GetAbraDir())
|
||||
// }
|
||||
// })
|
||||
t.Run("default when config file is empty", func(t *testing.T) {
|
||||
t.Cleanup(func() { os.Chdir(wd) })
|
||||
err := os.Chdir(filepath.Join(wd, "testdata/abraconfig2"))
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
cfg := LoadAbraConfig()
|
||||
wantAbraDir := os.ExpandEnv("$HOME/.abra")
|
||||
if cfg.GetAbraDir() != wantAbraDir {
|
||||
t.Errorf("\nwant: %s\ngot: %s", wantAbraDir, cfg.GetAbraDir())
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("from env variable", func(t *testing.T) {
|
||||
t.Setenv("ABRA_DIR", "foo")
|
||||
cfg := LoadAbraConfig()
|
||||
wantAbraDir := "foo"
|
||||
if cfg.GetAbraDir() != wantAbraDir {
|
||||
t.Errorf("\nwant: %s\ngot: %s", wantAbraDir, cfg.GetAbraDir())
|
||||
}
|
||||
})
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user