diff --git a/tools/repo/check.d/10-crontabs.sh b/tools/repo/check.d/10-crontabs.sh index 23fea1d..7c0e2cc 100755 --- a/tools/repo/check.d/10-crontabs.sh +++ b/tools/repo/check.d/10-crontabs.sh @@ -1,14 +1,24 @@ -#!/bin/sh +#!/bin/bash set -e for cronfile in skel/etc/cron.d/*; do + basename=$(basename $cronfile) + sum=$(sha1sum $cronfile) + if [ -f .neb/cron/$basename-sum.txt ]; then + [ "$(cat .neb/cron/$basename-sum.txt)" = "$sum" ] && continue + else + mkdir -p .neb/cron + fi + echo "checking $cronfile..." if ! echo "$cronfile" | grep -q "."; then echo "$cronfile: crontabs may not have an extension" exit 1 fi - if ! [ $(tail -c1 "$cronfile" | wc -l) -gt 0 ]; then - echo "$cronfile: crontabs must end with a newline" + if ! crontab -T $cronfile &> /dev/null; then + echo "$cronfile: crontab syntax error" exit 1 fi + + echo "$sum" > .neb/cron/$basename-sum.txt done \ No newline at end of file