name: CI
on:
  push:
  pull_request:

jobs:
  tests:
    strategy:
      matrix:
        # os: [ubuntu-latest, windows-latest]
        os: [ubuntu-latest]
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v3
      - name: Install Neovim
        shell: bash
        run: |
          mkdir -p /tmp/nvim
          wget -q https://github.com/neovim/neovim/releases/download/nightly/nvim.appimage -O /tmp/nvim/nvim.appimage
          cd /tmp/nvim
          chmod a+x ./nvim.appimage
          ./nvim.appimage --appimage-extract
          echo "/tmp/nvim/squashfs-root/usr/bin/" >> $GITHUB_PATH
      - name: Run Tests
        run: |
          nvim --version
          [ ! -d tests ] && exit 0
          nvim --headless -u tests/init.lua -c "PlenaryBustedDirectory tests/ {minimal_init = 'tests/init.lua', sequential = true}"
  docs:
    runs-on: ubuntu-latest
    needs: tests
    if: ${{ github.ref == 'refs/heads/main' }}
    steps:
      - uses: actions/checkout@v3
      - name: panvimdoc
        uses: kdheepak/panvimdoc@main
        with:
          vimdoc: neodev.nvim
          version: "Neovim >= 0.8.0"
          demojify: true
          treesitter: true
      - name: Push changes
        uses: stefanzweifel/git-auto-commit-action@v4
        with:
          commit_message: "chore(build): auto-generate vimdoc"
          commit_user_name: "github-actions[bot]"
          commit_user_email: "github-actions[bot]@users.noreply.github.com"
          commit_author: "github-actions[bot] <github-actions[bot]@users.noreply.github.com>"
  release:
    name: release
    if: ${{ github.ref == 'refs/heads/main' }}
    needs:
      - docs
      - tests
    runs-on: ubuntu-latest
    steps:
      - uses: google-github-actions/release-please-action@v3
        id: release
        with:
          release-type: simple
          package-name: neodev.nvim
      - uses: actions/checkout@v3
      - name: tag stable versions
        if: ${{ steps.release.outputs.release_created }}
        run: |
          git config user.name github-actions[bot]
          git config user.email github-actions[bot]@users.noreply.github.com
          git remote add gh-token "https://${{ secrets.GITHUB_TOKEN }}@github.com/google-github-actions/release-please-action.git"
          git tag -d stable || true
          git push origin :stable || true
          git tag -a stable -m "Last Stable Release"
          git push origin stable
