branch: master commit 4ef1768e8174b169ce4f329998b901931148f693 Author: Noam Postavsky <npost...@users.sourceforge.net> Commit: Noam Postavsky <npost...@users.sourceforge.net>
Add timestamp of source revision to HTML doc * doc/yas-doc-helper.el: Put revision's commit date into :html-postamble project property. Use SOURCE_DATE_EPOCH instead of git data, if it's defined. --- doc/yas-doc-helper.el | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/doc/yas-doc-helper.el b/doc/yas-doc-helper.el index ffce751..623ea9f 100644 --- a/doc/yas-doc-helper.el +++ b/doc/yas-doc-helper.el @@ -120,11 +120,20 @@ (let* ((dir (if load-file-name (file-name-directory load-file-name) default-directory)) - (rev (with-temp-file (expand-file-name "html-revision" dir) - (or (when (eq (call-process "git" nil t nil - "rev-parse" "--verify" "HEAD") 0) - (buffer-string)) - (princ yas--version (current-buffer))))) + (src-epoch (getenv "SOURCE_DATE_EPOCH")) + ;; Presence of SOURCE_DATE_EPOCH indicates a reproducible + ;; build, don't depend on git. + (rev (unless src-epoch + (ignore-errors + (car (process-lines "git" "rev-parse" "--verify" "HEAD"))))) + (date (format-time-string + "(%Y-%m-%d %H:%M:%S)" + (seconds-to-time + (string-to-number + (or (if rev (car (process-lines "git" "show" "--format=%ct" rev)) + src-epoch) + "0"))) + t)) (proj-plist `(,@(when (fboundp 'org-html-publish-to-html) '(:publishing-function org-html-publish-to-html)) @@ -134,10 +143,13 @@ (insert-file-contents (expand-file-name "nav-menu.html.inc" dir)) (buffer-string)) :html-postamble - ,(concat "<hr><p class='creator'>Generated by %c on %d from " - rev "</p>\n" + ,(concat "<hr><p class='creator'>Generated by %c from " + (or rev yas--version) " " date "</p>\n" "<p class='xhtml-validation'>%v</p>\n"))) (project (assoc "yasnippet" org-publish-project-alist))) + (when rev ;; Rakefile :doc:upload uses "html-revision". + (with-temp-file (expand-file-name "html-revision" dir) + (princ rev (current-buffer)))) (if project (setcdr project proj-plist) (push `("yasnippet" . ,proj-plist)