diff --git a/.github/ci-filters.yml b/.github/ci-filters.yml index 5ac68039bb..22e42bac1f 100644 --- a/.github/ci-filters.yml +++ b/.github/ci-filters.yml @@ -17,6 +17,9 @@ common: composer: - *shared - 'composer/**' +devcontainers: + - *shared + - 'devcontainers/**' docker: - *shared - 'docker/**' diff --git a/.github/labeler.yml b/.github/labeler.yml index bbec4683ed..42b92f45a3 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -10,6 +10,10 @@ - changed-files: - any-glob-to-any-file: composer/** +"L: devcontainers": +- changed-files: + - any-glob-to-any-file: devcontainers/** + "L: docker": - changed-files: - any-glob-to-any-file: docker/** diff --git a/.github/smoke-filters.yml b/.github/smoke-filters.yml index aed44a5889..f5f1fce56a 100644 --- a/.github/smoke-filters.yml +++ b/.github/smoke-filters.yml @@ -16,6 +16,9 @@ cargo: composer: - *common - 'composer/**' +devcontainers: + - *common + - 'devcontainers/**' docker: - *common - 'docker/**' diff --git a/.github/smoke-matrix.json b/.github/smoke-matrix.json index b86f0d5b1b..25d52e78cb 100644 --- a/.github/smoke-matrix.json +++ b/.github/smoke-matrix.json @@ -14,6 +14,11 @@ "test": "composer", "ecosystem": "composer" }, + { + "core": "devcontainers", + "test": "devcontainers", + "ecosystem": "devcontainers" + }, { "core": "docker", "test": "docker", diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 63ed91adee..8a40233d35 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -37,6 +37,7 @@ jobs: - { path: python, name: python, ecosystem: pip } - { path: python, name: python_slow, ecosystem: pip } - { path: swift, name: swift, ecosystem: swift } + - { path: devcontainers, name: devcontainers, ecosystem: devcontainers } - { path: terraform, name: terraform, ecosystem: terraform } steps: diff --git a/.github/workflows/images-branch.yml b/.github/workflows/images-branch.yml index a3c9df2497..f3223130cc 100644 --- a/.github/workflows/images-branch.yml +++ b/.github/workflows/images-branch.yml @@ -67,6 +67,7 @@ jobs: - { name: pub, ecosystem: pub } - { name: python, ecosystem: pip } - { name: swift, ecosystem: swift } + - { name: devcontainers, ecosystem: devcontainers } - { name: terraform, ecosystem: terraform } permissions: contents: read diff --git a/.github/workflows/images-latest.yml b/.github/workflows/images-latest.yml index 4bbafea6d6..63e8d83e21 100644 --- a/.github/workflows/images-latest.yml +++ b/.github/workflows/images-latest.yml @@ -48,6 +48,7 @@ jobs: - { name: pub, ecosystem: pub } - { name: python, ecosystem: pip } - { name: swift, ecosystem: swift } + - { name: devcontainers, ecosystem: devcontainers } - { name: terraform, ecosystem: terraform } env: COMMIT_SHA: ${{ github.sha }} diff --git a/Dockerfile.updater-core b/Dockerfile.updater-core index e807048830..56f0e1c781 100644 --- a/Dockerfile.updater-core +++ b/Dockerfile.updater-core @@ -83,6 +83,7 @@ COPY --chown=dependabot:dependabot common/lib/dependabot.rb common/lib/dependabo COPY --chown=dependabot:dependabot bundler/.bundle bundler/dependabot-bundler.gemspec bundler/ COPY --chown=dependabot:dependabot cargo/.bundle cargo/dependabot-cargo.gemspec cargo/ COPY --chown=dependabot:dependabot composer/.bundle composer/dependabot-composer.gemspec composer/ +COPY --chown=dependabot:dependabot devcontainers/.bundle devcontainers/dependabot-devcontainers.gemspec devcontainers/ COPY --chown=dependabot:dependabot docker/.bundle docker/dependabot-docker.gemspec docker/ COPY --chown=dependabot:dependabot elm/.bundle elm/dependabot-elm.gemspec elm/ COPY --chown=dependabot:dependabot git_submodules/.bundle git_submodules/dependabot-git_submodules.gemspec git_submodules/ @@ -99,7 +100,7 @@ COPY --chown=dependabot:dependabot swift/.bundle swift/dependabot-swift.gemspec COPY --chown=dependabot:dependabot terraform/.bundle terraform/dependabot-terraform.gemspec terraform/ # prevent having all the source in every ecosystem image -RUN for ecosystem in git_submodules terraform github_actions hex elm docker nuget maven gradle cargo composer go_modules python pub npm_and_yarn bundler swift; do \ +RUN for ecosystem in git_submodules terraform github_actions hex elm docker nuget maven gradle cargo composer go_modules python pub npm_and_yarn bundler swift devcontainers; do \ mkdir -p $ecosystem/lib/dependabot; \ touch $ecosystem/lib/dependabot/$ecosystem.rb; \ done diff --git a/Gemfile b/Gemfile index e8f38a8107..c8ed77b819 100644 --- a/Gemfile +++ b/Gemfile @@ -2,24 +2,25 @@ source "https://rubygems.org" -gemspec path: "bundler" -gemspec path: "cargo" -gemspec path: "common" -gemspec path: "composer" -gemspec path: "docker" -gemspec path: "elm" -gemspec path: "github_actions" -gemspec path: "git_submodules" -gemspec path: "go_modules" -gemspec path: "gradle" -gemspec path: "hex" -gemspec path: "maven" -gemspec path: "npm_and_yarn" -gemspec path: "nuget" -gemspec path: "pub" -gemspec path: "python" -gemspec path: "swift" -gemspec path: "terraform" +gem "dependabot-bundler", path: "bundler" +gem "dependabot-cargo", path: "cargo" +gem "dependabot-common", path: "common" +gem "dependabot-composer", path: "composer" +gem "dependabot-devcontainers", path: "devcontainers" +gem "dependabot-docker", path: "docker" +gem "dependabot-elm", path: "elm" +gem "dependabot-github_actions", path: "github_actions" +gem "dependabot-git_submodules", path: "git_submodules" +gem "dependabot-go_modules", path: "go_modules" +gem "dependabot-gradle", path: "gradle" +gem "dependabot-hex", path: "hex" +gem "dependabot-maven", path: "maven" +gem "dependabot-npm_and_yarn", path: "npm_and_yarn" +gem "dependabot-nuget", path: "nuget" +gem "dependabot-pub", path: "pub" +gem "dependabot-python", path: "python" +gem "dependabot-swift", path: "swift" +gem "dependabot-terraform", path: "terraform" # Sorbet gem "sorbet", "0.5.11178", group: :development diff --git a/Gemfile.lock b/Gemfile.lock index 113c7b1c73..38df85550d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -38,6 +38,12 @@ PATH dependabot-composer (0.241.0) dependabot-common (= 0.241.0) +PATH + remote: devcontainers + specs: + dependabot-devcontainers (0.241.0) + dependabot-common (= 0.241.0) + PATH remote: docker specs: @@ -306,6 +312,7 @@ DEPENDENCIES dependabot-cargo! dependabot-common! dependabot-composer! + dependabot-devcontainers! dependabot-docker! dependabot-elm! dependabot-git_submodules! diff --git a/Rakefile b/Rakefile index b5c9d01b6a..a404b8b53f 100644 --- a/Rakefile +++ b/Rakefile @@ -32,6 +32,7 @@ GEMSPECS = %w( pub/dependabot-pub.gemspec omnibus/dependabot-omnibus.gemspec swift/dependabot-swift.gemspec + devcontainers/dependabot-devcontainers.gemspec ).freeze def run_command(command) diff --git a/bin/docker-dev-shell b/bin/docker-dev-shell index 86a97afc57..67e8088336 100755 --- a/bin/docker-dev-shell +++ b/bin/docker-dev-shell @@ -141,6 +141,11 @@ docker run --rm -ti \ -v "$(pwd)/composer/lib:$CODE_DIR/composer/lib" \ -v "$(pwd)/composer/script:$CODE_DIR/composer/script" \ -v "$(pwd)/composer/spec:$CODE_DIR/composer/spec" \ + -v "$(pwd)/devcontainers/.rubocop.yml:$CODE_DIR/devcontainers/.rubocop.yml" \ + -v "$(pwd)/devcontainers/dependabot-devcontainers.gemspec:$CODE_DIR/devcontainers/dependabot-devcontainers.gemspec" \ + -v "$(pwd)/devcontainers/lib:$CODE_DIR/devcontainers/lib" \ + -v "$(pwd)/devcontainers/script:$CODE_DIR/devcontainers/script" \ + -v "$(pwd)/devcontainers/spec:$CODE_DIR/devcontainers/spec" \ -v "$(pwd)/docker/.rubocop.yml:$CODE_DIR/docker/.rubocop.yml" \ -v "$(pwd)/docker/dependabot-docker.gemspec:$CODE_DIR/docker/dependabot-docker.gemspec" \ -v "$(pwd)/docker/lib:$CODE_DIR/docker/lib" \ diff --git a/bin/dry-run.rb b/bin/dry-run.rb index 1b08ce5fb1..9ed9598a23 100755 --- a/bin/dry-run.rb +++ b/bin/dry-run.rb @@ -35,6 +35,7 @@ # - terraform # - pub # - swift +# - devcontainers # rubocop:disable Style/GlobalVars @@ -52,6 +53,7 @@ $LOAD_PATH << "./cargo/lib" $LOAD_PATH << "./common/lib" $LOAD_PATH << "./composer/lib" +$LOAD_PATH << "./devcontainers/lib" $LOAD_PATH << "./docker/lib" $LOAD_PATH << "./elm/lib" $LOAD_PATH << "./git_submodules/lib" @@ -95,6 +97,7 @@ require "dependabot/bundler" require "dependabot/cargo" require "dependabot/composer" +require "dependabot/devcontainers" require "dependabot/docker" require "dependabot/elm" require "dependabot/git_submodules" diff --git a/common/lib/dependabot/config/file.rb b/common/lib/dependabot/config/file.rb index 39e553c4a6..c73777d8c5 100644 --- a/common/lib/dependabot/config/file.rb +++ b/common/lib/dependabot/config/file.rb @@ -61,6 +61,7 @@ def self.parse(config) "bundler" => "bundler", "cargo" => "cargo", "composer" => "composer", + "devcontainer" => "devcontainers", "docker" => "docker", "elm" => "elm", "github-actions" => "github_actions", diff --git a/devcontainers/.bundle/config b/devcontainers/.bundle/config new file mode 100644 index 0000000000..3faf5cfe5e --- /dev/null +++ b/devcontainers/.bundle/config @@ -0,0 +1 @@ +BUNDLE_GEMFILE: "../dependabot-updater/Gemfile" diff --git a/devcontainers/.gitignore b/devcontainers/.gitignore new file mode 100644 index 0000000000..e2070370a1 --- /dev/null +++ b/devcontainers/.gitignore @@ -0,0 +1,5 @@ +/.bundle/ +!.bundle/config +/.env +/tmp +/dependabot-*.gem diff --git a/devcontainers/.rubocop.yml b/devcontainers/.rubocop.yml new file mode 100644 index 0000000000..fc2019d46a --- /dev/null +++ b/devcontainers/.rubocop.yml @@ -0,0 +1 @@ +inherit_from: ../.rubocop.yml diff --git a/devcontainers/Dockerfile b/devcontainers/Dockerfile new file mode 100644 index 0000000000..01efde8c73 --- /dev/null +++ b/devcontainers/Dockerfile @@ -0,0 +1,38 @@ +FROM ghcr.io/dependabot/dependabot-updater-core +ARG TARGETARCH + +# OS dependencies +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + make \ + ca-certificates \ + gnupg \ + build-essential \ + curl \ + && mkdir -p /etc/apt/keyrings \ + && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \ + && NODE_MAJOR=18 \ + && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list + +RUN apt-get update -y \ + && apt-get install -y nodejs \ + && rm -rf /var/lib/apt/lists/* + +RUN npm install -g @devcontainers/cli + +USER dependabot + +# Needed because tools like dependabot/cli will proxy/MITM the traffic +# to the registry with a cert that (without this change) is not known +# to the dev container process. See: +# * https://github.com/microsoft/vscode-remote-release/issues/6092 +# * https://github.com/devcontainers/cli/blob/2d24543380dfc4d54e76b582536b52226af133c8/src/spec-utils/httpRequest.ts#L130-L162 +# * https://github.com/devcontainers/cli/pull/559 +ENV NODE_EXTRA_CA_CERTS=/etc/ssl/certs/ca-certificates.crt + +# Sanity check +RUN devcontainer --version + +COPY --chown=dependabot:dependabot devcontainers $DEPENDABOT_HOME/devcontainers +COPY --chown=dependabot:dependabot common $DEPENDABOT_HOME/common +COPY --chown=dependabot:dependabot updater $DEPENDABOT_HOME/dependabot-updater diff --git a/devcontainers/README.md b/devcontainers/README.md new file mode 100644 index 0000000000..81dde5647a --- /dev/null +++ b/devcontainers/README.md @@ -0,0 +1,18 @@ +## `dependabot-devcontainers` + +Dev Containers support for [`dependabot-core`][core-repo]. + +### Running locally + +1. Start a development shell + + ``` + $ bin/docker-dev-shell devcontainers + ``` + +2. Run tests + ``` + [dependabot-core-dev] ~ $ cd devcontainers && rspec + ``` + +[core-repo]: https://github.com/dependabot/dependabot-core diff --git a/devcontainers/dependabot-devcontainers.gemspec b/devcontainers/dependabot-devcontainers.gemspec new file mode 100644 index 0000000000..a19c7c03f0 --- /dev/null +++ b/devcontainers/dependabot-devcontainers.gemspec @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +Gem::Specification.new do |spec| + common_gemspec = + Bundler.load_gemspec_uncached("../common/dependabot-common.gemspec") + + spec.name = "dependabot-devcontainers" + spec.summary = "Provides Dependabot support for Dev Containers" + spec.description = "Dependabot-Devcontainers provides support for managing dev container versioning via Dependabot." + + spec.author = common_gemspec.author + spec.email = common_gemspec.email + spec.homepage = common_gemspec.homepage + spec.license = common_gemspec.license + + spec.metadata = { + "bug_tracker_uri" => common_gemspec.metadata["bug_tracker_uri"], + "changelog_uri" => common_gemspec.metadata["changelog_uri"] + } + + spec.version = common_gemspec.version + spec.required_ruby_version = common_gemspec.required_ruby_version + spec.required_rubygems_version = common_gemspec.required_ruby_version + + spec.require_path = "lib" + spec.files = Dir["lib/**/*"] + + spec.add_dependency "dependabot-common", Dependabot::VERSION + + common_gemspec.development_dependencies.each do |dep| + spec.add_development_dependency dep.name, *dep.requirement.as_list + end +end diff --git a/devcontainers/lib/dependabot/devcontainers.rb b/devcontainers/lib/dependabot/devcontainers.rb new file mode 100644 index 0000000000..7ac8008532 --- /dev/null +++ b/devcontainers/lib/dependabot/devcontainers.rb @@ -0,0 +1,23 @@ +# typed: strong +# frozen_string_literal: true + +# These all need to be required so the various classes can be registered in a +# lookup table of package manager names to concrete classes. +require "dependabot/devcontainers/file_fetcher" +require "dependabot/devcontainers/file_parser" +require "dependabot/devcontainers/update_checker" +require "dependabot/devcontainers/file_updater" +require "dependabot/devcontainers/metadata_finder" +require "dependabot/devcontainers/requirement" +require "dependabot/devcontainers/version" + +require "dependabot/pull_request_creator/labeler" +Dependabot::PullRequestCreator::Labeler + .register_label_details("devcontainers", name: "devcontainers_package_manager", colour: "2753E3") + +require "dependabot/dependency" +Dependabot::Dependency + .register_production_check("devcontainers", ->(_) { true }) + +require "dependabot/utils" +Dependabot::Utils.register_always_clone("devcontainers") diff --git a/devcontainers/lib/dependabot/devcontainers/file_fetcher.rb b/devcontainers/lib/dependabot/devcontainers/file_fetcher.rb new file mode 100644 index 0000000000..7e928863d0 --- /dev/null +++ b/devcontainers/lib/dependabot/devcontainers/file_fetcher.rb @@ -0,0 +1,14 @@ +# typed: strong +# frozen_string_literal: true + +require "dependabot/file_fetchers" +require "dependabot/file_fetchers/base" + +module Dependabot + module Devcontainers + class FileFetcher < Dependabot::FileFetchers::Base + end + end +end + +Dependabot::FileFetchers.register("devcontainers", Dependabot::Devcontainers::FileFetcher) diff --git a/devcontainers/lib/dependabot/devcontainers/file_parser.rb b/devcontainers/lib/dependabot/devcontainers/file_parser.rb new file mode 100644 index 0000000000..c532317761 --- /dev/null +++ b/devcontainers/lib/dependabot/devcontainers/file_parser.rb @@ -0,0 +1,21 @@ +# typed: true +# frozen_string_literal: true + +require "dependabot/file_parsers" +require "dependabot/file_parsers/base" + +module Dependabot + module Devcontainers + class FileParser < Dependabot::FileParsers::Base + def parse + [] + end + + private + + def check_required_files; end + end + end +end + +Dependabot::FileParsers.register("devcontainers", Dependabot::Devcontainers::FileParser) diff --git a/devcontainers/lib/dependabot/devcontainers/file_updater.rb b/devcontainers/lib/dependabot/devcontainers/file_updater.rb new file mode 100644 index 0000000000..28a5a22d19 --- /dev/null +++ b/devcontainers/lib/dependabot/devcontainers/file_updater.rb @@ -0,0 +1,14 @@ +# typed: strong +# frozen_string_literal: true + +require "dependabot/file_updaters" +require "dependabot/file_updaters/base" + +module Dependabot + module Devcontainers + class FileUpdater < Dependabot::FileUpdaters::Base + end + end +end + +Dependabot::FileUpdaters.register("devcontainers", Dependabot::Devcontainers::FileUpdater) diff --git a/devcontainers/lib/dependabot/devcontainers/metadata_finder.rb b/devcontainers/lib/dependabot/devcontainers/metadata_finder.rb new file mode 100644 index 0000000000..2cc2b4b21d --- /dev/null +++ b/devcontainers/lib/dependabot/devcontainers/metadata_finder.rb @@ -0,0 +1,21 @@ +# typed: true +# frozen_string_literal: true + +require "dependabot/metadata_finders" +require "dependabot/metadata_finders/base" + +module Dependabot + module Devcontainers + class MetadataFinder < Dependabot::MetadataFinders::Base + private + + def look_up_source + # TODO: Make upstream changes to dev container CLI to point to docs. + # Specifically, 'devcontainers features info' can be augmented to expose documentationUrl + nil + end + end + end +end + +Dependabot::MetadataFinders.register("devcontainers", Dependabot::Devcontainers::MetadataFinder) diff --git a/devcontainers/lib/dependabot/devcontainers/requirement.rb b/devcontainers/lib/dependabot/devcontainers/requirement.rb new file mode 100644 index 0000000000..1f401a2753 --- /dev/null +++ b/devcontainers/lib/dependabot/devcontainers/requirement.rb @@ -0,0 +1,39 @@ +# typed: true +# frozen_string_literal: true + +require "sorbet-runtime" + +require "dependabot/requirement" +require "dependabot/utils" + +module Dependabot + module Devcontainers + class Requirement < Dependabot::Requirement + extend T::Sig + + # For consistency with other languages, we define a requirements array. + # Devcontainers don't have an `OR` separator for requirements, so it + # always contains a single element. + sig { override.params(requirement_string: T.nilable(String)).returns(T::Array[Requirement]) } + def self.requirements_array(requirement_string) + [new(requirement_string)] + end + + def satisfied_by?(version) + super(version.release_part) + end + + # Patches Gem::Requirement to make it accept requirement strings like + # "~> 4.2.5, >= 4.2.5.1" without first needing to split them. + def initialize(*requirements) + requirements = requirements.flatten.flat_map do |req_string| + req_string.split(",").map(&:strip) + end + + super(requirements) + end + end + end +end + +Dependabot::Utils.register_requirement_class("devcontainers", Dependabot::Devcontainers::Requirement) diff --git a/devcontainers/lib/dependabot/devcontainers/update_checker.rb b/devcontainers/lib/dependabot/devcontainers/update_checker.rb new file mode 100644 index 0000000000..ef0a88c13a --- /dev/null +++ b/devcontainers/lib/dependabot/devcontainers/update_checker.rb @@ -0,0 +1,14 @@ +# typed: strong +# frozen_string_literal: true + +require "dependabot/update_checkers" +require "dependabot/update_checkers/base" + +module Dependabot + module Devcontainers + class UpdateChecker < Dependabot::UpdateCheckers::Base + end + end +end + +Dependabot::UpdateCheckers.register("devcontainers", Dependabot::Devcontainers::UpdateChecker) diff --git a/devcontainers/lib/dependabot/devcontainers/version.rb b/devcontainers/lib/dependabot/devcontainers/version.rb new file mode 100644 index 0000000000..9d19a11c6e --- /dev/null +++ b/devcontainers/lib/dependabot/devcontainers/version.rb @@ -0,0 +1,14 @@ +# typed: strong +# frozen_string_literal: true + +require "dependabot/version" +require "dependabot/utils" + +module Dependabot + module Devcontainers + class Version < Dependabot::Version + end + end +end + +Dependabot::Utils.register_version_class("devcontainers", Dependabot::Devcontainers::Version) diff --git a/devcontainers/script/ci-test b/devcontainers/script/ci-test new file mode 100755 index 0000000000..654f259cd2 --- /dev/null +++ b/devcontainers/script/ci-test @@ -0,0 +1,6 @@ +#!/bin/bash + +set -e + +bundle install +bundle exec turbo_tests --verbose diff --git a/devcontainers/spec/dependabot/devcontainers/file_fetcher_spec.rb b/devcontainers/spec/dependabot/devcontainers/file_fetcher_spec.rb new file mode 100644 index 0000000000..f670cbee7b --- /dev/null +++ b/devcontainers/spec/dependabot/devcontainers/file_fetcher_spec.rb @@ -0,0 +1,10 @@ +# typed: false +# frozen_string_literal: true + +require "spec_helper" +require "dependabot/devcontainers/file_fetcher" +require_common_spec "file_fetchers/shared_examples_for_file_fetchers" + +RSpec.describe Dependabot::Devcontainers::FileFetcher do + it_behaves_like "a dependency file fetcher" +end diff --git a/devcontainers/spec/dependabot/devcontainers_spec.rb b/devcontainers/spec/dependabot/devcontainers_spec.rb new file mode 100644 index 0000000000..702bd4bb34 --- /dev/null +++ b/devcontainers/spec/dependabot/devcontainers_spec.rb @@ -0,0 +1,10 @@ +# typed: false +# frozen_string_literal: true + +require "spec_helper" +require "dependabot/devcontainers" +require_common_spec "shared_examples_for_autoloading" + +RSpec.describe Dependabot::Devcontainers do + it_behaves_like "it registers the required classes", "devcontainers" +end diff --git a/devcontainers/spec/spec_helper.rb b/devcontainers/spec/spec_helper.rb new file mode 100644 index 0000000000..50d7c79d63 --- /dev/null +++ b/devcontainers/spec/spec_helper.rb @@ -0,0 +1,12 @@ +# typed: true +# frozen_string_literal: true + +def common_dir + @common_dir ||= Gem::Specification.find_by_name("dependabot-common").gem_dir +end + +def require_common_spec(path) + require "#{common_dir}/spec/dependabot/#{path}" +end + +require "#{common_dir}/spec/spec_helper.rb" diff --git a/omnibus/dependabot-omnibus.gemspec b/omnibus/dependabot-omnibus.gemspec index 3fdda0368e..7d8121a9da 100644 --- a/omnibus/dependabot-omnibus.gemspec +++ b/omnibus/dependabot-omnibus.gemspec @@ -30,6 +30,7 @@ Gem::Specification.new do |spec| spec.add_dependency "dependabot-cargo", Dependabot::VERSION spec.add_dependency "dependabot-common", Dependabot::VERSION spec.add_dependency "dependabot-composer", Dependabot::VERSION + spec.add_dependency "dependabot-devcontainers", Dependabot::VERSION spec.add_dependency "dependabot-docker", Dependabot::VERSION spec.add_dependency "dependabot-elm", Dependabot::VERSION spec.add_dependency "dependabot-github_actions", Dependabot::VERSION diff --git a/omnibus/lib/dependabot/omnibus.rb b/omnibus/lib/dependabot/omnibus.rb index 9ae06bb5a2..4eb0cac87f 100644 --- a/omnibus/lib/dependabot/omnibus.rb +++ b/omnibus/lib/dependabot/omnibus.rb @@ -18,3 +18,4 @@ require "dependabot/bundler" require "dependabot/pub" require "dependabot/swift" +require "dependabot/devcontainers" diff --git a/script/dependabot b/script/dependabot index 9a75dd1d4e..eabad82837 100755 --- a/script/dependabot +++ b/script/dependabot @@ -9,6 +9,7 @@ dependabot \ -v "$(pwd)"/cargo:/home/dependabot/cargo \ -v "$(pwd)"/common:/home/dependabot/common \ -v "$(pwd)"/composer:/home/dependabot/composer \ + -v "$(pwd)"/devcontainers:/home/dependabot/devcontainers \ -v "$(pwd)"/docker:/home/dependabot/docker \ -v "$(pwd)"/elm:/home/dependabot/elm \ -v "$(pwd)"/git_submodules:/home/dependabot/git_submodules \ diff --git a/sorbet/config b/sorbet/config index d6f058f063..293bd98aa1 100644 --- a/sorbet/config +++ b/sorbet/config @@ -12,6 +12,7 @@ --ignore=cargo/spec/ --ignore=common/spec/ --ignore=composer/spec/ +--ignore=devcontainers/spec/ --ignore=docker/spec/ --ignore=elm/spec/ --ignore=git_submodules/spec/ diff --git a/updater/Gemfile b/updater/Gemfile index 6affa6e13a..938e333829 100644 --- a/updater/Gemfile +++ b/updater/Gemfile @@ -6,6 +6,7 @@ gem "dependabot-bundler", path: "../bundler" gem "dependabot-cargo", path: "../cargo" gem "dependabot-common", path: "../common" gem "dependabot-composer", path: "../composer" +gem "dependabot-devcontainers", path: "../devcontainers" gem "dependabot-docker", path: "../docker" gem "dependabot-elm", path: "../elm" gem "dependabot-github_actions", path: "../github_actions" diff --git a/updater/Gemfile.lock b/updater/Gemfile.lock index 39dee714ad..5ab2c4b757 100644 --- a/updater/Gemfile.lock +++ b/updater/Gemfile.lock @@ -38,6 +38,12 @@ PATH dependabot-composer (0.241.0) dependabot-common (= 0.241.0) +PATH + remote: ../devcontainers + specs: + dependabot-devcontainers (0.241.0) + dependabot-common (= 0.241.0) + PATH remote: ../docker specs: @@ -344,6 +350,7 @@ DEPENDENCIES dependabot-cargo! dependabot-common! dependabot-composer! + dependabot-devcontainers! dependabot-docker! dependabot-elm! dependabot-git_submodules! diff --git a/updater/lib/dependabot/setup.rb b/updater/lib/dependabot/setup.rb index 02f5a5f062..5892346a57 100644 --- a/updater/lib/dependabot/setup.rb +++ b/updater/lib/dependabot/setup.rb @@ -38,7 +38,8 @@ npm_and_yarn| bundler| pub| - swift + swift| + devcontainers )}x config.before_send = ->(event, hint) { Dependabot::Sentry::Processor.process_chain(event, hint) } @@ -66,3 +67,4 @@ require "dependabot/bundler" require "dependabot/pub" require "dependabot/swift" +require "dependabot/devcontainers"