# This file is part of LilyPond, the GNU music typesetter.
#
-# Copyright (C) 1998--2011 Han-Wen Nienhuys <hanwen@xs4all.nl>
+# Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
# Jan Nieuwenhuizen <janneke@gnu.org>
#
# LilyPond is free software: you can redistribute it and/or modify
lilypond_version_re_str = '\\\\version *\"([0-9.]+)"'
lilypond_version_re = re.compile (lilypond_version_re_str)
+lilypond_version_strict_re_str = '\\\\version *\"([0-9]+[.][0-9]+[.][0-9]+)"'
+lilypond_version_strict_re = re.compile (lilypond_version_strict_re_str)
help_summary = (
_ ('''Update LilyPond input to newer version. By default, update from the
%s
%s
-''' % ( _ ('Copyright (c) %s by') % '2001--2011',
+''' % ( _ ('Copyright (c) %s by') % '2001--2012',
' '.join (authors),
_ ('Distributed under terms of the GNU General Public License.'),
_ ('It comes with NO WARRANTY.')))
ly.progress (_ ("Applying conversion: "), newline = False)
last_conversion = ()
+ errors = 0
try:
if not conv_list:
last_conversion = to_version
ly.error (_ ("Error while converting")
+ '\n'
+ _ ("Stopping at last successful rule"))
+ errors += 1
- return (last_conversion, str)
+ return (last_conversion, str, errors)
def guess_lilypond_version (input):
- m = lilypond_version_re.search (input)
+ m = lilypond_version_strict_re.search (input)
if m:
return m.group (1)
+ m = lilypond_version_re.search (input)
+ if m:
+ raise InvalidVersion (m.group (1))
else:
return ''
raise InvalidVersion (".".join ([str(n) for n in from_version]))
- (last, result) = do_conversion (input, from_version, to_version)
+ (last, result, errors) = do_conversion (input, from_version, to_version)
if last:
if global_options.force_current_version and last == to_version:
sys.stderr.flush ()
+ return errors
+
def do_options ():
opt_parser = get_option_parser()
(options, args) = opt_parser.parse_args ()
identify ()
+ errors = 0
for f in files:
if f == '-':
- f = ''
- elif not os.path.isfile (f):
+ continue
+ if not os.path.isfile (f):
ly.error (_ ("%s: Unable to open file") % f)
- if len (files) == 1:
- sys.exit (1)
+ errors += 1
continue
try:
- do_one_file (f)
+ errors += do_one_file (f)
except UnknownVersion:
ly.error (_ ("%s: Unable to determine version. Skipping") % f)
+ errors += 1
except InvalidVersion:
# Compat code for 2.x and 3.0 syntax ("except .. as v" doesn't
# work in python 2.4!):
ly.error (_ ("%s: Invalid version string `%s' \n"
"Valid version strings consist of three numbers, "
"separated by dots, e.g. `2.8.12'") % (f, v.version) )
+ errors += 1
+
+ if errors:
+ ly.warning (ly.ungettext ("There was %d error.",
+ "There were %d errors.", errors) % errors)
+ sys.exit (1)
main ()