Skip to content
Snippets Groups Projects
Commit b052621f authored by Mark Haines's avatar Mark Haines
Browse files

List the URL patterns in synapse

parent 8f103158
No related branches found
No related tags found
No related merge requests found
#! /usr/bin/python
import ast
import argparse
import os
import sys
import yaml
PATTERNS = []
class CallVisitor(ast.NodeVisitor):
def visit_Call(self, node):
if isinstance(node.func, ast.Name):
name = node.func.id
else:
return
if name == "client_path_patterns":
PATTERNS.append(node.args[0].s)
elif name == "client_v2_patterns":
PATTERNS.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())
parser = argparse.ArgumentParser(description='Find url patterns.')
parser.add_argument(
"directories", nargs='+', metavar="DIR",
help="Directories to search for definitions"
)
args = parser.parse_args()
for directory in args.directories:
for root, dirs, files in os.walk(directory):
for filename in files:
if filename.endswith(".py"):
filepath = os.path.join(root, filename)
find_patterns_in_file(filepath)
yaml.dump(sorted(PATTERNS), sys.stdout, default_flow_style=False)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment