Skip to content

Commit

Permalink
fixup! Add helper script for creating GitHub releases using gh
Browse files Browse the repository at this point in the history
  • Loading branch information
rvem committed Sep 20, 2023
1 parent 22208c5 commit ce1dbe4
Showing 1 changed file with 45 additions and 0 deletions.
45 changes: 45 additions & 0 deletions overlay/github.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
{ gh, git }:
{
# autorelease <release-assets> <release-notes> [release-tag]
#
# release-assets
# A path to the directory with release assets, typically something like "$(nix build .#release)"
# release-notes
# Either a path to the file or bare text to use as release notes.
# release-tag (optional)
# A tag for the release to be pushed and also to be used as a release title.
# Default value to be used is 'auto-release'.
#
# If 'release-tag' is 'autorelease' or 'PRERELEASE' env variable is set to 'true'
# created release is marked as 'prerelease'.
#
# Usage examples:
# autorelease "$(nix build .#release)" "Automatic release on "$(date +\"%Y%m%d%H%M\")""
#
# autorelease "$(nix build .#release)" ./release-notes.md "v1.0"
autorelease = pkgs.writeShellApplication {
name = "autorelease";
runtimeInputs = [ gh git ];
text = ''
release_assets="$1"
release_notes="$2";
release_tag="''${3:-auto-release}"
# gh expects 'GH_TOKEN' env variable to be set
# Delete release if it exists
gh release delete "$release_tag" || true
typeset -a release_args
# Create release
if [[ $release_tag == "auto-release" || ''${PRERELEASE:-false} == true ]]; then
release_args+=("--prerelease")
fi
if [[ -f $release_notes ]];
release_args+=("--notes-file" "$release_notes")
else
release_args+=("--notes" "$release_notes")
fi
gh release create "$release_tag" --target "$(git rev-parse HEAD)" --title "$release_tag" "''${release_args[@]}" "$release_assets/*"
'';
}
}

0 comments on commit ce1dbe4

Please sign in to comment.