1 from __future__ import print_function 2 import os.path 3 4 def fix_source_eol( path, is_dry_run = True, verbose = True, eol = '\n' ): 5 """Makes sure that all sources have the specified eol sequence (default: unix).""" 6 if not os.path.isfile( path ): 7 raise ValueError( 'Path "%s" is not a file' % path ) 8 try: 9 f = open(path, 'rb') 10 except IOError as msg: 11 print("%s: I/O Error: %s" % (file, str(msg)), file=sys.stderr) 12 return False 13 try: 14 raw_lines = f.readlines() 15 finally: 16 f.close() 17 fixed_lines = [line.rstrip('\r\n') + eol for line in raw_lines] 18 if raw_lines != fixed_lines: 19 print('%s =>' % path, end=' ') 20 if not is_dry_run: 21 f = open(path, "wb") 22 try: 23 f.writelines(fixed_lines) 24 finally: 25 f.close() 26 if verbose: 27 print(is_dry_run and ' NEED FIX' or ' FIXED') 28 return True 29 ## 30 ## 31 ## 32 ##def _do_fix( is_dry_run = True ): 33 ## from waftools import antglob 34 ## python_sources = antglob.glob( '.', 35 ## includes = '**/*.py **/wscript **/wscript_build', 36 ## excludes = antglob.default_excludes + './waf.py', 37 ## prune_dirs = antglob.prune_dirs + 'waf-* ./build' ) 38 ## for path in python_sources: 39 ## _fix_python_source( path, is_dry_run ) 40 ## 41 ## cpp_sources = antglob.glob( '.', 42 ## includes = '**/*.cpp **/*.h **/*.inl', 43 ## prune_dirs = antglob.prune_dirs + 'waf-* ./build' ) 44 ## for path in cpp_sources: 45 ## _fix_source_eol( path, is_dry_run ) 46 ## 47 ## 48 ##def dry_fix(context): 49 ## _do_fix( is_dry_run = True ) 50 ## 51 ##def fix(context): 52 ## _do_fix( is_dry_run = False ) 53 ## 54 ##def shutdown(): 55 ## pass 56 ## 57 ##def check(context): 58 ## # Unit tests are run when "check" target is used 59 ## ut = UnitTest.unit_test() 60 ## ut.change_to_testfile_dir = True 61 ## ut.want_to_see_test_output = True 62 ## ut.want_to_see_test_error = True 63 ## ut.run() 64 ## ut.print_results() 65