From 87989bb250aab72274ad9f71481f70f0a8d8ac1e Mon Sep 17 00:00:00 2001 From: Damien Retzinger Date: Wed, 6 May 2026 14:03:19 -0400 Subject: [PATCH] feat(get-magento-version): pull version from lockfile if it exists (#242) Additionally, this exposes a new `output` called project which tells you which project was used. --- .../_internal-get-magento-version.yaml | 7 +++- get-magento-version/action.yml | 37 +++++++++++++------ 2 files changed, 31 insertions(+), 13 deletions(-) diff --git a/.github/workflows/_internal-get-magento-version.yaml b/.github/workflows/_internal-get-magento-version.yaml index 3c12137..615f063 100644 --- a/.github/workflows/_internal-get-magento-version.yaml +++ b/.github/workflows/_internal-get-magento-version.yaml @@ -37,8 +37,13 @@ jobs: with: working-directory: ../magento2 - - name: Fail if key does not match + - name: Fail if version does not match if: steps.magento-version.outputs.version != '"2.4.5-p1"' shell: bash run: echo "${{ steps.magento-version.outputs.version }}" && exit 1 + + - name: Fail if project does not match + if: steps.magento-version.outputs.project != 'magento/project-community-edition' + shell: bash + run: echo "${{ steps.magento-version.outputs.project }}" && exit 1 \ No newline at end of file diff --git a/get-magento-version/action.yml b/get-magento-version/action.yml index 9f1f5b9..fb2b7af 100644 --- a/get-magento-version/action.yml +++ b/get-magento-version/action.yml @@ -2,29 +2,42 @@ name: "Get Magento Version" author: "Graycore" description: " A Github Action that determines the currently installed version of Magento" -inputs: - working-directory: +inputs: + working-directory: default: $GITHUB_WORKSPACE description: "The current working directory of the action" required: false outputs: - version: # id of output - description: 'The determined version of Magento' + version: + description: 'The resolved Magento version (e.g. 2.4.6-p14)' value: ${{ steps.get-magento-version.outputs.version }} + project: + description: 'The Magento project package name (e.g. magento/project-community-edition)' + value: ${{ steps.get-magento-version.outputs.project }} runs: using: "composite" steps: - - run: | - echo "version=$(cat composer.json | jq '.require - | with_entries( select(.key == "magento/product-community-edition" or .key == "magento/product-enterprise-edition") ) - | to_entries - | .[0].value')" >> $GITHUB_OUTPUT - shell: bash - working-directory: ${{ inputs.working-directory }} - name: Compute Installed Magento version + - name: Compute Installed Magento version id: get-magento-version + shell: bash + working-directory: ${{ inputs.working-directory }} + run: | + PATTERN="magento/product-(community|enterprise)-edition|mage-os/product-community-edition" + + if [ -f composer.lock ]; then + RESULT=$(jq -r --arg p "$PATTERN" '.packages[] | select(.name | test($p)) | "\(.name) \(.version)"' composer.lock | head -1) + else + RESULT=$(jq -r --arg p "$PATTERN" '.require | to_entries[] | select(.key | test($p)) | "\(.key) \(.value)"' composer.json | head -1) + fi + + PRODUCT=$(echo "$RESULT" | awk '{print $1}') + VERSION=$(echo "$RESULT" | awk '{print $2}' | sed 's/^v//') + PROJECT=$(echo "$PRODUCT" | sed 's/product-/project-/') + + echo "version=\"$VERSION\"" >> $GITHUB_OUTPUT + echo "project=$PROJECT" >> $GITHUB_OUTPUT branding: icon: "code"