dependabot-core 0.76.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/CHANGELOG.md +6408 -0
- data/LICENSE +37 -0
- data/README.md +115 -0
- data/helpers/elixir/bin/check_update.exs +92 -0
- data/helpers/elixir/bin/do_update.exs +39 -0
- data/helpers/elixir/bin/parse_deps.exs +103 -0
- data/helpers/elixir/bin/run.exs +76 -0
- data/helpers/elixir/mix.exs +21 -0
- data/helpers/elixir/mix.lock +3 -0
- data/helpers/go/Makefile +9 -0
- data/helpers/go/go.mod +9 -0
- data/helpers/go/go.sum +5 -0
- data/helpers/go/importresolver/main.go +34 -0
- data/helpers/go/main.go +77 -0
- data/helpers/go/updatechecker/main.go +107 -0
- data/helpers/go/updater/go.mod +3 -0
- data/helpers/go/updater/go.sum +2 -0
- data/helpers/go/updater/helpers.go +57 -0
- data/helpers/go/updater/main.go +48 -0
- data/helpers/npm/.agignore +1 -0
- data/helpers/npm/.envrc +2 -0
- data/helpers/npm/.eslintrc +14 -0
- data/helpers/npm/.nvimrc +7 -0
- data/helpers/npm/bin/run.js +34 -0
- data/helpers/npm/lib/helpers.js +25 -0
- data/helpers/npm/lib/peer-dependency-checker.js +102 -0
- data/helpers/npm/lib/subdependency-updater.js +48 -0
- data/helpers/npm/lib/updater.js +95 -0
- data/helpers/npm/package.json +17 -0
- data/helpers/npm/test/fixtures/npm-left-pad.json +1 -0
- data/helpers/npm/test/fixtures/updater/original/package-lock.json +16 -0
- data/helpers/npm/test/fixtures/updater/original/package.json +9 -0
- data/helpers/npm/test/fixtures/updater/updated/package-lock.json +16 -0
- data/helpers/npm/test/helpers.js +7 -0
- data/helpers/npm/test/updater.test.js +50 -0
- data/helpers/npm/yarn.lock +6120 -0
- data/helpers/php/.php_cs +34 -0
- data/helpers/php/bin/run.php +57 -0
- data/helpers/php/composer.json +14 -0
- data/helpers/php/composer.lock +1521 -0
- data/helpers/php/composer.phar +0 -0
- data/helpers/php/setup.sh +4 -0
- data/helpers/php/src/DependabotInstallationManager.php +61 -0
- data/helpers/php/src/DependabotPluginManager.php +23 -0
- data/helpers/php/src/ExceptionIO.php +25 -0
- data/helpers/php/src/Hasher.php +21 -0
- data/helpers/php/src/UpdateChecker.php +123 -0
- data/helpers/php/src/Updater.php +97 -0
- data/helpers/python/lib/__init__.py +0 -0
- data/helpers/python/lib/hasher.py +23 -0
- data/helpers/python/lib/parser.py +130 -0
- data/helpers/python/requirements.txt +9 -0
- data/helpers/python/run.py +18 -0
- data/helpers/test/run.rb +15 -0
- data/helpers/utils/git-credential-store-immutable +10 -0
- data/helpers/yarn/.agignore +1 -0
- data/helpers/yarn/.envrc +2 -0
- data/helpers/yarn/.eslintrc +14 -0
- data/helpers/yarn/.nvimrc +7 -0
- data/helpers/yarn/bin/run.js +36 -0
- data/helpers/yarn/lib/fix-duplicates.js +53 -0
- data/helpers/yarn/lib/helpers.js +5 -0
- data/helpers/yarn/lib/lockfile-parser.js +21 -0
- data/helpers/yarn/lib/peer-dependency-checker.js +130 -0
- data/helpers/yarn/lib/replace-lockfile-declaration.js +45 -0
- data/helpers/yarn/lib/subdependency-updater.js +69 -0
- data/helpers/yarn/lib/updater.js +254 -0
- data/helpers/yarn/package.json +17 -0
- data/helpers/yarn/test/fixtures/updater/original/package.json +6 -0
- data/helpers/yarn/test/fixtures/updater/original/yarn.lock +11 -0
- data/helpers/yarn/test/fixtures/updater/updated/yarn.lock +12 -0
- data/helpers/yarn/test/fixtures/updater/with-version-comments/package.json +5 -0
- data/helpers/yarn/test/fixtures/updater/with-version-comments/yarn.lock +13 -0
- data/helpers/yarn/test/fixtures/yarnpkg-is-positive.json +1 -0
- data/helpers/yarn/test/fixtures/yarnpkg-left-pad.json +1 -0
- data/helpers/yarn/test/helpers.js +7 -0
- data/helpers/yarn/test/updater.test.js +93 -0
- data/helpers/yarn/yarn.lock +4912 -0
- data/lib/bundler_definition_bundler_version_patch.rb +15 -0
- data/lib/bundler_definition_ruby_version_patch.rb +14 -0
- data/lib/bundler_git_source_patch.rb +27 -0
- data/lib/dependabot.rb +4 -0
- data/lib/dependabot/clients/bitbucket.rb +101 -0
- data/lib/dependabot/clients/github_with_retries.rb +117 -0
- data/lib/dependabot/clients/gitlab.rb +72 -0
- data/lib/dependabot/dependency.rb +118 -0
- data/lib/dependabot/dependency_file.rb +54 -0
- data/lib/dependabot/errors.rb +179 -0
- data/lib/dependabot/file_fetchers.rb +48 -0
- data/lib/dependabot/file_fetchers/README.md +65 -0
- data/lib/dependabot/file_fetchers/base.rb +302 -0
- data/lib/dependabot/file_fetchers/docker/docker.rb +40 -0
- data/lib/dependabot/file_fetchers/dotnet/nuget.rb +215 -0
- data/lib/dependabot/file_fetchers/dotnet/nuget/import_paths_finder.rb +51 -0
- data/lib/dependabot/file_fetchers/dotnet/nuget/sln_project_paths_finder.rb +55 -0
- data/lib/dependabot/file_fetchers/elixir/hex.rb +78 -0
- data/lib/dependabot/file_fetchers/elm/elm_package.rb +52 -0
- data/lib/dependabot/file_fetchers/git/submodules.rb +73 -0
- data/lib/dependabot/file_fetchers/go/dep.rb +69 -0
- data/lib/dependabot/file_fetchers/go/modules.rb +64 -0
- data/lib/dependabot/file_fetchers/java/gradle.rb +56 -0
- data/lib/dependabot/file_fetchers/java/gradle/settings_file_parser.rb +66 -0
- data/lib/dependabot/file_fetchers/java/maven.rb +127 -0
- data/lib/dependabot/file_fetchers/java_script/npm_and_yarn.rb +330 -0
- data/lib/dependabot/file_fetchers/java_script/npm_and_yarn/path_dependency_builder.rb +107 -0
- data/lib/dependabot/file_fetchers/php/composer.rb +131 -0
- data/lib/dependabot/file_fetchers/python/pip.rb +305 -0
- data/lib/dependabot/file_fetchers/ruby/bundler.rb +185 -0
- data/lib/dependabot/file_fetchers/ruby/bundler/child_gemfile_finder.rb +70 -0
- data/lib/dependabot/file_fetchers/ruby/bundler/path_gemspec_finder.rb +114 -0
- data/lib/dependabot/file_fetchers/ruby/bundler/require_relative_finder.rb +67 -0
- data/lib/dependabot/file_fetchers/rust/cargo.rb +240 -0
- data/lib/dependabot/file_parsers.rb +48 -0
- data/lib/dependabot/file_parsers/README.md +45 -0
- data/lib/dependabot/file_parsers/base.rb +31 -0
- data/lib/dependabot/file_parsers/base/dependency_set.rb +77 -0
- data/lib/dependabot/file_parsers/docker/docker.rb +164 -0
- data/lib/dependabot/file_parsers/dotnet/nuget.rb +85 -0
- data/lib/dependabot/file_parsers/dotnet/nuget/packages_config_parser.rb +65 -0
- data/lib/dependabot/file_parsers/dotnet/nuget/project_file_parser.rb +156 -0
- data/lib/dependabot/file_parsers/dotnet/nuget/property_value_finder.rb +131 -0
- data/lib/dependabot/file_parsers/elixir/hex.rb +134 -0
- data/lib/dependabot/file_parsers/elm/elm_package.rb +136 -0
- data/lib/dependabot/file_parsers/git/submodules.rb +69 -0
- data/lib/dependabot/file_parsers/go/dep.rb +163 -0
- data/lib/dependabot/file_parsers/go/modules.rb +34 -0
- data/lib/dependabot/file_parsers/go/modules/go_mod_parser.rb +134 -0
- data/lib/dependabot/file_parsers/java/gradle.rb +236 -0
- data/lib/dependabot/file_parsers/java/gradle/property_value_finder.rb +90 -0
- data/lib/dependabot/file_parsers/java/gradle/repositories_finder.rb +145 -0
- data/lib/dependabot/file_parsers/java/maven.rb +252 -0
- data/lib/dependabot/file_parsers/java/maven/property_value_finder.rb +166 -0
- data/lib/dependabot/file_parsers/java/maven/repositories_finder.rb +188 -0
- data/lib/dependabot/file_parsers/java_script/npm_and_yarn.rb +394 -0
- data/lib/dependabot/file_parsers/php/composer.rb +177 -0
- data/lib/dependabot/file_parsers/python/pip.rb +223 -0
- data/lib/dependabot/file_parsers/python/pip/pipfile_files_parser.rb +154 -0
- data/lib/dependabot/file_parsers/python/pip/poetry_files_parser.rb +141 -0
- data/lib/dependabot/file_parsers/python/pip/setup_file_parser.rb +160 -0
- data/lib/dependabot/file_parsers/ruby/bundler.rb +295 -0
- data/lib/dependabot/file_parsers/ruby/bundler/file_preparer.rb +85 -0
- data/lib/dependabot/file_parsers/ruby/bundler/gemfile_checker.rb +48 -0
- data/lib/dependabot/file_parsers/rust/cargo.rb +213 -0
- data/lib/dependabot/file_updaters.rb +48 -0
- data/lib/dependabot/file_updaters/README.md +58 -0
- data/lib/dependabot/file_updaters/base.rb +52 -0
- data/lib/dependabot/file_updaters/docker/docker.rb +133 -0
- data/lib/dependabot/file_updaters/dotnet/nuget.rb +151 -0
- data/lib/dependabot/file_updaters/dotnet/nuget/packages_config_declaration_finder.rb +69 -0
- data/lib/dependabot/file_updaters/dotnet/nuget/project_file_declaration_finder.rb +78 -0
- data/lib/dependabot/file_updaters/dotnet/nuget/property_value_updater.rb +64 -0
- data/lib/dependabot/file_updaters/elixir/hex.rb +71 -0
- data/lib/dependabot/file_updaters/elixir/hex/lockfile_updater.rb +147 -0
- data/lib/dependabot/file_updaters/elixir/hex/mixfile_git_pin_updater.rb +53 -0
- data/lib/dependabot/file_updaters/elixir/hex/mixfile_requirement_updater.rb +74 -0
- data/lib/dependabot/file_updaters/elixir/hex/mixfile_sanitizer.rb +28 -0
- data/lib/dependabot/file_updaters/elixir/hex/mixfile_updater.rb +98 -0
- data/lib/dependabot/file_updaters/elm/elm_package.rb +79 -0
- data/lib/dependabot/file_updaters/elm/elm_package/elm_json_updater.rb +69 -0
- data/lib/dependabot/file_updaters/elm/elm_package/elm_package_updater.rb +69 -0
- data/lib/dependabot/file_updaters/git/submodules.rb +38 -0
- data/lib/dependabot/file_updaters/go/dep.rb +77 -0
- data/lib/dependabot/file_updaters/go/dep/lockfile_updater.rb +219 -0
- data/lib/dependabot/file_updaters/go/dep/manifest_updater.rb +155 -0
- data/lib/dependabot/file_updaters/go/modules.rb +71 -0
- data/lib/dependabot/file_updaters/go/modules/go_mod_updater.rb +81 -0
- data/lib/dependabot/file_updaters/java/gradle.rb +176 -0
- data/lib/dependabot/file_updaters/java/gradle/dependency_set_updater.rb +66 -0
- data/lib/dependabot/file_updaters/java/gradle/property_value_updater.rb +58 -0
- data/lib/dependabot/file_updaters/java/maven.rb +155 -0
- data/lib/dependabot/file_updaters/java/maven/declaration_finder.rb +132 -0
- data/lib/dependabot/file_updaters/java/maven/property_value_updater.rb +61 -0
- data/lib/dependabot/file_updaters/java_script/npm_and_yarn.rb +159 -0
- data/lib/dependabot/file_updaters/java_script/npm_and_yarn/npm_lockfile_updater.rb +532 -0
- data/lib/dependabot/file_updaters/java_script/npm_and_yarn/npmrc_builder.rb +191 -0
- data/lib/dependabot/file_updaters/java_script/npm_and_yarn/package_json_preparer.rb +91 -0
- data/lib/dependabot/file_updaters/java_script/npm_and_yarn/package_json_updater.rb +220 -0
- data/lib/dependabot/file_updaters/java_script/npm_and_yarn/yarn_lockfile_updater.rb +475 -0
- data/lib/dependabot/file_updaters/php/composer.rb +78 -0
- data/lib/dependabot/file_updaters/php/composer/lockfile_updater.rb +264 -0
- data/lib/dependabot/file_updaters/php/composer/manifest_updater.rb +70 -0
- data/lib/dependabot/file_updaters/python/pip.rb +147 -0
- data/lib/dependabot/file_updaters/python/pip/pip_compile_file_updater.rb +363 -0
- data/lib/dependabot/file_updaters/python/pip/pipfile_file_updater.rb +397 -0
- data/lib/dependabot/file_updaters/python/pip/pipfile_preparer.rb +125 -0
- data/lib/dependabot/file_updaters/python/pip/poetry_file_updater.rb +289 -0
- data/lib/dependabot/file_updaters/python/pip/pyproject_preparer.rb +105 -0
- data/lib/dependabot/file_updaters/python/pip/requirement_file_updater.rb +166 -0
- data/lib/dependabot/file_updaters/python/pip/requirement_replacer.rb +95 -0
- data/lib/dependabot/file_updaters/python/pip/setup_file_sanitizer.rb +91 -0
- data/lib/dependabot/file_updaters/ruby/bundler.rb +121 -0
- data/lib/dependabot/file_updaters/ruby/bundler/gemfile_updater.rb +116 -0
- data/lib/dependabot/file_updaters/ruby/bundler/gemspec_dependency_name_finder.rb +52 -0
- data/lib/dependabot/file_updaters/ruby/bundler/gemspec_sanitizer.rb +298 -0
- data/lib/dependabot/file_updaters/ruby/bundler/gemspec_updater.rb +64 -0
- data/lib/dependabot/file_updaters/ruby/bundler/git_pin_replacer.rb +80 -0
- data/lib/dependabot/file_updaters/ruby/bundler/git_source_remover.rb +102 -0
- data/lib/dependabot/file_updaters/ruby/bundler/lockfile_updater.rb +384 -0
- data/lib/dependabot/file_updaters/ruby/bundler/requirement_replacer.rb +188 -0
- data/lib/dependabot/file_updaters/rust/cargo.rb +83 -0
- data/lib/dependabot/file_updaters/rust/cargo/lockfile_updater.rb +251 -0
- data/lib/dependabot/file_updaters/rust/cargo/manifest_updater.rb +162 -0
- data/lib/dependabot/git_commit_checker.rb +412 -0
- data/lib/dependabot/metadata_finders.rb +46 -0
- data/lib/dependabot/metadata_finders/README.md +53 -0
- data/lib/dependabot/metadata_finders/base.rb +117 -0
- data/lib/dependabot/metadata_finders/base/changelog_finder.rb +317 -0
- data/lib/dependabot/metadata_finders/base/changelog_pruner.rb +177 -0
- data/lib/dependabot/metadata_finders/base/commits_finder.rb +217 -0
- data/lib/dependabot/metadata_finders/base/release_finder.rb +251 -0
- data/lib/dependabot/metadata_finders/docker/docker.rb +18 -0
- data/lib/dependabot/metadata_finders/dotnet/nuget.rb +116 -0
- data/lib/dependabot/metadata_finders/elixir/hex.rb +69 -0
- data/lib/dependabot/metadata_finders/elm/elm_package.rb +22 -0
- data/lib/dependabot/metadata_finders/git/submodules.rb +20 -0
- data/lib/dependabot/metadata_finders/go/dep.rb +56 -0
- data/lib/dependabot/metadata_finders/java/maven.rb +173 -0
- data/lib/dependabot/metadata_finders/java_script/npm_and_yarn.rb +215 -0
- data/lib/dependabot/metadata_finders/php/composer.rb +66 -0
- data/lib/dependabot/metadata_finders/python/pip.rb +120 -0
- data/lib/dependabot/metadata_finders/ruby/bundler.rb +150 -0
- data/lib/dependabot/metadata_finders/rust/cargo.rb +64 -0
- data/lib/dependabot/pull_request_creator.rb +151 -0
- data/lib/dependabot/pull_request_creator/branch_namer.rb +170 -0
- data/lib/dependabot/pull_request_creator/commit_signer.rb +63 -0
- data/lib/dependabot/pull_request_creator/github.rb +233 -0
- data/lib/dependabot/pull_request_creator/gitlab.rb +122 -0
- data/lib/dependabot/pull_request_creator/labeler.rb +361 -0
- data/lib/dependabot/pull_request_creator/message_builder.rb +888 -0
- data/lib/dependabot/pull_request_updater.rb +43 -0
- data/lib/dependabot/pull_request_updater/github.rb +151 -0
- data/lib/dependabot/shared_helpers.rb +201 -0
- data/lib/dependabot/source.rb +120 -0
- data/lib/dependabot/update_checkers.rb +48 -0
- data/lib/dependabot/update_checkers/README.md +67 -0
- data/lib/dependabot/update_checkers/base.rb +220 -0
- data/lib/dependabot/update_checkers/docker/docker.rb +290 -0
- data/lib/dependabot/update_checkers/dotnet/nuget.rb +127 -0
- data/lib/dependabot/update_checkers/dotnet/nuget/property_updater.rb +97 -0
- data/lib/dependabot/update_checkers/dotnet/nuget/repository_finder.rb +232 -0
- data/lib/dependabot/update_checkers/dotnet/nuget/requirements_updater.rb +81 -0
- data/lib/dependabot/update_checkers/dotnet/nuget/version_finder.rb +231 -0
- data/lib/dependabot/update_checkers/elixir/hex.rb +274 -0
- data/lib/dependabot/update_checkers/elixir/hex/file_preparer.rb +193 -0
- data/lib/dependabot/update_checkers/elixir/hex/requirements_updater.rb +177 -0
- data/lib/dependabot/update_checkers/elixir/hex/version_resolver.rb +175 -0
- data/lib/dependabot/update_checkers/elm/elm_package.rb +126 -0
- data/lib/dependabot/update_checkers/elm/elm_package/cli_parser.rb +33 -0
- data/lib/dependabot/update_checkers/elm/elm_package/elm_18_version_resolver.rb +234 -0
- data/lib/dependabot/update_checkers/elm/elm_package/elm_19_version_resolver.rb +198 -0
- data/lib/dependabot/update_checkers/elm/elm_package/requirements_updater.rb +75 -0
- data/lib/dependabot/update_checkers/git/submodules.rb +52 -0
- data/lib/dependabot/update_checkers/go/dep.rb +311 -0
- data/lib/dependabot/update_checkers/go/dep/file_preparer.rb +221 -0
- data/lib/dependabot/update_checkers/go/dep/latest_version_finder.rb +169 -0
- data/lib/dependabot/update_checkers/go/dep/requirements_updater.rb +223 -0
- data/lib/dependabot/update_checkers/go/dep/version_resolver.rb +164 -0
- data/lib/dependabot/update_checkers/go/modules.rb +112 -0
- data/lib/dependabot/update_checkers/java/gradle.rb +148 -0
- data/lib/dependabot/update_checkers/java/gradle/multi_dependency_updater.rb +105 -0
- data/lib/dependabot/update_checkers/java/gradle/version_finder.rb +183 -0
- data/lib/dependabot/update_checkers/java/maven.rb +159 -0
- data/lib/dependabot/update_checkers/java/maven/property_updater.rb +127 -0
- data/lib/dependabot/update_checkers/java/maven/requirements_updater.rb +92 -0
- data/lib/dependabot/update_checkers/java/maven/version_finder.rb +225 -0
- data/lib/dependabot/update_checkers/java_script/npm_and_yarn.rb +280 -0
- data/lib/dependabot/update_checkers/java_script/npm_and_yarn/latest_version_finder.rb +342 -0
- data/lib/dependabot/update_checkers/java_script/npm_and_yarn/library_detector.rb +69 -0
- data/lib/dependabot/update_checkers/java_script/npm_and_yarn/registry_finder.rb +226 -0
- data/lib/dependabot/update_checkers/java_script/npm_and_yarn/requirements_updater.rb +197 -0
- data/lib/dependabot/update_checkers/java_script/npm_and_yarn/subdependency_version_resolver.rb +228 -0
- data/lib/dependabot/update_checkers/java_script/npm_and_yarn/version_resolver.rb +452 -0
- data/lib/dependabot/update_checkers/php/composer.rb +165 -0
- data/lib/dependabot/update_checkers/php/composer/requirements_updater.rb +243 -0
- data/lib/dependabot/update_checkers/php/composer/version_resolver.rb +203 -0
- data/lib/dependabot/update_checkers/python/pip.rb +227 -0
- data/lib/dependabot/update_checkers/python/pip/latest_version_finder.rb +252 -0
- data/lib/dependabot/update_checkers/python/pip/pip_compile_version_resolver.rb +380 -0
- data/lib/dependabot/update_checkers/python/pip/pipfile_version_resolver.rb +559 -0
- data/lib/dependabot/update_checkers/python/pip/poetry_version_resolver.rb +300 -0
- data/lib/dependabot/update_checkers/python/pip/requirements_updater.rb +367 -0
- data/lib/dependabot/update_checkers/ruby/bundler.rb +324 -0
- data/lib/dependabot/update_checkers/ruby/bundler/file_preparer.rb +278 -0
- data/lib/dependabot/update_checkers/ruby/bundler/force_updater.rb +261 -0
- data/lib/dependabot/update_checkers/ruby/bundler/latest_version_finder.rb +169 -0
- data/lib/dependabot/update_checkers/ruby/bundler/requirements_updater.rb +264 -0
- data/lib/dependabot/update_checkers/ruby/bundler/ruby_requirement_setter.rb +115 -0
- data/lib/dependabot/update_checkers/ruby/bundler/shared_bundler_helpers.rb +243 -0
- data/lib/dependabot/update_checkers/ruby/bundler/version_resolver.rb +255 -0
- data/lib/dependabot/update_checkers/rust/cargo.rb +282 -0
- data/lib/dependabot/update_checkers/rust/cargo/file_preparer.rb +202 -0
- data/lib/dependabot/update_checkers/rust/cargo/requirements_updater.rb +175 -0
- data/lib/dependabot/update_checkers/rust/cargo/version_resolver.rb +242 -0
- data/lib/dependabot/utils.rb +84 -0
- data/lib/dependabot/utils/docker/credentials_finder.rb +65 -0
- data/lib/dependabot/utils/dotnet/requirement.rb +90 -0
- data/lib/dependabot/utils/dotnet/version.rb +22 -0
- data/lib/dependabot/utils/elixir/requirement.rb +53 -0
- data/lib/dependabot/utils/elixir/version.rb +59 -0
- data/lib/dependabot/utils/elm/requirement.rb +92 -0
- data/lib/dependabot/utils/elm/version.rb +19 -0
- data/lib/dependabot/utils/go/path_converter.rb +74 -0
- data/lib/dependabot/utils/go/requirement.rb +152 -0
- data/lib/dependabot/utils/go/shared_helper.rb +20 -0
- data/lib/dependabot/utils/go/version.rb +40 -0
- data/lib/dependabot/utils/java/requirement.rb +110 -0
- data/lib/dependabot/utils/java/version.rb +179 -0
- data/lib/dependabot/utils/java_script/requirement.rb +117 -0
- data/lib/dependabot/utils/java_script/version.rb +30 -0
- data/lib/dependabot/utils/php/requirement.rb +97 -0
- data/lib/dependabot/utils/php/version.rb +22 -0
- data/lib/dependabot/utils/python/requirement.rb +130 -0
- data/lib/dependabot/utils/python/version.rb +88 -0
- data/lib/dependabot/utils/ruby/requirement.rb +26 -0
- data/lib/dependabot/utils/rust/requirement.rb +108 -0
- data/lib/dependabot/utils/rust/version.rb +32 -0
- data/lib/dependabot/version.rb +5 -0
- data/lib/python_requirement_parser.rb +33 -0
- data/lib/python_versions.rb +21 -0
- metadata +641 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "dependabot/metadata_finders/ruby/bundler"
|
|
4
|
+
require "dependabot/metadata_finders/python/pip"
|
|
5
|
+
require "dependabot/metadata_finders/java_script/npm_and_yarn"
|
|
6
|
+
require "dependabot/metadata_finders/java/maven"
|
|
7
|
+
require "dependabot/metadata_finders/php/composer"
|
|
8
|
+
require "dependabot/metadata_finders/git/submodules"
|
|
9
|
+
require "dependabot/metadata_finders/docker/docker"
|
|
10
|
+
require "dependabot/metadata_finders/elixir/hex"
|
|
11
|
+
require "dependabot/metadata_finders/rust/cargo"
|
|
12
|
+
require "dependabot/metadata_finders/dotnet/nuget"
|
|
13
|
+
require "dependabot/metadata_finders/go/dep"
|
|
14
|
+
require "dependabot/metadata_finders/elm/elm_package"
|
|
15
|
+
|
|
16
|
+
module Dependabot
|
|
17
|
+
module MetadataFinders
|
|
18
|
+
@metadata_finders = {
|
|
19
|
+
"bundler" => MetadataFinders::Ruby::Bundler,
|
|
20
|
+
"npm_and_yarn" => MetadataFinders::JavaScript::NpmAndYarn,
|
|
21
|
+
"maven" => MetadataFinders::Java::Maven,
|
|
22
|
+
"gradle" => MetadataFinders::Java::Maven,
|
|
23
|
+
"pip" => MetadataFinders::Python::Pip,
|
|
24
|
+
"composer" => MetadataFinders::Php::Composer,
|
|
25
|
+
"submodules" => MetadataFinders::Git::Submodules,
|
|
26
|
+
"docker" => MetadataFinders::Docker::Docker,
|
|
27
|
+
"hex" => MetadataFinders::Elixir::Hex,
|
|
28
|
+
"cargo" => MetadataFinders::Rust::Cargo,
|
|
29
|
+
"nuget" => MetadataFinders::Dotnet::Nuget,
|
|
30
|
+
"dep" => MetadataFinders::Go::Dep,
|
|
31
|
+
"go_modules" => MetadataFinders::Go::Dep,
|
|
32
|
+
"elm-package" => MetadataFinders::Elm::ElmPackage
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
def self.for_package_manager(package_manager)
|
|
36
|
+
metadata_finder = @metadata_finders[package_manager]
|
|
37
|
+
return metadata_finder if metadata_finder
|
|
38
|
+
|
|
39
|
+
raise "Unsupported package_manager #{package_manager}"
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def self.register(package_manager, metadata_finder)
|
|
43
|
+
@metadata_finders[package_manager] = metadata_finder
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Metadata finders
|
|
2
|
+
|
|
3
|
+
Metadata finders look up metadata about a dependency, such as its GitHub URL.
|
|
4
|
+
|
|
5
|
+
There is a `Dependabot::MetadataFinders` class for each language Dependabot
|
|
6
|
+
supports.
|
|
7
|
+
|
|
8
|
+
## Public API
|
|
9
|
+
|
|
10
|
+
Each `Dependabot::MetadataFinders` class exposes the following methods:
|
|
11
|
+
|
|
12
|
+
| Method | Description |
|
|
13
|
+
|-----------------------|---------------------------------------------------------------------------------------------|
|
|
14
|
+
| `#source_url` | A link to the source data for the dependency. |
|
|
15
|
+
| `#homepage_url` | A link to the homepage for the dependency. |
|
|
16
|
+
| `#commits_url` | A link to a commit diff between the previous version of the dependency and the new version. |
|
|
17
|
+
| `#commits` | A list of commits between the previous version of the dependency and the new version. |
|
|
18
|
+
| `#changelog_url` | A link to the changelog for the dependency. |
|
|
19
|
+
| `#changelog_text` | The relevant text from the changelog. |
|
|
20
|
+
| `#release_url` | A link to the release notes for this version of the dependency. |
|
|
21
|
+
| `#release_text` | The relevant text from the release notes |
|
|
22
|
+
| `#upgrade_guide_url` | A link to the upgrade guide for this upgrade (if it exists). |
|
|
23
|
+
| `#upgrade_guide_text` | The text of the upgrade guide for this upgrade (if it exists). |
|
|
24
|
+
|
|
25
|
+
An integration might look as follows:
|
|
26
|
+
|
|
27
|
+
```ruby
|
|
28
|
+
require 'dependabot/metadata_finders'
|
|
29
|
+
|
|
30
|
+
dependency = update_checker.updated_dependency
|
|
31
|
+
|
|
32
|
+
metadata_finder_class = Dependabot::MetadataFinders::Ruby::Bundler
|
|
33
|
+
metadata_finder = metadata_finder_class.new(
|
|
34
|
+
dependency: dependency,
|
|
35
|
+
credentials: credentials
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
puts "Changelog for #{dependency.name} is at #{metadata_finder.changelog_url}"
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Writing a metadata finder for a new language
|
|
42
|
+
|
|
43
|
+
All new metadata finders should inherit from `Dependabot::MetadataFinders::Base`
|
|
44
|
+
and implement the following methods:
|
|
45
|
+
|
|
46
|
+
| Method | Description |
|
|
47
|
+
|------------------------|-------------------------|
|
|
48
|
+
| `#look_up_source` | Private method that returns a `Dependabot::Source` object. Generally the source details are extracted from a source code URL provided by the language's dependency registry, but sometimes it's already know from parsing the dependency file. |
|
|
49
|
+
|
|
50
|
+
To ensure the above are implemented, you should include
|
|
51
|
+
`it_behaves_like "a dependency metadata finder"` in your specs for the new
|
|
52
|
+
metadata finder.
|
|
53
|
+
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "dependabot/source"
|
|
4
|
+
|
|
5
|
+
module Dependabot
|
|
6
|
+
module MetadataFinders
|
|
7
|
+
class Base
|
|
8
|
+
require "dependabot/metadata_finders/base/changelog_finder"
|
|
9
|
+
require "dependabot/metadata_finders/base/release_finder"
|
|
10
|
+
require "dependabot/metadata_finders/base/commits_finder"
|
|
11
|
+
|
|
12
|
+
attr_reader :dependency, :credentials
|
|
13
|
+
|
|
14
|
+
def initialize(dependency:, credentials:)
|
|
15
|
+
@dependency = dependency
|
|
16
|
+
@credentials = credentials
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def source_url
|
|
20
|
+
source&.url
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def homepage_url
|
|
24
|
+
source_url
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def changelog_url
|
|
28
|
+
@changelog_finder ||= ChangelogFinder.new(
|
|
29
|
+
dependency: dependency,
|
|
30
|
+
source: source,
|
|
31
|
+
credentials: credentials
|
|
32
|
+
)
|
|
33
|
+
@changelog_finder.changelog_url
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def changelog_text
|
|
37
|
+
@changelog_finder ||= ChangelogFinder.new(
|
|
38
|
+
dependency: dependency,
|
|
39
|
+
source: source,
|
|
40
|
+
credentials: credentials
|
|
41
|
+
)
|
|
42
|
+
@changelog_finder.changelog_text
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def upgrade_guide_url
|
|
46
|
+
@changelog_finder ||= ChangelogFinder.new(
|
|
47
|
+
dependency: dependency,
|
|
48
|
+
source: source,
|
|
49
|
+
credentials: credentials
|
|
50
|
+
)
|
|
51
|
+
@changelog_finder.upgrade_guide_url
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def upgrade_guide_text
|
|
55
|
+
@changelog_finder ||= ChangelogFinder.new(
|
|
56
|
+
dependency: dependency,
|
|
57
|
+
source: source,
|
|
58
|
+
credentials: credentials
|
|
59
|
+
)
|
|
60
|
+
@changelog_finder.upgrade_guide_text
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def releases_url
|
|
64
|
+
@release_finder ||= ReleaseFinder.new(
|
|
65
|
+
dependency: dependency,
|
|
66
|
+
source: source,
|
|
67
|
+
credentials: credentials
|
|
68
|
+
)
|
|
69
|
+
@release_finder.releases_url
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def releases_text
|
|
73
|
+
@release_finder ||= ReleaseFinder.new(
|
|
74
|
+
dependency: dependency,
|
|
75
|
+
source: source,
|
|
76
|
+
credentials: credentials
|
|
77
|
+
)
|
|
78
|
+
@release_finder.releases_text
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def commits_url
|
|
82
|
+
@commits_finder ||= CommitsFinder.new(
|
|
83
|
+
dependency: dependency,
|
|
84
|
+
source: source,
|
|
85
|
+
credentials: credentials
|
|
86
|
+
)
|
|
87
|
+
@commits_finder.commits_url
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def commits
|
|
91
|
+
@commits_finder ||= CommitsFinder.new(
|
|
92
|
+
dependency: dependency,
|
|
93
|
+
source: source,
|
|
94
|
+
credentials: credentials
|
|
95
|
+
)
|
|
96
|
+
@commits_finder.commits
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
def maintainer_changes
|
|
100
|
+
nil
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
private
|
|
104
|
+
|
|
105
|
+
def source
|
|
106
|
+
return @source if @source_lookup_attempted
|
|
107
|
+
|
|
108
|
+
@source_lookup_attempted = true
|
|
109
|
+
@source = look_up_source
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def look_up_source
|
|
113
|
+
raise NotImplementedError
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
end
|
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "excon"
|
|
4
|
+
|
|
5
|
+
require "dependabot/clients/github_with_retries"
|
|
6
|
+
require "dependabot/clients/gitlab"
|
|
7
|
+
require "dependabot/clients/bitbucket"
|
|
8
|
+
require "dependabot/shared_helpers"
|
|
9
|
+
require "dependabot/metadata_finders/base"
|
|
10
|
+
|
|
11
|
+
module Dependabot
|
|
12
|
+
module MetadataFinders
|
|
13
|
+
class Base
|
|
14
|
+
class ChangelogFinder
|
|
15
|
+
require_relative "changelog_pruner"
|
|
16
|
+
require_relative "commits_finder"
|
|
17
|
+
|
|
18
|
+
# Earlier entries are preferred
|
|
19
|
+
CHANGELOG_NAMES = %w(changelog history news changes release).freeze
|
|
20
|
+
|
|
21
|
+
attr_reader :source, :dependency, :credentials
|
|
22
|
+
|
|
23
|
+
def initialize(source:, dependency:, credentials:)
|
|
24
|
+
@source = source
|
|
25
|
+
@dependency = dependency
|
|
26
|
+
@credentials = credentials
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def changelog_url
|
|
30
|
+
changelog&.html_url
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def changelog_text
|
|
34
|
+
return unless full_changelog_text
|
|
35
|
+
|
|
36
|
+
ChangelogPruner.new(
|
|
37
|
+
dependency: dependency,
|
|
38
|
+
changelog_text: full_changelog_text
|
|
39
|
+
).pruned_text
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def upgrade_guide_url
|
|
43
|
+
upgrade_guide&.html_url
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def upgrade_guide_text
|
|
47
|
+
return unless upgrade_guide
|
|
48
|
+
|
|
49
|
+
@upgrade_guide_text ||= fetch_file_text(upgrade_guide)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
private
|
|
53
|
+
|
|
54
|
+
# rubocop:disable Metrics/CyclomaticComplexity
|
|
55
|
+
# rubocop:disable Metrics/PerceivedComplexity
|
|
56
|
+
def changelog
|
|
57
|
+
return unless source
|
|
58
|
+
|
|
59
|
+
# Changelog won't be relevant for a git commit bump
|
|
60
|
+
return if git_source? && !ref_changed?
|
|
61
|
+
|
|
62
|
+
# If there is a changelog, and it includes the new version, return it
|
|
63
|
+
if new_version && default_branch_changelog &&
|
|
64
|
+
fetch_file_text(default_branch_changelog)&.include?(new_version)
|
|
65
|
+
return default_branch_changelog
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# Otherwise, look for a changelog at the tag for this version
|
|
69
|
+
if new_version && relevant_tag_changelog &&
|
|
70
|
+
fetch_file_text(relevant_tag_changelog)&.include?(new_version)
|
|
71
|
+
return relevant_tag_changelog
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# Fall back to the changelog (or nil) from the default branch
|
|
75
|
+
default_branch_changelog
|
|
76
|
+
end
|
|
77
|
+
# rubocop:enable Metrics/CyclomaticComplexity
|
|
78
|
+
# rubocop:enable Metrics/PerceivedComplexity
|
|
79
|
+
|
|
80
|
+
def default_branch_changelog
|
|
81
|
+
return unless source
|
|
82
|
+
|
|
83
|
+
@default_branch_changelog ||= changelog_from_ref(nil)
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def relevant_tag_changelog
|
|
87
|
+
return unless source
|
|
88
|
+
return unless tag_for_new_version
|
|
89
|
+
|
|
90
|
+
@relevant_tag_changelog ||= changelog_from_ref(tag_for_new_version)
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def changelog_from_ref(ref)
|
|
94
|
+
files =
|
|
95
|
+
dependency_file_list(ref).
|
|
96
|
+
select { |f| f.type == "file" }.
|
|
97
|
+
reject { |f| f.name.end_with?(".sh") }.
|
|
98
|
+
reject { |f| f.size > 1_000_000 }
|
|
99
|
+
|
|
100
|
+
CHANGELOG_NAMES.each do |name|
|
|
101
|
+
candidates = files.select { |f| f.name =~ /#{name}/i }
|
|
102
|
+
file = candidates.first if candidates.one?
|
|
103
|
+
file ||=
|
|
104
|
+
candidates.find do |f|
|
|
105
|
+
candidates -= [f] && next if fetch_file_text(f).nil?
|
|
106
|
+
ChangelogPruner.new(
|
|
107
|
+
dependency: dependency,
|
|
108
|
+
changelog_text: fetch_file_text(f)
|
|
109
|
+
).includes_new_version?
|
|
110
|
+
end
|
|
111
|
+
file ||= candidates.max_by(&:size)
|
|
112
|
+
return file if file
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
nil
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
def tag_for_new_version
|
|
119
|
+
CommitsFinder.new(
|
|
120
|
+
dependency: dependency,
|
|
121
|
+
source: source,
|
|
122
|
+
credentials: credentials
|
|
123
|
+
).new_tag
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
def full_changelog_text
|
|
127
|
+
return unless changelog
|
|
128
|
+
|
|
129
|
+
fetch_file_text(changelog)
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
def fetch_file_text(file)
|
|
133
|
+
@file_text ||= {}
|
|
134
|
+
|
|
135
|
+
unless @file_text.key?(file.download_url)
|
|
136
|
+
@file_text[file.download_url] =
|
|
137
|
+
case source.provider
|
|
138
|
+
when "github" then fetch_github_file(file)
|
|
139
|
+
when "gitlab" then fetch_gitlab_file(file)
|
|
140
|
+
when "bitbucket" then fetch_bitbucket_file(file)
|
|
141
|
+
else raise "Unsupported provider '#{source.provider}"
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
return unless @file_text[file.download_url].valid_encoding?
|
|
146
|
+
|
|
147
|
+
@file_text[file.download_url].
|
|
148
|
+
force_encoding("UTF-8").
|
|
149
|
+
encode.sub(/\n*\z/, "")
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
def fetch_github_file(file)
|
|
153
|
+
# Hitting the download URL directly causes encoding problems
|
|
154
|
+
raw_content = github_client.get(file.url).content
|
|
155
|
+
Base64.decode64(raw_content).force_encoding("UTF-8").encode
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
def fetch_gitlab_file(file)
|
|
159
|
+
Excon.get(
|
|
160
|
+
file.download_url,
|
|
161
|
+
idempotent: true,
|
|
162
|
+
**SharedHelpers.excon_defaults
|
|
163
|
+
).body
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
def fetch_bitbucket_file(file)
|
|
167
|
+
bitbucket_client.get(file.download_url).body
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
def upgrade_guide
|
|
171
|
+
return unless source
|
|
172
|
+
|
|
173
|
+
# Upgrade guide usually won't be relevant for bumping anything other
|
|
174
|
+
# than the major version
|
|
175
|
+
return unless major_version_upgrade?
|
|
176
|
+
|
|
177
|
+
dependency_file_list.
|
|
178
|
+
select { |f| f.type == "file" }.
|
|
179
|
+
select { |f| f.name.casecmp("upgrade.md").zero? }.
|
|
180
|
+
reject { |f| f.size > 1_000_000 }.
|
|
181
|
+
max_by(&:size)
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
def dependency_file_list(ref = nil)
|
|
185
|
+
@dependency_file_list ||= {}
|
|
186
|
+
@dependency_file_list[ref] ||= fetch_dependency_file_list(ref)
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
def fetch_dependency_file_list(ref)
|
|
190
|
+
case source.provider
|
|
191
|
+
when "github" then fetch_github_file_list(ref)
|
|
192
|
+
when "bitbucket" then fetch_bitbucket_file_list
|
|
193
|
+
when "gitlab" then fetch_gitlab_file_list
|
|
194
|
+
when "azure" then [] # TODO: Fetch files from Azure
|
|
195
|
+
else raise "Unexpected repo provider '#{source.provider}'"
|
|
196
|
+
end
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
def fetch_github_file_list(ref)
|
|
200
|
+
files = []
|
|
201
|
+
|
|
202
|
+
if source.directory
|
|
203
|
+
opts = { path: source.directory, ref: ref }.compact
|
|
204
|
+
files += github_client.contents(source.repo, opts)
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
opts = { ref: ref }.compact
|
|
208
|
+
files += github_client.contents(source.repo, opts)
|
|
209
|
+
|
|
210
|
+
%w(doc docs).each do |dir_name|
|
|
211
|
+
if files.any? { |f| f.name == dir_name && f.type == "dir" }
|
|
212
|
+
opts = { path: dir_name, ref: ref }.compact
|
|
213
|
+
files += github_client.contents(source.repo, opts)
|
|
214
|
+
end
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
files
|
|
218
|
+
rescue Octokit::NotFound
|
|
219
|
+
[]
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
def fetch_bitbucket_file_list
|
|
223
|
+
branch = default_bitbucket_branch
|
|
224
|
+
bitbucket_client.fetch_repo_contents(source.repo).map do |file|
|
|
225
|
+
OpenStruct.new(
|
|
226
|
+
name: file.fetch("path").split("/").last,
|
|
227
|
+
type: file.fetch("type") == "commit_file" ? "file" : file["type"],
|
|
228
|
+
size: file.fetch("size", 0),
|
|
229
|
+
html_url: "#{source.url}/src/#{branch}/#{file['path']}",
|
|
230
|
+
download_url: "#{source.url}/raw/#{branch}/#{file['path']}"
|
|
231
|
+
)
|
|
232
|
+
end
|
|
233
|
+
rescue Dependabot::Clients::Bitbucket::NotFound
|
|
234
|
+
[]
|
|
235
|
+
end
|
|
236
|
+
|
|
237
|
+
def fetch_gitlab_file_list
|
|
238
|
+
gitlab_client.repo_tree(source.repo).map do |file|
|
|
239
|
+
OpenStruct.new(
|
|
240
|
+
name: file.name,
|
|
241
|
+
type: file.type == "blob" ? "file" : file.type,
|
|
242
|
+
size: 0, # GitLab doesn't return file size
|
|
243
|
+
html_url: "#{source.url}/blob/master/#{file.path}",
|
|
244
|
+
download_url: "#{source.url}/raw/master/#{file.path}"
|
|
245
|
+
)
|
|
246
|
+
end
|
|
247
|
+
rescue Gitlab::Error::NotFound
|
|
248
|
+
[]
|
|
249
|
+
end
|
|
250
|
+
|
|
251
|
+
def new_version
|
|
252
|
+
@new_version ||= git_source? ? new_ref : dependency.version
|
|
253
|
+
@new_version&.gsub(/^v/, "")
|
|
254
|
+
end
|
|
255
|
+
|
|
256
|
+
def previous_ref
|
|
257
|
+
dependency.previous_requirements.map do |r|
|
|
258
|
+
r.dig(:source, "ref") || r.dig(:source, :ref)
|
|
259
|
+
end.compact.first
|
|
260
|
+
end
|
|
261
|
+
|
|
262
|
+
def new_ref
|
|
263
|
+
dependency.requirements.map do |r|
|
|
264
|
+
r.dig(:source, "ref") || r.dig(:source, :ref)
|
|
265
|
+
end.compact.first
|
|
266
|
+
end
|
|
267
|
+
|
|
268
|
+
def ref_changed?
|
|
269
|
+
previous_ref && new_ref && previous_ref != new_ref
|
|
270
|
+
end
|
|
271
|
+
|
|
272
|
+
# TODO: Refactor me so that Composer doesn't need to be special cased
|
|
273
|
+
def git_source?
|
|
274
|
+
# Special case Composer, which uses git as a source but handles tags
|
|
275
|
+
# internally
|
|
276
|
+
return false if dependency.package_manager == "composer"
|
|
277
|
+
|
|
278
|
+
requirements = dependency.requirements
|
|
279
|
+
sources = requirements.map { |r| r.fetch(:source) }.uniq.compact
|
|
280
|
+
return false if sources.empty?
|
|
281
|
+
raise "Multiple sources! #{sources.join(', ')}" if sources.count > 1
|
|
282
|
+
|
|
283
|
+
source_type = sources.first[:type] || sources.first.fetch("type")
|
|
284
|
+
source_type == "git"
|
|
285
|
+
end
|
|
286
|
+
|
|
287
|
+
def major_version_upgrade?
|
|
288
|
+
return false unless dependency.version&.match?(/^\d/)
|
|
289
|
+
return false unless dependency.previous_version&.match?(/^\d/)
|
|
290
|
+
|
|
291
|
+
dependency.version.split(".").first.to_i -
|
|
292
|
+
dependency.previous_version.split(".").first.to_i >= 1
|
|
293
|
+
end
|
|
294
|
+
|
|
295
|
+
def gitlab_client
|
|
296
|
+
@gitlab_client ||= Dependabot::Clients::Gitlab.
|
|
297
|
+
for_gitlab_dot_com(credentials: credentials)
|
|
298
|
+
end
|
|
299
|
+
|
|
300
|
+
def github_client
|
|
301
|
+
@github_client ||= Dependabot::Clients::GithubWithRetries.
|
|
302
|
+
for_github_dot_com(credentials: credentials)
|
|
303
|
+
end
|
|
304
|
+
|
|
305
|
+
def bitbucket_client
|
|
306
|
+
@bitbucket_client ||= Dependabot::Clients::Bitbucket.
|
|
307
|
+
for_bitbucket_dot_org(credentials: credentials)
|
|
308
|
+
end
|
|
309
|
+
|
|
310
|
+
def default_bitbucket_branch
|
|
311
|
+
@default_bitbucket_branch ||=
|
|
312
|
+
bitbucket_client.fetch_default_branch(source.repo)
|
|
313
|
+
end
|
|
314
|
+
end
|
|
315
|
+
end
|
|
316
|
+
end
|
|
317
|
+
end
|