Dmitry V. Levin
31ce194d23
* file-date-gen: Consistently print the UTC date in C locale. When $SOURCE_DATE_EPOCH is non-empty, use it as fallback date before the current system date. Reported-by: Chris Lamb <lamby@debian.org> Closes: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=896016 Closes: https://github.com/strace/strace/pull/68
43 lines
793 B
Bash
Executable File
43 lines
793 B
Bash
Executable File
#! /bin/sh
|
|
|
|
if [ "$1" = "-f" ]; then
|
|
shift
|
|
DATE_FORMAT="$1"
|
|
shift
|
|
fi
|
|
|
|
: ${FILE:=$1}
|
|
: ${DATE_FILE:=$(dirname "$FILE")/.$(basename "${FILE}").date}
|
|
: ${DEFAULT_DATE:=$2}
|
|
: ${DATE_FORMAT:=%Y-%m-%d}
|
|
LC_TIME=C; export LC_TIME
|
|
|
|
date=
|
|
|
|
[ -n "${FILE}" ] || {
|
|
echo >&2 "$0 $(dirname "$0")/file [$(dirname "$0")/file.date [DEFAULT_DATE]]"
|
|
exit 1
|
|
}
|
|
|
|
[ -f "${DATE_FILE}" ] && date="$(cat "${DATE_FILE}")"
|
|
|
|
[ -n "${date}" ] ||
|
|
date="$(git log -n 1 --format=format:%cD --no-patch "${FILE}")"
|
|
|
|
[ -n "${date}" ] ||
|
|
date="${DEFAULT_DATE}"
|
|
|
|
[ -n "${date}" ] ||
|
|
[ -z "${SOURCE_DATE_EPOCH-}" ] ||
|
|
date="$(date -u -d "@${SOURCE_DATE_EPOCH}")"
|
|
|
|
[ -n "${date}" ] ||
|
|
date="$(date -u)"
|
|
|
|
[ -n "${date}" ] || {
|
|
echo >&2 'Undefined date.'
|
|
exit 1
|
|
}
|
|
|
|
exec printf "%s" $(date -u "+${DATE_FORMAT}" -d "${date}")
|