From 306a636e3288ad454936afc0fd5fb57985efdae2 Mon Sep 17 00:00:00 2001 From: DuProcess <273172371+DuProcess@users.noreply.github.com> Date: Sun, 12 Jul 2026 22:09:19 -0400 Subject: [PATCH] Mark RC Gitea releases as prereleases --- scripts/upload-gitea-release.sh | 14 +++++++++++++- tests/release_scripts.rs | 13 +++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/scripts/upload-gitea-release.sh b/scripts/upload-gitea-release.sh index 8a9437e..8a10c67 100755 --- a/scripts/upload-gitea-release.sh +++ b/scripts/upload-gitea-release.sh @@ -34,6 +34,10 @@ token="${GITEA_TOKEN:-}" title="${GITEA_TITLE:-$tag}" expected_version="${tag#v}" allow_partial="${DOSH_RELEASE_ALLOW_PARTIAL:-0}" +release_prerelease=false +case "$expected_version" in + *-*) release_prerelease=true ;; +esac artifact_version() { artifact="$1" @@ -131,7 +135,7 @@ elif [ -n "$release_json" ]; then fi if [ -z "$release_id" ]; then - payload="$(printf '{"tag_name":"%s","target_commitish":"main","name":"%s","body":"Dosh release %s","draft":false,"prerelease":false}\n' "$tag" "$title" "$tag")" + payload="$(printf '{"tag_name":"%s","target_commitish":"main","name":"%s","body":"Dosh release %s","draft":false,"prerelease":%s}\n' "$tag" "$title" "$tag" "$release_prerelease")" release_json="$(curl -fsS -H "$auth_header" -H 'Content-Type: application/json' -X POST "$api/releases" -d "$payload")" if command -v jq >/dev/null 2>&1; then release_id="$(printf '%s\n' "$release_json" | jq -r '.id // empty')" @@ -145,6 +149,14 @@ if [ -z "$release_id" ]; then exit 1 fi +metadata_payload="$(printf '{"name":"%s","body":"Dosh release %s","draft":false,"prerelease":%s}\n' "$title" "$tag" "$release_prerelease")" +curl -fsS \ + -H "$auth_header" \ + -H 'Content-Type: application/json' \ + -X PATCH \ + "$api/releases/$release_id" \ + -d "$metadata_payload" >/dev/null + delete_existing_asset() { name="$1" if ! command -v jq >/dev/null 2>&1; then diff --git a/tests/release_scripts.rs b/tests/release_scripts.rs index f59b70b..76aeb21 100644 --- a/tests/release_scripts.rs +++ b/tests/release_scripts.rs @@ -38,6 +38,19 @@ fn release_upload_refuses_partial_platform_sets_by_default() { } } +#[test] +fn release_upload_marks_prerelease_tags_as_prereleases() { + let upload = include_str!("../scripts/upload-gitea-release.sh"); + assert!(upload.contains("release_prerelease=false")); + assert!(upload.contains("*-*) release_prerelease=true")); + assert!(upload.contains("\"prerelease\":%s")); + assert!(upload.contains("metadata_payload=")); + assert!( + upload.contains("-X PATCH"), + "existing Gitea releases must be corrected when prerelease metadata changes" + ); +} + #[test] fn installers_skip_stale_latest_release_prebuilts() { let install = include_str!("../install.sh");