summaryrefslogtreecommitdiff
path: root/support/vc/hg-unix
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /support/vc/hg-unix
Initial commit
Diffstat (limited to 'support/vc/hg-unix')
-rwxr-xr-xsupport/vc/hg-unix/vc40
-rw-r--r--support/vc/hg-unix/vc-hg.awk75
2 files changed, 115 insertions, 0 deletions
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}%"
+ }
+ }
+}