Skip to content

Commit fcb75f2

Browse files
committed
feat: add GitHub release push functionality to build system
Signed-off-by: Nagy Károly Gábriel <[email protected]>
1 parent 8e3c25b commit fcb75f2

File tree

1 file changed

+40
-1
lines changed

1 file changed

+40
-1
lines changed

internal/build/gen_mk.sh

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ gen_release_targets() {
272272
cat <<EOT
273273
274274
# Release targets for $name
275-
.PHONY: release-$name release-clean-$name release-build-$name release-sign-$name release-checksums-$name
275+
.PHONY: release-$name release-clean-$name release-build-$name release-sign-$name release-checksums-$name push-$name
276276
release-$name: release-clean-$name release-build-$name release-sign-$name release-checksums-$name
277277
278278
release-clean-$name: ; \$(info \$(M) cleaning release directory for $name…)
@@ -312,6 +312,38 @@ release-checksums-$name: | release-build-$name ; \$(info \$(M) generating checks
312312
find . -type f \( ! -name "*.asc" ! -name "*.txt" \) -exec sha256sum {} + > checksums.txt && \\
313313
echo "Generated checksums.txt for $name"
314314
315+
push-$name: | release-$name ; \$(info \$(M) pushing release artifacts for $name to GitHub…)
316+
\$Q if ! command -v gh >/dev/null 2>&1; then \\
317+
echo "Error: gh CLI is required but not installed" >&2; \\
318+
echo "Install it from https://cli.github.com/" >&2; \\
319+
exit 1; \\
320+
fi
321+
\$Q if ! gh auth status >/dev/null 2>&1; then \\
322+
echo "Error: Not authenticated with GitHub CLI" >&2; \\
323+
echo "Run 'gh auth login' first" >&2; \\
324+
exit 1; \\
325+
fi
326+
\$Q VERSION="\$\$(git describe --tags --exact-match 2>/dev/null || git rev-parse --short HEAD)"; \\
327+
RELEASE_TITLE="$name v\$\$VERSION"; \\
328+
RELEASE_TAG="v\$\$VERSION"; \\
329+
echo "Creating release \$\$RELEASE_TAG..."; \\
330+
if gh release view "\$\$RELEASE_TAG" >/dev/null 2>&1; then \\
331+
echo "Release \$\$RELEASE_TAG already exists, uploading additional artifacts..."; \\
332+
else \\
333+
gh release create "\$\$RELEASE_TAG" \\
334+
--title "\$\$RELEASE_TITLE" \\
335+
--notes "Release \$\$RELEASE_TAG" \\
336+
--draft=false \\
337+
--prerelease=false; \\
338+
fi; \\
339+
cd \$(RELEASE_DIR)/$name && \\
340+
for file in *; do \\
341+
[ -f "\$\$file" ] || continue; \\
342+
echo "Uploading \$\$file..."; \\
343+
gh release upload "\$\$RELEASE_TAG" "\$\$file" --clobber; \\
344+
done; \\
345+
echo "Successfully pushed release \$\$RELEASE_TAG"
346+
315347
EOT
316348
fi
317349
}
@@ -331,10 +363,17 @@ while IFS=: read -r name dir mod deps; do
331363
done < "$INDEX"
332364

333365
if [ -n "$release_projects" ]; then
366+
# Generate push targets list
367+
push_projects=$(echo "$release_projects" | sed 's/release-/push-/g')
368+
334369
cat <<EOT
335370
336371
# Main release target
337372
.PHONY: release
338373
release:$release_projects
374+
375+
# Main push target
376+
.PHONY: push
377+
push:$push_projects
339378
EOT
340379
fi

0 commit comments

Comments
 (0)