From 645c3d684d17f47c86f32217e406b0db003e6587 Mon Sep 17 00:00:00 2001 From: Monty Taylor Date: Sun, 17 Sep 2017 12:43:49 -0500 Subject: [PATCH] Support zuul.d directories Change-Id: I3a0cba537043ffbc554f1bb1cfe951d86587b014 --- zuul_sphinx/zuul.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/zuul_sphinx/zuul.py b/zuul_sphinx/zuul.py index 7cfb9c7..d524788 100644 --- a/zuul_sphinx/zuul.py +++ b/zuul_sphinx/zuul.py @@ -35,7 +35,7 @@ class ZuulDirective(Directive): def find_zuul_yaml(self): root = self.state.document.settings.env.relfn2path('.')[1] while root: - for fn in ['zuul.yaml', '.zuul.yaml']: + for fn in ['zuul.yaml', '.zuul.yaml', 'zuul.d', '.zuul.d']: path = os.path.join(root, fn) if os.path.exists(path): return path @@ -51,11 +51,24 @@ class ZuulDirective(Directive): layout.jobs.append(obj['job']) return layout + def parse_zuul_d(self, path): + layout = Layout() + for conf in os.listdir(path): + with open(os.path.join(path, conf)) as f: + data = yaml.safe_load(f) + for obj in data: + if 'job' in obj: + layout.jobs.append(obj['job']) + return layout + def _parse_zuul_layout(self): env = self.state.document.settings.env if not env.domaindata['zuul']['layout']: path = self.find_zuul_yaml() - layout = self.parse_zuul_yaml(path) + if path.endswith('zuul.d'): + layout = self.parse_zuul_d(path) + else: + layout = self.parse_zuul_yaml(path) env.domaindata['zuul']['layout_path'] = path env.domaindata['zuul']['layout'] = layout