diff options
author | Robin H. Johnson <robbat2@gentoo.org> | 2020-04-28 22:09:34 -0700 |
---|---|---|
committer | Robin H. Johnson <robbat2@gentoo.org> | 2020-04-28 22:09:34 -0700 |
commit | 3481f1fa6e8dba159ded86d4f09ea860e307049a (patch) | |
tree | 63c30f7af7883f802211cd1568a745ccd7308a95 /mirmon-wrapper.sh | |
parent | snapshots: fix URL (diff) | |
download | gentoo-mirrorstats-3481f1fa6e8dba159ded86d4f09ea860e307049a.tar.gz gentoo-mirrorstats-3481f1fa6e8dba159ded86d4f09ea860e307049a.tar.bz2 gentoo-mirrorstats-3481f1fa6e8dba159ded86d4f09ea860e307049a.zip |
Convert refactored runner to wrapper
Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
Diffstat (limited to 'mirmon-wrapper.sh')
-rwxr-xr-x | mirmon-wrapper.sh | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/mirmon-wrapper.sh b/mirmon-wrapper.sh new file mode 100755 index 0000000..ba731c6 --- /dev/null +++ b/mirmon-wrapper.sh @@ -0,0 +1,125 @@ +#!/bin/bash -e + +NAME=$(basename "$0") + +OPTIONS=( + "mode" + "xml-src" + "url" +) + +usage() { + echo "Usage: ${NAME}$(printf " --%s=..." "${OPTIONS[@]}" )" 1>&2 + exit 3 +} + +dohelp() { + echo "${NAME} TODO" 1>&2 + exit 0 +} + +die() { + echo "$*" 1>&2 + exit 2 +} + +main() { + [[ -z "$MODE" ]] && die "--mode unset" + [[ -z "$XML_SRC" ]] && die "--xml-src unset" + [[ -z "$URL" ]] && die "--url unset" + SITEDIR=/var/www/mirrorstats.gentoo.org + REPODIR=${SITEDIR}/gentoo-mirrorstats/ + MODEDIR=${REPODIR}/${MODE}_mirrors/ + VARDIR=${SITEDIR}/var/${MODE} + HTDOCS=${SITEDIR}/htdocs/${MODE} + MIRMON=$(readlink -f "${SITEDIR}"/mirmon/mirmon) + CONFFILE=$(readlink -f "${MODEDIR}"/mirmon.conf) + VAR_GMIRRORS=${VARDIR}/g.mirrors + + # Grab mirrors from the web + mkdir -p "${VARDIR}" + "${REPODIR}"/get-mirrors-from-${XML_SRC}-xml.rb > "${VAR_GMIRRORS}".tmp + + EXTRA_MIRRORS=${MODEDIR}/g.mirrors.extra + [[ -e "${EXTRA_MIRRORS}" ]] && cat "${EXTRA_MIRRORS}" >>"${VAR_GMIRRORS}".tmp + + # Atomic rotate into place + mv -f "${VAR_GMIRRORS}"{.tmp,} + + # fatal if the state file is NOT present. + [[ -e ${VARDIR}/mirmon.state ]] || touch "${VARDIR}/mirmon.state" + + # run mirmon + /usr/bin/perl "${MIRMON}" -c "${CONFFILE}" -q -get update + + # Set up a nice link to our mirror page directly: + mkdir -p ${HTDOCS} + sed \ + -e "s#mirrors</H2>#<a href="${URL}">mirrors</a></H2>#" \ + >"${HTDOCS}"/index.html.tmp <"${HTDOCS}"/index-wip.html \ + && mv -f "${HTDOCS}"/index.html{.tmp,} + + # Generate a json file containing the state of each mirror + "${REPODIR}"/generate-json.py \ + "${VARDIR}"/mirmon.state \ + >"${HTDOCS}"/state.json.tmp \ + && mv -f "${HTDOCS}"/state.json{.tmp,} + + # Done + exit 0 +} + +opts=$(getopt \ + --longoptions "$(printf "%s:," "${OPTIONS[@]}" )" \ + --name "$(basename "$0")" \ + --options "" \ + -- "$@" +) + +eval set --$opts + +MODE='' +XML_SRC='' +URL='' +HELP=0 +INVALID=0 + +while [[ $# -gt 0 ]]; do + case "$1" in + --mode) + MODE=$2 + shift 2 + ;; + + --xml-src) + XML_SRC=$2 + shift 2 + ;; + + --url) + URL=$2 + shift 2 + ;; + --help) + HELP=1 + break + ;; + --) + # End of options + break + ;; + *) + INVALID=1 + break + ;; + esac +done + +[[ $INVALID -eq 1 ]] && usage +[[ $HELP -eq 1 ]] && dohelp + +main + +#MODE=snapshots +#XML_SRC=distfiles +#URL=https://www.gentoo.org/downloads/mirrors/ |