nuclei/v2/pkg/workflows/compile.go
2020-11-12 23:28:24 +05:30

36 lines
637 B
Go

package workflows
import (
"os"
"github.com/pkg/errors"
"gopkg.in/yaml.v2"
)
// Parse a yaml workflow file
func Parse(file string) (*Workflow, error) {
workflow := &Workflow{}
f, err := os.Open(file)
if err != nil {
return nil, err
}
defer f.Close()
err = yaml.NewDecoder(f).Decode(workflow)
if err != nil {
return nil, err
}
if len(workflow.Workflows) > 0 {
if err := workflow.generateLogicFromWorkflows(); err != nil {
return nil, errors.Wrap(err, "could not generate workflow")
}
}
if workflow.Logic == "" {
return nil, errors.New("no logic provided")
}
workflow.path = file
return workflow, nil
}