summaryrefslogtreecommitdiff
path: root/support/vc/hg-unix/vc-hg.awk
blob: 077d2ed90ddeb05b10421bff0fd26c117de72080 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
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}%"
		}
	}
}