#!/usr/bin/env python from itertools import filterfalse import os import re import subprocess from gst_indent_common import indent def readfile(f): if os.path.exists(f): expressions = open(f, 'r', encoding='utf-8').read().splitlines() expressions = [re.compile(i) for i in expressions] return lambda x: any(i.match(x) for i in expressions) else: return None def listfiles(single_glob): if os.environ.get("CI_PROJECT_NAME"): return subprocess.check_output(['git', 'ls-files', single_glob], universal_newlines=True).splitlines() else: return subprocess.check_output(['git', 'diff-index', '--cached', '--name-only', 'HEAD', '--diff-filter=ACMR', single_glob], universal_newlines=True).splitlines() if __name__ == '__main__': basedir = os.path.dirname(__file__) filter_in_c = readfile('.indentignore') listing = listfiles('*.c') if filter_in_c: listing = filterfalse(filter_in_c, listing) for entry in listing: indent(entry) filter_in_cpp = readfile('.indent_cpp_list') listing = listfiles('*.cpp') if filter_in_cpp: listing = filter(filter_in_cpp, listing) for entry in listing: indent(entry)