cmd/config.go
author Mikael Berthe <mikael@lilotux.net>
Sun, 13 Jan 2019 12:58:50 +0100
changeset 245 910f00ab2799
parent 244 a01bc98ae01a
child 265 05c40b36d3b2
permissions -rw-r--r--
Fix oauth2 not displaying the new token If the configuration file contains an old token, this token was displayed after an oauth2 renewal instead of the new one.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
185
564d92b54b00 Update copyrights
Mikael Berthe <mikael@lilotux.net>
parents: 136
diff changeset
     1
// Copyright © 2017-2018 Mikael Berthe <mikael@lilotux.net>
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     2
//
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     3
// Licensed under the MIT license.
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     4
// Please see the LICENSE file is this directory.
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     5
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     6
package cmd
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     7
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     8
import (
10
e4c490882126 Don't dump the configuration file if login failed
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
     9
	"os"
e4c490882126 Don't dump the configuration file if login failed
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
    10
114
590c9dd7328e Improve config dump output
Mikael Berthe <mikael@lilotux.net>
parents: 113
diff changeset
    11
	"github.com/mattn/go-isatty"
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    12
	"github.com/spf13/cobra"
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    13
	"github.com/spf13/viper"
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    14
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    15
	"github.com/McKael/madonctl/printer"
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    16
)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    17
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    18
var configCmd = &cobra.Command{
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    19
	Use:   "config",
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    20
	Short: "Display configuration",
127
2b4d0f198a94 Update online documention to config and oauth2 commands
Mikael Berthe <mikael@lilotux.net>
parents: 114
diff changeset
    21
	Long: `Display configuration
2b4d0f198a94 Update online documention to config and oauth2 commands
Mikael Berthe <mikael@lilotux.net>
parents: 114
diff changeset
    22
2b4d0f198a94 Update online documention to config and oauth2 commands
Mikael Berthe <mikael@lilotux.net>
parents: 114
diff changeset
    23
Display current configuration.  You can use this command to generate an
2b4d0f198a94 Update online documention to config and oauth2 commands
Mikael Berthe <mikael@lilotux.net>
parents: 114
diff changeset
    24
initial configuration file (see the examples below).
2b4d0f198a94 Update online documention to config and oauth2 commands
Mikael Berthe <mikael@lilotux.net>
parents: 114
diff changeset
    25
2b4d0f198a94 Update online documention to config and oauth2 commands
Mikael Berthe <mikael@lilotux.net>
parents: 114
diff changeset
    26
This command is disabled if the safe_mode setting is set to true in the
2b4d0f198a94 Update online documention to config and oauth2 commands
Mikael Berthe <mikael@lilotux.net>
parents: 114
diff changeset
    27
configuration file.`,
2b4d0f198a94 Update online documention to config and oauth2 commands
Mikael Berthe <mikael@lilotux.net>
parents: 114
diff changeset
    28
	Example: `  madonctl config dump -i INSTANCE -L USERNAME -P PASS > config.yaml
2b4d0f198a94 Update online documention to config and oauth2 commands
Mikael Berthe <mikael@lilotux.net>
parents: 114
diff changeset
    29
  madonctl whoami
2b4d0f198a94 Update online documention to config and oauth2 commands
Mikael Berthe <mikael@lilotux.net>
parents: 114
diff changeset
    30
  madonctl whoami --template '{{.access_token}}'`,
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    31
}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    32
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    33
func init() {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    34
	RootCmd.AddCommand(configCmd)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    35
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    36
	// Subcommands
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    37
	configCmd.AddCommand(configSubcommands...)
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    38
}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    39
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    40
var configSubcommands = []*cobra.Command{
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    41
	&cobra.Command{
127
2b4d0f198a94 Update online documention to config and oauth2 commands
Mikael Berthe <mikael@lilotux.net>
parents: 114
diff changeset
    42
		Use:     "dump",
2b4d0f198a94 Update online documention to config and oauth2 commands
Mikael Berthe <mikael@lilotux.net>
parents: 114
diff changeset
    43
		Short:   "Dump the configuration",
2b4d0f198a94 Update online documention to config and oauth2 commands
Mikael Berthe <mikael@lilotux.net>
parents: 114
diff changeset
    44
		Example: `  madonctl config dump -i INSTANCE -L USERNAME -P PASS > config.yaml`,
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    45
		RunE: func(cmd *cobra.Command, args []string) error {
244
a01bc98ae01a Display config details after oauth2
Mikael Berthe <mikael@lilotux.net>
parents: 185
diff changeset
    46
			return configDump(false)
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    47
		},
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    48
	},
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    49
	&cobra.Command{
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    50
		Use:     "whoami",
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    51
		Aliases: []string{"token"},
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    52
		Short:   "Display user token",
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    53
		RunE: func(cmd *cobra.Command, args []string) error {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    54
			return configDisplayToken()
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    55
		},
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    56
	},
91
02312ccc1fd3 Add shell completion for theme flag
Mikael Berthe <mikael@lilotux.net>
parents: 83
diff changeset
    57
	&cobra.Command{
02312ccc1fd3 Add shell completion for theme flag
Mikael Berthe <mikael@lilotux.net>
parents: 83
diff changeset
    58
		Use: "themes",
02312ccc1fd3 Add shell completion for theme flag
Mikael Berthe <mikael@lilotux.net>
parents: 83
diff changeset
    59
		//Aliases: []string{},
02312ccc1fd3 Add shell completion for theme flag
Mikael Berthe <mikael@lilotux.net>
parents: 83
diff changeset
    60
		Short: "Display available themes",
02312ccc1fd3 Add shell completion for theme flag
Mikael Berthe <mikael@lilotux.net>
parents: 83
diff changeset
    61
		RunE: func(cmd *cobra.Command, args []string) error {
02312ccc1fd3 Add shell completion for theme flag
Mikael Berthe <mikael@lilotux.net>
parents: 83
diff changeset
    62
			return configDisplayThemes()
02312ccc1fd3 Add shell completion for theme flag
Mikael Berthe <mikael@lilotux.net>
parents: 83
diff changeset
    63
		},
02312ccc1fd3 Add shell completion for theme flag
Mikael Berthe <mikael@lilotux.net>
parents: 83
diff changeset
    64
	},
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    65
}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    66
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    67
const configurationTemplate = `---
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    68
instance: '{{.InstanceURL}}'
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    69
app_id: '{{.ID}}'
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    70
app_secret: '{{.Secret}}'
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    71
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    72
{{if .UserToken}}token: {{.UserToken.access_token}}{{else}}#token: ''{{end}}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    73
#login: ''
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    74
#password: ''
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    75
safe_mode: true
136
32430612b929 config dump: Display all available settings
Mikael Berthe <mikael@lilotux.net>
parents: 127
diff changeset
    76
32430612b929 config dump: Display all available settings
Mikael Berthe <mikael@lilotux.net>
parents: 127
diff changeset
    77
#default_visibility: unlisted
32430612b929 config dump: Display all available settings
Mikael Berthe <mikael@lilotux.net>
parents: 127
diff changeset
    78
32430612b929 config dump: Display all available settings
Mikael Berthe <mikael@lilotux.net>
parents: 127
diff changeset
    79
#template_directory: ''
32430612b929 config dump: Display all available settings
Mikael Berthe <mikael@lilotux.net>
parents: 127
diff changeset
    80
#default_output: theme
32430612b929 config dump: Display all available settings
Mikael Berthe <mikael@lilotux.net>
parents: 127
diff changeset
    81
#default_theme: ansi
32430612b929 config dump: Display all available settings
Mikael Berthe <mikael@lilotux.net>
parents: 127
diff changeset
    82
#color: auto
32430612b929 config dump: Display all available settings
Mikael Berthe <mikael@lilotux.net>
parents: 127
diff changeset
    83
#verbose: false
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    84
...
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    85
`
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    86
245
910f00ab2799 Fix oauth2 not displaying the new token
Mikael Berthe <mikael@lilotux.net>
parents: 244
diff changeset
    87
func configDump(oauth2 bool) error {
910f00ab2799 Fix oauth2 not displaying the new token
Mikael Berthe <mikael@lilotux.net>
parents: 244
diff changeset
    88
	if !oauth2 {
910f00ab2799 Fix oauth2 not displaying the new token
Mikael Berthe <mikael@lilotux.net>
parents: 244
diff changeset
    89
		if viper.GetBool("safe_mode") {
910f00ab2799 Fix oauth2 not displaying the new token
Mikael Berthe <mikael@lilotux.net>
parents: 244
diff changeset
    90
			errPrint("Cannot dump: disabled by configuration (safe_mode)")
910f00ab2799 Fix oauth2 not displaying the new token
Mikael Berthe <mikael@lilotux.net>
parents: 244
diff changeset
    91
			return nil
910f00ab2799 Fix oauth2 not displaying the new token
Mikael Berthe <mikael@lilotux.net>
parents: 244
diff changeset
    92
		}
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    93
245
910f00ab2799 Fix oauth2 not displaying the new token
Mikael Berthe <mikael@lilotux.net>
parents: 244
diff changeset
    94
		if err := madonInitClient(); err != nil {
910f00ab2799 Fix oauth2 not displaying the new token
Mikael Berthe <mikael@lilotux.net>
parents: 244
diff changeset
    95
			return err
910f00ab2799 Fix oauth2 not displaying the new token
Mikael Berthe <mikael@lilotux.net>
parents: 244
diff changeset
    96
		}
910f00ab2799 Fix oauth2 not displaying the new token
Mikael Berthe <mikael@lilotux.net>
parents: 244
diff changeset
    97
910f00ab2799 Fix oauth2 not displaying the new token
Mikael Berthe <mikael@lilotux.net>
parents: 244
diff changeset
    98
		// Try to sign in if a login was provided
910f00ab2799 Fix oauth2 not displaying the new token
Mikael Berthe <mikael@lilotux.net>
parents: 244
diff changeset
    99
		if viper.GetString("token") != "" || viper.GetString("login") != "" {
910f00ab2799 Fix oauth2 not displaying the new token
Mikael Berthe <mikael@lilotux.net>
parents: 244
diff changeset
   100
			if err := madonLogin(); err != nil {
910f00ab2799 Fix oauth2 not displaying the new token
Mikael Berthe <mikael@lilotux.net>
parents: 244
diff changeset
   101
				errPrint("Error: could not log in: %v", err)
910f00ab2799 Fix oauth2 not displaying the new token
Mikael Berthe <mikael@lilotux.net>
parents: 244
diff changeset
   102
				os.Exit(-1)
910f00ab2799 Fix oauth2 not displaying the new token
Mikael Berthe <mikael@lilotux.net>
parents: 244
diff changeset
   103
			}
10
e4c490882126 Don't dump the configuration file if login failed
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
   104
		}
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   105
	}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   106
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   107
	var p printer.ResourcePrinter
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   108
	var err error
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   109
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   110
	if getOutputFormat() == "plain" {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   111
		cfile := viper.ConfigFileUsed()
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   112
		if cfile == "" {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   113
			cfile = defaultConfigFile
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   114
		}
114
590c9dd7328e Improve config dump output
Mikael Berthe <mikael@lilotux.net>
parents: 113
diff changeset
   115
		if isatty.IsTerminal(os.Stdout.Fd()) {
590c9dd7328e Improve config dump output
Mikael Berthe <mikael@lilotux.net>
parents: 113
diff changeset
   116
			errPrint("You can copy the following lines into a configuration file.")
590c9dd7328e Improve config dump output
Mikael Berthe <mikael@lilotux.net>
parents: 113
diff changeset
   117
			errPrint("E.g. %s -i INSTANCE -L USERNAME -P PASS config dump > %s", AppName, cfile)
590c9dd7328e Improve config dump output
Mikael Berthe <mikael@lilotux.net>
parents: 113
diff changeset
   118
			errPrint(" or  %s -i INSTANCE oauth2 > %s\n", AppName, cfile)
590c9dd7328e Improve config dump output
Mikael Berthe <mikael@lilotux.net>
parents: 113
diff changeset
   119
		}
83
57afac822019 Use a map for ResourcePrinter options
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   120
		pOptions := printer.Options{"template": configurationTemplate}
57afac822019 Use a map for ResourcePrinter options
Mikael Berthe <mikael@lilotux.net>
parents: 81
diff changeset
   121
		p, err = printer.NewPrinterTemplate(pOptions)
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   122
	} else {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   123
		p, err = getPrinter()
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   124
	}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   125
	if err != nil {
91
02312ccc1fd3 Add shell completion for theme flag
Mikael Berthe <mikael@lilotux.net>
parents: 83
diff changeset
   126
		errPrint("Error: %v", err)
81
b1671f83e91b Do not display usage when GetPrinter fails
Mikael Berthe <mikael@lilotux.net>
parents: 10
diff changeset
   127
		os.Exit(1)
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   128
	}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   129
	return p.PrintObj(gClient, nil, "")
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   130
}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   131
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   132
func configDisplayToken() error {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   133
	if viper.GetBool("safe_mode") {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   134
		errPrint("Cannot dump: disabled by configuration (safe_mode)")
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   135
		return nil
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   136
	}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   137
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   138
	if err := madonInit(true); err != nil {
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   139
		return err
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   140
	}
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   141
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   142
	p, err := getPrinter()
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   143
	if err != nil {
91
02312ccc1fd3 Add shell completion for theme flag
Mikael Berthe <mikael@lilotux.net>
parents: 83
diff changeset
   144
		errPrint("Error: %v", err)
81
b1671f83e91b Do not display usage when GetPrinter fails
Mikael Berthe <mikael@lilotux.net>
parents: 10
diff changeset
   145
		os.Exit(1)
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   146
	}
110
57843255fd1a Refactor printers
Mikael Berthe <mikael@lilotux.net>
parents: 91
diff changeset
   147
	return p.printObj(gClient.UserToken)
0
5abace724584 Initial public release
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   148
}
91
02312ccc1fd3 Add shell completion for theme flag
Mikael Berthe <mikael@lilotux.net>
parents: 83
diff changeset
   149
02312ccc1fd3 Add shell completion for theme flag
Mikael Berthe <mikael@lilotux.net>
parents: 83
diff changeset
   150
// configDisplayThemes lists the available themes
02312ccc1fd3 Add shell completion for theme flag
Mikael Berthe <mikael@lilotux.net>
parents: 83
diff changeset
   151
// It is intended for shell completion.
02312ccc1fd3 Add shell completion for theme flag
Mikael Berthe <mikael@lilotux.net>
parents: 83
diff changeset
   152
func configDisplayThemes() error {
02312ccc1fd3 Add shell completion for theme flag
Mikael Berthe <mikael@lilotux.net>
parents: 83
diff changeset
   153
	var p printer.ResourcePrinter
02312ccc1fd3 Add shell completion for theme flag
Mikael Berthe <mikael@lilotux.net>
parents: 83
diff changeset
   154
02312ccc1fd3 Add shell completion for theme flag
Mikael Berthe <mikael@lilotux.net>
parents: 83
diff changeset
   155
	themes, err := getThemes()
02312ccc1fd3 Add shell completion for theme flag
Mikael Berthe <mikael@lilotux.net>
parents: 83
diff changeset
   156
	if err != nil {
02312ccc1fd3 Add shell completion for theme flag
Mikael Berthe <mikael@lilotux.net>
parents: 83
diff changeset
   157
		errPrint("Error: %v", err)
02312ccc1fd3 Add shell completion for theme flag
Mikael Berthe <mikael@lilotux.net>
parents: 83
diff changeset
   158
		os.Exit(1)
02312ccc1fd3 Add shell completion for theme flag
Mikael Berthe <mikael@lilotux.net>
parents: 83
diff changeset
   159
	}
02312ccc1fd3 Add shell completion for theme flag
Mikael Berthe <mikael@lilotux.net>
parents: 83
diff changeset
   160
02312ccc1fd3 Add shell completion for theme flag
Mikael Berthe <mikael@lilotux.net>
parents: 83
diff changeset
   161
	if getOutputFormat() == "plain" {
02312ccc1fd3 Add shell completion for theme flag
Mikael Berthe <mikael@lilotux.net>
parents: 83
diff changeset
   162
		pOptions := printer.Options{"template": `{{printf "%s\n" .}}`}
02312ccc1fd3 Add shell completion for theme flag
Mikael Berthe <mikael@lilotux.net>
parents: 83
diff changeset
   163
		p, err = printer.NewPrinterTemplate(pOptions)
02312ccc1fd3 Add shell completion for theme flag
Mikael Berthe <mikael@lilotux.net>
parents: 83
diff changeset
   164
	} else {
02312ccc1fd3 Add shell completion for theme flag
Mikael Berthe <mikael@lilotux.net>
parents: 83
diff changeset
   165
		p, err = getPrinter()
02312ccc1fd3 Add shell completion for theme flag
Mikael Berthe <mikael@lilotux.net>
parents: 83
diff changeset
   166
	}
02312ccc1fd3 Add shell completion for theme flag
Mikael Berthe <mikael@lilotux.net>
parents: 83
diff changeset
   167
	if err != nil {
02312ccc1fd3 Add shell completion for theme flag
Mikael Berthe <mikael@lilotux.net>
parents: 83
diff changeset
   168
		errPrint("Error: %v", err)
02312ccc1fd3 Add shell completion for theme flag
Mikael Berthe <mikael@lilotux.net>
parents: 83
diff changeset
   169
		os.Exit(1)
02312ccc1fd3 Add shell completion for theme flag
Mikael Berthe <mikael@lilotux.net>
parents: 83
diff changeset
   170
	}
02312ccc1fd3 Add shell completion for theme flag
Mikael Berthe <mikael@lilotux.net>
parents: 83
diff changeset
   171
	return p.PrintObj(themes, nil, "")
02312ccc1fd3 Add shell completion for theme flag
Mikael Berthe <mikael@lilotux.net>
parents: 83
diff changeset
   172
}