From 227904e6da274f0b48ad180337d143844a98cd12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dieter=20Eickst=C3=A4dt?= Date: Wed, 23 Aug 2023 18:02:54 +0200 Subject: [PATCH 1/2] feat: Adding Return Column to table command Consider a table of ID Name Description 1 Task1 Task description It would be good to select the row but retrieve the ID for example for further processing like 'task 1 delete' when first row was selected --- table/command.go | 10 ++++++++-- table/options.go | 1 + 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/table/command.go b/table/command.go index f25b991..b85af2e 100644 --- a/table/command.go +++ b/table/command.go @@ -105,8 +105,14 @@ func (o Options) Run() error { m := tm.(model) - if err = writer.Write([]string(m.selected)); err != nil { - return fmt.Errorf("failed to write selected row: %w", err) + if o.ReturnColumn > 0 && o.ReturnColumn < len(m.selected) { + if err = writer.Write([]string{m.selected[o.ReturnColumn-1]}); err != nil { + return fmt.Errorf("failed to write col %d of selected row: %w", o.ReturnColumn, err) + } + } else { + if err = writer.Write([]string(m.selected)); err != nil { + return fmt.Errorf("failed to write selected row: %w", err) + } } writer.Flush() diff --git a/table/options.go b/table/options.go index dc692ef..3e58c45 100644 --- a/table/options.go +++ b/table/options.go @@ -12,4 +12,5 @@ type Options struct { HeaderStyle style.Styles `embed:"" prefix:"header." envprefix:"GUM_TABLE_HEADER_"` SelectedStyle style.Styles `embed:"" prefix:"selected." set:"defaultForeground=212" envprefix:"GUM_TABLE_SELECTED_"` File string `short:"f" help:"file path" default:""` + ReturnColumn int `short:"r" help:"Which column number should be returned instead of whole row as string. Default=0 returns whole Row" default:"0"` } From 37417ec1c8fbc9ce541c296292c944219621943b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dieter=20Eickst=C3=A4dt?= Date: Wed, 23 Aug 2023 18:07:17 +0200 Subject: [PATCH 2/2] feat: Return Column boundary check fixed --- table/command.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/table/command.go b/table/command.go index b85af2e..b1d367f 100644 --- a/table/command.go +++ b/table/command.go @@ -105,7 +105,7 @@ func (o Options) Run() error { m := tm.(model) - if o.ReturnColumn > 0 && o.ReturnColumn < len(m.selected) { + if o.ReturnColumn > 0 && o.ReturnColumn <= len(m.selected) { if err = writer.Write([]string{m.selected[o.ReturnColumn-1]}); err != nil { return fmt.Errorf("failed to write col %d of selected row: %w", o.ReturnColumn, err) }