github.com/octohelm/wagon@v0.0.0-20240308040401-88662650dc0b/pkg/engine/plan/task/fs_merge.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(&Merge{})
    13  }
    14  
    15  type Merge struct {
    16  	core.Task
    17  
    18  	Inputs []core.FS `json:"inputs"`
    19  
    20  	Output core.FS `json:"-" wagon:"generated,name=output"`
    21  }
    22  
    23  func (e *Merge) Do(ctx context.Context) error {
    24  	return daggerutil.Do(ctx, func(c *dagger.Client) error {
    25  		d := c.Directory()
    26  
    27  		for _, input := range e.Inputs {
    28  			d = d.WithDirectory("/", input.LoadDirectory(c))
    29  		}
    30  
    31  		return e.Output.SetDirectoryIDBy(ctx, d)
    32  	})
    33  }