% \iffalse meta-comment % % Copyright (C) 2022 by Maximilian Gruber % % This file 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. % % \fi % % % \iffalse %\NeedsTeXFormat{LaTeX2e}[2005/12/01] %\ProvidesPackage{gitstatus} % [2022/10/06 v1.1 Watermark Git Information Package] % %<*driver> \documentclass{ltxdoc} \usepackage[watermark]{gitstatus} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \EnableCrossrefs \CodelineIndex \RecordChanges %\OnlyDescription \begin{document} \DocInput{gitstatus.dtx} \end{document} % % \fi % % \CheckSum{0} % % % \changes{v1.1}{2022/10/06}{Initial version} % % \DoNotIndex{\CatchFileDef, \DeclareBoolOption, \DeclareComplementaryOption, \DeclareStringOption} % \DoNotIndex{\\, \def, \else, \fi, \IfFileExists, \iffalse, } % \DoNotIndex{\newwatermark, \texttt} % \DoNotIndex{\RequirePackage, \PackageWarning, \ProcessKeyvalOptions, \StrBehind, \StrGobbleRight} % % \GetFileInfo{gitstatus.sty} % \title{The \textsf{gitstatus} package\thanks{This document % corresponds to \textsf{gitstatus}~\fileversion, % dated~\filedate.}} % \author{Maximilian Gruber \\ \texttt{m.gruber@mailbox.org}} % % \maketitle % % \begin{abstract} % This package allows to include information about a git-repository into a document. % This information can be included like the watermark in this document or by the use of variables. % \end{abstract} % % \section{Introduction} % If your LaTeX-document is version-controlled with git, you might encounter situations, where you want to include some information of your git-repository into your LaTeX-document - e.g. to keep track on who gave you feedback on which version of your document. % % \section{Options} % \DescribeMacro{gitdir} % custom git dir (can be relative), (default is ".git/", meaning your LaTeX document is in the top level of your repo) % % \DescribeMacro{watermark} % watermark with branch + hash on top of page (default: don't use watermark) % % \DescribeMacro{nowatermark} % same as watermark=false % % \DescribeMacro{novariables} % disable creation of variables (default: false, hence variables are created) % % % \section{Variables} % Apart from the option to add a watermark at the top of the page that mentions the current commit hash and branch-name, the package also provides variables with the same information for individual use. % These variables are: % \DescribeMacro{\gitdir} % The directory of the git repository. % % \DescribeMacro{\gitcommit} % The hash of the most recent commit of the current branch. % % \DescribeMacro{\gitbranch} % The name of the current branch. % % % \StopEventually{\PrintChanges} % % \section{Implementation} % % \subsection{Required Packages} % The package relies on five other packages. Three are listed here, the other two are only required if a watermark is created. % \begin{macrocode} \RequirePackage{kvoptions} \RequirePackage{catchfile} \RequirePackage{xstring} % \end{macrocode} % % \subsection{Options} % The options are defined. % \begin{macrocode} \DeclareStringOption[.git/]{gitdir} % custom git dir (can be relative) \DeclareBoolOption[false]{watermark} % watermark with branch + hash on top of page \DeclareComplementaryOption{nowatermark}{watermark} \DeclareBoolOption[false]{novariables} % disable creation of variables \ProcessKeyvalOptions* % \end{macrocode} % % % \subsection{Getting Git Information} % Git information is read directly from the files within the specified git-directory. % % \subsubsection{Branch Name} % Branch is read from HEAD. % \begin{macrocode} \def\gitstatus@headpath{\gitstatus@gitdir HEAD} \IfFileExists{\gitstatus@headpath}{ \CatchFileDef{\gitstatus@headfull}{\gitstatus@headpath}{} \StrGobbleRight{\gitstatus@headfull}{1}[\gitstatus@head] \StrBehind[2]{\gitstatus@head}{/}[\gitstatus@branch] }{ \def\gitstatus@branch{NOT AVAILABLE} \PackageWarning{gitstatus}{Can't find HEAD (maybe check specified gitdir).} } % \end{macrocode} % % \subsubsection{Commit Hash} % Commit-Hash is read from refs/heads/. % \begin{macrocode} \def\gitstatus@branchpath{\gitstatus@gitdir refs/heads/\gitstatus@branch} \IfFileExists{\gitstatus@branchpath}{ \CatchFileDef{\gitstatus@commit}{\gitstatus@branchpath}{} }{ \def\gitstatus@commit{NOT AVAILABLE} \PackageWarning{gitstatus}{Can't read commit hash (maybe check specified gitdir).} } % \end{macrocode} % % \subsection{Defining Local Variables} % Make directory, branch and hash available outside of package % \begin{macrocode} \ifgitstatus@novariables \else \def\gitdir{\gitstatus@gitdir} \def\gitbranch{\gitstatus@branch} \def\gitcommit{\gitstatus@commit} \fi % \end{macrocode} % % \subsection{Creating Watermark} % Include git information as watermark. % \begin{macrocode} \ifgitstatus@watermark \RequirePackage{xcolor} \RequirePackage[printwatermark]{xwatermark} \newwatermark [allpages,color=black!20,angle=0,scale=0.5,align=left,xpos=-2cm,ypos=13cm] {On branch: \texttt{\gitstatus@branch}\\ Commit: \texttt{\gitstatus@commit}} \fi % \end{macrocode} % % \PrintIndex % % \Finale \endinput