# HG changeset patch # User Mikael Berthe # Date 1494353668 -7200 # Node ID 57843255fd1aba552d7badb30aaae862f70df004 # Parent 912e7251108418b8986861d340ee256cc5429b86 Refactor printers diff -r 912e72511084 -r 57843255fd1a cmd/accounts.go --- a/cmd/accounts.go Tue May 09 20:14:28 2017 +0200 +++ b/cmd/accounts.go Tue May 09 20:14:28 2017 +0200 @@ -531,7 +531,7 @@ errPrint("Error: %s", err.Error()) os.Exit(1) } - return p.PrintObj(obj, nil, "") + return p.printObj(obj) } // accountLookupUser tries to find a (single) user matching 'user' diff -r 912e72511084 -r 57843255fd1a cmd/config.go --- a/cmd/config.go Tue May 09 20:14:28 2017 +0200 +++ b/cmd/config.go Tue May 09 20:14:28 2017 +0200 @@ -118,7 +118,7 @@ errPrint("Error: %v", err) os.Exit(1) } - return p.PrintObj(gClient.UserToken, nil, "") + return p.printObj(gClient.UserToken) } // configDisplayThemes lists the available themes diff -r 912e72511084 -r 57843255fd1a cmd/instance.go --- a/cmd/instance.go Tue May 09 20:14:28 2017 +0200 +++ b/cmd/instance.go Tue May 09 20:14:28 2017 +0200 @@ -73,7 +73,7 @@ errPrint("Error: %s", err.Error()) os.Exit(1) } - return p.PrintObj(i, nil, "") + return p.printObj(i) } func instanceStats() error { @@ -126,5 +126,5 @@ errPrint("Error: %s", err.Error()) os.Exit(1) } - return p.PrintObj(obj, nil, "") + return p.printObj(obj) } diff -r 912e72511084 -r 57843255fd1a cmd/media.go --- a/cmd/media.go Tue May 09 20:14:28 2017 +0200 +++ b/cmd/media.go Tue May 09 20:14:28 2017 +0200 @@ -54,7 +54,7 @@ errPrint("Error: %s", err.Error()) os.Exit(1) } - return p.PrintObj(attachment, nil, "") + return p.printObj(attachment) } // uploadFile uploads a media file and returns the attachment ID diff -r 912e72511084 -r 57843255fd1a cmd/notifications.go --- a/cmd/notifications.go Tue May 09 20:14:28 2017 +0200 +++ b/cmd/notifications.go Tue May 09 20:14:28 2017 +0200 @@ -103,5 +103,5 @@ errPrint("Error: %s", err.Error()) os.Exit(1) } - return p.PrintObj(obj, nil, "") + return p.printObj(obj) } diff -r 912e72511084 -r 57843255fd1a cmd/search.go --- a/cmd/search.go Tue May 09 20:14:28 2017 +0200 +++ b/cmd/search.go Tue May 09 20:14:28 2017 +0200 @@ -55,5 +55,5 @@ errPrint("Error: %s", err.Error()) os.Exit(1) } - return p.PrintObj(results, nil, "") + return p.printObj(results) } diff -r 912e72511084 -r 57843255fd1a cmd/status.go --- a/cmd/status.go Tue May 09 20:14:28 2017 +0200 +++ b/cmd/status.go Tue May 09 20:14:28 2017 +0200 @@ -275,5 +275,5 @@ errPrint("Error: %s", err.Error()) os.Exit(1) } - return p.PrintObj(obj, nil, "") + return p.printObj(obj) } diff -r 912e72511084 -r 57843255fd1a cmd/stream.go --- a/cmd/stream.go Tue May 09 20:14:28 2017 +0200 +++ b/cmd/stream.go Tue May 09 20:14:28 2017 +0200 @@ -176,11 +176,11 @@ errPrint("Event: [%s]", ev.Event) case "update": s := ev.Data.(madon.Status) - p.PrintObj(&s, nil, "") + p.printObj(&s) continue case "notification": n := ev.Data.(madon.Notification) - p.PrintObj(&n, nil, "") + p.printObj(&n) continue case "delete": // TODO PrintObj ? diff -r 912e72511084 -r 57843255fd1a cmd/timelines.go --- a/cmd/timelines.go Tue May 09 20:14:28 2017 +0200 +++ b/cmd/timelines.go Tue May 09 20:14:28 2017 +0200 @@ -87,5 +87,5 @@ errPrint("Error: %s", err.Error()) os.Exit(1) } - return p.PrintObj(sl, nil, "") + return p.printObj(sl) } diff -r 912e72511084 -r 57843255fd1a cmd/utils.go --- a/cmd/utils.go Tue May 09 20:14:28 2017 +0200 +++ b/cmd/utils.go Tue May 09 20:14:28 2017 +0200 @@ -47,8 +47,19 @@ return of } +type mcPrinter struct { + printer.ResourcePrinter + command string +} + +type mcResourcePrinter interface { + printer.ResourcePrinter + printObj(interface{}) error + setCommand(string) +} + // getPrinter returns a resource printer for the requested output format. -func getPrinter() (printer.ResourcePrinter, error) { +func getPrinter() (mcResourcePrinter, error) { opt := make(printer.Options) of := getOutputFormat() @@ -75,7 +86,13 @@ opt["template"] = string(tmpl) } } - return printer.NewPrinter(of, opt) + var mcrp mcPrinter + p, err := printer.NewPrinter(of, opt) + if err != nil { + return mcrp, err + } + mcrp.ResourcePrinter = p + return mcrp, nil } func readTemplate(name, templateDir string) ([]byte, error) { @@ -123,3 +140,11 @@ func errPrint(format string, a ...interface{}) (n int, err error) { return fmt.Fprintf(os.Stderr, format+"\n", a...) } + +func (mcp mcPrinter) printObj(obj interface{}) error { + return mcp.PrintObj(obj, nil, "") +} + +func (mcp mcPrinter) setCommand(cmd string) { + mcp.command = cmd +} diff -r 912e72511084 -r 57843255fd1a printer/printer.go --- a/printer/printer.go Tue May 09 20:14:28 2017 +0200 +++ b/printer/printer.go Tue May 09 20:14:28 2017 +0200 @@ -13,6 +13,10 @@ // Options contains options used when creating a ResourcePrinter type Options map[string]string +type commonPrinter struct { + w io.Writer +} + // ResourcePrinter is an interface used to print objects. type ResourcePrinter interface { // PrintObj receives a runtime object, formats it and prints it to a writer.