diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /support/vc/svn-unix/vc-svn.awk |
Initial commit
Diffstat (limited to 'support/vc/svn-unix/vc-svn.awk')
-rw-r--r-- | support/vc/svn-unix/vc-svn.awk | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/support/vc/svn-unix/vc-svn.awk b/support/vc/svn-unix/vc-svn.awk new file mode 100644 index 0000000000..37179028a2 --- /dev/null +++ b/support/vc/svn-unix/vc-svn.awk @@ -0,0 +1,136 @@ +# 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}%" + } + } + +} |