summaryrefslogtreecommitdiffstats
path: root/config-model/src/main/make-xsd-files.sh
blob: 27057a9599d7a3a350dfde5bb89af5a86b46803f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/bin/sh

set -e

srcdir=resources/schema
outputdir=../../target/generated-sources/trang/resources/schema

trangjar=../../target/trang.jar

outputs="services hosts container-include deployment validation-overrides"

gen_xsd() {
    echo "Generating XML schema: $1.rnc -> $1.rng -> $1.xsd"
    java -jar ${trangjar} -I rnc -O rng ${srcdir}/$1.rnc ${outputdir}/$1.rng
    java -jar ${trangjar} -I rng -O xsd ${outputdir}/$1.rng ${outputdir}/$1.xsd
    echo "generated ok."
}

regenall() {
    mkdir -p $outputdir
    for x in $outputs; do gen_xsd $x; done
}

need_regen() {
    for out in $outputs; do
        outfile=${outputdir}/${out}.xsd
        if [ -f ${outfile} ]; then
            for infile in ${srcdir}/*.*; do
                if [ ${infile} -nt ${outfile} ]; then
                    echo "Updated input: ${infile} - regenerating all"
                    return 0
                fi
            done
        else
            echo "Missing output: ${outfile} - regenerating all"
            return 0
        fi
    done
    echo "No updates for schema files"
    return 1
}

if need_regen; then
    regenall
fi