You've already forked mariadb-columnstore-engine
							
							
				mirror of
				https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
				synced 2025-11-03 17:13:17 +03:00 
			
		
		
		
	* configcpp refactored * logging and datatypes refactored * more dataconvert * chore(build): massive removals, auto add files to debian install file * chore(codemanagement): nodeps headers, potentioal library * chore(build): configure before autobake * chore(build): use custom cmake commands for components, mariadb-plugin-columnstore.install generated * chore(build): install deps as separate step for build-packages * more deps * check debian/mariadb-plugin-columnstore.install automatically * chore(build): add option for multibracnh compilation * Fix warning
		
			
				
	
	
		
			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()
 |