Export the reviewed allowlisted snapshot from private source commit 07c1655921f21ee5e4fc4d85639d199e8867b17d. This records the Docker Compose activation, schema-compatible rollback, and stateful migration resource findings from Observatory Preview 19 dogfooding. AI-Assisted: OpenAI Codex Signed-off-by: Cole Speelman <crspeelman@gmail.com>
83 lines
1.7 KiB
Go
83 lines
1.7 KiB
Go
// SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
package version
|
|
|
|
import (
|
|
"regexp"
|
|
"runtime/debug"
|
|
"strings"
|
|
)
|
|
|
|
const developmentVersion = "v0.1.0-dev"
|
|
|
|
var (
|
|
Version = developmentVersion
|
|
Commit = "unknown"
|
|
Date = "unknown"
|
|
)
|
|
|
|
var (
|
|
taggedVersionPattern = regexp.MustCompile(`^v(?:0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?$`)
|
|
pseudoVersionSuffixPattern = regexp.MustCompile(`(?:^|[.-])(?:0\.)?[0-9]{14}-[0-9a-f]{12,}$`)
|
|
)
|
|
|
|
func init() {
|
|
information, ok := debug.ReadBuildInfo()
|
|
if !ok {
|
|
return
|
|
}
|
|
Version = selectVersion(Version, information.Main.Version)
|
|
for _, setting := range information.Settings {
|
|
switch setting.Key {
|
|
case "vcs.revision":
|
|
if Commit == "unknown" && setting.Value != "" {
|
|
Commit = setting.Value
|
|
}
|
|
case "vcs.time":
|
|
if Date == "unknown" && setting.Value != "" {
|
|
Date = setting.Value
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
func selectVersion(linkerValue, moduleVersion string) string {
|
|
if linkerValue != developmentVersion {
|
|
return linkerValue
|
|
}
|
|
moduleVersion = strings.TrimSpace(moduleVersion)
|
|
if !isTaggedVersion(moduleVersion) {
|
|
return linkerValue
|
|
}
|
|
return moduleVersion
|
|
}
|
|
|
|
func isTaggedVersion(value string) bool {
|
|
matches := taggedVersionPattern.FindStringSubmatch(value)
|
|
if matches == nil {
|
|
return false
|
|
}
|
|
prerelease := matches[1]
|
|
if pseudoVersionSuffixPattern.MatchString(prerelease) {
|
|
return false
|
|
}
|
|
for _, identifier := range strings.Split(prerelease, ".") {
|
|
if len(identifier) > 1 && identifier[0] == '0' && allDecimal(identifier) {
|
|
return false
|
|
}
|
|
}
|
|
return true
|
|
}
|
|
|
|
func allDecimal(value string) bool {
|
|
if value == "" {
|
|
return false
|
|
}
|
|
for _, character := range value {
|
|
if character < '0' || character > '9' {
|
|
return false
|
|
}
|
|
}
|
|
return true
|
|
}
|