#!/usr/bin/bash ROOT="$(pwd)" dl() { local cookie="/tmp/pacman-mirror-cookie.txt" touch "${cookie}" local file for file in "${@}" do wget --load-cookies="${cookie}" --save-cookies="${cookie}" --keep-session-cookies -nv -N "${file}" done } verify() { local file="${1}" gpg --homedir "${ROOT}" --verify "${file}".sig "${file}" 2> /dev/null } mirror() { local dir="${1}" local db="${2}" local url="${3}" local srcurl="${4}" mkdir -p "${dir}" pushd "${dir}" > /dev/null # download DB file dl "${url}"/"${db}".db{,.sig} verify "${db}".db || echo "Problem downloading ${db}.db!" # download missing packages local pkg srcpkg bsdtar -xOf "${db}".db "*/desc" | grep -A 1 %FILENAME% | sed -e '/^%FILENAME%$/d' -e '/^--$/d' | while read pkg do srcpkg="${pkg%-*.pkg.tar.*}".src.tar.gz verify "${pkg}" || dl "${url}"/"${pkg}"{,.sig} verify "${srcpkg}" || dl "${srcurl}"/"${srcpkg}"{,.sig} done popd > /dev/null } dl "https://raw.githubusercontent.com/Alexpux/MSYS2-keyring/master/msys2.gpg" gpg --homedir . --import msys2.gpg base="http://downloads.sourceforge.net/project/msys2/REPOS" mirror mingw32 mingw32 "${base}/MINGW/i686" "${base}/MINGW/Sources" mirror mingw64 mingw64 "${base}/MINGW/x86_64" "${base}/MINGW/Sources" mirror msys2-i686 msys "${base}/MSYS2/i686" "${base}/MSYS2/Sources" mirror msys2-x86_64 msys "${base}/MSYS2/x86_64" "${base}/MSYS2/Sources"