From b1af277fa81be6cd20533dfe986f44b97c10c69b Mon Sep 17 00:00:00 2001 From: Amolith Date: Tue, 28 Nov 2023 19:19:14 -0500 Subject: [PATCH] Use FlexVer to sort by tag instead of date Implements: https://todo.sr.ht/~amolith/willow/24 --- git/git.go | 3 --- go.mod | 1 + go.sum | 2 ++ project/project.go | 17 +++++++++++------ 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/git/git.go b/git/git.go index 892ba50..098dd37 100644 --- a/git/git.go +++ b/git/git.go @@ -10,7 +10,6 @@ import ( "io" "net/url" "os" - "sort" "strings" "time" @@ -104,8 +103,6 @@ func GetReleases(gitURI, forge string) ([]Release, error) { return nil, err } - sort.Slice(releases, func(i, j int) bool { return releases[i].Date.After(releases[j].Date) }) - return releases, nil } diff --git a/go.mod b/go.mod index 609c922..67c6c6c 100644 --- a/go.mod +++ b/go.mod @@ -48,6 +48,7 @@ require ( github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect github.com/sergi/go-diff v1.3.1 // indirect github.com/skeema/knownhosts v1.2.1 // indirect + github.com/unascribed/FlexVer/go/flexver v1.0.0 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect golang.org/x/mod v0.14.0 // indirect golang.org/x/net v0.19.0 // indirect diff --git a/go.sum b/go.sum index 7f538fc..38d0542 100644 --- a/go.sum +++ b/go.sum @@ -118,6 +118,8 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/unascribed/FlexVer/go/flexver v1.0.0 h1:eaAAWwaT8TiGK75wfEgQRPRVJc1ZIiLTLGUKXxpcs0c= +github.com/unascribed/FlexVer/go/flexver v1.0.0/go.mod h1:OkWZGfmV3DV2ADlgoS7W1+dD1OOci4mEracZCi3ulBk= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= diff --git a/project/project.go b/project/project.go index 99fed90..888b29f 100644 --- a/project/project.go +++ b/project/project.go @@ -13,6 +13,8 @@ import ( "strings" "time" + "github.com/unascribed/FlexVer/go/flexver" + "git.sr.ht/~amolith/willow/db" "git.sr.ht/~amolith/willow/git" "git.sr.ht/~amolith/willow/rss" @@ -52,9 +54,7 @@ func GetReleases(dbConn *sql.DB, proj Project) (Project, error) { Date: time.Time{}, }) } - sort.Slice(proj.Releases, func(i, j int) bool { - return proj.Releases[i].Date.After(proj.Releases[j].Date) - }) + proj.Releases = SortReleases(proj.Releases) return proj, nil } @@ -100,12 +100,17 @@ func fetchReleases(dbConn *sql.DB, p Project) (Project, error) { } } } - sort.Slice(p.Releases, func(i, j int) bool { - return p.Releases[i].Date.After(p.Releases[j].Date) - }) + p.Releases = SortReleases(p.Releases) return p, err } +func SortReleases(releases []Release) []Release { + sort.Slice(releases, func(i, j int) bool { + return !flexver.Less(releases[i].Tag, releases[j].Tag) + }) + return releases +} + // upsert updates or inserts a project release into the database func upsert(dbConn *sql.DB, url string, releases []Release) error { for _, release := range releases {