Skip to content

Commit 8f975a7

Browse files
committed
Adopt new versions module functions
- add xqdoc - ensure find endpoint can use all version attributes for finding packages
1 parent 08f85c5 commit 8f975a7

File tree

3 files changed

+28
-19
lines changed

3 files changed

+28
-19
lines changed

modules/app.xqm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ declare function app:view-package($node as node(), $model as map(*), $mode as xs
216216
(: view current package info :)
217217
else
218218
let $packages := $package-group//package
219-
let $compatible-packages := versions:find-compatible-packages($packages, $procVersion)
219+
let $compatible-packages := versions:get-packages-satisfying-exist-version($packages, $procVersion)
220220
let $incompatible-packages := $packages except $compatible-packages
221221
let $show-details := true()
222222
return

modules/find.xq

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,18 @@
11
xquery version "3.1";
22

33
(:~
4-
: Respond to eXist build requests for packages using various identifier and version number criteria
4+
: Respond to eXist build requests for packages by their package descriptor's abbrev or name
5+
: attribute, matching either (1) a minimum eXist version expressed as a SemVer version, or
6+
: (2) an EXPath Package version attributes (`version`, `semver`, `semver-min`, and `semver-max`).
57
:
6-
: The info parameter can be used for troubleshooting
8+
: The parameter name `version` is retained for backward compatibility, even though it's
9+
: `versions` in the EXPath Package spec.
10+
:
11+
: The `info` parameter can be used for troubleshooting.
12+
:
13+
: The `zip` parameter forces the EXPath Package to be returned with a .xar.zip file extension.
14+
:
15+
: @see http://expath.org/spec/pkg
716
:)
817

918
import module namespace app="http://exist-db.org/xquery/app" at "app.xqm";
@@ -16,33 +25,37 @@ declare namespace response="http://exist-db.org/xquery/response";
1625
let $abbrev := request:get-parameter("abbrev", ())
1726
let $name := request:get-parameter("name", ())
1827
let $exist-version-semver := request:get-parameter("processor", $config:default-exist-version)
19-
let $version := request:get-parameter("version", ())
28+
let $versions := request:get-parameter("version", ())
2029
let $semver := request:get-parameter("semver", ())
2130
let $semver-min := request:get-parameter("semver-min", ())
2231
let $semver-max := request:get-parameter("semver-max", ())
2332
let $zip := request:get-parameter("zip", ())
2433
let $info := request:get-parameter("info", ())
2534
let $app-root-absolute-url := request:get-parameter("app-root-absolute-url", ())
2635

27-
let $package-group :=
36+
let $packages :=
2837
if ($name) then
29-
doc($config:package-groups-doc)//package-group[name eq $name]
38+
doc($config:package-groups-doc)//package-group[name eq $name]//package
3039
else
31-
doc($config:package-groups-doc)//package-group[abbrev eq $abbrev]
40+
doc($config:package-groups-doc)//package-group[abbrev eq $abbrev]//package
3241

33-
let $newest-compatible-package := versions:find-newest-compatible-package($package-group//package, $exist-version-semver, $version, $semver, $semver-min, $semver-max)
42+
let $package :=
43+
if (exists($versions) or exists($semver) or exists($semver-min) or exists($semver-max)) then
44+
versions:get-newest-package-satisfying-version-attributes($packages, $versions, $semver, $semver-min, $semver-max)
45+
else
46+
versions:get-newest-package-satisfying-exist-version($packages, $exist-version-semver)
3447

3548
return
36-
if ($newest-compatible-package) then
49+
if ($package) then
3750
(: TODO shouldn't we get $abs-public from $config? - joewiz :)
3851
let $abs-public := $app-root-absolute-url || "/public/"
39-
let $xar-filename := $newest-compatible-package/@path
52+
let $xar-filename := $package/@path
4053
return
4154
if ($info) then
4255
element found {
43-
$newest-compatible-package/@sha256,
44-
$newest-compatible-package/version ! attribute version {.},
45-
$newest-compatible-package/@path
56+
$package/@sha256,
57+
$package/version ! attribute version {.},
58+
$package/@path
4659
}
4760
else if ($zip) then
4861
app:redirect-to($abs-public || $xar-filename || ".zip")

modules/list.xq

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,12 @@ declare option output:method "xml";
2020
declare option output:media-type "application/xml";
2121

2222
let $exist-version := request:get-parameter("version", $config:default-exist-version)
23-
let $exist-version-semver :=
24-
if (semver:validate($exist-version)) then
25-
$exist-version
26-
else
27-
$config:default-exist-version
23+
let $exist-version-semver := semver:parse($exist-version, true()) => semver:serialize-parsed()
2824
return
2925
element apps {
3026
attribute version { $exist-version-semver },
3127
for $package-group in doc($config:package-groups-doc)//package-group
32-
let $compatible-packages := versions:find-compatible-packages($package-group//package, $exist-version-semver)
28+
let $compatible-packages := versions:get-packages-satisfying-exist-version($package-group//package, $exist-version-semver)
3329
return
3430
if (exists($compatible-packages)) then
3531
let $newest-package := head($compatible-packages)

0 commit comments

Comments
 (0)