pfultz2 / cget

C++ package retrieval

Home Page:http://cget.readthedocs.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Support for other version control systems.

larzw opened this issue · comments

Hi,

I like the syntactic sugar you have for packages from github. Would you accept a PR for something similar for bitbucket and gitlab? Maybe something like...

  • cget install jgm/cmark --github which would be the same as cget install jgm/cmark
  • cget install jgm/cmark --bitbucket
  • cget install jgm/cmark --gitlab

Let me know and I can take a peek at it.

I am thinking something like doing:

  • cget install gh/jgm/cmark for github
  • cget install bb/jgm/cmark for bitbucket
  • cget install gl/jgm/cmark for gitlab

This actually downloads the source tarballs, and doesn't actually use the version control directly. All these services above provide such tarball downloads, so its just a matter of mapping to that url, which happens here. It could be easily extended to support such formats.

@pfultz2,

Ok great! I like your syntax better. What are your thoughts on switching to a uri? For example,
cget install gh?user=jgm&repo=cmark or
cget install bb?user=jgm&repo=cmark&tag=1.0.0 or
cget install www.foo.com?user=jgm&repo=cmark&branch=bar

it's a bit more verbose, but potentially more general.

Also, do you want to keep,

cget install jgm/cmark defaulted to github? Otherwise it's a breaking change.

Thanks!

What are your thoughts on switching to a uri?

I think it will make it harder to have recipes override it. Also, the logic for checking if a dependency is installed would be more complicated as well.

Also, do you want to keep, cget install jgm/cmark defaulted to github?

Yes I do. Maybe in the future there could be a configuration to change the default. I also wonder if the names should drop the gh/, bb/, or gl/ in general. So then it would work like this:

cget install gl/owner/repo
cget list
owner/repo

That is the name of the package would drop the prefix. I am not sure, as maybe there could be conflicts(but could be resolved by using an alias).