1695b41eeSopenharmony_ci#!/usr/bin/env python3 2695b41eeSopenharmony_ci 3695b41eeSopenharmony_ciimport os 4695b41eeSopenharmony_ci 5695b41eeSopenharmony_ciignores = [ 6695b41eeSopenharmony_ci '.git/', 7695b41eeSopenharmony_ci 'misc/afl-fuzz-tokens/', 8695b41eeSopenharmony_ci 'ninja_deps', 9695b41eeSopenharmony_ci 'src/depfile_parser.cc', 10695b41eeSopenharmony_ci 'src/lexer.cc', 11695b41eeSopenharmony_ci] 12695b41eeSopenharmony_ci 13695b41eeSopenharmony_cierror_count = 0 14695b41eeSopenharmony_ci 15695b41eeSopenharmony_cidef error(path, msg): 16695b41eeSopenharmony_ci global error_count 17695b41eeSopenharmony_ci error_count += 1 18695b41eeSopenharmony_ci print('\x1b[1;31m{}\x1b[0;31m{}\x1b[0m'.format(path, msg)) 19695b41eeSopenharmony_ci 20695b41eeSopenharmony_cifor root, directory, filenames in os.walk('.'): 21695b41eeSopenharmony_ci for filename in filenames: 22695b41eeSopenharmony_ci path = os.path.join(root, filename)[2:] 23695b41eeSopenharmony_ci if any([path.startswith(x) for x in ignores]): 24695b41eeSopenharmony_ci continue 25695b41eeSopenharmony_ci with open(path, 'rb') as file: 26695b41eeSopenharmony_ci line_nr = 1 27695b41eeSopenharmony_ci try: 28695b41eeSopenharmony_ci for line in [x.decode() for x in file.readlines()]: 29695b41eeSopenharmony_ci if len(line) == 0 or line[-1] != '\n': 30695b41eeSopenharmony_ci error(path, ' missing newline at end of file.') 31695b41eeSopenharmony_ci if len(line) > 1: 32695b41eeSopenharmony_ci if line[-2] == '\r': 33695b41eeSopenharmony_ci error(path, ' has Windows line endings.') 34695b41eeSopenharmony_ci break 35695b41eeSopenharmony_ci if line[-2] == ' ' or line[-2] == '\t': 36695b41eeSopenharmony_ci error(path, ':{} has trailing whitespace.'.format(line_nr)) 37695b41eeSopenharmony_ci line_nr += 1 38695b41eeSopenharmony_ci except UnicodeError: 39695b41eeSopenharmony_ci pass # binary file 40695b41eeSopenharmony_ci 41695b41eeSopenharmony_ciexit(error_count) 42