From b10df9b578289fa9002c293b36be1be9b97287e8 Mon Sep 17 00:00:00 2001 From: Fred Boniface Date: Fri, 8 Mar 2024 12:22:56 +0000 Subject: [PATCH] Add YAML merge script --- .gitea/workflows/auto_pr.yaml | 6 +++++ .gitignore | 2 ++ package.json | 14 ++++++++++++ scripts/merge-yaml.js | 41 +++++++++++++++++++++++++++++++++++ 4 files changed, 63 insertions(+) create mode 100644 .gitignore create mode 100644 package.json create mode 100644 scripts/merge-yaml.js diff --git a/.gitea/workflows/auto_pr.yaml b/.gitea/workflows/auto_pr.yaml index 047b284..172303e 100644 --- a/.gitea/workflows/auto_pr.yaml +++ b/.gitea/workflows/auto_pr.yaml @@ -15,6 +15,12 @@ jobs: - name: Validate YAML uses: https://github.com/GrantBirki/json-yaml-validate@v2.6.1 + + - name: Install Dependencies + run: npm i + + - name: Merge to gw.yaml + run: node ./scripts/merge-yaml.js - name: Create PR uses: https://github.com/peter-evans/create-pull-request@v6 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..25c8fdb --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +node_modules +package-lock.json \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..03bc394 --- /dev/null +++ b/package.json @@ -0,0 +1,14 @@ +{ + "name": "merge-yaml", + "version": "1.0.0", + "description": "Contains OwlBoard provided data. Queried programatically by the OwlBoard dbmanager application to be loaded into the database.", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "dependencies": { + "yaml": "^2.4.1" + } +} diff --git a/scripts/merge-yaml.js b/scripts/merge-yaml.js new file mode 100644 index 0000000..1940d01 --- /dev/null +++ b/scripts/merge-yaml.js @@ -0,0 +1,41 @@ +const fs = require('fs') +const yaml = require('yaml') + +const directoryPath = './pis/' + +function sortAndMergeYAMLFiles() { + try { + const files = fs.readdirSync(directoryPath); + + let mergedData = []; + + files.forEach(file => { + const data = fs.readFileSync(directoryPath + file, 'utf-8'); + + const parsedData = yaml.parse(data) + + if (parsedData && typeof parsedData === 'object' && parsedData.pis) { + mergedData.push(...parsedData.pis) + } else { + if (Array.isArray(parsedData)) { + mergedData.push(...parsedData); + } else { + console.error("Incorrect YAML") + } + } + }); + + mergedData.sort((a, b) => { + const codeA = parseInt(a.code); + const codeB = parseInt(b.code); + return codeA - codeB + }) + + const mergedYaml = yaml.stringify(mergedData); + console.log(mergedYaml) + } catch(err) { + console.error('Error merging YAML:', err) + } +} + +sortAndMergeYAMLFiles(); \ No newline at end of file