From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001
From: Norbert Preining <norbert@preining.info>
Date: Mon, 2 Sep 2019 13:46:59 +0900
Subject: Initial commit

---
 macros/latex/contrib/gitlog/gitlog.sty | 111 +++++++++++++++++++++++++++++++++
 1 file changed, 111 insertions(+)
 create mode 100644 macros/latex/contrib/gitlog/gitlog.sty

(limited to 'macros/latex/contrib/gitlog/gitlog.sty')

diff --git a/macros/latex/contrib/gitlog/gitlog.sty b/macros/latex/contrib/gitlog/gitlog.sty
new file mode 100644
index 0000000000..6c6a527a8d
--- /dev/null
+++ b/macros/latex/contrib/gitlog/gitlog.sty
@@ -0,0 +1,111 @@
+% gitlog.sty
+% Copyright 2015 Brent Longborough
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+%   http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+% The Current Maintainer of this work is Brent Longborough.
+% -----------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{gitlog}[2015/11/22 0.0.beta typeset git change log]
+\RequirePackage{etoolbox}
+\RequirePackage{kvoptions}
+\RequirePackage[%	
+    datamodel=gitlog,
+	bibstyle=gitlog,
+	sorting=none,
+	date=iso8601,
+	firstinits=true,
+    defernumbers=true,
+    backend=biber,
+]{biblatex}
+
+\SetupKeyvalOptions{family=gitlog,prefix=gitLog@}
+\DeclareBoolOption[false]{date}
+\DeclareComplementaryOption{nodate}{date}
+\DeclareStringOption[Change Log]{title}
+% write:
+\DeclareBoolOption[true]{write}
+\AddToKeyvalOption{gitlog}{write}{\def\gitLog@writeset{true}}
+% nowrite:
+\DeclareComplementaryOption{nowrite}{write}
+\AddToKeyvalOption{gitlog}{nowrite}{\def\gitLog@writeset{true}}
+% bibfile:
+\DeclareStringOption{bibfile}
+% set up github option depending on hyperref
+\@ifpackageloaded{hyperref}{%
+    \DeclareStringOption[]{github}
+    \DeclareStringOption[]{bitbucket}
+}{%
+    \DeclareVoidOption{github}{%
+        \PackageError{gitlog}{I can't generate GitHub links unless you load hyperref.}
+    }
+    \DeclareVoidOption{bitbucket}{%
+        \PackageError{gitlog}{I can't generate Bitbucket links unless you load hyperref.}
+    }
+}
+% process options:
+\ProcessKeyvalOptions{gitlog}
+% check if write/nowrite has been set:
+\ifdef\gitLog@writeset
+  {}
+  {% write/nowrite option has not been set,
+   % set boolean depending on value of \gitLog@bibfile:
+    \ifdefempty\gitLog@bibfile
+      {\booltrue{gitLog@write}}
+      {\boolfalse{gitLog@write}}%
+  }
+% set default for bibfile if necessary
+\ifdefempty\gitLog@bibfile
+  {\def\gitLog@bibfile{\jobname.gitlog.bib}}{}
+% make entrykey a link if github link requested
+\DeclareFieldFormat{entrykey}{\ttfamily[#1]}
+\@ifpackageloaded{hyperref}{%
+    \ifdefempty\gitLog@github{}{%
+        \DeclareFieldFormat{entrykey}{%
+            \href{https://github.com/\gitLog@github/commit/\thefield{commithash}}{\ttfamily[#1]}%
+        }
+    }
+    \ifdefempty\gitLog@bitbucket{}{%
+        \DeclareFieldFormat{entrykey}{%
+            \href{https://bitbucket.org/\gitLog@bitbucket/commits/\thefield{commithash}}{\ttfamily[#1]}%
+        }
+    }
+}{}
+\newcommand{\printGitLog}{%
+    \nocite{*}
+    \raggedright
+    \printbibliography[title={\gitLog@title},type=gitcommit]
+}
+\ifgitLog@date
+    \newbibmacro*{date+author}{%
+        \printtext{\\}%
+        \usebibmacro{date}%
+        \setunit*{, }%
+        \usebibmacro{author}%
+    }
+\else
+    \newbibmacro*{date+author}{%
+        \relax
+    }
+\fi
+\ifgitLog@write
+    {\catcode`\%=12
+    \immediate\write18{
+     git --no-pager log --reverse --pretty="format:@gitcommit{%h,%n 
+     author = {%an},%n 
+     date = {%ad},%n 
+     title = {%B},%n
+     commithash = {%H} 
+     }" --date=short > \gitLog@bibfile}
+    }
+\else
+    \relax
+\fi
+\addbibresource{\gitLog@bibfile}
-- 
cgit v1.2.3

