43 lines
923 B
Go
43 lines
923 B
Go
|
package workflow
|
||
|
|
||
|
import (
|
||
|
"gopkg.in/yaml.v3"
|
||
|
"io/ioutil"
|
||
|
)
|
||
|
|
||
|
// Builds a Workflow from serialized yaml provided as bytes.
|
||
|
//
|
||
|
// If the bytes cannot be unmarshalled into the Workflow, an error
|
||
|
// is returned along with a nil Workflow pointer.
|
||
|
func FromYamlBytes(raw []byte) (*Workflow, error) {
|
||
|
var workflow Workflow
|
||
|
|
||
|
if yamlError := yaml.Unmarshal(raw, &workflow); yamlError != nil {
|
||
|
return nil, yamlError
|
||
|
}
|
||
|
|
||
|
return &workflow, nil
|
||
|
}
|
||
|
|
||
|
// Builds a Workflow from the contents of the given file.
|
||
|
//
|
||
|
// If the file cannot be read, or its content cannot be parsed, an
|
||
|
// error is returned along with a nil Workflow pointer.
|
||
|
func FromYamlFile(workflowPath string) (*Workflow, error) {
|
||
|
workflowRaw, err := ioutil.ReadFile(workflowPath)
|
||
|
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
|
||
|
workflow, err := FromYamlBytes(workflowRaw)
|
||
|
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
|
||
|
workflow.SourcePath = workflowPath
|
||
|
|
||
|
return workflow, err
|
||
|
}
|