github.com/octohelm/wagon@v0.0.0-20240308040401-88662650dc0b/pkg/engine/plan/task/fs_writefile.go (about) 1 package task 2 3 import ( 4 "context" 5 6 "dagger.io/dagger" 7 "github.com/octohelm/wagon/pkg/engine/daggerutil" 8 "github.com/octohelm/wagon/pkg/engine/plan/task/core" 9 ) 10 11 func init() { 12 core.DefaultFactory.Register(&WriteFile{}) 13 } 14 15 type WriteFile struct { 16 core.Task 17 18 Input core.FS `json:"input"` 19 Path string `json:"path"` 20 Contents string `json:"contents"` 21 22 Permissions int `json:"permissions" default:"0o644"` 23 24 Output core.FS `json:"-" wagon:"generated,name=output"` 25 } 26 27 func (e *WriteFile) Do(ctx context.Context) error { 28 return daggerutil.Do(ctx, func(c *dagger.Client) error { 29 dir := e.Input.LoadDirectory(c).WithNewFile(e.Path, e.Contents, dagger.DirectoryWithNewFileOpts{ 30 Permissions: e.Permissions, 31 }) 32 return e.Output.SetDirectoryIDBy(ctx, dir) 33 }) 34 }