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 ( const (
APP_NAME = "Git repository manager" APP_NAME = "Git repository manager"
APP_DESCRIPTION = "Manage your repository with simple app" APP_DESCRIPTION = "Manage your repository with simple app"
VERSION = "0.1" VERSION = "0.1.1"
) )
type GitRepositoryManager struct { type GitRepositoryManager struct {

View File

@ -90,5 +90,5 @@ func Example_test_sync_output() {
// Output: // Output:
// Info: Synchronizing repositories // Info: Synchronizing repositories
// Info: All repositories are synced // 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 ( import (
"errors" "errors"
"fmt" "fmt"
"os"
"strings" "strings"
"gopkg.in/yaml.v3" "gopkg.in/yaml.v3"
@ -13,6 +14,8 @@ func GetRepositoryConfig(data []byte, fileExtension string) (Configuration, erro
var config Configuration var config Configuration
var err error var err error
data = []byte(os.ExpandEnv(string(data)))
switch fileExtension { switch fileExtension {
case "yaml": case "yaml":
err = yaml.Unmarshal(data, &config) err = yaml.Unmarshal(data, &config)

View File

@ -2,37 +2,14 @@ package config
import ( import (
"fmt" "fmt"
"os"
"reflect" "reflect"
"testing" "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) { func TestNotSupportedFileExcension(t *testing.T) {
_, err := GetRepositoryConfig(exampleYamlConfig, "custom")
_, err := GetRepositoryConfig([]byte("test"), "custom")
if err == nil { if err == nil {
t.Error("Expected to get error") t.Error("Expected to get error")
} }
@ -43,6 +20,33 @@ func TestNotSupportedFileExcension(t *testing.T) {
func TestGetRepositoryConfigFromYaml(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") result, err := GetRepositoryConfig(exampleYamlConfig, "yaml")
if err != nil { if err != nil {