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

@ -10,7 +10,7 @@ import (
const (
APP_NAME = "Git repository manager"
APP_DESCRIPTION = "Manage your repository with simple app"
VERSION = "0.1"
VERSION = "0.1.1"
)
type GitRepositoryManager struct {

View File

@ -90,5 +90,5 @@ func Example_test_sync_output() {
// Output:
// Info: Synchronizing repositories
// Info: All repositories are synced
// Info: Current version: 0.1
// Info: Current version: 0.1.1
}

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,12 +2,26 @@ package config
import (
"fmt"
"os"
"reflect"
"testing"
)
func TestNotSupportedFileExcension(t *testing.T) {
_, err := GetRepositoryConfig([]byte("test"), "custom")
if err == nil {
t.Error("Expected to get error")
}
if err.Error() != errNotSupportedType {
t.Errorf("Expected to get %v, instead of this got %v", errNotSupportedType, err.Error())
}
}
func TestGetRepositoryConfigFromYaml(t *testing.T) {
var exampleYamlConfig = []byte(`
workspace: /tmp
workspace: ${HOME}
repositories:
- src: "https://github.com/example/example.git"
dest: "example/path"
@ -15,8 +29,10 @@ repositories:
- src: https://github.com/example/example2.git
`)
homedir, _ := os.UserHomeDir()
var destinationConfiguration = Configuration{
Workspace: "/tmp",
Workspace: homedir,
Repositories: []RepositoryConfig{
{
Name: "custom_example",
@ -31,18 +47,6 @@ var destinationConfiguration = Configuration{
},
}
func TestNotSupportedFileExcension(t *testing.T) {
_, err := GetRepositoryConfig(exampleYamlConfig, "custom")
if err == nil {
t.Error("Expected to get error")
}
if err.Error() != errNotSupportedType {
t.Errorf("Expected to get %v, instead of this got %v", errNotSupportedType, err.Error())
}
}
func TestGetRepositoryConfigFromYaml(t *testing.T) {
result, err := GetRepositoryConfig(exampleYamlConfig, "yaml")
if err != nil {