aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--scripts/BUILD3
-rw-r--r--scripts/docs/BUILD17
-rw-r--r--scripts/docs/dot_converter.py56
-rw-r--r--scripts/docs/generate_dot_graphs.py23
-rw-r--r--site/BUILD25
5 files changed, 122 insertions, 2 deletions
diff --git a/scripts/BUILD b/scripts/BUILD
index df78a86b73..106e4a3453 100644
--- a/scripts/BUILD
+++ b/scripts/BUILD
@@ -37,8 +37,9 @@ sh_test(
filegroup(
name = "srcs",
srcs = glob(["**"]) + [
- "//scripts/release:srcs",
+ "//scripts/docs:srcs",
"//scripts/packages:srcs",
+ "//scripts/release:srcs",
],
visibility = ["//:__pkg__"],
)
diff --git a/scripts/docs/BUILD b/scripts/docs/BUILD
new file mode 100644
index 0000000000..53452e22e0
--- /dev/null
+++ b/scripts/docs/BUILD
@@ -0,0 +1,17 @@
+filegroup(
+ name = "srcs",
+ srcs = glob(["**"]),
+ visibility = ["//scripts:__pkg__"],
+)
+
+py_library(
+ name = "dot-converter",
+ srcs = ["dot_converter.py"],
+)
+
+py_binary(
+ name = "generate_dot_graphs",
+ srcs = ["generate_dot_graphs.py"],
+ visibility = ["//site:__pkg__"],
+ deps = [":dot-converter"],
+)
diff --git a/scripts/docs/dot_converter.py b/scripts/docs/dot_converter.py
new file mode 100644
index 0000000000..c65a15e175
--- /dev/null
+++ b/scripts/docs/dot_converter.py
@@ -0,0 +1,56 @@
+# Copyright 2016 The Bazel Authors. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Graphviz documentation converter library."""
+
+import fileinput
+import re
+import subprocess
+import sys
+
+
+class DotConverter(object):
+ """Converts dot graphs to SVG format inline."""
+
+ def __init__(self, dot_command, dot_env):
+ self.dot_command = dot_command
+ self.dot_env = dot_env
+
+ def convert(self):
+ collect = False
+ graph = ""
+ block_num = 0
+
+ for line in fileinput.input():
+ if re.search(r"div class='graphviz dot'><!--", line):
+ collect = True
+ continue
+ elif collect and re.search(r"--></div>", line):
+ dot = subprocess.Popen(
+ self.dot_command,
+ stdin=subprocess.PIPE, stdout=subprocess.PIPE, env=self.dot_env)
+ output = dot.communicate(graph)[0]
+ if dot.returncode == 0:
+ # cut the first few lines (svg header + comments)
+ sys.stdout.write(output.split("\n", 6)[6])
+ else:
+ sys.stderr.write("inlining block %d failed.\n" % (block_num + 1))
+ collect = False
+ graph = ""
+ block_num += 1
+ continue
+
+ if collect:
+ graph += line
+ else:
+ sys.stdout.write(line)
diff --git a/scripts/docs/generate_dot_graphs.py b/scripts/docs/generate_dot_graphs.py
new file mode 100644
index 0000000000..306d5e12b0
--- /dev/null
+++ b/scripts/docs/generate_dot_graphs.py
@@ -0,0 +1,23 @@
+# Copyright 2016 The Bazel Authors. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Converts dot graphs in an .html file SVG format."""
+
+import os
+
+from scripts.docs.dot_converter import DotConverter
+
+if __name__ == "__main__":
+ converter = DotConverter(["dot", "-Tsvg"], os.environ.copy())
+ converter.convert()
diff --git a/site/BUILD b/site/BUILD
index 52f9da12be..711c819947 100644
--- a/site/BUILD
+++ b/site/BUILD
@@ -8,6 +8,11 @@ exports_files(
],
)
+DOT_GRAPH_HTML_FILES = [
+ "versions/master/docs/query.html",
+ "versions/master/docs/build-ref.html",
+]
+
filegroup(
name = "srcs",
srcs = glob(["**"]),
@@ -25,7 +30,7 @@ filegroup(
"command-line-reference-prefix.html",
"command-line-reference-suffix.html",
"site/README.md",
- ],
+ ] + DOT_GRAPH_HTML_FILES,
),
)
@@ -76,6 +81,7 @@ pkg_tar(
":bootstrap-css",
":bootstrap-images",
":bootstrap-js",
+ ":dot-graphs",
":font-awesome-css",
":font-awesome-font",
":jekyll-files",
@@ -92,6 +98,23 @@ pkg_tar(
)
genrule(
+ name = "dot-graphs",
+ srcs = DOT_GRAPH_HTML_FILES,
+ outs = ["dot.tar"],
+ cmd = """
+origdir=$$PWD
+tmpdir=$$(mktemp -d)
+for f in $(SRCS); do
+ mkdir -p $$tmpdir/$$(dirname $$f)
+ $(location //scripts/docs:generate_dot_graphs) < $$f > $$tmpdir/$$f
+done
+cd $$tmpdir/site
+tar cf $$origdir/$@ *
+""",
+ tools = ["//scripts/docs:generate_dot_graphs"],
+)
+
+genrule(
name = "jekyll-tree",
srcs = [
":jekyll-base",