aboutsummarylogtreecommitdiffstats
path: root/update.sh
blob: 2536ad707292f092580963fb0241223152718894 (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
58
59
#!/usr/bin/env bash
set -euo pipefail

# Automates bumping the package version and refreshing metadata.
if [[ $# -ne 1 ]]; then
    printf 'Usage: %s <new-version>\n' "$0" >&2
    exit 1
fi

new_ver=$1
pkgbuild="PKGBUILD"

if [[ ! -f $pkgbuild ]]; then
    echo "PKGBUILD not found in $(pwd)" >&2
    exit 1
fi

pkgname=$(awk -F= '/^pkgname=/{print $2; exit}' "$pkgbuild")
current_ver=$(awk -F= '/^pkgver=/{print $2; exit}' "$pkgbuild")

if [[ -z $pkgname ]]; then
    echo 'Failed to parse pkgname from PKGBUILD' >&2
    exit 1
fi

if [[ -z $current_ver ]]; then
    echo 'Failed to parse current pkgver from PKGBUILD' >&2
    exit 1
fi

if [[ $current_ver != "$new_ver" ]]; then
    sed -i "s/^pkgver=.*/pkgver=$new_ver/" "$pkgbuild"
    echo "pkgver: $current_ver -> $new_ver"
else
    echo "pkgver already $new_ver; refreshing checksums"
fi

mapfile -t checksum_lines < <(makepkg -g)
sha_line=''
for line in "${checksum_lines[@]}"; do
    if [[ $line == sha256sums* ]]; then
        sha_line=$line
        break
    fi
done

if [[ -z $sha_line ]]; then
    echo 'makepkg -g did not return sha256sums line' >&2
    exit 1
fi

sed -i "s~^sha256sums=.*~$sha_line~" "$pkgbuild"
echo "Updated sha256sums"

rm -rf src pkg
rm -f "${pkgname}-"*.tar.gz

makepkg --printsrcinfo > .SRCINFO
echo "Regenerated .SRCINFO"