# Workflow to run basic integrity checks on OMT`s new Pull Requests and commits pushed into OMT repo

name: OpenMapTiles Integrity CI

on:
  push:
    branches: [ master, master-tools ]
  pull_request:

jobs:

  integrity_test:
    name: Run integrity test
    runs-on: ubuntu-latest
    steps:

      - name: Checkout the changes
        uses: actions/checkout@v4

      - name: Run quickstart for a small area
        env:
          area: monaco
          QUIET: 1
        run: |
          echo MIN_ZOOM=0 >> .env
          echo MAX_ZOOM=14 >> .env
          ./quickstart.sh $area

      - name: Save quickstart.log
        uses: actions/upload-artifact@v4
        with:
          name: quickstart.log
          path: quickstart.log

      - name: Test etldoc images
        run: |
          export TEST_MODE=yes
          make generate-devdoc

      - name: Run quickstart and update in DIFF mode
        env:
          area: europe/monaco
          QUIET: 1
        run: |
          echo MIN_ZOOM=0 >> .env
          echo MAX_ZOOM=14 >> .env
          echo DIFF_MODE=true >> .env
          # Cleanup
          rm -fr data build cache
          # Create data/$area.repl.json
          make download-geofabrik area=$area
          # Download 2+ month old data
          export old_date=$(date --date="$(date +%Y-%m-15) -2 month" +'%y%m01')
          echo Downloading $old_date extract of $area
          docker compose run --rm --user=$(id -u):$(id -g) openmaptiles-tools sh -c "wget -O data/$area.osm.pbf http://download.geofabrik.de/$area-$old_date.osm.pbf"
          # Initial import and tile generation
          ./quickstart.sh $area
          sleep 2
          echo Downloading updates
          # Loop to recover from potential "ERROR 429: Too Many Requests"
          docker compose run --rm --user=$(id -u):$(id -g) openmaptiles-tools sh -c "
            while ! osmupdate --keep-tempfiles --base-url=$(sed -n 's/ *\"replication_url\": //p' data/$area.repl.json) data/$area.osm.pbf data/changes.osc.gz ; do 
              sleep 2;
              echo Sleeping...;
              sleep 630;
            done"
          echo Downloading updates completed
          echo Importing updates
          make import-diff
          echo Generating new tiles
          make generate-tiles-pg
