summaryrefslogtreecommitdiffstats
path: root/pkgs/by-name/p3/p3x-onenote/update.sh
blob: 41ea564e1a5e1681483477ef94853f574a24f7a0 (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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p curl jq nix

set -euo pipefail

SCRIPT_DIR="$(dirname "$0")"

latest_version() {
    curl -s "https://api.github.com/repos/patrikx3/onenote/releases/latest" | jq -r '.tag_name | sub("^v"; "")'
}

fetch_sri() {
    local version=$1
    local plat=$2
    local system=$3
    local hashi

    hash=$(nix-prefetch-url https://github.com/patrikx3/onenote/releases/download/v${version}/P3X-OneNote-${version}${plat}.AppImage)
    error=$?

    if [ $error -gt 0 ]; then
        echo "ERROR $error Fetching $version for $system" >&2
        return $error
    fi

    nix hash convert --hash-algo sha256 --to sri $hash --extra-experimental-features nix-command
}

system_plat() {
    case "$1" in
        x86_64-linux) echo "" ;;
        aarch64-linux) echo "-arm64" ;;
        *) echo "BAD SYSTEM: $1" >&2; exit 2 ;;
    esac
}

generate_json() {
    local version="$1"
    local systems=("x86_64-linux" "aarch64-linux")

    echo "{"
    echo "  \"version\": \"${version}\","
    echo "  \"hash\": {"

    local first=1
    for system in "${systems[@]}"; do
        local plat
        plat=$(system_plat "$system")

        local sri
        sri=$(fetch_sri "$version" "$plat" "$system")

        # JSON comma handling
        if [ $first -eq 0 ]; then
            echo ","
        fi
        first=0

        echo -n "    \"${system}\": \"${sri}\""
    done

    echo ""
    echo "  }"
    echo "}"
}

if [ -z "${VERSION:-}" ]; then
    echo "VERSION not set, fetching latest release…" >&2
    VERSION="$(latest_version)"
fi

echo "p3x-onenote: v$VERSION"
JSON=$(generate_json "$VERSION")
echo "$JSON" > "$SCRIPT_DIR/sources.json"

cat "$SCRIPT_DIR/sources.json"