fix: simplify code

Carlos Alexandro Becker created

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

Change summary

go.mod                         |  1 -
go.sum                         |  2 --
internal/app/app.go            |  2 +-
internal/update/update.go      | 22 +++++++---------------
internal/update/update_test.go | 25 ++++++++++++++++---------
5 files changed, 24 insertions(+), 28 deletions(-)

Detailed changes

go.mod 🔗

@@ -5,7 +5,6 @@ go 1.25.0
 require (
 	github.com/JohannesKaufmann/html-to-markdown v1.6.0
 	github.com/MakeNowJust/heredoc v1.0.0
-	github.com/Masterminds/semver/v3 v3.4.0
 	github.com/PuerkitoBio/goquery v1.10.3
 	github.com/alecthomas/chroma/v2 v2.20.0
 	github.com/anthropics/anthropic-sdk-go v1.13.0

go.sum 🔗

@@ -18,8 +18,6 @@ github.com/JohannesKaufmann/html-to-markdown v1.6.0 h1:04VXMiE50YYfCfLboJCLcgqF5
 github.com/JohannesKaufmann/html-to-markdown v1.6.0/go.mod h1:NUI78lGg/a7vpEJTz/0uOcYMaibytE4BUOQS8k78yPQ=
 github.com/MakeNowJust/heredoc v1.0.0 h1:cXCdzVdstXyiTqTvfqk9SDHpKNjxuom+DOlyEeQ4pzQ=
 github.com/MakeNowJust/heredoc v1.0.0/go.mod h1:mG5amYoWBHf8vpLOuehzbGGw0EHxpZZ6lCpQ4fNJ8LE=
-github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0=
-github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM=
 github.com/PuerkitoBio/goquery v1.9.2/go.mod h1:GHPCaP0ODyyxqcNoFGYlAprUFH81NuRPd0GX3Zu2Mvk=
 github.com/PuerkitoBio/goquery v1.10.3 h1:pFYcNSqHxBD06Fpj/KsbStFRsgRATgnf3LeXiUkhzPo=
 github.com/PuerkitoBio/goquery v1.10.3/go.mod h1:tMUX0zDMHXYlAQk6p35XxQMqMweEKB7iK7iLNd4RH4Y=

internal/app/app.go 🔗

@@ -353,7 +353,7 @@ func (app *App) checkForUpdates(ctx context.Context) {
 	checkCtx, cancel := context.WithTimeout(ctx, 30*time.Second)
 	defer cancel()
 	info, err := update.Check(checkCtx)
-	if err != nil || info == nil || !info.Available {
+	if err != nil || !info.Available() {
 		return
 	}
 	app.events <- pubsub.UpdateAvailableMsg{

internal/update/update.go 🔗

@@ -9,7 +9,6 @@ import (
 	"strings"
 	"time"
 
-	"github.com/Masterminds/semver/v3"
 	"github.com/charmbracelet/crush/internal/version"
 )
 
@@ -23,35 +22,28 @@ type Info struct {
 	CurrentVersion string
 	LatestVersion  string
 	ReleaseURL     string
-	Available      bool
 }
 
+func (i Info) Available() bool { return i.CurrentVersion != i.LatestVersion }
+
 // Check checks if a new version is available.
-func Check(ctx context.Context) (*Info, error) {
-	info := &Info{
+func Check(ctx context.Context) (Info, error) {
+	info := Info{
 		CurrentVersion: version.Version,
+		LatestVersion:  version.Version,
 	}
 
-	cv, err := semver.NewVersion(version.Version)
-	if err != nil {
-		// its devel, unknown, etc
+	if info.CurrentVersion == "devel" || info.CurrentVersion == "unknown" {
 		return info, nil
 	}
 
 	release, err := fetchLatestRelease(ctx)
 	if err != nil {
-		return nil, fmt.Errorf("failed to fetch latest release: %w", err)
-	}
-
-	lv, err := semver.NewVersion(release.TagName)
-	if err != nil {
-		return nil, fmt.Errorf("failed to parse latest version: %w", err)
+		return info, fmt.Errorf("failed to fetch latest release: %w", err)
 	}
 
 	info.LatestVersion = strings.TrimPrefix(release.TagName, "v")
 	info.ReleaseURL = release.HTMLURL
-	info.Available = lv.GreaterThan(cv)
-
 	return info, nil
 }
 

internal/update/update_test.go 🔗

@@ -1,7 +1,6 @@
 package update
 
 import (
-	"context"
 	"testing"
 
 	"github.com/charmbracelet/crush/internal/version"
@@ -9,18 +8,26 @@ import (
 )
 
 func TestCheckForUpdate_DevelopmentVersion(t *testing.T) {
-	// Test that development versions don't trigger updates.
-	ctx := context.Background()
-
-	// Temporarily set version to development version.
 	originalVersion := version.Version
 	version.Version = "unknown"
-	defer func() {
+	t.Cleanup(func() {
 		version.Version = originalVersion
-	}()
+	})
 
-	info, err := Check(ctx)
+	info, err := Check(t.Context())
+	require.NoError(t, err)
+	require.NotNil(t, info)
+	require.False(t, info.Available())
+}
+
+func TestCheckForUpdate_Old(t *testing.T) {
+	originalVersion := version.Version
+	version.Version = "0.10.0"
+	t.Cleanup(func() {
+		version.Version = originalVersion
+	})
+	info, err := Check(t.Context())
 	require.NoError(t, err)
 	require.NotNil(t, info)
-	require.False(t, info.Available)
+	require.True(t, info.Available())
 }