name: Validate community containers

on:
  pull_request:
    paths:
      - 'community-containers/**'
  push:
    branches:
      - main
    paths:
      - 'community-containers/**'

jobs:
  validator-community-containers:
    name: Validate community containers
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
      - name: Validate structure
        run: |
          CONTAINERS="$(find ./community-containers -mindepth 1 -maxdepth 1 -type d)"
          mapfile -t CONTAINERS <<< "$CONTAINERS"
          for container in "${CONTAINERS[@]}"; do
            container="$(echo "$container" | sed 's|./community-containers/||')"
            if ! [ -f ./community-containers/"$container"/"$container.json" ]; then
                echo ".json file must be named like its parent folder $container"
                FAIL=1
            fi
            if ! [ -f ./community-containers/"$container"/readme.md ]; then
                echo "There must be a readme.md file in the folder!"
                FAIL=1
            fi
            if [ -n "$FAIL" ]; then
                exit 1
            fi
          done
