{"id":20382598,"url":"https://github.com/depermitto/headerpuller","last_synced_at":"2026-05-01T20:31:55.075Z","repository":{"id":221047633,"uuid":"753304041","full_name":"Depermitto/HeaderPuller","owner":"Depermitto","description":"Header-only package manager for C/C++ written in Go. Provides hassle-free (un)installation and simplicity in use.","archived":false,"fork":false,"pushed_at":"2024-11-28T17:26:43.000Z","size":70,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-04T08:57:13.128Z","etag":null,"topics":["c","cpp","cxx","go","golang-application","header-files","header-only","hpp","package-manager"],"latest_commit_sha":null,"homepage":"","language":"Go","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/Depermitto.png","metadata":{"files":{"readme":"readme.org","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":"2024-02-05T21:22:01.000Z","updated_at":"2025-04-13T22:08:42.000Z","dependencies_parsed_at":"2024-02-05T22:43:57.009Z","dependency_job_id":"7450676e-4f13-4a93-bd5e-0123b44d0389","html_url":"https://github.com/Depermitto/HeaderPuller","commit_stats":null,"previous_names":["depermitto/headerpuller"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/Depermitto/HeaderPuller","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Depermitto%2FHeaderPuller","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Depermitto%2FHeaderPuller/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Depermitto%2FHeaderPuller/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Depermitto%2FHeaderPuller/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Depermitto","download_url":"https://codeload.github.com/Depermitto/HeaderPuller/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Depermitto%2FHeaderPuller/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32512662,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"online","status_checked_at":"2026-05-01T02:00:05.856Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["c","cpp","cxx","go","golang-application","header-files","header-only","hpp","package-manager"],"created_at":"2024-11-15T02:18:14.463Z","updated_at":"2026-05-01T20:31:55.050Z","avatar_url":"https://github.com/Depermitto.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"#+title: Cross-platform header-only package manager for C/C++ (and more!)\n#+Author: Depermitto\n\n* Install\nProvided you have [[https://go.dev/][go]] installed, use this oneliner in the command-line (should work cross-platform, if not simply clone the repo and run ~go build~):\n#+begin_src bash\ngit clone https://github.com/Depermitto/HeaderPuller \u0026\u0026 go build -C ./HeaderPuller -o \"$(go env GOPATH)/bin/hp\" \u0026\u0026 rm -rf ./HeaderPuller/\n#+end_src\n\n* Capabilities\nUpon pulling a file, a *package log file* called *hp.yaml* shall be created. This is the core of the package managing functionality. Every *remove* or *pull* operation will modify the content of this file, to keep everything in check. Deleting /include/ folders without using *hp* commands and calling *sync* is _undefined behaviour_.\n\nFor any doubts, please refer to the ~help~ command of *hp*.\n\n** Pulling packages\nPull single/multi header libraries from git repositories. There are 3 variations of this command:\n- pull ~repo-link~ - providing the repo link will copy every valid file from ~repo-link/include~ to ~include~\n- pull ~repo-link~ ~file~ - will copy that exact file if valid from ~repo-link~ to ~include~\n- pull ~repo-link~ ~from~ - will copy every valid file from ~repo-link/from~ to ~from~, which is by default ~include~\n\n*** Example\nPull a fantastic random number generating single-header library written in C++ (the _https://_ part may be omitted):\n| hp pull [[https://github.com/Depermitto/randshow]] |\n\n#+begin_src bash\nworkspace\n+-- include\n|   +-- randshow.hpp\n+-- hp.yaml\n...\n#+end_src\n\n** Listing pulled packages\nList all installed packages along with their identifiers in *id*: *package name* format. _Ids_ correspond to order the packages have been added by and _names_ are git repository names stripped of the author.\n\n*** Example\n| hp list | \n\n#+begin_src bash\n0: randshow\n#+end_src\n\n** Removing packages\nRemoves files and folders of all header files encompassing a package. There are 3 variations of this command:\n- remove ~id~ - delete by id\n- remove ~name~ - remove by package name\n- remove ~repo-link~ - remove by repository link\n\nThe ids and packages names are provided by the ~list~ command.\n\n*** Example\n| hp rm 0 |\n\n#+begin_src bash\nworkspace\n+-- hp.yaml\n...\n#+end_src\n\n** Syncing\nThe ~sync~ command simply pulls every package in *hp.yaml* and overwrites overlapping content, effectively updating every package to the latest version.\n\n** Updating\nThe ~update~ command will automagically update the tool to the latest git commit.\n\n** Wiping hp from workspace\nThe ~wipe~ command removes all pulled packages and the *hp.yaml* file itself. Does not remove *hp* tool from the computer. For that functionality refer to ~uninstall~.\n\n** Uninstall\nUpon confirmation, wipes *hp* from the computer entirely\n\n* TODO Knows bugs\n- [X] Update README to the newest version of software\n- [X] Fix \u003crepo-link\u003e/\u003cheader\u003e pulling (e.g. [[https://github.com/mackron/miniaudio][miniaudio]])\n- [X] Implement wiping whole *hp.yaml*\n- [X] Fix ~sync~ command to ignore already downloaded packages\n- [X] Make it possible to ~wipe~ an empty /hp.yaml/\n- [X] Upgrade itself\n- [X] Clean up codebase\n- [ ] Add comments\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdepermitto%2Fheaderpuller","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdepermitto%2Fheaderpuller","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdepermitto%2Fheaderpuller/lists"}