From ae7ad2230f73dc3942bb55a421f501873ba5fd10 Mon Sep 17 00:00:00 2001 From: Cameron Sparr Date: Thu, 22 Oct 2015 14:24:51 -0600 Subject: [PATCH] Support printing output with usage flag too --- cmd/telegraf/telegraf.go | 4 +++- config.go | 21 ++++++++++++++++++--- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/cmd/telegraf/telegraf.go b/cmd/telegraf/telegraf.go index 19156d072..ceed90eaf 100644 --- a/cmd/telegraf/telegraf.go +++ b/cmd/telegraf/telegraf.go @@ -62,7 +62,9 @@ func main() { if *fUsage != "" { if err := telegraf.PrintPluginConfig(*fUsage); err != nil { - log.Fatal(err) + if err2 := telegraf.PrintOutputConfig(*fUsage); err2 != nil { + log.Fatalf("%s and %s", err, err2) + } } return } diff --git a/config.go b/config.go index 60d97f4ff..5f1cbdf96 100644 --- a/config.go +++ b/config.go @@ -325,9 +325,14 @@ func PrintSampleConfig(pluginFilters []string, outputFilters []string) { } } -func printConfig(name string, plugin plugins.Plugin) { - fmt.Printf("\n# %s\n[%s]", plugin.Description(), name) - config := plugin.SampleConfig() +type printer interface { + Description() string + SampleConfig() string +} + +func printConfig(name string, p printer) { + fmt.Printf("\n# %s\n[%s]", p.Description(), name) + config := p.SampleConfig() if config == "" { fmt.Printf("\n # no configuration\n") } else { @@ -354,6 +359,16 @@ func PrintPluginConfig(name string) error { return nil } +// PrintOutputConfig prints the config usage of a single output. +func PrintOutputConfig(name string) error { + if creator, ok := outputs.Outputs[name]; ok { + printConfig(name, creator()) + } else { + return errors.New(fmt.Sprintf("Output %s not found", name)) + } + return nil +} + // Used for fuzzy matching struct field names in FieldByNameFunc calls below func fieldMatch(field string) func(string) bool { return func(name string) bool {