name: Autofix
on:
  push:
    # Only targets default branch to avoid amplification effects of
    # auto-fixing the exact same stuff in multiple non-rebased branches.
    branches:
      - 'main'
  schedule:
    # Run linter every week to catch regressions from external dependencies.
    - cron: 17 9 * * 1

jobs:

  toc:
    name: Generator TOC and auto-commit
    runs-on: ubuntu-latest
    steps:
      - name: Install doctoc
        run: |
          sudo npm install -g doctoc
      - uses: actions/checkout@v2.3.3
      - name: Generate full TOC
        run: |
          # Generates title as part of the TOC to avoid extra non-conform blank
          # lines. See:
          # https://github.com/thlorenz/doctoc/issues/101
          # https://github.com/thlorenz/doctoc/pull/145
          doctoc --github --title "## Contents" readme.md
      - name: Remove blacklisted TOC entries
        # See: https://github.com/sindresorhus/awesome-lint/blob/v0.13.0/rules/toc.js#L15-L20
        run: |
          gawk -i inplace '!/^- \[(Contribute|Contributing|Licence|License|Footnotes)\]\(#.+\)$/{print}' ./readme.md
      - name: Commit and push changes
        uses: stefanzweifel/git-auto-commit-action@v4.6.0
        with:
          commit_author: "Kevin Deldycke <kevin@deldycke.com>"
          commit_message: "[lint] Update TOC."
          file_pattern: readme.md

  typos:
    name: Fix typos and create a PR
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2.3.3
      - uses: sobolevn/misspell-fixer-action@0.1.0
      - uses: peter-evans/create-pull-request@v3
        with:
          author: "Kevin Deldycke <kevin@deldycke.com>"
          commit-message: "Fix typo."
          title: "Typo"
          body: >
            [Auto-generated on run #${{ github.run_id }}](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})
            as defined by [workflow action](https://github.com/${{ github.repository }}/blob/develop/.github/workflows/autofix.yaml).
          labels: "typo"
          assignees: kdeldycke
          branch: fix-typo
