diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 49eaaa6..349f047 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -7,6 +7,8 @@ before: builds: - id: default main: ./main.go + binary: abb_ia + ldflags: -X github.com/vpoluyaktov/abb_ia/internal/config.appVersion={{.Version}} -X github.com/vpoluyaktov/abb_ia/internal/config.buildDate={{.Date}} env: [CGO_ENABLED=0] goos: - linux @@ -16,7 +18,7 @@ builds: - amd64 - 386 - arm64 - binary: abb_ia + release: ids: [ default ] diff --git a/internal/config/config.go b/internal/config/config.go index 554d0c3..6ffb08e 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -1,8 +1,11 @@ package config +import "time" + // singleton var ( configInstance *Config + appVersion, buildDate string ) type Config struct { @@ -114,4 +117,22 @@ func SetSampleRate(b string) { func SampleRate() string { return configInstance.sampleRate -} \ No newline at end of file +} + +func AppVersion() string { + if appVersion == "" { + appVersion = "0.0.0" + } + return appVersion +} + +func BuildDate() string { + // 2023-07-20T14:45:12Z + fmt := "01/02/2006" + bd, err := time.Parse(time.RFC3339, buildDate) + if buildDate != "" && err != nil { + return bd.Format(fmt) + } else { + return time.Now().Format(fmt) + } +} diff --git a/internal/ui/footer.go b/internal/ui/footer.go index 5c93156..1e19fde 100644 --- a/internal/ui/footer.go +++ b/internal/ui/footer.go @@ -14,7 +14,6 @@ type footer struct { busyFlag bool busyIndicator *tview.TextView statusMessage *tview.TextView - version *tview.TextView } func newFooter(dispatcher *mq.Dispatcher) *footer { @@ -36,18 +35,10 @@ func newFooter(dispatcher *mq.Dispatcher) *footer { f.statusMessage.SetTextColor(footerFgColor) f.statusMessage.SetBackgroundColor(footerBgColor) - f.version = tview.NewTextView() - f.version.SetText("v.0.0.1") - f.version.SetTextAlign(tview.AlignRight) - f.version.SetBorder(false) - f.version.SetTextColor(footerFgColor) - f.version.SetBackgroundColor(footerBgColor) - f.grid = tview.NewGrid() - f.grid.SetColumns(8, -1, 10) + f.grid.SetColumns(8, -1) f.grid.AddItem(f.busyIndicator, 0, 0, 1, 1, 0, 0, false) f.grid.AddItem(f.statusMessage, 0, 1, 1, 1, 0, 0, false) - f.grid.AddItem(f.version, 0, 2, 1, 1, 0, 0, false) return f } diff --git a/internal/ui/frame.go b/internal/ui/frame.go index 30c1a30..f9ef48e 100644 --- a/internal/ui/frame.go +++ b/internal/ui/frame.go @@ -25,7 +25,7 @@ func newFrame(dispatcher *mq.Dispatcher) *frame { } func (f *frame) addHeader(header *header) { - f.grid.AddItem(header.view, 0, 0, 1, 1, 0, 0, false) + f.grid.AddItem(header.grid, 0, 0, 1, 1, 0, 0, false) } func (f *frame) addFooter(footer *footer) { diff --git a/internal/ui/header.go b/internal/ui/header.go index 9cd0ccd..2ac7f46 100644 --- a/internal/ui/header.go +++ b/internal/ui/header.go @@ -2,25 +2,41 @@ package ui import ( "github.com/rivo/tview" + "github.com/vpoluyaktov/abb_ia/internal/config" "github.com/vpoluyaktov/abb_ia/internal/dto" "github.com/vpoluyaktov/abb_ia/internal/mq" ) type header struct { - view *tview.TextView - mq *mq.Dispatcher + mq *mq.Dispatcher + grid *tview.Grid + appName *tview.TextView + version *tview.TextView } func newHeader(dispatcher *mq.Dispatcher) *header { h := &header{} h.mq = dispatcher - h.view = tview.NewTextView() - h.view.SetText("Audiobook Builder - Internet Archive version") - h.view.SetBorder(false) - h.view.SetTextColor(headerFgColor) - h.view.SetBackgroundColor(headerBGColor) - h.mq.RegisterListener(mq.Header, h.dispatchMessage) + + h.appName = tview.NewTextView() + h.appName.SetText("Audiobook Builder - Internet Archive version") + h.appName.SetBorder(false) + h.appName.SetTextColor(headerFgColor) + h.appName.SetBackgroundColor(headerBGColor) + + h.version = tview.NewTextView() + h.version.SetText("v" + config.AppVersion() + " (" + config.BuildDate() + ")") + h.version.SetTextAlign(tview.AlignRight) + h.version.SetBorder(false) + h.version.SetTextColor(footerFgColor) + h.version.SetBackgroundColor(footerBgColor) + + h.grid = tview.NewGrid() + h.grid.SetColumns(-1, 50) + h.grid.AddItem(h.appName, 0, 0, 1, 1, 0, 0, false) + h.grid.AddItem(h.version, 0, 1, 1, 1, 0, 0, false) + return h }