Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-ports-kde
Path: blob/main/Tools/scripts/hackage-get-latest-version.sh
17720 views
1
#!/bin/sh
2
#
3
# MAINTAINER: [email protected]
4
5
set -e
6
set -o pipefail
7
8
export LC_ALL=C
9
10
##
11
## hackage-get-latest-version.sh: retrieves the latest version of a given Haskell package as registered on https://hackage.haskell.org
12
##
13
14
# args
15
16
PACKAGE_NAME="$1"
17
18
if [ -z "$PACKAGE_NAME" ]; then
19
echo "Usage: $0 <package-name>"
20
echo "Example: $0 cryptol"
21
echo "Example: $0 ShellCheck"
22
exit 1
23
fi
24
25
# check that packaged dependencies are installed
26
27
for dep in curl jq version_sort; do
28
if ! which -s $dep; then
29
echo "error: the '$dep' dependency is missing"
30
if [ $dep = "curl" ]; then
31
echo "... please install the 'curl' package"
32
elif [ $dep = "jq" ]; then
33
echo "... please install the 'jq' package"
34
elif [ $dep = "version_sort" ]; then
35
echo "... please install the 'libversion' package"
36
fi
37
exit 1
38
fi
39
done
40
41
42
# MAIN
43
44
curl -H "Accept: application/json" https://hackage.haskell.org/package/$PACKAGE_NAME 2>/dev/null |
45
grep -v "Package not found: No such package in package index" |
46
jq -r 'keys[]' |
47
version_sort |
48
tail -1 ||
49
! echo "failed to find the Haskell package '$PACKAGE_NAME'"
50
51