Added external file support

Relates to #2
This commit is contained in:
Sascha Andres
2017-03-02 11:28:34 +01:00
parent 240589978d
commit 0162c2990e

View File

@@ -1,20 +1,37 @@
package task package task
import ( import (
"encoding/json"
"fmt" "fmt"
"io/ioutil"
"os" "os"
"strings" "strings"
"github.com/BurntSushi/toml"
yaml "gopkg.in/yaml.v2"
) )
func (t Task) handleVariables() map[string]string { var (
// VariableFilePath file containing additional variables
VariableFilePath = "Variables"
)
func (t Task) handleVariables() (map[string]string, error) {
localVariables := make(map[string]string) localVariables := make(map[string]string)
for key, value := range t.Variables { for key, value := range t.Variables {
localVariables[key] = value localVariables[key] = value
} }
if fileVariables, err := readVariablefile(); err == nil {
for key, value := range fileVariables {
localVariables[key] = value
}
} else {
return nil, err
}
for key, value := range getEnvironmentVariables() { for key, value := range getEnvironmentVariables() {
localVariables[key] = value localVariables[key] = value
} }
return localVariables return localVariables, nil
} }
// ReplaceVariables writes variables into initial string // ReplaceVariables writes variables into initial string
@@ -43,3 +60,23 @@ func getEnvironmentVariables() map[string]string {
return return
}) })
} }
func readVariablefile() (map[string]string, error) {
var variables map[string]string
if b, err := ioutil.ReadFile(VariableFilePath + ".yml"); err == nil {
if err := yaml.Unmarshal(b, &variables); err != nil {
return nil, err
}
}
if b, err := ioutil.ReadFile(VariableFilePath + ".json"); err == nil {
if err := json.Unmarshal(b, &variables); err != nil {
return nil, err
}
}
if b, err := ioutil.ReadFile(VariableFilePath + ".toml"); err == nil {
if err := toml.Unmarshal(b, &variables); err != nil {
return nil, err
}
}
return variables, nil
}