aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--cmd/mbf/main.go6
-rw-r--r--internal/rosa/all.go19
2 files changed, 23 insertions, 2 deletions
diff --git a/cmd/mbf/main.go b/cmd/mbf/main.go
index 8d9a232a..8c253940 100644
--- a/cmd/mbf/main.go
+++ b/cmd/mbf/main.go
@@ -173,9 +173,11 @@ func main() {
if v, err := meta.GetVersions(ctx); err != nil {
return err
- } else if current := rosa.Std.Version(p); v.Latest != current {
+ } else if current, latest :=
+ rosa.Std.Version(p),
+ meta.GetLatest(v); current != latest {
n++
- log.Printf("%s %s < %s", meta.Name, current, v.Latest)
+ log.Printf("%s %s < %s", meta.Name, current, latest)
} else {
msg.Verbosef("%s is up to date", meta.Name)
}
diff --git a/internal/rosa/all.go b/internal/rosa/all.go
index a550b7b9..ddaa1b0d 100644
--- a/internal/rosa/all.go
+++ b/internal/rosa/all.go
@@ -166,6 +166,17 @@ type Metadata struct {
//
// [Anitya]: https://release-monitoring.org/
ID int `json:"-"`
+
+ // Optional custom version checking behaviour.
+ latest func(v *Versions) string
+}
+
+// GetLatest returns the latest version described by v.
+func (meta *Metadata) GetLatest(v *Versions) string {
+ if meta.latest != nil {
+ return meta.latest(v)
+ }
+ return v.Latest
}
// Unversioned denotes an unversioned [PArtifact].
@@ -188,6 +199,14 @@ type Versions struct {
All []string `json:"versions"`
}
+// getStable returns the first Stable version, or Latest if that is unavailable.
+func (v *Versions) getStable() string {
+ if len(v.Stable) == 0 {
+ return v.Latest
+ }
+ return v.Stable[0]
+}
+
// GetVersions returns versions fetched from Anitya.
func (meta *Metadata) GetVersions(ctx context.Context) (*Versions, error) {
if meta.ID == 0 {