Skip to content
This repository was archived by the owner on Sep 15, 2021. It is now read-only.

Commit 8d4d9be

Browse files
DavidDecotignydavidzchen
authored andcommitted
Re-allow macro-only bzl, fix runtime failure. (#37)
This patch: - fixes the use of undeclared attributes introduced by b14ff10. - allows doc for macro-only bzl to be emitted.
1 parent a35e4e7 commit 8d4d9be

File tree

3 files changed

+33
-9
lines changed

3 files changed

+33
-9
lines changed

skydoc/main.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -133,14 +133,15 @@ class MarkdownWriter(object):
133133

134134
def __init__(self, writer_options):
135135
self.__options = writer_options
136+
self.__env = _create_jinja_environment(self.__options.link_ext)
136137

137138
def write(self, rulesets):
138139
"""Write the documentation for the rules contained in rulesets."""
139140
try:
140141
temp_dir = tempfile.mkdtemp()
141142
output_files = []
142143
for ruleset in rulesets:
143-
if len(ruleset.rules) > 0:
144+
if not ruleset.empty():
144145
output_files.append(self._write_ruleset(temp_dir, ruleset))
145146
if self.__options.overview:
146147
output_files.append(self._write_overview(temp_dir, rulesets))
@@ -168,8 +169,7 @@ def write(self, rulesets):
168169

169170
def _write_ruleset(self, output_dir, ruleset):
170171
# Load template and render Markdown.
171-
env = _create_jinja_environment(self.__options.link_ext)
172-
template = env.get_template('markdown.jinja')
172+
template = self.__env.get_template('markdown.jinja')
173173
out = template.render(ruleset=ruleset)
174174

175175
# Write output to file. Output files are created in a directory structure
@@ -187,10 +187,10 @@ def _write_overview(self, output_dir, rulesets):
187187
template = self.__env.get_template('markdown_overview.jinja')
188188
out = template.render(rulesets=rulesets)
189189

190-
output_file = "%s/%s.md" % (output_dir, self.options.overview_filename)
190+
output_file = "%s/%s.md" % (output_dir, self.__options.overview_filename)
191191
with open(output_file, "w") as f:
192192
f.write(out)
193-
return (output_file, "%s.md" % self.options.overview_filename)
193+
return (output_file, "%s.md" % self.__options.overview_filename)
194194

195195
class HtmlWriter(object):
196196
"""Writer for generating documentation in HTML."""
@@ -211,7 +211,7 @@ def write(self, rulesets):
211211
temp_dir = tempfile.mkdtemp()
212212
output_files = []
213213
for ruleset in rulesets:
214-
if len(ruleset.rules) > 0:
214+
if not ruleset.empty():
215215
output_files.append(self._write_ruleset(temp_dir, ruleset, nav))
216216
if self.__options.overview:
217217
output_files.append(self._write_overview(temp_dir, rulesets, nav))

skydoc/rule.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,3 +165,9 @@ def __init__(self, bzl_file, language, title, description, strip_prefix,
165165
else:
166166
assert rule_proto.type == build_pb2.RuleDefinition.REPOSITORY_RULE
167167
self.repository_rules.append(definition)
168+
169+
def empty(self):
170+
"""Return True if there is nothing to document."""
171+
return not any([self.rules,
172+
self.macros,
173+
self.repository_rules])

skydoc/templates/toc.jinja

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,31 @@ See the License for the specific language governing permissions and
1414
limitations under the License.
1515
#}
1616
<nav class="toc">
17-
<h2>Rules</h2>
18-
<ul>
1917
% if ruleset.description:
20-
<li><a href="#overview">Overview</a></li>
18+
<h2><a href="#overview">Overview</a></h2>
19+
% endif
20+
% if ruleset.repository_rules[0] is defined:
21+
<h2>Repository Rules</h2>
22+
<ul>
23+
% for rule in ruleset.repository_rules:
24+
<li><a href="#{{ rule.name }}">{{ rule.name }}</a></li>
25+
% endfor
26+
</ul>
2127
% endif
28+
% if ruleset.rules[0] is defined:
29+
<h2>Rules</h2>
30+
<ul>
2231
% for rule in ruleset.rules:
2332
<li><a href="#{{ rule.name }}">{{ rule.name }}</a></li>
2433
% endfor
2534
</ul>
35+
% endif
36+
% if ruleset.macros[0] is defined:
37+
<h2>Macros</h2>
38+
<ul>
39+
% for macro in ruleset.macros:
40+
<li><a href="#{{ macro.name }}">{{ macro.name }}</a></li>
41+
% endfor
42+
</ul>
43+
% endif
2644
</nav>

0 commit comments

Comments
 (0)