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