araspik / dep Goto Github PK
View Code? Open in Web Editor NEWA generic dependency management library
License: MIT License
A generic dependency management library
License: MIT License
Features provide a critical extension which allows modification of how targets are installed. They can be used as a generic version of Gentoo's USE flags.
Features only have one requirement - an intersect function which can be used to attempt to combine two features. Intersection fails if the features cannot be combined - for example, combining true or false
with true
yields true
, but combining true
with false
fails. Note that features are a trait and can work however they want (in part because it's too complicated and rigid too add an implementation here).
Targets' dependencies (build-time and run-time) can have certain features required. During dependency map generation, the requirements on a single target from different reverse-dependencies are intersected, and if a failure occurs then the targets are effectively incompatible.
Target features cannot yet add new dependencies - that will be specified in a different issue.
Identifiers are used to identify one or more targets. They come in two variants:
HashMap
.Both are traits to be implemented by the user.
Note that unique identifiers do not have to be Clone
-able, and should be handled using Rc
. This may be changed whenever specialization comes along.
Also: seeing that unique identifiers form a subset of generic identifiers, one should be able to convert unique identifiers to generic ones. This allows installation, removal, and matching code to accept generic identifiers, but be usable with unique identifiers too. This could be enhanced with specialization.
Repositories are collections of targets. They provide a source for targets to look for dependencies, conflicts, etc. Dependency map algorithms will be written on repositories.
Repositories may work in different ways (becoming a trait), but must simply have a retriever function. This function takes a generic ID and produces some number of targets (none if the ID was not found), along with a priority for each target. Wrappers around this retriever provide different functionality - checking if an ID has matches, retrieving targets sorted by priority, etc.
Targets form the backbone of dep
: Single entities that can be installed and removed. They are what everything operates around.
Targets have a few properties that need to be set up properly:
pacman
.Note that dependencies will later include required features.
Cores provide necessary types and functions to dep
for using everywhere.
Cores provide identifier types, installation and removal functions (with their error type), an installed object type, etc.
Cores need the best documentation - it is everything that the user provides to dep
, and so needs to provide a great understanding of how to implement it.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.