aboutsummarylogtreecommitdiffstats
path: root/update.sh
blob: 6618c16aaa69a9f6ba257ec88ca0c886808ed587 (plain)
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
#!/usr/bin/env bash
set -euo pipefail
cd -- "$(dirname -- "${BASH_SOURCE[0]}")"

makepkg --printsrcinfo > .SRCINFO

json="$(curl -fsSL -H 'Accept: application/vnd.github+json' -H 'X-GitHub-Api-Version: 2022-11-28' 'https://api.github.com/repos/JS8Call-improved/JS8Call-improved/releases/latest')"
tag="$(jq -er '.tag_name' <<<"$json")"
latest="${tag#v}"
asset="JS8Call-v${latest}-x86_64.AppImage"

if [[ ! "$latest" =~ ^[0-9]+(\.[0-9]+){2}$ ]]; then
  printf 'Konnte keine plausible JS8Call-Version finden: %s\n' "$latest" >&2
  exit 1
fi

if ! jq -e --arg asset "$asset" '.assets[] | select(.name == $asset)' >/dev/null <<<"$json"; then
  printf 'Release %s enthält nicht das erwartete Linux-x86_64-AppImage: %s\n' "$latest" "$asset" >&2
  exit 1
fi

current="$(sed -nE 's/^pkgver=//p' PKGBUILD)"

if [[ "$latest" == "$current" ]]; then
  printf 'Keine neue Release-Version: JS8Call ist bereits bei %s.\n' "$current"

  if makepkg --verifysource -f; then
    makepkg --printsrcinfo > .SRCINFO
    printf 'Die Quellen sind unverändert; .SRCINFO wurde neu erzeugt.\n'
    exit 0
  fi

  read -r -p 'Release-Asset oder Zusatzquelle geändert. Als neues pkgrel übernehmen? [j/N] ' answer

  if [[ ! "$answer" =~ ^[jJyY]$ ]]; then
    printf 'Keine Änderung übernommen.\n'
    exit 1
  fi

  current_rel="$(sed -nE 's/^pkgrel=([0-9]+)$/\1/p' PKGBUILD)"
  if [[ ! "$current_rel" =~ ^[0-9]+$ ]]; then
    printf 'Konnte pkgrel nicht lesen.\n' >&2
    exit 1
  fi

  new_rel="$((current_rel + 1))"
  sed -i -E "s/^pkgrel=.*/pkgrel=$new_rel/" PKGBUILD
  printf 'Neues Release angelegt: %s-%s\n' "$current" "$new_rel"
else
  sed -i -E "s/^pkgver=.*/pkgver=$latest/; s/^pkgrel=.*/pkgrel=1/" PKGBUILD
  printf 'Aktualisiert: %s -> %s\n' "$current" "$latest"
fi

updpkgsums
makepkg --printsrcinfo > .SRCINFO
git diff -- PKGBUILD .SRCINFO
printf 'Jetzt bauen, testen und anschließend committen.\n'