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:
parent
a8eed29e9f
commit
01f8173c84
4 changed files with 66 additions and 34 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue