]> git.lyx.org Git - features.git/commitdiff
Replace TeXFiles.sh by TeXFiles.py
authorBo Peng <bpeng@lyx.org>
Tue, 27 Jun 2006 02:39:03 +0000 (02:39 +0000)
committerBo Peng <bpeng@lyx.org>
Tue, 27 Jun 2006 02:39:03 +0000 (02:39 +0000)
* 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

lib/Makefile.am
lib/scripts/TeXFiles.py [new file with mode: 0755]
lib/scripts/TeXFiles.sh [deleted file]
lib/scripts/convertDefault.py
src/frontends/controllers/tex_helpers.C

index 45866d705f0ef945989bb79aa4201f30cba8fce8..00b81748741ab6d41fcd20d483a211418924fb13 100644 (file)
@@ -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 (executable)
index 0000000..375d88e
--- /dev/null
@@ -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 <voss@perce.org>
+#
+# 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 (executable)
index 300bb16..0000000
+++ /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 <voss@perce.org>
-#
-# 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"
index c3b7fecd5dc4dd0bac6e14dffa11a5e10cbf90ad..a71af439996fd3d8e021c8f225594684eea3e503 100644 (file)
@@ -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)
-
index d910415f6453722844b2eb78b320c40dbc59dd51..6d0bd6f38129875ddde43d5dc3f44ef089c0063e 100644 (file)
@@ -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")));
 }