about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/languagemachines/update
blob: 3189637df7463e93b8b9454159fd83038c7c6df7 (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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#!/usr/bin/env nix-shell
#!nix-shell --packages curl
#!nix-shell --packages jq
#!nix-shell --packages parallel
#!nix-shell -i bash

# Exit immediately if a command exits with a non-zero status.
# Exit when a producer fails in a pipe
# Treat undefined variable references as errors
set -e -o pipefail -u

# Check if working directory is (probably) right
test "./update" = $0 || {
    echo "The working directory ought to be the same is the update script location. Please invoke as ./update" 1>&2
    exit 1
}

# Create temporary directory with automatic cleanup
readonly MY_TMP="$(mktemp -d)"
cleanup () {
    rm -rf "$MY_TMP"
}
trap cleanup EXIT

# stdout: file containing release info and a convenient placeholder
# for the sha256 attribute
getRelease () {
    local owner="$1"
    local repo="$2"
    local out="$MY_TMP/$owner--$repo-release"
    curl -fSs https://api.github.com/repos/"$owner"/"$repo"/releases/latest \
        | jq '{ version: .name, url: .tarball_url, sha256: "__SHA256__" }' \
             > "$out"
    echo "$out"
}

# 'getters' for the release info file

# stdout: unquoted tarball url
releaseUrl () {
    local file="$1"
    jq -r '.url' <"$file"
}

# stdout: unquoted version
releaseVersion () {
    local file="$1"
    jq -r '.version' <"$file"
}

# Fetch release tarball and compute hash
# stdout: base32 sha256 to be used in fetchurl
getReleaseHash () {
    local file="$1"
    local name="$2"
    nix-prefetch-url "$(releaseUrl "$file")" --name "$name-$(releaseVersion "$file").tar.gz"
}

# Write a release info file to release-info/$owner-$repo.json
updateRelease () {
    local owner="$1"
    local repo="$2"
    local r="$(getRelease "$owner" "$repo")"
    local hash="$(getReleaseHash "$r" "$repo")"
    sed \
      -e s/__SHA256__/"$hash"/\
      <"$r" \
      >"release-info/$owner-$repo.json"
}

updateRelease LanguageMachines frogdata
updateRelease LanguageMachines frog
updateRelease LanguageMachines libfolia
updateRelease LanguageMachines mbt
updateRelease LanguageMachines ticcutils
updateRelease LanguageMachines timbl
updateRelease LanguageMachines timblserver
updateRelease LanguageMachines ucto
updateRelease LanguageMachines uctodata