# 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 {
       modified = 0
}

### Process output of "git log"
script == "log" && /^Hash:/            { Hash            = substr($0, 2+match($0, ":")) }
script == "log" && /^AbrHash:/         { AbrHash         = substr($0, 2+match($0, ":")) }
script == "log" && /^ParentHashes:/    { ParentHashes    = substr($0, 2+match($0, ":")) }
script == "log" && /^AbrParentHashes:/ { AbrParentHashes = substr($0, 2+match($0, ":")) }
script == "log" && /^AuthorName:/      { AuthorName      = substr($0, 2+match($0, ":")) }
script == "log" && /^AuthorEmail:/     { AuthorEmail     = substr($0, 2+match($0, ":")) }
script == "log" && /^AuthorDate:/      { AuthorDate      = substr($0, 2+match($0, ":")) }
script == "log" && /^CommitterName:/   { CommitterName   = substr($0, 2+match($0, ":")) }
script == "log" && /^CommitterEmail:/  { CommitterEmail  = substr($0, 2+match($0, ":")) }
script == "log" && /^CommitterDate:/   { CommitterDate   = substr($0, 2+match($0, ":")) }

### Process output of "git status"
### Changed index?
script == "status" && /^[mMADRCU] /         { modified = 1 }
### Unstaged modifications?
script == "status" && /^ [mMADRCU]/         { modified = 1 }
### Unresolved merge conflicts?
script == "status" && /^[mMADRCU][mMADRCU]/ { modified = 1 }

END {
       ### Process output of "git log"
       if (script == "log") {
               ### Format dates
               LongDate = substr(CommitterDate, 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 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 "}%"

               print "%%% Define generic version control macros."
               print "\\gdef\\VCRevision{\\GITAbrHash}%"
               print "\\gdef\\VCAuthor{\\GITAuthorName}%"
               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 "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}%"
               }
       }

}