jakota / documentation-builder
Build documentation with Sphinx from inside your PHP code.
Installs: 118
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Open Issues: 2
Language:Shell
Type:sphinx-builder
pkg:composer/jakota/documentation-builder
README
Build documentation with Sphinx from inside your PHP code.
Prerequisites
Detailed Usage
Add as require-dev
composer require --dev jakota/documentation-builder
Create documentation folder like Documentation in the project root
mkdir ./Documentation
Add documentation blocks aka DocBlocks to your php files
The project needs a Index.rst to start from.
Add the following comment to a file.
Usually the main class or a file in the start folder.
It doesn't matter where this comment is located but it must not be found more than once.
<?php /** Documentation:Start:Index.rst. * *Welcome to Your documentation index! *==================================== * *.. toctree:: * :maxdepth: 2 * :caption: Contents: * *TocTreeInsert * *Documentation:End */
You can edit the text to your liking but don't remove the TocTreeInsert placeholder.
Next you want to add more DocBlocks to your PHP code.
<?php /** Documentation:Start:TocTree:Demo/Index.rst. * *Demo Class with cool new features *================================= * *.. toctree:: * :maxdepth: 2 * :caption: Contents: * * *Documentation:End */ class DemoController {
Every line between
/** Documentation:Start:TocTree:Demo/Index.rst.
and
*Documentation:End
*/
will be coped without the leading * into the file Demo/Index.rst.
And if TocTree: is set, this file will also be added to the TocTree in the main Index.rst.
You can add multiple DocBlocks wherever you want to one file.
But it is important that the indent of every line stays the same per DocBlock.
Config JSON
Create a folder for the config json and static files in your project root and name them whatever you like.
A recommended folder structure looks like this:
--- Project-Root
|--- .documentation // folder for the config
| |- _static // folder for the static content like images
| |- _templates // folder for templates
| |- documentation.json // config json
|- Documentation // folder for the finished documentation
The content of this documentation.json file looks like this:
{
"StartFolder": "Classes",
"DocumentationFolder": "Documentation",
"DocumentationType": "html",
"Favicon": "_static/favicon.svg",
"Project": "Your Awesome Project Name",
"Copyright": "2023, Your company or Name",
"Author": "Your company or Name",
"Release": "1.2.3",
"StaticFolder": "_static",
"TemplatesFolder": ""
}
StartFolder and DocumentationFolder are relative to the Project-Root.
StaticFolder and TemplatesFolder are relative to the folder for the config.
Again, you can edit the config to your liking.
But for now only html is supported as DocumentationType.
You will see an error message if the config is not as expected.
Run the build script from your project root
./vendor/bin/documentation-builder {the-path-and-file-name-of-your-config.json}
For example:
./vendor/bin/documentation-builder .documentation/documentation.json