@@ -30,12 +30,68 @@ jobs:
3030 mkdir content
3131 cp -r index.html data media js content/
3232
33- - name : Extract pubDomain
34- id : pubdomain
33+ - name : Extract & validate publishing metadata
34+ id : metadata
35+ shell : bash
3536 run : |
36- DOMAIN=$(grep -Po 'pubDomain:\s*"\K[^"]+' content/js/config.js | tr -d '[:space:]')
37- echo "pubdomain=$DOMAIN" >> $GITHUB_OUTPUT
38-
37+ set -euo pipefail
38+
39+ # 1. Parse waarden uit config.js
40+ DOMAIN=$(grep -Po 'pubDomain:\s*"\K[^"]+' content/js/config.js | tr -d '[:space:]' || true)
41+ SPEC_STATUS=$(grep -Po 'specStatus:\s*"\K[^"]+' content/js/config.js | tr -d '[:space:]' || true)
42+ SPEC_TYPE=$(grep -Po 'specType:\s*"\K[^"]+' content/js/config.js | tr -d '[:space:]' || true)
43+ SHORT_NAME=$(grep -Po 'shortName:\s*"\K[^"]+' content/js/config.js | tr -d '[:space:]' || true)
44+ PUBLISH_DATE=$(grep -Po 'publishDate:\s*"\K[^"]+' content/js/config.js | tr -d '[:space:]' || true)
45+
46+ # 1a. Check op ontbrekende waarden
47+ MISSING=()
48+ for VAR in DOMAIN SPEC_STATUS SPEC_TYPE SHORT_NAME PUBLISH_DATE; do
49+ if [ -z "${!VAR}" ]; then
50+ MISSING+=("$VAR")
51+ fi
52+ done
53+ if [ ${#MISSING[@]} -gt 0 ]; then
54+ echo "::error title=Ontbrekende metadata::De volgende verplichte waarden ontbreken in config.js: ${MISSING[*]}"
55+ exit 1
56+ fi
57+
58+ echo "🔍 Gevonden: pubDomain=$DOMAIN, specStatus=$SPEC_STATUS, specType=$SPEC_TYPE, shortName=$SHORT_NAME, publishDate=$PUBLISH_DATE"
59+
60+ # 2. Download pubDomainList.json indien nog niet aanwezig
61+ CONFIG_JSON=pubDomainList.json
62+ if [[ ! -f "$CONFIG_JSON" ]]; then
63+ curl -sSL \
64+ https://raw.githubusercontent.com/Geonovum/respec-utils/master/src/autodeploy/config/pubDomainList.json \
65+ -o "$CONFIG_JSON"
66+ fi
67+
68+ # 3. Check of pubDomain bestaat in de Geonovum-list
69+ if ! jq -e --arg domain "$DOMAIN" '.Geonovum[] | select(.pubDomain==$domain)' "$CONFIG_JSON" >/dev/null; then
70+ echo "::error title=Invalid pubDomain::pubDomain '$DOMAIN' niet gevonden in $CONFIG_JSON"
71+ exit 1
72+ fi
73+
74+ # 4. Valideer publishDate-formaat en geldigheid
75+ if ! [[ "$PUBLISH_DATE" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]; then
76+ echo "::error title=Invalid publishDate formaat::publishDate '$PUBLISH_DATE' heeft niet het formaat yyyy-MM-dd"
77+ exit 1
78+ fi
79+ if ! date -d "$PUBLISH_DATE" "+%Y-%m-%d" >/dev/null 2>&1; then
80+ echo "::error title=Invalid publishDate::publishDate '$PUBLISH_DATE' is geen geldige datum"
81+ exit 1
82+ fi
83+
84+ # 5. Bouw de volledige foldernaam en exporteer als output
85+ FOLDER_PATH="${DOMAIN}/${SPEC_STATUS}-${SPEC_TYPE}-${SHORT_NAME}-${PUBLISH_DATE}/"
86+ echo "folderPath=$FOLDER_PATH" >> $GITHUB_OUTPUT
87+ echo "pubdomain=$DOMAIN" >> $GITHUB_OUTPUT
88+ echo "specStatus=$SPEC_STATUS" >> $GITHUB_OUTPUT
89+ echo "specType=$SPEC_TYPE" >> $GITHUB_OUTPUT
90+ echo "shortName=$SHORT_NAME" >> $GITHUB_OUTPUT
91+ echo "publishDate=$PUBLISH_DATE" >> $GITHUB_OUTPUT
92+
93+ echo "✅ Metadata en folder-path gevalideerd en opgeslagen"
94+
3995 - name : Checkout private docs
4096 uses : actions/checkout@v4
4197 with :
57113 base : main
58114 author : ${{ github.actor }} <${{ github.actor_id }}+${{ github.actor }}@users.noreply.github.com>
59115 title : " Automated update from ${{ github.repository }}"
60- body : " Update vanuit workflow voor domein ${{ steps.pubdomain.outputs.pubdomain }}"
116+ body : " Update vanuit workflow voor domein ${{ steps.pubdomain.outputs.pubdomain }}" # folder hieraan toevoegen
61117 labels : automated pr
62118 delete-branch : true
63119 reviewers : wilkoquak,fterpstra,lvdbrink
0 commit comments