Skip to content

Instantly share code, notes, and snippets.

@grantmacken
Created December 13, 2017 19:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save grantmacken/a118c40446b9de72cb61b8bf63c79f1c to your computer and use it in GitHub Desktop.
Save grantmacken/a118c40446b9de72cb61b8bf63c79f1c to your computer and use it in GitHub Desktop.
xQuery pre-install for xar
xquery version "3.1";
import module namespace xdb="http://exist-db.org/xquery/xmldb";
declare variable $home external;
declare variable $dir external;
declare variable $target external;
declare variable $domain := substring-after( string($target), '/apps/');
declare variable $pages := 'data/' || $domain || '/docs/pages';
declare variable $posts := 'data/' || $domain || '/docs/posts';
declare variable $recycle := 'data/' || $domain || '/docs/recycle';
declare variable $uploads := 'data/' || $domain || '/docs/uploads';
declare variable $mentions := 'data/' || $domain || '/docs/mentions';
declare variable $media := 'data/' || $domain || '/media';
declare function local:mkcol-recursive($collection, $components) {
if (exists($components)) then
let $newColl := concat($collection, "/", $components[1])
return (
xdb:create-collection($collection, $components[1]),
local:mkcol-recursive($newColl, subsequence($components, 2))
)
else
()
};
declare function local:mkcol($collection, $path) {
local:mkcol-recursive($collection, tokenize($path, "/"))
};
local:mkcol("/db/system/config", $target),
local:mkcol("/db", $pages),
local:mkcol("/db", $posts),
local:mkcol("/db", $recycle),
local:mkcol("/db", $uploads),
local:mkcol("/db", $mentions),
local:mkcol("/db", $media),
xdb:store-files-from-pattern(concat("/db/system/config", $target), $dir, "*.xconf")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment