{"id":26650713,"url":"https://github.com/andyblarblar/documentinator","last_synced_at":"2025-04-11T04:04:50.899Z","repository":{"id":43801043,"uuid":"451758912","full_name":"andyblarblar/documentinator","owner":"andyblarblar","description":"A ROS node documentation generator","archived":false,"fork":false,"pushed_at":"2022-03-30T05:19:07.000Z","size":44,"stargazers_count":3,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-11T04:04:45.774Z","etag":null,"topics":["documentation","markdown","ros2"],"latest_commit_sha":null,"homepage":"https://crates.io/crates/documentinator","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andyblarblar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-01-25T06:18:04.000Z","updated_at":"2022-12-21T05:33:05.000Z","dependencies_parsed_at":"2022-09-02T17:32:07.162Z","dependency_job_id":null,"html_url":"https://github.com/andyblarblar/documentinator","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andyblarblar%2Fdocumentinator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andyblarblar%2Fdocumentinator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andyblarblar%2Fdocumentinator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andyblarblar%2Fdocumentinator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andyblarblar","download_url":"https://codeload.github.com/andyblarblar/documentinator/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248339287,"owners_count":21087215,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["documentation","markdown","ros2"],"created_at":"2025-03-25T02:05:54.505Z","updated_at":"2025-04-11T04:04:50.855Z","avatar_url":"https://github.com/andyblarblar.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Behold, the Documentinator!\n\nDocumentinator (aka docTor or doctor) is a Ros2 documentation generator. It takes well-defined and enforced\nconfig files and produces common node documentation in order to ease the burden of managing documentation style and copying.\n\nTo install doctor, first [install rust](https://www.rust-lang.org/learn/get-started), then run: ``cargo install documentinator``. \nDoctor should now be on your path. Just run this command again to update when possible.\n\nTODO:\n\nDoctor is currently usable for documentation generation, but nothing else. It also cannot be invoked as doctor by default yet.\n\n- [x] Create init\n- [x] Create Generators\n- [ ] Alias to doctor\n- [ ] Add mdbook generation support\n- [ ] Improve CI experience\n- [ ] Tidy up and document\n\ndocTor has 3 commands:\n\n`doctor init` - creates sample TOML\n\n`doctor gen` - generates documents\n\n### Generating\n\nDoctor generates files by searching in a passed directory for config files. If -r is passed, it will also recurse.\n\nEach config will generate doc for each node. `--readme` can be used to generate a readme.md that links to all the \ngenerated node docs. This is useful for generating readmes for GitHub repos in a CI action.\n\n### Configuring\n\nDocs will be in nodename.doctor.toml files. Each toml can have n nodes, or each node can have its own file.\n\n### Example Toml file:\n```toml\npackage_name = \"white line detection\"\nrepo = \"https://github.com/iscumd/white_line_detection\"\n\n[[nodes]]\nnode_name = 'White_line_detection'\nsource_file = ['/src/white_line_detection.cpp']\nsummary = '''\nThis node allows Ohm to avoid the bounding white lines by consuming images published on the image_raw topic and publishing found white lines as point clouds.\nThis is currently achived using OpenCv, and a small algortithm. The node operates in a pull fashion, only computing when an image is published.\nWhen an image is published, the node converts the image to an OpenCv Umat, then perspective shifting the image, then filtering out 'non-white' pixels,\nand finally determining where the remaining pixels are in relation to the robot, and publishing that point as a pointcloud/PC2 to both 'camera_cloud' and 'camera_cloud2'.\nOhm will then see these points as a wall, preventing it from crossing.\n'''\npotential_improvements = 'Burn with fire'\nmisc = 'An (optional) description of something else.'\n\n[[nodes.publishes]]\nname = 'camera_cloud'\ndescription = 'Ohm spesific pointcloud topic.'\n\n[[nodes.publishes]]\nname = 'camera_cloud2'\ndescription = 'Ohm spesific pointcloud2d topic.'\n\n[[nodes.subscribes]]\nname = 'image_raw'\ndescription = 'The raw image (not-debayerd) from the camera node/gazebo.'\n\n[[nodes.subscribes]]\nname = 'camera_info'\ndescription = 'The standard camera info topic, used to find things like resolution.'\n\n[[nodes.params]]\nname = 'kernel_size'\ndescription = 'Size of the erosion kernel. Default 5'\n\n[[nodes.launch]]\nfile_path = '/launch/WLD.launch.py'\nusage = 'just launch I guess'\n\n[[nodes.launch.remap]]\nfrom = 'camera_cloud'\nto = 'foo_cloud'\n\n[[nodes.launch.args]]\nname = 'arg1'\ndescription = 'Some arg to the launchfile'\n\n[[nodes.launch.args]]\nname = 'arg2'\ndescription = 'Another arg to the launchfile'\n```\n\n### TOML Format\nConfig files have the following valid structure.\n\n\u003e Note: tags marked 'Optional' can be omitted in the toml.\n\n- `package_name`: String\n- `repo`: String\n- `nodes`: Array of\n  - `node_name`: String\n  - `source_file`: Array of strings\n  - `summary`: String\n  - `potential_improvements`: Optional string\n  - `misc`: Optional string\n  - `publishes`: Optional array of\n    - `name`: String\n    - `description`: String\n  - `subscribes`: Optional array of \n    - `name`: String\n    - `description`: String\n  - `params`: Optional array of\n    - `name`: String\n    - `description`: String\n  - `launch`: Optional array of\n    - `file_path`: String\n    - `usage`: String\n    - `args`: Optional array of \n      - `name`: String\n      - `description`: String\n    - `remap`: Optional array of \n      - `from`: String\n      - `to`: String\n      \n\n### Usage examples\n\nCreate example config for node called 'node_name':\n\n``` documentinator init node_name```\n\nGenerate markdown files for all configs in this directory:\n\n```documentinator gen .```\n\nGenerate markdown files for all configs in this and all subdirectories:\n\n```documentinator gen -r .```\n\nGenerate a markdown readme that links to all other generated node docs (and also generates them):\n\n```documentinator gen --readme .```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandyblarblar%2Fdocumentinator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandyblarblar%2Fdocumentinator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandyblarblar%2Fdocumentinator/lists"}