X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=lib%2Fscripts%2Fprefs2prefs.py;h=3026d061637e0acb4f45fa9b804e59f452d5568b;hb=9da74fe2078e24e1e7891784ecbfe33ff77e7f85;hp=046c58f36a1723789009412388346fd391814891;hpb=851d01721fd415884967561c934d315ffa7d7953;p=lyx.git diff --git a/lib/scripts/prefs2prefs.py b/lib/scripts/prefs2prefs.py index 046c58f36a..3026d06163 100644 --- a/lib/scripts/prefs2prefs.py +++ b/lib/scripts/prefs2prefs.py @@ -48,7 +48,7 @@ def trim_bom(line): def read(source): " Read input file and strip lineendings." - lines = source.read().splitlines() + lines = source.read().splitlines() or [''] lines[0] = trim_bom(lines[0]) return lines @@ -100,16 +100,16 @@ def update_format(lines): " Writes new format line " (found, format_line) = find_format_line(lines) if not found: - lines.insert(format_line, "Format 1") + lines[format_line:format_line] = ("Format 1", "") return line = lines[format_line] - m = re_format.search(l) + m = re_format.search(line) if not m: sys.stderr.write("Couldn't match format line!\n" + line + "\n") sys.exit(1) format = int(m.group(1)) - lines[i] = "Format " + str(format + 1) + lines[format_line] = "Format " + str(format + 1) # @@ -120,7 +120,7 @@ def usage(): print "or: %s [-l] [-p] outfile" % sys.argv[0] print " -l: convert LFUNs (bind and ui files)" print " -p: convert preferences" - print "Note that one of -l and -p is required." + print "Note that exactly one of -l and -p is required." def main(argv): @@ -137,8 +137,8 @@ def main(argv): source = sys.stdin output = sys.stdout elif len(args) == 2: - source = open(args[1], 'rb') - output = open(args[2], 'wb') + source = open(args[0], 'rb') + output = open(args[1], 'wb') opened_files = True else: usage() @@ -149,30 +149,42 @@ def main(argv): for (opt, param) in options: if opt == "-l": - from prefs2prefs_lfuns import conversions, current_format + from prefs2prefs_lfuns import conversions elif opt == "-p": - from prefs2prefs_prefs import conversions, current_format + from prefs2prefs_prefs import conversions if not conversions: usage() - print "\nNeither -l nor -p given" + print "\nNeither -l nor -p given." + sys.exit(1) + elif len(options) > 1: + usage() + print "\nOnly one of -l or -p should be given." sys.exit(1) + current_format = len(conversions) lines = read(source) format = get_format(lines) while format < current_format: - for c in conversions[format]: + target_format, convert = conversions[format] + old_format = format + + # make sure the conversion list is sequential + if int(old_format) + 1 != target_format: + sys.stderr.write("Something is wrong with the conversion chain.\n") + sys.exit(1) + + for c in convert: for i in range(len(lines)): (update, newline) = c(lines[i]) if update: lines[i] = newline update_format(lines) + format = get_format(lines) # sanity check - old_format = format - format = get_format(lines) if int(old_format) + 1 != int(format): sys.stderr.write("Failed to convert to new format!\n") sys.exit(1)