# This is file 'vc-svn.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 "svn info". if (script=="info") { MaxRevision = 0 } ### Process output of "svn status". if (script=="status") { modified = 0 } } ### Process output of "svn info". ### Save all lines of the current record in a corresponding variable. script=="info" && /^Path:/ { RecPath = $0; next } script=="info" && /^Name:/ { RecName = $0; next } script=="info" && /^URL:/ { RecUrl = $0; next } script=="info" && /^Repository Root:/ { RecRepositoryRoot = $0; next } script=="info" && /^Repository UUID:/ { RecRepositoryUuid = $0; next } script=="info" && /^Revision:/ { RecRevision = $2; next } script=="info" && /^Node Kind:/ { RecNodeKind = $0; next } script=="info" && /^Last Changed Author:/ { RecLastChangedAuthor = $0; next } script=="info" && /^Last Changed Rev:/ { RecLastChangedRevision = $0; next } script=="info" && /^Last Changed Date:/ { RecLastChangedDate = $0; next } script=="info" && /^[\r]*$/ { ### If revision number of the new record is higher, ### save all lines from the new record. if (RecRevision > MaxRevision) { MaxPath = RecPath MaxName = RecName MaxUrl = RecUrl MaxRepositoryRoot = RecRepositoryRoot MaxRepositoryUuid = RecRepositoryUuid MaxRevision = RecRevision MaxNodeKind = RecNodeKind MaxLastChangedAuthor = RecLastChangedAuthor MaxLastChangedRev = RecLastChangedRevision MaxLastChangedDate = RecLastChangedDate } } ### Process output of "svn status". ### File with local modifications? script=="status" && /^[^ ?]/ { modified = 1 } ### File with property modifications? script=="status" && /^.[^ ]/ { modified = 2 } END { ### Process output of "svn info". if (script=="info") { ### Remove possible Windows line endings (e.g., for Msys). gsub("\r$", "", MaxPath) gsub("\r$", "", MaxName) gsub("\r$", "", MaxUrl) gsub("\r$", "", MaxRepositoryRoot) gsub("\r$", "", MaxRepositoryUuid) gsub("\r$", "", MaxRevision) gsub("\r$", "", MaxNodeKind) gsub("\r$", "", MaxLastChangedAuthor) gsub("\r$", "", MaxLastChangedRev) gsub("\r$", "", MaxLastChangedDate) ### Escape % characters for TeX compatibility. gsub("%", "\\%", MaxUrl) gsub("%", "\\%", MaxRepositoryRoot) ### Extract relevant information from variables. Path = substr(MaxPath, 2+match(MaxPath, ":")) Name = substr(MaxName, 2+match(MaxName, ":")) Url = substr(MaxUrl, 2+match(MaxUrl, ":")) RepositoryRoot = substr(MaxRepositoryRoot, 2+match(MaxRepositoryRoot, ":")) RepositoryUuid = substr(MaxRepositoryUuid, 2+match(MaxRepositoryUuid, ":")) Revision = MaxRevision NodeKind = substr(MaxNodeKind, 2+match(MaxNodeKind, ":")) LastChangedAuthor = substr(MaxLastChangedAuthor, 2+match(MaxLastChangedAuthor, ":")) LastChangedRev = substr(MaxLastChangedRev, 2+match(MaxLastChangedRev, ":")) LastChangedDate = substr(MaxLastChangedDate, 2+match(MaxLastChangedDate, ":")) LongDate = substr(LastChangedDate, 1, 25) DateRAW = substr(LongDate, 1, 10) DateISO = DateRAW DateTEX = DateISO gsub("-", "/", DateTEX) Time = substr(LongDate, 12, 14) ### Write file identification to vc.tex. print "%%% This file has been generated by the vc bundle for TeX." print "%%% Do not edit this file!" print "%%%" ### Write Subversion specific macros. print "%%% Define Subversion specific macros." print "\\gdef\\SVNRevision{" Revision "}%" print "\\gdef\\SVNLastChangedRev{" LastChangedRev "}%" print "\\gdef\\SVNLastChangedAuthor{" LastChangedAuthor "}%" print "\\gdef\\SVNLastChangedDate{" LastChangedDate "}%" print "\\gdef\\SVNRepositoryUuid{" RepositoryUuid "}%" if (full==1) { print "\\gdef\\SVNPath{" Path "}%" print "\\gdef\\SVNName{" Name "}%" print "\\gdef\\SVNUrl{" Url "}%" print "\\gdef\\SVNNodeKind{" NodeKind "}%" print "\\gdef\\SVNRepositoryRoot{" RepositoryRoot "}%" } ### Write generic version control macros. print "%%% Define generic version control macros." print "\\gdef\\VCRevision{\\SVNRevision}%" print "\\gdef\\VCAuthor{\\SVNLastChangedAuthor}%" 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}%" MaxRevision = 0 } ### Process output of "svn 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}%" } } }