github.com/octohelm/wagon@v0.0.0-20240308040401-88662650dc0b/pkg/engine/plan/task/client_filesystem_read.go (about) 1 package task 2 3 import ( 4 "fmt" 5 "os" 6 "strings" 7 8 "dagger.io/dagger" 9 "github.com/octohelm/wagon/pkg/engine/daggerutil" 10 "github.com/octohelm/wagon/pkg/engine/plan/task/core" 11 "golang.org/x/net/context" 12 ) 13 14 func init() { 15 core.DefaultFactory.Register(&ClientFilesystemRead{}) 16 } 17 18 type ClientFilesystemRead struct { 19 core.Task 20 21 Path string `json:"path"` 22 Contents core.SecretOrString `json:"contents" wagon:"generated,name=contents"` 23 } 24 25 func (f *ClientFilesystemRead) Do(ctx context.Context) error { 26 return daggerutil.Do(ctx, func(c *dagger.Client) error { 27 p := f.Path 28 if strings.HasPrefix(p, "~") { 29 p = fmt.Sprintf("%s%s", os.Getenv("HOME"), p[1:]) 30 } 31 32 contents, err := os.ReadFile(p) 33 if err != nil { 34 return err 35 } 36 if secret := f.Contents.Secret; secret != nil { 37 fsSecret := c.SetSecret(p, string(contents)) 38 39 if err := secret.SetSecretIDBy(ctx, fsSecret); err != nil { 40 return err 41 } 42 f.Contents = core.SecretOrString{ 43 Secret: secret, 44 } 45 } else { 46 f.Contents = core.SecretOrString{ 47 Value: string(contents), 48 } 49 } 50 return nil 51 }) 52 }