Hell packet manager
Hell is simple, decentralized, project dependency manager with semver, cmake and git integration.
In opposition to other package or dependency managers designed to work on ready to use binaries or scripts hell was designed to be tool for compiled languages like C or C++ (but can be used for script languages also).
In case of compiled languages it's very important to have correctly compiled libraries and binaries, which fits best requirements - for example it matters if package was builded with Release or Debug target or with some optional features or without them. Sometimes compiler or ABI version are important and incorrect one may lead to issues which are hard to discover. Things are even more complicated if project have big dependency tree where some branches may have conflicting requirements with other. For more in many cases "System wide" packet installation is not good solution because if you are working on different projects at one time these projects may conflict on common dependency version or enabled in it features.
From other side things like git submodules may not help in case when single module is required by many submodules of our project. Things can be even more complicated if you project require cross-compilation.
So you need tool which allow to:
- resolve project dependency tree and inform in case of conflicts - it need to care about
- dependency version conflicts
- dependency required features conflicts
- download sources of dependencies when resolved
- build and install dependencies in correct order
Hell can do all of these tasks for you!
Additionally hell try to do so in very convenient and easy way:
- Hell use semantic versioning - using semver range expressions you can describe acceptable for your project dependencies versions. This is small thing but give huge advantage over git submodules.
- Hell use heavily git:
- use git tags and branches to detect software versions available to use
- use project repository to store all data required to resolve build and install dependencies there is no centralized database
- Hell use cmake to build and install software - today cmake is some kind of standard and every well managed project should support it.
- Hell is written in nodejs is multi-platform and works exactly the same on linux, mac os x, windows and many other operating systems.
- Hell is pretty fast - resolving dependency trees can be done in real time even on raspberry pi.
- Hell configuration file is easy to read and understand - no special magic.
- Hell is care about backward compatibility and new features are introduced only when not conflict with existing one.
- Hell have great, pretty and colorful, constantly improved command line interface.
Because of these unique features hell will save you a lot of time, nerves and improve daily work organization.