summary refs log tree commit diff
path: root/.ci/update-github-release.sh
blob: aed99ad12fb69f310e8ae3b6cb5109bb170edbe4 (plain) (blame)
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!/bin/sh

if [ -z "$CI_COMMIT_TAG" ]; then
    echo "CI_COMMIT_TAG is unset or empty; exiting"
    exit 1
fi


# check if we already have a release for the current tag or not
http_code=$(curl \
  -s \
  -o /dev/null \
  -I \
  -w "%{http_code}" \
  -H "Accept: application/vnd.github+json" \
  -H "Authorization: Bearer ${GITHUB_AUTH_TOKEN}"\
  -H "X-GitHub-Api-Version: 2022-11-28" \
  "https://api.github.com/repos/Nheko-Reborn/nheko/releases/tags/$CI_COMMIT_TAG")

if [ "$http_code" = "404" ]; then
    release_notes="$(perl -0777 -ne '/.*?(## .*?)\n(## |\Z)/s && print $1' CHANGELOG.md | jq -R -s '.')"
    # Doing a 'fresh' release, not just updating the assets.
    release_json="$(curl \
        -X POST \
        -H "Accept: application/vnd.github+json" \
        -H "Authorization: Bearer ${GITHUB_AUTH_TOKEN}"\
        -H "X-GitHub-Api-Version: 2022-11-28" \
        https://api.github.com/repos/Nheko-Reborn/nheko/releases \
        -d "{\"tag_name\":\"${CI_COMMIT_TAG}\",\"target_commitish\":\"master\",\"name\":\"${CI_COMMIT_TAG}\",\"body\":\"${release_notes}\",\"draft\":true,\"prerelease\":true,\"generate_release_notes\":false}")"
elif [ "$http_code" = "200" ]; then
    # Updating a release (probably because of cirrus-ci or so)
    release_json=$(curl \
        -s \
        -H "Accept: application/vnd.github+json" \
        -H "Authorization: Bearer ${GITHUB_AUTH_TOKEN}"\
        -H "X-GitHub-Api-Version: 2022-11-28" \
        "https://api.github.com/repos/Nheko-Reborn/nheko/releases/tags/$CI_COMMIT_TAG")
fi

upload_url="$(echo "$release_json" | jq '."upload-url"')"
# get rid of the 'hypermedia' stuff at the end and use a 'real' URL
upload_url="$(echo "$upload_url" | sed 's/{?name,label\}/?name/g')"

for file in ./artifacts/*; do
    name="${file##*/}"
    [ -e "$file" ] && curl \
    -X POST \
    -H "Accept: application/vnd.github+json" \
    -H "Authorization: Bearer ${GITHUB_AUTH_TOKEN}"\
    -H "X-GitHub-Api-Version: 2022-11-28" \
    -H "Content-Type: application/octet-stream" \
    "${upload_url}=$name" \
    --data-binary "@$name"
done


# TODO: AppVeyor stuffs?