summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/scripts
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2012-01-03 00:44:49 +0000
committerKarl Berry <karl@freefriends.org>2012-01-03 00:44:49 +0000
commit8b2c7dfa75b8296bcb312b594a4c597d7b6c3e7f (patch)
treeda683cdc308d66ad2d95a1af025491c76eab253c /Master/texmf-dist/scripts
parent6fe376ced37975f0da997a2e955695dc8165cdc7 (diff)
new (renamed) script latexfileversion 0.3 (2jan12)
git-svn-id: svn://tug.org/texlive/trunk@25012 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/scripts')
-rwxr-xr-xMaster/texmf-dist/scripts/latexfileversion/latexfileversion118
1 files changed, 118 insertions, 0 deletions
diff --git a/Master/texmf-dist/scripts/latexfileversion/latexfileversion b/Master/texmf-dist/scripts/latexfileversion/latexfileversion
new file mode 100755
index 00000000000..bae05f520aa
--- /dev/null
+++ b/Master/texmf-dist/scripts/latexfileversion/latexfileversion
@@ -0,0 +1,118 @@
+#!/usr/bin/env bash
+## latexfileversion
+##
+## This simple shell script prints the version and date of a LaTeX class or
+## style file.
+##
+## Version 0.3, 2011-12-31, Add support for arbitrary tex input file types
+## Rename from getfileversion to latexfileversion
+## Version 0.2, 2011-12-30, Avoid special characters as guillemots
+## Version 0.1, 2005-04-30, Initial version
+##
+## Copyright 2005, 2011 Harald Harders, harald.harders@gmx.de
+##
+## This programme may be distributed and/or modified under the
+## conditions of the LaTeX Project Public License, either version 1.2
+## of this license or (at your option) any later version.
+## The latest version of this license is in
+## http://www.latex-project.org/lppl.txt
+## and version 1.2 or later is part of all distributions of LaTeX
+## version 1999/12/01 or later.
+##
+## This programme consists of the files
+## latexfileversion, README, and ChangeLog.
+VERSION=0.3
+
+# help screen
+if [ -z "$1" ]
+then
+ echo 'latexfileversion v'$VERSION >&2
+ echo '' >&2
+ echo 'This programme prints the version and date of a LaTeX class or' >&2
+ echo 'style file.' >&2
+ echo '' >&2
+ echo 'Syntax:' >&2
+ echo 'latexfileversion <file>' >&2
+ echo '' >&2
+ echo 'This programme handles style files (extension .sty),' >&2
+ echo 'class files (extension .cls), and other tex input files.' >&2
+ echo 'The file extension must be given.' >&2
+ exit 1
+fi
+
+# make temporary directory
+TMPDIR=`mktemp -d /tmp/latexfileversion.XXXXXX` || exit 1
+cd $TMPDIR
+
+# extract basenames for extensions .cls and .sty
+FILE=$1
+STYLE=${1%%.sty}
+CLASS=${1%%.cls}
+
+# handle .cls files and .sty files seperately
+if [ "$CLASS.cls" == "$FILE" ]
+then
+ echo -n "Looking for class file '$CLASS.cls': "
+ # generate temporary LaTeX file
+(
+cat << EOM
+\documentclass{$CLASS}
+\nofiles
+\makeatletter
+\def\GetFileInfo#1{%
+ \def\filename{#1}%
+ \def\@tempb##1 ##2 ##3\relax##4\relax{%
+ \def\filedate{##1}%
+ \def\fileversion{##2}%
+ \def\fileinfo{##3}}%
+ \edef\@tempa{\csname ver@#1\endcsname}%
+ \expandafter\@tempb\@tempa\relax? ? \relax\relax}
+\makeatother
+\GetFileInfo{$CLASS.cls}
+\typeout{VERSION \fileversion, \filedate}
+\begin{document}
+\end{document}
+EOM
+) > latexfileversion.tex
+else
+ if [ "$STYLE.sty" == "$FILE" ]
+ then
+ echo -n "Looking for style file '$STYLE.sty': "
+ # generate temporary LaTeX file
+(
+cat << EOM
+\documentclass{ltxdoc}
+\nofiles
+\usepackage{$STYLE}
+\GetFileInfo{$STYLE.sty}
+\typeout{VERSION \fileversion, \filedate}
+\begin{document}
+\end{document}
+EOM
+) > latexfileversion.tex
+ else
+ echo -n "Looking for file '$FILE': "
+ # generate temporary LaTeX file
+(
+cat << EOM
+\documentclass{ltxdoc}
+\nofiles
+\input{$FILE}
+\GetFileInfo{$FILE}
+\typeout{VERSION \fileversion, \filedate}
+\begin{document}
+\end{document}
+EOM
+) > latexfileversion.tex
+ fi
+fi
+
+# run temporary LaTeX file which writes »VERSION ...« into the logfile
+pdflatex -interaction=nonstopmode latexfileversion.tex > /dev/null
+# extract the line containing »VERSION« and remove »VERSION «
+grep -e '^VERSION' latexfileversion.log | sed 's/VERSION //'
+
+# delete temporary directory
+rm -rf $TMPDIR
+
+#EOF