When working on documentation, I find it useful to spawn an HTTP server to serve docs for me to consume in a web browser. I went ahead and used Python's builtin http.server module, but it could also be a run target which just spawned `xdg-open builddir/doc/src/sgml/html/index.html`, though I would doubt Windows has xdg-open(1).

The one controversial part of this patch might be using "port" 0, which asks the kernel to assign an unused port. I'm not sure if that exists on Windows, or is even desireable. Should we have a build option for the port? What would a good default be?

--
Tristan Partin
Neon (https://neon.tech)
diff --git a/doc/src/sgml/Makefile b/doc/src/sgml/Makefile
index a04c532b53..6f629e02a7 100644
--- a/doc/src/sgml/Makefile
+++ b/doc/src/sgml/Makefile
@@ -130,6 +130,9 @@ html-stamp: stylesheet.xsl postgres-full.xml $(ALL_IMAGES)
 	$(XSLTPROC) $(XMLINCLUDE) $(XSLTPROCFLAGS) $(XSLTPROC_HTML_FLAGS) $(wordlist 1,2,$^)
 	touch $@
 
+html-serve: html
+	python3 -m http.server --directory '$(top_builddir)/$(subdir)/html' 0
+
 # single-page HTML
 postgres.html: stylesheet-html-nochunk.xsl postgres-full.xml $(ALL_IMAGES)
 	$(XSLTPROC) $(XMLINCLUDE) $(XSLTPROCFLAGS) $(XSLTPROC_HTML_FLAGS) -o $@ $(wordlist 1,2,$^)
diff --git a/doc/src/sgml/meson.build b/doc/src/sgml/meson.build
index e418de83a7..fa598d8ab1 100644
--- a/doc/src/sgml/meson.build
+++ b/doc/src/sgml/meson.build
@@ -154,6 +154,19 @@ if docs_dep.found()
   alias_target('html', html)
   alias_target('install-html', install_doc_html)
 
+  run_target(
+    'html-serve',
+    command: [
+      python,
+      '-m',
+      'http.server',
+      '--directory',
+      meson.current_build_dir() / 'html',
+      '0',
+    ],
+    depends: html,
+  )
+
   # build and install multi-page html docs as part of docs target
   docs += html
   installdocs += install_doc_html

Reply via email to