Gradle plugin for creating INTERLIS repositories.
Der ModelRepositoryCreator-Task erstellt aus einem Verzeichnis (inkl. Unterverzeichnisses) mit INTERLIS-Modelldateien eine ilimodels.xml-Datei (gemäss IliRepository20), welche die Grundlage für eine INTERLIS-Modellablage dient.
Der Inhalt wird aus den INTERLIS-Modellen direkt ermittelt. Dementsprechend können nur die Attributewerte in der ilimodels.xml-Datei gespeichert werden, deren Information auch im Modell steckt.
Die ilimodels.xml-Datei wird in den modelsDir-Ordner gespeichert. Die Pfadangaben der INTERLIS-Modelldateien in der ilimodels.xml-Datei sind relativ zu modelsDir.
Falls man für die Herstellung der ilimodels.xml möglichst unabhängig sein will von fremden Repositories, können fremde Modelle in einen models-ext-Ordner kopiert werden. Dieser muss auf der gleichen Ebene wie der modelsDirectory
-Ordner liegen. Es werden keine Unterverzeichnisse berücksichtigt.
task createIliModels(type: InterlisRepositoryCreator) {
modelsDirectory = file("models/")
dataFile = file("ilimodels.xml")
}
Parameter | Beschreibung |
---|---|
modelsDirectory | File . Lokales Verzeichnis mit den INTERLIS-Modelldateien. Modelle in einem Unterordner replaced werden ignoriert. |
dataFile | File . Name der ilimodels.xml-Datei. Wird im modelsDirectory-Verzeichnis gespeichert. Optional, default ilimodels.xml . |
modelRepos | String . Modell-Respositories, die beim Kompilieren der INTERLIS-Modelldateien verwendet werden. Alle Ordner und Unterordner im modelsDirectory -Verzeichnis werden immer für das Kompilieren berücksichtigt. Weil diese Ordner vor den Standard-Repos verwendet werden, dauert es nun länger, weil immer z.B. Units gesucht wird. Um dies zu beschleunigen (oder um möglichst autark zu sein), kann man in einen models-ext-Ordner solche Basis-/Core-Modelle kopieren. Die Modelle dieses models-ext-Ordners erscheinen nicht in der hergestellten ilimodels.xml-Datei solang der Ordner nicht selber ein Unterordner ist. Optional, kein Default-Wert. |
technicalContact | String. URI für technischen Kontakt. Wird nur verwendet, falls das Modell kein gleichlautendes Metaattribut aufweist. Optional, default wird im Bedarfsfall mailto:agi@bd.so.ch verwendet. |
ilismeta | Boolean . Bei true wird für jedes INTERLIS-Modell die dazugehörige IlisMeta16-Datei (XTF) erzeugt. |
ignoredDirectories | String . Verzeichnisse, die als Unterverzeichnis im modelsDirectory liegen aber vollständig ignoriert werden sollen. Kein Default-Wert. |
Der ConfigDataRepositoryCreator-Task erstellt aus einem Verzeichnis (inkl. zwei Subverzeichnissen-Hierarchien) mit ini-Dateien eine ilidata.xml-Datei. Er prüft dabei nicht, ob die ini-Datei tatsächlich eine Config- oder Metaconfig-Datei für ilivalidator ist. Ebenso wenig wird die http://codes.interlis.ch/model
-Kategorie geschrieben (Modell, für das die Config gültig ist). Die Information fehlt dazu in den ini-Dateien (Eventuell eine Sidecar-Datei oder separater Info-Block in den ini-Dateien machen).
task createConfigDataXml(type: ConfigDataRepositoryCreator) {
configDir = file('config')
dataFile = file('ilidata.xml')
owner = 'mailto:foo@bar.ch'
}
Parameter | Beschreibung |
---|---|
configDirectory | File . Lokales Verzeichnis mit den ini-Datein (in den Unterverzeichnissen). |
dataFile | File . Name der ilidata.xml-Datei. Default ilidata.xml . |
owner | String . URI des Eigentümers. Default mailto:agi@bd.so.ch |
Der UsabILItyHubCreator-Task erstellt aus einem Verzeichnis mit lokalen ilihub-Repositories (ilidata.xml-Datei und Subverzeichnissen mit QML, ini, yaml, etc.) eine gemeinsame ilidata.xml-Datei. Es werden die Verzeichnisse innerhalb des angegebenen Verzeichnisses durchsucht. Diese müssen eine ilidata.xml-Datei aufweisen. Weitere Subverzeichnisse werden nicht berücksichtigt. Die erstellte ilidata.xml-Datei wird mit ilivalidator geprüft. Es wurde ein zusätzlicher Constraint eingeführt: Die Verzeichnisse müssen mit einem Amtskürzel beginnen. Die veränderte Modelldatei ist Bestandteil dieses Code-Repos und muss ggf. nachgeführt werden.
task createIliDataXml(type: UsabILItyHubCreator) {
reposDirectory = file('ilihub')
dataFile = file()'ilidata.xml')
}
Parameter | Beschreibung |
---|---|
reposDir | File . Lokales Verzeichnis mit den lokalen ilihub-Repos. |
dataFile | File . Name der ilidata.xml-Datei. Wird im reposDir-Verzeichnis gespeichert. Optional, default ilimodels.xml . |
Java 17 or later.
rm -rf .ilicache
: Es wird das Standardverzeichnis des ilicaches verwendetuser.home
. Aus diesem Grund kann es zu Konflikten kommen und das Verzeichnis muss vor dem Ausführen des Tasks gelöscht werden (händisch oder mit Gradle task).- Die Metaattribute
technicalContact
undfurtherInformation
werden aus dem INTERLIS-Modell ausgelesen und als Attribute in derilimodels.xml
-Datei verwendet. Weil diese vom TypINTERLIS.URI
sein müssen, kommt es momentan zu Fehler beim Validieren derilimodels.xml
-Datei (wegen einiger unserer Modelle). Im Plugin-Code werden minimale Korrekturen vorgenommen oder es wird ein Standardwert gesetzt. Die Metaattribute in den entsprechenden Modellen müssen zu einem späteren Zeitpunkt korrigiert werden (SOGIS only). - Beim Kompilieren der Modelle müssen allenfalls lokalen Verzeichnisse berücksichtigt werden, weil lokale Modelle wiederum lokale Modelle importieren. Dazu kann der Parameter
modelRepos
verwendet werden. - Gradle-Plugin-Upload: Es wird eine alte Version des Plugins verwendet. Mit Version 1.0 (o.ä) gibt es einen API-Break.