(stmt *Stmt)
| 84 | } |
| 85 | |
| 86 | func include(stmt *Stmt) (func(*Context) (interface{}, error), error) { |
| 87 | |
| 88 | source := util.MaybeString(stmt.RawData["include"]) |
| 89 | if !filepath.IsAbs(source) { |
| 90 | currentSource := stmt.File |
| 91 | source = filepath.Clean(filepath.Join(filepath.Dir(currentSource), source)) |
| 92 | } |
| 93 | importedCode, err := LoadYAMLFile(source) |
| 94 | if err != nil { |
| 95 | return nil, stmt.Errorf("yaml parse error: %s", err) |
| 96 | } |
| 97 | stmt.Args = map[string]Value{} |
| 98 | for key, value := range stmt.RawData { |
| 99 | stmt.Args[key], err = NewValue(value) |
| 100 | if err != nil { |
| 101 | return nil, stmt.Errorf("yaml parse error: %s", err) |
| 102 | } |
| 103 | } |
| 104 | stmt.File = source |
| 105 | stmts, err := MakeStmts(stmt.File, importedCode) |
| 106 | if err != nil { |
| 107 | return nil, stmt.Errorf("import code parse error: %s", err) |
| 108 | } |
| 109 | stmt.Vars, err = MapToValue(util.MaybeMap(stmt.RawData["vars"])) |
| 110 | if err != nil { |
| 111 | return nil, stmt.Errorf("yaml parse error: %s", err) |
| 112 | } |
| 113 | return StmtsToFunc(stmt.funcName, stmts) |
| 114 | } |
| 115 | |
| 116 | func background(stmt *Stmt) (func(*Context) (interface{}, error), error) { |
| 117 | stmts, err := MakeStmts(stmt.File, stmt.RawNode["background"]) |
nothing calls this directly
no test coverage detected