12345678910111213141516171819202122232425262728293031323334 |
- #!/bin/bash
- ###################################################
- # Usage: generate-matrix.sh
- ###################################################
- # This script is used to generate the GitHub Actions
- # matrix for the PHP versions and OS combinations.
- #
- # 👉 REQUIRED FILES
- # - PHP_VERSIONS_FILE must be valid and set to a valid file path
- # (defaults to scripts/conf/php-versions.yml)
- set -euo pipefail
- # Path to the PHP versions configuration file
- PHP_VERSIONS_FILE="${PHP_VERSIONS_FILE:-"scripts/conf/php-versions.yml"}"
- # Generate and output the MATRIX_JSON
- yq -o=json "$PHP_VERSIONS_FILE" |
- jq -c '{
- include: [
- (.php_variations[] |
- {name, supported_os: (.supported_os // ["alpine", "bullseye", "bookworm"]), excluded_minor_versions: (.excluded_minor_versions // [])}
- ) as $variation |
- .php_versions[] |
- .minor_versions[] |
- # Check if the minor version is not in the excluded list for the variation
- select([.minor] | inside($variation.excluded_minor_versions | map(.)) | not) |
- .patch_versions[] as $patch |
- .base_os[] as $os |
- select($variation.supported_os | if length == 0 then . else . | index($os.name) end) |
- {patch_version: $patch, base_os: $os.name, php_variation: $variation.name}
- ]
- } |
- {include: (.include | sort_by(.patch_version | split(".") | map(tonumber) | . as $nums | ($nums[0]*10000 + $nums[1]*100 + $nums[2])) | reverse)}'
|