Allow to use env vars in config

This commit is contained in:
Mikołaj Pęczkowski 2021-11-03 18:20:28 +01:00
parent 5e6a5e23fd
commit 2b4c6d3318
4 changed files with 35 additions and 28 deletions

View file

@ -3,6 +3,7 @@ package config
import (
"errors"
"fmt"
"os"
"strings"
"gopkg.in/yaml.v3"
@ -13,6 +14,8 @@ func GetRepositoryConfig(data []byte, fileExtension string) (Configuration, erro
var config Configuration
var err error
data = []byte(os.ExpandEnv(string(data)))
switch fileExtension {
case "yaml":
err = yaml.Unmarshal(data, &config)

View file

@ -2,37 +2,14 @@ package config
import (
"fmt"
"os"
"reflect"
"testing"
)
var exampleYamlConfig = []byte(`
workspace: /tmp
repositories:
- src: "https://github.com/example/example.git"
dest: "example/path"
name: "custom_example"
- src: https://github.com/example/example2.git
`)
var destinationConfiguration = Configuration{
Workspace: "/tmp",
Repositories: []RepositoryConfig{
{
Name: "custom_example",
Dest: "example/path",
Src: "https://github.com/example/example.git",
},
{
Name: "example2",
Src: "https://github.com/example/example2.git",
Dest: "example2",
},
},
}
func TestNotSupportedFileExcension(t *testing.T) {
_, err := GetRepositoryConfig(exampleYamlConfig, "custom")
_, err := GetRepositoryConfig([]byte("test"), "custom")
if err == nil {
t.Error("Expected to get error")
}
@ -43,6 +20,33 @@ func TestNotSupportedFileExcension(t *testing.T) {
func TestGetRepositoryConfigFromYaml(t *testing.T) {
var exampleYamlConfig = []byte(`
workspace: ${HOME}
repositories:
- src: "https://github.com/example/example.git"
dest: "example/path"
name: "custom_example"
- src: https://github.com/example/example2.git
`)
homedir, _ := os.UserHomeDir()
var destinationConfiguration = Configuration{
Workspace: homedir,
Repositories: []RepositoryConfig{
{
Name: "custom_example",
Dest: "example/path",
Src: "https://github.com/example/example.git",
},
{
Name: "example2",
Src: "https://github.com/example/example2.git",
Dest: "example2",
},
},
}
result, err := GetRepositoryConfig(exampleYamlConfig, "yaml")
if err != nil {