#! /bin/sh
#
# @oxberg we do put this into crontab:
# * * * * * /supernode-update-hosts-and-hup
#
set -euf

cd /etc/tinc/retiolum/hosts

temp1="`mktemp`"
temp2="`mktemp`"
trap "rm -f $temp1 $temp2" EXIT INT TERM

old_commit="`cat .commit 2>/dev/null || :`"

_hrefs() {
  sed -n 's/href="\([^"]\+\)"/\n&\n/gp' |
      sed -n 's/^href="\([^"]\+\)"$/\1/p'; }

if curl -fsS \
    "https://github.com/krebscode/painload/tree/master/retiolum/hosts" |
    _hrefs |
    grep '^/krebscode/painload/blob/' |
    grep -v "/blob/$old_commit/" >$temp1
then

  new_commit=`sed 's|^/krebscode/painload/blob/\([^/]*\)/.*|\1|;q' $temp1`

  sed '
    s|^/krebscode/painload/blob/[^/]*/retiolum/hosts/\([^/]*\)$|\1|
  ' $temp1 > $temp2

  xargs rm -v -f <$temp2

  sed "
    s|^.*$|https://raw.github.com/krebscode/painload/$new_commit/retiolum/hosts/&|
  " $temp2 > $temp1

  wget -qi- < $temp1

  echo $new_commit > .commit

  pkill -HUP tincd
fi