Requirement classes should define their own dependencies
GemRequirement
depends on executable gem
.
PipRequirement
depends on Python package pip
.
etc.
These classes should fail early if their dependencies are missing, with an appropriate error message.
It would be useful to start putting these dependencies in a REQUIREMENTS
attribute, so it is similar with bears, and we're dog fooding declarative descriptions of dependencies.
Then we can add an (ideally recursive) algorithm to resolve the dependencies (which is #33), and that same algorithm could be used by coala
to check the bears dependencies.
This is blocked by at least a multiplexer (#27 (closed)) with fallbacks (!19 (merged)) and ideally one Windows package manager like #29, #30 or #31 . This is because most language runtime package managers, e.g. npm
, will need to declare that they can be installed with DistributionRequirement
for Unix, OR with a Windows package manager, OR will be OK if the executable exists.