manuals: generate VTY reference for osmo-pcap-{client,server}

Change-Id: I28353f51de798535a3bb6efdc6c2da443d96ddfb
Tweaked-By: Vadim Yanitskiy <vyanitskiy@sysmocom.de>
diff --git a/doc/manuals/Makefile.am b/doc/manuals/Makefile.am
new file mode 100644
index 0000000..2e24c6c
--- /dev/null
+++ b/doc/manuals/Makefile.am
@@ -0,0 +1,11 @@
+EXTRA_DIST = vty
+
+if BUILD_MANUALS
+  # This is a significantly modified, multi-target adopted copy of
+  # $(OSMO_GSM_MANUALS_DIR)/build/Makefile.vty-reference.inc
+  VARIANTS = client server
+  include $(srcdir)/vty/Makefile.vty-reference.inc
+
+  OSMO_REPOSITORY = osmo-pcap
+  include $(OSMO_GSM_MANUALS_DIR)/build/Makefile.common.inc
+endif
diff --git a/doc/manuals/vty/Makefile.vty-reference.inc b/doc/manuals/vty/Makefile.vty-reference.inc
new file mode 100644
index 0000000..ea8c68e
--- /dev/null
+++ b/doc/manuals/vty/Makefile.vty-reference.inc
@@ -0,0 +1,37 @@
+DOCBOOKS = $(foreach v,$(VARIANTS),vty/osmo-pcap-$(v)-vty-reference.xml)
+DOCBOOKS_DEPS = $(DOCBOOKS) $(addsuffix .inc,$(DOCBOOKS))
+INC_DIR = $(abspath $(builddir)/vty)
+
+include $(OSMO_GSM_MANUALS_DIR)/build/Makefile.docbook.inc
+
+CLEAN_FILES += $(DOCBOOKS_DEPS)
+CLEAN_FILES += $(addsuffix .inc.gen,$(DOCBOOKS))
+CLEAN_FILES += $(addsuffix .inc.merged,$(DOCBOOKS))
+
+$(INC_DIR):
+	mkdir -p $@
+
+vty/osmo-pcap-%-vty-reference.xml: $(top_builddir)/src/osmo-pcap-% $(INC_DIR)
+	sed -e "s|@@GENERATED@@|$@.inc|" \
+	    -e "s|@@VARIANT@@|$(notdir $<)|" \
+	    -e "s|@@REV_NUMBER@@|$(VERSION)|" \
+	    -e "s|@@REV_DATE@@|$(shell date +"%dth %B %Y")|" \
+	    -e "s|@@CR_YEAR@@|$(shell date +"%Y")|" \
+		$(srcdir)/vty/osmo-pcap-vty-reference.xml > $@
+
+vty/osmo-pcap-%-vty-reference.xml.inc: $(top_builddir)/src/osmo-pcap-% \
+				       $(OSMO_GSM_MANUALS_DIR)/common/vty_additions.xml \
+				       $(OSMO_GSM_MANUALS_DIR)/common/chapters/vty.xml \
+				       $(OSMO_GSM_MANUALS_DIR)/vty_reference.xsl \
+				       $(srcdir)/vty/*.xml $(INC_DIR)
+	# a) Invoke osmo-pcap-% to generate the list of commands first
+	$< --vty-ref-mode default --vty-ref-xml > "$@.gen"
+	# ... filter garbage potentially printed by libraries to stdout
+	sed -i '/^<vtydoc/,$$!d' "$@.gen"
+	# b) Merge the result of a) with global and local additions
+	$(OSMO_GSM_MANUALS_DIR)/build/vty_reference_combine.sh \
+		$(realpath $(OSMO_GSM_MANUALS_DIR)/merge_doc.xsl) "$@.gen" \
+		$(OSMO_GSM_MANUALS_DIR)/common/vty_additions.xml \
+		$(srcdir)/vty/vty_additions.xml > "$@.merged"
+	# c) Convert the result of b) into a valid docbook
+	xsltproc $(OSMO_GSM_MANUALS_DIR)/vty_reference.xsl "$@.merged" > $@
diff --git a/doc/manuals/vty/osmo-pcap-vty-reference.xml b/doc/manuals/vty/osmo-pcap-vty-reference.xml
new file mode 100644
index 0000000..f4955dc
--- /dev/null
+++ b/doc/manuals/vty/osmo-pcap-vty-reference.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML 5.0//EN"
+"http://docbook.org/xml/5.0/dtd/docbook.dtd" [
+<!ENTITY chapter-vty      SYSTEM      "./common/chapters/vty.xml" >
+<!ENTITY sections-vty     SYSTEM      "@@GENERATED@@" >
+]>
+
+<book>
+  <info>
+    <revhistory>
+        <revision>
+            <revnumber>v1</revnumber>
+            <date>@@REV_DATE@@</date>
+            <authorinitials>s.f.m.c.</authorinitials>
+            <revremark>Automatic build (@@REV_NUMBER@@)</revremark>
+        </revision>
+    </revhistory>
+
+    <title>OsmoPCAP VTY Reference</title>
+    <subtitle>@@VARIANT@@</subtitle>
+
+    <copyright>
+      <year>@@CR_YEAR@@</year>
+    </copyright>
+
+    <legalnotice>
+      <para>This work is copyright by <orgname>sysmocom - s.f.m.c. GmbH</orgname>. All rights reserved.
+      </para>
+    </legalnotice>
+  </info>
+
+  <!-- Main chapters-->
+  &chapter-vty;
+</book>
diff --git a/doc/manuals/vty/vty_additions.xml b/doc/manuals/vty/vty_additions.xml
new file mode 100644
index 0000000..a4c675e
--- /dev/null
+++ b/doc/manuals/vty/vty_additions.xml
@@ -0,0 +1,2 @@
+<vtydoc xmlns='urn:osmocom:xml:libosmocore:vty:doc:1.0'>
+</vtydoc>