From adaeffec5a222777ab3db119694780ed2898341c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Uwe=20St=C3=B6hr?= Date: Sat, 24 Oct 2009 00:55:28 +0000 Subject: [PATCH] ext_copy.py: fix #6234 for trunk git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@31698 a592a061-630c-0410-9148-cb99ea01b6c8 --- lib/scripts/ext_copy.py | 45 ++++++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/lib/scripts/ext_copy.py b/lib/scripts/ext_copy.py index 3bf601b49e..1d842f9060 100644 --- a/lib/scripts/ext_copy.py +++ b/lib/scripts/ext_copy.py @@ -5,7 +5,7 @@ # This file is part of LyX, the document processor. # Licence details can be found in the file COPYING. -# author Richard Heck +# author Richard Heck, Alex Fernandez, Uwe Stöhr # Full author contact details are available in file CREDITS @@ -23,16 +23,12 @@ # The -t argument determines the extension added, the default being "LyXconv". # If just . is given, no extension is added. -# KNOWN BUG: This script is not aware of generated subdirectories. - -import os, sys, getopt +import getopt, os, shutil, sys from lyxpreview_tools import error - def usage(prog_name): return "Usage: %s [-e extensions] [-t target extension] " % prog_name - def main(argv): progname = argv[0] @@ -60,27 +56,23 @@ def main(argv): if not os.path.isabs(to_dir): error("%s is not an absolute file name.\n%s" % to_dir, usage(progname)) - # try to create the output directory if it doesn't exist - if not os.path.isdir(to_dir): - try: - os.makedirs(to_dir) - except: - error("Unable to create %s" % to_dir) + return copy_all(from_dir, to_dir, exts) != True - import shutil - # copy all matching files in from_dir to to_dir +def copy_all(from_dir, to_dir, exts): + "Copy all matching files in from_dir to to_dir" for file in os.listdir(from_dir): - if os.path.isdir(file): + if os.path.isdir(os.path.join(from_dir, file)): + copy_all(os.path.join(from_dir, file), os.path.join(to_dir, file), exts) continue junk, ext = os.path.splitext(os.path.basename(file)) ext = ext.lower()[1:] #strip the leading dot - try: - # if exts is empty we ignore it - # otherwise check if the extension is in the list - not exts or exts.index(ext) - except: - continue #not found + # only create a directory and copy files when either + # exts is empty or when ext is in the exts list + if (exts) and (ext not in exts): + continue + if not create_dir(to_dir): + return False from_file = os.path.join(from_dir, file) to_file = os.path.join(to_dir, file) shutil.copyfile(from_file, to_file) @@ -90,5 +82,16 @@ def main(argv): pass return 0 + +def create_dir(new_dir): + "Try to create the output directory if it doesn't exist" + if not os.path.isdir(new_dir): + try: + os.makedirs(new_dir) + except: + error("Unable to create %s" % new_dir) + return False + return True + if __name__ == "__main__": main(sys.argv) -- 2.39.2