{ name , channel , writeScript , xidel , coreutils , gnused , gnugrep , curl , gnupg , runtimeShell , baseName ? "firefox" , basePath ? "pkgs/applications/networking/browsers/firefox-bin" , baseUrl }: let isBeta = channel != "release"; in writeScript "update-${name}" '' #!${runtimeShell} PATH=${coreutils}/bin:${gnused}/bin:${gnugrep}/bin:${xidel}/bin:${curl}/bin:${gnupg}/bin set -eux pushd ${basePath} HOME=`mktemp -d` export GNUPGHOME=`mktemp -d` gpg --keyserver hkps://gpg.mozilla.org --recv-keys 14F26682D0916CDD81E37B6D61B7B526D98F0353 tmpfile=`mktemp` url=${baseUrl} # retriving latest released version # - extracts all links from the $url # - removes . and .. # - this line remove everything not starting with a number # - this line sorts everything with semver in mind # - we remove lines that are mentioning funnelcake # - this line removes beta version if we are looking for final release # versions or removes release versions if we are looking for beta # versions # - this line pick up latest release version=`xidel -s $url --extract "//a" | \ sed s"/.$//" | \ grep "^[0-9]" | \ sort --version-sort | \ grep -v "funnelcake" | \ grep -e "${if isBeta then "b" else ""}\([[:digit:]]\|[[:digit:]][[:digit:]]\)$" | ${if isBeta then "" else "grep -v \"b\" |"} \ tail -1` curl --silent -o $HOME/shasums "$url$version/SHA256SUMS" curl --silent -o $HOME/shasums.asc "$url$version/SHA256SUMS.asc" gpgv --keyring=$GNUPGHOME/pubring.kbx $HOME/shasums.asc $HOME/shasums # this is a list of sha256 and tarballs for both arches # Upstream files contains python repr strings like b'somehash', hence the sed dance shasums=`cat $HOME/shasums | sed -E s/"b'([a-f0-9]{64})'?(.*)"/'\1\2'/` cat > $tmpfile <> $tmpfile <> $tmpfile <