libads: Make ads_cldap_netlogon() static
[samba4-gss.git] / source4 / script / depfilter.py
blobee2ce9d706a10b768c63e99080016f0aed189754
1 #!/usr/bin/env python3
3 # Filter out arcs in a dotty graph that are at or below a certain
4 # node. This is useful for visualising parts of the dependency graph.
7 # Command line stuff
9 import sys
10 import re
12 if len(sys.argv) != 2:
13 print('Usage: depfilter.py NODE')
14 sys.exit(1)
16 top = sys.argv[1]
18 # Read in dot file
20 lines = sys.stdin.readlines()
22 graph = {}
24 for arc in lines[1:-1]:
25 match = re.search('"(.*)" -> "(.*)"', arc)
26 n1, n2 = match.group(1), match.group(2)
27 if n1 not in graph:
28 graph[n1] = []
29 graph[n1].append(n2)
31 # Create subset of 'graph' rooted at 'top'
33 subgraph = {}
36 def add_deps(node):
37 if node in graph and node not in subgraph:
38 subgraph[node] = graph[node]
39 for n in graph[node]:
40 add_deps(n)
43 add_deps(top)
45 # Generate output
47 print(lines[0], end=' ')
49 for key, value in subgraph.items():
50 for n in value:
51 print('\t"%s" -> "%s"' % (key, n))
53 print(lines[-1], end=' ')