mirror of
https://mau.dev/mautrix/go.git
synced 2026-03-14 14:25:53 +01:00
bridgev2/mxmain: move version calculation to go-util
This commit is contained in:
parent
743cbb5f2c
commit
d146b6caf8
3 changed files with 19 additions and 85 deletions
|
|
@ -26,6 +26,7 @@ import (
|
|||
"go.mau.fi/util/dbutil"
|
||||
"go.mau.fi/util/exerrors"
|
||||
"go.mau.fi/util/exzerolog"
|
||||
"go.mau.fi/util/progver"
|
||||
"gopkg.in/yaml.v3"
|
||||
flag "maunium.net/go/mauflag"
|
||||
|
||||
|
|
@ -89,11 +90,7 @@ type BridgeMain struct {
|
|||
RegistrationPath string
|
||||
SaveConfig bool
|
||||
|
||||
baseVersion string
|
||||
commit string
|
||||
LinkifiedVersion string
|
||||
VersionDesc string
|
||||
BuildTime time.Time
|
||||
ver progver.ProgramVersion
|
||||
|
||||
AdditionalShortFlags string
|
||||
AdditionalLongFlags string
|
||||
|
|
@ -102,14 +99,7 @@ type BridgeMain struct {
|
|||
}
|
||||
|
||||
type VersionJSONOutput struct {
|
||||
Name string
|
||||
URL string
|
||||
|
||||
Version string
|
||||
IsRelease bool
|
||||
Commit string
|
||||
FormattedVersion string
|
||||
BuildTime time.Time
|
||||
progver.ProgramVersion
|
||||
|
||||
OS string
|
||||
Arch string
|
||||
|
|
@ -150,18 +140,11 @@ func (br *BridgeMain) PreInit() {
|
|||
flag.PrintHelp()
|
||||
os.Exit(0)
|
||||
} else if *version {
|
||||
fmt.Println(br.VersionDesc)
|
||||
fmt.Println(br.ver.FormattedVersion)
|
||||
os.Exit(0)
|
||||
} else if *versionJSON {
|
||||
output := VersionJSONOutput{
|
||||
URL: br.URL,
|
||||
Name: br.Name,
|
||||
|
||||
Version: br.baseVersion,
|
||||
IsRelease: br.Version == br.baseVersion,
|
||||
Commit: br.commit,
|
||||
FormattedVersion: br.Version,
|
||||
BuildTime: br.BuildTime,
|
||||
ProgramVersion: br.ver,
|
||||
|
||||
OS: runtime.GOOS,
|
||||
Arch: runtime.GOARCH,
|
||||
|
|
@ -243,8 +226,8 @@ func (br *BridgeMain) Init() {
|
|||
|
||||
br.Log.Info().
|
||||
Str("name", br.Name).
|
||||
Str("version", br.Version).
|
||||
Time("built_at", br.BuildTime).
|
||||
Str("version", br.ver.FormattedVersion).
|
||||
Time("built_at", br.ver.BuildTime).
|
||||
Str("go_version", runtime.Version()).
|
||||
Msg("Initializing bridge")
|
||||
|
||||
|
|
@ -258,7 +241,7 @@ func (br *BridgeMain) Init() {
|
|||
br.Matrix.AS.DoublePuppetValue = br.Name
|
||||
br.Bridge.Commands.(*commands.Processor).AddHandler(&commands.FullHandler{
|
||||
Func: func(ce *commands.Event) {
|
||||
ce.Reply("[%s](%s) %s (%s)", br.Name, br.URL, br.LinkifiedVersion, br.BuildTime.Format(time.RFC1123))
|
||||
ce.Reply(br.ver.MarkdownDescription())
|
||||
},
|
||||
Name: "version",
|
||||
Help: commands.HelpMeta{
|
||||
|
|
@ -427,21 +410,6 @@ func (br *BridgeMain) Stop() {
|
|||
br.Bridge.StopWithTimeout(5 * time.Second)
|
||||
}
|
||||
|
||||
func semverToCalver(semver string) string {
|
||||
parts := strings.SplitN(semver, ".", 3)
|
||||
if len(parts) < 2 {
|
||||
panic(fmt.Errorf("invalid semver for calendar versioning: %s", semver))
|
||||
}
|
||||
if len(parts[1]) != 4 {
|
||||
panic(fmt.Errorf("invalid minor semver component for calendar versioning: %s", parts[1]))
|
||||
}
|
||||
calver := parts[1][:2] + "." + parts[1][2:]
|
||||
if len(parts) == 3 {
|
||||
calver += "." + parts[2]
|
||||
}
|
||||
return calver
|
||||
}
|
||||
|
||||
// InitVersion formats the bridge version and build time nicely for things like
|
||||
// the `version` bridge command on Matrix and the `--version` CLI flag.
|
||||
//
|
||||
|
|
@ -464,46 +432,12 @@ func semverToCalver(semver string) string {
|
|||
//
|
||||
// (to use both at the same time, simply merge the ldflags into one, `-ldflags "-X '...' -X ..."`)
|
||||
func (br *BridgeMain) InitVersion(tag, commit, rawBuildTime string) {
|
||||
br.baseVersion = br.Version
|
||||
rawTag := tag
|
||||
if len(tag) > 0 && tag[0] == 'v' {
|
||||
tag = tag[1:]
|
||||
}
|
||||
if br.SemCalVer && len(tag) > 0 {
|
||||
tag = semverToCalver(tag)
|
||||
}
|
||||
if tag != br.Version {
|
||||
suffix := ""
|
||||
if !strings.HasSuffix(br.Version, "+dev") {
|
||||
suffix = "+dev"
|
||||
}
|
||||
if len(commit) > 8 {
|
||||
br.Version = fmt.Sprintf("%s%s.%s", br.Version, suffix, commit[:8])
|
||||
} else {
|
||||
br.Version = fmt.Sprintf("%s%s.unknown", br.Version, suffix)
|
||||
}
|
||||
}
|
||||
|
||||
br.LinkifiedVersion = fmt.Sprintf("v%s", br.Version)
|
||||
if tag == br.Version {
|
||||
br.LinkifiedVersion = fmt.Sprintf("[v%s](%s/releases/v%s)", br.Version, br.URL, rawTag)
|
||||
} else if len(commit) > 8 {
|
||||
br.LinkifiedVersion = strings.Replace(br.LinkifiedVersion, commit[:8], fmt.Sprintf("[%s](%s/commit/%s)", commit[:8], br.URL, commit), 1)
|
||||
}
|
||||
var buildTime time.Time
|
||||
if rawBuildTime != "unknown" {
|
||||
buildTime, _ = time.Parse(time.RFC3339, rawBuildTime)
|
||||
}
|
||||
var builtWith string
|
||||
if buildTime.IsZero() {
|
||||
rawBuildTime = "unknown"
|
||||
builtWith = runtime.Version()
|
||||
} else {
|
||||
rawBuildTime = buildTime.Format(time.RFC1123)
|
||||
builtWith = fmt.Sprintf("built at %s with %s", rawBuildTime, runtime.Version())
|
||||
}
|
||||
mautrix.DefaultUserAgent = fmt.Sprintf("%s/%s %s", br.Name, br.Version, mautrix.DefaultUserAgent)
|
||||
br.VersionDesc = fmt.Sprintf("%s %s (%s)", br.Name, br.Version, builtWith)
|
||||
br.commit = commit
|
||||
br.BuildTime = buildTime
|
||||
br.ver = progver.ProgramVersion{
|
||||
Name: br.Name,
|
||||
URL: br.URL,
|
||||
BaseVersion: br.Version,
|
||||
SemCalVer: br.SemCalVer,
|
||||
}.Init(tag, commit, rawBuildTime)
|
||||
mautrix.DefaultUserAgent = fmt.Sprintf("%s/%s %s", br.Name, br.ver.FormattedVersion, mautrix.DefaultUserAgent)
|
||||
br.Version = br.ver.FormattedVersion
|
||||
}
|
||||
|
|
|
|||
2
go.mod
2
go.mod
|
|
@ -17,7 +17,7 @@ require (
|
|||
github.com/tidwall/gjson v1.18.0
|
||||
github.com/tidwall/sjson v1.2.5
|
||||
github.com/yuin/goldmark v1.7.13
|
||||
go.mau.fi/util v0.9.1
|
||||
go.mau.fi/util v0.9.2-0.20250927140851-50bb0cc52015
|
||||
go.mau.fi/zeroconfig v0.2.0
|
||||
golang.org/x/crypto v0.42.0
|
||||
golang.org/x/exp v0.0.0-20250911091902-df9299821621
|
||||
|
|
|
|||
4
go.sum
4
go.sum
|
|
@ -51,8 +51,8 @@ github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY=
|
|||
github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28=
|
||||
github.com/yuin/goldmark v1.7.13 h1:GPddIs617DnBLFFVJFgpo1aBfe/4xcvMc3SB5t/D0pA=
|
||||
github.com/yuin/goldmark v1.7.13/go.mod h1:ip/1k0VRfGynBgxOz0yCqHrbZXhcjxyuS66Brc7iBKg=
|
||||
go.mau.fi/util v0.9.1 h1:A+XKHRsjKkFi2qOm4RriR1HqY2hoOXNS3WFHaC89r2Y=
|
||||
go.mau.fi/util v0.9.1/go.mod h1:M0bM9SyaOWJniaHs9hxEzz91r5ql6gYq6o1q5O1SsjQ=
|
||||
go.mau.fi/util v0.9.2-0.20250927140851-50bb0cc52015 h1:aRnDwmJNAP+/EspXpo7MhSJxfS+g49MzGvnLkcNFUEc=
|
||||
go.mau.fi/util v0.9.2-0.20250927140851-50bb0cc52015/go.mod h1:M0bM9SyaOWJniaHs9hxEzz91r5ql6gYq6o1q5O1SsjQ=
|
||||
go.mau.fi/zeroconfig v0.2.0 h1:e/OGEERqVRRKlgaro7E6bh8xXiKFSXB3eNNIud7FUjU=
|
||||
go.mau.fi/zeroconfig v0.2.0/go.mod h1:J0Vn0prHNOm493oZoQ84kq83ZaNCYZnq+noI1b1eN8w=
|
||||
golang.org/x/crypto v0.42.0 h1:chiH31gIWm57EkTXpwnqf8qeuMUi0yekh6mT2AvFlqI=
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue