Open heyLu opened 9 years ago
@heyLu I'm on it! I'll update https://github.com/pixie-lang/dust/pull/12 with some multi-methods and github/local files - new PR's for other providers so it doesn't get too large.
@kgann Can you do all of that in a separate PR? Or even multiple PRs, depending on how big it gets?
@heyLu Yes, no problem.
I'm starting to think we will run into issues with cyclic and/or duplicate dependencies.
Consider 2 dependencies required for a project (perhaps through sub-dependencies):
[heyLy/hiccup "0.1.0"]
["git://git.github.org/heyLu/hiccup.git" :type "git"]
What do we do in this case? If we download both and place them in different paths and try to put both on the --load-path
we will have some issues, right? Especially if they are conflicting versions.
What about requiring the names be present?
[heyLy/hiccup "0.1.0"]
[heyLy/hiccup "git://git.github.org/heyLu/hiccup.git" :type "git"]
[heyLu/hiccup "../my/local/hiccup" :type "file"]
This would allow us to detect cyclic dependencies as well as duplicates and abort/ignore. This is not 100% as someone could just change the name and have the duplicate dependency fetched.
Thoughts?
FYI I ported clojure "dependency" lib to pixie, this could help making this happen: https://github.com/mpenet/dependency
As mentioned previously (here and here, we want to be able to fetch dependencies from places other than GitHub.
I think we should support the following:
[user/repo "version"]
for GitHub and BitBucket (GitHub being the default)["git://git.papill0n.org/awesome.git" :type "git"]
and["http://hg.papill0n.org/also-awesome" :type "hg"]
to support git, hg and possibly others directly, on any server["http://files.papill0n.org/awesome-1.0.0.tar.gz" :type "tar"]
["../awesome" :type "file"]
for local dependencies, resolved relative to the project root directory@kgann has suggested using multi-methods for this, seems like a good idea to me!
If you want to work on this, please say so here!