VTY references: set git version and date
Fix that VTY references currently don't have the version from which they were generated. Set the same REVNUMBER and GIT_DATE variables in Makefile.docbook.inc (gets included in Makefile.vty-rference.inc) as in Makefile.asciidoc.inc. Use them with a new script to rewrite the <revhistory> block of vty references. Closes: OS#4063 Change-Id: I68a8c3893d3c3a3b1bc1aee442a17635b60ac531
This commit is contained in:
parent
c88a70d262
commit
dba860c733
|
@ -34,9 +34,22 @@ INC_DIR ?= $(PWD)/generated
|
|||
%.xml-lint: %.xml
|
||||
xmllint --xinclude --postvalid --noout $<
|
||||
|
||||
GIT_VERSION := $(shell git describe --abbrev=4 --dirty --always --tags)
|
||||
GIT_DATE := $(shell $(OSMO_GSM_MANUALS_DIR)/build/unix-time-to-fmt.py `git log -n 1 "--pretty=%at" ../.`)
|
||||
ifeq (,$(BUILD_RELEASE))
|
||||
REVNUMBER := DRAFT $(GIT_VERSION)
|
||||
else
|
||||
REVNUMBER := $(GIT_VERSION)
|
||||
endif
|
||||
|
||||
# Create a PDF file and lint it before
|
||||
# xslt path: find includes in both $(OSMO_GSM_MANUALS_DIR)/common/chapters and $(builddir)/generated
|
||||
%.pdf: %.xml %.xml-lint $(DOCBOOKS_DEPS) build common
|
||||
set -x && \
|
||||
export GIT_DATE="$(GIT_DATE)" && \
|
||||
export REVNUMBER="$(REVNUMBER)" && \
|
||||
export TEMPFILE="$(INC_DIR)/_temp_$(notdir $<)" && \
|
||||
$(OSMO_GSM_MANUALS_DIR)/build/docbook-set-revhistory.py "$<" && \
|
||||
dblatex --xslt-opts="--path $(realpath $(OSMO_GSM_MANUALS_DIR))/common/chapters:$(INC_DIR)" \
|
||||
$(dblatex_quiet) -P draft.mode=no -o $@ $<
|
||||
|
||||
$(dblatex_quiet) -P draft.mode=no -o $@ "$$TEMPFILE" && \
|
||||
rm $$TEMPFILE
|
||||
|
|
|
@ -0,0 +1,78 @@
|
|||
#!/usr/bin/env python3
|
||||
# Rewrite the revhistory part of the document for vty reference (OS#4063)
|
||||
import os
|
||||
import shutil
|
||||
import sys
|
||||
|
||||
xml_in = sys.argv[1]
|
||||
xml_out = os.environ["TEMPFILE"]
|
||||
git_date = os.environ["GIT_DATE"]
|
||||
revnumber = os.environ["REVNUMBER"]
|
||||
|
||||
|
||||
def get_author_initials(line):
|
||||
return line.split("<authorinitials>")[1].split("</authorinitials>")[0]
|
||||
|
||||
|
||||
def write_revhistory_block(h_out, author_initials):
|
||||
h_out.write("<revhistory>\n")
|
||||
h_out.write("<revision>\n")
|
||||
h_out.write(f"<revnumber>{revnumber}</revnumber>\n")
|
||||
h_out.write(f"<date>{git_date}</date>\n")
|
||||
h_out.write(f"<authorinitials>{author_initials}</authorinitials>\n")
|
||||
h_out.write("<revremark>Automatically Generated VTY Reference</revremark>\n")
|
||||
h_out.write("</revision>\n")
|
||||
h_out.write("</revhistory>\n")
|
||||
|
||||
|
||||
def set_revhistory():
|
||||
"""
|
||||
Replace the part of the docbook that looks like the following, and copy
|
||||
all other lines. Just using python's xml library would be better, but it
|
||||
fails on docbook's custom DTDs.
|
||||
<revhistory>
|
||||
<revision>
|
||||
<revnumber>v1</revnumber>
|
||||
<date>18th September 2017</date>
|
||||
<authorinitials>nh</authorinitials>
|
||||
<revremark>Initial</revremark>
|
||||
</revision>
|
||||
</revhistory>
|
||||
"""
|
||||
before = 0
|
||||
inside = 1
|
||||
after = 2
|
||||
|
||||
pos = before
|
||||
author_initials = ""
|
||||
|
||||
with open(xml_out, "w") as h_out:
|
||||
with open(xml_in, "r") as h_in:
|
||||
for line in h_in.readlines():
|
||||
if pos == before:
|
||||
if "<revhistory>" in line:
|
||||
h_out.write(line.split("<revhistory>")[0] + "\n")
|
||||
pos = inside
|
||||
|
||||
if pos in [before, after]:
|
||||
h_out.write(line)
|
||||
|
||||
if pos == inside:
|
||||
if "<authorinitials>" in line:
|
||||
author_initials = get_author_initials(line)
|
||||
if "</revhistory>" in line:
|
||||
write_revhistory_block(h_out, author_initials)
|
||||
h_out.write(line.split("</revhistory>")[1])
|
||||
pos = after
|
||||
|
||||
|
||||
def main():
|
||||
if xml_in.endswith("-vty-reference.xml"):
|
||||
print(f"Changing revhistory to {revnumber}, {git_date}...")
|
||||
set_revhistory()
|
||||
else:
|
||||
print("Copying without change of revhistory...")
|
||||
shutil.copyfile(xml_in, xml_out)
|
||||
|
||||
|
||||
main()
|
Loading…
Reference in New Issue