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  }