1#!/bin/sh -eux
2# tools/create-release.sh -- via GitLab CI and API
3# Copyright (C) 2019  Olaf Meeuwissen
4#
5# License: GPL-3.0+
6
7GROUP=sane-project
8PROJECT=backends
9PROJECT_ID=$GROUP%2F$PROJECT
10
11API_ENDPOINT=https://gitlab.com/api/v4
12
13# Uploads a file and returns a project relative URL to it.
14upload () {
15    curl --silent --fail \
16         --header "PRIVATE-TOKEN: $PRIVATE_TOKEN" \
17         --form "file=@$1" \
18         --request POST \
19         $API_ENDPOINT/projects/$PROJECT_ID/uploads \
20        | jq --raw-output .url \
21        | sed "s|^|https://gitlab.com/$GROUP/$PROJECT|"
22}
23
24cat << EOF > release.json
25{
26  "name": "SANE Backends $CI_COMMIT_TAG",
27  "tag_name": "$CI_COMMIT_TAG",
28  "description": "$(sed '1,3d; //{s/.*//; q}' NEWS \
29     | git stripspace \
30     | sed 's/"/\\"/g; s/$/\\n/g' \
31     | tr -d '\n')",
32  "assets": {
33    "links": [
34EOF
35
36for check in sha256 sha512; do
37    ${check}sum sane-backends-$CI_COMMIT_TAG.tar.gz \
38            > sane-backends-$CI_COMMIT_TAG.$check.txt
39    cat << EOF >> release.json
40      {
41        "name": "sane-backends-$CI_COMMIT_TAG.$check.txt",
42        "url": "$(upload sane-backends-$CI_COMMIT_TAG.$check.txt)"
43      },
44EOF
45done
46
47cat << EOF >> release.json
48      {
49        "name": "sane-backends-$CI_COMMIT_TAG.tar.gz",
50        "url": "$(upload sane-backends-$CI_COMMIT_TAG.tar.gz)"
51      }
52    ]
53  }
54}
55EOF
56
57curl --silent --fail --write-out "%{http_code}\n"\
58     --header "PRIVATE-TOKEN: $PRIVATE_TOKEN" \
59     --header "Content-Type: application/json" \
60     --data @release.json \
61     --request POST $API_ENDPOINT/projects/$PROJECT_ID/releases
62