name: CI

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]
  workflow_dispatch:

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

jobs:
  commit_lint:
    runs-on: ubuntu-latest
    steps:
      # Check commit messages
      - uses: webiny/action-conventional-commits@v1.3.0

  test:
    runs-on: ubuntu-latest
    timeout-minutes: 10

    strategy:

      # Nightly can often fail as it is a moving target so disable fail-fast so
      # we can always see if the over versions pass or not.
      fail-fast: false

      matrix:
        neovim_branch:
          - 'v0.9.5'
          - 'v0.10.0'
          - 'nightly'

    env:
      NVIM_TEST_VERSION: ${{ matrix.neovim_branch }}

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - uses: leafo/gh-actions-lua@v9
        with:
          luaVersion: "5.1.5"

      - uses: leafo/gh-actions-luarocks@v4

      - name: Download nvim-test
        run: make nvim-test

      - name: Run Test
        run: make test

  stylua:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Download stylua
        run: make stylua

      - name: Lint
        run: make stylua-check

  luals:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - uses: leafo/gh-actions-lua@v9
        with:
          luaVersion: "5.1.5"

      - uses: leafo/gh-actions-luarocks@v4

      - name: Download nvim-test
        run: make nvim-test

      - name: Download LuaLS
        run: make luals

      - name: Lint
        run: make luals-check

  doc:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - uses: leafo/gh-actions-lua@v10
        with:
          luaVersion: "5.1.5"

      - uses: leafo/gh-actions-luarocks@v4

      - name: Download nvim-test
        run: make nvim-test

      - name: Doc Check
        run: make doc-check
