name: Inkycal testing

on:
  push:
    branches:
      - main

jobs:
  clone-setup-install:
    name: Clone, Setup, and Install
    runs-on: ubuntu-latest

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v3
        with:
          ref: main

      - name: Set up Python 3.9
        uses: actions/setup-python@v4
        with:
          python-version: 3.9

      - name: Install Dependencies
        run: |
          python3 -m venv venv
          source venv/bin/activate
          python -m pip install --upgrade pip
          pip install wheel
          pip install -e .
          cd ..

      - name: Create Archive
        run: |
          mkdir artefacts
          tar -czf artefacts/workspace.tar.gz --exclude=./artefacts .

      - name: Save Workspace Archive
        uses: actions/upload-artifact@v2
        with:
          name: workspace
          path: artefacts/workspace.tar.gz

  test:
    name: Run Tests
    needs: clone-setup-install
    runs-on: ubuntu-latest

    steps:
      - name: Restore Workspace
        uses: actions/download-artifact@v2
        with:
          name: workspace

      - name: Extract Workspace Archive
        run: |
          tar -xzf workspace.tar.gz

      - name: Run Tests
        env:
          OPENWEATHERMAP_API_KEY: ${{ secrets.OPENWEATHERMAP_API_KEY }}
          SAMPLE_ICAL_URL: ${{ secrets.SAMPLE_ICAL_URL }}
          TEST_ICAL_URL: ${{ secrets.TEST_ICAL_URL }}
          TODOIST_API_KEY: ${{ secrets.TODOIST_API_KEY }}
        run: |
          source venv/bin/activate
          cd inkycal/tests
          wget https://raw.githubusercontent.com/aceinnolab/Inkycal/assets/tests/settings.json
          for f in *.py; do python3 "$f"; done

  generate-docs:
    name: Generate Docs
    needs: clone-setup-install
    runs-on: ubuntu-latest

    steps:
      - name: Restore Workspace
        uses: actions/download-artifact@v2
        with:
          name: workspace

      - name: Extract Workspace Archive
        run: |
          tar -xzf workspace.tar.gz

      - name: Generate Docs
        run: |
          source venv/bin/activate
          cd docsource
          make html

  publish-docs:
    name: Publish Docs
    needs: generate-docs
    runs-on: ubuntu-latest

    steps:
      - name: Restore Workspace
        uses: actions/download-artifact@v2
        with:
          name: workspace

      - name: Extract Workspace Archive
        run: |
          tar -xzf workspace.tar.gz

      - name: Publish Docs to Github Pages
        run: |
          echo "$PWD"
          ls
          source venv/bin/activate
          cd docs 
          echo "$PWD"
          ls
          make html && cd ..
          echo "$PWD"
          ls
          cp -r docsource/_build/html/. docs/
          git config --global user.name 'GitHub Actions'
          git config --global user.email 'actions@github.com'
          git add docs
          git commit -m "Update documentation"
          git push --force --quiet