X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=crontab.d%2Fupdate.sh;h=72422fc90390e3c767eddfacd5fc676045eae484;hb=19420fa802a6d29f6268221894798ba86938a15e;hp=cfdcbcc5a3364562ac3b2b0555c06d2e94fbf3f2;hpb=b3b0fc94f9782566977efdddd344f925c7f7522b;p=config%2Fdotfiles.git diff --git a/crontab.d/update.sh b/crontab.d/update.sh index cfdcbcc..72422fc 100755 --- a/crontab.d/update.sh +++ b/crontab.d/update.sh @@ -5,7 +5,7 @@ # # An existing crontab entry not generated with this script is not overwritten. -# Copyright (C) 2012 Simon Ruderich +# Copyright (C) 2012-2013 Simon Ruderich # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -26,7 +26,8 @@ set -e HEADER_WARNING="# WARNING! DO NOT EDIT THIS FILE! #" -# Don't overwrite existing crontab entries. +# Don't overwrite existing crontab entries. Not race condition free but that +# can't be helped. if crontab -l >/dev/null 2>&1; then if crontab -l | head -n3 | grep "^$HEADER_WARNING$" >/dev/null; then : @@ -42,14 +43,18 @@ if test ! -d "$DIRECTORY" || test ! -O "$DIRECTORY"; then exit 1 fi +# `set -e` aborts when `mktemp` fails. CRONTAB=`mktemp --tmpdir="$DIRECTORY" update-crontab.XXXXXXXXXXXX` echo "###################################" > "$CRONTAB" echo "$HEADER_WARNING" >> "$CRONTAB" echo "###################################" >> "$CRONTAB" echo >> "$CRONTAB" -echo "# It was generated from '$DIRECTORY/*' on `date -R`." >> "$CRONTAB" +printf "# It was generated from '%s/*' on %s." \ + "$DIRECTORY" "`LANG=C date '+%a, %d %b %Y %H:%M:%S %z'`" >>"$CRONTAB" +# Enforce C sort order. +LC_ALL=C NO_MATCHES= for file in "$DIRECTORY"/crontab.*; do @@ -59,18 +64,20 @@ for file in "$DIRECTORY"/crontab.*; do break fi - echo "Found '$file'." + printf "Found '%s'.\n" "$file" - echo >> "$CRONTAB" - echo >> "$CRONTAB" - echo "## $file:" >> "$CRONTAB" + printf '\n\n## %s:\n' "$file" >>"$CRONTAB" + # Strip licenses, multiple empty lines and fix $HOME variables in PATH + # (cron doesn't expand variables). START_REGEX='^# This [a-zA-Z]* is free software: you can redistribute it' END_REGEX='^# along with this [a-zA-Z]*. If not, see <[^>]*>\.' < "$file" sed -e "/$START_REGEX/,/$END_REGEX/ d" \ -e "/^#[ ]*$/ d" \ -e "/^# Copyright (C) [0-9][0-9]* / d" \ | cat --squeeze-blank \ + | sed "/^PATH/ s:\$HOME:$HOME:g" \ + | sed 's/RAND_SLEEP \([0-9]*\)/sleep `perl -e "srand; print int rand \1;"`/' \ >> "$CRONTAB" done