From: Bo Peng Date: Tue, 27 Jun 2006 02:39:03 +0000 (+0000) Subject: Replace TeXFiles.sh by TeXFiles.py X-Git-Tag: 1.6.10~13056 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=f58609c7656049eb42ac085f5a99b71fd002197f;p=features.git Replace TeXFiles.sh by TeXFiles.py * src/frontends/controllers/tex_helpers.C: call TeXFiles.py * lib/scripts/TeXFiles.py: add * lib/scripts/TeXFiles.sh: remove * lib/scripts/convertDefault.py: add encoding line * lib/Makefile.am git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14238 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/lib/Makefile.am b/lib/Makefile.am index 45866d705f..00b8174874 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -878,7 +878,7 @@ scriptsdir = $(pkgdatadir)/scripts # get appended to the names. So we use dist_scripts_DATA and chmod manually # in install-data-hook. dist_scripts_DATA = \ - scripts/TeXFiles.sh \ + scripts/TeXFiles.py \ scripts/clean_dvi.py \ scripts/convertDefault.py \ scripts/fen2ascii.py \ diff --git a/lib/scripts/TeXFiles.py b/lib/scripts/TeXFiles.py new file mode 100755 index 0000000000..375d88e389 --- /dev/null +++ b/lib/scripts/TeXFiles.py @@ -0,0 +1,116 @@ +#!/usr/bin/env python +# -*- coding: iso-8859-15 -*- + +# file TeXFiles.py +# This file is part of LyX, the document processor. +# Licence details can be found in the file COPYING. + +# \author Herbert Voß +# \author Jean-Marc Lasgouttes +# \author Jürgen Spitzmüller +# \author Bo Peng + +# Full author contact details are available in file CREDITS. + +# all files -> without option +# TeX class files -> option cls +# TeX style files -> option sty +# bibtex style files -> option bst +# bibtex database files -> option bib +# +# with the help +# of kpsewhich and creates a +# bstFiles.lst, clsFiles.lst, styFiles.lst, bibFiles.lst +# without any parameter all files are created. +# +# Herbert Voss +# +# Updates from Jean-Marc Lasgouttes. +# +# bib support added by Juergen Spitzmueller (v0.3) +# +# translated to python by Bo Peng, so that the script only +# relies on python and kpsewhich (no shell command is used). +# + +import os, sys, re + +cls_stylefile = 'clsFiles.lst' +sty_stylefile = 'styFiles.lst' +bst_stylefile = 'bstFiles.lst' +bib_files = 'bibFiles.lst' + +def cmdOutput(cmd): + '''utility function: run a command and get its output as a string + cmd: command to run + ''' + fout = os.popen(cmd) + output = fout.read() + fout.close() + return output + +# processing command line options +if len(sys.argv) > 1: + if sys.argv[1] in ['--help', '-help']: + print '''Usage: TeXFiles.py [-version | cls | sty | bst | bib ] + Default is without any Parameters, + so that all files will be created''' + sye.exit(0) + else: + types = sys.argv[1:] + for type in types: + if type not in ['cls', 'sty', 'bst', 'bib']: + print 'ERROR: unknown type', type + sys.exit(1) +else: + # if no parameter is specified, assume all + types = ['cls', 'sty', 'bst', 'bib'] + +# +# MS-DOS and MS-Windows define $COMSPEC or $ComSpec and use `;' to separate +# directories in path lists whereas Unix uses `:'. Make an exception for +# Cygwin, where we could have either teTeX (using `:') or MikTeX (using `;'). +# Create a variable that holds the right character to be used by the scripts. +path_sep = os.pathsep +if sys.platform == 'cygwin': + # MikTeX's kpsewhich says "kpathsea emulation version x.x.x", whereas + # teTeX's simply "kpathsea version x.x.x". + if 'emulation' in cmdOutput('kpsewhich --version'): + path_sep = ';' + else: + path_sep = ':' + +# process each file type +for type in types: + print "Indexing files of type", type + if type == 'cls': + outfile = cls_stylefile + kpsetype = '.tex' + elif type == 'sty': + outfile = sty_stylefile + kpsetype = '.tex' + elif type == 'bst': + outfile = bst_stylefile + kpsetype = '.bst' + elif type == 'bib': + outfile = bib_files + kpsetype = '.bib' + + dirs = cmdOutput('kpsewhich --show-path=' + kpsetype).replace('!!', '').strip() + # remove excessive // + dirs = re.sub('//+', '/', dirs) + + file_ext = '.' + type + out = open(outfile, 'w') + for dir in dirs.split(path_sep): + # for each valid directory + if os.path.isdir(dir): + # walk down the file hierarchy + for root,path,files in os.walk(dir): + # check file type + for file in files: + if len(file) > 4 and file[-4:] == file_ext: + # force the use of / since miktex uses / even under windows + print >> out, root.replace('\\', '/') + '/' + file + out.close() + diff --git a/lib/scripts/TeXFiles.sh b/lib/scripts/TeXFiles.sh deleted file mode 100755 index 300bb16d6b..0000000000 --- a/lib/scripts/TeXFiles.sh +++ /dev/null @@ -1,100 +0,0 @@ -#!/bin/sh - -# file TeXFiles.sh -# This file is part of LyX, the document processor. -# Licence details can be found in the file COPYING. - -# author Herbert Voß -# author Jean-Marc Lasgouttes -# author Jürgen Spitzmüller - -# Full author contact details are available in file CREDITS. - -# all files -> without option -# TeX class files -> option cls -# TeX style files -> option sty -# bibtex style files -> option bst -# bibtex database files -> option bib -# -# with the help -# of kpsewhich and creates a -# bstFiles.lst, clsFiles.lst, styFiles.lst, bibFiles.lst -# without any parameter all files are created. -# -# Herbert Voss -# -# Updates from Jean-Marc Lasgouttes. -# -# bib support added by Juergen Spitzmueller (v0.3) -# -CLS_STYLEFILE=clsFiles.lst -STY_STYLEFILE=styFiles.lst -BST_STYLEFILE=bstFiles.lst -BIB_FILES=bibFiles.lst -version='$Id: TeXFiles.sh,v 0.3 2003-02-14' -progname=`echo $0 | sed 's%.*/%%'` -usage="Usage: TeXFiles.sh [-version | cls | sty | bst | bib ] - Default is without any Parameters, - so that all files will be created" - -types=$1 -test -z "$types" && types="cls sty bst bib" - -# -# MS-DOS and MS-Windows define $COMSPEC or $ComSpec and use `;' to separate -# directories in path lists whereas Unix uses `:'. Make an exception for -# Cygwin, where we could have either teTeX (using `:') or MikTeX (using `;'). -# Create a variable that holds the right character to be used by the scripts. -DOSISH=no -case `uname -s` in - CYGWIN*|Cygwin*|cygwin*) - # MikTeX's kpsewhich says "kpathsea emulation version x.x.x", whereas - # teTeX's simply "kpathsea version x.x.x". - if kpsewhich --version | grep emulation >/dev/null 2>&1; then DOSISH=yes; fi - ;; - *) if test -n "$COMSPEC" || test -n "$ComSpec"; then DOSISH=yes; fi -esac -if test "$DOSISH" = "no"; then SEP=':'; else SEP=';'; fi - -# -# A copy of some stuff from mktex.opt, so we can run in the presence of -# terminally damaged ls-R files. -# -if test "x$1" = x--help || test "x$1" = x-help; then - echo "$usage" - exit 0 -elif test "x$1" = x--version || test "x$1" = x-version; then - echo "`basename $0` $version" - kpsewhich --version - exit 0 -fi - -for type in $types ; do - echo "Indexing files of type $type" - case $type in - cls) outfile=$CLS_STYLEFILE - kpsetype=.tex;; - sty) outfile=$STY_STYLEFILE - kpsetype=.tex;; - bst) outfile=$BST_STYLEFILE - kpsetype=.bst;; - bib) outfile=$BIB_FILES - kpsetype=.bib;; - *) echo "ERROR: unknown type $type" - exit 1;; - esac - - rm -f $outfile - touch $outfile - - dirs=`kpsewhich --show-path=$kpsetype 2>/dev/null | tr "$SEP" " " | sed -e 's%/\{2,\}%/%g' -e 's%!!%%g'` - - for dir in $dirs ; do - find $dir -follow -name "*.$type" >>$outfile 2>/dev/null - done - -done -#echo "list saved in $STYLEFILE" -#echo `wc -l $CLS_STYLEFILE` # only for information -# -# this is the end my friends ... Jim Morrison and the Doors in "The End" diff --git a/lib/scripts/convertDefault.py b/lib/scripts/convertDefault.py index c3b7fecd5d..a71af43999 100644 --- a/lib/scripts/convertDefault.py +++ b/lib/scripts/convertDefault.py @@ -1,4 +1,5 @@ #!/usr/bin/env python +# -*- coding: iso-8859-15 -*- # file convertDefault.py # This file is part of LyX, the document processor. @@ -21,4 +22,3 @@ if os.system(r'convert -depth 8 "%s" "%s"' % (sys.argv[1], sys.argv[2])) != 0: print >> sys.stderr, sys.argv[0], 'ERROR' print >> sys.stderr, 'Execution of "convert" failed.' sys.exit(1) - diff --git a/src/frontends/controllers/tex_helpers.C b/src/frontends/controllers/tex_helpers.C index d910415f64..6d0bd6f381 100644 --- a/src/frontends/controllers/tex_helpers.C +++ b/src/frontends/controllers/tex_helpers.C @@ -52,11 +52,8 @@ void rescanTexStyles() Path p(package().user_support()); Systemcall one; one.startscript(Systemcall::Wait, - "sh " + - quoteName(libFileSearch("scripts", "TeXFiles.sh"))); - // To be changed to - // "python " + - // quoteName(libFileSearch("scripts", "TeXFiles.py"))); + "python " + + quoteName(libFileSearch("scripts", "TeXFiles.py"))); }