diff --git a/cmd/dagger/cmd/input/dir.go b/cmd/dagger/cmd/input/dir.go index 6e2c250b..0b0177cf 100644 --- a/cmd/dagger/cmd/input/dir.go +++ b/cmd/dagger/cmd/input/dir.go @@ -1,8 +1,6 @@ package input import ( - "path/filepath" - "dagger.io/go/cmd/dagger/logger" "dagger.io/go/dagger" "github.com/spf13/cobra" @@ -24,12 +22,7 @@ var dirCmd = &cobra.Command{ lg := logger.New() ctx := lg.WithContext(cmd.Context()) - path, err := filepath.Abs(args[1]) - if err != nil { - lg.Error().Err(err).Str("path", args[1]).Msg("cannot get absolute path") - } - - updateDeploymentInput(ctx, args[0], dagger.DirInput(path, []string{})) + updateDeploymentInput(ctx, args[0], dagger.DirInput(args[1], []string{})) }, } diff --git a/cmd/dagger/cmd/new.go b/cmd/dagger/cmd/new.go index c20e9811..9c3e3966 100644 --- a/cmd/dagger/cmd/new.go +++ b/cmd/dagger/cmd/new.go @@ -103,11 +103,7 @@ func getPlanSource(ctx context.Context) dagger.Input { if planDir != "" { checkFirstSet() - path, err := filepath.Abs(planDir) - if err != nil { - lg.Error().Err(err).Str("path", planDir).Msg("cannot get absolute path") - } - src = dagger.DirInput(path, []string{"*.cue", "cue.mod"}) + src = dagger.DirInput(planDir, []string{"*.cue", "cue.mod"}) } if planGit != "" { diff --git a/dagger/input.go b/dagger/input.go index a00db28f..9a544bef 100644 --- a/dagger/input.go +++ b/dagger/input.go @@ -3,6 +3,7 @@ package dagger import ( "encoding/json" "fmt" + "path/filepath" "dagger.io/go/dagger/compiler" ) @@ -82,6 +83,13 @@ type dirInput struct { func (dir dirInput) Compile() (*compiler.Value, error) { // FIXME: serialize an intermediate struct, instead of generating cue source + // resolve absolute path + path, err := filepath.Abs(dir.Path) + if err != nil { + return nil, err + } + dir.Path = path + // json.Marshal([]string{}) returns []byte("null"), which wreaks havoc // in Cue because `null` is not a `[...string]` includeLLB := []byte("[]")