#!/bin/bash # # mklastrites # # by default works on ~/lastrites-$(date +%Y%m%d), which needs to be # in the format # # cat/pkg Real Name DD Mon YYYY # # (3 fields; can be seperated by tabs or colons, but not spaces) # # outputs ~/gentoo/lastrites/lastrites-$(date +%Y%m%d).txt and .xml source /usr/lib/portage/bin/isolated-functions.sh CURDATE="$(date +%Y%m%d)" SRCFILE="${HOME}/lastrites-${CURDATE}" OUTDIR="${HOME}/gentoo/lastrites" TMPFILE="$(mktemp -t $(basename $0)-tmp.XXXXXXXX)" if [[ ! -f "${SRCFILE}" ]]; then echo eerror "Missing source file - ${SRCFILE}" echo exit 1 fi if [[ ! -d "${OUTDIR}" ]]; then mkdir -p "${OUTDIR}" || exit 1 fi filter_src() { awk '{ gsub(/\t+/, ":"); print }' "${SRCFILE}" \ | awk '{ gsub(/^[ \t]+|[ \t]+$/,""); print }' \ | awk '{ $1 = $1; print }' | awk NF \ | sort -t ":" -k3.8n -k3.4M -k3n \ > "${TMPFILE}" } output_txt() { awk -F: '{ printf "%-30s %-40s %10s\n", $1, $2, $3 }' "${TMPFILE}" \ > "${OUTDIR}/lastrites-${CURDATE}.txt" echo einfo "Generated ${OUTDIR}/lastrites-${CURDATE}.txt" } output_xml() { local lastrite pkg devname devmail rmdate pkguri OLDIFS="${IFS}" IFS=" " echo -e "\n\n\n" \ "\n" \ "\n" \ "\n" \ "\n" \ "\n\n" \ > "${OUTDIR}/lastrites-${CURDATE}.xml" for lastrite in $(awk '{ print $0 }' "${TMPFILE}"); do pkg="$(echo ${lastrite} | awk -F: '{ print $1 }')" devname="$(echo ${lastrite} | awk -F: '{ gsub(/ +/," "); sub(/ <[[:alnum:]|[:punct:]]+>/,""); print $2 }')" devmail="$(echo ${lastrite} | awk -F: '{ sub(/^.*.*/,""); print $0 }')" rmdate="$(echo ${lastrite} | awk -F: '{ print $3 }')" pkguri="$(echo $pkg | awk -F/ '{ printf "http://packages.gentoo.org/package/%s/%s", $1, $2 }')" echo -e "\n" \ "${pkg}\n" \ "${rmdate}\n" \ "${devname}\n" \ "\n" \ >> "${OUTDIR}/lastrites-${CURDATE}.xml" done echo -e "
Package:Removal date:Contact:
\n" >> "${OUTDIR}/lastrites-${CURDATE}.xml" IFS="${OLDIFS}" einfo "Generated ${OUTDIR}/lastrites-${CURDATE}.xml" echo } filter_src output_txt output_xml rm "${TMPFILE}" mv "${SRCFILE}" "${OUTDIR}" exit 0