From e8788cb26ba216ecc17be2ce81540bdb9ff79960 Mon Sep 17 00:00:00 2001 From: Andrea Luzzardi Date: Fri, 11 Mar 2022 12:52:44 -0800 Subject: [PATCH] dagger do: list actions at the beginning Signed-off-by: Andrea Luzzardi --- cmd/dagger/cmd/do.go | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/cmd/dagger/cmd/do.go b/cmd/dagger/cmd/do.go index 61730f67..ec25d526 100644 --- a/cmd/dagger/cmd/do.go +++ b/cmd/dagger/cmd/do.go @@ -3,6 +3,7 @@ package cmd import ( "context" "fmt" + "io" "os" "path/filepath" "strings" @@ -110,34 +111,44 @@ func getTargetPath(args []string) cue.Path { func doHelpCmd(cmd *cobra.Command, _ []string) { lg := logger.New() - fmt.Printf("%s\n\n%s", cmd.Short, cmd.UsageString()) + fmt.Println(cmd.Short) + + err := printActions(os.Stdout, getTargetPath(cmd.Flags().Args())) + + fmt.Printf("\n%s", cmd.UsageString()) - p, err := loadPlan() if err != nil { lg.Fatal().Err(err).Msg("failed to load plan") } +} + +func printActions(w io.Writer, target cue.Path) error { + p, err := loadPlan() + if err != nil { + return err + } - target := getTargetPath(cmd.Flags().Args()) action := p.Action().FindByPath(target) if action == nil { - lg.Fatal().Msg(fmt.Sprintf("action %s not found", target.String())) - return + return fmt.Errorf("action %s not found", target.String()) } if len(action.Name) < 1 { - return + return nil } fmt.Printf("\nAvailable Actions:\n") - w := tabwriter.NewWriter(os.Stdout, 0, 0, 1, ' ', tabwriter.StripEscape) - defer w.Flush() + tw := tabwriter.NewWriter(w, 0, 0, 1, ' ', tabwriter.StripEscape) + defer tw.Flush() for _, a := range action.Children { if !a.Hidden { lineParts := []string{"", a.Name, a.Documentation} - fmt.Fprintln(w, strings.Join(lineParts, "\t")) + fmt.Fprintln(tw, strings.Join(lineParts, "\t")) } } + + return nil } func init() {