docs: add automated compose documentation generation pipeline
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env python3
|
||||
import sys,yaml,re
|
||||
inp,out=sys.argv[1],sys.argv[2]
|
||||
with open(inp) as f: c=yaml.safe_load(f) or {}
|
||||
rows=[]
|
||||
for sname,svc in (c.get('services') or {}).items():
|
||||
labels=svc.get('labels') or {}
|
||||
if isinstance(labels,list):
|
||||
d={}
|
||||
for l in labels:
|
||||
if '=' in str(l):k,v=str(l).split('=',1);d[k]=v
|
||||
labels=d
|
||||
routers={}
|
||||
for k,v in labels.items():
|
||||
m=re.match(r'traefik\.http\.routers\.([^.]+)\.(rule|entrypoints|tls|middlewares)$',k)
|
||||
if m: routers.setdefault(m.group(1),{})[m.group(2)]=v
|
||||
ports={}
|
||||
for k,v in labels.items():
|
||||
m=re.match(r'traefik\.http\.services\.([^.]+)\.loadbalancer\.server\.port$',k)
|
||||
if m: ports[m.group(1)]=v
|
||||
for r,rv in routers.items():
|
||||
rows.append((sname,r,rv.get('rule',''),rv.get('entrypoints',''),rv.get('tls',''),rv.get('middlewares',''),ports.get(r,'')))
|
||||
lines=["# Traefik Routes","", "| Service | Router | Rule | Entrypoints | TLS | Middlewares | Target Port |","|---|---|---|---|---|---|---|"]
|
||||
if not rows:
|
||||
lines=["# Traefik Routes","","No Traefik routes were detected."]
|
||||
else:
|
||||
for r in sorted(rows): lines.append('| '+' | '.join(str(x).replace('|','\\|') for x in r)+' |')
|
||||
open(out,'w').write('\n'.join(lines)+'\n')
|
||||
Reference in New Issue
Block a user