name: Common issues check

on: [pull_request]

jobs:
  pre-commit:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
    - run: |
        git fetch --no-tags --prune --depth=1 origin +refs/heads/*:refs/remotes/origin/*

    - name: Get changed files
      id: file_changes
      run: |
        export DIFF=$(git diff --name-only origin/${{ github.base_ref }} ${{ github.sha }})
        echo "Diff between ${{ github.base_ref }} and ${{ github.sha }}"
        echo "files=$( echo "$DIFF" | xargs echo )" >> $GITHUB_OUTPUT

    - name: Install shfmt
      run: |
        curl -L "$(curl -s https://api.github.com/repos/mvdan/sh/releases/latest | grep -o -E -m 1 "https://.+?linux_amd64")" > shfmt \
        && chmod +x shfmt && sudo mv shfmt /usr/bin/

    - name: Install shellcheck
      run: |
        sudo apt update && sudo apt install shellcheck

    - name: Install hadolint
      run: |
        curl -L "$(curl -s https://api.github.com/repos/hadolint/hadolint/releases/latest | grep -o -E -m 1 "https://.+?/hadolint-Linux-x86_64")" > hadolint \
        && chmod +x hadolint && sudo mv hadolint /usr/bin/
    # Need to success pre-commit fix push
    - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
      with:
        fetch-depth: 0
        ref: ${{ github.event.pull_request.head.sha }}
    # Skip terraform_tflint which interferes to commit pre-commit auto-fixes
    - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0
      with:
        python-version: '3.9'
    - name: Execute pre-commit
      uses: pre-commit/action@9b88afc9cd57fd75b655d5c71bd38146d07135fe # v2.0.3
      env:
        SKIP: no-commit-to-branch,hadolint
      with:
        token: ${{ secrets.GITHUB_TOKEN }}
        extra_args: --color=always --show-diff-on-failure --files ${{ steps.file_changes.outputs.files }}
    # Run only skipped checks
    - name: Execute pre-commit check that have no auto-fixes
      if: always()
      uses: pre-commit/action@9b88afc9cd57fd75b655d5c71bd38146d07135fe # v2.0.3
      env:
        SKIP: check-added-large-files,check-merge-conflict,check-vcs-permalinks,forbid-new-submodules,no-commit-to-branch,end-of-file-fixer,trailing-whitespace,check-yaml,check-merge-conflict,check-executables-have-shebangs,check-case-conflict,mixed-line-ending,detect-aws-credentials,detect-private-key,shfmt,shellcheck
      with:
        extra_args: --color=always --show-diff-on-failure --files ${{ steps.file_changes.outputs.files }}