From 1fc3d051b18eda099668daffa6b6c4a42c7ff8c8 Mon Sep 17 00:00:00 2001 From: Georg Baum Date: Wed, 11 Nov 2015 21:35:12 +0100 Subject: [PATCH] Set \origin correctly when upgrading docs lyx2lyx did not yet know about /systemlyxdir/ and set \origin to the path where my git tree lives instead. This path is not usable except on my machine, so better write something more usable instead. This is a special command line switch of lyx2lyx, so it does not interfere with normal usage. I did not try to deduce the systemlyxdir from lyx2lyx to be on the safe side. --- development/tools/updatedocs.py | 11 ++++++----- lib/lyx2lyx/LyX.py | 9 ++++++--- lib/lyx2lyx/lyx2lyx | 2 ++ lib/lyx2lyx/lyx_2_2.py | 21 ++++++++++++++++++++- 4 files changed, 34 insertions(+), 9 deletions(-) diff --git a/development/tools/updatedocs.py b/development/tools/updatedocs.py index 99e1713c4c..600e4caa33 100644 --- a/development/tools/updatedocs.py +++ b/development/tools/updatedocs.py @@ -16,7 +16,7 @@ import os, re, string, sys, subprocess, shutil -def convertdir(docdir, prefix, lyx2lyx): +def convertdir(docdir, prefix, lyx2lyx, systemlyxdir): olddir = os.getcwd() os.chdir(docdir) for i in os.listdir("."): @@ -24,7 +24,7 @@ def convertdir(docdir, prefix, lyx2lyx): if i != 'attic': subdir = os.path.join(docdir, i) subprefix = os.path.join(prefix, i) - convertdir(subdir, subprefix, lyx2lyx) + convertdir(subdir, subprefix, lyx2lyx, systemlyxdir) continue (base, ext) = os.path.splitext(i) if ext != ".lyx": @@ -32,10 +32,10 @@ def convertdir(docdir, prefix, lyx2lyx): old = i + ".old" shutil.copy(i, old) if sys.executable and sys.executable != '': - cmd = [sys.executable, lyx2lyx, old, '-o', i] + cmd = [sys.executable, lyx2lyx, old, '-s', systemlyxdir, '-o', i] else: # assume that python is in the path - cmd = [lyx2lyx, old, '-o', i] + cmd = [lyx2lyx, old, '-s', systemlyxdir, '-o', i] sys.stderr.write('Converting %s\n' % os.path.join(prefix, i)) subprocess.call(cmd) os.chdir(olddir) @@ -46,7 +46,8 @@ def main(argv): toolsdir = os.path.dirname(argv[0]) docdir = os.path.abspath(os.path.join(toolsdir, '../../lib/doc')) lyx2lyx = os.path.abspath(os.path.join(toolsdir, "../../lib/lyx2lyx/lyx2lyx")) - convertdir(docdir, '', lyx2lyx) + systemlyxdir = os.path.abspath(os.path.join(toolsdir, "../../lib")) + convertdir(docdir, '', lyx2lyx, systemlyxdir) return 0 diff --git a/lib/lyx2lyx/LyX.py b/lib/lyx2lyx/LyX.py index a40ef1640a..04dc3e7a90 100644 --- a/lib/lyx2lyx/LyX.py +++ b/lib/lyx2lyx/LyX.py @@ -188,7 +188,8 @@ class LyX_base: def __init__(self, end_format = 0, input = "", output = "", error = "", debug = default_debug__, try_hard = 0, cjk_encoding = '', - final_version = "", language = "english", encoding = "auto"): + final_version = "", systemlyxdir = '', language = "english", + encoding = "auto"): """Arguments: end_format: final format that the file should be converted. (integer) @@ -253,6 +254,7 @@ class LyX_base: self.status = 0 self.encoding = encoding self.language = language + self.systemlyxdir = systemlyxdir def warning(self, message, debug_level= default_debug__): @@ -733,9 +735,10 @@ class File(LyX_base): def __init__(self, end_format = 0, input = "", output = "", error = "", debug = default_debug__, try_hard = 0, cjk_encoding = '', - final_version = ''): + final_version = '', systemlyxdir = ''): LyX_base.__init__(self, end_format, input, output, error, - debug, try_hard, cjk_encoding, final_version) + debug, try_hard, cjk_encoding, final_version, + systemlyxdir) self.read() diff --git a/lib/lyx2lyx/lyx2lyx b/lib/lyx2lyx/lyx2lyx index dbb31264f2..04b23028b3 100755 --- a/lib/lyx2lyx/lyx2lyx +++ b/lib/lyx2lyx/lyx2lyx @@ -63,6 +63,8 @@ Copyright (C) 2011 The LyX Team, José Matos and Dekel Tsur""" % LyX.version__ help = "list all available formats and supported versions") parser.add_option("-n", "--try-hard", action="store_true", help = "try hard (ignore any convertion errors)") + parser.add_option("-s", "--systemlyxdir", dest= "systemlyxdir", + help= "LyX system directory for conversion from version 489 or older") (options, args) = parser.parse_args() if args: diff --git a/lib/lyx2lyx/lyx_2_2.py b/lib/lyx2lyx/lyx_2_2.py index 6bed08e801..cd88e05d34 100644 --- a/lib/lyx2lyx/lyx_2_2.py +++ b/lib/lyx2lyx/lyx_2_2.py @@ -1090,7 +1090,26 @@ def convert_origin(document): if document.dir == "": origin = "stdin" else: - origin = document.dir.replace('\\', '/') + '/' + relpath = '' + if document.systemlyxdir and document.systemlyxdir != '': + try: + if os.path.isabs(document.dir): + absdir = os.path.normpath(document.dir) + else: + absdir = os.path.normpath(os.path.abspath(document.dir)) + if os.path.isabs(document.systemlyxdir): + abssys = os.path.normpath(document.systemlyxdir) + else: + abssys = os.path.normpath(os.path.abspath(document.systemlyxdir)) + relpath = os.path.relpath(absdir, abssys) + if relpath.find('..') == 0: + relpath = '' + except: + relpath = '' + if relpath == '': + origin = document.dir.replace('\\', '/') + '/' + else: + origin = os.path.join("/systemlyxdir", relpath).replace('\\', '/') + '/' if os.name != 'nt': origin = unicode(origin, sys.getfilesystemencoding()) document.header[i:i] = ["\\origin " + origin]