deps-rs / deps.rs

Keep your dependencies up-to-date
https://deps.rs
Apache License 2.0
427 stars 26 forks source link

Support for private git servers / self-hosting. #84

Open baoyachi opened 3 years ago

baoyachi commented 3 years ago

I want to add svg image in my private repository? Support?

sezna commented 3 years ago

I'd also like to know -- it's a great crate and I'd love to use it in my company's READMEs, but they are internal.

robjtede commented 3 years ago

Some ideas have come up recently about enabling self hosting of a deps.rs instance with configuration for internal code hosting URLs and authentication.

Feliix42 commented 3 years ago

The interesting question would be: How do we fetch the Cargo.toml file? For the hosters currently implemented we use their raw-file URLs to avoid ending up cloning lots of data. I just looked at how Gitea and Gogs do this and they both have different URLs, with Gogs being similar to Gitlab. We could in principle implement the this for the most common self-hosted solutions, but I don't know if we want to maintain this long-term. Also, linking to a self-hosted repo would then always require to specify the software hosting the repo.

lcmgh commented 2 years ago

Maybe a bit cumbersome but how about a Cargo.toml reading API that is utilized through a GitHub Action which creates the actual badge file. For the latter and commiting it into a badge branch https://github.com/marketplace/actions/badge-action can be used

Feliix42 commented 2 years ago

Thanks for your suggestion! 🚀 I just want to make sure I understand this correctly: So you mean that the repository in question would trigger a Github Action flow that calls deps.rs via an API that somehow submits the Cargo.toml file as parameter and then creates the badge?

Theoretically The general concept sounds like a cool idea! But a potential problem there is that the information displayed on the badge itself would be outdated at some point. If the project is no longer updated, the badge will in a few months still say "up to date", which is not true and will therefore somehow miss the purpose of the project.

Also, that solution would only work for private Github repositories, but not for your own git servers. So that approach might still require a step or two to become a workable solution 🤔

gitmalong commented 2 years ago

How about that:

1) Provide a deps.rs executable via Docker that takes Cargo.toml files as input and then generates a deps.rs page. By including a tiny bit of javascript the site can tell if the overall report is up to date. 2) GitHub action to feed the Docker container with Cargo.toml files and to commit the generated website to the repo. Ideally only the json report is being commited in case the page is already there. 3) The generated website is published via GitHub pages.

That way end users can run the action once a day to get accurate reports. If the website is not being refreshed there should be a overall warning next to the outdated projects.