@@ -23,16 +23,16 @@ declare namespace expath="http://expath.org/ns/pkg";
23
23
declare function scanrepo:store ($collection-uri as xs:string, $resource-name as xs:string, $contents as item ()?) as xs:string {
24
24
xmldb:store ($collection-uri, $resource-name, $contents) !
25
25
(
26
- sm:chgrp (. , config:repo-permissions ()?group ),
27
- sm:chmod (. , config:repo-permissions ()?mode),
26
+ sm:chgrp (xs:anyURI (.) , config:repo-permissions ()?group ),
27
+ sm:chmod (xs:anyURI (.) , config:repo-permissions ()?mode),
28
28
.
29
29
)
30
30
};
31
31
32
32
(:~
33
33
: Helper function to store a package's icon and transform its metadata into the format needed for raw-metadata
34
34
:)
35
- declare
35
+ declare
36
36
%private
37
37
function scanrepo:handle-icon ($path as xs:string, $data as item ()?, $param as item ()*) as element (icon) {
38
38
let $pkgName := substring-before ($param, ".xar" )
@@ -46,20 +46,20 @@ function scanrepo:handle-icon($path as xs:string, $data as item()?, $param as it
46
46
(:~
47
47
: Helper function to transform expath-pkg.xml metadata into the format needed for raw-metadata
48
48
:)
49
- declare
49
+ declare
50
50
%private
51
51
function scanrepo:handle-expath-pkg-metadata ($root as element (expath:package)) as element ()* {
52
- $root/(@name, expath:title, @abbrev, @version ) !
52
+ $root/(@name, expath:title, @abbrev, @version ) !
53
53
element { local-name (.) } { ./string () },
54
- $root/expath:dependency[@processor eq $config:exist-processor-name] !
54
+ $root/expath:dependency[@processor eq $config:exist-processor-name] !
55
55
element requires { ./@* }
56
56
};
57
57
58
58
(:~
59
59
: Helper function to transform repo.xml's changelog metadata into the format needed for raw-metadata
60
60
:)
61
- declare
62
- %private
61
+ declare
62
+ %private
63
63
function scanrepo:copy-changelog ($nodes as node ()*) {
64
64
for $node in $nodes
65
65
return
@@ -76,22 +76,22 @@ function scanrepo:copy-changelog($nodes as node()*) {
76
76
(:~
77
77
: Helper function to transform repo.xml metadata into the format needed for raw-metadata
78
78
:)
79
- declare
79
+ declare
80
80
%private
81
81
function scanrepo:handle-repo-metadata ($root as element (repo:meta)) as element ()+ {
82
- $root/(repo:author, repo:description, repo:website, repo:license, repo:type , repo:note) !
82
+ $root/(repo:author, repo:description, repo:website, repo:license, repo:type , repo:note) !
83
83
element { local-name (.) } { ./string () },
84
84
element changelog { scanrepo:copy-changelog ($root/repo:changelog/repo:change) }
85
85
};
86
86
87
87
(:~
88
88
: Helper function to handle transformation of icon and package metadata for extraction from the xar
89
89
:)
90
- declare
90
+ declare
91
91
%private
92
92
function scanrepo:entry-data ($path as xs:anyURI, $type as xs:string, $data as item ()?, $param as item ()*) as item ()*
93
93
{
94
- if (starts-with ($path, "icon" )) then
94
+ if (starts-with ($path, "icon" )) then
95
95
scanrepo:handle-icon ($path, $data, $param)
96
96
else
97
97
let $root := $data/*
@@ -108,38 +108,38 @@ function scanrepo:entry-data($path as xs:anyURI, $type as xs:string, $data as it
108
108
(:~
109
109
: Helper function to select assets from a package for extraction from the xar
110
110
:)
111
- declare
112
- %private
111
+ declare
112
+ %private
113
113
function scanrepo:entry-filter ($path as xs:anyURI, $type as xs:string, $param as item ()*) as xs:boolean {
114
114
starts-with ($path, "icon." ) or $path = ("repo.xml" , "expath-pkg.xml" )
115
115
};
116
116
117
117
(:~
118
118
: Take a group of packages with the same package name (a URI) and generate a package-group
119
119
:)
120
- declare
120
+ declare
121
121
(: %private:)
122
122
function scanrepo:generate-package-group ($packages as element (package)*) {
123
123
if (count (distinct-values ($packages/name)) gt 1 ) then
124
124
error (QName ("scanrepo" , "group-error" ), "Supplied packages do not have the same name" )
125
125
else
126
126
(: Identify newest version of the package; sort previous versions newest to oldest; use SemVer 2.0 rules, coercing where needed :)
127
127
let $versions := $packages/version
128
- let $version-maps :=
128
+ let $version-maps :=
129
129
$versions ! map:merge ((
130
- map:entry ("semver" , semver:parse (., true ()) => semver:serialize ()),
130
+ map:entry ("semver" , semver:parse (., true ()) => semver:serialize ()),
131
131
map:entry ("version" , .)
132
132
))
133
133
let $sorted-semvers := semver:sort ($version-maps?semver) => reverse ()
134
- let $sorted-packages :=
134
+ let $sorted-packages :=
135
135
for $semver in $sorted-semvers
136
136
return
137
137
$version-maps[?semver eq $semver]?version /..
138
138
let $newest-package := $sorted-packages => head ()
139
139
let $legacy-abbrevs := distinct-values ($packages/abbrev)[not (. = $newest-package/abbrev)]
140
140
return
141
141
element package-group {
142
- $newest-package/(title, name, abbrev),
142
+ $newest-package/(title, name, abbrev),
143
143
$legacy-abbrevs ! element abbrev { attribute type { "legacy" }, . },
144
144
element packages { $sorted-packages }
145
145
}
@@ -155,9 +155,9 @@ declare function scanrepo:update-package-group($raw-package-name as xs:string) {
155
155
let $package-groups := doc ($config:package-groups-doc)/package-groups
156
156
let $current-package-group := $package-groups/package-group [name eq $raw-package-name]
157
157
return
158
- if (exists ($current-package-group)) then
159
- update replace $current-package-group with scanrepo:generate-package-group ($raw-packages-to-group)
160
- else
158
+ if (exists ($current-package-group)) then
159
+ update replace $current-package-group with scanrepo:generate-package-group ($raw-packages-to-group)
160
+ else
161
161
update insert scanrepo:generate-package-group ($raw-packages-to-group) into $package-groups
162
162
};
163
163
@@ -168,9 +168,9 @@ declare function scanrepo:add-raw-package($raw-package as element(package)) {
168
168
let $raw-packages := doc ($config:raw-packages-doc)/raw-packages
169
169
let $current-raw-package := $raw-packages/package[@path = $raw-package/@path]
170
170
return
171
- if (exists ($current-raw-package)) then
171
+ if (exists ($current-raw-package)) then
172
172
update replace $current-raw-package with $raw-package
173
- else
173
+ else
174
174
update insert $raw-package into $raw-packages
175
175
};
176
176
@@ -183,7 +183,7 @@ declare function scanrepo:extract-raw-package($xar-filename as xs:string) as ele
183
183
let $package-metadata :=
184
184
compression:unzip (
185
185
$xar-binary,
186
- scanrepo:entry-filter#3 ,
186
+ scanrepo:entry-filter#3 ,
187
187
(),
188
188
scanrepo:entry-data#4 ,
189
189
$xar-filename
@@ -218,8 +218,8 @@ declare function scanrepo:rebuild-package-groups() as xs:string {
218
218
group by $name := $package/name
219
219
return
220
220
scanrepo:generate-package-group ($package)
221
- let $package-groups :=
222
- element package-groups {
221
+ let $package-groups :=
222
+ element package-groups {
223
223
for $group in $groups
224
224
order by $group/abbrev[not (@type = "legacy" )]
225
225
return
@@ -233,8 +233,8 @@ declare function scanrepo:rebuild-package-groups() as xs:string {
233
233
: Rebuild the raw-packages metadata from all stored packages
234
234
:)
235
235
declare function scanrepo:rebuild-raw-packages () as xs:string {
236
- let $raw-packages :=
237
- element raw-packages {
236
+ let $raw-packages :=
237
+ element raw-packages {
238
238
for $package-xar in xmldb:get-child-resources ($config:packages-col)[ends-with (., ".xar" )]
239
239
order by $package-xar collation "http://www.w3.org/2013/collation/UCA?numeric=yes"
240
240
return
0 commit comments