File: github-release

package info (click to toggle)
hub 2.14.2~ds1-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,376 kB
  • sloc: sh: 1,049; ruby: 857; makefile: 89
file content (29 lines) | stat: -rwxr-xr-x 996 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/bin/bash
# Usage: script/cross-compile | script/github-release <name> <tag>
#
# Takes in a list of asset filenames + labels via stdin and uploads them to the
# corresponding release on GitHub. The release is created as a draft first if
# missing and its body is the git changelog since the previous tagged release.
set -e

project_name="${1?}"
tag_name="${2?}"
[[ $tag_name == *-* ]] && pre=1 || pre=

assets=()
while read -r filename label; do
  assets+=( -a "${filename}#${label}" )
done

notes="$(git tag --list "$tag_name" --format='%(contents:subject)%0a%0a%(contents:body)')"

if hub release --include-drafts | grep -q "^${tag_name}\$"; then
  hub release edit "$tag_name" -m "" "${assets[@]}"
elif [ $(wc -l <<<"$notes") -gt 1 ]; then
  hub release create ${pre:+--prerelease} -F - "$tag_name" "${assets[@]}" <<<"$notes"
else
  { echo "${project_name} ${tag_name#v}"
    echo
    script/changelog
  } | hub release create --draft ${pre:+--prerelease} -F - "$tag_name" "${assets[@]}"
fi