diff --git a/.configref b/.configref new file mode 100644 index 000000000..8de8d6b34 --- /dev/null +++ b/.configref @@ -0,0 +1 @@ +18036 \ No newline at end of file diff --git a/.github/workflows/config.yml b/.github/workflows/config.yml new file mode 100644 index 000000000..099766cac --- /dev/null +++ b/.github/workflows/config.yml @@ -0,0 +1,27 @@ +name: Config +on: [push] + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + +jobs: + sync: + name: Check for config changes + runs-on: ubuntu-latest + steps: + - name: Checkout code + id: checkout-code + uses: actions/checkout@v3 + with: + fetch-depth: 2 + - name: Get changed files + id: changed-files + uses: tj-actions/changed-files@v19 + with: + files: | + server/src/configs/default.json + - name: Run step if any of the listed files above change + if: steps.changed-files.outputs.any_changed == 'true' + run: | + yarn config-check diff --git a/package.json b/package.json index 6a2f7fad8..9f318cb2c 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "missing-locales": "node server/scripts/createLocales.js --missing", "create-area": "node server/scripts/poracleToGeoJSON.js", "config-migrate": "node server/scripts/configMigration.js", + "config-check": "node server/scripts/configCheck.js", "console": "node --experimental-repl-await ./server/scripts/console.js", "migrate:make": "knex --knexfile server/knexfile.cjs migrate:make", "migrate:latest": "knex --knexfile server/knexfile.cjs migrate:latest", diff --git a/server/scripts/configCheck.js b/server/scripts/configCheck.js new file mode 100644 index 000000000..780a8366a --- /dev/null +++ b/server/scripts/configCheck.js @@ -0,0 +1,12 @@ +const fs = require('fs') +const path = require('path') + +fs.writeFileSync( + path.resolve(__dirname, '../../.configref'), + fs + .readFileSync( + path.resolve(__dirname, '../src/configs/default.json'), + 'utf8', + ) + .length.toString(), +) diff --git a/server/src/services/config.js b/server/src/services/config.js index 4791466d9..5478bfe46 100644 --- a/server/src/services/config.js +++ b/server/src/services/config.js @@ -10,6 +10,28 @@ dotenv.config() const config = require('config') +try { + const refLength = +fs.readFileSync( + resolve(__dirname, '../../../.configref'), + 'utf8', + ) + const defaultLength = fs.readFileSync( + resolve(__dirname, '../configs/default.json'), + 'utf8', + ).length + + if (refLength !== defaultLength) { + console.error( + '[CONFIG] It looks like you have modified the `default.json` file, you should not do this! Make all of your config changes in your `local.json` file.', + ) + } +} catch (e) { + console.error( + '[CONFIG] Error trying to read either the default.json or .ref file', + e, + ) +} + if (!fs.existsSync(resolve(`${__dirname}/../configs/local.json`))) { // add database env variables from .env or docker-compose const {