aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-05-19 23:34:21 +0900
committerOphestra <cat@gensokyo.uk>2026-05-19 23:34:21 +0900
commitf638c73933521e58e7551b46dba8db21ebf7ce19 (patch)
treec332387f35c29882bebe0ba8f43f7344f8f2f6bb
parent98d915af3dbab860bc1ac614a91d0a38555e624d (diff)
internal/rosa: bind anitya functions
This is far more scalable than individual fields. Signed-off-by: Ophestra <cat@gensokyo.uk>
-rw-r--r--internal/rosa/package/perl.az4
-rw-r--r--internal/rosa/state.go40
2 files changed, 18 insertions, 26 deletions
diff --git a/internal/rosa/package/perl.az b/internal/rosa/package/perl.az
index e8eb2001..400f7fad 100644
--- a/internal/rosa/package/perl.az
+++ b/internal/rosa/package/perl.az
@@ -3,7 +3,7 @@ package perl {
website = "https://www.perl.org";
anitya = 13599;
// odd-even versioning
- anityaFallback = true;
+ latest = anityaFallback;
version* = "5.42.2";
source = remoteTar {
@@ -86,7 +86,7 @@ package perl-SGMLS {
description = "class for postprocessing the output from the sgmls and nsgmls parsers";
website = "https://metacpan.org/release/RAAB/SGMLSpm-1.1";
anitya = 389576;
- anityaLegacyCPAN = true;
+ latest = anityaLegacyCPAN;
version* = "1.1";
source = remoteCPAN {
diff --git a/internal/rosa/state.go b/internal/rosa/state.go
index 11415daf..2a938064 100644
--- a/internal/rosa/state.go
+++ b/internal/rosa/state.go
@@ -439,6 +439,21 @@ func (s *S) getFrame() azalea.Frame {
k("jobsFlagE"): jobsFlagE,
k("jobsLE"): jobsLE,
k("jobsLFlagE"): jobsLFlagE,
+
+ k("anityaFallback"): (*Versions).getStable,
+ k("anityaLegacyCPAN"): func(v *Versions) string {
+ for _, e := range v.Stable {
+ _, m, ok := strings.Cut(e, ".")
+ if !ok {
+ continue
+ }
+ if len(m) > 1 && m[0] == '0' {
+ continue
+ }
+ return e
+ }
+ return v.Latest
+ },
}
s.frame.Func = map[unique.Handle[azalea.Ident]]azalea.F{
@@ -795,15 +810,13 @@ func (ctx *evalContext) pf(
helper Helper
inputs, runtimes azalea.Array
-
- anityaFallback bool
- anityaLegacyCPAN bool
)
if err = args.Apply(map[unique.Handle[azalea.Ident]]any{
k("description"): &meta.Description,
k("website"): &meta.Website,
k("version"): &meta.Version,
k("anitya"): &anitya,
+ k("latest"): &meta.latest,
k("writable"): &attr.Writable,
k("chmod"): &attr.Chmod,
@@ -821,9 +834,6 @@ func (ctx *evalContext) pf(
k("exec"): &helper,
k("inputs"): &inputs,
k("runtime"): &runtimes,
-
- k("anityaFallback"): &anityaFallback,
- k("anityaLegacyCPAN"): &anityaLegacyCPAN,
}); err != nil {
return
}
@@ -835,24 +845,6 @@ func (ctx *evalContext) pf(
}
meta.ID = int(anitya)
- if anityaFallback {
- meta.latest = (*Versions).getStable
- } else if anityaLegacyCPAN {
- meta.latest = func(v *Versions) string {
- for _, s := range v.Stable {
- _, m, ok := strings.Cut(s, ".")
- if !ok {
- continue
- }
- if len(m) > 1 && m[0] == '0' {
- continue
- }
- return s
- }
- return v.Latest
- }
- }
-
if output != nil {
v = cachedArtifact{&meta, output}
set = true