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}
)
}