File parsers take a set of dependency files and extract a list of dependencies for the project.
There is a Dependabot::FileParsers
class for each language Dependabot
supports.
Each Dependabot::FileParsers
class implements the following methods:
Method | Description |
---|---|
#parse |
Returns an array of Dependabot::Dependency instances, representing the dependencies for the project. Each Dependabot::Dependency has a name , version and a requirements array |
An integration might look as follows:
require 'dependabot/file_parsers'
files = fetcher.files
parser_class = Dependabot::FileParsers::Ruby::Bundler
source = Dependabot::Source.new(provider: 'github', repo: "gocardless/business")
parser = parser_class.new(dependency_files: files, source: source)
dependencies = parser.parse
puts "Found the following dependencies: #{dependencies.map(&:name)}"
All new file parsers should inherit from Dependabot::FileParsers::Base
and
implement the following methods:
Method | Description |
---|---|
#parse |
See Public API section. |
#check_required_files |
Raise a runtime error unless an appropriate set of files is provided. Private. |
To ensure the above are implemented, you should include
it_behaves_like "a dependency file parser"
in your specs for the new file
parser.