1313jobs :
1414  check-package :
1515    runs-on : ubuntu-22.04 
16+     if : ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged }} 
1617    outputs :
1718      file-present : ${{ steps.check-file.outputs.file-present }} 
1819      closest-release : ${{ steps.find-release.outputs.closest-release }} 
@@ -26,23 +27,40 @@ jobs:
2627        env :
2728          GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }} 
2829        run : | 
29-           # Get all releases info 
30-           all_releases=$(gh release list --json tagName,assets --limit 50) 
31- 
32-           # Find the latest release 
33-           latest_release=$(echo "$all_releases" | jq -r '.[0].tagName') 
34-           echo "latest-release=$latest_release" >> "$GITHUB_OUTPUT" 
35- 
36-           # Find the most recent release with a matching unitypackage 
37-           closest_release=$(echo "$all_releases" | jq -r \ 
38-                             '.[] | select(.assets[].name | test("PackageExporter_.*\\.unitypackage")) | .tagName' | head -n 1) 
39- 
40-           if [ -n "$closest_release" ]; then 
30+           # Get the list of all release tags up to 50 
31+           all_releases=$(gh release list --json tagName --limit 50) 
32+           release_tags=$(echo "$all_releases" | jq -r '.[].tagName') 
33+            
34+           # Initialize variables 
35+           latest_release="" 
36+           closest_release="" 
37+            
38+           # Iterate over the releases 
39+           for tag in $release_tags; do 
40+           # Get detailed release info for each tag 
41+           release_info=$(gh release view "$tag" --json tagName,assets) 
42+          
43+           # Check if this is the latest release 
44+           if [ -z "$latest_release" ]; then 
45+             latest_release="$tag" 
46+             echo "latest-release=$latest_release" >> "$GITHUB_OUTPUT" 
47+           fi 
48+          
49+           # Check for matching .unitypackage in the assets 
50+           match=$(echo "$release_info" | jq -r '.assets[].name | select(test("PackageExporter_.*\\.unitypackage"))') 
51+           if [ -n "$match" ] && [ -z "$closest_release" ]; then 
52+             closest_release="$tag" 
4153            echo "Closest release found: $closest_release" 
54+           fi 
55+           done 
56+            
57+           # Output the results 
58+           if [ -n "$closest_release" ]; then 
4259            echo "closest-release=$closest_release" >> "$GITHUB_OUTPUT" 
4360          else 
4461            echo "No matching unitypackage found." 
4562            echo "closest-release=" >> "$GITHUB_OUTPUT" 
63+           fi 
4664
4765name : Check if PackageExporter exists in the latest release 
4866        id : check-file 
0 commit comments