Allow to output secrets in YAML format

This can be done with https://github.com/ghodss/yaml, which reuses
existing JSON struct tags for YAML.
This commit is contained in:
Mathias Lafeldt 2015-12-10 11:32:31 +01:00
parent 9d574dd5d5
commit 61d4ef70f4
5 changed files with 20 additions and 4 deletions

View File

@ -5,7 +5,9 @@ import (
"encoding/json"
"fmt"
"strconv"
"strings"
"github.com/ghodss/yaml"
"github.com/hashicorp/vault/api"
"github.com/mitchellh/cli"
"github.com/ryanuber/columnize"
@ -15,6 +17,8 @@ func OutputSecret(ui cli.Ui, format string, secret *api.Secret) int {
switch format {
case "json":
return outputFormatJSON(ui, secret)
case "yaml":
return outputFormatYAML(ui, secret)
case "table":
fallthrough
default:
@ -36,6 +40,18 @@ func outputFormatJSON(ui cli.Ui, s *api.Secret) int {
return 0
}
func outputFormatYAML(ui cli.Ui, s *api.Secret) int {
b, err := yaml.Marshal(s)
if err != nil {
ui.Error(fmt.Sprintf(
"Error formatting secret: %s", err))
return 1
}
ui.Output(strings.TrimSpace(string(b)))
return 0
}
func outputFormatTable(ui cli.Ui, s *api.Secret, whitespace bool) int {
config := columnize.DefaultConfig()
config.Delim = "♨"

View File

@ -100,7 +100,7 @@ General Options:
Read Options:
-format=table The format for output. By default it is a whitespace-
delimited table. This can also be json.
delimited table. This can also be json or yaml.
-field=field If included, the raw value of the specified field
will be output raw to stdout.

View File

@ -84,7 +84,7 @@ General Options:
Renew Options:
-format=table The format for output. By default it is a whitespace-
delimited table. This can also be json.
delimited table. This can also be json or yaml.
`
return strings.TrimSpace(helpText)
}

View File

@ -134,7 +134,7 @@ Token Options:
it is automatically revoked.
-format=table The format for output. By default it is a whitespace-
delimited table. This can also be json.
delimited table. This can also be json or yaml.
`
return strings.TrimSpace(helpText)

View File

@ -82,7 +82,7 @@ General Options:
Token Renew Options:
-format=table The format for output. By default it is a whitespace-
delimited table. This can also be json.
delimited table. This can also be json or yaml.
`
return strings.TrimSpace(helpText)