diff options
Diffstat (limited to 'macros/luatex/latex/gitinfo-lua/tex/gitinfo-lua.sty')
-rw-r--r-- | macros/luatex/latex/gitinfo-lua/tex/gitinfo-lua.sty | 94 |
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 |