Blob Blame History Raw
#!/bin/sh
set -o errexit
set -o nounset

URL='https://standards-oui.ieee.org/oui/oui.csv'
DATA='oui.csv'
SPEC='arpwatch.spec'

cd "$(dirname "$0")"

echo "==> Fetching ${URL}..." 1>&2
newfile="$(mktemp out.csv.XXXXXXXXXX)"
# shellcheck disable=SC2064
trap "rm -f '${newfile}'" INT TERM EXIT
chmod 0644 "${newfile}"
curl --output "${newfile}" "${URL}"

echo '==> Comparing data...' 1>&2
newhash="$(sha256sum < "${newfile}")"
oldhash="$(sha256sum < "${DATA}")"
if [ "${newhash}" = "${oldhash}" ]
then
  echo '==> Local file is up to date' 1>&2
  exit 0
fi

env TZ=UTC stat --format='Old file %s bytes, modified %y' "${DATA}"
env TZ=UTC stat --format='New file %s bytes, modified %y' "${newfile}"
mv "${newfile}" "${DATA}"

ISOMTIME="$(
  env TZ=UTC date --iso-8601=seconds --date="$(stat --format='@%Y' "${DATA}")"
)"
sed -r -i 's/(oui\.csv last fetched )[^[:blank:]]+\./\1'"${ISOMTIME}./" "${SPEC}"

echo "==> Updated ${DATA}" 1>&2

git add "${DATA}"
fedpkg commit -m 'Generate ethercodes.dat from latest oui.csv'

# vim: set tw=78 ts=2 sw=2 sts=2 et ai cin nojs :