#!/bin/sh set -e cache_dir='/srv/arch-mirror/sources.archlinux32' mkdir -p \ "${cache_dir}/md5sum" \ "${cache_dir}/sha1sum" \ "${cache_dir}/sha256sum" \ "${cache_dir}/sha512sum" grep '^[^#]' "$(dirname "$0")/downloads.list" | \ while read -r url; do if echo "${url}" | \ grep -q '\*[^/]*$'; then urlDir=$( printf '%s\n' "${url}" | \ sed 's|/[^/]*$|/|' ) urlFile=$( printf '%s\n' "${url}" | \ sed ' s|^.*/|| s|\.|\.|g s|*|.*|g ' ) wget -O - "${urlDir}" 2> /dev/null | \ tr '"<>' '\n' | \ grep "^${urlFile}\$" | \ sort -u | \ xargs -r printf "${urlDir}%s\n" else printf '%s\n' "${url}" fi done | \ while read -r url; do if ! wget -O "${cache_dir}/tmp" "${url}" 2> /dev/null; then continue fi sha512=$( sha512sum "${cache_dir}/tmp" | \ cut -d' ' -f1 ) sha256=$( sha256sum "${cache_dir}/tmp" | \ cut -d' ' -f1 ) sha1=$( sha1sum "${cache_dir}/tmp" | \ cut -d' ' -f1 ) md5=$( md5sum "${cache_dir}/tmp" | \ cut -d' ' -f1 ) if [ ! -f "${cache_dir}/sha512sum/${sha512}" ]; then mv "${cache_dir}/tmp" "${cache_dir}/sha512sum/${sha512}" else rm "${cache_dir}/tmp" fi if [ ! -f "${cache_dir}/sha256sum/${sha256}" ]; then ln "${cache_dir}/sha512sum/${sha512}" "${cache_dir}/sha256sum/${sha256}" fi if [ ! -f "${cache_dir}/sha1sum/${sha1}" ]; then ln "${cache_dir}/sha512sum/${sha512}" "${cache_dir}/sha1sum/${sha1}" fi if [ ! -f "${cache_dir}/sha1sum/${md5}" ]; then ln "${cache_dir}/sha512sum/${sha512}" "${cache_dir}/sha1sum/${md5}" fi done