diff --git a/.github/workflows/configuration_validator.yml b/.github/workflows/configuration_validator.yml new file mode 100644 index 0000000..d898eee --- /dev/null +++ b/.github/workflows/configuration_validator.yml @@ -0,0 +1,57 @@ +name: Validate JSONs + +on: [push] + +jobs: + copy-configuration-files: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest] + # Different Node versions possible. Each node version will trigger the action + node-version: + - 18.x + steps: + - name: Checkout source branch + uses: actions/checkout@v4 + with: + # Hardcoded reference to the thema repo, since this repo contains the boilerplate for all repos + repository: Informatievlaanderen/OSLOthema-template + ref: config + # The source folder contains the configuration files, as defined in the thema-template-repository + path: source + - name: Checkout target branch + uses: actions/checkout@v4 + with: + # Dynamic reference to the active repository so that it works immediately when creating a new thema repo + repository: ${{ github.repository }} + ref: standaardenregister + # Target is the folder containing the content of thema-repository + path: target + # Extra step to debug the file structure + - name: List file structure of source dir + shell: bash + run: | + ls source + - name: List file structure of target dir + shell: bash + run: | + ls target + - name: Validate JSON + id: validate + # https://github.com/marketplace/actions/json-yaml-validate + uses: GrantBirki/json-yaml-validate@v2.5.0 + with: + json_schema: source/schemas/configuration.json + json_extension: json + base_dir: target + comment: true + use_gitignore: false + - name: Log validation result to summary + run: | + echo "# Summary" >> $GITHUB_STEP_SUMMARY + if [ ${{ steps.validate.outputs.success }} == "true" ]; then + echo "All configuration file(s) in the repository are valid!" >> $GITHUB_STEP_SUMMARY + else + echo "There are some errors in the configuration file(s). Please check the logs to see which files" >> $GITHUB_STEP_SUMMARY + fi diff --git a/.github/workflows/diff_generator.yml b/.github/workflows/diff_generator.yml new file mode 100644 index 0000000..356faea --- /dev/null +++ b/.github/workflows/diff_generator.yml @@ -0,0 +1,60 @@ +name: Check diff between template and current state +on: [push] + +jobs: + generate-diff: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest] + node-version: + - 18.x + steps: + - name: Checkout source branch + uses: actions/checkout@v4 + with: + repository: Informatievlaanderen/OSLOthema-template + ref: standaardenregister + path: source + + - name: Clone other repository + uses: actions/checkout@v4 + with: + # Dynamic reference to the active repository so that it works immediately when creating a new thema repo + repository: ${{ github.repository }} + ref: standaardenregister + path: + target + # Extra step to debug the file structure + - name: List file structure of source dir + shell: bash + run: | + ls source + - name: List file structure of target dir + shell: bash + run: | + ls target + - name: See which files are unchanged between template and repository + id: generate-diff + shell: bash + # add a rule to ignore .git folder + run: | + identical_files="" + for file in $(find source -type f | grep -v ".git"); do + target_file=${file/source/target} + if [ -f "$target_file" ]; then + diff_output=$(diff -b "$file" "$target_file" | cat -t || true) + if ! [[ $diff_output == *"differ"* ]]; then + identical_files+="- ${file##*/}\n" + fi + fi + done + echo "Identical files:" + echo -e "$identical_files" + echo "# Summary" >> $GITHUB_STEP_SUMMARY + echo "## Identical files compared to the template" >> $GITHUB_STEP_SUMMARY + echo -e "$identical_files" >> $GITHUB_STEP_SUMMARY + if [ -n "$identical_files" ]; then + echo "Error: There are identical files between the template and the repository." >> $GITHUB_STEP_SUMMARY + exit 1 + fi diff --git a/README.md b/README.md new file mode 100644 index 0000000..7edd5a7 --- /dev/null +++ b/README.md @@ -0,0 +1,172 @@ +# OSLOthema-myTheme + +This branch should be used to make the data standard available on the [standards registry of Flanders](https://data.vlaanderen.be/standaarden/). + +## Structure of this repository + +This repository contains four folders to store data standard related information. + +### Charter + +This folder should contain the OSLO charter. Accepted file formats are Word (`.docx`) or PDF (`.pdf`). + +### Descriptions + +For each data standard a short description is required that will be displayed on the detail page on the standards registry. Multiple files (descriptions) are allowed, e.g. one for the application profile and one for the vocabulary. The file format must be Markdown (`.md`). + +### Presentations + +Presentations given by the OSLO Editors during one of the workshop can be stored in this folder. Accepted file format are Powerpoint (`.pptx`) and PDF (`.pdf`). + +### Reports + +After each workshop a report of that workshop is made by the OSLO Editors, which can be stored in this folder. Accepted file format are Word (`.docx`) and PDF (`.pdf`). + +### ap-or-voc-config.json + +This is the file that must be used to configure the standard for publication on the standards registry. If the OSLO Editor wants to publish the application profile and vocabulary on the standards registry separately, then **two** configuration files must be created. + +## Content of the configuration file + +### `title` + +This is the name of the data standard, e.g. *Applicatieprofiel LDES* or *Vocabularium Persoon*. + +### `category` + +The category of the data standard. Allowed values are: +- Applicatieprofiel +- Vocabularium +- Implementatiemodel +- Technische standaard +- Organisatorische interoperabiliteit + +### `usage` + +Is the usage of the data standard mandatory or recommended? Allowed values are: +- Aanbevolen (vrijwillig) +- Verplicht +- Pas toe of leg uit + +### `status` + +Different stages of the data standard lifecycle: +- standaard-in-ontwikkeling +- kandidaat-standaard +- erkende-standaard + +### `responsibleOrganisation` + +The name of the organisation that is responsible for the data standard. + +#### `name` + +The name of the organisation that is responsible for the data standard + +#### `uri` + +The uri of the organisation that is responsible for the data standard. + +To construct the URI of the organisation, the [Wegwijs application](https://wegwijs.vlaanderen.be/#/organisations) can be used to find the OVO-code (identifier of an organisation). The URI has the following structure `https://data.vlaanderen.be/id/organisatie/{OVO-code}`. + +### `publicationDate` + +Date on which the most recent version of the standard was published + +### `descriptionFileName` + +The name of the Markdown file (stored in the `descriptions` folder) that contains the description to be displayed on the standards registry. + +### `specificationDocuments` + +Links to the application profile(s) or vocabulary. This **must** always be an array of objects with the properties `name` and `uri`. + +#### Example +```json +"specificationDocuments": [ + { + "name": "Applicatieprofiel LDES", + "uri": "https://data.vlaanderen.be/doc/applicatieprofiel/ldes" + } +] +``` + +### `documentation` + +Additional documentation to be displayed on the detail page of the data standard, e.g. a mapping described in an Excel file or link to external specification. + +This **must** always be an array of objects containing the properties `name` and `resourceReference`. The `resourceReference`property can be used to reference a URI such as `https://example.org/externalSpec` but it can also be a document that was stored in the `documentation` folder. In that case you can write the name of the file. + +#### Example +```json +"documentation": [ + { + "name": "Voorbeeld van een mapping", + "resourceReference": "mapping-voorbeeld.xlsx" + }, + { + "name": "Link naar externe spec", + "resourceReference": "https://example.org/externalSpec" + } +] +``` + +### `charter` + +The OSLO charter that will be displayed on the detail page of the data standard. This **must** always be an object containing the properties `name` and `resourceReference`. The `resourceReference`property can be used to reference a URI such as `https://example.org/externalSpec` but it can also be a document that was stored in the `charter` folder. In that case you can write the name of the file. + +#### Example +```json +"charter": { + "name": "OSLO Charter", + "resourceReference": "oslo-charter.docx" +} +``` + +### `reports` + +Reports made of the workshop to be displayed on the detail page of the data standard. + +This **must** always be an array of objects containing the properties `name` and `resourceReference`. The `resourceReference`property can be used to reference a URI such as `https://example.org/externalSpec` but it can also be a document that was stored in the `reports` folder. In that case you can write the name of the file. + +#### Example +```json +"reports": [ + { + "name": "Verslag workshop 1", + "resourceReference": "verslag-workshop-1.docx" + } +] +``` + +### `presentations` + +Presentations that were used during the workshop and must be displayed on the detail page of the data standard. + +This **must** always be an array of objects containing the properties `name` and `resourceReference`. The `resourceReference`property can be used to reference a URI such as `https://example.org/externalSpec` but it can also be a document that was stored in the `presentations` folder. In that case you can write the name of the file + +#### Example +```json +"presentations": [ + { + "name": "Presentatie workshop 1", + "resourceReference": "presentatie-workshop-1.pptx" + }, + { + "name": "Presentatie workshop 2", + "resourceReference": "presentatie-workshop-2.pptx" + } +] +``` + +### `dateOfRegistration` + +The date on which the data standard was announced on the working group 'Data Standards'. + +### `dateRecognitionWorkgroup` + +The date on which the data standard was accepted as an acknowledged standard by the working group 'Data standards'. + +### `dateRecognitionSteeringCommittee` + +The date on which the data standard was accepted as an acknowledged standard by the steering committee 'Flemish Information and ICT policy'. diff --git a/ap-or-voc-config.json b/ap-or-voc-config.json new file mode 100644 index 0000000..65e43f7 --- /dev/null +++ b/ap-or-voc-config.json @@ -0,0 +1,20 @@ +{ + "title": "", + "category": "", + "usage": "", + "status": "", + "responsibleOrganisation": { + "name": "Agentschap Digitaal Vlaanderen", + "uri": "https://data.vlaanderen.be/id/organisatie/OVO002949" + }, + "publicationDate": "", + "descriptionFileName": "", + "specificationDocuments": [], + "documentation": [], + "charter": {}, + "reports": [], + "presentations": [], + "dateOfRegistration": "", + "dateOfAcknowledgementByWorkingGroup": "", + "dateOfAcknowledgementBySteeringCommittee": "" +} diff --git a/charter/Template-Werkgroep-Charter-OSLO.docx b/charter/Template-Werkgroep-Charter-OSLO.docx new file mode 100644 index 0000000..1298743 Binary files /dev/null and b/charter/Template-Werkgroep-Charter-OSLO.docx differ diff --git a/descriptions/template-description.md b/descriptions/template-description.md new file mode 100644 index 0000000..dba6e27 --- /dev/null +++ b/descriptions/template-description.md @@ -0,0 +1,4 @@ +Provide a description for this standardization trajectory. +This text will be shown on the OSLO standards registry. + +This shows how to add a [link](https://data.vlaanderen.be/standaarden) to the standards registry \ No newline at end of file diff --git a/presentations/Powerpoint-Template-OSLO-Werkgroep.pptx b/presentations/Powerpoint-Template-OSLO-Werkgroep.pptx new file mode 100644 index 0000000..cee2d72 Binary files /dev/null and b/presentations/Powerpoint-Template-OSLO-Werkgroep.pptx differ diff --git a/reports/Template-Verslag-OSLO-Werkgroep.docx b/reports/Template-Verslag-OSLO-Werkgroep.docx new file mode 100644 index 0000000..fe8db6c Binary files /dev/null and b/reports/Template-Verslag-OSLO-Werkgroep.docx differ