]> git.donarmstrong.com Git - lilypond.git/blobdiff - scripts/auxiliar/fixcc.py
migrate to Astyle version 2.04
[lilypond.git] / scripts / auxiliar / fixcc.py
index 4449a45b47fb07e1dac29afba3b916f14c5798c2..7ed9271acc386462bc782b571d7f615e11645630 100755 (executable)
@@ -31,6 +31,7 @@ import re
 import string
 import sys
 import time
+import subprocess
 
 COMMENT = 'COMMENT'
 STRING = 'STRING'
@@ -38,6 +39,8 @@ GLOBAL_CXX = 'GC++'
 CXX = 'C++'
 verbose_p = 0
 indent_p = 1
+PREFERRED_ASTYLE_VERSION = "Artistic Style Version 2.04"
+
 
 rules = {
     GLOBAL_CXX:
@@ -47,7 +50,7 @@ rules = {
     ],
     CXX:
     [
-    # space before parenthesis open
+    # space before parenthesis open; astyle -xd does this except for foo().
     ('([\w\)\]])\(', '\\1 ('),
     # delete inline double spaces
     ('(\S)  +', '\\1 '),
@@ -335,6 +338,10 @@ def nitpick_file (outdir, file):
         indent_file (fixt)
 
 def indent_file (file):
+  # Astyle aborts on unrecognized options,
+  # so wait until everyone has 2.04 before considering:
+  # --attach-namespaces --indent-namespaces \
+  # --max-code-length=80 --pad-first-paren-out \
     astyle = '''astyle\
   --options=none --quiet -n \
   --style=gnu --indent=spaces=2 \
@@ -358,6 +365,7 @@ fixcc [OPTION]... FILE...
 Options:
  --help
  --lazy   skip astyle, if no changes
+ --sloppy accept any astyle version
  --verbose
  --test
 
@@ -380,6 +388,8 @@ def do_options ():
             indent_p = 0
         elif o == '--outdir':
             outdir = a
+        elif o == '--sloppy':
+            PREFERRED_ASTYLE_VERSION = "Artistic Style"
         elif o == '--verbose':
             verbose_p = 1
         elif o == '--test':
@@ -392,6 +402,14 @@ def do_options ():
         sys.exit (2)
     return files
 
+def check_astyle_version():
+    cmd = "astyle --version"
+    process = subprocess.Popen(cmd, shell=True, stderr=subprocess.PIPE)
+    stdout, stderr = process.communicate()
+    if PREFERRED_ASTYLE_VERSION in stderr:
+        return True
+    return False
+
 
 outdir = 0
 format = CXX
@@ -400,6 +418,12 @@ socketname = 'fixcc%d' % os.getpid ()
 
 def main ():
     files = do_options ()
+    if not check_astyle_version():
+        print "Warning: try to use %s." % PREFERRED_ASTYLE_VERSION
+        print "Please limit use of this version to files with changed code."
+        if len(files) > 4:
+            print "Too many files with this version.  See `astyle --help`"
+            sys.exit(1)
     if outdir and not os.path.isdir (outdir):
         os.makedirs (outdir)
     for i in files:
@@ -435,7 +459,7 @@ typedef struct _t_ligature
 typedef std::map < AFM_Ligature const *, int > Bar;
 
  /**
- Copyright (C) 1997--2011 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ Copyright (C) 1997--2015 Han-Wen Nienhuys <hanwen@cs.uu.nl>
  */
  
 /*      ||
@@ -474,7 +498,7 @@ i
  while (foe);
 
  squiggle. extent;
- 1 && * unsmob_moment (lf);
+ 1 && * Moment::unsmob (lf);
  line_spanner_ = make_spanner ("DynamicLineSpanner", rq ? rq->*self_scm
 (): SCM_EOL);
  case foo: k;