diff --git a/cmd/run_errand.go b/cmd/run_errand.go index 2d5677595..3a7b4a0c2 100644 --- a/cmd/run_errand.go +++ b/cmd/run_errand.go @@ -65,6 +65,8 @@ func (c RunErrandCmd) summarize(errandName string, results []boshdir.ErrandResul Notes: []string{}, + FillFirstColumn: true, + Transpose: true, } diff --git a/cmd/run_errand_test.go b/cmd/run_errand_test.go index 326ff1b62..7a1af200b 100644 --- a/cmd/run_errand_test.go +++ b/cmd/run_errand_test.go @@ -148,6 +148,8 @@ var _ = Describe("RunErrandCmd", func() { Notes: []string{}, + FillFirstColumn: true, + Transpose: true, })) }) @@ -247,6 +249,8 @@ var _ = Describe("RunErrandCmd", func() { Notes: []string{}, + FillFirstColumn: true, + Transpose: true, })) diff --git a/ui/table/table.go b/ui/table/table.go index 0bedcc67b..1dbcb76c3 100644 --- a/ui/table/table.go +++ b/ui/table/table.go @@ -90,12 +90,14 @@ func (t Table) Print(w io.Writer) error { rowCount += len(section.Rows) } + rows := t.AsRows() + if t.Transpose { var newRows [][]Value headerVals := buildHeaderVals(t) - for i, row := range t.Rows { + for i, row := range rows { for j, val := range row { if t.Header[j].Hidden { continue @@ -112,7 +114,7 @@ func (t Table) Print(w io.Writer) error { } } - t.Rows = newRows + rows = newRows t.Header = []Header{ {Hidden: t.DataOnly}, {Hidden: false}, @@ -123,8 +125,6 @@ func (t Table) Print(w io.Writer) error { } } - rows := t.AsRows() - for _, row := range rows { writer.Write(t.Header, row) } diff --git a/ui/table/table_test.go b/ui/table/table_test.go index bd58a3c57..ff82cf88e 100644 --- a/ui/table/table_test.go +++ b/ui/table/table_test.go @@ -543,6 +543,40 @@ Header2|v2| `)) }) + Context("when table also has a SortBy value set", func() { + It("prints as transposed table with sections sorted by the SortBy", func() { + table := Table{ + Content: "errands", + Header: []Header{ + NewHeader("Header1"), + NewHeader("OtherHeader2"), + NewHeader("Header3"), + }, + Rows: [][]Value{ + {ValueString{"r1c1"}, ValueString{"longr1c2"}, ValueString{"r1c3"}}, + {ValueString{"r2c1"}, ValueString{"r2c2"}, ValueString{"r2c3"}}, + }, + SortBy: []ColumnSort{ + {Column: 0, Asc: true}, + }, + BackgroundStr: ".", + BorderStr: "|", + Transpose: true, + } + table.Print(buf) + Expect("\n" + buf.String()).To(Equal(` +Header1.....|r1c1....| +OtherHeader2|longr1c2| +Header3.....|r1c3....| + +Header1.....|r2c1....| +OtherHeader2|r2c2....| +Header3.....|r2c3....| + +2 errands +`)) + }) + }) }) Context("when column filtering is used", func() {