diff --git a/pkg/task/lib/print/print.go b/pkg/task/lib/print/print.go new file mode 100644 index 0000000..40d90a9 --- /dev/null +++ b/pkg/task/lib/print/print.go @@ -0,0 +1,53 @@ +package print + +import ( + "fmt" + "os" + text_template "text/template" + + "github.com/sikalabs/gobble/pkg/libtask" + "github.com/sikalabs/gobble/pkg/utils/exec_utils" +) + +type TaskPrint struct { + Template string `yaml:"template"` +} + +func Run( + taskInput libtask.TaskInput, + taskParams TaskPrint, +) libtask.TaskOutput { + tmpl, err := text_template.New("template").Parse(taskParams.Template) + if err != nil { + return libtask.TaskOutput{ + Error: err, + } + } + tmpFile, err := os.CreateTemp("", "template") + if err != nil { + return libtask.TaskOutput{ + Error: err, + } + } + err = tmpl.Execute(tmpFile, map[string]interface{}{ + "Config": taskInput.Config, + "Vars": taskInput.Vars, + }) + if err != nil { + return libtask.TaskOutput{ + Error: err, + } + } + fmt.Println("OUTPUT:") + err = exec_utils.RawExecStdout("cat", tmpFile.Name()) + if err != nil { + return libtask.TaskOutput{ + Error: err, + } + } + defer os.Remove(tmpFile.Name()) + + return libtask.TaskOutput{ + Error: err, + } +} diff --git a/pkg/task/task.go b/pkg/task/task.go index dceb23b..6877fc1 100644 --- a/pkg/task/task.go +++ b/pkg/task/task.go @@ -8,6 +8,7 @@ import ( "github.com/sikalabs/gobble/pkg/task/lib/chmod" "github.com/sikalabs/gobble/pkg/task/lib/command" "github.com/sikalabs/gobble/pkg/task/lib/cp" + "github.com/sikalabs/gobble/pkg/task/lib/print" "github.com/sikalabs/gobble/pkg/task/lib/template" ) @@ -18,6 +19,7 @@ type Task struct { Template template.TaskTemplate `yaml:"template"` Command command.TaskCommand `yaml:"command"` Chmod chmod.TaskChmod `yaml:"chmod"` + Print print.TaskPrint `yaml:"print"` } func Run( @@ -35,6 +37,8 @@ func Run( return command.Run(taskInput, task.Command) case task.Chmod.Path != "": return chmod.Run(taskInput, task.Chmod) + case task.Print.Template != "": + return print.Run(taskInput, task.Print) } return libtask.TaskOutput{ Error: fmt.Errorf("task \"%s\" not found", task.Name),