summaryrefslogtreecommitdiff
path: root/macros/luatex/latex/gitinfo-lua/tex/gitinfo-lua.sty
diff options
context:
space:
mode:
Diffstat (limited to 'macros/luatex/latex/gitinfo-lua/tex/gitinfo-lua.sty')
-rw-r--r--macros/luatex/latex/gitinfo-lua/tex/gitinfo-lua.sty94
1 files changed, 94 insertions, 0 deletions
diff --git a/macros/luatex/latex/gitinfo-lua/tex/gitinfo-lua.sty b/macros/luatex/latex/gitinfo-lua/tex/gitinfo-lua.sty
new file mode 100644
index 0000000000..405c668901
--- /dev/null
+++ b/macros/luatex/latex/gitinfo-lua/tex/gitinfo-lua.sty
@@ -0,0 +1,94 @@
+%% gitinfo-lua.sty
+%% Copyright 2023 E. Nijenhuis
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3c
+% 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.3c 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 E. Nijenhuis.
+%
+% This work consists of the files gitinfo-lua.sty gitinfo-lua.pdf
+% gitinfo-cmd.lua and gitinfo-lua.lua
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{gitinfo-lua}[2023/11/10 Xerdi's Git Package]
+
+\RequirePackage{luacode}
+
+\directlua{git = require('gitinfo-lua')}
+
+\RequirePackage{pgfopts}
+
+\newif\ifgit@multipleauthors
+\newif\ifgit@setmacros
+\pgfkeys{/gitinfo-lua/.is family,
+ /gitinfo-lua,
+ author sort/.default=false,
+ author sort/.store in=\git@author@sort,
+ author sort,
+ contrib/.style = {/git/author sort=true},
+ alpha/.style = {/git/author sort=false},
+ multiple authors/.is if=git@multipleauthors,
+ multiple authors=false,
+ author/.style={multiple authors=false},
+ authors/.style={multiple authors=true},
+ set title page macros/.is if=git@setmacros,
+ set title page macros=false,
+ titlepage/.style={set title page macros=true}
+}
+
+\ProcessPgfPackageOptions*
+
+\newcommand*\git@single@arg[1]{#1}
+
+\newcommand*\gitversion{\directlua{git:write_version()}}
+\newcommand*\gitauthor{\directlua{git:write_local_author()}}
+\newcommand*\gitemail{\directlua{git:write_local_email()}}
+\newcommand*\gitdate{\directlua{git:cs_last_commit('git@single@arg', 'cs')}}
+\newcommand*\gitdirectory[1]{\directlua{git:dir('#1')}}
+\newcommand*\gitunsetdirectory{\directlua{git:dir(nil)}}
+
+\newcommand\git@format@author[2]{%
+ #1
+ \ifcsname href\endcsname%
+ \textlangle\href{mailto:#2}{#2}\textrangle%
+ \else%
+ \textlangle\texttt{#2}\textrangle%
+ \fi%
+}
+
+\newcommand*\dogitauthors[1][,~]{%
+ \directlua{git:cs_for_authors('git@format@author', '#1', \git@author@sort)}%
+}
+
+\newcommand*\forgitauthors[2][\authorconjunction]{%
+ \directlua{git:cs_for_authors('#2', '#1', \git@author@sort)}%
+}
+
+\def\git@default@tag@format{refname:short,(taggername)(taggername,taggeremail,taggerdate:short)(authorname,authoremail,authordate:short),subject,body}
+\newcommand{\gitcommit}[3][h,an,ae,as,s,b]{\directlua{git:cs_commit('#2', '#3', '#1')}}
+\newcommand{\forgitcommit}[3][h,an,ae,as,s,b]{\directlua{git:cs_for_commit('#2', '#3', '#1')}}
+\newcommand{\gittag}[3][\git@default@tag@format]{%
+ \directlua{git:cs_tag('#2', '#1', '#3')}%
+}
+\newcommand{\forgittag}[2][\git@default@tag@format]{%
+ \directlua{git:cs_for_tag('#2', '#1')}%
+}
+\newcommand{\forgittagseq}[1]{\directlua{git:cs_for_tag_sequence('#1')}}
+
+\ifgit@setmacros
+ \ifgit@multipleauthors
+ \author{\dogitauthors[\\\\]}
+ \else
+ \author{\gitauthor}
+ \fi
+ \directlua{git:set_date()}
+ \date{\today}
+\fi
+
+\endinput