#! /bin/sh
set -e
usage () {
cat <<EOF
Usage: $0 PATTERN CHANNEL YEAR [MONTH] [DAY]
EOF
}
eval set -- "$(getopt -o '' -l help -- "$@")" || { usage >&2; exit 2; }
while :; do
case $1 in
--help)
usage
exit 0
;;
--) shift; break ;;
*) usage >&2; exit 2 ;;
esac
done
if [ $# -lt 3 ]; then
usage >&2
exit 2
fi
PATTERN="$1"
CHANNEL="%23${2#\#}"
YEAR="$3"
MONTH="$4"
DAY="$5"
CURYEAR="$(date +%Y)"
CURMONTH="$(date +%m)"
CURDAY="$(date +%d)"
tmp="$(mktemp)"
cleanup () { rm -f "$tmp"; }
trap cleanup EXIT HUP INT QUIT TERM
if [ "$MONTH" ]; then
months="$MONTH"
else
months="$(seq -w 1 12)"
fi
for month in $months; do
if [ "$DAY" ]; then
days="$DAY"
else
lastday=31
case $month in
02)
if [ "$(($YEAR % 400))" = 0 ]; then
lastday=29
elif [ "$(($YEAR % 100))" = 0 ]; then
lastday=28
elif [ "$(($YEAR % 4))" = 0 ]; then
lastday=29
else
lastday=28
fi
;;
04|06|09|11)
lastday=30
;;
esac
days="$(seq -w 1 "$lastday")"
fi
for day in $days; do
url="http://irclogs.ubuntu.com/$YEAR/$month/$day/$CHANNEL.txt"
wget -q -O- "$url" | egrep -i "$PATTERN" >"$tmp" || true
if [ -s "$tmp" ]; then
sed "s,^,$url:,g" "$tmp"
fi
done
done