1
0
mirror of https://github.com/go-task/task.git synced 2025-02-03 13:22:11 +02:00

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
import (
"encoding/json"
"fmt"
"io/ioutil"
"os"
"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)
for key, value := range t.Variables {
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() {
localVariables[key] = value
}
return localVariables
return localVariables, nil
}
// ReplaceVariables writes variables into initial string
@ -43,3 +60,23 @@ func getEnvironmentVariables() map[string]string {
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
}