From d6b6142065cd5aa31c91530d4bc0e7564afa59cd Mon Sep 17 00:00:00 2001 From: Sam Alba Date: Mon, 31 May 2021 16:14:57 +0200 Subject: [PATCH] cmd/up: show outputs at the end of the config execution Signed-off-by: Sam Alba --- cmd/dagger/cmd/output/list.go | 100 ++++++++++++++++++---------------- cmd/dagger/cmd/up.go | 3 + 2 files changed, 56 insertions(+), 47 deletions(-) diff --git a/cmd/dagger/cmd/output/list.go b/cmd/dagger/cmd/output/list.go index 5ab9c9ee..6d10bb1b 100644 --- a/cmd/dagger/cmd/output/list.go +++ b/cmd/dagger/cmd/output/list.go @@ -12,7 +12,9 @@ import ( "go.dagger.io/dagger/cmd/dagger/logger" "go.dagger.io/dagger/environment" "go.dagger.io/dagger/solver" + "go.dagger.io/dagger/state" + "github.com/rs/zerolog/log" "github.com/spf13/cobra" "github.com/spf13/viper" ) @@ -35,56 +37,60 @@ var listCmd = &cobra.Command{ workspace := common.CurrentWorkspace(ctx) st := common.CurrentEnvironmentState(ctx, workspace) - lg = lg.With(). - Str("environment", st.Name). - Logger() - - c, err := client.New(ctx, "", false) - if err != nil { - lg.Fatal().Err(err).Msg("unable to create client") - } - - _, err = c.Do(ctx, st, func(ctx context.Context, env *environment.Environment, s solver.Solver) error { - outputs, err := env.ScanOutputs(ctx) - if err != nil { - return err - } - - w := tabwriter.NewWriter(os.Stdout, 0, 4, 2, ' ', 0) - fmt.Fprintln(w, "Output\tType\tValue\tDescription") - - for _, out := range outputs { - valStr := "-" - - if out.IsConcreteR() == nil { - valStr, err = out.Cue().String() - if err != nil { - return err - } - } else if !viper.GetBool("all") { - continue - } - - valStr = strings.ReplaceAll(valStr, "\n", "\\n") - - fmt.Fprintf(w, "%s\t%s\t%s\t%s\n", - out.Path(), - common.ValueType(out), - valStr, - common.ValueDocString(out), - ) - } - - w.Flush() - return nil - }) - - if err != nil { - lg.Fatal().Err(err).Msg("failed to query environment") - } + ListOutputs(ctx, st, viper.GetBool("all")) }, } +func ListOutputs(ctx context.Context, st *state.State, all bool) { + lg := log.Ctx(ctx).With(). + Str("environment", st.Name). + Logger() + + c, err := client.New(ctx, "", false) + if err != nil { + lg.Fatal().Err(err).Msg("unable to create client") + } + + _, err = c.Do(ctx, st, func(ctx context.Context, env *environment.Environment, s solver.Solver) error { + outputs, err := env.ScanOutputs(ctx) + if err != nil { + return err + } + + w := tabwriter.NewWriter(os.Stdout, 0, 4, 2, ' ', 0) + fmt.Fprintln(w, "Output\tType\tValue\tDescription") + + for _, out := range outputs { + valStr := "-" + + if out.IsConcreteR() == nil { + valStr, err = out.Cue().String() + if err != nil { + return err + } + } else if !all { + continue + } + + valStr = strings.ReplaceAll(valStr, "\n", "\\n") + + fmt.Fprintf(w, "%s\t%s\t%s\t%s\n", + out.Path(), + common.ValueType(out), + valStr, + common.ValueDocString(out), + ) + } + + w.Flush() + return nil + }) + + if err != nil { + lg.Fatal().Err(err).Msg("failed to query environment") + } +} + func init() { listCmd.Flags().BoolP("all", "a", false, "List all outputs (include non-concrete)") diff --git a/cmd/dagger/cmd/up.go b/cmd/dagger/cmd/up.go index 4d26a695..8376da13 100644 --- a/cmd/dagger/cmd/up.go +++ b/cmd/dagger/cmd/up.go @@ -7,6 +7,7 @@ import ( "cuelang.org/go/cue" "go.dagger.io/dagger/client" "go.dagger.io/dagger/cmd/dagger/cmd/common" + "go.dagger.io/dagger/cmd/dagger/cmd/output" "go.dagger.io/dagger/cmd/dagger/logger" "go.dagger.io/dagger/compiler" "go.dagger.io/dagger/environment" @@ -46,6 +47,8 @@ var upCmd = &cobra.Command{ if err := workspace.Save(ctx, st); err != nil { lg.Fatal().Err(err).Msg("failed to update environment") } + + output.ListOutputs(ctx, st, false) }, }