diff --git a/Makefile b/Makefile index 95c8662..ab17734 100644 --- a/Makefile +++ b/Makefile @@ -9,7 +9,7 @@ build: go build -o portal ./cmd/portal/ build-production: - CGO=0 go build -ldflags=${LINKER_FLAGS} -o portal ./cmd/portal + CGO=0 go build -ldflags=${LINKER_FLAGS} -o portal ./cmd/portal build-wasm: GOOS=js GOARCH=wasm go build -o portal.wasm ./cmd/wasm/main.go diff --git a/cmd/portal/main.go b/cmd/portal/main.go index 5cafe18..2b83544 100644 --- a/cmd/portal/main.go +++ b/cmd/portal/main.go @@ -17,6 +17,7 @@ import ( ) // version represents the version of portal. +// injected at link time using -ldflags. var version string // rootCmd is the top level `portal` command on which the other subcommands are attached to. diff --git a/ui/sender/sender.go b/ui/sender/sender.go index 7a1f970..cef754b 100644 --- a/ui/sender/sender.go +++ b/ui/sender/sender.go @@ -112,10 +112,11 @@ func New(filenames []string, addr string, opts ...Option) *tea.Program { } func (m model) Init() tea.Cmd { - if m.version == nil { - return tea.Batch(m.spinner.Tick, readFilesCmd(m.fileNames), connectCmd(m.rendezvousAddr)) + var versionCmd tea.Cmd + if m.version != nil { + versionCmd = ui.VersionCmd(*m.version) } - return ui.VersionCmd(*m.version) + return tea.Sequence(versionCmd, tea.Batch(m.spinner.Tick, readFilesCmd(m.fileNames), connectCmd(m.rendezvousAddr))) } // ------------------------------------------------------- Update ------------------------------------------------------ @@ -129,18 +130,18 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { case semver.CompareNewMajor, semver.CompareNewMinor, semver.CompareNewPatch: + //lint:ignore ST1005 error string displayed in UI return m, ui.ErrorCmd(fmt.Errorf("Your version is (%s) is incompatible with the latest version (%s)", m.version, msg.Latest)) case semver.CompareOldMajor: - return m, ui.ErrorCmd(fmt.Errorf("New major version available (%s -> %s)", m.version, msg.Latest)) + message = ui.WarningText(fmt.Sprintf("New major version available (%s -> %s)", m.version, msg.Latest)) case semver.CompareOldMinor: message = ui.WarningText(fmt.Sprintf("New minor version available (%s -> %s)", m.version, msg.Latest)) case semver.CompareOldPatch: message = ui.WarningText(fmt.Sprintf("New patch available (%s -> %s)", m.version, msg.Latest)) case semver.CompareEqual: - message = ui.CheckText(fmt.Sprintf("You have the latest version (%s)", m.version)) - default: - return m, ui.TaskCmd(message, tea.Batch(m.spinner.Tick, readFilesCmd(m.fileNames), connectCmd(m.rendezvousAddr))) + message = ui.CheckText(fmt.Sprintf("On latest version (%s)", m.version)) } + return m, ui.TaskCmd(message, nil) case fileReadMsg: m.uncompressedSize = msg.size diff --git a/ui/transferprogress/transferprogress.go b/ui/transferprogress/transferprogress.go index 9b67055..b3b6370 100644 --- a/ui/transferprogress/transferprogress.go +++ b/ui/transferprogress/transferprogress.go @@ -72,7 +72,7 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { bytesRemaining := m.PayloadSize - m.bytesTransferred linearRemainingSeconds := float64(bytesRemaining) * secondsSpent / float64(m.bytesTransferred) if remainingDuration, err := time.ParseDuration(fmt.Sprintf("%fs", linearRemainingSeconds)); err != nil { - return m, ui.ErrorCmd(errors.Wrap(err, "failed to parse duration of estimated remaining transfer time")) + return m, ui.ErrorCmd(errors.Wrap(err, "failed to parse duration of transfer ETA")) } else { m.estimatedRemainingDuration = remainingDuration } diff --git a/ui/ui.go b/ui/ui.go index 03d2841..1199b84 100644 --- a/ui/ui.go +++ b/ui/ui.go @@ -135,8 +135,5 @@ func VersionCmd(version semver.Version) tea.Cmd { } func ErrorCmd(err error) tea.Cmd { - cmd := func() tea.Msg { - return ErrorMsg(err) - } - return TaskCmd(ErrorText(err.Error()), cmd) + return TaskCmd(ErrorText(err.Error()), QuitCmd()) }