{"id":19401581,"url":"https://github.com/obengine/obidog","last_synced_at":"2025-04-24T07:30:45.470Z","repository":{"id":40601733,"uuid":"169486915","full_name":"ObEngine/Obidog","owner":"ObEngine","description":"Öbengine BInding and DOcumentation Generator","archived":false,"fork":false,"pushed_at":"2023-08-19T02:25:35.000Z","size":596,"stargazers_count":4,"open_issues_count":14,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-03T01:04:52.757Z","etag":null,"topics":["bulma-css","documentation-generator","doxygen","hacktoberfest","lua","obengine"],"latest_commit_sha":null,"homepage":"https://obengine.io","language":"Python","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/ObEngine.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":"2019-02-06T22:30:49.000Z","updated_at":"2023-02-05T19:47:44.000Z","dependencies_parsed_at":"2022-09-20T12:16:42.865Z","dependency_job_id":null,"html_url":"https://github.com/ObEngine/Obidog","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ObEngine%2FObidog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ObEngine%2FObidog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ObEngine%2FObidog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ObEngine%2FObidog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ObEngine","download_url":"https://codeload.github.com/ObEngine/Obidog/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250582808,"owners_count":21453917,"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":["bulma-css","documentation-generator","doxygen","hacktoberfest","lua","obengine"],"created_at":"2024-11-10T11:19:06.104Z","updated_at":"2025-04-24T07:30:44.822Z","avatar_url":"https://github.com/ObEngine.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Obidog logo](https://raw.githubusercontent.com/ObEngine/Wiki/master/obidog_banner.png)\n\n# Obidog\n\nÖbengine's BIndings and DOcumentation Generator (work in progress)\n\n**[ÖbEngine repository](https://github.com/Sygmei/ObEngine)**\n\nObidog has two uses :\n- Generating ÖbEngine bindings\n- Generating ÖbEngine documentation\n\n## Requirements\n\nObidog has the following requirements :\n- Python \u003e 3.6 (+ install the Obidog package using `pip install -e .` if you cloned this repository)\n    - lxml\n    - GitPython\n- Doxygen (needs to be in `PATH`)\n- Git (optional, see [below](#cloning-repository))\n\n### Cloning repository\n\nTo make the script run faster, you should export the following environment variable : `OBENGINE_GIT_DIRECTORY`, if you don't export it though, it's fine, Obidog will clone the repository in a temporary folder (it requires you to have `git` in `PATH`).\n\n## Bindings generator\n\n### Introduction\n\nÖbEngine embeds scripting languages to allow the user to create games with more flexibility and safety (it only supports Lua as of today).\n\nEmbedding a scripting language inside a C++ application is not free though, as C++ lacks any kind of reflection capability, it requires the user to manually bind each function/class/enum/... to the scripting language's virtual machine.\n\nDoing such a task takes a lot of time, is error-prone and is really boring.\nThat's where Obidog comes into action : it will use Doxygen as a reflection tool (thanks to Doxygen's XML output) and automatically generates all the gluecode.\n\n### Usage\n\nJust run `obidog bindings` and it will generate all the ÖbEngine bindings into the `output/` folder.\nThe output will have the following structure :\n```\noutput/\n    include/\n        Bindings/\n            Namespace1/\n                ClassHuman.hpp\n            Namespace2/\n                ClassPerson.hpp\n            ...\n            NamespaceN/\n    src/\n        Bindings/\n            Namespace1/\n                ClassHuman.cpp\n            Namespace2/\n                ClassPerson.cpp\n            ...\n            NamespaceN/\n```\n\n### Flavours\n\nThe Obidog bindings generator currently supports two flavours\n- sol3 (wip)\n- kaguya (deprecated)\n\nNew flavours can be added easily in the `obidog/generators/bindings_flavours` folder.\nIt will maybe support the following flavours in the future when ÖbEngine is mature enough.\n- Wrenpp\n- GuraX\n- Chaiscript\n- pybind11\n\n## Documentation generator\n\n### Introduction\n\nÖbEngine C++ code is already documented using Doxygen's notation (documentation in comment).\n\nDoxygen parses these comments and generate a fully fledged documentation website from it.\n\nThis is really practical from the user's point of view as any user can explore the codebase quickly, check-out which function exists, what kind of types a function takes as parameters, get more information about what a function does and get examples on how to use it.\n\nAll of that is great, but there is a catch: if the user uses the scripting language, it is not C++ anymore and therefore, the user won't be able to use the C++ documentation anymore (not the same symbols / types).\n\nThat's where Obidog comes into action (again!), it will create try to generate a documentation for the target scripting language using the Doxygen XML and the generated bindings, translating symbols and types on the go to generate a coherant and nice looking documentation website.\n\n### Usage\n\nJust run `obidog documentation` and it will generate all the ÖbEngine documentation into the `docs/` folder.\n\n### Template customisation\n\n(WIP)\n\n## Extra informations\n\n*The project might be renamed to Obidog (Öbengine BIndings \u0026 DOcumentation Generator) so the logo could be a mix of Obi-wan Kenobi, an eggplant and a dog*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fobengine%2Fobidog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fobengine%2Fobidog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fobengine%2Fobidog/lists"}