Dependabot Core is a collection of helper classes for automating dependency updating in Ruby, JavaScript, Python, PHP, Elixir, Rust and Java. It can also update git submodules and Docker files. Highlights include:
- Logic to check for the latest version of a dependency that's resolvable given a project's other dependencies. That means tapping into the package manager's dependency resolution logic
- Logic to generate updated manifest and lockfiles for a new dependency version
- Logic to find changelogs, release notes, and commits for a dependency update
Dependabot Core is used by Dependabot.
To run Dependabot Core, you'll need Ruby, Python, PHP, Elixir, Node and Rust installed. The main library is written in Ruby, while JavaScript, Python, PHP, Elixir and Rust are required for dealing with updates for their respective languages.
Before running Dependabot Core, install dependencies for the core library and the helpers:
bundle install
cd helpers/yarn && yarn install && cd -
cd helpers/npm && yarn install && cd -
cd helpers/php && composer install && cd -
cd helpers/python && pip install -r requirements.txt && cd -
cd helpers/elixir && mix deps.get && cd -
Dependabot Core has helper classes for seven concerns. Where relevant, each concern will have a language-specific class.
Service | Description |
---|---|
Dependabot::FileFetchers |
Fetches the relevant dependency files for a project (e.g., the Gemfile and Gemfile.lock ). See the file fetchers for more details. |
Dependabot::FileParsers |
Parses a dependency file and extracts a list of dependencies for a project. See the file parsers for more details. |
Dependabot::UpdateCheckers |
Checks whether a given dependency is up-to-date. See the update checkers for more details. |
Dependabot::FileUpdaters |
Updates a dependency file to use the latest version of a given dependency. See the file updaters for more details. |
Dependabot::MetadataFinders |
Looks up metadata about a dependency, such as its GitHub URL. See the metadata finders for more details. |
Dependabot::PullRequestCreator |
Creates a Pull Request to the original repo with the updated dependency file. |
Dependabot::PullRequestUpdater |
Updates an existing Pull Request with new dependency files (e.g., to resolve conflicts). |
As the name suggests, Dependabot Core is the core of Dependabot (the rest of the app is pretty much just a UI and database). If we were paranoid about someone stealing our business then we'd be keeping it under lock and key.
Dependabot Core is public because we're more interested in it having an impact than we are in making a buck from it. We'd love you to use Dependabot, so that we can continue to develop it, but if you want to build and host your own version then this library should make doing so a lot easier.
If you use Dependabot Core then we'd love to hear what you build!
We have been unable to find a license that accurately fits Dependabot's needs (suggestions are welcome) so instead we offer the below permissions informally.
If you would like to use Dependabot Core for non-commerical purposes, such as to host a bot at your workplace, then we give you full permission to do so. In fact, we'd love you to, and will help and support you however we can.
If you would like to add Dependabot's functionality to your for-profit company's offering then we DO NOT give you permission to use Dependabot Core to do so. Please contact us directly to discuss a partnership or licensing arrangement.
Dependabot and Dependabot Core started life as Bump and Bump Core, back when Harry and Grey were working at GoCardless. We remain grateful for the help and support of GoCardless in helping make Dependabot possible - if you need to collect recurring payments from Europe, check them out.