commit e8c2bc7e4ade56f893c8fb23eac4cdb754555389 Author: Justin Hawkins <justin@hawkins.id.au> Date: Sat May 3 12:36:18 2025 +0930 Clean up menu/version commit 1993533a4613a5db7bbb2ecd6b7a2694f48acd52 Author: Justin Hawkins <justin@hawkins.id.au> Date: Sat May 3 12:31:50 2025 +0930 Update README commit 044cc830dcb3d05b43ab770e8ea42959873823dd Author: Justin Hawkins <justin@hawkins.id.au> Date: Sat May 3 12:22:33 2025 +0930 No longer needed commit a7c37ad7c5c12fcac1d5589271e0e66af4f086e8 Author: Justin Hawkins <justin@hawkins.id.au> Date: Sat May 3 12:14:59 2025 +0930 Fixup version handling commit ade0b748e978ce1d9533a928bd6369f1714ca8a8 Author: Justin Hawkins <justin@hawkins.id.au> Date: Sat May 3 11:58:15 2025 +0930 Use the correct analyser for searches commit e5a65cf5cfdd82ba7aa3d2470c12c6e82c851a3f Author: Justin Hawkins <justin@hawkins.id.au> Date: Fri May 2 19:51:54 2025 +0930 Fix version in template commit 0171be0ee4d11796cfc0419a00b412f8037f4d97 Author: Justin Hawkins <justin@hawkins.id.au> Date: Fri May 2 19:51:41 2025 +0930 Rescrape all links if needed on startup commit ae654998f751c3883f8b3bd76005afae38209edf Author: Justin Hawkins <justin@hawkins.id.au> Date: Fri May 2 19:51:25 2025 +0930 Spelling commit bfe9bbee028e5515be5b6d406e9090c61cdbbebd Author: Justin Hawkins <justin@hawkins.id.au> Date: Fri May 2 19:34:06 2025 +0930 Make goreleaser set the version commit 4436313413f52b2b29a08e510ac4496016aae8a0 Author: Justin Hawkins <justin@hawkins.id.au> Date: Fri May 2 11:43:58 2025 +0930 Make release matrix sane commit 7b467ecee7a3d74ba194b723034dd16bf1c53b53 Author: Justin Hawkins <justin@hawkins.id.au> Date: Fri May 2 11:40:07 2025 +0930 I hate YAML, so much. commit b578e0f044e754ca70cd4ace95fdc6dc3cdcfe07 Author: Justin Hawkins <justin@hawkins.id.au> Date: Thu May 1 23:47:07 2025 +0930 Update goreleaser commit fba84f0827d35359a450fb847b03f5fa78960a1f Author: Justin Hawkins <justin@hawkins.id.au> Date: Thu May 1 23:45:46 2025 +0930 Update version commit e4edb08bd19c560b6f2ea5e572d5950896ac6062 Author: Justin Hawkins <justin@hawkins.id.au> Date: Thu May 1 23:42:59 2025 +0930 Deps commit 58b6692d1b397de91f3531c35c6518fb58ad285a Author: Justin Hawkins <justin@hawkins.id.au> Date: Thu May 1 23:39:51 2025 +0930 Mostly done, first cut commit badbe5e92ffa415b444535eca385d87fa00afa68 Author: Justin Hawkins <justin@hawkins.id.au> Date: Sun Apr 27 20:28:37 2025 +0930 Remove unused code commit 903240dd18cdcd7722705f04ff40b30661969d4d Author: Justin Hawkins <justin@hawkins.id.au> Date: Sun Apr 27 20:26:19 2025 +0930 Update deps commit de90b9951a82c420be0588e6c2c2b63fe0b10eff Author: Justin Hawkins <justin@hawkins.id.au> Date: Sun Apr 27 20:21:33 2025 +0930 Keep on bleving commit 9b15528510a06661237249eaf7bf64c3ce71fc3c Author: Justin Hawkins <justin@hawkins.id.au> Date: Fri Apr 25 23:57:04 2025 +0930 Start of blevification
94 lines
1.8 KiB
Go
94 lines
1.8 KiB
Go
package version
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"log"
|
|
"strings"
|
|
"sync"
|
|
|
|
"github.com/google/go-github/v44/github"
|
|
"golang.org/x/mod/semver"
|
|
)
|
|
|
|
var version string // populated by goreleaser, without leading 'v'
|
|
var commit string
|
|
var date string
|
|
|
|
var VersionInfo Info
|
|
|
|
func init() {
|
|
VersionInfo.Remote.Valid = false
|
|
VersionInfo.Local.Version = "v" + version
|
|
}
|
|
|
|
type Info struct {
|
|
Local struct {
|
|
Version string
|
|
}
|
|
Remote struct {
|
|
Valid bool
|
|
Tag string
|
|
}
|
|
UpgradeReleaseNotes string
|
|
m sync.Mutex
|
|
}
|
|
|
|
func (vi *Info) UpgradeAvailable() bool {
|
|
vi.m.Lock()
|
|
defer vi.m.Unlock()
|
|
if !vi.Remote.Valid {
|
|
return false
|
|
}
|
|
|
|
log.Printf("checking if upgrade available - local %s remote %s", vi.Local.Version, vi.Remote.Tag)
|
|
localValid := semver.IsValid(vi.Local.Version)
|
|
remoteValid := semver.IsValid(vi.Remote.Tag)
|
|
|
|
if !localValid {
|
|
log.Printf("version %s invalid", vi.Local.Version)
|
|
}
|
|
if !remoteValid {
|
|
log.Printf("version %s invalid", vi.Remote.Tag)
|
|
}
|
|
|
|
if !localValid || !remoteValid {
|
|
return false
|
|
}
|
|
|
|
return semver.Compare(vi.Local.Version, vi.Remote.Tag) < 0
|
|
}
|
|
|
|
func (vi *Info) UpdateVersionInfo() {
|
|
client := github.NewClient(nil)
|
|
|
|
rels, _, err := client.Repositories.ListReleases(context.Background(), "tardisx", "linkwallet", nil)
|
|
if err != nil {
|
|
return
|
|
}
|
|
if len(rels) == 0 {
|
|
return
|
|
}
|
|
|
|
vi.m.Lock()
|
|
vi.Remote.Tag = *rels[0].TagName
|
|
vi.Remote.Valid = true
|
|
vi.UpgradeReleaseNotes = ""
|
|
for _, r := range rels {
|
|
if semver.Compare(VersionInfo.Local.Version, *r.TagName) < 0 {
|
|
vi.UpgradeReleaseNotes += fmt.Sprintf("*Version %s*\n\n", *r.TagName)
|
|
bodyLines := strings.Split(*r.Body, "\n")
|
|
for _, l := range bodyLines {
|
|
if strings.Index(l, "#") == 0 && strings.Contains(l, "Changelog") {
|
|
// do nothing, ignore the changelog heading
|
|
} else {
|
|
vi.UpgradeReleaseNotes += l + "\n"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
vi.m.Unlock()
|
|
|
|
}
|