diff --git a/cmd/drop.go b/cmd/drop.go index 2b33750..658cb7c 100644 --- a/cmd/drop.go +++ b/cmd/drop.go @@ -60,7 +60,7 @@ var dropCmd = &cobra.Command{ return err } - form, err := formatters.New("plain") + form, err := formatters.Preferred() if err != nil { return err } diff --git a/cmd/root.go b/cmd/root.go index 954a3a7..7e7bbbd 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -50,7 +50,7 @@ func init() { // will be global for your application. rootCmd.PersistentFlags().StringVarP(&config.ConfigPath, "config", "c", config.ConfigPath, "config file") - rootCmd.PersistentFlags().StringToStringVarP(&config.Overrides, "config-value", "v", config.Overrides, "Override config values. Use dot syntax to specify key. E.g. -v output.stdout.config.json=true") + rootCmd.PersistentFlags().StringToStringVarP(&config.Overrides, "config-value", "v", config.Overrides, "Override config values. Use dot syntax to specify key. E.g. -v output.stdout.config.formatter=json") // Cobra also supports local flags, which will only run // when this action is called directly. diff --git a/formatters/new.go b/formatters/new.go index 33084e3..d88a9d0 100644 --- a/formatters/new.go +++ b/formatters/new.go @@ -12,6 +12,16 @@ var formatterMap = map[string]formatMaker{ "plain": newPlain, } +func Preferred() (f Formatter, err error) { + conf, err := config.Load() + if err != nil { + return + } + std, _ := conf.Outputs.Stdout() + kind := std.Formatter + return New(kind) +} + func New(kind string) (f Formatter, err error) { conf, err := config.Load() if err != nil { diff --git a/formatters/new_test.go b/formatters/new_test.go index bf91000..04b40fb 100644 --- a/formatters/new_test.go +++ b/formatters/new_test.go @@ -32,4 +32,14 @@ func TestNewCantGetConfig(t *testing.T) { form, err := New("plain") assert.Nil(t, form) assert.Error(t, err) + + form, err = Preferred() + assert.Nil(t, form) + assert.Error(t, err) +} + +func TestPreferred(t *testing.T) { + form, err := Preferred() + assert.NotNil(t, form) + assert.NoError(t, err) }