Skip to content

Commit a734478

Browse files
committed
fix: avoid empty appcast args on macOS bash
1 parent 8823ee3 commit a734478

2 files changed

Lines changed: 16 additions & 10 deletions

File tree

.github/scripts/tests/test_release_workflow.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,12 @@ def test_beta_appcast_retry_is_one_idempotent_step(self) -> None:
5151
self.assertNotIn("Push published beta appcast (attempt", self.release)
5252
self.assertIn("for attempt in 1 2 3 4 5; do", self.release)
5353

54+
def test_stable_appcast_does_not_expand_an_empty_array_with_nounset(self) -> None:
55+
self.assertNotIn('"${CHANNEL_ARGS[@]}"', self.release)
56+
self.assertIn("APPCAST_ARGS=(", self.release)
57+
self.assertIn('APPCAST_ARGS+=(--channel "${{ env.BETA_CHANNEL_NAME }}")', self.release)
58+
self.assertIn('"${APPCAST_ARGS[@]}"', self.release)
59+
5460
def test_nightly_schedule_remains_independent(self) -> None:
5561
self.assertIn("schedule:", self.nightly)
5662
self.assertIn('NIGHTLY_BRANCH: dev', self.nightly)

.github/workflows/release.yml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -467,22 +467,22 @@ jobs:
467467
test -x "$RUNNER_TEMP/generate_appcast" || {
468468
echo "::error::$RUNNER_TEMP/generate_appcast missing or not executable"; exit 1;
469469
}
470-
CHANNEL_ARGS=()
470+
APPCAST_ARGS=(
471+
--ed-key-file -
472+
--link "${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/releases"
473+
--download-url-prefix "${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/releases/download/v${VERSION}/"
474+
--embed-release-notes
475+
)
471476
APPCAST_OUTPUT="$RUNNER_TEMP/appcast-stable.xml"
472477
if [[ "${IS_BETA}" == "true" ]]; then
473-
CHANNEL_ARGS=(--channel "${{ env.BETA_CHANNEL_NAME }}")
478+
APPCAST_ARGS+=(--channel "${{ env.BETA_CHANNEL_NAME }}")
474479
APPCAST_OUTPUT="$RUNNER_TEMP/appcast-${{ env.BETA_CHANNEL_NAME }}.xml"
475480
else
476481
cp updater/appcast.xml "$APPCAST_OUTPUT"
477482
fi
478-
printf '%s' "$SPARKLE_PRIVATE_KEY" | "$RUNNER_TEMP/generate_appcast" \
479-
--ed-key-file - \
480-
--link "${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/releases" \
481-
--download-url-prefix "${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/releases/download/v${VERSION}/" \
482-
--embed-release-notes \
483-
"${CHANNEL_ARGS[@]}" \
484-
-o "$APPCAST_OUTPUT" \
485-
Release/
483+
APPCAST_ARGS+=(-o "$APPCAST_OUTPUT")
484+
printf '%s' "$SPARKLE_PRIVATE_KEY" | \
485+
"$RUNNER_TEMP/generate_appcast" "${APPCAST_ARGS[@]}" Release/
486486
487487
- name: Create or refresh draft GitHub release
488488
id: prepare_release

0 commit comments

Comments
 (0)