1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
From: Dmitry Shachnev <mitya57@debian.org>
Date: Sat, 20 May 2023 19:52:44 +0300
Subject: Support SOURCE_DATE_EPOCH in date directive and "Generated on" line
Co-authored-by: Chris Lamb <lamby@debian.org>
Forwarded: https://sourceforge.net/p/docutils/patches/132/
---
docutils/parsers/rst/directives/misc.py | 13 +++++++------
docutils/transforms/universal.py | 8 +++++++-
2 files changed, 14 insertions(+), 7 deletions(-)
diff --git a/docutils/parsers/rst/directives/misc.py b/docutils/parsers/rst/directives/misc.py
index 2c19d11..d6c5d02 100644
--- a/docutils/parsers/rst/directives/misc.py
+++ b/docutils/parsers/rst/directives/misc.py
@@ -8,6 +8,7 @@ from __future__ import annotations
__docformat__ = 'reStructuredText'
+import os
import re
import time
from pathlib import Path
@@ -660,12 +661,12 @@ class Date(Directive):
#
# See also the discussion about \date \time \year in TeX
# http://tug.org/pipermail/tex-k/2016-May/002704.html
- # source_date_epoch = os.environ.get('SOURCE_DATE_EPOCH')
- # if (source_date_epoch):
- # text = time.strftime(format_str,
- # time.gmtime(int(source_date_epoch)))
- # else:
- text = time.strftime(format_str)
+ source_date_epoch = os.environ.get('SOURCE_DATE_EPOCH')
+ if source_date_epoch:
+ text = time.strftime(format_str,
+ time.gmtime(int(source_date_epoch)))
+ else:
+ text = time.strftime(format_str)
return [nodes.Text(text)]
diff --git a/docutils/transforms/universal.py b/docutils/transforms/universal.py
index b50c03d..8c8ebf6 100644
--- a/docutils/transforms/universal.py
+++ b/docutils/transforms/universal.py
@@ -23,6 +23,7 @@ from __future__ import annotations
__docformat__ = 'reStructuredText'
+import os
import re
import time
from docutils import nodes, utils
@@ -76,7 +77,12 @@ class Decorations(Transform):
refuri=source),
nodes.Text('.\n')])
if settings.datestamp:
- datestamp = time.strftime(settings.datestamp, time.gmtime())
+ source_date_epoch = os.environ.get('SOURCE_DATE_EPOCH')
+ if source_date_epoch:
+ datestamp = time.strftime(settings.datestamp,
+ time.gmtime(int(source_date_epoch)))
+ else:
+ datestamp = time.strftime(settings.datestamp, time.gmtime())
text.append(nodes.Text('Generated on: ' + datestamp + '.\n'))
if settings.generator:
text.extend([
|