summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/gitinfo2/gitinfo2.sty
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/gitinfo2/gitinfo2.sty')
-rw-r--r--macros/latex/contrib/gitinfo2/gitinfo2.sty218
1 files changed, 218 insertions, 0 deletions
diff --git a/macros/latex/contrib/gitinfo2/gitinfo2.sty b/macros/latex/contrib/gitinfo2/gitinfo2.sty
new file mode 100644
index 0000000000..29a94918ce
--- /dev/null
+++ b/macros/latex/contrib/gitinfo2/gitinfo2.sty
@@ -0,0 +1,218 @@
+% gitinfo2.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.
+%
+% This work consists of these files:
+% gitinfo2.sty, gitexinfo.sty, gitinfo2.tex, gitinfo2.pdf,
+% gitinfo2test.tex, post-xxx-sample.txt,
+% and gitHeadLocal.gin
+% -----------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{gitinfo2}[2015/11/22 v2.0.7 git revision information]
+\RequirePackage{etoolbox}
+\RequirePackage{xstring}
+\RequirePackage{kvoptions}
+\RequirePackage{eso-pic}
+\SetupKeyvalOptions{family=gitinfo,prefix=gitInf@}
+\DeclareBoolOption{draft}
+\DeclareBoolOption{grumpy}
+\DeclareBoolOption{local}
+\DeclareBoolOption{pcount}
+\DeclareBoolOption{footinfo}
+\DeclareBoolOption{mark}
+\DeclareBoolOption{markifdraft}
+\DeclareBoolOption{markifdirty}
+\DeclareBoolOption{marknotags}
+\DeclareStringOption[(None)]{missing}
+\DeclareStringOption[(None)]{notags}
+\DeclareStringOption[(*)]{dirty}
+\DeclareStringOption[4]{maxdepth}
+\DeclareStringOption[1.5\baselineskip]{raisemark}
+\ProcessKeyvalOptions*
+\newcommand{\gitAbbrevHash}{\gitInf@missing}
+\newcommand{\gitHash}{\gitInf@missing}
+\newcommand{\gitAuthorName}{\gitInf@missing}
+\newcommand{\gitAuthorEmail}{\gitInf@missing}
+\newcommand{\gitAuthorDate}{\gitInf@missing}
+\newcommand{\gitAuthorIsoDate}{\gitInf@missing}
+\newcommand{\gitAuthorUnixDate}{\gitInf@missing}
+\newcommand{\gitCommitterName}{\gitInf@missing}
+\newcommand{\gitCommitterEmail}{\gitInf@missing}
+\newcommand{\gitCommitterDate}{\gitInf@missing}
+\newcommand{\gitCommitterIsoDate}{\gitInf@missing}
+\newcommand{\gitCommitterUnixDate}{\gitInf@missing}
+\newcommand{\gitTags}{}
+\newcommand{\gitFirstTagDescribe}{\gitInf@missing}
+\newcommand{\gitReferences}{\gitInf@missing}
+\newcommand{\gitBranch}{\gitInf@missing}
+\newcommand{\gitVtag}{}
+\newcommand{\gitVtags}{}
+\newcommand{\gitVtagn}{\space\gitInf@missing}
+\newcommand{\gitRel}{}
+\newcommand{\gitRels}{}
+\newcommand{\gitReln}{\space\gitInf@missing}
+\newcommand{\gitDirty}{}
+\newcommand{\gitRoff}{}
+\newcommand{\gitDescribe}{(None)}
+\newcommand{\gitMarkPref}{[git]}
+\@ifpackageloaded{xcolor}{%
+ \newcommand{\gitMarkFormat}{\color{gray}\small\sffamily}%
+}{%
+ \newcommand{\gitMarkFormat}{\small\sffamily}%
+}
+\newcommand{\gitMark}{}
+\newcommand{\gitWrapEmail}[1]{#1}
+% private values
+\newif\ifGI@is@a@repo@
+
+% private constants
+\providecommand{\GI@repo@prefix}{}
+\ifbool{gitInf@local}{%
+ \providecommand{\GI@githeadinfo@file}{gitHeadLocal.gin}
+ \def\gitInf@maxdepth{0}
+}{%
+ \providecommand{\GI@githeadinfo@file}{\GI@repo@prefix.git/gitHeadInfo.gin}
+}
+\newcommand{\gitInf@dirtflag}{}
+\newcommand{\gitInf@describe}{}
+\newcommand{\gitInf@mcount}{}
+\newcommand{\gitInf@rel}{}
+\newcommand{\gitInf@off}{}
+
+% \TeX{}nical tools
+
+\newcommand\GI@export@macro[1]{%
+ \edef\@tempa{\endgroup
+ \def\noexpand#1{#1}}%
+ \@tempa}
+
+% finding the .git directory
+
+\newcommand\GI@check@repo@prefix{%
+ \GI@is@a@repo@true
+ \IfFileExists{./\GI@githeadinfo@file}{%
+ \edef\GI@repo@prefix{./}%
+ }{%
+ \GI@set@repo@prefix}}
+
+\newcommand\GI@set@repo@prefix{%
+ \begingroup \count@\gitInf@maxdepth\relax
+ \GI@set@repo@prefix@}
+
+\newcommand\GI@set@repo@prefix@{%
+ \advance\count@\m@ne
+ \ifnum\count@<\z@
+ % \expandafter\GI@not@a@git@repo
+ \endgroup\relax
+ \else
+ \edef\GI@repo@prefix{../\GI@repo@prefix}%
+ \IfFileExists{\GI@githeadinfo@file}{%
+ \PackageInfo{gitinfo2}{%
+ gitinfo2 found : \GI@githeadinfo@file \MessageBreak
+ }%
+ \GI@export@macro\GI@githeadinfo@file
+ }{%
+ \expandafter\GI@set@repo@prefix@}%
+ \fi}
+
+\GI@check@repo@prefix
+\InputIfFileExists{\GI@githeadinfo@file}{}{%
+ \ifbool{gitInf@grumpy}{%
+ \PackageError{gitinfo2}{I can't find the file '\GI@githeadinfo@file'\MessageBreak
+ Please check the manual (gitinfo2.pdf) \MessageBreak
+ if you need more details}{}
+ }{%
+ \PackageWarningNoLine{gitinfo2}{I can't find the file '\GI@githeadinfo@file'.\MessageBreak
+ All git metadata has been set to '\gitInf@missing'}
+ }
+}
+% ---------------------------------------------------------------------
+% Memoir support
+% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+\@ifclassloaded{memoir}{%
+ \ifbool{gitInf@pcount}{
+ \newcommand{\@gitPage}{\thepage/\thelastpage}
+ \addtodef{\frontmatter}{\renewcommand{\@gitPage}{\thepage}}{}
+ \addtodef{\mainmatter}{}{\renewcommand{\@gitPage}{\thepage/\thelastpage}}
+ }{%
+ \newcommand{\@gitPage}{\thepage}
+ }
+ \newcommand{\@gitFootRev}{Release\gitRels: \gitAbbrevHash{} (\gitAuthorDate)}
+ \newcommand{\@gitrFootRev}{%
+ \tiny\textsf{\raggedleft \@gitFootRev}%
+ }%
+ \newcommand{\@gitlFootRev}{%
+ \tiny\textsf{\@gitFootRev}%
+ }%
+ \copypagestyle{giplain}{plain}
+ \copypagestyle{giruled}{ruled}
+ \copypagestyle{giheadings}{headings}
+ \makeevenfoot{giplain}{\@gitPage}{}{\@gitrFootRev}
+ \makeoddfoot{giplain}{\@gitlFootRev}{}{\@gitPage}
+ \makeevenfoot{giruled}{\@gitPage}{}{\@gitrFootRev}
+ \makeoddfoot{giruled}{\@gitlFootRev}{}{\@gitPage}
+ \makeevenfoot{giheadings}{\@gitPage}{}{\@gitrFootRev}
+ \makeoddfoot{giheadings}{\@gitlFootRev}{}{\@gitPage}
+ \makeevenhead{giheadings}{}{}{\slshape\leftmark}
+ \makeoddhead{giheadings}{\slshape\rightmark}{}{}
+}{}%
+% ---------------------------------------------------------------------
+% Watermarking
+% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+\ifbool{gitInf@markifdirty}{%
+ \IfEq{\gitDirty}{}{}{%
+ \booltrue{gitInf@mark}
+ \renewcommand{\gitMarkPref}{[Dirty]}
+ }%
+}{}%
+\ifbool{gitInf@markifdraft}{%
+ \ifbool{gitInf@draft}{%
+ \booltrue{gitInf@mark}
+ \renewcommand{\gitMarkPref}{[Draft]}
+ }{}%
+}{}%
+\ifbool{gitInf@mark}{%
+ \AddToShipoutPictureBG{%
+ \AtPageLowerLeft{%
+ \raisebox{\gitInf@raisemark}{%
+ \makebox[\paperwidth]{%
+ \begin{minipage}[b]{\paperwidth}%
+ \renewcommand{\baselinestretch}{1}%
+ \centering{\gitMarkFormat\gitMarkPref{} \textbullet{} \gitMark}%
+ \end{minipage}%
+ }%
+ }%
+ }%
+ }%
+}{}%
+% ---------------------------------------------------------------------
+% Datetime integration
+% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+\@ifpackageloaded{datetime2}{%
+ \IfEq{\gitAuthorDate}{\gitInf@missing}{%
+ \DTMsavedate{gitdate}{\THEDAY-\THEMONTH-\THEYEAR}
+ }{%
+ \StrCut{\gitAuthorDate}{-}{\gitInf@year}{\gitInf@md}
+ \StrCut{\gitInf@md}{-}{\gitInf@month}{\gitInf@day}
+ \DTMsavenoparsedate{gitdate}{\gitInf@year}{\gitInf@month}{\gitInf@day}{-1}
+ }
+}{}%
+\@ifpackageloaded{datetime}{%
+ \IfEq{\gitAuthorDate}{\gitInf@missing}{%
+ \newdate{gitdate}{\THEDAY}{\THEMONTH}{\THEYEAR}
+ }{%
+ \StrCut{\gitAuthorDate}{-}{\gitInf@year}{\gitInf@md}
+ \StrCut{\gitInf@md}{-}{\gitInf@month}{\gitInf@day}
+ \newdate{gitdate}{\gitInf@day}{\gitInf@month}{\gitInf@year}
+ }
+}{}%