name: Lint and Validate

on:
  push:
    paths:
      - '**/*.sh'
  pull_request:
    paths:
      - '**/*.sh'

jobs:
  lint-and-validate:
    runs-on: docker
    container:
      image: debian:bullseye

    steps:
      - name: Install Node.js
        run: |
          apt-get update && apt-get install -y curl
          curl -fsSL https://deb.nodesource.com/setup_16.x | bash -
          apt-get install -y nodejs

      - name: Checkout Code
        uses: https://code.forgejo.org/actions/checkout@v4

      - name: List Checked Out Files
        run: ls -al /workspace/ZoopaMario/backup-automation

      - name: Install ShellCheck
        run: |
          apt-get update && apt-get install -y shellcheck

      - name: Verify ShellCheck Installation
        run: which shellcheck

      - name: Find Shell Scripts
        run: find . -name '*.sh' -print

      - name: Debug Commit Message
        run: git log -1 --pretty=%B

      - name: Lint Bash Scripts
        run: |
          echo "Linting Bash scripts..."
          find . -name '*.sh' -print0 | xargs -0 shellcheck

      - name: Check Commit Messages
        run: |
          echo "Checking commit message format..."
          if ! git log -1 --pretty=%B | grep -Eq '^(feat|fix|chore|docs|style|refactor|test|perf):'; then
            echo "Commit message does not follow the conventional format: <type>: <subject>"
            exit 1
          fi

      - name: Show Environment Variables
        run: env