]> granicus.if.org Git - strace/blob - file-date-gen
maint: update for linux v5.3-rc8
[strace] / file-date-gen
1 #!/bin/sh
2 #
3 # Copyright (c) 2017-2018 The strace developers.
4 # All rights reserved.
5 #
6 # SPDX-License-Identifier: LGPL-2.1-or-later
7
8 if [ "$1" = "-f" ]; then
9         shift
10         DATE_FORMAT="$1"
11         shift
12 fi
13
14 : ${FILE:=$1}
15 : ${DATE_FILE:=$(dirname "$FILE")/.$(basename "${FILE}").date}
16 : ${DEFAULT_DATE:=$2}
17 : ${DATE_FORMAT:=%Y-%m-%d}
18 LC_TIME=C; export LC_TIME
19
20 date=
21
22 [ -n "${FILE}" ] || {
23         echo >&2 "$0 $(dirname "$0")/file [$(dirname "$0")/file.date [DEFAULT_DATE]]"
24         exit 1
25 }
26
27 [ -f "${DATE_FILE}" ] && date="$(cat "${DATE_FILE}")"
28
29 [ -n "${date}" ] ||
30         date="$(git log -s -n 1 --format=format:%cD "${FILE}")"
31
32 [ -n "${date}" ] ||
33         date="${DEFAULT_DATE}"
34
35 [ -n "${date}" ] ||
36         [ -z "${SOURCE_DATE_EPOCH-}" ] ||
37         date="$(date -u -d "@${SOURCE_DATE_EPOCH}")"
38
39 [ -n "${date}" ] ||
40         date="$(date -u)"
41
42 [ -n "${date}" ] || {
43         printf >&2 "%s: Undefined date.\n" "$0"
44         exit 1
45 }
46
47 datestr="$(date -u "+${DATE_FORMAT}" -d "${date}")" &&
48 [ -n "${datestr}" ] || {
49         printf >&2 "%s: Invalid date: %s\n" "$0" "$date"
50         exit 1
51 }
52
53 exec printf '%s' "$datestr"