Skip to content

Commit e464f94

Browse files
authored
Merge pull request #6701 from kit-ty-kate/simplify-update-sources-bash
Simplify the src_ext/update-sources.sh script
2 parents ed7bb22 + 3fbe7c2 commit e464f94

File tree

3 files changed

+26
-35
lines changed

3 files changed

+26
-35
lines changed

.github/scripts/main/hygiene.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,12 @@ else
141141
(set +x; echo -e ".github/scripts/depexts/generate-actions.sh: \e[31mERROR\e[0m") 2>/dev/null
142142
ERROR=1
143143
fi
144+
if shellcheck src_ext/update-sources.sh ; then
145+
(set +x; echo "src_ext/update-sources.sh: OK") 2>/dev/null
146+
else
147+
(set +x; echo -e "src_ext/update-sources.sh: \e[31mERROR\e[0m") 2>/dev/null
148+
ERROR=1
149+
fi
144150
(set +x ; echo -en "::endgroup::check shell scripts using shellcheck\r") 2>/dev/null
145151

146152
exit $ERROR

master_changes.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ users)
110110

111111
## Internal
112112
* Replace every polymorphic uses of `List.mem` by a version that doesn't use `Repr.equal` [#6644 @kit-ty-kate]
113+
* Simplify the `src_ext/update-sources.sh` script [#6701 @kit-ty-kate]
113114

114115
## Internal: Unix
115116

@@ -157,6 +158,7 @@ users)
157158
* Fix duplication logic in revdeps script [#6666 @arozovyk]
158159
* Remove patch dependency in depext actions [#6676 @rjbou]
159160
* Bump opam binary used in depexts actions to 2.4.1 [#6676 @rjbou]
161+
* Check `src_ext/update-sources.sh` using shellcheck [#6701 @kit-ty-kate]
160162

161163
## Doc
162164
* Update the installation documentation with the release of opam 2.4.1 [#6620 @kit-ty-kate]

src_ext/update-sources.sh

Lines changed: 18 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,36 @@
11
#!/usr/bin/env bash
22

3+
set -euo pipefail
4+
35
function process
46
{
5-
while read name prefix version url; do
7+
while read -r name; do
68
package=$name
79
case "$package" in
810
findlib) package=ocamlfind;;
911
dune-local) package=dune;;
1012
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//')
1214
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")
1618
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' ')
1921
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"
2924
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"
4128
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)
4330
}
4431

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:"
4834
process Makefile.sources
4935
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

Comments
 (0)