Module: Dependabot::Linguist
- Defined in:
- lib/dependabot/linguist.rb,
lib/dependabot/linguist/version.rb,
lib/dependabot/linguist/repository.rb,
lib/dependabot/linguist/dependabot_file_validator.rb,
lib/dependabot/linguist/languages_to_ecosystems/main.rb,
lib/dependabot/linguist/languages_to_ecosystems/contexts.rb,
lib/dependabot/linguist/languages_to_ecosystems/contexts_applied.rb,
lib/dependabot/linguist/languages_to_ecosystems/manager_ecosystem_maps.rb
Overview
rubocop:disable Style/Documentation
Defined Under Namespace
Modules: ContextRule, PackageEcosystems, PackageManagers Classes: DependabotFileValidator, Repository
Constant Summary collapse
- VERSION =
"0.212.0"
- CONTEXT_RULES =
Now apply the list of context rules to add ‘PackageManagers::`’s to the LANGUAGE_TO_PACKAGE_MANAGER map.
{ PackageManagers::BUNDLER => {}, PackageManagers::CARGO => {}, PackageManagers::COMPOSER => {}, PackageManagers::DOCKER => {}, PackageManagers::HEX => {}, PackageManagers::ELM_PACKAGE => {}, PackageManagers::GIT_SUBMODULE => {}, PackageManagers::GITHUB_ACTIONS => {}, PackageManagers::GO_MODULES => {}, PackageManagers::GRADLE => {}, PackageManagers::MAVEN => {}, PackageManagers::NPM => {}, PackageManagers::NUGET => {}, PackageManagers::PIP => {}, PackageManagers::PIPENV => {}, PackageManagers::PIP_COMPILE => {}, PackageManagers::POETRY => {}, PackageManagers::PUB => {}, PackageManagers::TERRAFORM => {}, PackageManagers::YARN => {} }.freeze
- LANGUAGE_TO_PACKAGE_MANAGER =
LANGUAGE_TO_PACKAGE_MANAGER should map any language linguist can discover, according to the “languages detected by linguist” link at the top, to a corresponding GitHub dependabot package manager.
Any language listed below could be surfaced by being added to the file lib/dependabot/linguist/languages_to_patch.txt, so they should exist in this map.
languages.to_h { |name, _| [name, nil] }.tap do |this| # Now apply the context rules to "this" CONTEXT_RULES.each do |package_manager, context_map| context_map.each do |_context_rule, linguist_languages| linguist_languages.each do |linguist_language| if this[linguist_language].nil? this[linguist_language] = [package_manager] else this[linguist_language] |= [package_manager] end end end end end
- PACKAGE_ECOSYSTEM_TO_FILE_FETCHERS_REGISTRY_KEY =
PACKAGE_ECOSYSTEM_TO_FILE_FETCHERS_REGISTRY_KEY maps PackageEcosystems to our end goal of the keys used to collect the respective file fetcher classes that are registered via the “file_fetchers register function” so each mapping |K,V| element should have a comment linking to the place that its value was registered!
{ # https://github.com/dependabot/dependabot-core/blob/v0.212.0/bundler/lib/dependabot/bundler/file_fetcher.rb#L216 PackageEcosystems::BUNDLER => "bundler", # https://github.com/dependabot/dependabot-core/blob/v0.212.0/cargo/lib/dependabot/cargo/file_fetcher.rb#L295 PackageEcosystems::CARGO => "cargo", # https://github.com/dependabot/dependabot-core/blob/v0.212.0/composer/lib/dependabot/composer/file_fetcher.rb#L183 PackageEcosystems::COMPOSER => "composer", # https://github.com/dependabot/dependabot-core/blob/v0.212.0/docker/lib/dependabot/docker/file_fetcher.rb#L103 PackageEcosystems::DOCKER => "docker", # https://github.com/dependabot/dependabot-core/blob/v0.212.0/elm/lib/dependabot/elm/file_fetcher.rb#L46 PackageEcosystems::ELM => "elm", # https://github.com/dependabot/dependabot-core/blob/v0.212.0/github_actions/lib/dependabot/github_actions/file_fetcher.rb#L72-L73 PackageEcosystems::GITHUB_ACTIONS => "github_actions", # https://github.com/dependabot/dependabot-core/blob/v0.212.0/git_submodules/lib/dependabot/git_submodules/file_fetcher.rb#L84-L85 PackageEcosystems::GIT_SUBMODULE => "submodules", # https://github.com/dependabot/dependabot-core/blob/v0.212.0/go_modules/lib/dependabot/go_modules/file_fetcher.rb#L54-L55 PackageEcosystems::GOMOD => "go_modules", # https://github.com/dependabot/dependabot-core/blob/v0.212.0/gradle/lib/dependabot/gradle/file_fetcher.rb#L131 PackageEcosystems::GRADLE => "gradle", # https://github.com/dependabot/dependabot-core/blob/v0.212.0/maven/lib/dependabot/maven/file_fetcher.rb#L142 PackageEcosystems::MAVEN => "maven", # https://github.com/dependabot/dependabot-core/blob/v0.212.0/hex/lib/dependabot/hex/file_fetcher.rb#L98 PackageEcosystems::MIX => "hex", # https://github.com/dependabot/dependabot-core/blob/v0.212.0/npm_and_yarn/lib/dependabot/npm_and_yarn/file_fetcher.rb#L419-L420 PackageEcosystems::NPM => "npm_and_yarn", # https://github.com/dependabot/dependabot-core/blob/v0.212.0/nuget/lib/dependabot/nuget/file_fetcher.rb#L271 PackageEcosystems::NUGET => "nuget", # https://github.com/dependabot/dependabot-core/blob/v0.212.0/python/lib/dependabot/python/file_fetcher.rb#L409 PackageEcosystems::PIP => "pip", # https://github.com/dependabot/dependabot-core/blob/v0.212.0/pub/lib/dependabot/pub/file_fetcher.rb#L46 PackageEcosystems::PUB => "pub", # https://github.com/dependabot/dependabot-core/blob/v0.212.0/terraform/lib/dependabot/terraform/file_fetcher.rb#L90-L91 PackageEcosystems::TERRAFORM => "terraform" }.freeze
- PACKAGE_MANAGER_TO_PACKAGE_ECOSYSTEM =
PACKAGE_MANAGER_TO_PACKAGE_ECOSYSTEM maps PackageManagers to the PackageEcosystems, according to “#package-ecosystem”
{ PackageManagers::BUNDLER => PackageEcosystems::BUNDLER, PackageManagers::CARGO => PackageEcosystems::CARGO, PackageManagers::COMPOSER => PackageEcosystems::COMPOSER, PackageManagers::DOCKER => PackageEcosystems::DOCKER, PackageManagers::HEX => PackageEcosystems::MIX, PackageManagers::ELM_PACKAGE => PackageEcosystems::ELM, PackageManagers::GIT_SUBMODULE => PackageEcosystems::GIT_SUBMODULE, PackageManagers::GITHUB_ACTIONS => PackageEcosystems::GITHUB_ACTIONS, PackageManagers::GO_MODULES => PackageEcosystems::GOMOD, PackageManagers::GRADLE => PackageEcosystems::GRADLE, PackageManagers::MAVEN => PackageEcosystems::MAVEN, PackageManagers::NPM => PackageEcosystems::NPM, PackageManagers::NUGET => PackageEcosystems::NUGET, PackageManagers::PIP => PackageEcosystems::PIP, PackageManagers::PIPENV => PackageEcosystems::PIP, PackageManagers::PIP_COMPILE => PackageEcosystems::PIP, PackageManagers::POETRY => PackageEcosystems::PIP, PackageManagers::PUB => PackageEcosystems::PUB, PackageManagers::TERRAFORM => PackageEcosystems::TERRAFORM, PackageManagers::YARN => PackageEcosystems::NPM }.freeze
Class Method Summary collapse
-
.linguist_languages_to_package_managers(languages) ⇒ Object
Returns the set of package managers mapped to in LANGUAGE_TO_PACKAGE_MANAGER.
-
.package_ecosystems_to_file_fetcher_registry_keys(package_ecosystems) ⇒ Object
Returns the set of file fetcher registry keys mapped to in PACKAGE_ECOSYSTEM_TO_FILE_FETCHERS_REGISTRY_KEY.
-
.package_managers_to_package_ecosystems(package_managers) ⇒ Object
Returns the set of package ecosystems mapped to in PACKAGE_MANAGER_TO_PACKAGE_ECOSYSTEM.
Class Method Details
.linguist_languages_to_package_managers(languages) ⇒ Object
Returns the set of package managers mapped to in LANGUAGE_TO_PACKAGE_MANAGER
17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/dependabot/linguist/languages_to_ecosystems/main.rb', line 17 def self.linguist_languages_to_package_managers(languages) package_managers = [] languages.each do |language| unless LANGUAGE_TO_PACKAGE_MANAGER[language].nil? if LANGUAGE_TO_PACKAGE_MANAGER[language].is_a?(Array) package_managers |= LANGUAGE_TO_PACKAGE_MANAGER[language] else package_managers |= [LANGUAGE_TO_PACKAGE_MANAGER[language]] end end end package_managers end |
.package_ecosystems_to_file_fetcher_registry_keys(package_ecosystems) ⇒ Object
Returns the set of file fetcher registry keys mapped to in PACKAGE_ECOSYSTEM_TO_FILE_FETCHERS_REGISTRY_KEY
45 46 47 48 49 50 51 52 53 |
# File 'lib/dependabot/linguist/languages_to_ecosystems/main.rb', line 45 def self.package_ecosystems_to_file_fetcher_registry_keys(package_ecosystems) file_fetcher_registry_keys = [] package_ecosystems.each do |package_ecosystem| unless PACKAGE_ECOSYSTEM_TO_FILE_FETCHERS_REGISTRY_KEY[package_ecosystem].nil? file_fetcher_registry_keys |= [PACKAGE_ECOSYSTEM_TO_FILE_FETCHERS_REGISTRY_KEY[package_ecosystem]] end end file_fetcher_registry_keys end |
.package_managers_to_package_ecosystems(package_managers) ⇒ Object
Returns the set of package ecosystems mapped to in PACKAGE_MANAGER_TO_PACKAGE_ECOSYSTEM
33 34 35 36 37 38 39 40 41 |
# File 'lib/dependabot/linguist/languages_to_ecosystems/main.rb', line 33 def self.package_managers_to_package_ecosystems(package_managers) package_ecosystems = [] package_managers.each do |package_manager| unless PACKAGE_MANAGER_TO_PACKAGE_ECOSYSTEM[package_manager].nil? package_ecosystems |= [PACKAGE_MANAGER_TO_PACKAGE_ECOSYSTEM[package_manager]] end end package_ecosystems end |