aboutsummaryrefslogtreecommitdiff
path: root/cmd/podman/formats/formats.go
diff options
context:
space:
mode:
authorOpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com>2019-03-11 17:56:58 -0700
committerGitHub <noreply@github.com>2019-03-11 17:56:58 -0700
commitdcd253f2e4da25e7e5af33bef4de5529162a7c1b (patch)
tree93d6028a81bf6a3979134ac66384e615ddf0cc4d /cmd/podman/formats/formats.go
parentdec36f2d0b940f7c144dd5617b3cb5bd31fd2bc5 (diff)
parente3d8e79d9569f3e328facac7978ed3c2ad786eb7 (diff)
downloadpodman-dcd253f2e4da25e7e5af33bef4de5529162a7c1b.tar.gz
podman-dcd253f2e4da25e7e5af33bef4de5529162a7c1b.tar.bz2
podman-dcd253f2e4da25e7e5af33bef4de5529162a7c1b.zip
Merge pull request #2609 from QiWang19/moveformats
move formats pkg to and vendor from buildah
Diffstat (limited to 'cmd/podman/formats/formats.go')
-rw-r--r--cmd/podman/formats/formats.go171
1 files changed, 0 insertions, 171 deletions
diff --git a/cmd/podman/formats/formats.go b/cmd/podman/formats/formats.go
deleted file mode 100644
index 37f9b8a20..000000000
--- a/cmd/podman/formats/formats.go
+++ /dev/null
@@ -1,171 +0,0 @@
-package formats
-
-import (
- "bytes"
- "encoding/json"
- "fmt"
- "io"
- "os"
- "strings"
- "text/tabwriter"
- "text/template"
-
- "github.com/ghodss/yaml"
- "github.com/pkg/errors"
- "golang.org/x/crypto/ssh/terminal"
-)
-
-const (
- // JSONString const to save on duplicate variable names
- JSONString = "json"
- // IDString const to save on duplicates for Go templates
- IDString = "{{.ID}}"
-
- parsingErrorStr = "Template parsing error"
-)
-
-// Writer interface for outputs
-type Writer interface {
- Out() error
-}
-
-// JSONStructArray for JSON output
-type JSONStructArray struct {
- Output []interface{}
-}
-
-// StdoutTemplateArray for Go template output
-type StdoutTemplateArray struct {
- Output []interface{}
- Template string
- Fields map[string]string
-}
-
-// JSONStruct for JSON output
-type JSONStruct struct {
- Output interface{}
-}
-
-// StdoutTemplate for Go template output
-type StdoutTemplate struct {
- Output interface{}
- Template string
- Fields map[string]string
-}
-
-// YAMLStruct for YAML output
-type YAMLStruct struct {
- Output interface{}
-}
-
-func setJSONFormatEncoder(isTerminal bool, w io.Writer) *json.Encoder {
- enc := json.NewEncoder(w)
- enc.SetIndent("", " ")
- if isTerminal {
- enc.SetEscapeHTML(false)
- }
- return enc
-}
-
-// Out method for JSON Arrays
-func (j JSONStructArray) Out() error {
- buf := bytes.NewBuffer(nil)
- enc := setJSONFormatEncoder(terminal.IsTerminal(int(os.Stdout.Fd())), buf)
- if err := enc.Encode(j.Output); err != nil {
- return err
- }
- data := buf.Bytes()
-
- // JSON returns a byte array with a literal null [110 117 108 108] in it
- // if it is passed empty data. We used bytes.Compare to see if that is
- // the case.
- if diff := bytes.Compare(data, []byte("null")); diff == 0 {
- data = []byte("[]")
- }
-
- // If the we did get NULL back, we should spit out {} which is
- // at least valid JSON for the consumer.
- fmt.Printf("%s", data)
- humanNewLine()
- return nil
-}
-
-// Out method for Go templates
-func (t StdoutTemplateArray) Out() error {
- w := tabwriter.NewWriter(os.Stdout, 0, 0, 3, ' ', 0)
- if strings.HasPrefix(t.Template, "table") {
- // replace any spaces with tabs in template so that tabwriter can align it
- t.Template = strings.Replace(strings.TrimSpace(t.Template[5:]), " ", "\t", -1)
- headerTmpl, err := template.New("header").Funcs(headerFunctions).Parse(t.Template)
- if err != nil {
- return errors.Wrapf(err, parsingErrorStr)
- }
- err = headerTmpl.Execute(w, t.Fields)
- if err != nil {
- return err
- }
- fmt.Fprintln(w, "")
- }
- t.Template = strings.Replace(t.Template, " ", "\t", -1)
- tmpl, err := template.New("image").Funcs(basicFunctions).Parse(t.Template)
- if err != nil {
- return errors.Wrapf(err, parsingErrorStr)
- }
- for i, raw := range t.Output {
- basicTmpl := tmpl.Funcs(basicFunctions)
- if err := basicTmpl.Execute(w, raw); err != nil {
- return errors.Wrapf(err, parsingErrorStr)
- }
- if i != len(t.Output)-1 {
- fmt.Fprintln(w, "")
- continue
- }
- }
- fmt.Fprintln(w, "")
- return w.Flush()
-}
-
-// Out method for JSON struct
-func (j JSONStruct) Out() error {
- data, err := json.MarshalIndent(j.Output, "", " ")
- if err != nil {
- return err
- }
- fmt.Printf("%s", data)
- humanNewLine()
- return nil
-}
-
-//Out method for Go templates
-func (t StdoutTemplate) Out() error {
- tmpl, err := template.New("image").Parse(t.Template)
- if err != nil {
- return errors.Wrapf(err, "template parsing error")
- }
- err = tmpl.Execute(os.Stdout, t.Output)
- if err != nil {
- return err
- }
- humanNewLine()
- return nil
-}
-
-// Out method for YAML
-func (y YAMLStruct) Out() error {
- var buf []byte
- var err error
- buf, err = yaml.Marshal(y.Output)
- if err != nil {
- return err
- }
- fmt.Printf("%s", string(buf))
- humanNewLine()
- return nil
-}
-
-// humanNewLine prints a new line at the end of the output only if stdout is the terminal
-func humanNewLine() {
- if terminal.IsTerminal(int(os.Stdout.Fd())) {
- fmt.Println()
- }
-}