CompEvol / beast2-site

beast2 web development site
2 stars 6 forks source link

Really helpful documentation needs updating #12

Open aezarebski opened 2 years ago

aezarebski commented 2 years ago

https://github.com/CompEvol/beast2-site/blob/00364f060ec9418b888d7874f3909c029dc96230/xml/index.html#L5

I find these pages very useful for editing the XML. Is there a way to update them to the latest version?

Are these automatically generated? And if so, how is this done? I'm interested in generating similar pages for the packages.

rbouckaert commented 2 years ago

The documentation is automatically generated using DocMaker, which is part of BEAST. To generate documentation for BEAST v2.6, run

java -cp /path/to/beast/lib/beast.jar beast.app.DocMaker /output/dir

where /path/to/beast the path to where you have BEAST installed, and /output/dir the directory to where html files should go. An index.html file is generated in /output/dir that contains a page similar to the one you linked to.

It generates pages for all packages you have installed as well.

rbouckaert commented 2 years ago

With BEAST v2.7.1 (soon to be released), DocMaker is an app that can be launched with the AppLauncher that comes with BEAST, or via the command line using

/path/to/beast/bin/applauncher DocMaker /output/dir

where /path/to/beast the path to where you have BEAST installed, and /output/dir the directory to where html files should go.

aezarebski commented 2 years ago

Thank you! This is great.

I was able to generate the 2.6.6 documentation, but I can't find the documentation for the other packages installed (having the MASTER docs would be particularly helpful.) Is there some extra command line magic I need to use? It seems to recognise that there are packages there, it's logging Loading package MASTER v6.1.2.

rbouckaert commented 2 years ago

DocMaker in v2.6 only documents classes in the beast and snap namespace, due to this line, so it was a bit misleading to state all installed packages will be documented, since only a subset of classes are considered.

If you change

m_beastObjectNames = PackageManager.find(beast.core.BEASTObject.class, PackageManager.IMPLEMENTATION_DIR);

to

m_beastObjectNames = PackageManager.find(beast.core.BEASTObject.class, new String[]{"beast", "master"});

in the v2.6 (not the master) branch, it should pick up classes in the master namespace as well. DocMaker v2.7.1 does not look at name spaces, but will produce documentation for any class declared as a BEASTInterface service in the version.xml file that comes with packages.

aezarebski commented 2 years ago

Thanks. Frustratingly, I haven't been able to compile 2.6 versions recently (possibly due to recently upgrading java???) so can't really tinker with that at the moment. I'll wait for v2.7.1 and come back to this then.

rbouckaert commented 2 years ago

v2.6 should compile without problems with JDK 8. It should be possible to have multiple JDKs installed, and switch between them -- details are different for different operating systems, so search for details for your OS.