From 7a198a02739e7cb8c59a42b0757520710372e92c Mon Sep 17 00:00:00 2001 From: Dan Jones Date: Sat, 11 Nov 2023 18:51:38 -0600 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Fail=20gracefully=20when=20none?= =?UTF-8?q?=20found?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/choose.go | 2 +- app/menu.go | 2 +- app/print.go | 19 ++++++++++++++----- app/run.go | 2 +- {input => io}/boolean/boolean.go | 0 {input => io}/list/list.go | 0 io/message/message.go | 20 ++++++++++++++++++++ 7 files changed, 37 insertions(+), 8 deletions(-) rename {input => io}/boolean/boolean.go (100%) rename {input => io}/list/list.go (100%) create mode 100644 io/message/message.go diff --git a/app/choose.go b/app/choose.go index 8a10e68..525e18b 100644 --- a/app/choose.go +++ b/app/choose.go @@ -5,7 +5,7 @@ import ( "os" "codeberg.org/danjones000/strip-beats/files" - "codeberg.org/danjones000/strip-beats/input/boolean" + "codeberg.org/danjones000/strip-beats/io/boolean" "codeberg.org/danjones000/strip-beats/media" "codeberg.org/danjones000/strip-beats/utils" "github.com/rkoesters/xdg/trash" diff --git a/app/menu.go b/app/menu.go index 2e5cdd1..5a6e5ff 100644 --- a/app/menu.go +++ b/app/menu.go @@ -3,7 +3,7 @@ package app import ( "fmt" - "codeberg.org/danjones000/strip-beats/input/list" + "codeberg.org/danjones000/strip-beats/io/list" ) func (st AppStep) Title() string { diff --git a/app/print.go b/app/print.go index ac8b44f..1a87c68 100644 --- a/app/print.go +++ b/app/print.go @@ -3,8 +3,9 @@ package app import ( "fmt" - "codeberg.org/danjones000/strip-beats/input/boolean" - "codeberg.org/danjones000/strip-beats/input/list" + "codeberg.org/danjones000/strip-beats/io/boolean" + "codeberg.org/danjones000/strip-beats/io/list" + m "codeberg.org/danjones000/strip-beats/io/message" "codeberg.org/danjones000/strip-beats/media" "codeberg.org/danjones000/strip-beats/media/brainz" "codeberg.org/danjones000/strip-beats/utils" @@ -51,7 +52,11 @@ func print() { if err != nil { panic(err) } - rec := chooseRec(ids) + rec, ok := chooseRec(ids) + if !ok { + m.Message("Couldn't find a marching recording") + return + } fmt.Println(rec.Title) @@ -99,7 +104,7 @@ func print() { tags.TrackCount = media.TrackCount } -func chooseRec(ids media.IdResults) brainz.Recording { +func chooseRec(ids media.IdResults) (brainz.Recording, bool) { var recs []list.Option var rec brainz.Recording var err error @@ -122,7 +127,11 @@ func chooseRec(ids media.IdResults) brainz.Recording { return opt.Title() != "" }) - return list.List("Which recording is the correct one?", recs, nil).(recOpt).rec + if len(recs) < 1 { + return rec, false + } + + return list.List("Which recording is the correct one?", recs, nil).(recOpt).rec, true } func findFirstRelease(rec brainz.Recording) brainz.Release { diff --git a/app/run.go b/app/run.go index 4e62b52..066f6c6 100644 --- a/app/run.go +++ b/app/run.go @@ -4,7 +4,7 @@ import ( "fmt" "os" - "codeberg.org/danjones000/strip-beats/input/boolean" + "codeberg.org/danjones000/strip-beats/io/boolean" "codeberg.org/danjones000/strip-beats/media" "codeberg.org/danjones000/strip-beats/media/brainz" ) diff --git a/input/boolean/boolean.go b/io/boolean/boolean.go similarity index 100% rename from input/boolean/boolean.go rename to io/boolean/boolean.go diff --git a/input/list/list.go b/io/list/list.go similarity index 100% rename from input/list/list.go rename to io/list/list.go diff --git a/io/message/message.go b/io/message/message.go new file mode 100644 index 0000000..c73ffcd --- /dev/null +++ b/io/message/message.go @@ -0,0 +1,20 @@ +package message + +import "github.com/rivo/tview" + +func Message(text string) { + app := tview.NewApplication() + modal := tview.NewModal() + if text != "" { + modal.SetText(text) + } + + modal.AddButtons([]string{"Ok"}). + SetDoneFunc(func(buttonIndex int, buttonLabel string) { + app.Stop() + }) + + if err := app.SetRoot(modal, false).EnableMouse(true).Run(); err != nil { + panic(err) + } +}