1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-06-07 19:22:02 +03:00
mariadb-columnstore-engine/build/debian_install_file_compare.py

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()