{"id":15750642,"url":"https://github.com/zheng-bote/header_docu_cpp","last_synced_at":"2025-03-31T07:20:51.638Z","repository":{"id":151863967,"uuid":"619099686","full_name":"Zheng-Bote/header_docu_cpp","owner":"Zheng-Bote","description":"header_docu with plain cpp ","archived":false,"fork":false,"pushed_at":"2023-04-06T16:09:43.000Z","size":53,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-24T10:49:09.016Z","etag":null,"topics":["cpp","cpp20","parser"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Zheng-Bote.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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":"2023-03-26T09:12:42.000Z","updated_at":"2023-03-31T17:53:45.000Z","dependencies_parsed_at":"2023-05-12T23:15:29.094Z","dependency_job_id":null,"html_url":"https://github.com/Zheng-Bote/header_docu_cpp","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/Zheng-Bote%2Fheader_docu_cpp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Zheng-Bote%2Fheader_docu_cpp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Zheng-Bote%2Fheader_docu_cpp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Zheng-Bote%2Fheader_docu_cpp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Zheng-Bote","download_url":"https://codeload.github.com/Zheng-Bote/header_docu_cpp/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246429440,"owners_count":20775809,"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":["cpp","cpp20","parser"],"created_at":"2024-10-04T06:41:35.196Z","updated_at":"2025-03-31T07:20:51.617Z","avatar_url":"https://github.com/Zheng-Bote.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv id=\"top\"\u003e\u003c/div\u003e\n\u003cbr /\u003e\n\u003cdiv align=\"center\"\u003e\n\u003ch3 align=\"center\"\u003eheader_docu_cpp\u003c/h3\u003e\n\n  \u003cp align=\"center\"\u003e\n      Create documentation from file header\n      \u003cbr/\u003e\n      (focussed on older libraries which didn't use the docs-as-code approach)\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://github.com/Zheng-Bote/header_docu_cpp/issues\"\u003eReport Bug\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/Zheng-Bote/header_docu_cpp/issues\"\u003eRequest Feature\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n\u003c!-- TABLE OF CONTENTS --\u003e\n\u003cdetails\u003e\n  \u003csummary\u003eTable of Contents\u003c/summary\u003e\n  \u003col\u003e\n    \u003cli\u003e\n      \u003ca href=\"#about-the-project\"\u003eAbout The Project\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#built-with\"\u003eBuilt With\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      \u003ca href=\"#getting-started\"\u003eGetting Started\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#prerequisites\"\u003ePrerequisites\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#usage\"\u003eUsage\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#roadmap\"\u003eRoadmap\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#contributing\"\u003eContributing\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#license\"\u003eLicense\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#contact\"\u003eContact\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#acknowledgments\"\u003eAcknowledgments\u003c/a\u003e\u003c/li\u003e\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n\u003c!-- ABOUT THE PROJECT --\u003e\n\n### Create documentation from file header (e.g. \\*.c[pp], \\*.h[pp], ...)\n\nWith great respect to Doxygen, JSDoc or DoxDox, but they all reading / parsing the complete textfile.\n\n**For me I just need parsing the first comment block of a single textfile or every textfile with a defined file-extension in a folder, doesn't matter if \\*.js, \\*.h, \\*.hpp or whatever**\n\n_scanned / collected Meta data:_\n\n-   TITLE\n-   BRIEF\n-   DESC\n-   AUTHOR\n-   LICENSE\n-   VERSION\n-   COPYRIGHT\n-   SOURCE\n-   COMMENT\n-   SYNTAX\n-   HISTORY\n-   DEPENDENCIES\n-   FILE_PERM       (file permssions)\n-   LAST_MODIFIED   (file last modified)\n-   SIZE            (file size in bytes)\n-   SHA256          (SHA2-256 filehash)\n\nSo, this tool is focussed on older libraries which doesn't use the docs-as-code approach.\n\n### built with\n\nThis is yet another version of the commandline tool, written in plain C++20.\n\nThere's another version, written in QT5 with C++17 : \u003ca href=\"https://github.com/Zheng-Bote/header_docu\" alt=\"header_docu QT\" title=\"https://github.com/Zheng-Bote/header_docu\"\u003eheader_docu QT5 C++17\u003c/a\u003e\n\n### docs-as-code approach:\n\nsee:\n\n-   \u003ca href=\"https://docs-as-co.de/\" alt=\"docs-as-code\" title=\"https://docs-as-co.de/\"\u003edocs-as-code\u003c/a\u003e\n-   \u003ca href=\"https://doctoolchain.org/docToolchain\" alt=\"docToolchain\" title=\"https://doctoolchain.org/docToolchain\"\u003edocToolchain (user site)\u003c/a\u003e\n-   \u003ca href=\"https://github.com/doctoolchain/doctoolchain/\" alt=\"docToolchain dev\" title=\"https://github.com/doctoolchain/doctoolchain/\"\u003edocToolchain (Github)\u003c/a\u003e\n\n\u003c!-- GETTING STARTED --\u003e\n\n## Getting Started\n\n### Prerequisites\n\n-   PC or Laptop with Windows, MacOS or Linux \\*\\_^\n-   installed C++ compiler like g++ or clang++ with C++20 support\n-   developer tools with make\n\n#### DEPENDENCIES:\n\n_cxxopts_\n\na lightweight C++ option parser library, supporting the standard GNU style syntax for options.\nhttps://github.com/jarro2783/cxxopts\n\n_OpenSSL_\n\nOpenSSL (Library tested: OpenSSL 3.0.2 15 Mar 2022; Linux: openssl-dev) is needed for creating SHA2-256Bit Hashes for strings and files.\n\n### Installation\n\n1. Clone the repo\n    ```sh\n    git clone https://github.com/Zheng-Bote/header_docu_cpp/.git\n    ```\n2. install\n    - not yet implemented\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n### configuration and build\n\n#### MacOS\n\n1. rename Makefile_macos to Makefile\n2. rename src/rz_files.h_macos to src/rz_files.h\n3. rename src/rz_files.cpp_macos to src/rz_files.cpp\n4. rename src/rz_crypto.h_macos to src/rz_crypto.h\n5. rename src/rz_crypto.cpp_macos to src/rz_crypto.cpp\n\n#### Linux\n\n1. due to main target, nothing special\n\n\n### all OS\n\n4. configure the Makefile to your environment\n    - g++ or clang++\n    - configure the Makefile var FLAGS to DEBUG_FLAGS or RELEASE_FLAGS\n5. build\n    - within the main dir of the project, execute on the commandline `make`\n\n*hint:*\n\nIn case of linker error, check the syntaxt and change in-/output file _BEFORE_ the Include (-I) and Lib (-L).\n\n_Example with g++_\n\n`g++ -std=c++20 -o bin/start obj/start.o obj/rz_files.o obj/rz_datetime.o obj/rz_filesystem.o obj/rz_crypt.o -I/usr/include/openssl/ -L/usr/lib/ssl -lcrypto -g3 -O0 -Wall -Wextra -Wpedantic -Wshadow -Wconversion\n`\n\n_see also:_ ```do_build.sh``` (for Linux g++) \n\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## Usage\n\n### SYNTAX:\n\n```\nheader_docu_cpp -h | header_docu_cpp --help\n\n    -d, --dir arg     parse directory (default: .)\n\n    -e, --ext arg     file extension (default: .h)\n\n    -f, --file arg    1 single textfile: path/file\n\n    -o, --out arg     output type: md | html | json | csv | adoc (default: \n                    html)\n\n    -s, --single arg  single output files: yes | no (default: yes)\n\n    -t, --target arg  target output dir (default: ./header_docu_cpp/)\n\n    -h, --help        Print usage\n\n    -v, --version     Version\n```\n\n#### EXAMPLES:\n\n```\n/usr/local/bin/header_docu_cpp --dir /volume2/Dev/Cpp/header_docu --ext .h --out md --single yes --target /volume2/Dev/Cpp/header_docu/wiki\n\nbin/header_docu_cpp -d /volume2/Dev/Cpp/header_docu -e .h -o md -s yes -t /volume2/Dev/Cpp/header_docu/wiki\n\n// read/parse all \\*.h files in the given directory and store the results in one Github markdown file in the wiki-subfolder\n```\n\n```\n/usr/local/bin/header_docu_cpp --file ~/DEV/CPP/header_docu/main.cpp --out html\n// read/parse single file and output as HTML5\n```\n\n*default:*\n```\n/usr/local/bin/header_docu_cpp -d . -e .h -o json -s yes -t ./header_docu_cpp\n```\n\n### RETURN:\n\n     2023-04-03 18:22:57 : 5 .cpp Files in folder ./src found. Output stored with format md in folder ./header_docu_cpp\n     \n     exit(0)\n\n### HISTORY:\n\n\u003e | Version | Date       | Developer | Comments                           |\n\u003e | ------- | ---------- | --------- | ---------------------------------- |\n\u003e | 0.1.0   | 2023-03-25 | RZheng    | created                            |\n\u003e | 0.2.0   | 2023-03-31 | RZheng    | file permission added              |\n\u003e | 0.2.0   | 2023-03-31 | RZheng    | SHA2-256 filehash added            |\n\u003e | 0.3.0   | 2023-04-02 | RZheng    | separated to MacOS                 |\n\u003e | 0.4.0   | 2023-04-02 | RZheng    | Linux threads added to multiple file output |\n\u003e | 0.5.0   | 2023-04-06 | RZheng    | Linux threads removed (SBOM topic) |\n\n\u003c!-- ROADMAP --\u003e\n\n## Roadmap:\n\n-   [x] quick and dirty commandline parser (see QT5 C++17)\n\n-   [x] migrate QT commandline to vanilla cxx (this one, C++20 ongoing)\n\n-   [x] create optional md file[s]\n\n-   [x] create optional Github md file[s]\n\n-   [x] create optional ASCIIdoc (adoc) file[s]\n\n-   [x] create optional JSON file[s]\n\n-   [x] create optional csv file[s]\n\n-   [x] create optional HTML5 file[s]\n\n-   [x] get SHA2-256 filehash\n\n-   [x] file last modified time\n\n-   [x] file permissions\n\n-   [x] save output results in separared file[s] or in one file\n\n-   [ ] performance improvements for single outfiles (threaded)\n\n-   [ ] create optional SBOM (spdx) json file[s]\n\n-   [ ] upload optional SBOM (spdx) json to RDBMS\n\n-   [ ] build Linux and Windows desktop app with QT\n\n-   [ ] build Windows desktop app with C#\n\n-   [ ] make support for installation\n\n-   [ ] CMake support for compilation and installation\n\nMaybe a Kanban board will be established (soon)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- CONTRIBUTING --\u003e\n\n## Contributing\n\nContributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.\n\nIf you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag \"enhancement\".\nDon't forget to give the project a star! Thanks again!\n\n1. Fork the Project\n2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the Branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- LICENSE --\u003e\n\n## License\n\nDistributed under the MIT License. See `LICENSE.txt` for more information.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- CONTACT --\u003e\n\n## Contact\n\nZHENG Robert Zhèng Bó Tè 郑 伯特\n\nProject Link: [https://github.com/Zheng-Bote/https://github.com/Zheng-Bote/header_docu_cpp/](https://github.com/Zheng-Bote/header_docu_cpp/)\n\n:vulcan_salute:\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzheng-bote%2Fheader_docu_cpp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzheng-bote%2Fheader_docu_cpp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzheng-bote%2Fheader_docu_cpp/lists"}