name: Compare vcpkg install changes description: Compares vcpkg install outputs between the base and head refs on pull requests and generates a report. inputs: vcpkg-manifest-dir: description: 'Directory containing the vcpkg.json manifest' required: true default: '.' type: string triplet: description: 'Triplet to use for vcpkg installation' required: true default: 'x64-linux' type: string features: description: 'Comma separated list of features' required: false default: '' type: string outputs: report: description: 'The report of added and removed packages after vcpkg installation comparison' value: ${{ steps.compare.outputs.report }} runs: using: "composite" steps: # Run vcpkg install --dry-run on the head ref - name: Run vcpkg install (HEAD) shell: bash run: | vcpkg install --dry-run --triplet ${{ inputs.triplet }} --x-manifest-root=${{ inputs.vcpkg-manifest-dir }} $(awk -v FS=',' '{for(i=1; i<=NF; i++) printf "--x-feature=%s ", $i}' <<< "${{ inputs.features }}") --allow-unsupported > /tmp/vcpkg-head-output.txt # Run vcpkg install --dry-run on the base ref - name: Run vcpkg install (BASE) shell: bash run: | git worktree add .base-ref ${{ github.event.pull_request.base.sha }} vcpkg install --dry-run --triplet ${{ inputs.triplet }} --x-manifest-root=.base-ref/${{ inputs.vcpkg-manifest-dir }} $(awk -v FS=',' '{for(i=1; i<=NF; i++) printf "--x-feature=%s ", $i}' <<< "${{ inputs.features }}") --allow-unsupported > /tmp/vcpkg-base-output.txt # Compare the outputs and generate a report - name: Compare vcpkg outputs shell: bash id: compare run: | python3 ${GITHUB_ACTION_PATH}/vcpkg-diff.py > /tmp/vcpkg-report.txt cat /tmp/vcpkg-report.txt { echo 'report<> "$GITHUB_OUTPUT"