summaryrefslogtreecommitdiffstats
path: root/configuration/cv-git.awk
blob: 55b2492491d540d0e9c99f6d480f0ab8fa2ccd1c (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
# This is file 'vc-git.awk' from the vc bundle for TeX.
# The original file can be found at CTAN:support/vc.
# This file is Public Domain.
BEGIN {
		
### Process output of "git status".
		if (script=="status") {
				modified = 0
		}
}
### Process output of "git log".
script=="log" && /^Hash:/ { Hash = substr($0, 2+match($0, ":")) }
script=="log" && /^Abr. Hash:/ { AbrHash = substr($0, 2+match($0, ":")) }
script=="log" && /^Parent Hashes:/ { ParentHashes = substr($0, 2+match($0, ":")) }
script=="log" && /^Abr. Parent Hashes:/ { AbrParentHashes = 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, ":")) }
script=="log" && /^Committer Name:/ { CommitterName = substr($0, 2+match($0, ":")) }
script=="log" && /^Committer Email:/ { CommitterEmail = substr($0, 2+match($0, ":")) }
script=="log" && /^Committer Date:/ { CommitterDate = substr($0, 2+match($0, ":")) }
### Process output of "git status".
### Changed index?
script=="status" && /^# Changes to be committed:/ { modified = 1 }
### Unstaged modifications?
script=="status" && /^# Changed but not updated:/ { modified = 2 }
END {
		
### Process output of "git log".
		if (script=="log") {
### Standard encoding is UTF-8.
				if (Encoding == "") Encoding = "UTF-8"
### Extract relevant information from variables.
				Date = strftime("%Y-%-m-%-d",CommitterDate)
				Heures = strftime("%-H",CommitterDate)
				Minutes = strftime("%-M",CommitterDate)
### Write Git specific macros.
				print "\\gdef\\GITHash{" Hash "}%"
				print "\\gdef\\GITAbrHash{" AbrHash "}%"
				print "\\gdef\\GITParentHashes{" ParentHashes "}%"
				print "\\gdef\\GITAbrParentHashes{" AbrParentHashes "}%"
				print "\\gdef\\GITAuthorName{" AuthorName "}%"
				print "\\gdef\\GITAuthorEmail{" AuthorEmail "}%"
				print "\\gdef\\GITAuthorDate{" AuthorDate "}%"
				print "\\gdef\\GITCommitterName{" CommitterName "}%"
				print "\\gdef\\GITCommitterEmail{" CommitterEmail "}%"
				print "\\gdef\\GITCommitterDate{" CommitterDate "}%"
### Write generic version control macros.
				print "%%% Define generic version control macros."
				print "\\gdef\\VCRevision{\\GITAbrHash}%"
				print "\\gdef\\VCAuthor{\\GITAuthorName}%"
				print "\\gdef\\VCDate{" Date "}%"
				print "\\gdef\\VCHM{"Heures"h" Minutes"}%"
				print "\\gdef\\VCModifiedText{\\textcolor{red}{☡ avec modifications locales !}}%"
				print "%%% Assume clean working copy."
				print "\\gdef\\VCModified{0}%"
				print "\\gdef\\VCRevisionMod{\\VCRevision}%"
		}
		
### Process output of "git 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}%"
				}
		}
		
}