From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining 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