name: Docs workflow
on:
  workflow_dispatch:
  schedule:
    - cron: '0 15 * * 6'
permissions:
  contents: read

jobs:
  create:
    permissions:
      contents: none
    name: Create
    runs-on: ${{ matrix.operating-system }}
    strategy:
      fail-fast: false
      matrix:
        operating-system: [ubuntu-22.04, ubuntu-20.04, windows-2022, macos-11]
        php-versions: ['5.3', '5.4', '5.5', '5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1', '8.2']
    steps:
      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php-versions }}
      - name: Create for Linux and macOS
        env:
          file: php${{ matrix.php-versions }}-${{ matrix.operating-system }}.md
          version: ${{ matrix.php-versions }}
        if: matrix.operating-system != 'windows-2022'
        run: |
          echo "## PHP $version" >> "$file"
          printf "\n" >> "$file"
          echo "\`\`\`" >> "$file"
          php -m >> "$file"
          echo "\`\`\`" >> "$file"
          printf "\n" >> "$file"
      - name: Create for Windows
        env:
          file: php${{ matrix.php-versions }}-${{ matrix.operating-system }}.md
          version: ${{ matrix.php-versions }}
        if: matrix.operating-system == 'windows-2022'
        run: |
          Write-Output "## PHP ${{ matrix.php-versions }}`n" | Out-File -FilePath "$env:file"
          Write-Output "``````" | Out-File -FilePath "$env:file" -Append
          php -m | Out-File -FilePath "$env:file" -Append
          Write-Output "```````n" | Out-File -FilePath "$env:file" -Append
      - name: Upload artifacts
        uses: actions/upload-artifact@v3
        with:
          name: lists
          path: php${{ matrix.php-versions }}-${{ matrix.operating-system }}.md
  update:
    permissions:
      contents: write  # for Git to git push
    name: Update
    needs: create
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          repository: ${{ github.repository }}.wiki
      - name: Download artifacts
        uses: actions/download-artifact@v3
        with:
          path: ${{ github.workspace }}
      - name: Configure Git
        run : |
          git config --local user.email "${{ secrets.email }}"
          git config --local user.name "${{ github.repository_owner }}"
      - name: Combine
        run: |
          for os in ubuntu-22.04 ubuntu-20.04 windows-2022 windows-2019 macos-11 macos-10.15; do
            echo "These are extensions which are loaded by default on the following PHP versions. More extensions which are available as packages and available on pecl are supported by setup-php. Refer to [php extension support](https://github.com/shivammathur/setup-php#heavy_plus_sign-php-extension-support) for more details." > Php-extensions-loaded-on-"$os".md
            for version in 5.3 5.4 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1 8.2; do
              if [ "$os" = "macos-10.15" ]; then
                cat lists/php"$version"-macos-11.md >> Php-extensions-loaded-on-"$os".md
              elif [ "$os" = "windows-2019" ]; then
                cat lists/php"$version"-windows-2022.md >> Php-extensions-loaded-on-"$os".md
              else
                cat lists/php"$version"-"$os".md >> Php-extensions-loaded-on-"$os".md
              fi
            done
          done
          rm -rf ./lists
      - name: Update
        run: |
          if [ "$(git status --porcelain=v1 2>/dev/null | wc -l)" != "0" ]; then
            git add .
            git commit -m "Update PHP extensions on wiki - $(date +'%d-%m-%y')"
            git push -f https://${{ github.repository_owner }}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.wiki.git master || true
          fi