@@ -229,40 +229,38 @@ jobs:
229229 run : |
230230 PACKAGES='${{ toJson(matrix.group.packages) }}'
231231
232- # Get package names for branch name
233- PKG_NAMES=$(echo "$PACKAGES" | jq -r '.[].package' | sort | tr '\n' '-' | sed 's/-$//')
232+ # Get package info for branch name
234233 PKG_COUNT=$(echo "$PACKAGES" | jq 'length')
235234
236- # Create summary for PR title
235+ # Create summary for PR title and branch name
237236 if [[ "$PKG_COUNT" -eq 1 ]]; then
238- TITLE=$(echo "$PACKAGES" | jq -r '.[0] | "pkg(\(.package)): update to \(.new_version)"')
237+ PKG_NAME=$(echo "$PACKAGES" | jq -r '.[0].package')
238+ NEW_VERSION=$(echo "$PACKAGES" | jq -r '.[0].new_version')
239+ TITLE="pkg(${PKG_NAME}): update to ${NEW_VERSION}"
240+ BRANCH="pkg-update/${PKG_NAME}-v${NEW_VERSION}"
239241 else
242+ # For multiple packages, use first package name and combine versions
240243 FIRST_PKG=$(echo "$PACKAGES" | jq -r '.[0].package')
244+ VERSIONS=$(echo "$PACKAGES" | jq -r '.[].new_version' | sort | tr '\n' '-' | sed 's/-$//')
241245 TITLE="pkg: update $FIRST_PKG and $((PKG_COUNT - 1)) related packages"
246+ BRANCH="pkg-update/${FIRST_PKG}-group-v${VERSIONS}"
242247 fi
243248
244- # Create unique branch name using first package and date
245- BRANCH="pkg-update/${PKG_NAMES}-$(date +%Y%m%d)"
246-
247249 echo "title=$TITLE" >> $GITHUB_OUTPUT
248250 echo "branch=$BRANCH" >> $GITHUB_OUTPUT
249251 echo "pkg_count=$PKG_COUNT" >> $GITHUB_OUTPUT
250252
251- - name : Check for existing PR
253+ - name : Check for existing branch
252254 id : existing-pr
253- env :
254- GH_TOKEN : ${{ github.token }}
255255 run : |
256- TITLE ="${{ steps.info.outputs.title }}"
256+ BRANCH ="${{ steps.info.outputs.branch }}"
257257
258- # Check for open PR with the same title
259- EXISTING=$(gh pr list --state open --search "in:title $TITLE" --json number,title \
260- --jq ".[] | select(.title == \"$TITLE\") | .number" 2>/dev/null | head -1) || EXISTING=""
261-
262- if [[ -n "$EXISTING" ]]; then
263- echo "PR #$EXISTING already exists with title: $TITLE"
258+ # Check if branch already exists (locally or remotely)
259+ if git ls-remote --heads origin "$BRANCH" | grep -q .; then
260+ echo "Branch '$BRANCH' already exists - skipping PR creation"
264261 echo "exists=true" >> $GITHUB_OUTPUT
265262 else
263+ echo "Branch '$BRANCH' does not exist - will create PR"
266264 echo "exists=false" >> $GITHUB_OUTPUT
267265 fi
268266
@@ -272,7 +270,8 @@ jobs:
272270 PACKAGES='${{ toJson(matrix.group.packages) }}'
273271 DATE=$(date "+%a %b %d %Y")
274272
275- echo "$PACKAGES" | jq -c '.[]' | while read -r pkg_data; do
273+ # Use process substitution to avoid subshell issues
274+ while read -r pkg_data; do
276275 PKG=$(echo "$pkg_data" | jq -r '.package')
277276 OLD_VERSION=$(echo "$pkg_data" | jq -r '.old_version')
278277 NEW_VERSION=$(echo "$pkg_data" | jq -r '.new_version')
@@ -290,7 +289,7 @@ jobs:
290289 # Add changelog entry
291290 CHANGELOG_ENTRY="* $DATE Hypercube <hypercube@binarypie.dev> - $NEW_VERSION-1\n- Update to $NEW_VERSION"
292291 sed -i "/%changelog/a\\$CHANGELOG_ENTRY" "$SPEC_FILE"
293- done
292+ done < <(echo "$PACKAGES" | jq -c '.[]')
294293
295294 - name : Generate PR body
296295 if : steps.existing-pr.outputs.exists != 'true'
@@ -303,7 +302,8 @@ jobs:
303302 echo "## Package Updates"
304303 echo ""
305304
306- echo "$PACKAGES" | jq -c '.[]' | while read -r pkg_data; do
305+ # Use process substitution to avoid subshell issues with while loop
306+ while read -r pkg_data; do
307307 PKG=$(echo "$pkg_data" | jq -r '.package')
308308 REPO=$(echo "$pkg_data" | jq -r '.repo')
309309 OLD=$(echo "$pkg_data" | jq -r '.old_version')
@@ -313,7 +313,7 @@ jobs:
313313 echo "- **Version:** \`$OLD\` -> \`$NEW\`"
314314 echo "- **Release:** https://github.com/$REPO/releases/tag/v$NEW"
315315 echo ""
316- done
316+ done < <(echo "$PACKAGES" | jq -c '.[]')
317317
318318 echo "---"
319319 echo "*This PR was automatically created by the package version checker.*"
0 commit comments