diff --git a/modules/app.xql b/modules/app.xql index a97d495..b9af900 100644 --- a/modules/app.xql +++ b/modules/app.xql @@ -44,11 +44,21 @@ declare function app:view-package($node as node(), $model as map(*), $mode as xs response:redirect-to(xs:anyURI($info-url)) (: view current package info :) else - let $compatible-xar := app:find-version($app, $procVersion, (), (), (), ()) - let $package := $app[@path eq $compatible-xar] + let $app-versions := ($app, $app/other/version) + let $compatible-xar := app:find-version($app-versions, $procVersion, (), (), (), ()) + let $package := $app-versions[@path eq $compatible-xar] let $show-details := true() return - app:package-to-list-item($package, $show-details) + if (exists($package)) then + app:package-to-list-item($package, $show-details) + else + ( + response:set-status-code(404), + if (exists($app)) then +
  • Package {$abbrev} requires a newer version of eXist.
  • + else +
  • No package {$abbrev} is available.
  • + ) }; declare function app:package-to-list-item($app as element(app), $show-details as xs:boolean) { diff --git a/modules/find.xql b/modules/find.xql index 55e5667..74a751b 100644 --- a/modules/find.xql +++ b/modules/find.xql @@ -21,7 +21,8 @@ let $app := collection($config:app-root || "/public")//app[name eq $name] else collection($config:app-root || "/public")//app[abbrev eq $abbrev] -let $compatible-xar := app:find-version($app | $app/other/version, $procVersion, $version, $semVer, $minVersion, $maxVersion) +let $app-versions := ($app, $app/other/version) +let $compatible-xar := app:find-version($app-versions, $procVersion, $version, $semVer, $minVersion, $maxVersion) return if ($compatible-xar) then let $rel-public := @@ -31,7 +32,7 @@ return "public/" return if ($info) then - {$app} + {$compatible-xar} else if ($zip) then response:redirect-to(xs:anyURI($rel-public || $compatible-xar || ".zip")) else diff --git a/modules/scan.xql b/modules/scan.xql index c6812dc..1b5c5d4 100644 --- a/modules/scan.xql +++ b/modules/scan.xql @@ -47,7 +47,7 @@ declare function scanrepo:process($apps as element(app)*) { let $n := tokenize($older/version, "\.") ! xs:int(analyze-string(., "(\d+)")//fn:group[1]) order by $n[1], $n[2], $n[3] return - {$older/@path} + {$older/@path, $older/requires} ) }