1+ #! /bin/bash
2+ echo Generate FHIR IG
3+
4+ #! /bin/bash
5+ set -euo pipefail
6+
7+ if [ -z " ${1:- } " ]; then
8+ echo " Usage: $0 <version> [api-list...]" >&2
9+ echo " Example: $0 2.0.0-RC2" >&2
10+ exit 1
11+ fi
12+
13+ VERSION=" $1 "
14+ shift
15+
16+
17+ echo Download FHIR IG resources for version ${VERSION}
18+
19+ SCRIPT_DIR=" $( cd " $( dirname " ${BASH_SOURCE[0]} " ) " && pwd) "
20+ WORKSPACE_ROOT=" $( cd " $SCRIPT_DIR /.." && pwd) "
21+
22+ had_errors=0
23+
24+
25+ ARTIFACT=" dsf-fhir-validation"
26+ JARNAME=" ${ARTIFACT} -${VERSION} .jar"
27+ BASE_URL=" https://repo1.maven.org/maven2/dev/dsf/${ARTIFACT} /${VERSION} "
28+ URL=" ${BASE_URL} /${JARNAME} "
29+ OUT_DIR=" $WORKSPACE_ROOT /temp-out/dsf-fhir-validation"
30+
31+ echo " === Processing (${ARTIFACT} ) ==="
32+ echo " Download: ${URL} "
33+ mkdir -p " $OUT_DIR "
34+
35+ TMPFILE=" $( mktemp -t " ${ARTIFACT} .XXXXXX" ) .jar"
36+
37+ if ! curl -sfSL --retry 3 -o " $TMPFILE " " $URL " ; then
38+ echo " Error: Download failed for ${api} : ${URL} " >&2
39+ rm -f " $TMPFILE "
40+ had_errors=1
41+ continue
42+ fi
43+
44+ echo " Extracting ${JARNAME} to ${OUT_DIR} "
45+ # jar is a ZIP archive
46+ if ! unzip -oq " $TMPFILE " -d " $OUT_DIR " ; then
47+ echo " Error: Extraction failed for ${api} " >&2
48+ rm -f " $TMPFILE "
49+ had_errors=1
50+ continue
51+ fi
52+
53+ rm -f " $TMPFILE "
54+ echo " FHIR ressources extracted to ${OUT_DIR} "
55+
56+
57+ if [ " $had_errors " -ne 0 ]; then
58+ echo " One or more downloads/extractions failed." >&2
59+ exit 2
60+ fi
61+
62+ echo Generate implementation guide
63+
64+ # copy template/fhir-ig content to temp-out/fhir-ig-gen
65+
66+ TEMPLATE_DIR=" $SCRIPT_DIR /template/fhir-ig"
67+ IG_OUT_DIR=" $WORKSPACE_ROOT /temp-out/fhir-ig-gen"
68+
69+ mkdir -p " $IG_OUT_DIR "
70+ cp -R " $TEMPLATE_DIR /" * " $IG_OUT_DIR /"
71+ echo " Copied IG template files to ${IG_OUT_DIR} "
72+ # copy downloaded FHIR resources to temp-out/fhir-ig-gen/input/dsf-resources
73+ RESOURCES_SRC_DIR=" $WORKSPACE_ROOT /temp-out/dsf-fhir-validation/fhir"
74+ RESOURCES_DEST_DIR=" $IG_OUT_DIR /input/dsf-resources"
75+
76+ mkdir -p " $RESOURCES_DEST_DIR "
77+ cp -R " $RESOURCES_SRC_DIR /" * " $RESOURCES_DEST_DIR /"
78+ echo " Copied FHIR resources to ${RESOURCES_DEST_DIR} "
79+
80+ # remove all non-xml files from resources dest dir
81+ find " $RESOURCES_DEST_DIR " -type f ! -name " *.xml" -delete
82+ echo " Removed non-XML files from ${RESOURCES_DEST_DIR} "
83+ # remove all xml files that do not start with dsf-
84+ find " $RESOURCES_DEST_DIR " -type f -name " *.xml" ! -name " dsf-*" -delete
85+ echo " Removed non-dsf XML files from ${RESOURCES_DEST_DIR} "
86+
87+ echo " FHIR IG generation setup completed. The IG source is in ${IG_OUT_DIR} ."
88+
89+ UPDATE_PUBLISHER_SCRIPT=" $IG_OUT_DIR /_updatePublisher.sh"
90+ GENONCE_SCRIPT=" $IG_OUT_DIR /_genonce.sh"
91+
92+ # Set Java options as in CI
93+ export _JAVA_OPTIONS=" -Xmx8g -Xms4g"
94+ echo " Set _JAVA_OPTIONS=${_JAVA_OPTIONS} "
95+
96+ # Run updatePublisher if available (make executable and pass --yes)
97+ if [ -f " $UPDATE_PUBLISHER_SCRIPT " ]; then
98+ echo " Found $UPDATE_PUBLISHER_SCRIPT , making executable and running with --yes"
99+ chmod +x " $UPDATE_PUBLISHER_SCRIPT "
100+ (cd " $IG_OUT_DIR " && ./_updatePublisher.sh --yes)
101+ echo " FHIR IG publisher update completed."
102+ else
103+ echo " No _updatePublisher.sh script found in ${IG_OUT_DIR} . Please update the IG publisher manually."
104+ fi
105+
106+ # Run sushi if available
107+ if command -v sushi > /dev/null 2>&1 ; then
108+ echo " Running sushi in ${IG_OUT_DIR} "
109+ (cd " $IG_OUT_DIR " && sushi .)
110+ echo " sushi execution completed."
111+ else
112+ echo " sushi not found in PATH. Please install sushi to build the IG." >&2
113+ fi
114+
115+ # Run genonce if available (make executable)
116+ if [ -f " $GENONCE_SCRIPT " ]; then
117+ echo " Found $GENONCE_SCRIPT , making executable and running"
118+ chmod +x " $GENONCE_SCRIPT "
119+ (cd " $IG_OUT_DIR " && ./_genonce.sh)
120+ echo " FHIR IG generation completed."
121+ else
122+ echo " No _genonce.sh script found in ${IG_OUT_DIR} . Please run the IG generation manually."
123+ fi
0 commit comments