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
" 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)
#
print "or: %s [-l] [-p] <infile >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):
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()
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)