debug = False
-import os, os.path, re, sys, locale, StringIO
+import os, os.path, re, sys, locale, StringIO, filecmp
langs={
'bg':'windows-1251',
'en':'iso8859-1',
'eo':'iso8859-3',
'es':'iso8859-1',
+ 'et':'iso8859-15',
'fi':'iso8859-1',
'fo':'iso8859-1',
'fr':'iso8859-1',
def parse_spec(infile, outfile):
success = True
- re_summary = re.compile("^Summary\(([^\)]+)\):\t+(.*)$")
+ re_summary = re.compile("^Summary\(([^\)]+)\):[ \t]+(.*)$")
re_utf = re.compile("^utf-8$", re.I)
re_desc = re.compile("^(%description.*\s)-l\s+([\S]+)($|\s.*$)")
- re_proc = re.compile("^%")
+ re_proc = re.compile("^%[^{]")
+ re_ignore_proc = re.compile("^%(if|endif)")
re_changelog = re.compile("^%changelog")
in_desc = False
in_changelog = False
in_desc = True
outline = "%s-l %s.UTF-8%s\n" % (r.group(1), pure_lang, r.group(3))
elif in_desc:
- if re_proc.search(l):
+ if re_proc.search(l) and not re_ignore_proc.search(l):
in_desc = False
else:
# %description continues
elif not re_utf.search(enc):
try:
desc = unicode(r.group(2), enc).encode("UTF-8")
- outline = "Summary(%s.UTF-8): %s\n" % (pure_lang, desc)
+ outline = "Summary(%s.UTF-8):\t%s\n" % (pure_lang, desc)
except UnicodeDecodeError:
outfile.write("#spec_utf8: transcoding error Summary(%s)\n" % (lang))
success = False
outfile.write("%s"% (outline, ))
return success
-def main(argv):
- print "Converting %s ..." % argv[1]
- f = open(argv[1], 'r')
+def main(spec):
+ tmp = spec + '.tmp'
+ print "Converting %s ..." % spec
+ f = open(spec, 'r')
sio = StringIO.StringIO()
sio.write(f.read())
f.close()
sio.seek(0)
- f = open(argv[1] + '.tmp', 'w')
+ f = open(tmp, 'w')
if not parse_spec(sio, f):
- sys.stderr.write(" Problems while converting %s.\n" % argv[1])
+ sys.stderr.write(" Problems while converting %s.\n" % spec)
f.close()
- os.rename(argv[1] + '.tmp', argv[1])
+ if filecmp.cmp(spec, tmp, False):
+ os.remove(tmp)
+ else:
+ os.rename(tmp, spec)
if __name__ == "__main__":
- if len(sys.argv) != 2:
- sys.stderr.write("Usage: %s <spec file>\n" % sys.argv[0])
- sys.exit(1)
- main(sys.argv)
-
+ if len(sys.argv) == 1:
+ sys.stderr.write("Usage: %s <spec-files>\n" % sys.argv[0])
+ sys.exit(1)
+ for spec in sys.argv[1:]:
+ main(spec)