fix(forge): honor config precedence before file reads
Co-Authored-By: Virgil <virgil@lethean.io>
This commit is contained in:
parent
6236446883
commit
51dfbe8de0
2 changed files with 38 additions and 7 deletions
19
config.go
19
config.go
|
|
@ -90,13 +90,6 @@ func SaveConfig(url, token string) error {
|
|||
// _ = url
|
||||
// _ = token
|
||||
func ResolveConfig(flagURL, flagToken string) (url, token string, err error) {
|
||||
if fileURL, fileToken, fileErr := readConfigFile(); fileErr != nil {
|
||||
return "", "", fileErr
|
||||
} else {
|
||||
url = fileURL
|
||||
token = fileToken
|
||||
}
|
||||
|
||||
if envURL, ok := os.LookupEnv("FORGE_URL"); ok && envURL != "" {
|
||||
url = envURL
|
||||
}
|
||||
|
|
@ -110,6 +103,18 @@ func ResolveConfig(flagURL, flagToken string) (url, token string, err error) {
|
|||
if flagToken != "" {
|
||||
token = flagToken
|
||||
}
|
||||
if url == "" || token == "" {
|
||||
fileURL, fileToken, fileErr := readConfigFile()
|
||||
if fileErr != nil {
|
||||
return "", "", fileErr
|
||||
}
|
||||
if url == "" {
|
||||
url = fileURL
|
||||
}
|
||||
if token == "" {
|
||||
token = fileToken
|
||||
}
|
||||
}
|
||||
if url == "" {
|
||||
url = DefaultURL
|
||||
}
|
||||
|
|
|
|||
|
|
@ -111,6 +111,32 @@ func TestResolveConfig_EnvOverridesConfig_Good(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestResolveConfig_FlagOverridesBrokenConfig_Good(t *testing.T) {
|
||||
home := t.TempDir()
|
||||
t.Setenv("HOME", home)
|
||||
t.Setenv("FORGE_URL", "")
|
||||
t.Setenv("FORGE_TOKEN", "")
|
||||
|
||||
cfgPath := filepath.Join(home, ".config", "forge", "config.json")
|
||||
if err := coreio.Local.EnsureDir(filepath.Dir(cfgPath)); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := coreio.Local.WriteMode(cfgPath, "{not-json", 0600); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
url, token, err := ResolveConfig("https://flag.example.com", "flag-token")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if url != "https://flag.example.com" {
|
||||
t.Errorf("got url=%q", url)
|
||||
}
|
||||
if token != "flag-token" {
|
||||
t.Errorf("got token=%q", token)
|
||||
}
|
||||
}
|
||||
|
||||
func TestNewForgeFromConfig_NoToken_Bad(t *testing.T) {
|
||||
t.Setenv("HOME", t.TempDir())
|
||||
t.Setenv("FORGE_URL", "")
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue