class Dependabot::Elm::FileParser
Constants
- DEPENDENCY_TYPES
Public Instance Methods
parse()
click to toggle source
# File lib/dependabot/elm/file_parser.rb, line 16 def parse dependency_set = DependencySet.new dependency_set += elm_json_dependencies if elm_json dependency_set.dependencies.sort_by(&:name) end
Private Instance Methods
build_elm_json_dependency(name:, group:, requirement:, direct:)
click to toggle source
# File lib/dependabot/elm/file_parser.rb, line 58 def build_elm_json_dependency(name:, group:, requirement:, direct:) requirements = [{ requirement: requirement, groups: [group], source: nil, file: "elm.json" }] Dependency.new( name: name, version: version_for(requirement)&.to_s, requirements: direct ? requirements : [], package_manager: "elm" ) end
check_required_files()
click to toggle source
# File lib/dependabot/elm/file_parser.rb, line 78 def check_required_files return if elm_json raise "No elm.json" end
elm_json()
click to toggle source
# File lib/dependabot/elm/file_parser.rb, line 98 def elm_json @elm_json ||= get_original_file("elm.json") end
elm_json_dependencies()
click to toggle source
For docs on elm.json, see: github.com/elm/compiler/blob/master/docs/elm.json/application.md github.com/elm/compiler/blob/master/docs/elm.json/package.md
# File lib/dependabot/elm/file_parser.rb, line 29 def elm_json_dependencies dependency_set = DependencySet.new DEPENDENCY_TYPES.each do |dep_type| if repo_type == "application" dependencies_hash = parsed_elm_json.fetch(dep_type, {}) dependencies_hash.fetch("direct", {}).each do |name, req| dependency_set << build_elm_json_dependency( name: name, group: dep_type, requirement: req, direct: true ) end dependencies_hash.fetch("indirect", {}).each do |name, req| dependency_set << build_elm_json_dependency( name: name, group: dep_type, requirement: req, direct: false ) end elsif repo_type == "package" parsed_elm_json.fetch(dep_type, {}).each do |name, req| dependency_set << build_elm_json_dependency( name: name, group: dep_type, requirement: req, direct: true ) end else raise "Unexpected repo type for Elm repo: #{repo_type}" end end dependency_set end
parsed_elm_json()
click to toggle source
# File lib/dependabot/elm/file_parser.rb, line 92 def parsed_elm_json @parsed_elm_json ||= JSON.parse(elm_json.content) rescue JSON::ParserError raise Dependabot::DependencyFileNotParseable, elm_json.path end
repo_type()
click to toggle source
# File lib/dependabot/elm/file_parser.rb, line 74 def repo_type parsed_elm_json.fetch("type") end
version_for(version_requirement)
click to toggle source
# File lib/dependabot/elm/file_parser.rb, line 84 def version_for(version_requirement) req = Dependabot::Elm::Requirement.new(version_requirement) return unless req.exact? req.requirements.first.last end