name: Build Reticulum

on:
  push:
    branches: 
      - '*'
    tags:
      - "[0-9]+.[0-9]+.[0-9]+*"
  pull_request:
    branches: 
      - master
    paths-ignore:
      - .gitignore
      - LICENSE

permissions:
  contents: write

concurrency: 
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: 3.x
      - run: |
          python -m pip install -q cryptography
          make test

  package:
    needs: test
    if: startsWith(github.ref, 'refs/tags/')
    runs-on: ubuntu-latest
    environment: ${{ contains(github.ref, '-') && 'development' || 'production' }}
    steps:
      - uses: actions/checkout@v4
      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: 3.x
      - run: |
          python -m pip install -q build wheel setuptools
          make remove_symlinks
          make build_wheel
          make build_pure_wheel
          make create_symlinks
      - uses: actions/upload-artifact@v4
        with:
          name: package
          path: dist/*.whl

  # documentation:
  #   needs: test
  #   if: startsWith(github.ref, 'refs/tags/')
  #   runs-on: ubuntu-latest
  #   environment: ${{ contains(github.ref, '-') && 'development' || 'production' }}
  #   steps:
  #     - uses: actions/checkout@v4
  #     - uses: actions/setup-python@v5
  #       with:
  #         python-version: 3.x
  #     - run: |
  #         sudo apt-get -qq update && sudo apt-get -qq install latexmk texlive-latex-recommended texlive-latex-extra texlive-fonts-recommended
  #         python -m pip -q install sphinx sphinx-copybutton
  #         cd docs && make latexpdf && make epub
  #     - uses: actions/upload-artifact@v4
  #       with:
  #         name: documentation
  #         path: |
  #           docs/build/latex/*.pdf
  #           docs/build/epub/*.epub

  release:
    needs: [package]
    if: startsWith(github.ref, 'refs/tags/')
    runs-on: ubuntu-latest
    environment: ${{ contains(github.ref, '-') && 'development' || 'production' }}
    steps:
      - uses: actions/checkout@v4
      - uses: actions/download-artifact@v4
        with:
          path: .artifacts
      - uses: softprops/action-gh-release@v2
        with:
          files: |
#            .artifacts/package/**.whl
#            .artifacts/documentation/latex/reticulumnetworkstack.pdf
#            .artifacts/documentation/epub/ReticulumNetworkStack.epub
          draft: true
          generate_release_notes: true
          prerelease: ${{ contains(github.ref, '-') }}
          fail_on_unmatched_files: true
