--- 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'
--- 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
--- 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)
}
--- 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
--- 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)
}
--- 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)
}
--- 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)
}
--- 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 ?
--- 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)
}
--- 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
+}
--- 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.