Edit

IABSD.fr/xenocara/lib/mesa/bin/toml_lint.py

Branch :

  • Show log

    Commit

  • Author : jsg
    Date : 2025-06-05 11:23:11
    Hash : 67d6f117
    Message : Import Mesa 25.0.7

  • lib/mesa/bin/toml_lint.py
  • #!/usr/bin/env python3
    
    import argparse
    import pathlib
    import re
    
    
    def detect_misleading_indentation(
        toml_path: str,
        toml_lines: list[str],
    ) -> bool:
        issue_detected = False
        previous_indentation = 0
        for line_number, line in enumerate(toml_lines, start=1):
            if match := re.match(r'^(\s*)\S', line):
                line_indentation = len(match.group(1))
                if line_indentation < previous_indentation:
                    # Allow de-indenting when starting a new section (`[`) or
                    # terminating a multi-line list (`]`)
                    if not re.match(r'^\s*(\[|\])', line):
                        print(f'{toml_path}:{line_number}: '
                              f'Misleading indentation found')
                        issue_detected = True
            else:
                line_indentation = 0
            previous_indentation = line_indentation
    
        return issue_detected
    
    
    def main():
        parser = argparse.ArgumentParser()
        parser.add_argument(
            'toml_files',
            type=pathlib.Path,
            nargs=argparse.ZERO_OR_MORE,
            help='*.toml files to lint (default: src/**/ci/*.toml)',
        )
    
        args = parser.parse_args()
    
        if not args.toml_files:
            args.toml_files = pathlib.Path('src').glob('**/ci/*.toml')
    
        error = False
    
        for path in args.toml_files:
            with path.open('r') as toml_file:
                toml_lines = toml_file.readlines()
            if detect_misleading_indentation(path.as_posix(), toml_lines):
                error = True
    
        if error:
            exit(1)
    
    
    if __name__ == '__main__':
        main()