aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorumohnani8 <umohnani@redhat.com>2018-02-05 10:15:36 -0500
committerumohnani8 <umohnani@redhat.com>2018-02-07 10:43:16 -0500
commit363cfcb0ce1477249a40861ef936f377b95aaf09 (patch)
treefde73614f43b40592b46a65920ce02d22d5fb4ce
parent3f0170227d40b154205eb9f787e6f0254d75749e (diff)
downloadpodman-363cfcb0ce1477249a40861ef936f377b95aaf09.tar.gz
podman-363cfcb0ce1477249a40861ef936f377b95aaf09.tar.bz2
podman-363cfcb0ce1477249a40861ef936f377b95aaf09.zip
Fix when the --format flag prints a new line at the end
If the output is to a terminal, return a new line at the end of the output so that the output is visually appealing. If the output is being piped, or saved to a file, basically not being outputted to a terminal, do not print a new line at the end of the output. This ensures any further data manipulation with the results happens smoothly without requiring to remember the '/n' at the end of the output. Signed-off-by: umohnani8 <umohnani@redhat.com>
-rw-r--r--cmd/podman/formats/formats.go30
-rw-r--r--test/e2e/images_test.go4
-rw-r--r--test/e2e/import_test.go2
-rw-r--r--test/e2e/ps_test.go3
4 files changed, 29 insertions, 10 deletions
diff --git a/cmd/podman/formats/formats.go b/cmd/podman/formats/formats.go
index 4b6527b30..bfd773c45 100644
--- a/cmd/podman/formats/formats.go
+++ b/cmd/podman/formats/formats.go
@@ -11,6 +11,7 @@ import (
"github.com/ghodss/yaml"
"github.com/pkg/errors"
+ "golang.org/x/crypto/ssh/terminal"
)
const (
@@ -70,7 +71,8 @@ func (j JSONStructArray) Out() error {
// If the we did get NULL back, we should spit out {} which is
// at least valid JSON for the consumer.
- fmt.Printf("%s\n", data)
+ fmt.Printf("%s", data)
+ humanNewLine()
return nil
}
@@ -95,13 +97,20 @@ func (t StdoutTemplateArray) Out() error {
if err != nil {
return errors.Wrapf(err, "Template parsing error")
}
- for _, img := range t.Output {
+ for i, img := range t.Output {
basicTmpl := tmpl.Funcs(basicFunctions)
err = basicTmpl.Execute(w, img)
if err != nil {
return err
}
- fmt.Fprintln(w, "")
+ if i != len(t.Output)-1 {
+ fmt.Fprintln(w, "")
+ continue
+ }
+ // Only print new line at the end of the output if stdout is the terminal
+ if terminal.IsTerminal(int(os.Stdout.Fd())) {
+ fmt.Fprintln(w, "")
+ }
}
return w.Flush()
}
@@ -112,7 +121,8 @@ func (j JSONStruct) Out() error {
if err != nil {
return err
}
- fmt.Printf("%s\n", data)
+ fmt.Printf("%s", data)
+ humanNewLine()
return nil
}
@@ -126,7 +136,7 @@ func (t StdoutTemplate) Out() error {
if err != nil {
return err
}
- fmt.Println()
+ humanNewLine()
return nil
}
@@ -138,6 +148,14 @@ func (y YAMLStruct) Out() error {
if err != nil {
return err
}
- fmt.Println(string(buf))
+ 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()
+ }
+}
diff --git a/test/e2e/images_test.go b/test/e2e/images_test.go
index 099331c94..4c7c93e4b 100644
--- a/test/e2e/images_test.go
+++ b/test/e2e/images_test.go
@@ -32,7 +32,7 @@ var _ = Describe("Podman images", func() {
session := podmanTest.Podman([]string{"images"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
- Expect(len(session.OutputToStringArray())).To(BeNumerically(">", 3))
+ Expect(len(session.OutputToStringArray())).To(BeNumerically(">", 2))
Expect(session.LineInOuputStartsWith("docker.io/library/alpine")).To(BeTrue())
Expect(session.LineInOuputStartsWith("docker.io/library/busybox")).To(BeTrue())
})
@@ -48,6 +48,6 @@ var _ = Describe("Podman images", func() {
session := podmanTest.Podman([]string{"images", "-qn"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
- Expect(len(session.OutputToStringArray())).To(BeNumerically(">", 2))
+ Expect(len(session.OutputToStringArray())).To(BeNumerically(">", 1))
})
})
diff --git a/test/e2e/import_test.go b/test/e2e/import_test.go
index 23208ca62..448a89539 100644
--- a/test/e2e/import_test.go
+++ b/test/e2e/import_test.go
@@ -62,7 +62,7 @@ var _ = Describe("Podman import", func() {
results := podmanTest.Podman([]string{"images", "-q"})
results.WaitWithDefaultTimeout()
Expect(results.ExitCode()).To(Equal(0))
- Expect(len(results.OutputToStringArray())).To(Equal(4))
+ Expect(len(results.OutputToStringArray())).To(Equal(3))
})
It("podman import with message flag", func() {
diff --git a/test/e2e/ps_test.go b/test/e2e/ps_test.go
index d0aa0bd7c..c4f23c944 100644
--- a/test/e2e/ps_test.go
+++ b/test/e2e/ps_test.go
@@ -4,6 +4,7 @@ import (
"os"
"fmt"
+
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
@@ -100,7 +101,7 @@ var _ = Describe("Podman ps", func() {
result := podmanTest.Podman([]string{"ps", "--last", "2"})
result.WaitWithDefaultTimeout()
Expect(result.ExitCode()).To(Equal(0))
- Expect(len(result.OutputToStringArray())).Should(Equal(4))
+ Expect(len(result.OutputToStringArray())).Should(Equal(3))
})
It("podman ps no-trunc", func() {