name: "Pull Request Sphinx Docs Check"

on:
  push:
    branches: [ main ]

  pull_request:
    branches: [ main ]

jobs:
  check-source-changes:
    runs-on: ubuntu-latest
    outputs:
      run_job: ${{ steps.changed-files.outputs.any_changed }}
    steps:
      - name: Checkout Sourcecode
        uses: actions/checkout@v4

      - name: Check for changes in source code
        id: changed-files
        uses: tj-actions/changed-files@v45.0.3
        with:
          files: |
            sphinx_docs_build/source/*.rst
            sphinx_docs_build/source/conf.py
            sphinx_docs_build/requirements.txt
            sphinx_docs_build/Makefile
            sphinx_docs_build/make.bat

  sphinx_docs_build:
    runs-on: ubuntu-latest
    needs: check-source-changes
    if: needs.check-source-changes.outputs.run_job == 'true'
    steps:
      - name: Check out repository code
        uses: actions/checkout@v4

      - name: Set up Python 3.10 env for sphinx...
        uses: actions/setup-python@v5
        with:
          python-version: "3.10"

      - name: Install python3/os requirements...
        uses: carlkidcrypto/os-specific-runner@v2.1.1
        with:
          linux: sudo apt-get update;
                 sudo apt-get upgrade -y;
                 sudo apt-get install -y snmpd libsnmp-dev libperl-dev snmp-mibs-downloader valgrind;
                 sudo systemctl stop snmpd;
                 sudo download-mibs;
                 mkdir -m 0755 ~/.snmp;
                 echo 'mibs +ALL' > ~/.snmp/snmp.conf;
                 cd /home/runner/work/ezsnmp/ezsnmp/ &&
                 python -m pip install --upgrade wheel &&
                 python -m pip install --upgrade setuptools &&
                 python -m pip install --upgrade pip &&
                 python -m pip install -r sphinx_docs_build/requirements.txt &&
                 python -m pip install . --user;

      - name: Run sphinx...
        uses: carlkidcrypto/os-specific-runner@v2.1.1
        with:
          linux: cd /home/runner/work/ezsnmp/ezsnmp/sphinx_docs_build;
                 mkdir source/_static;
                 mkdir source/_templates;
                 make clean && make html SPHINXOPTS="-W"

      - uses: actions/upload-artifact@v4
        with:
          name: HTML Documentation
          path: docs/