lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Add backup option to convert-ly (Issue 3572) (issue 14040043)


From: PhilEHolmes
Subject: Add backup option to convert-ly (Issue 3572) (issue 14040043)
Date: Fri, 27 Sep 2013 13:11:59 +0000

Reviewers: Julien Rioux, dak,

Message:
Initial patch to check the principle is OK.  Will require documentation
updates before it's pushed.  Please review Eluze's Python.

Description:
Add backup option to convert-ly (Issue 3572)

Please review this at https://codereview.appspot.com/14040043/

Affected files (+23, -13 lines):
  M scripts/convert-ly.py


Index: scripts/convert-ly.py
diff --git a/scripts/convert-ly.py b/scripts/convert-ly.py
index 7acd2e29dac7ee1f908a9bc0f5ec50131d798041..0bb7c98f08d8238e372975d30177eef0495cd6b5 100644
--- a/scripts/convert-ly.py
+++ b/scripts/convert-ly.py
@@ -24,6 +24,7 @@
 import os
 import sys
 import re
+import shutil

 """
 @relocate-preamble@
@@ -129,18 +130,25 @@ def get_option_parser ():
               action='store_true',
               dest='diff_version_update',
               default=False)
-
+
     p.add_option ("-s", '--show-rules',
help=_ ("show rules [default: -f 0, -t %s]") % program_version,
               dest='show_rules',
               action='store_true', default=False)
-
+
     p.add_option ('-t', '--to',
help=_ ("convert to VERSION [default: %s]") % program_version,
               metavar=_ ('VERSION'),
               action='store',
               dest="to_version",
               default='')
+
+    p.add_option ('-b', '--backup-numbered',
+              help=_ ("make a numbered backup [default: filename.ext~]"),
+              action='store_true',
+              dest="backup_numbered",
+              default='')
+
p.add_option ('-w', '--warranty', help=_ ("show warranty and copyright"),
            action='store_true',
            ),
@@ -152,8 +160,6 @@ def get_option_parser ():

     return p

-
-
 def str_to_tuple (s):
     return tuple ([int(n) for n in s.split ('.')])

@@ -208,8 +214,6 @@ string."""

     return (last_conversion, str, errors)

-
-
 def guess_lilypond_version (input):
     m = lilypond_version_strict_re.search (input)
     if m:
@@ -230,6 +234,18 @@ class InvalidVersion (Exception):
     def __init__ (self, version):
       self.version = version

+def back_up(file, numbered):
+    back_up = file
+    if numbered:
+      n = 0
+      while os.path.exists(back_up) and os.path.isfile(back_up):
+        n = n + 1
+        back_up = file + '.' + str(n) + '~'
+    else:
+      back_up = file + '~'
+    shutil.copy2(file, back_up)
+    return back_up
+
 def do_one_file (infile_name):
     ly.progress (_ (u"Processing `%s\'... ") % infile_name, True)

@@ -258,7 +274,6 @@ def do_one_file (infile_name):
     if len (from_version) != 3:
         raise InvalidVersion (".".join ([str(n) for n in from_version]))

-
(last, result, errors) = do_conversion (input, from_version, to_version)

     if global_options.force_current_version and \
@@ -287,11 +302,7 @@ def do_one_file (infile_name):
     ly.progress ('\n')

     if global_options.edit:
-        try:
-            os.remove (infile_name + '~')
-        except:
-            pass
-        os.rename (infile_name, infile_name + '~')
+        backup = back_up(infile_name, global_options.backup_numbered)
         outfile = open (infile_name, 'w')
     else:
         outfile = sys.stdout
@@ -363,5 +374,4 @@ def main ():
             "There were %d errors.", errors) % errors)
         sys.exit (1)

-
 main ()





reply via email to

[Prev in Thread] Current Thread [Next in Thread]