From 84acad870684cfe1c7bb1e83bb3d14d01502c9ba Mon Sep 17 00:00:00 2001 From: Sam Alba Date: Fri, 9 Jul 2021 17:15:46 +0200 Subject: [PATCH] cmd: refacto client creation to use only one (fixes #798) Signed-off-by: Sam Alba --- cmd/dagger/cmd/common/common.go | 8 ++------ cmd/dagger/cmd/compute.go | 7 ++++++- cmd/dagger/cmd/up.go | 22 ++++++++++------------ 3 files changed, 18 insertions(+), 19 deletions(-) diff --git a/cmd/dagger/cmd/common/common.go b/cmd/dagger/cmd/common/common.go index 29a8865a..df55ca8a 100644 --- a/cmd/dagger/cmd/common/common.go +++ b/cmd/dagger/cmd/common/common.go @@ -84,14 +84,10 @@ func CurrentEnvironmentState(ctx context.Context, workspace *state.Workspace) *s } // Re-compute an environment (equivalent to `dagger up`). -func EnvironmentUp(ctx context.Context, state *state.State, noCache bool) *environment.Environment { +func EnvironmentUp(ctx context.Context, cl *client.Client, state *state.State, noCache bool) *environment.Environment { lg := log.Ctx(ctx) - c, err := client.New(ctx, "", noCache) - if err != nil { - lg.Fatal().Err(err).Msg("unable to create client") - } - result, err := c.Do(ctx, state, func(ctx context.Context, environment *environment.Environment, s solver.Solver) error { + result, err := cl.Do(ctx, state, func(ctx context.Context, environment *environment.Environment, s solver.Solver) error { log.Ctx(ctx).Debug().Msg("bringing environment up") return environment.Up(ctx, s) }) diff --git a/cmd/dagger/cmd/compute.go b/cmd/dagger/cmd/compute.go index b0e9829d..cdc2e2da 100644 --- a/cmd/dagger/cmd/compute.go +++ b/cmd/dagger/cmd/compute.go @@ -8,6 +8,7 @@ import ( "strings" "cuelang.org/go/cue" + "go.dagger.io/dagger/client" "go.dagger.io/dagger/cmd/dagger/cmd/common" "go.dagger.io/dagger/cmd/dagger/logger" "go.dagger.io/dagger/compiler" @@ -163,7 +164,11 @@ var computeCmd = &cobra.Command{ } } - environment := common.EnvironmentUp(ctx, st, viper.GetBool("no-cache")) + cl, err := client.New(ctx, "", false) + if err != nil { + lg.Fatal().Err(err).Msg("unable to create client") + } + environment := common.EnvironmentUp(ctx, cl, st, viper.GetBool("no-cache")) v := compiler.NewValue() if err := v.FillPath(cue.MakePath(), environment.Plan()); err != nil { diff --git a/cmd/dagger/cmd/up.go b/cmd/dagger/cmd/up.go index 8acd1210..bafe585e 100644 --- a/cmd/dagger/cmd/up.go +++ b/cmd/dagger/cmd/up.go @@ -38,10 +38,15 @@ var upCmd = &cobra.Command{ workspace := common.CurrentWorkspace(ctx) st := common.CurrentEnvironmentState(ctx, workspace) - // check that all inputs are set - checkInputs(ctx, st) + cl, err := client.New(ctx, "", false) + if err != nil { + lg.Fatal().Err(err).Msg("unable to create client") + } - result := common.EnvironmentUp(ctx, st, viper.GetBool("no-cache")) + // check that all inputs are set + checkInputs(ctx, cl, st) + + result := common.EnvironmentUp(ctx, cl, st, viper.GetBool("no-cache")) st.Computed = result.Computed().JSON().PrettyString() if err := workspace.Save(ctx, st); err != nil { @@ -52,19 +57,12 @@ var upCmd = &cobra.Command{ }, } -func checkInputs(ctx context.Context, st *state.State) { +func checkInputs(ctx context.Context, cl *client.Client, st *state.State) { lg := log.Ctx(ctx) warnOnly := viper.GetBool("force") - // FIXME: find a way to merge this with the EnvironmentUp client to avoid - // creating the client + solver twice - c, err := client.New(ctx, "", false) - if err != nil { - lg.Fatal().Err(err).Msg("unable to create client") - } - notConcreteInputs := []*compiler.Value{} - _, err = c.Do(ctx, st, func(ctx context.Context, env *environment.Environment, s solver.Solver) error { + _, err := cl.Do(ctx, st, func(ctx context.Context, env *environment.Environment, s solver.Solver) error { inputs, err := env.ScanInputs(ctx, true) if err != nil { return err