{"id":25467695,"url":"https://github.com/khalidbelk/puml2xml","last_synced_at":"2025-11-04T06:30:23.816Z","repository":{"id":277908915,"uuid":"931975881","full_name":"khalidbelk/puml2xml","owner":"khalidbelk","description":"A PlantUML to XML converter","archived":false,"fork":false,"pushed_at":"2025-02-16T22:58:00.000Z","size":34,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-16T23:26:20.785Z","etag":null,"topics":["automation","converter","document","ocaml","plantuml","uml","xml"],"latest_commit_sha":null,"homepage":"","language":"OCaml","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/khalidbelk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-13T06:49:57.000Z","updated_at":"2025-02-16T22:58:04.000Z","dependencies_parsed_at":"2025-02-16T23:36:33.509Z","dependency_job_id":null,"html_url":"https://github.com/khalidbelk/puml2xml","commit_stats":null,"previous_names":["khalidbelk/puml2xml"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khalidbelk%2Fpuml2xml","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khalidbelk%2Fpuml2xml/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khalidbelk%2Fpuml2xml/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khalidbelk%2Fpuml2xml/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/khalidbelk","download_url":"https://codeload.github.com/khalidbelk/puml2xml/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239425578,"owners_count":19636382,"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":["automation","converter","document","ocaml","plantuml","uml","xml"],"created_at":"2025-02-18T07:22:02.218Z","updated_at":"2025-11-04T06:30:23.755Z","avatar_url":"https://github.com/khalidbelk.png","language":"OCaml","funding_links":[],"categories":["Recently Updated","Developer Tools"],"sub_categories":["[Python chapter of Fedora Defensive Coding Guide](https://docs.fedoraproject.org/en-US/defensive-coding/programming-languages/Python/)"],"readme":"# Puml2xml 🌱➡️📄\n\n\u003cdiv align=\"center\"\u003e\n    \u003ca href=\"https://github.com/khalidbelk/puml2xml/actions/workflows/build-ubuntu.yml\"\u003e\n        \u003cimg src=\"https://github.com/khalidbelk/puml2xml/actions/workflows/build-ubuntu.yml/badge.svg?branch=main\" alt=\"ubuntu-latest\"\u003e\u003c/a\u003e\n      \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;  \u003c!-- Spaces --\u003e\n  \u003ca href=\"https://github.com/khalidbelk/puml2xml/actions/workflows/build-macos.yml\"\u003e\n    \u003cimg src=\"https://github.com/khalidbelk/puml2xml/actions/workflows/build-macos.yml/badge.svg?branch=main\" alt=\"macOS-latest\"\u003e\u003c/a\u003e\n    \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;  \u003c!-- Spaces --\u003e\n  \u003ca href=\"https://github.com/khalidbelk/puml2xml/actions/workflows/docker-build.yml\"\u003e\n    \u003cimg src=\"https://github.com/khalidbelk/puml2xml/actions/workflows/docker-build.yml/badge.svg?branch=main\" alt=\"Docker Build\"\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\n\u003cbr\u003e\n\nA **PlantUML** (.puml) to **XML** (.xmi) converter.\n\n### Prerequisites\n\nBefore starting, If you want to run it locally, ensure you have the following dependencies installed, otherwise **you'll just need Docker**, and can ignore this :\n\n- **dune** (v**3.16** or higher)\n- **OCaml** (v**4.08.0** or higher)\n- **make**\n\n## Installation\n\n**Steps**\n\n1. Clone this repository and open it\n\n### Local install\n\n2. Compile the program with the command\n\n```\nmake\n```\n\n### Docker 🐳\n\n2. Build the image with the command\n\n```\ndocker build -t puml2xml .\n```\n\n3.  Run the container\n\n```\ndocker run --rm -v $(pwd):/data/input puml2xml ./puml2xml /data/input/\u003cyourfile.puml\u003e\n```\n\n\u003e Note: for this last command, you'll just have to replace \u003cyourfile.puml\u003e by the .puml file you want to convert (located in your current directory).\n\n\n## Usage\n\nYou can use it as specified here :\n\n```\nUSAGE: ./puml2xml \u003cfile\u003e [OPTIONS]\n\n   \u003cfile\u003e          : the relative path of the .puml file to convert\n\nOPTIONS:\n   -f \u003cnew_name\u003e   : specify the output file name. Default: same as input with .xmi extension.\n   -h              : display this message\n```\n\n### Why and how was this project created ?\n\nThis project was born from my experience working on a university project, where we were required to create PlantUML diagrams and also deliver them in XML format. Logically, I thought \"It shouldn't be that hard to find a PlantUML tool that does this\". After searching for a while, I encountered an issue : either finding a solution was quite tedious for such a simple problem, or many users found issues with the tools provided by PlantUml.\n\nAfter more digging, I finally found a Docker command line provided somewhere by PlantUML, which, by chance, worked for me. However, as a result, I wanted a more accessible, native tool, primarily to save others the hassle of facing the same situation as me in the future (and also as an excuse for myself to make a project in **OCaml** ^^).\n\nThis project was made possible by **reverse-engineering the given output**. For reference, you can find the .xmi output file [here](/diagrams/diagram.xml) and the .puml file I used [here](/diagrams/diagram.puml).\n\n### Contributions 📥\n\nTo contribute, fork this repository and open a pull request describing the fix or feature you're adding. Please ensure that your commits follow the [conventional commit](https://www.conventionalcommits.org/en/v1.0.0/) format.\n\n### License\n\nThis project is licensed under the Apache 2.0 License - see the [LICENSE](/LICENSE) file for details.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkhalidbelk%2Fpuml2xml","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkhalidbelk%2Fpuml2xml","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkhalidbelk%2Fpuml2xml/lists"}