mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-06-07 19:22:02 +03:00
82 lines
2.7 KiB
Python
82 lines
2.7 KiB
Python
#!/usr/bin/env python3
|
|
|
|
import argparse
|
|
import fnmatch
|
|
import sys
|
|
|
|
def read_patterns(filename):
|
|
with open(filename, 'r') as f:
|
|
return [line.strip() for line in f if line.strip()]
|
|
|
|
def read_paths_with_comments(filename):
|
|
paths = []
|
|
with open(filename, 'r') as f:
|
|
for line in f:
|
|
raw = line.rstrip('\n')
|
|
if not raw.strip():
|
|
continue
|
|
# Split into path and comment
|
|
if '#' in raw:
|
|
path, comment = raw.split('#', 1)
|
|
path = path.strip()
|
|
comment = comment.strip()
|
|
else:
|
|
path = raw.strip()
|
|
comment = ''
|
|
if path:
|
|
paths.append((raw, path, comment))
|
|
return paths
|
|
|
|
def print_red(msg):
|
|
if sys.stdout.isatty():
|
|
print("\033[31m" + msg + "\033[0m")
|
|
else:
|
|
print(msg)
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(description="Compare wildcard patterns to file paths.")
|
|
parser.add_argument('patterns_file', help='File with wildcard patterns (one per line)')
|
|
parser.add_argument('paths_file', help='File with file paths (one per line)')
|
|
args = parser.parse_args()
|
|
|
|
patterns = read_patterns(args.patterns_file)
|
|
paths_with_comments = read_paths_with_comments(args.paths_file)
|
|
|
|
# Track which paths are matched (by index)
|
|
path_matched = [False] * len(paths_with_comments)
|
|
|
|
# Collect patterns that don't match any path
|
|
unmatched_patterns = []
|
|
for pattern in patterns:
|
|
matched = False
|
|
for i, (raw, path, comment) in enumerate(paths_with_comments):
|
|
if fnmatch.fnmatch(path, pattern):
|
|
matched = True
|
|
path_matched[i] = True
|
|
if not matched:
|
|
unmatched_patterns.append(pattern)
|
|
|
|
if unmatched_patterns:
|
|
print_red("The files declared in debian/mariadb-plugin-columnstore.install "
|
|
" are not added to CMakeLists via columnstore_* statements see cmake/ColumnstoreLibrary.cmake")
|
|
for pattern in unmatched_patterns:
|
|
print(f"- {pattern}")
|
|
|
|
# Collect paths that weren't matched by any pattern
|
|
unmatched_paths = []
|
|
for (raw, path, comment), matched in zip(paths_with_comments, path_matched):
|
|
if not matched:
|
|
unmatched_paths.append((path, comment))
|
|
|
|
if unmatched_paths:
|
|
print_red("The files added via columnstore_* statements from cmake/ColumnstoreLibrary.cmake "
|
|
"are missing in debian/mariadb-plugin-columnstore.install file")
|
|
for path, comment in unmatched_paths:
|
|
if comment:
|
|
print(f"- {path} {comment}")
|
|
else:
|
|
print(f"- {path}")
|
|
|
|
if __name__ == "__main__":
|
|
main()
|