1from __future__ import print_function
2import os.path
3
4def 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