diff options
Diffstat (limited to 'internal/rosa/state.go')
| -rw-r--r-- | internal/rosa/state.go | 51 |
1 files changed, 49 insertions, 2 deletions
diff --git a/internal/rosa/state.go b/internal/rosa/state.go index f52f99cb..388a6cc5 100644 --- a/internal/rosa/state.go +++ b/internal/rosa/state.go @@ -544,6 +544,23 @@ func (s *S) getFrame() azalea.Frame { return }}, + k("remoteCPAN"): {F: func( + args azalea.FArgs, + ) (v any, set bool, err error) { + var author, name, version, checksum string + if err = args.Apply(map[unique.Handle[azalea.Ident]]any{ + k("author"): &author, + k("name"): &name, + k("version"): &version, + k("checksum"): &checksum, + }); err != nil { + return + } + v = newFromCPAN(author, name, version, checksum) + set = true + return + }}, + k("remoteGitHub"): {F: func( args azalea.FArgs, ) (v any, set bool, err error) { @@ -592,6 +609,20 @@ func (s *S) getFrame() azalea.Frame { return }}, + k("makeMaker"): {F: func( + args azalea.FArgs, + ) (v any, set bool, err error) { + var attr MakeMakerHelper + if err = args.Apply(map[unique.Handle[azalea.Ident]]any{ + k("skipCheck"): &attr.SkipCheck, + }); err != nil { + return + } + v = &attr + set = true + return + }}, + k("pip"): {F: func( args azalea.FArgs, ) (v any, set bool, err error) { @@ -679,7 +710,8 @@ func (ctx *evalContext) pf( inputs, runtimes azalea.Array - anityaFallback bool + anityaFallback bool + anityaLegacyCPAN bool ) if err = args.Apply(map[unique.Handle[azalea.Ident]]any{ k("description"): &meta.Description, @@ -701,7 +733,8 @@ func (ctx *evalContext) pf( k("inputs"): &inputs, k("runtime"): &runtimes, - k("anityaFallback"): &anityaFallback, + k("anityaFallback"): &anityaFallback, + k("anityaLegacyCPAN"): &anityaLegacyCPAN, }); err != nil { return } @@ -733,6 +766,20 @@ 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 + } } var source pkg.Artifact switch p := sourceA.(type) { |
