|
1 | 1 | #!/usr/bin/env bash |
2 | 2 |
|
| 3 | +set -euo pipefail |
| 4 | + |
3 | 5 | function process |
4 | 6 | { |
5 | | - while read name prefix version url; do |
| 7 | + while read -r name; do |
6 | 8 | package=$name |
7 | 9 | case "$package" in |
8 | 10 | findlib) package=ocamlfind;; |
9 | 11 | dune-local) package=dune;; |
10 | 12 | esac |
11 | | - latest=$(opam show $package -f all-versions | sed -e 's/ base//') |
| 13 | + latest=$(opam show "$package" -f all-versions | sed -e 's/ base//') |
12 | 14 | latest=${latest##* } |
13 | | - package_url=$(opam show $package.$latest -f url.src: | sed -e 's/"//g') |
14 | | - md5=$(sed -n -e "s/MD5$prefix$name *= *\(.*\)/\1/p" "$1") |
15 | | - package_md5=$(opam show $package.$latest -f url.checksum: | sed -n -e "/md5/s/.*md5=\([a-fA-F0-9]\{32\}\).*/\1/p") |
| 15 | + package_url=$(opam show "$package.$latest" -f url.src: | sed -e 's/"//g') |
| 16 | + md5=$(sed -n -e "s/MD5_$name *= *\(.*\)/\1/p" "$1") |
| 17 | + package_md5=$(opam show "$package.$latest" -f url.checksum: | sed -n -e "/md5/s/.*md5=\([a-fA-F0-9]\{32\}\).*/\1/p") |
16 | 18 | if [[ -z $package_md5 ]] ; then |
17 | | - echo -e "\n$name: [\033[1;33mWARN\033[m] no md5 given in opam, downloading $package_url to check" |
18 | | - package_md5=$(curl -LSs $package_url | md5sum | cut -f1 -d' ') |
| 19 | + echo -e "$name: [\033[1;33mWARN\033[m] no md5 given in opam, downloading $package_url to check" |
| 20 | + package_md5=$(curl -LSs "$package_url" | md5sum | cut -f1 -d' ') |
19 | 21 | fi |
20 | | - if [[ $package_url = $url ]] ; then |
21 | | - if [[ $package_md5 = $md5 ]] ; then |
22 | | - echo -ne "[\033[0;32m$name\033[m] " |
23 | | - if [[ $latest != $version ]] ; then |
24 | | - DISAGREEMENTS+=" $name ($version vs $latest in opam)" |
25 | | - fi |
26 | | - else |
27 | | - echo -e "\n$name: [\033[1;33mWARN\033[m] MD5 is wrong for (should be $package_md5 according to opam)" |
28 | | - fi |
| 22 | + if [[ $package_md5 = "$md5" ]] ; then |
| 23 | + echo -e "$name: [\033[1;32mNOTE\033[m] $name is up-to-date" |
29 | 24 | else |
30 | | - if [[ $package_md5 = $md5 ]] ; then |
31 | | - echo -e "\n$name: [\033[1;33mWARN\033[m] URL is wrong for $name (should be $package_url according to opam)" |
32 | | - else |
33 | | - if [[ $latest = $version ]] ; then |
34 | | - echo -e "\n$name: [\033[1;33mWARN\033[m] URL and MD5 are wrong for $name (should be $package_url (md5=$package_md5) according to opam)" |
35 | | - else |
36 | | - echo -ne "[\033[0;31m$name\033[m: \033[1m$latest\033[m] " |
37 | | - sed -e "s/\(URL$prefix$name *= *\).*/\1${package_url////\\/}/" -e "s/\(MD5$prefix$name *= *\).*/\1$package_md5/" "$1" > "$1.tmp" |
38 | | - mv "$1.tmp" "$1" |
39 | | - fi |
40 | | - fi |
| 25 | + echo -e "[\033[0;31m$name\033[m: \033[1m$latest\033[m] is being updated" |
| 26 | + sed -e "s/\(URL_$name *= *\).*/\1${package_url////\\/}/" -e "s/\(MD5_$name *= *\).*/\1$package_md5/" "$1" > "$1.tmp" |
| 27 | + mv "$1.tmp" "$1" |
41 | 28 | fi |
42 | | - done < <(grep -F URL_ "$1" | sed -e "s/URL\(_\(PKG_\)\?\)\([^ =]*\) *= *\(.*\/\(\([^0-9][^-]*\)*-\)\?v\?\)\([0-9.]\+\([-+.][^\/]*\)\?\)\(\.tbz\|\.tar\.gz\)/\3 \1 \7 \4\7\9/" | sort) |
| 29 | + done < <(grep -F URL_ "$1" | sed -e "s/URL_\([^ =]*\) *=.*/\1/" | sort) |
43 | 30 | } |
44 | 31 |
|
45 | | -cd $(dirname $0) |
46 | | -echo -n "Checking packages for new versions in opam: " |
47 | | -DISAGREEMENTS=() |
| 32 | +cd "$(dirname "$0")" |
| 33 | +echo "Checking packages for new versions in opam:" |
48 | 34 | process Makefile.sources |
49 | 35 | process Makefile.dune |
50 | | -echo -e "\nComplete." |
51 | | -if [[ ${#DISAGREEMENTS[@]} -gt 0 ]] ; then |
52 | | - echo "Disagreements over version:${DISAGREEMENTS[@]}" |
53 | | -fi |
| 36 | +echo "Complete." |
0 commit comments