Put each bit of spec in its own directory

I want to change the URLs for the spec sections on the website from
<version>/<section>.html to <section>/<version>.html, to better reflect how we
do the versioning.

This puts each bit of spec in its own directory, updates the index to point to
the right place, and fixes continuserv to deal with directories as well as
files.

This will probably require fixes to the speculator too, but I'll have to come
back to that.
This commit is contained in:
Richard van der Hoff 2016-05-05 18:26:17 +01:00
parent a8eed29e9f
commit 01f8173c84
4 changed files with 66 additions and 34 deletions

View file

@ -6,6 +6,7 @@ import copy
import fileinput
import glob
import os
import os.path
import re
import shutil
import subprocess
@ -112,7 +113,7 @@ def load_with_adjusted_titles(filename, file_stream, title_level, title_styles):
line_title_style,
title_styles[adjusted_level]
))
return "".join(rst_lines)
@ -277,16 +278,10 @@ def run_through_template(input_files, set_verbose, substitutions):
cwd="../templating"
)
def get_build_targets(targets_listing):
with open(targets_listing, "r") as targ_file:
all_targets = yaml.load(targ_file.read())
return all_targets["targets"].keys()
"""
Extract and resolve groups for the given target in the given targets listing.
Args:
targets_listing (str): The path to a YAML file containing a list of targets
all_targets (dict): The parsed YAML file containing a list of targets
target_name (str): The name of the target to extract from the listings.
Returns:
dict: Containing "filees" (a list of file paths), "relative_title_styles"
@ -294,14 +289,12 @@ Returns:
(a list of characters which represent the global title style to follow,
with the top section title first, the second section second, and so on.)
"""
def get_build_target(targets_listing, target_name):
def get_build_target(all_targets, target_name):
build_target = {
"title_styles": [],
"relative_title_styles": {},
"files": []
}
with open(targets_listing, "r") as targ_file:
all_targets = yaml.load(targ_file.read())
build_target["title_styles"] = all_targets["title_styles"]
build_target["relative_title_styles"] = all_targets["relative_title_styles"]
@ -396,8 +389,11 @@ def cleanup_env():
def main(targets, keep_intermediates, substitutions):
prepare_env()
with open("../specification/targets.yaml", "r") as targ_file:
target_defs = yaml.load(targ_file.read())
if targets == ["all"]:
targets = get_build_targets("../specification/targets.yaml") + ["howtos"]
targets = target_defs["targets"].keys() + ["howtos"]
log("Building spec [target=%s]" % targets)
@ -408,7 +404,7 @@ def main(targets, keep_intermediates, substitutions):
if target_name == "howtos":
shutil.copy("../supporting-docs/howtos/client-server.rst", templated_file)
else:
target = get_build_target("../specification/targets.yaml", target_name)
target = get_build_target(target_defs, target_name)
build_spec(target=target, out_filename=templated_file)
templated_files.append(templated_file)
@ -416,12 +412,26 @@ def main(targets, keep_intermediates, substitutions):
run_through_template(templated_files, VERBOSE, substitutions)
for target_name in targets:
target = target_defs["targets"].get(target_name)
version_label = None
if target:
version_label = target.get("version_label")
if version_label:
for old, new in substitutions.items():
version_label = version_label.replace(old, new)
templated_file = "tmp/templated_%s.rst" % (target_name,)
rst_file = "tmp/spec_%s.rst" % (target_name,)
html_file = "gen/%s.html" % (target_name,)
if version_label:
d = os.path.join("gen", target_name)
if not os.path.exists(d):
os.mkdir(d)
html_file = os.path.join(d, "%s.html" % version_label)
else:
html_file = "gen/%s.html" % (target_name, )
fix_relative_titles(
target=target, filename=templated_file,
target=target_defs, filename=templated_file,
out_filename=rst_file,
)
rst2html(rst_file, html_file)