Skip to content
Snippets Groups Projects
list_url_patterns.py 1.22 KiB
Newer Older
  • Learn to ignore specific revisions
  • #! /usr/bin/python
    
    import argparse
    
    import os
    import sys
    
    import yaml
    
    
    PATTERNS_V1 = []
    PATTERNS_V2 = []
    
    
    class CallVisitor(ast.NodeVisitor):
        def visit_Call(self, node):
            if isinstance(node.func, ast.Name):
                name = node.func.id
            else:
                return
    
    
            if name == "client_patterns":
    
                PATTERNS_V2.append(node.args[0].s)
    
    
    
    def find_patterns_in_code(input_code):
        input_ast = ast.parse(input_code)
        visitor = CallVisitor()
        visitor.visit(input_ast)
    
    
    def find_patterns_in_file(filepath):
        with open(filepath) as f:
            find_patterns_in_code(f.read())
    
    
    
    Amber Brown's avatar
    Amber Brown committed
    parser = argparse.ArgumentParser(description="Find url patterns.")
    
    
    parser.add_argument(
    
    Amber Brown's avatar
    Amber Brown committed
        nargs="+",
    
        metavar="DIR",
        help="Directories to search for definitions",
    
    )
    
    args = parser.parse_args()
    
    
    for directory in args.directories:
    
        for root, _, files in os.walk(directory):
    
            for filename in files:
                if filename.endswith(".py"):
                    filepath = os.path.join(root, filename)
                    find_patterns_in_file(filepath)
    
    
    PATTERNS_V1.sort()
    PATTERNS_V2.sort()
    
    yaml.dump(RESULT, sys.stdout, default_flow_style=False)