From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- support/vc/hg-unix/vc | 40 +++++++++++++++++++++++ support/vc/hg-unix/vc-hg.awk | 75 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 115 insertions(+) create mode 100755 support/vc/hg-unix/vc create mode 100644 support/vc/hg-unix/vc-hg.awk (limited to 'support/vc/hg-unix') diff --git a/support/vc/hg-unix/vc b/support/vc/hg-unix/vc new file mode 100755 index 0000000000..9916f854bb --- /dev/null +++ b/support/vc/hg-unix/vc @@ -0,0 +1,40 @@ +#!/bin/sh +# This is file 'vc' from the vc bundle for TeX. +# The original file can be found at CTAN:support/vc. +# This file is Public Domain. + +# Parse command line options. +mod=0 +while [ -n "$(echo $1 | grep '-')" ]; do + case $1 in + -m ) mod=1 ;; + * ) + echo 'usage: vc [-m]' + exit 1 + ;; + esac + shift +done + +logformat="" +logformat="${logformat}Hash: {node}" +logformat="${logformat}Abr. Hash: {node|short}" +logformat="${logformat}Branch: {branch}" +logformat="${logformat}Parent1 Hash: {p1node}" +logformat="${logformat}Parent2 Hash: {p2node}" +logformat="${logformat}Abr. Parent1 Hash: {p1node|short}" +logformat="${logformat}Abr. Parent2 Hash: {p2node|short}" +logformat="${logformat}Author Name: {author|user}" +logformat="${logformat}Author Email: {author|email}" +logformat="${logformat}Author Date: {date|isodatesec}" + +LC_ALL=C +hg log --pager=off -r . --template "${logformat}" \ + | gawk -v script=log -f vc-hg.awk \ + > vc.tex + +if [ "$mod" = 1 ]; then + hg status --pager=off \ + | gawk -v script=status -f vc-hg.awk \ + >> vc.tex +fi diff --git a/support/vc/hg-unix/vc-hg.awk b/support/vc/hg-unix/vc-hg.awk new file mode 100644 index 0000000000..077d2ed90d --- /dev/null +++ b/support/vc/hg-unix/vc-hg.awk @@ -0,0 +1,75 @@ +# This is file 'vc-hg.awk' from the vc bundle for TeX. +# The original file can be found at CTAN:support/vc. +# This file is Public Domain. + +BEGIN { + modified = 0 +} + +### Process output of "hg log" +script=="log" && /^Hash:/ { Hash = substr($0, 2+match($0, ":")) } +script=="log" && /^Abr. Hash:/ { AbrHash = substr($0, 2+match($0, ":")) } +script=="log" && /^Branch:/ { Branch = substr($0, 2+match($0, ":")) } +script=="log" && /^Parent1 Hash:/ { Parent1Hash = substr($0, 2+match($0, ":")) } +script=="log" && /^Parent2 Hash:/ { Parent2Hash = substr($0, 2+match($0, ":")) } +script=="log" && /^Abr. Parent1 Hash:/ { AbrParent1Hash = substr($0, 2+match($0, ":")) } +script=="log" && /^Abr. Parent2 Hash:/ { AbrParent2Hash = substr($0, 2+match($0, ":")) } +script=="log" && /^Author Name:/ { AuthorName = substr($0, 2+match($0, ":")) } +script=="log" && /^Author Email:/ { AuthorEmail = substr($0, 2+match($0, ":")) } +script=="log" && /^Author Date:/ { AuthorDate = substr($0, 2+match($0, ":")) } + +### Process output of "hg status" +script=="status" && /^M / { modified = 1 } + +END { + ### Process output of "hg log" + if (script=="log") { + ### Format dates + LongDate = substr(AuthorDate, 1, 25) + DateRAW = substr(LongDate, 1, 10) + DateISO = DateRAW + DateTEX = DateISO + gsub("-", "/", DateTEX) + Time = substr(LongDate, 12, 14) + + print "%%% This file has been generated by the vc bundle for TeX." + print "%%% Do not edit this file!" + print "%%%" + + print "%%% Define HG specific macros." + print "\\gdef\\HGHash{" Hash "}%" + print "\\gdef\\HGAbrHash{" AbrHash "}%" + print "\\gdef\\HGBranch{" Branch "}%" + print "\\gdef\\HGFirstParentHash{" Parent1Hash "}%" + print "\\gdef\\HGSecondParentHash{" Parent2Hash "}%" + print "\\gdef\\HGAbrFirstParentHash{" AbrParent1Hash "}%" + print "\\gdef\\HGAbrSecondParentHash{" AbrParent2Hash "}%" + print "\\gdef\\HGAuthorName{" AuthorName "}%" + print "\\gdef\\HGAuthorEmail{" AuthorEmail "}%" + print "\\gdef\\HGAuthorDate{" AuthorDate "}%" + + print "%%% Define generic version control macros." + print "\\gdef\\VCRevision{\\HGAbrHash}%" + print "\\gdef\\VCAuthor{\\HGAuthorName}%" + print "\\gdef\\VCDateRAW{" DateRAW "}%" + print "\\gdef\\VCDateISO{" DateISO "}%" + print "\\gdef\\VCDateTEX{" DateTEX "}%" + print "\\gdef\\VCTime{" Time "}%" + print "\\gdef\\VCModifiedText{\\textcolor{red}{with local modifications!}}%" + + print "%%% Assume clean working copy." + print "\\gdef\\VCModified{0}%" + print "\\gdef\\VCRevisionMod{\\VCRevision}%" + } + + ### Process output of "hg status" + if (script=="status") { + print "%%% Is working copy modified?" + print "\\gdef\\VCModified{" modified "}%" + if (modified==0) { + print "\\gdef\\VCRevisionMod{\\VCRevision}%" + } else { + print "\\gdef\\VCRevisionMod{\\VCRevision~\\VCModifiedText}%" + } + } +} -- cgit v1.2.3