From 9eb8ae7fa84f91cd482b214c78153fc397cd3d2d Mon Sep 17 00:00:00 2001 From: Carlos Panato Date: Thu, 17 Jul 2025 15:19:06 +0200 Subject: [PATCH 1/2] add more wrapper fiunc for tablewriter Signed-off-by: Carlos Panato --- util/tablewriter.go | 42 ++++++++++++++++++++++++++++++++++++++++ util/tablewriter_test.go | 38 ++++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) diff --git a/util/tablewriter.go b/util/tablewriter.go index ed09c19..89f80ef 100644 --- a/util/tablewriter.go +++ b/util/tablewriter.go @@ -20,6 +20,8 @@ import ( "io" "github.com/olekukonko/tablewriter" + "github.com/olekukonko/tablewriter/renderer" + "github.com/olekukonko/tablewriter/tw" ) // NewTableWriter creates a new table writer with the given output and options. @@ -31,3 +33,43 @@ func NewTableWriter(output io.Writer, options ...tablewriter.Option) *tablewrite return table } + +// NewTableWriterWithDefaults creates a new table writer with default markdown configuration. +// It includes left alignment, markdown renderer, and custom borders optimized for terminal output. +func NewTableWriterWithDefaults(output io.Writer, options ...tablewriter.Option) *tablewriter.Table { + defaultOptions := []tablewriter.Option{ + tablewriter.WithConfig(tablewriter.Config{ + Header: tw.CellConfig{ + Alignment: tw.CellAlignment{Global: tw.AlignLeft}, + }, + }), + tablewriter.WithRenderer(renderer.NewMarkdown()), + tablewriter.WithRendition(tw.Rendition{ + Symbols: tw.NewSymbols(tw.StyleMarkdown), + Borders: tw.Border{ + Left: tw.On, + Top: tw.Off, + Right: tw.On, + Bottom: tw.Off, + }, + Settings: tw.Settings{ + Separators: tw.Separators{ + BetweenRows: tw.On, + }, + }, + }), + tablewriter.WithRowAutoWrap(tw.WrapNone), + } + + defaultOptions = append(defaultOptions, options...) + + return NewTableWriter(output, defaultOptions...) +} + +// NewTableWriterWithDefaultsAndHeader creates a new table writer with default configuration and header. +func NewTableWriterWithDefaultsAndHeader(output io.Writer, header []string, options ...tablewriter.Option) *tablewriter.Table { + headerOption := tablewriter.WithHeader(header) + allOptions := append([]tablewriter.Option{headerOption}, options...) + + return NewTableWriterWithDefaults(output, allOptions...) +} diff --git a/util/tablewriter_test.go b/util/tablewriter_test.go index ccdedcc..211467d 100644 --- a/util/tablewriter_test.go +++ b/util/tablewriter_test.go @@ -161,3 +161,41 @@ func TestNewTableWriter(t *testing.T) { compareGolden(t, output.String(), "multiple_rows.golden") }) } + +func TestNewTableWriterWithDefaults(t *testing.T) { + t.Parallel() + + t.Run("WithDefaults", func(t *testing.T) { + t.Parallel() + + var output bytes.Buffer + + table := NewTableWriterWithDefaults(&output) + + require.NotNil(t, table) + require.IsType(t, &tablewriter.Table{}, table) + }) + + t.Run("WithDefaultsAndHeader", func(t *testing.T) { + t.Parallel() + + var output bytes.Buffer + + header := []string{"TESTGRID BOARD", "TITLE", "STATUS", "STATUS DETAILS"} + table := NewTableWriterWithDefaultsAndHeader(&output, header) + + require.NotNil(t, table) + require.IsType(t, &tablewriter.Table{}, table) + }) + + t.Run("WithDefaultsAndAdditionalOptions", func(t *testing.T) { + t.Parallel() + + var output bytes.Buffer + + table := NewTableWriterWithDefaults(&output, tablewriter.WithMaxWidth(100)) + + require.NotNil(t, table) + require.IsType(t, &tablewriter.Table{}, table) + }) +} From dde8abd3a67b6f7d05bb98972bece93acfab31bb Mon Sep 17 00:00:00 2001 From: Carlos Panato Date: Fri, 18 Jul 2025 12:52:30 +0200 Subject: [PATCH 2/2] rename pkg util to helpers Signed-off-by: Carlos Panato --- {util => helpers}/common.go | 2 +- {util => helpers}/common_test.go | 2 +- {util => helpers}/doc.go | 2 +- {util => helpers}/tablewriter.go | 2 +- {util => helpers}/tablewriter_test.go | 2 +- {util => helpers}/testdata/empty_table.golden | 0 {util => helpers}/testdata/multiple_rows.golden | 0 {util => helpers}/testdata/no_options.golden | 0 {util => helpers}/testdata/with_footer_option.golden | 0 {util => helpers}/testdata/with_header_option.golden | 0 {util => helpers}/testdata/with_multiple_options.golden | 0 {util => helpers}/testdata/with_single_option.golden | 0 12 files changed, 5 insertions(+), 5 deletions(-) rename {util => helpers}/common.go (99%) rename {util => helpers}/common_test.go (99%) rename {util => helpers}/doc.go (95%) rename {util => helpers}/tablewriter.go (99%) rename {util => helpers}/tablewriter_test.go (99%) rename {util => helpers}/testdata/empty_table.golden (100%) rename {util => helpers}/testdata/multiple_rows.golden (100%) rename {util => helpers}/testdata/no_options.golden (100%) rename {util => helpers}/testdata/with_footer_option.golden (100%) rename {util => helpers}/testdata/with_header_option.golden (100%) rename {util => helpers}/testdata/with_multiple_options.golden (100%) rename {util => helpers}/testdata/with_single_option.golden (100%) diff --git a/util/common.go b/helpers/common.go similarity index 99% rename from util/common.go rename to helpers/common.go index 9469cd3..ee98c27 100644 --- a/util/common.go +++ b/helpers/common.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package util +package helpers import ( "bufio" diff --git a/util/common_test.go b/helpers/common_test.go similarity index 99% rename from util/common_test.go rename to helpers/common_test.go index 73f9c15..79ffd46 100644 --- a/util/common_test.go +++ b/helpers/common_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package util +package helpers import ( "errors" diff --git a/util/doc.go b/helpers/doc.go similarity index 95% rename from util/doc.go rename to helpers/doc.go index dd5f235..d2bbc24 100644 --- a/util/doc.go +++ b/helpers/doc.go @@ -14,4 +14,4 @@ See the License for the specific language governing permissions and limitations under the License. */ -package util //nolint: revive +package helpers diff --git a/util/tablewriter.go b/helpers/tablewriter.go similarity index 99% rename from util/tablewriter.go rename to helpers/tablewriter.go index 89f80ef..d793fa1 100644 --- a/util/tablewriter.go +++ b/helpers/tablewriter.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package util +package helpers import ( "io" diff --git a/util/tablewriter_test.go b/helpers/tablewriter_test.go similarity index 99% rename from util/tablewriter_test.go rename to helpers/tablewriter_test.go index 211467d..5424f01 100644 --- a/util/tablewriter_test.go +++ b/helpers/tablewriter_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package util +package helpers import ( "bytes" diff --git a/util/testdata/empty_table.golden b/helpers/testdata/empty_table.golden similarity index 100% rename from util/testdata/empty_table.golden rename to helpers/testdata/empty_table.golden diff --git a/util/testdata/multiple_rows.golden b/helpers/testdata/multiple_rows.golden similarity index 100% rename from util/testdata/multiple_rows.golden rename to helpers/testdata/multiple_rows.golden diff --git a/util/testdata/no_options.golden b/helpers/testdata/no_options.golden similarity index 100% rename from util/testdata/no_options.golden rename to helpers/testdata/no_options.golden diff --git a/util/testdata/with_footer_option.golden b/helpers/testdata/with_footer_option.golden similarity index 100% rename from util/testdata/with_footer_option.golden rename to helpers/testdata/with_footer_option.golden diff --git a/util/testdata/with_header_option.golden b/helpers/testdata/with_header_option.golden similarity index 100% rename from util/testdata/with_header_option.golden rename to helpers/testdata/with_header_option.golden diff --git a/util/testdata/with_multiple_options.golden b/helpers/testdata/with_multiple_options.golden similarity index 100% rename from util/testdata/with_multiple_options.golden rename to helpers/testdata/with_multiple_options.golden diff --git a/util/testdata/with_single_option.golden b/helpers/testdata/with_single_option.golden similarity index 100% rename from util/testdata/with_single_option.golden rename to helpers/testdata/with_single_option.golden