From 45fcf5fb84bec2e4634dd5a61f9780e244e8f0f6 Mon Sep 17 00:00:00 2001 From: Christine Dodrill Date: Tue, 10 Dec 2019 22:25:41 +0000 Subject: [PATCH] cmd/wasmcloud: show raw logbundles --- cmd/wasmcloud/handler_logs.go | 34 ++++++++++++++++++++++++++++------ cmd/wasmcloud/main.go | 2 +- 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/cmd/wasmcloud/handler_logs.go b/cmd/wasmcloud/handler_logs.go index 25547be..c540b36 100644 --- a/cmd/wasmcloud/handler_logs.go +++ b/cmd/wasmcloud/handler_logs.go @@ -9,16 +9,22 @@ import ( "log" "net/http" "os" + "sort" "github.com/google/subcommands" "within.website/x/writer" ) -type handlerLogsCmd struct{} +type handlerLogsCmd struct { + rawBundle bool +} -func (handlerLogsCmd) SetFlags(fs *flag.FlagSet) {} -func (handlerLogsCmd) Name() string { return "logs" } -func (handlerLogsCmd) Synopsis() string { return "shows logs for a handler" } +func (h *handlerLogsCmd) SetFlags(fs *flag.FlagSet) { + fs.BoolVar(&h.rawBundle, "raw-bundle", false, "if set, dump the entire logbundle") +} + +func (handlerLogsCmd) Name() string { return "logs" } +func (handlerLogsCmd) Synopsis() string { return "shows logs for a handler" } func (handlerLogsCmd) Usage() string { return `wasmcloud logs @@ -28,7 +34,7 @@ Returns all of the logs for a handler. ` } -func (handlerLogsCmd) Execute(ctx context.Context, fs *flag.FlagSet, _ ...interface{}) subcommands.ExitStatus { +func (h handlerLogsCmd) Execute(ctx context.Context, fs *flag.FlagSet, _ ...interface{}) subcommands.ExitStatus { if fs.NArg() != 1 { fmt.Println("usage: wasmcloud create [options] ") return subcommands.ExitUsageError @@ -66,7 +72,23 @@ func (handlerLogsCmd) Execute(ctx context.Context, fs *flag.FlagSet, _ ...interf for _, line := range result { wr := writer.LineSplitting(writer.PrefixWriter(line.ExecID[:5]+" | ", os.Stdout)) - fmt.Fprintln(wr, line.Logs["logs.txt"]) + + if h.rawBundle { + var keys []string + for k := range line.Logs { + keys = append(keys, k) + } + sort.Strings(keys) + + for _, k := range keys { + wr.Write([]byte("-- " + k + " --")) + wr.Write([]byte(line.Logs[k])) + } + + continue + } + + wr.Write([]byte(line.Logs["logs.txt"])) } return subcommands.ExitSuccess diff --git a/cmd/wasmcloud/main.go b/cmd/wasmcloud/main.go index 63226ec..6a9e07c 100644 --- a/cmd/wasmcloud/main.go +++ b/cmd/wasmcloud/main.go @@ -21,7 +21,7 @@ func main() { subcommands.Register(&loginCmd{}, "api") subcommands.Register(&whoamiCmd{}, "api") subcommands.Register(&handlerCreateCmd{}, "handlers") - subcommands.Register(handlerLogsCmd{}, "handlers") + subcommands.Register(&handlerLogsCmd{}, "handlers") subcommands.Register(namegenCmd{}, "utils") subcommands.Register(&runCmd{}, "utils") subcommands.ImportantFlag("api-server")