Haibo Huang | b0bee82 | 2021-02-24 15:40:15 -0800 | [diff] [blame] | 1 | # Copyright 2010 Baptiste Lepilleur and The JsonCpp Authors |
| 2 | # Distributed under MIT license, or public domain if desired and |
| 3 | # recognized in your jurisdiction. |
| 4 | # See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE |
| 5 | |
Derek Sollenberger | 2eb3b4d | 2016-01-11 14:41:40 -0500 | [diff] [blame] | 6 | from __future__ import print_function |
| 7 | import os.path |
Haibo Huang | b0bee82 | 2021-02-24 15:40:15 -0800 | [diff] [blame] | 8 | import sys |
Derek Sollenberger | 2eb3b4d | 2016-01-11 14:41:40 -0500 | [diff] [blame] | 9 | |
Haibo Huang | b0bee82 | 2021-02-24 15:40:15 -0800 | [diff] [blame] | 10 | def fix_source_eol(path, is_dry_run = True, verbose = True, eol = '\n'): |
Derek Sollenberger | 2eb3b4d | 2016-01-11 14:41:40 -0500 | [diff] [blame] | 11 | """Makes sure that all sources have the specified eol sequence (default: unix).""" |
Haibo Huang | b0bee82 | 2021-02-24 15:40:15 -0800 | [diff] [blame] | 12 | if not os.path.isfile(path): |
| 13 | raise ValueError('Path "%s" is not a file' % path) |
Derek Sollenberger | 2eb3b4d | 2016-01-11 14:41:40 -0500 | [diff] [blame] | 14 | try: |
| 15 | f = open(path, 'rb') |
| 16 | except IOError as msg: |
| 17 | print("%s: I/O Error: %s" % (file, str(msg)), file=sys.stderr) |
| 18 | return False |
| 19 | try: |
| 20 | raw_lines = f.readlines() |
| 21 | finally: |
| 22 | f.close() |
| 23 | fixed_lines = [line.rstrip('\r\n') + eol for line in raw_lines] |
| 24 | if raw_lines != fixed_lines: |
| 25 | print('%s =>' % path, end=' ') |
| 26 | if not is_dry_run: |
| 27 | f = open(path, "wb") |
| 28 | try: |
| 29 | f.writelines(fixed_lines) |
| 30 | finally: |
| 31 | f.close() |
| 32 | if verbose: |
| 33 | print(is_dry_run and ' NEED FIX' or ' FIXED') |
| 34 | return True |
Elliott Hughes | 1601ea0 | 2021-12-07 09:43:38 -0800 | [diff] [blame] | 35 | ## |
| 36 | ## |
Derek Sollenberger | 2eb3b4d | 2016-01-11 14:41:40 -0500 | [diff] [blame] | 37 | ## |
Haibo Huang | b0bee82 | 2021-02-24 15:40:15 -0800 | [diff] [blame] | 38 | ##def _do_fix(is_dry_run = True): |
Derek Sollenberger | 2eb3b4d | 2016-01-11 14:41:40 -0500 | [diff] [blame] | 39 | ## from waftools import antglob |
Haibo Huang | b0bee82 | 2021-02-24 15:40:15 -0800 | [diff] [blame] | 40 | ## python_sources = antglob.glob('.', |
Derek Sollenberger | 2eb3b4d | 2016-01-11 14:41:40 -0500 | [diff] [blame] | 41 | ## includes = '**/*.py **/wscript **/wscript_build', |
| 42 | ## excludes = antglob.default_excludes + './waf.py', |
Haibo Huang | b0bee82 | 2021-02-24 15:40:15 -0800 | [diff] [blame] | 43 | ## prune_dirs = antglob.prune_dirs + 'waf-* ./build') |
Derek Sollenberger | 2eb3b4d | 2016-01-11 14:41:40 -0500 | [diff] [blame] | 44 | ## for path in python_sources: |
Haibo Huang | b0bee82 | 2021-02-24 15:40:15 -0800 | [diff] [blame] | 45 | ## _fix_python_source(path, is_dry_run) |
Derek Sollenberger | 2eb3b4d | 2016-01-11 14:41:40 -0500 | [diff] [blame] | 46 | ## |
Haibo Huang | b0bee82 | 2021-02-24 15:40:15 -0800 | [diff] [blame] | 47 | ## cpp_sources = antglob.glob('.', |
Derek Sollenberger | 2eb3b4d | 2016-01-11 14:41:40 -0500 | [diff] [blame] | 48 | ## includes = '**/*.cpp **/*.h **/*.inl', |
Haibo Huang | b0bee82 | 2021-02-24 15:40:15 -0800 | [diff] [blame] | 49 | ## prune_dirs = antglob.prune_dirs + 'waf-* ./build') |
Derek Sollenberger | 2eb3b4d | 2016-01-11 14:41:40 -0500 | [diff] [blame] | 50 | ## for path in cpp_sources: |
Haibo Huang | b0bee82 | 2021-02-24 15:40:15 -0800 | [diff] [blame] | 51 | ## _fix_source_eol(path, is_dry_run) |
Derek Sollenberger | 2eb3b4d | 2016-01-11 14:41:40 -0500 | [diff] [blame] | 52 | ## |
| 53 | ## |
| 54 | ##def dry_fix(context): |
Haibo Huang | b0bee82 | 2021-02-24 15:40:15 -0800 | [diff] [blame] | 55 | ## _do_fix(is_dry_run = True) |
Derek Sollenberger | 2eb3b4d | 2016-01-11 14:41:40 -0500 | [diff] [blame] | 56 | ## |
| 57 | ##def fix(context): |
Haibo Huang | b0bee82 | 2021-02-24 15:40:15 -0800 | [diff] [blame] | 58 | ## _do_fix(is_dry_run = False) |
Derek Sollenberger | 2eb3b4d | 2016-01-11 14:41:40 -0500 | [diff] [blame] | 59 | ## |
| 60 | ##def shutdown(): |
| 61 | ## pass |
| 62 | ## |
| 63 | ##def check(context): |
| 64 | ## # Unit tests are run when "check" target is used |
| 65 | ## ut = UnitTest.unit_test() |
| 66 | ## ut.change_to_testfile_dir = True |
| 67 | ## ut.want_to_see_test_output = True |
| 68 | ## ut.want_to_see_test_error = True |
| 69 | ## ut.run() |
| 70 | ## ut.print_results() |