From 108d0aac251caa6e95f661baa68e562ba6039ffa Mon Sep 17 00:00:00 2001 From: "David A." <3106338+Dakad@users.noreply.github.com> Date: Sun, 9 Feb 2025 16:25:50 +0100 Subject: [PATCH 1/8] Add Hadolint configuration and linting workflow - Create .hadolint.yaml with custom linting rules - Add GitHub Actions workflow for Dockerfile linting - Configure Hadolint to ignore specific rules and use verbose output --- .github/workflows/hadolint.yml | 15 +++++++++++++++ .hadolint.yaml | 14 ++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 .github/workflows/hadolint.yml create mode 100644 .hadolint.yaml diff --git a/.github/workflows/hadolint.yml b/.github/workflows/hadolint.yml new file mode 100644 index 0000000..c0a577a --- /dev/null +++ b/.github/workflows/hadolint.yml @@ -0,0 +1,15 @@ +name: Hadolint - Dockerfile linting +on: + workflow_dispatch: + pull_request: + types: [opened, synchronize] + paths: + - "Dockerfile" +jobs: + hadolint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: hadolint/hadolint-action@v3.1.0 + with: + verbose: true diff --git a/.hadolint.yaml b/.hadolint.yaml new file mode 100644 index 0000000..77a9be4 --- /dev/null +++ b/.hadolint.yaml @@ -0,0 +1,14 @@ + # list of rules: https://github.com/hadolint/hadolint/wiki +ignored: + - DL3008 # Pin versions in apt-get install - https://github.com/hadolint/hadolint/wiki/DL3008 + # - DL3018 # Pin versions in apk add - https://github.com/hadolint/hadolint/wiki/DL3018 + # - DL3028 # Pin version in gem install - https://github.com/hadolint/hadolint/wiki/DL3028 + +trustedRegistries: + - docker.io + - "*.gcr.io" + - "*.ecr.eu-west-1.amazonaws.com" + +override: + warning: + - DL3028 # Pin version in gem install - https://github.com/hadolint/hadolint/wiki/DL3028 \ No newline at end of file From 9038bbf09db17707382cdffc1f56c538f5dd99be Mon Sep 17 00:00:00 2001 From: "David A." <3106338+Dakad@users.noreply.github.com> Date: Sun, 9 Feb 2025 17:15:20 +0100 Subject: [PATCH 2/8] Add GitHub Actions workflow for Docker image build and publish - Create workflow to build and push Docker image to GitHub Container Registry - Support building on use_head_commit branch and version tags - Configure metadata and tagging for Docker images - Add artifact attestation for build provenance --- .../build-and-publish-docker-image.yaml | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 .github/workflows/build-and-publish-docker-image.yaml diff --git a/.github/workflows/build-and-publish-docker-image.yaml b/.github/workflows/build-and-publish-docker-image.yaml new file mode 100644 index 0000000..99e02d4 --- /dev/null +++ b/.github/workflows/build-and-publish-docker-image.yaml @@ -0,0 +1,60 @@ +name: Build and publish docker image +on: + workflow_dispatch: + push: + branches: + - main + - use_head_commit + tags: + # any tag names starting with 'v' + - 'v*' +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + +jobs: + build: + runs-on: ubuntu-latest + permissions: + contents: read + # Gives the action the ability to mint the OIDC token necessary to request a Sigstore signing certificate + id-token: write + # Permission necessary to persist the attestation + attestations: write + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Set-up Docker Buildx + uses: docker/setup-buildx-action@v3 + with: + platforms: linux/amd64 + - name: Log in to the Github Container registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + tags: | + type=ref,event=branch + type=ref,event=pr + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + - name: Build and push Docker image + id: push + uses: docker/build-push-action@v6 + with: + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + - name: Generate artifact attestation + uses: actions/attest-build-provenance@v2 + with: + subject-name: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME}} + subject-digest: ${{ steps.push.outputs.digest }} + push-to-registry: true \ No newline at end of file From 98f5021fe070d688239ac899586850926cb0e65a Mon Sep 17 00:00:00 2001 From: Kevin Tricot Date: Wed, 3 Dec 2025 15:12:58 +0100 Subject: [PATCH 3/8] update our pronto-ruby to the latest (based on Renato's work) --- .github/dependabot.yml | 14 +- .github/workflows/run-specs.yml | 23 ++ .github/workflows/self.yml | 8 +- .gitignore | 6 + .rubocop.yml | 61 +++ .ruby-version | 2 +- CHANGELOG.md | 80 ++++ Dockerfile | 24 +- Gemfile | 66 +-- Gemfile.lock | 381 +++++++++++------- README.md | 35 +- pronto | 23 +- spec/all_spec.rb | 4 +- .../github_action_check_run_formatter_spec.rb | 335 ++++++++------- spec/spec_helper.rb | 12 +- src/annotation.rb | 10 +- src/github_action_check_run_formatter.rb | 33 +- 17 files changed, 719 insertions(+), 398 deletions(-) create mode 100644 .github/workflows/run-specs.yml create mode 100644 .rubocop.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 895eb07..d343da9 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -4,4 +4,16 @@ updates: directory: "/" schedule: interval: monthly - open-pull-requests-limit: 10 \ No newline at end of file + open-pull-requests-limit: 10 + ignore: + - dependency-name: pry + versions: + - ">= 0.13.a" + - "< 0.14" + groups: + rubocop-dependencies: + patterns: + - "rubocop*" + pronto-dependencies: + patterns: + - "pronto*" \ No newline at end of file diff --git a/.github/workflows/run-specs.yml b/.github/workflows/run-specs.yml new file mode 100644 index 0000000..452e4e3 --- /dev/null +++ b/.github/workflows/run-specs.yml @@ -0,0 +1,23 @@ +name: Specs + +on: + push: + +jobs: + spec: + + runs-on: ubuntu-latest + steps: + - name: Install packages + run: sudo apt-get update && sudo apt-get install --no-install-recommends -y libjemalloc2 + - uses: actions/checkout@v6 + - name: Set up Ruby + # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby, + # change this to (see https://github.com/ruby/setup-ruby#versioning): + uses: ruby/setup-ruby@v1 + with: + bundler-cache: true # runs 'bundle install' and caches installed gems automatically + - name: Unpack test repo + run: cd spec/fixtures && tar -zxf test.git.tar.gz + - name: Run tests + run: bundle exec rspec diff --git a/.github/workflows/self.yml b/.github/workflows/self.yml index aabfb09..ad23b4a 100644 --- a/.github/workflows/self.yml +++ b/.github/workflows/self.yml @@ -5,14 +5,18 @@ on: jobs: run: + permissions: + checks: write + contents: read runs-on: ubuntu-latest steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v4 + - run: git fetch origin main - name: Pronto Run uses: ./ with: target: origin/main runners: >- - rubocop bundler_audit brakeman yamllint + rubocop brakeman env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore index ba65472..e9cdacf 100644 --- a/.gitignore +++ b/.gitignore @@ -49,3 +49,9 @@ build-iPhoneSimulator/ # unless supporting rvm < 1.11.0 or doing something fancy, ignore this: .rvmrc + +## Specific to RubyMine +.idea + +## Specific to asdf +.tool-versions diff --git a/.rubocop.yml b/.rubocop.yml new file mode 100644 index 0000000..1964b58 --- /dev/null +++ b/.rubocop.yml @@ -0,0 +1,61 @@ +plugins: + - rubocop-capybara + - rubocop-factory_bot + - rubocop-minitest + - rubocop-performance + - rubocop-rake + - rubocop-sequel + - rubocop-yard + +AllCops: + NewCops: enable + DisplayStyleGuide: true + +Metrics: + Enabled: false + +Layout/LineLength: + Enabled: false + +# Align `end` with the matching keyword or starting expression except for +# assignments, where it should be aligned with the LHS. +Layout/EndAlignment: + EnforcedStyleAlignWith: variable + +# Method definitions after `private` or `protected` isolated calls need one +# extra level of indentation. +Layout/IndentationConsistency: + EnforcedStyle: indented_internal_methods + +Style/FrozenStringLiteralComment: + EnforcedStyle: always + +# Use `foo { bar }` not `foo {bar}`. +Layout/SpaceInsideBlockBraces: + EnforcedStyleForEmptyBraces: space + +# Check quotes usage according to lint rule below. +Style/StringLiterals: + EnforcedStyle: double_quotes + +Style/RedundantReturn: + AllowMultipleReturnValues: true + +Style/Semicolon: + AllowAsExpressionSeparator: true + +Style/StringLiteralsInInterpolation: + EnforcedStyle: double_quotes + +Style/RescueStandardError: + EnforcedStyle: implicit + +Style/SymbolArray: + MinSize: 1 + +Style/DocumentationMethod: + Enabled: true + RequireForNonPublicMethods: true + +YARD/MismatchName: + EnforcedStylePrototypeName: before diff --git a/.ruby-version b/.ruby-version index 010d183..2aa5131 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -3.3.7 \ No newline at end of file +3.4.7 diff --git a/CHANGELOG.md b/CHANGELOG.md index 40dc6e1..2c54044 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,83 @@ +4.6-r | 2025-11-28 +--- +Changes +* Upgrade ruby to 3.3.x by @renatolond in https://github.com/renatolond/pronto-ruby/pull/70 +* Upgrade ruby to 3.4.7 by @renatolond in https://github.com/renatolond/pronto-ruby/pull/71 + +4.5-r | 2025-11-28 +--- +Changes +* Bump rubocop-rails from 2.32.0 to 2.33.0 in the rubocop-dependencies group by @dependabot[bot] in https://github.com/renatolond/pronto-ruby/pull/57 +* Bump rubocop-rails from 2.33.0 to 2.33.3 in the rubocop-dependencies group by @dependabot[bot] in https://github.com/renatolond/pronto-ruby/pull/58 +* Bump the rubocop-dependencies group with 2 updates by @dependabot[bot] in https://github.com/renatolond/pronto-ruby/pull/59 +* Bump rubocop-performance from 1.25.0 to 1.26.0 in the rubocop-dependencies group by @dependabot[bot] in https://github.com/renatolond/pronto-ruby/pull/60 +* Bump rubocop-rails from 2.33.3 to 2.33.4 in the rubocop-dependencies group by @dependabot[bot] in https://github.com/renatolond/pronto-ruby/pull/61 +* Bump rubocop-performance from 1.26.0 to 1.26.1 in the rubocop-dependencies group by @dependabot[bot] in https://github.com/renatolond/pronto-ruby/pull/62 +* Bump rspec from 3.13.1 to 3.13.2 by @dependabot[bot] in https://github.com/renatolond/pronto-ruby/pull/63 +* Bump webmock from 3.25.1 to 3.26.0 by @dependabot[bot] in https://github.com/renatolond/pronto-ruby/pull/64 +* Bump webmock from 3.26.0 to 3.26.1 by @dependabot[bot] in https://github.com/renatolond/pronto-ruby/pull/65 +* Bump the rubocop-dependencies group with 2 updates by @dependabot[bot] in https://github.com/renatolond/pronto-ruby/pull/66 +* Bump rubocop-rails from 2.33.4 to 2.34.0 in the rubocop-dependencies group by @dependabot[bot] in https://github.com/renatolond/pronto-ruby/pull/67 +* Bump rubocop-rails from 2.34.0 to 2.34.1 in the rubocop-dependencies group by @dependabot[bot] in https://github.com/renatolond/pronto-ruby/pull/68 + +4.4-r | 2025-06-30 +--- +Changes +* Bump rubocop-rspec from 3.5.0 to 3.6.0 in the rubocop-dependencies group by @dependabot in https://github.com/renatolond/pronto-ruby/pull/49 +* Bump the pronto-dependencies group across 1 directory with 2 updates by @dependabot in https://github.com/renatolond/pronto-ruby/pull/51 +* Bump rubocop-rails from 2.31.0 to 2.32.0 in the rubocop-dependencies group by @dependabot in https://github.com/renatolond/pronto-ruby/pull/52 +* Bump rspec from 3.13.0 to 3.13.1 by @dependabot in https://github.com/renatolond/pronto-ruby/pull/53 +* Bump rubocop-minitest from 0.38.0 to 0.38.1 in the rubocop-dependencies group by @dependabot in https://github.com/renatolond/pronto-ruby/pull/54 +* Bump rubocop-thread_safety from 0.7.2 to 0.7.3 in the rubocop-dependencies group by @dependabot in https://github.com/renatolond/pronto-ruby/pull/55 +* Bump rubocop-yard from 0.10.0 to 1.0.0 in the rubocop-dependencies group by @dependabot in https://github.com/renatolond/pronto-ruby/pull/56 + +4.3-r | 2025-04-01 +--- +Changes +* Bump rubocop-rails from 2.28.0 to 2.29.0 in the rubocop-dependencies group by @dependabot in https://github.com/renatolond/pronto-ruby/pull/33 +* Bump pronto-stylelint from 0.10.3 to 0.11.0 in the pronto-dependencies group by @dependabot in https://github.com/renatolond/pronto-ruby/pull/34 +* Bump the rubocop-dependencies group with 2 updates by @dependabot in https://github.com/renatolond/pronto-ruby/pull/35 +* Update checkout version in workflow by @renatolond in https://github.com/renatolond/pronto-ruby/pull/36 +* Bump rubocop-rails from 2.29.0 to 2.29.1 in the rubocop-dependencies group by @dependabot in https://github.com/renatolond/pronto-ruby/pull/37 +* Bump webmock from 3.24.0 to 3.25.0 by @dependabot in https://github.com/renatolond/pronto-ruby/pull/38 +* Bump the rubocop-dependencies group with 5 updates by @dependabot in https://github.com/renatolond/pronto-ruby/pull/39 +* Bump the rubocop-dependencies group across 1 directory with 6 updates by @dependabot in https://github.com/renatolond/pronto-ruby/pull/45 +* Bump webmock from 3.25.0 to 3.25.1 by @dependabot in https://github.com/renatolond/pronto-ruby/pull/44 +* Bump the rubocop-dependencies group with 7 updates by @dependabot in https://github.com/renatolond/pronto-ruby/pull/46 +* Bump ruby to 3.2.8 by @renatolond in https://github.com/renatolond/pronto-ruby/pull/48 + +4.2-r | 2025-01-13 +--- +Changes: +* Bump the pronto-dependencies group with 4 updates by @dependabot in https://github.com/renatolond/pronto-ruby/pull/30 +* Bump the rubocop-dependencies group across 1 directory with 5 updates by @dependabot in https://github.com/renatolond/pronto-ruby/pull/29 +* Add rubocop-capybara gem by @renatolond in https://github.com/renatolond/pronto-ruby/pull/31 +* Bump ruby to 3.2.6 by @renatolond in https://github.com/renatolond/pronto-ruby/pull/32 + +4.1-r | 2024-11-13 +--- +Changes: +* Bump the rubocop-dependencies group with 2 updates by @dependabot in #16 +* Bump rspec from 3.11.0 to 3.13.0 by @dependabot in #13 +* Bump webmock from 3.23.1 to 3.24.0 by @dependabot in #18 +* Bump the rubocop-dependencies group across 1 directory with 4 updates by @dependabot in #23 + +4.0-r | 2024-09-18 +--- +**BREAKING CHANGES:** + + * Unlike the original action, this fork is focused on Ruby-only. This means any node-related runners are removed. + + * Pronto is upgraded, the following runners are not yet compatible and therefore removed: + - pronto-bundler_audit + - pronto-yamllint + +Changes: + * Upgrades ruby to 3.2.2 + * Upgrades Bundler to 2.4.3 + * Bump rubocop to 1.66.1 + * Upgrades all runners and dependencies + 4.0 | 2022-03-17 --- diff --git a/Dockerfile b/Dockerfile index b914405..b7afdea 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,30 +1,34 @@ -FROM ruby:3.3 +FROM ruby:3.4.7 -LABEL maintainer="QAWAII " -LABEL org.opencontainers.image.source https://github.com/apptweak/pronto-ruby +LABEL maintainer="Devex " +LABEL org.opencontainers.image.source="https://github.com/apptweak/pronto-ruby" -ARG BUNDLER_VERSION="2.6.3" -ARG NODE_VERSION=14 +ARG BUNDLER_VERSION="2.7.2" + +RUN apt-get update && apt-get install -y curl RUN apt-get update && \ - apt-get install -y --no-install-recommends \ + apt-get install --no-install-recommends -y \ + ruby-dev \ build-essential \ cmake \ - curl \ git \ pkg-config \ openssl \ + libssl-dev \ + libzstd-dev \ + libz-dev \ && rm -rf /var/lib/apt/lists/* RUN gem install bundler --version "${BUNDLER_VERSION}" WORKDIR /runner -COPY Gemfile* ./ +COPY Gemfile* .bundle ./ -RUN bundle --retry 4 +RUN bundle install --retry 4 -ENV BUNDLE_GEMFILE /runner/Gemfile +ENV BUNDLE_GEMFILE=/runner/Gemfile COPY . ./ diff --git a/Gemfile b/Gemfile index e75b604..cada1c4 100644 --- a/Gemfile +++ b/Gemfile @@ -1,41 +1,41 @@ # frozen_string_literal: true -# -*- mode: ruby -*- -# Run: bundle install +source "https://rubygems.org" -source 'https://rubygems.org' - -gem 'pronto' -# Source repo has been archived: https://github.com/prontolabs/pronto-brakeman -gem 'pronto-brakeman', github: "storypark/pronto-brakeman", require: false -gem 'pronto-bundler_audit', require: false -gem 'pronto-eslint_npm', require: false -gem 'pronto-rails_best_practices', require: false -gem 'pronto-rails_schema', require: false -gem 'pronto-rubocop', require: false +gem "pronto" +gem "pronto-brakeman", require: false +gem "pronto-rubocop", require: false +# gem 'pronto-bundler_audit', require: false # Temporarily disabled, incompatible with current pronto +gem "pronto-eslint_npm", require: false +gem "pronto-rails_best_practices", require: false +gem "pronto-rails_schema", require: false # gem 'pronto-poper', require: false -gem 'pronto-erb_lint', require: false -gem 'pronto-fasterer', require: false -gem 'pronto-flay', require: false -gem 'pronto-reek', require: false -gem 'pronto-scss', require: false -gem 'pronto-stylelint', require: false -gem 'pronto-yamllint', require: false +# gem 'pronto-yamllint', require: false # Temporarily disabled, seems to throw an error +gem "pronto-erb_lint", require: false +gem "pronto-fasterer", require: false +gem "pronto-flay", require: false +gem "pronto-reek", require: false +gem "pronto-scss", require: false +gem "pronto-stylelint", require: false + +gem "rubocop-capybara", require: false +gem "rubocop-factory_bot", require: false +gem "rubocop-i18n", require: false +gem "rubocop-minitest", require: false +gem "rubocop-performance", require: false +gem "rubocop-rails", require: false +gem "rubocop-rake", require: false +gem "rubocop-rspec", require: false +gem "rubocop-sequel", require: false +gem "rubocop-thread_safety", require: false +gem "rubocop-yard", require: false -gem 'rubocop-i18n', require: false -gem 'rubocop-minitest', require: false -gem 'rubocop-performance', require: false -gem 'rubocop-rails', require: false -gem 'rubocop-rake', require: false -gem 'rubocop-rspec', require: false -gem 'rubocop-sequel', require: false -gem 'rubocop-thread_safety', require: false -gem 'rubocop-yard', require: false +gem "rugged", "< 1.7.1" # Rugged v1.7.1 introduces an issue with pronto, see https://github.com/prontolabs/pronto/issues/447 for updates group :test do - gem 'climate_control' - gem 'debug' - gem 'rb-readline' - gem 'rspec' - gem 'webmock' + gem "climate_control" + gem "pry" + gem "rb-readline" + gem "rspec" + gem "webmock" end diff --git a/Gemfile.lock b/Gemfile.lock index 93d89b2..c66edb1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,37 +1,29 @@ -GIT - remote: https://github.com/storypark/pronto-brakeman.git - revision: dff26bfe31930f987a5ee72e99d18a6cdc91d40c - specs: - pronto-brakeman (0.11.2.pre.1) - brakeman (>= 3.2.0) - pronto (~> 0.11.0) - GEM remote: https://rubygems.org/ specs: - actionview (7.2.2) - activesupport (= 7.2.2) + actionview (8.1.1) + activesupport (= 8.1.1) builder (~> 3.1) erubi (~> 1.11) rails-dom-testing (~> 2.2) rails-html-sanitizer (~> 1.6) - activesupport (7.2.2) + activesupport (8.1.1) base64 - benchmark (>= 0.3) bigdecimal concurrent-ruby (~> 1.0, >= 1.3.1) connection_pool (>= 2.2.5) drb i18n (>= 1.6, < 2) + json logger (>= 1.4.2) minitest (>= 5.1) securerandom (>= 0.3) tzinfo (~> 2.0, >= 2.0.5) + uri (>= 0.13.1) addressable (2.8.7) public_suffix (>= 2.0.2, < 7.0) - ast (2.4.2) - base64 (0.2.0) - benchmark (0.4.0) + ast (2.4.3) + base64 (0.3.0) better_html (2.1.1) actionview (>= 6.0) activesupport (>= 6.0) @@ -39,42 +31,34 @@ GEM erubi (~> 1.4) parser (>= 2.4) smart_properties - bigdecimal (3.1.9) - brakeman (7.0.0) + bigdecimal (3.3.1) + brakeman (6.2.1) racc builder (3.3.0) - bundler-audit (0.9.2) - bundler (>= 1.2.0, < 3) - thor (~> 1.0) climate_control (1.2.0) code_analyzer (0.5.5) sexp_processor + coderay (1.1.3) concurrent-ruby (1.3.5) - connection_pool (2.5.0) - crack (1.0.0) + connection_pool (2.5.4) + crack (1.0.1) bigdecimal rexml crass (1.0.6) - csv (3.3.2) - date (3.4.1) - debug (1.10.0) - irb (~> 1.10) - reline (>= 0.3.8) - diff-lcs (1.5.1) - drb (2.2.1) - dry-configurable (1.3.0) - dry-core (~> 1.1) + csv (3.3.4) + diff-lcs (1.6.2) + drb (2.2.3) + dry-configurable (1.2.0) + dry-core (~> 1.0, < 2) zeitwerk (~> 2.6) - dry-core (1.1.0) + dry-core (1.0.1) concurrent-ruby (~> 1.0) - logger zeitwerk (~> 2.6) - dry-inflector (1.2.0) - dry-initializer (3.2.0) - dry-logic (1.6.0) - bigdecimal + dry-inflector (1.1.0) + dry-initializer (3.1.1) + dry-logic (1.5.0) concurrent-ruby (~> 1.0) - dry-core (~> 1.1) + dry-core (~> 1.0, < 2) zeitwerk (~> 2.6) dry-schema (1.13.4) concurrent-ruby (~> 1.0) @@ -84,23 +68,23 @@ GEM dry-logic (>= 1.4, < 2) dry-types (>= 1.7, < 2) zeitwerk (~> 2.6) - dry-types (1.8.2) + dry-types (1.7.2) bigdecimal (~> 3.0) concurrent-ruby (~> 1.0) dry-core (~> 1.0) dry-inflector (~> 1.0) dry-logic (~> 1.4) zeitwerk (~> 2.6) - erb_lint (0.9.0) + erb_lint (0.6.0) activesupport better_html (>= 2.0.1) parser (>= 2.7.1.4) rainbow rubocop (>= 1) smart_properties - erubi (1.13.1) + erubi (1.13.0) erubis (2.7.0) - faraday (2.12.2) + faraday (2.13.1) faraday-net_http (>= 2.0, < 3.5) json logger @@ -108,7 +92,7 @@ GEM net-http (>= 0.5.0) fasterer (0.11.0) ruby_parser (>= 3.19.1) - ffi (1.17.1) + ffi (1.15.5) flay (2.13.3) erubi (~> 1.10) path_expander (~> 1.0) @@ -117,56 +101,51 @@ GEM gitlab (4.20.1) httparty (~> 0.20) terminal-table (>= 1.5.1) - hashdiff (1.1.2) - httparty (0.22.0) + hashdiff (1.2.1) + httparty (0.23.1) csv mini_mime (>= 1.0.0) multi_xml (>= 0.5.2) i18n (1.14.7) concurrent-ruby (~> 1.0) - io-console (0.8.0) - irb (1.15.1) - pp (>= 0.6.0) - rdoc (>= 4.0.0) - reline (>= 0.4.2) - json (2.9.1) - language_server-protocol (3.17.0.4) - logger (1.6.5) - loofah (2.24.0) + json (2.16.0) + language_server-protocol (3.17.0.5) + lint_roller (1.1.0) + logger (1.7.0) + loofah (2.22.0) crass (~> 1.0.2) nokogiri (>= 1.12.0) + method_source (1.0.0) mini_mime (1.1.5) - mini_portile2 (2.8.8) - minitest (5.25.4) - multi_xml (0.7.1) + mini_portile2 (2.8.7) + minitest (5.26.2) + multi_xml (0.7.2) bigdecimal (~> 3.1) net-http (0.6.0) uri - nokogiri (1.18.2) + nokogiri (1.16.7) mini_portile2 (~> 2.8.2) racc (~> 1.4) - octokit (9.2.0) + octokit (10.0.0) faraday (>= 1, < 3) sawyer (~> 0.9) - parallel (1.26.3) - parser (3.3.7.1) + parallel (1.27.0) + parser (3.3.10.0) ast (~> 2.4.1) racc path_expander (1.1.3) - pp (0.6.2) - prettyprint - prettyprint (0.2.0) - pronto (0.11.3) + prism (1.6.0) + pronto (0.11.4) gitlab (>= 4.4.0, < 5.0) httparty (>= 0.13.7, < 1.0) - octokit (>= 4.7.0, < 10.0) + octokit (>= 4.7.0, < 11.0) rainbow (>= 2.2, < 4.0) rexml (>= 3.2.5, < 4.0) rugged (>= 0.23.0, < 2.0) thor (>= 0.20.3, < 2.0) - pronto-bundler_audit (0.7.0) - bundler-audit (~> 0.8) - pronto (~> 0.11) + pronto-brakeman (0.11.2) + brakeman (>= 3.2.0) + pronto (~> 0.11.0) pronto-erb_lint (0.1.6) erb_lint (~> 0.1, >= 0.1.1) pronto (~> 0.9, > 0.9.0) @@ -192,25 +171,23 @@ GEM pronto-scss (0.11.0) pronto (~> 0.11.0) scss_lint (~> 0.43, >= 0.43.0) - pronto-stylelint (0.11.0) + pronto-stylelint (0.11.1) pronto (>= 0.10, < 0.12) rugged (>= 0.24, < 2.0) - pronto-yamllint (0.2.0) - pronto (~> 0.11.0) - psych (5.2.3) - date - stringio - public_suffix (6.0.1) + pry (0.14.1) + coderay (~> 1.1) + method_source (~> 1.0) + public_suffix (6.0.2) racc (1.8.1) - rack (3.1.9) + rack (3.2.4) rails-dom-testing (2.2.0) activesupport (>= 5.0.0) minitest nokogiri (>= 1.6) - rails-html-sanitizer (1.6.2) + rails-html-sanitizer (1.6.0) loofah (~> 2.21) - nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0) - rails_best_practices (1.23.2) + nokogiri (~> 1.14) + rails_best_practices (1.23.1) activesupport code_analyzer (~> 0.5.5) erubis @@ -219,77 +196,90 @@ GEM require_all (~> 3.0) ruby-progressbar rainbow (3.1.1) - rb-fsevent (0.11.2) - rb-inotify (0.11.1) + rb-fsevent (0.11.1) + rb-inotify (0.10.1) ffi (~> 1.0) rb-readline (0.5.5) - rdoc (6.12.0) - psych (>= 4.0.0) - reek (6.4.0) + reek (6.3.0) dry-schema (~> 1.13.0) - logger (~> 1.6) parser (~> 3.3.0) rainbow (>= 2.0, < 4.0) rexml (~> 3.1) - regexp_parser (2.10.0) - reline (0.6.0) - io-console (~> 0.5) + regexp_parser (2.11.3) require_all (3.0.0) - rexml (3.4.0) - rspec (3.13.0) + rexml (3.4.4) + rspec (3.13.2) rspec-core (~> 3.13.0) rspec-expectations (~> 3.13.0) rspec-mocks (~> 3.13.0) - rspec-core (3.13.3) + rspec-core (3.13.6) rspec-support (~> 3.13.0) - rspec-expectations (3.13.3) + rspec-expectations (3.13.5) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) - rspec-mocks (3.13.2) + rspec-mocks (3.13.6) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) - rspec-support (3.13.2) - rubocop (1.71.2) + rspec-support (3.13.6) + rubocop (1.81.7) json (~> 2.3) - language_server-protocol (>= 3.17.0) + language_server-protocol (~> 3.17.0.2) + lint_roller (~> 1.1.0) parallel (~> 1.10) parser (>= 3.3.0.2) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 2.9.3, < 3.0) - rubocop-ast (>= 1.38.0, < 2.0) + rubocop-ast (>= 1.47.1, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 4.0) - rubocop-ast (1.38.0) - parser (>= 3.3.1.0) - rubocop-i18n (3.1.0) - rubocop (~> 1.0) - rubocop-minitest (0.36.0) - rubocop (>= 1.61, < 2.0) - rubocop-ast (>= 1.31.1, < 2.0) - rubocop-performance (1.23.1) - rubocop (>= 1.48.1, < 2.0) - rubocop-ast (>= 1.31.1, < 2.0) - rubocop-rails (2.29.1) + rubocop-ast (1.48.0) + parser (>= 3.3.7.2) + prism (~> 1.4) + rubocop-capybara (2.22.1) + lint_roller (~> 1.1) + rubocop (~> 1.72, >= 1.72.1) + rubocop-factory_bot (2.28.0) + lint_roller (~> 1.1) + rubocop (~> 1.72, >= 1.72.1) + rubocop-i18n (3.2.3) + lint_roller (~> 1.1) + rubocop (>= 1.72.1) + rubocop-minitest (0.38.2) + lint_roller (~> 1.1) + rubocop (>= 1.75.0, < 2.0) + rubocop-ast (>= 1.38.0, < 2.0) + rubocop-performance (1.26.1) + lint_roller (~> 1.1) + rubocop (>= 1.75.0, < 2.0) + rubocop-ast (>= 1.47.1, < 2.0) + rubocop-rails (2.34.1) activesupport (>= 4.2.0) + lint_roller (~> 1.1) rack (>= 1.1) - rubocop (>= 1.52.0, < 2.0) - rubocop-ast (>= 1.31.1, < 2.0) - rubocop-rake (0.6.0) - rubocop (~> 1.0) - rubocop-rspec (3.4.0) - rubocop (~> 1.61) - rubocop-sequel (0.3.8) - rubocop (~> 1.0) - rubocop-thread_safety (0.6.0) - rubocop (>= 1.48.1) - rubocop-yard (0.10.0) - rubocop (~> 1.21) + rubocop (>= 1.75.0, < 2.0) + rubocop-ast (>= 1.44.0, < 2.0) + rubocop-rake (0.7.1) + lint_roller (~> 1.1) + rubocop (>= 1.72.1) + rubocop-rspec (3.8.0) + lint_roller (~> 1.1) + rubocop (~> 1.81) + rubocop-sequel (0.4.1) + lint_roller (~> 1.1) + rubocop (>= 1.72.1, < 2) + rubocop-thread_safety (0.7.3) + lint_roller (~> 1.1) + rubocop (~> 1.72, >= 1.72.1) + rubocop-ast (>= 1.44.0, < 2.0) + rubocop-yard (1.0.0) + lint_roller + rubocop (~> 1.72) yard ruby-progressbar (1.13.0) ruby_parser (3.21.1) racc (~> 1.5) sexp_processor (~> 4.16) - rugged (1.9.0) + rugged (1.6.5) sass (3.7.4) sass-listen (~> 4.0.0) sass-listen (4.0.0) @@ -298,37 +288,34 @@ GEM sawyer (0.9.2) addressable (>= 2.3.5) faraday (>= 0.17.3, < 3) - scss_lint (0.60.0) + scss_lint (0.59.0) sass (~> 3.5, >= 3.5.5) securerandom (0.4.1) sexp_processor (4.17.3) smart_properties (1.17.0) - stringio (3.1.2) terminal-table (4.0.0) unicode-display_width (>= 1.1.1, < 4) thor (1.3.2) tzinfo (2.0.6) concurrent-ruby (~> 1.0) - unicode-display_width (3.1.4) - unicode-emoji (~> 4.0, >= 4.0.4) - unicode-emoji (4.0.4) - uri (1.0.2) - webmock (3.25.0) + unicode-display_width (3.2.0) + unicode-emoji (~> 4.1) + unicode-emoji (4.1.0) + uri (1.1.1) + webmock (3.26.1) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) yard (0.9.37) - zeitwerk (2.7.1) + zeitwerk (2.6.18) PLATFORMS ruby DEPENDENCIES climate_control - debug pronto - pronto-brakeman! - pronto-bundler_audit + pronto-brakeman pronto-erb_lint pronto-eslint_npm pronto-fasterer @@ -339,9 +326,11 @@ DEPENDENCIES pronto-rubocop pronto-scss pronto-stylelint - pronto-yamllint + pry rb-readline rspec + rubocop-capybara + rubocop-factory_bot rubocop-i18n rubocop-minitest rubocop-performance @@ -351,7 +340,129 @@ DEPENDENCIES rubocop-sequel rubocop-thread_safety rubocop-yard + rugged (< 1.7.1) webmock +CHECKSUMS + actionview (8.1.1) sha256=ca480c8b099dea0862b0934f24182b84c2d29092e7dbf464fb3e6d4eb9b468dc + activesupport (8.1.1) sha256=5e92534e8d0c8b8b5e6b16789c69dbea65c1d7b752269f71a39422e9546cea67 + addressable (2.8.7) sha256=462986537cf3735ab5f3c0f557f14155d778f4b43ea4f485a9deb9c8f7c58232 + ast (2.4.3) sha256=954615157c1d6a382bc27d690d973195e79db7f55e9765ac7c481c60bdb4d383 + base64 (0.3.0) sha256=27337aeabad6ffae05c265c450490628ef3ebd4b67be58257393227588f5a97b + better_html (2.1.1) sha256=046c3551d1488a3f2939a7cac6fabf2bde08c32e135c91fcd683380118e5af55 + bigdecimal (3.3.1) sha256=eaa01e228be54c4f9f53bf3cc34fe3d5e845c31963e7fcc5bedb05a4e7d52218 + brakeman (6.2.1) sha256=862e709caa1abf00dd0c47045682404c349f64876c7be74a8e6a4d6be5f61a1d + builder (3.3.0) sha256=497918d2f9dca528fdca4b88d84e4ef4387256d984b8154e9d5d3fe5a9c8835f + climate_control (1.2.0) sha256=36b21896193fa8c8536fa1cd843a07cf8ddbd03aaba43665e26c53ec1bd70aa5 + code_analyzer (0.5.5) sha256=c81533e9986259657acb9b3321d831efb1720ef59eed37e7e5dec56ac368e03e + coderay (1.1.3) sha256=dc530018a4684512f8f38143cd2a096c9f02a1fc2459edcfe534787a7fc77d4b + concurrent-ruby (1.3.5) sha256=813b3e37aca6df2a21a3b9f1d497f8cbab24a2b94cab325bffe65ee0f6cbebc6 + connection_pool (2.5.4) sha256=e9e1922327416091f3f6542f5f4446c2a20745276b9aa796dd0bb2fd0ea1e70a + crack (1.0.1) sha256=ff4a10390cd31d66440b7524eb1841874db86201d5b70032028553130b6d4c7e + crass (1.0.6) sha256=dc516022a56e7b3b156099abc81b6d2b08ea1ed12676ac7a5657617f012bd45d + csv (3.3.4) sha256=e96ecd5a8c3494aa5b596282249daba5c6033203c199248e6146e36d2a78d8cd + diff-lcs (1.6.2) sha256=9ae0d2cba7d4df3075fe8cd8602a8604993efc0dfa934cff568969efb1909962 + drb (2.2.3) sha256=0b00d6fdb50995fe4a45dea13663493c841112e4068656854646f418fda13373 + dry-configurable (1.2.0) sha256=3d3b6e2f5b96853f906de62a27307463d39cc4a2d2a1999b8f47fe34b8bee4fa + dry-core (1.0.1) sha256=f32f4245e0f54e787f3708584ed8f7545aaf8dd99072e36f169312468ec5450d + dry-inflector (1.1.0) sha256=340fb9b1b69b4355a3071f1d8fd94d97fc69d48c438748da5c13debfe5c06792 + dry-initializer (3.1.1) sha256=4d267dea367ccabe498b259c62b909b99d577d6db547d9510561999403546dec + dry-logic (1.5.0) sha256=99ed2180f1970c3d8247004f277a01dffbe8e82cf6680de9c7209312d86cd416 + dry-schema (1.13.4) sha256=caeb644de0be412d347eb4a6d91c56ceef8ec22cfceb98e80d03d354954b1d2a + dry-types (1.7.2) sha256=ff180fc285331e572a563408b834a78d1506ee3f5a6c7f803da2232947b0c46a + erb_lint (0.6.0) sha256=32368f77792ee921ab20260837396ff6caa60a7a34f7e61187d274bc744555cd + erubi (1.13.0) sha256=fca61b47daefd865d0fb50d168634f27ad40181867445badf6427c459c33cd62 + erubis (2.7.0) sha256=63653f5174a7997f6f1d6f465fbe1494dcc4bdab1fb8e635f6216989fb1148ba + faraday (2.13.1) sha256=cc531eb5467e7d74d4517630fa96f1a7003647cbf20a9a3e067d098941217b75 + faraday-net_http (3.4.0) sha256=a1f1e4cd6a2cf21599c8221595e27582d9936819977bbd4089a601f24c64e54a + fasterer (0.11.0) sha256=9c38b77583584f3339a729eb077fd8f2856a317abe747528f6563d7c23e9dda8 + ffi (1.15.5) sha256=6f2ed2fa68047962d6072b964420cba91d82ce6fa8ee251950c17fca6af3c2a0 + flay (2.13.3) sha256=664cea795a61a8bff71b9a3e4d5fca50f70308c99f6be93b522fc75ff25dd289 + gitlab (4.20.1) sha256=08bb40fcbcb54817bb1a5067308afe2445a4919c86212fc072d24d1e4784145c + hashdiff (1.2.1) sha256=9c079dbc513dfc8833ab59c0c2d8f230fa28499cc5efb4b8dd276cf931457cd1 + httparty (0.23.1) sha256=3ac1dd62f2010f6ece551716f5ceec2b2012011d89f1751917ab7f724e966b55 + i18n (1.14.7) sha256=ceba573f8138ff2c0915427f1fc5bdf4aa3ab8ae88c8ce255eb3ecf0a11a5d0f + json (2.16.0) sha256=ca5630320bb5ca23ebfd0bac84532fab56eb357575653b815b9df42c051e1525 + language_server-protocol (3.17.0.5) sha256=fd1e39a51a28bf3eec959379985a72e296e9f9acfce46f6a79d31ca8760803cc + lint_roller (1.1.0) sha256=2c0c845b632a7d172cb849cc90c1bce937a28c5c8ccccb50dfd46a485003cc87 + logger (1.7.0) sha256=196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203 + loofah (2.22.0) sha256=10d76e070c86b12fec74b6a9515fd1940f4459198b991342d0a7897d86c372fe + method_source (1.0.0) sha256=d779455a2b5666a079ce58577bfad8534f571af7cec8107f4dce328f0981dede + mini_mime (1.1.5) sha256=8681b7e2e4215f2a159f9400b5816d85e9d8c6c6b491e96a12797e798f8bccef + mini_portile2 (2.8.7) sha256=13eef5ab459bbfd33d61e539564ec25a9c2cf593b0a5ea6d4d7ef8c19b162ee0 + minitest (5.26.2) sha256=f021118a6185b9ba9f5af71f2ba103ad770c75afde9f2ab8da512677c550cde3 + multi_xml (0.7.2) sha256=307a96dc48613badb7b2fc174fd4e62d7c7b619bc36ea33bfd0c49f64f5787ce + net-http (0.6.0) sha256=9621b20c137898af9d890556848c93603716cab516dc2c89b01a38b894e259fb + nokogiri (1.16.7) sha256=f819cbfdfb0a7b19c9c52c6f2ca63df0e58a6125f4f139707b586b9511d7fe95 + octokit (10.0.0) sha256=82e99a539b7637b7e905e6d277bb0c1a4bed56735935cc33db6da7eae49a24e8 + parallel (1.27.0) sha256=4ac151e1806b755fb4e2dc2332cbf0e54f2e24ba821ff2d3dcf86bf6dc4ae130 + parser (3.3.10.0) sha256=ce3587fa5cc55a88c4ba5b2b37621b3329aadf5728f9eafa36bbd121462aabd6 + path_expander (1.1.3) sha256=bea16440dea5a770b9765312c8037931cc576f4f2872d71133a3e480028f9f67 + prism (1.6.0) sha256=bfc0281a81718c4872346bc858dc84abd3a60cae78336c65ad35c8fbff641c6b + pronto (0.11.4) sha256=4703a7bca647ee3a0b7481251079dc66fbf9d9f0c59645dd035fdf57a9da74d5 + pronto-brakeman (0.11.2) sha256=92133440a5484b3d0c27c2a325ffb703d66c17d1489ce66ea4a9e54c89d62a30 + pronto-erb_lint (0.1.6) sha256=4d95d71551c7ac49ae001c5265d456e8ae0dd0288a688350addc5fde3856ecff + pronto-eslint_npm (0.11.0) sha256=f397ad909a0da93e8b649bcd32e5002d1b3424a042c44ef1e2a3572acee59909 + pronto-fasterer (0.11.3) sha256=7c0feab7e129bb4bb2b294a1ad0a52cb9d287dfdea69653f0909d1a71d689b5c + pronto-flay (0.11.2) sha256=c75a1217104697aff55fcc19c5de5010e2d9c2a74e70f6c7d5f4194aae54a92a + pronto-rails_best_practices (0.11.0) sha256=2974d040b1e7862ddfa14aedd08821b76b306bf64e14fe1e6314d8981dab6e38 + pronto-rails_schema (0.11.0) sha256=f3b45d9e52581f379ad39a22d5408cf3019fe0486c891243dcfe83789a5a4bee + pronto-reek (0.11.1) sha256=9b37882e9a429b6774365b6b38d27d6b5de96990b25e6261efd7d93262959170 + pronto-rubocop (0.11.6) sha256=291ce2038525a6938816d9d82c55090d15c3ec369c1866f795cf02beb9d77b8d + pronto-scss (0.11.0) sha256=ff1fc527b8aba9d73947bb46683cd975de216f223e502943c677a22c62766226 + pronto-stylelint (0.11.1) sha256=8df2e5b9ac94e6d208234ce11d9af9961459e613337c3587c76a630f6565e192 + pry (0.14.1) sha256=99b6df0665875dd5a39d85e0150aa5a12e2bb4fef401b6c4f64d32ee502f8454 + public_suffix (6.0.2) sha256=bfa7cd5108066f8c9602e0d6d4114999a5df5839a63149d3e8b0f9c1d3558394 + racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f + rack (3.2.4) sha256=5d74b6f75082a643f43c1e76b419c40f0e5527fcfee1e669ac1e6b73c0ccb6f6 + rails-dom-testing (2.2.0) sha256=e515712e48df1f687a1d7c380fd7b07b8558faa26464474da64183a7426fa93b + rails-html-sanitizer (1.6.0) sha256=86e9f19d2e6748890dcc2633c8945ca45baa08a1df9d8c215ce17b3b0afaa4de + rails_best_practices (1.23.1) sha256=c82b608001230d69b1a37e4aa6578fff06a7f81006a764acbf6ee7bafe2dc744 + rainbow (3.1.1) sha256=039491aa3a89f42efa1d6dec2fc4e62ede96eb6acd95e52f1ad581182b79bc6a + rb-fsevent (0.11.1) sha256=d585e0211cacbb793b4444e911212b3733f7dfb1c3016cb6c5fcacd8f7058519 + rb-inotify (0.10.1) sha256=050062d4f31d307cca52c3f6a7f4b946df8de25fc4bd373e1a5142e41034a7ca + rb-readline (0.5.5) sha256=9e9bd7e198bdef0822c46902f6c592b882c1f9777894a4c3dcf5b320824a8793 + reek (6.3.0) sha256=4501c45ad75038e1f04030a7ddb6ad18c9bcc9ba62a0b3827e430b342f582ae7 + regexp_parser (2.11.3) sha256=ca13f381a173b7a93450e53459075c9b76a10433caadcb2f1180f2c741fc55a4 + require_all (3.0.0) sha256=937853faa2833388eab551107bf7bf87c6bba6b4800bac5ce469eda7b6a9fed0 + rexml (3.4.4) sha256=19e0a2c3425dfbf2d4fc1189747bdb2f849b6c5e74180401b15734bc97b5d142 + rspec (3.13.2) sha256=206284a08ad798e61f86d7ca3e376718d52c0bc944626b2349266f239f820587 + rspec-core (3.13.6) sha256=a8823c6411667b60a8bca135364351dda34cd55e44ff94c4be4633b37d828b2d + rspec-expectations (3.13.5) sha256=33a4d3a1d95060aea4c94e9f237030a8f9eae5615e9bd85718fe3a09e4b58836 + rspec-mocks (3.13.6) sha256=78b137ae5e91c5072bf81d40d78189aa911e965a81adc245e2d8d9ba624d9b4e + rspec-support (3.13.6) sha256=2e8de3702427eab064c9352fe74488cc12a1bfae887ad8b91cba480ec9f8afb2 + rubocop (1.81.7) sha256=6fb5cc298c731691e2a414fe0041a13eb1beed7bab23aec131da1bcc527af094 + rubocop-ast (1.48.0) sha256=22df9bbf3f7a6eccde0fad54e68547ae1e2a704bf8719e7c83813a99c05d2e76 + rubocop-capybara (2.22.1) sha256=ced88caef23efea53f46e098ff352f8fc1068c649606ca75cb74650970f51c0c + rubocop-factory_bot (2.28.0) sha256=4b17fc02124444173317e131759d195b0d762844a71a29fe8139c1105d92f0cb + rubocop-i18n (3.2.3) sha256=9620228f372892c0e6c0a3a73d7caed964a932404bee567e5ff4b8292e2a2bda + rubocop-minitest (0.38.2) sha256=5a9dfb5a538973d0601aa51e59637d3998bb8df81233edf1ff421504c6280068 + rubocop-performance (1.26.1) sha256=cd19b936ff196df85829d264b522fd4f98b6c89ad271fa52744a8c11b8f71834 + rubocop-rails (2.34.1) sha256=77a092ed1f05405a9e2ca1bee3d13b78ed0c3cc5342671a2d4f7de2056ee6a6e + rubocop-rake (0.7.1) sha256=3797f2b6810c3e9df7376c26d5f44f3475eda59eb1adc38e6f62ecf027cbae4d + rubocop-rspec (3.8.0) sha256=28440dccb3f223a9938ca1f946bd3438275b8c6c156dab909e2cb8bc424cab33 + rubocop-sequel (0.4.1) sha256=f325dc470c1e3191a616b41a4bf8cfbb2c3c2f4fbc2eee6286de019ca1f7c113 + rubocop-thread_safety (0.7.3) sha256=067cdd52fbf5deffc18995437e45b5194236eaff4f71de3375a1f6052e48f431 + rubocop-yard (1.0.0) sha256=5191ff73cbc36990298cdfee0dc645bbf79ed1b00fb91d17640e2a78d862374c + ruby-progressbar (1.13.0) sha256=80fc9c47a9b640d6834e0dc7b3c94c9df37f08cb072b7761e4a71e22cff29b33 + ruby_parser (3.21.1) sha256=9d931abe5aec287d65280f811d3cf672564956ef1bd49f528ca48479984d6fec + rugged (1.6.5) sha256=a48c77a17f9fa58540eb7e3673b0180b685b913c52d720c5930f7cfc2900dfad + sass (3.7.4) sha256=808b0d39053aa69068df939e24671fe84fd5a9d3314486e1a1457d0934a4255d + sass-listen (4.0.0) sha256=ae9dcb76dd3e234329e5ba6e213f48e532c5a3e7b0b4d8a87f13aaca0cc18377 + sawyer (0.9.2) sha256=fa3a72d62a4525517b18857ddb78926aab3424de0129be6772a8e2ba240e7aca + scss_lint (0.59.0) sha256=67fbe3dc39cf6295147ea5093b3a1b6c0fe26dbcfcbd4823c3d5de64c9fccde8 + securerandom (0.4.1) sha256=cc5193d414a4341b6e225f0cb4446aceca8e50d5e1888743fac16987638ea0b1 + sexp_processor (4.17.3) sha256=5ef0d952565eeedb416519f678b6b41c6ab6700abba828f46986f2d85d295dae + smart_properties (1.17.0) sha256=f9323f8122e932341756ddec8e0ac9ec6e238408a7661508be99439ca6d6384b + terminal-table (4.0.0) sha256=f504793203f8251b2ea7c7068333053f0beeea26093ec9962e62ea79f94301d2 + thor (1.3.2) sha256=eef0293b9e24158ccad7ab383ae83534b7ad4ed99c09f96f1a6b036550abbeda + tzinfo (2.0.6) sha256=8daf828cc77bcf7d63b0e3bdb6caa47e2272dcfaf4fbfe46f8c3a9df087a829b + unicode-display_width (3.2.0) sha256=0cdd96b5681a5949cdbc2c55e7b420facae74c4aaf9a9815eee1087cb1853c42 + unicode-emoji (4.1.0) sha256=4997d2d5df1ed4252f4830a9b6e86f932e2013fbff2182a9ce9ccabda4f325a5 + uri (1.1.1) sha256=379fa58d27ffb1387eaada68c749d1426738bd0f654d812fcc07e7568f5c57c6 + webmock (3.26.1) sha256=4f696fb57c90a827c20aadb2d4f9058bbff10f7f043bd0d4c3f58791143b1cd7 + yard (0.9.37) sha256=a6e910399e78e613f80ba9add9ba7c394b1a935f083cccbef82903a3d2a26992 + zeitwerk (2.6.18) sha256=bd2d213996ff7b3b364cd342a585fbee9797dbc1c0c6d868dc4150cc75739781 + BUNDLED WITH - 2.6.3 + 2.7.2 diff --git a/README.md b/README.md index 632c9de..ac90814 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ Your all-in-one ruby Pronto runner. +This is a reduced-scope fork of (AdWerx/pronto-ruby)[https://github.com/AdWerx/pronto-ruby], it only focus on Ruby, removing all of npm-related lints. + This [GitHub Action](https://github.com/features/actions) runs [Pronto](https://github.com/prontolabs/pronto) [runners](https://github.com/prontolabs/pronto#runners) on your Ruby project diffs and reports back with a [GitHub Check Run](https://developer.github.com/apps/quickstart-guides/creating-ci-tests-with-the-checks-api/). ![check runs](static/checkrun.png) @@ -18,8 +20,6 @@ The docker image of this Action includes the following [Pronto Runners](https:// - rails_schema - reek - rubocop -- scss -- yamllint - stylelint # Inputs @@ -60,13 +60,21 @@ on: jobs: run: + permissions: + checks: write + contents: read runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - run: git fetch origin main --depth=1 + - uses: actions/checkout@v4 + with: + ref: ${{ github.event.pull_request.head.sha }} # checkout HEAD commit instead of merge commit + fetch-depth: 50 # If your repository has long-living PRs, this might need to be higher + - run: git fetch origin main - uses: apptweak/pronto-ruby@use_head_commit env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + target: origin/main ``` With specific runners: @@ -79,25 +87,6 @@ name: Pronto rubocop rails_schema yamllint ``` -With `eslint_npm` runner using locally installed eslint: - -```yaml -name: Pronto -# ... - steps: - - uses: actions/checkout@v2 - with: - fetch-depth: 0 - - run: git fetch origin master --depth=1 - - uses: actions/setup-node@v1 - - run: yarn install --ignore-optional --ignore-scripts --frozen-lockfile --non-interactive - - uses: apptweak/pronto-ruby@use_head_commit - with: - runners: eslint_npm # ... - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} -``` - ### Development / Contributions See [CONTRIBUTING.md](./CONTRIBUTING.md) diff --git a/pronto b/pronto index 8151076..cd9bb2b 100755 --- a/pronto +++ b/pronto @@ -1,12 +1,13 @@ #!/usr/bin/env ruby +# frozen_string_literal: true -system("git config --global --add safe.directory #{ENV["GITHUB_WORKSPACE"]}") +system("git config --global --add safe.directory #{ENV.fetch("GITHUB_WORKSPACE", nil)}") -require 'rubygems' -require 'bundler/setup' +require "rubygems" +require "bundler/setup" Bundler.require(:default) -require_relative './src/github_action_check_run_formatter' -require 'pronto/cli' +require_relative "src/github_action_check_run_formatter" +require "pronto/cli" # github action inputs can only be strings, so when we passes the runners # list to this container, github passes container command args quoted like this: @@ -30,16 +31,16 @@ require 'pronto/cli' # ``` # # which works correctly -if ARGV.include?('-r') - runners_index = ARGV.index('-r') + 1 +if ARGV.include?("-r") + runners_index = ARGV.index("-r") + 1 runners = ARGV.at(runners_index) - if runners.include?(' ') + if runners.include?(" ") ARGV.delete_at(runners_index) - ARGV.insert(runners_index, runners.split(' ')) + ARGV.insert(runners_index, runners.split) end end -pronto_target_path = ENV.fetch('PRONTO_TARGET_PATH', nil) -pronto_target_path = ENV.fetch('GITHUB_WORKSPACE', '/data') if pronto_target_path.nil? +pronto_target_path = ENV.fetch("PRONTO_TARGET_PATH", nil) +pronto_target_path = ENV.fetch("GITHUB_WORKSPACE", "/data") if pronto_target_path.nil? Dir.chdir(pronto_target_path) do Pronto::CLI.start diff --git a/spec/all_spec.rb b/spec/all_spec.rb index 386026d..507d0ef 100644 --- a/spec/all_spec.rb +++ b/spec/all_spec.rb @@ -1,7 +1,9 @@ +# frozen_string_literal: true + RSpec.describe 'all pronto runners' do it 'run without error' do Dir.chdir('spec/fixtures/test.git') do - Pronto::CLI.start(%w(run)) + Pronto::CLI.start(%w[run]) end end end diff --git a/spec/github_action_check_run_formatter_spec.rb b/spec/github_action_check_run_formatter_spec.rb index 0439814..ad3c308 100644 --- a/spec/github_action_check_run_formatter_spec.rb +++ b/spec/github_action_check_run_formatter_spec.rb @@ -1,8 +1,9 @@ -RSpec.describe Pronto::Formatter::GithubActionCheckRunFormatter do +# frozen_string_literal: true +RSpec.describe Pronto::Formatter::GithubActionCheckRunFormatter do STUBBED_ENV = { - GITHUB_SHA: 'abcd12', - GITHUB_EVENT_PATH: File.expand_path('fixtures/event.json', __dir__), + GITHUB_SHA: "abcd12", + GITHUB_EVENT_PATH: File.expand_path("fixtures/event.json", __dir__) }.freeze around do |example| @@ -11,179 +12,201 @@ end end - context 'when the runner is rubocop' do - it 'posts a check run with annotations' do + context "when the runner is rubocop" do + it "posts a check run with annotations" do check_runs_url = "https://api.github.com/repos/Codertocat/Hello-World/check-runs" - post_stub = stub_request(:post, check_runs_url).to_return( - {status: 201, body: '{"id": 1}'}, - {status: 201, body: '{"id": 2}'}, + stub_request(:post, check_runs_url).to_return( + { status: 201, body: '{"id": 1}' }, + { status: 201, body: '{"id": 2}' } ) allow(Pronto::Runner).to receive(:repository).and_return([Pronto::Rubocop]) - Dir.chdir('spec/fixtures/test.git') do - Pronto::CLI.start(%w(run -f github_action_check_run)) + Dir.chdir("spec/fixtures/test.git") do + Pronto::CLI.start(%w[run -f github_action_check_run]) end expect( a_request(:post, "https://api.github.com/repos/Codertocat/Hello-World/check-runs").with do |request| data = JSON.parse(request.body) - expect(data.dig('name')).to eq 'rubocop' - expect(data.dig('output', 'summary')).to match(/There are 10 issues/) - expect(data.dig('output', 'annotations').size).to eq 10 - expect(data.dig('status')).to eq 'completed' - expect(data.dig('conclusion')).to eq 'failure' - expect(data.dig('output', 'annotations')).to eq([ - {"annotation_level"=>"warning", - "end_line"=>1, - "message"=>"Style/FrozenStringLiteralComment: Missing frozen string literal comment.", - "path"=>"main.rb", - "start_line"=>1, - "title"=>"rubocop"}, - {"annotation_level"=>"warning", - "end_line"=>1, - "message"=>"Layout/ExtraSpacing: Unnecessary spacing detected.", - "path"=>"main.rb", - "start_line"=>1, - "title"=>"rubocop"}, - {"annotation_level"=>"warning", - "end_line"=>1, - "message"=>"Layout/SpaceBeforeFirstArg: Put one space between the method name and the first argument.", - "path"=>"main.rb", - "start_line"=>1, - "title"=>"rubocop"}, - {"annotation_level"=>"warning", - "end_line"=>3, - "message"=>"Style/Documentation: Missing top-level documentation comment for `class My_Class`.", - "path"=>"main.rb", - "start_line"=>3, - "title"=>"rubocop"}, - {"annotation_level"=>"warning", - "end_line"=>3, - "message"=>"Naming/ClassAndModuleCamelCase: Use CamelCase for classes and modules.", - "path"=>"main.rb", - "start_line"=>3, - "title"=>"rubocop"}, - {"annotation_level"=>"warning", - "end_line"=>4, - "message"=>"Layout/IndentationWidth: Use 2 (not 4) spaces for indentation.", - "path"=>"main.rb", - "start_line"=>4, - "title"=>"rubocop"}, - {"annotation_level"=>"warning", - "end_line"=>4, - "message"=>"Naming/MethodName: Use snake_case for method names.", - "path"=>"main.rb", - "start_line"=>4, - "title"=>"rubocop"}, - {"annotation_level"=>"warning", - "end_line"=>4, - "message"=>"Style/DefWithParentheses: Omit the parentheses in defs when the method doesn't accept any arguments.", - "path"=>"main.rb", - "start_line"=>4, - "title"=>"rubocop"}, - {"annotation_level"=>"warning", - "end_line"=>5, - "message"=>"Layout/IndentationWidth: Use 2 (not 4) spaces for indentation.", - "path"=>"main.rb", - "start_line"=>5, - "title"=>"rubocop"}, - {"annotation_level"=>"warning", - "end_line"=>6, - "message"=>"Layout/DefEndAlignment: `end` at 6, 8 is not aligned with `def` at 4, 4.", - "path"=>"main.rb", - "start_line"=>6, - "title"=>"rubocop"} - ]) + expect(data["name"]).to eq "rubocop" + expect(data.dig("output", "summary")).to match(/There are 13 issues/) + expect(data.dig("output", "annotations").size).to eq 13 + expect(data["status"]).to eq "completed" + expect(data["conclusion"]).to eq "failure" + expect(data.dig("output", "annotations")).to eq([ + { "annotation_level" => "warning", + "end_line" => 1, + "message" => "Style/FrozenStringLiteralComment: Missing frozen string literal comment.", + "path" => "main.rb", + "start_line" => 1, + "title" => "rubocop" }, + { "annotation_level" => "warning", + "end_line" => 1, + "message" => "Layout/ExtraSpacing: Unnecessary spacing detected.", + "path" => "main.rb", + "start_line" => 1, + "title" => "rubocop" }, + { "annotation_level" => "warning", + "end_line" => 1, + "message" => "Layout/SpaceBeforeFirstArg: Put one space between the method name and the first argument.", + "path" => "main.rb", + "start_line" => 1, + "title" => "rubocop" }, + { "annotation_level" => "warning", + "end_line" => 1, + "message" => + "Style/StringLiterals: Prefer double-quoted strings unless you need single quotes to avoid extra backslashes for escaping. (https://rubystyle.guide#consistent-string-literals)", + "path" => "main.rb", + "start_line" => 1, + "title" => "rubocop" }, + { "annotation_level" => "warning", + "end_line" => 3, + "message" => "Style/Documentation: Missing top-level documentation comment for `class My_Class`.", + "path" => "main.rb", + "start_line" => 3, + "title" => "rubocop" }, + { "annotation_level" => "warning", + "end_line" => 3, + "message" => "Naming/ClassAndModuleCamelCase: Use CamelCase for classes and modules. (https://rubystyle.guide#camelcase-classes)", + "path" => "main.rb", + "start_line" => 3, + "title" => "rubocop" }, + { "annotation_level" => "warning", + "end_line" => 4, + "message" => "Layout/IndentationWidth: Use 2 (not 4) spaces for indentation. (https://rubystyle.guide#spaces-indentation)", + "path" => "main.rb", + "start_line" => 4, + "title" => "rubocop" }, + { "annotation_level" => "warning", + "end_line" => 4, + "message" => "Style/DocumentationMethod: Missing method documentation comment.", + "path" => "main.rb", + "start_line" => 4, + "title" => "rubocop" }, + { "annotation_level" => "warning", + "end_line" => 4, + + "message" => "Naming/MethodName: Use snake_case for method names. (https://rubystyle.guide#snake-case-symbols-methods-vars)", + "path" => "main.rb", + "start_line" => 4, + "title" => "rubocop" }, + { "annotation_level" => "warning", + "end_line" => 4, + "message" => "Style/DefWithParentheses: Omit the parentheses in defs when the method doesn't accept any arguments. (https://rubystyle.guide#method-parens)", + "path" => "main.rb", + "start_line" => 4, + "title" => "rubocop" }, + { "annotation_level" => "warning", + "end_line" => 5, + "message" => "Layout/IndentationWidth: Use 2 (not 4) spaces for indentation. (https://rubystyle.guide#spaces-indentation)", + "path" => "main.rb", + "start_line" => 5, + "title" => "rubocop" }, + { "annotation_level" => "warning", + "end_line" => 5, + "message" => + "Style/StringLiterals: Prefer double-quoted strings unless you need single quotes to avoid extra backslashes for escaping. (https://rubystyle.guide#consistent-string-literals)", + "path" => "main.rb", + "start_line" => 5, + "title" => "rubocop" }, + { "annotation_level" => "warning", + "end_line" => 6, + "message" => "Layout/DefEndAlignment: `end` at 6, 8 is not aligned with `def` at 4, 4.", + "path" => "main.rb", + "start_line" => 6, + "title" => "rubocop" } + ]) end ).to have_been_made end end - context 'when the runner is yamllint' do - it 'posts a check run with annotations' do - check_runs_url = "https://api.github.com/repos/Codertocat/Hello-World/check-runs" - post_stub = stub_request(:post, check_runs_url).to_return( - {status: 201, body: '{"id": 1}'}, - {status: 201, body: '{"id": 2}'}, - ) - allow(Pronto::Runner).to receive(:repository).and_return([Pronto::YAMLLint]) + # yamllint is disabled because it does not work with current pronto versions + # context 'when the runner is yamllint' do + # it 'posts a check run with annotations' do + # check_runs_url = "https://api.github.com/repos/Codertocat/Hello-World/check-runs" + # post_stub = stub_request(:post, check_runs_url).to_return( + # {status: 201, body: '{"id": 1}'}, + # {status: 201, body: '{"id": 2}'}, + # ) + # allow(Pronto::Runner).to receive(:repository).and_return([Pronto::YAMLLint]) - Dir.chdir('spec/fixtures/test.git') do - Pronto::CLI.start(%w(run -f github_action_check_run)) - end + # Dir.chdir('spec/fixtures/test.git') do + # Pronto::CLI.start(%w(run -f github_action_check_run)) + # end - expect( - a_request(:post, "https://api.github.com/repos/Codertocat/Hello-World/check-runs").with do |request| - data = JSON.parse(request.body) - expect(data.dig('name')).to eq 'yamllint_runner' - expect(data.dig('output', 'summary')).to match(/There are 3 issues/) - expect(data.dig('output', 'annotations').size).to eq 3 - expect(data.dig('status')).to eq 'completed' - expect(data.dig('conclusion')).to eq 'failure' - expect(data.dig('output', 'annotations')).to eq([ - { - "annotation_level"=>"warning", - "end_line"=>1, - "message"=>"1:1: [warning] missing document start \"---\" (document-start)", - "path"=>"main.yaml", - "start_line"=>1, - "title"=>"yamllint_runner" - }, - { - "annotation_level"=>"failure", - "end_line"=>3, - "message"=>"3:2: [error] wrong indentation: expected 2 but found 1 (indentation)", - "path"=>"main.yaml", - "start_line"=>3, - "title"=>"yamllint_runner" - }, - { - "annotation_level"=>"failure", - "end_line"=>4, - "message"=>"4:3: [error] syntax error: expected , but found '' (syntax)", - "path"=>"main.yaml", - "start_line"=>4, - "title"=>"yamllint_runner" - } - ]) - end - ).to have_been_made - end - end + # expect( + # a_request(:post, "https://api.github.com/repos/Codertocat/Hello-World/check-runs").with do |request| + # data = JSON.parse(request.body) + # expect(data.dig('name')).to eq 'yamllint_runner' + # expect(data.dig('output', 'summary')).to match(/There are 3 issues/) + # expect(data.dig('output', 'annotations').size).to eq 3 + # expect(data.dig('status')).to eq 'completed' + # expect(data.dig('conclusion')).to eq 'failure' + # expect(data.dig('output', 'annotations')).to eq([ + # { + # "annotation_level"=>"warning", + # "end_line"=>1, + # "message"=>"1:1: [warning] missing document start \"---\" (document-start)", + # "path"=>"main.yaml", + # "start_line"=>1, + # "title"=>"yamllint_runner" + # }, + # { + # "annotation_level"=>"failure", + # "end_line"=>3, + # "message"=>"3:2: [error] wrong indentation: expected 2 but found 1 (indentation)", + # "path"=>"main.yaml", + # "start_line"=>3, + # "title"=>"yamllint_runner" + # }, + # { + # "annotation_level"=>"failure", + # "end_line"=>4, + # "message"=>"4:3: [error] syntax error: expected , but found '' (syntax)", + # "path"=>"main.yaml", + # "start_line"=>4, + # "title"=>"yamllint_runner" + # } + # ]) + # end + # ).to have_been_made + # end + # end - it 'posts a check run with text summary' do - pending "when pronto-poper supports pronto ~> 0.11" - check_runs_url = "https://api.github.com/repos/Codertocat/Hello-World/check-runs" - post_stub = stub_request(:post, check_runs_url).to_return( - {status: 201, body: '{"id": 1}'}, - {status: 201, body: '{"id": 2}'}, - ) - allow(Pronto::Runner).to receive(:repository).and_return([Pronto::Poper]) + # pronto-poper is disabled because it doesn't seem to work anymore with pronto + # it 'posts a check run with text summary' do + # pending "when pronto-poper supports pronto ~> 0.11" + # check_runs_url = "https://api.github.com/repos/Codertocat/Hello-World/check-runs" + # post_stub = stub_request(:post, check_runs_url).to_return( + # {status: 201, body: '{"id": 1}'}, + # {status: 201, body: '{"id": 2}'}, + # ) + # allow(Pronto::Runner).to receive(:repository).and_return([Pronto::Poper]) - Dir.chdir('spec/fixtures/test.git') do - Pronto::CLI.start(%w(run -f github_action_check_run)) - end + # Dir.chdir('spec/fixtures/test.git') do + # Pronto::CLI.start(%w(run -f github_action_check_run)) + # end - expect( - a_request(:post, "https://api.github.com/repos/Codertocat/Hello-World/check-runs").with do |request| - data = JSON.parse(request.body) - expect(data.dig('name')).to eq 'poper' - expect(data.dig('output', 'summary')).to match(/There are 2 issues/) - # these messages aren't attributed to a line, so we put them in the Details section - expect(data.dig('output', 'annotations').size).to eq 0 - expect(data.dig('status')).to eq 'completed' - expect(data.dig('conclusion')).to eq 'failure' - expect(data.dig('output', 'text')).to eq(<<~TXT) - | sha | level | message | - | --- | --- | --- | - | `b00b0a8` | `warning` | Git commit message should start with a capital letter | - | `7cb7f40` | `warning` | Git commit message should start with a capital letter | - TXT - end - ).to have_been_made - end + # expect( + # a_request(:post, "https://api.github.com/repos/Codertocat/Hello-World/check-runs").with do |request| + # data = JSON.parse(request.body) + # expect(data.dig('name')).to eq 'poper' + # expect(data.dig('output', 'summary')).to match(/There are 2 issues/) + # # these messages aren't attributed to a line, so we put them in the Details section + # expect(data.dig('output', 'annotations').size).to eq 0 + # expect(data.dig('status')).to eq 'completed' + # expect(data.dig('conclusion')).to eq 'failure' + # expect(data.dig('output', 'text')).to eq(<<~TXT) + # | sha | level | message | + # | --- | --- | --- | + # | `b00b0a8` | `warning` | Git commit message should start with a capital letter | + # | `7cb7f40` | `warning` | Git commit message should start with a capital letter | + # TXT + # end + # ).to have_been_made + # end def with_env(options, &block) ClimateControl.modify(options, &block) end - end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 2ef4b47..7e160bb 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,7 +1,9 @@ -require 'webmock/rspec' -require 'rubygems' -require 'bundler/setup' +# frozen_string_literal: true + +require "webmock/rspec" +require "rubygems" +require "bundler/setup" Bundler.require(:default, :test) -require 'pronto/cli' +require "pronto/cli" $LOAD_PATH.push(File.dirname(__dir__)) -require 'src/github_action_check_run_formatter' +require "src/github_action_check_run_formatter" diff --git a/src/annotation.rb b/src/annotation.rb index a8693fe..a330d6d 100644 --- a/src/annotation.rb +++ b/src/annotation.rb @@ -1,5 +1,6 @@ -class Annotation +# frozen_string_literal: true +class Annotation attr_reader :message def initialize(message) @@ -18,12 +19,12 @@ def to_h end_line: lineno, annotation_level: level_for(message.level), message: message.msg, - title: message.runner.title, + title: message.runner.title } end def to_markdown_s - "| `#{message.commit_sha[0,7]}` | `#{message.level}` | #{message.msg} |" + "| `#{message.commit_sha[0, 7]}` | `#{message.level}` | #{message.msg} |" end def level_for(pronto_level) @@ -31,8 +32,7 @@ def level_for(pronto_level) info: :notice, warning: :warning, error: :failure, - fatal: :failure, + fatal: :failure }.fetch(pronto_level, :warning) end - end diff --git a/src/github_action_check_run_formatter.rb b/src/github_action_check_run_formatter.rb index 0090756..17a1fb0 100644 --- a/src/github_action_check_run_formatter.rb +++ b/src/github_action_check_run_formatter.rb @@ -1,6 +1,9 @@ -require 'ostruct' -require 'pronto' -require_relative './annotation' +# frozen_string_literal: true + +require "pronto" +require_relative "annotation" + +require "ostruct" module Pronto module Formatter @@ -30,7 +33,7 @@ class GithubActionCheckRunFormatter < Base # @return [String] The name of the formatter. def self.name - 'github_action_check_run' + "github_action_check_run" end # Formats the messages into GitHub Action Check Runs. @@ -55,7 +58,7 @@ def client @client ||= Octokit::Client.new( api_endpoint: config.github_api_endpoint, web_endpoint: config.github_web_endpoint, - access_token: ENV.fetch('GITHUB_TOKEN') { config.github_access_token } + access_token: ENV.fetch("GITHUB_TOKEN") { config.github_access_token } ) end @@ -75,9 +78,9 @@ def create_check_run(runner, runner_messages) ) if no_line_annotations.any? output.text = <<~TXT -| sha | level | message | -| --- | --- | --- | -#{no_line_annotations.map(&:to_markdown_s).join("\n")} + | sha | level | message | + | --- | --- | --- | + #{no_line_annotations.map(&:to_markdown_s).join("\n")} TXT end client.create_check_run( @@ -89,7 +92,7 @@ def create_check_run(runner, runner_messages) started_at: Time.now.iso8601, status: :completed, completed_at: Time.now.iso8601, - accept: 'application/vnd.github.antiope-preview+json' + accept: "application/vnd.github.antiope-preview+json" ) end @@ -114,12 +117,12 @@ def check_run_summary(runner, runner_messages) # @return [String] The full name of the repository in the format "owner/repo". # @raise [RuntimeError] If the GitHub event path is not set and the slug is not found in the config. def repo_slug - @repo_slug ||= if ENV.key?('GITHUB_EVENT_PATH') - event = JSON.parse(File.read(ENV.fetch('GITHUB_EVENT_PATH'))) - event.fetch('repository').fetch('full_name') - else - config.github_slug || raise('no github.slug in pronto config') - end + @repo_slug ||= if ENV.key?("GITHUB_EVENT_PATH") + event = JSON.parse(File.read(ENV.fetch("GITHUB_EVENT_PATH"))) + event.fetch("repository").fetch("full_name") + else + config.github_slug || raise("no github.slug in pronto config") + end end def messages_by_runner From 009afde9a045dea20925e1588bc4d81150aeb5cc Mon Sep 17 00:00:00 2001 From: Kevin Tricot Date: Wed, 3 Dec 2025 16:05:21 +0100 Subject: [PATCH 4/8] remove rubocop-capybara --- .rubocop.yml | 1 - Gemfile | 1 - Gemfile.lock | 5 ----- 3 files changed, 7 deletions(-) diff --git a/.rubocop.yml b/.rubocop.yml index 1964b58..e940aae 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -1,5 +1,4 @@ plugins: - - rubocop-capybara - rubocop-factory_bot - rubocop-minitest - rubocop-performance diff --git a/Gemfile b/Gemfile index cada1c4..8797229 100644 --- a/Gemfile +++ b/Gemfile @@ -18,7 +18,6 @@ gem "pronto-reek", require: false gem "pronto-scss", require: false gem "pronto-stylelint", require: false -gem "rubocop-capybara", require: false gem "rubocop-factory_bot", require: false gem "rubocop-i18n", require: false gem "rubocop-minitest", require: false diff --git a/Gemfile.lock b/Gemfile.lock index c66edb1..85c4e3b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -235,9 +235,6 @@ GEM rubocop-ast (1.48.0) parser (>= 3.3.7.2) prism (~> 1.4) - rubocop-capybara (2.22.1) - lint_roller (~> 1.1) - rubocop (~> 1.72, >= 1.72.1) rubocop-factory_bot (2.28.0) lint_roller (~> 1.1) rubocop (~> 1.72, >= 1.72.1) @@ -329,7 +326,6 @@ DEPENDENCIES pry rb-readline rspec - rubocop-capybara rubocop-factory_bot rubocop-i18n rubocop-minitest @@ -433,7 +429,6 @@ CHECKSUMS rspec-support (3.13.6) sha256=2e8de3702427eab064c9352fe74488cc12a1bfae887ad8b91cba480ec9f8afb2 rubocop (1.81.7) sha256=6fb5cc298c731691e2a414fe0041a13eb1beed7bab23aec131da1bcc527af094 rubocop-ast (1.48.0) sha256=22df9bbf3f7a6eccde0fad54e68547ae1e2a704bf8719e7c83813a99c05d2e76 - rubocop-capybara (2.22.1) sha256=ced88caef23efea53f46e098ff352f8fc1068c649606ca75cb74650970f51c0c rubocop-factory_bot (2.28.0) sha256=4b17fc02124444173317e131759d195b0d762844a71a29fe8139c1105d92f0cb rubocop-i18n (3.2.3) sha256=9620228f372892c0e6c0a3a73d7caed964a932404bee567e5ff4b8292e2a2bda rubocop-minitest (0.38.2) sha256=5a9dfb5a538973d0601aa51e59637d3998bb8df81233edf1ff421504c6280068 From b470e4381e41b3a3e6df8ceae714c2ecd8106002 Mon Sep 17 00:00:00 2001 From: Kevin Tricot Date: Wed, 3 Dec 2025 16:08:58 +0100 Subject: [PATCH 5/8] add back rubocop-capybara --- .rubocop.yml | 1 + Gemfile | 1 + Gemfile.lock | 5 +++++ 3 files changed, 7 insertions(+) diff --git a/.rubocop.yml b/.rubocop.yml index e940aae..1964b58 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -1,4 +1,5 @@ plugins: + - rubocop-capybara - rubocop-factory_bot - rubocop-minitest - rubocop-performance diff --git a/Gemfile b/Gemfile index 8797229..cada1c4 100644 --- a/Gemfile +++ b/Gemfile @@ -18,6 +18,7 @@ gem "pronto-reek", require: false gem "pronto-scss", require: false gem "pronto-stylelint", require: false +gem "rubocop-capybara", require: false gem "rubocop-factory_bot", require: false gem "rubocop-i18n", require: false gem "rubocop-minitest", require: false diff --git a/Gemfile.lock b/Gemfile.lock index 85c4e3b..c66edb1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -235,6 +235,9 @@ GEM rubocop-ast (1.48.0) parser (>= 3.3.7.2) prism (~> 1.4) + rubocop-capybara (2.22.1) + lint_roller (~> 1.1) + rubocop (~> 1.72, >= 1.72.1) rubocop-factory_bot (2.28.0) lint_roller (~> 1.1) rubocop (~> 1.72, >= 1.72.1) @@ -326,6 +329,7 @@ DEPENDENCIES pry rb-readline rspec + rubocop-capybara rubocop-factory_bot rubocop-i18n rubocop-minitest @@ -429,6 +433,7 @@ CHECKSUMS rspec-support (3.13.6) sha256=2e8de3702427eab064c9352fe74488cc12a1bfae887ad8b91cba480ec9f8afb2 rubocop (1.81.7) sha256=6fb5cc298c731691e2a414fe0041a13eb1beed7bab23aec131da1bcc527af094 rubocop-ast (1.48.0) sha256=22df9bbf3f7a6eccde0fad54e68547ae1e2a704bf8719e7c83813a99c05d2e76 + rubocop-capybara (2.22.1) sha256=ced88caef23efea53f46e098ff352f8fc1068c649606ca75cb74650970f51c0c rubocop-factory_bot (2.28.0) sha256=4b17fc02124444173317e131759d195b0d762844a71a29fe8139c1105d92f0cb rubocop-i18n (3.2.3) sha256=9620228f372892c0e6c0a3a73d7caed964a932404bee567e5ff4b8292e2a2bda rubocop-minitest (0.38.2) sha256=5a9dfb5a538973d0601aa51e59637d3998bb8df81233edf1ff421504c6280068 From aa8ebdec4315de6b7c8901dae42764d55ae93001 Mon Sep 17 00:00:00 2001 From: "David A." <3106338+Dakad@users.noreply.github.com> Date: Mon, 2 Feb 2026 10:56:08 +0100 Subject: [PATCH 6/8] Update Dockerfile and Gemfile.lock for Ruby and Bundler versions - Upgrade Ruby base image to 3.4 - Bump Bundler version from 2.6.3 to 2.6.7 - Update maintainer and add additional metadata labels in Dockerfile - Ensure proper installation of required packages --- .ruby-version | 2 +- Dockerfile | 44 +++++++++++++++++++++++++++++--------------- Gemfile.lock | 2 +- 3 files changed, 31 insertions(+), 17 deletions(-) diff --git a/.ruby-version b/.ruby-version index 010d183..7921bd0 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -3.3.7 \ No newline at end of file +3.4.8 diff --git a/Dockerfile b/Dockerfile index b914405..a09a44c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,20 +1,34 @@ -FROM ruby:3.3 +ARG RUBY_VERSION=3.4 +FROM ruby:${RUBY_VERSION} -LABEL maintainer="QAWAII " -LABEL org.opencontainers.image.source https://github.com/apptweak/pronto-ruby - -ARG BUNDLER_VERSION="2.6.3" +ARG BUNDLER_VERSION="2.6.7" ARG NODE_VERSION=14 +ARG BUILD_DATE= +ARG CVS_REF= -RUN apt-get update && \ - apt-get install -y --no-install-recommends \ - build-essential \ - cmake \ - curl \ - git \ - pkg-config \ - openssl \ - && rm -rf /var/lib/apt/lists/* +LABEL maintainer="DevEx Team " +LABEL org.opencontainers.image.source https://github.com/apptweak/pronto-ruby +LABEL org.opencontainers.image.title="AppTweak Pronto Ruby Runner" +LABEL org.opencontainers.image.description="GitHub Action for running Pronto code review automation for Ruby projects" +LABEL org.opencontainers.image.source="https://github.com/apptweak/pronto-ruby" +LABEL org.opencontainers.image.url="https://github.com/apptweak/pronto-ruby" +LABEL org.opencontainers.image.vendor="AppTweak" +LABEL org.opencontainers.image.version=${CVS_REF} +LABEL org.opencontainers.image.created=${BUILD_DATE} + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + build-essential \ + cmake \ + curl \ + git \ + pkg-config \ + openssl \ + && rm -rf /var/lib/apt/lists/* + +# Make sure to use bash with pipefail in case something +# fails while being piped to another command in the docker-build +SHELL ["/bin/bash", "-o", "pipefail", "-c"] RUN gem install bundler --version "${BUNDLER_VERSION}" @@ -24,7 +38,7 @@ COPY Gemfile* ./ RUN bundle --retry 4 -ENV BUNDLE_GEMFILE /runner/Gemfile +ENV BUNDLE_GEMFILE=/runner/Gemfile COPY . ./ diff --git a/Gemfile.lock b/Gemfile.lock index 9f22532..e094ee2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -339,4 +339,4 @@ DEPENDENCIES webmock BUNDLED WITH - 2.6.3 + 2.6.7 From ddbaee1d0bc5c2e2c1632610fc856340753f8606 Mon Sep 17 00:00:00 2001 From: "David A." <3106338+Dakad@users.noreply.github.com> Date: Mon, 2 Feb 2026 11:37:37 +0100 Subject: [PATCH 7/8] Bump all gems with minor changes, skipped the major bumps --- Gemfile | 2 +- Gemfile.lock | 290 +++++++++++++++++++++++++++------------------------ 2 files changed, 152 insertions(+), 140 deletions(-) diff --git a/Gemfile b/Gemfile index cada1c4..1699066 100644 --- a/Gemfile +++ b/Gemfile @@ -30,7 +30,7 @@ gem "rubocop-sequel", require: false gem "rubocop-thread_safety", require: false gem "rubocop-yard", require: false -gem "rugged", "< 1.7.1" # Rugged v1.7.1 introduces an issue with pronto, see https://github.com/prontolabs/pronto/issues/447 for updates +gem "rugged", "<= 1.9.0" # Rugged v1.7.1 introduces an issue with pronto, see https://github.com/prontolabs/pronto/issues/447 for updates group :test do gem "climate_control" diff --git a/Gemfile.lock b/Gemfile.lock index c66edb1..1b3a9cd 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,13 +1,13 @@ GEM remote: https://rubygems.org/ specs: - actionview (8.1.1) - activesupport (= 8.1.1) + actionview (8.1.2) + activesupport (= 8.1.2) builder (~> 3.1) erubi (~> 1.11) rails-dom-testing (~> 2.2) rails-html-sanitizer (~> 1.6) - activesupport (8.1.1) + activesupport (8.1.2) base64 bigdecimal concurrent-ruby (~> 1.0, >= 1.3.1) @@ -20,125 +20,130 @@ GEM securerandom (>= 0.3) tzinfo (~> 2.0, >= 2.0.5) uri (>= 0.13.1) - addressable (2.8.7) - public_suffix (>= 2.0.2, < 7.0) + addressable (2.8.8) + public_suffix (>= 2.0.2, < 8.0) ast (2.4.3) base64 (0.3.0) - better_html (2.1.1) - actionview (>= 6.0) - activesupport (>= 6.0) + better_html (2.2.0) + actionview (>= 7.0) + activesupport (>= 7.0) ast (~> 2.0) erubi (~> 1.4) parser (>= 2.4) smart_properties - bigdecimal (3.3.1) - brakeman (6.2.1) + bigdecimal (4.0.1) + brakeman (8.0.1) racc builder (3.3.0) climate_control (1.2.0) code_analyzer (0.5.5) sexp_processor coderay (1.1.3) - concurrent-ruby (1.3.5) - connection_pool (2.5.4) + concurrent-ruby (1.3.6) + connection_pool (3.0.2) crack (1.0.1) bigdecimal rexml crass (1.0.6) - csv (3.3.4) + csv (3.3.5) diff-lcs (1.6.2) drb (2.2.3) - dry-configurable (1.2.0) - dry-core (~> 1.0, < 2) + dry-configurable (1.3.0) + dry-core (~> 1.1) zeitwerk (~> 2.6) - dry-core (1.0.1) + dry-core (1.2.0) concurrent-ruby (~> 1.0) + logger zeitwerk (~> 2.6) - dry-inflector (1.1.0) - dry-initializer (3.1.1) - dry-logic (1.5.0) + dry-inflector (1.3.1) + dry-initializer (3.2.0) + dry-logic (1.6.0) + bigdecimal concurrent-ruby (~> 1.0) - dry-core (~> 1.0, < 2) + dry-core (~> 1.1) zeitwerk (~> 2.6) - dry-schema (1.13.4) + dry-schema (1.15.0) concurrent-ruby (~> 1.0) dry-configurable (~> 1.0, >= 1.0.1) - dry-core (~> 1.0, < 2) - dry-initializer (~> 3.0) - dry-logic (>= 1.4, < 2) - dry-types (>= 1.7, < 2) + dry-core (~> 1.1) + dry-initializer (~> 3.2) + dry-logic (~> 1.6) + dry-types (~> 1.8) zeitwerk (~> 2.6) - dry-types (1.7.2) - bigdecimal (~> 3.0) + dry-types (1.9.0) + bigdecimal (>= 3.0) concurrent-ruby (~> 1.0) dry-core (~> 1.0) dry-inflector (~> 1.0) dry-logic (~> 1.4) zeitwerk (~> 2.6) - erb_lint (0.6.0) + erb_lint (0.9.0) activesupport better_html (>= 2.0.1) parser (>= 2.7.1.4) rainbow rubocop (>= 1) smart_properties - erubi (1.13.0) + erubi (1.13.1) erubis (2.7.0) - faraday (2.13.1) + faraday (2.14.0) faraday-net_http (>= 2.0, < 3.5) json logger - faraday-net_http (3.4.0) - net-http (>= 0.5.0) + faraday-net_http (3.4.2) + net-http (~> 0.5) fasterer (0.11.0) ruby_parser (>= 3.19.1) - ffi (1.15.5) - flay (2.13.3) + ffi (1.17.3) + flay (2.14.2) erubi (~> 1.10) - path_expander (~> 1.0) - ruby_parser (~> 3.0) + path_expander (~> 2.0) + prism (~> 1.7) sexp_processor (~> 4.0) gitlab (4.20.1) httparty (~> 0.20) terminal-table (>= 1.5.1) hashdiff (1.2.1) - httparty (0.23.1) + httparty (0.24.2) csv mini_mime (>= 1.0.0) multi_xml (>= 0.5.2) - i18n (1.14.7) + i18n (1.14.8) concurrent-ruby (~> 1.0) - json (2.16.0) + io-console (0.8.2) + json (2.18.0) language_server-protocol (3.17.0.5) lint_roller (1.1.0) logger (1.7.0) - loofah (2.22.0) + loofah (2.25.0) crass (~> 1.0.2) nokogiri (>= 1.12.0) - method_source (1.0.0) + method_source (1.1.0) mini_mime (1.1.5) - mini_portile2 (2.8.7) + mini_portile2 (2.8.9) minitest (5.26.2) - multi_xml (0.7.2) - bigdecimal (~> 3.1) - net-http (0.6.0) - uri - nokogiri (1.16.7) + multi_xml (0.8.1) + bigdecimal (>= 3.1, < 5) + net-http (0.9.1) + uri (>= 0.11.1) + nokogiri (1.19.0) mini_portile2 (~> 2.8.2) racc (~> 1.4) octokit (10.0.0) faraday (>= 1, < 3) sawyer (~> 0.9) + ostruct (0.6.3) parallel (1.27.0) - parser (3.3.10.0) + parser (3.3.10.1) ast (~> 2.4.1) racc - path_expander (1.1.3) - prism (1.6.0) - pronto (0.11.4) + path_expander (2.0.1) + prism (1.9.0) + pronto (0.11.5) gitlab (>= 4.4.0, < 5.0) httparty (>= 0.13.7, < 1.0) octokit (>= 4.7.0, < 11.0) + ostruct rainbow (>= 2.2, < 4.0) rexml (>= 3.2.5, < 4.0) rugged (>= 0.23.0, < 2.0) @@ -174,20 +179,21 @@ GEM pronto-stylelint (0.11.1) pronto (>= 0.10, < 0.12) rugged (>= 0.24, < 2.0) - pry (0.14.1) + pry (0.16.0) coderay (~> 1.1) method_source (~> 1.0) - public_suffix (6.0.2) + reline (>= 0.6.0) + public_suffix (7.0.2) racc (1.8.1) rack (3.2.4) - rails-dom-testing (2.2.0) + rails-dom-testing (2.3.0) activesupport (>= 5.0.0) minitest nokogiri (>= 1.6) - rails-html-sanitizer (1.6.0) + rails-html-sanitizer (1.6.2) loofah (~> 2.21) - nokogiri (~> 1.14) - rails_best_practices (1.23.1) + nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0) + rails_best_practices (1.23.3) activesupport code_analyzer (~> 0.5.5) erubis @@ -196,16 +202,19 @@ GEM require_all (~> 3.0) ruby-progressbar rainbow (3.1.1) - rb-fsevent (0.11.1) - rb-inotify (0.10.1) + rb-fsevent (0.11.2) + rb-inotify (0.11.1) ffi (~> 1.0) rb-readline (0.5.5) - reek (6.3.0) - dry-schema (~> 1.13.0) + reek (6.5.0) + dry-schema (~> 1.13) + logger (~> 1.6) parser (~> 3.3.0) rainbow (>= 2.0, < 4.0) rexml (~> 3.1) regexp_parser (2.11.3) + reline (0.6.3) + io-console (~> 0.5) require_all (3.0.0) rexml (3.4.4) rspec (3.13.2) @@ -217,11 +226,11 @@ GEM rspec-expectations (3.13.5) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) - rspec-mocks (3.13.6) + rspec-mocks (3.13.7) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) - rspec-support (3.13.6) - rubocop (1.81.7) + rspec-support (3.13.7) + rubocop (1.84.0) json (~> 2.3) language_server-protocol (~> 3.17.0.2) lint_roller (~> 1.1.0) @@ -229,12 +238,12 @@ GEM parser (>= 3.3.0.2) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 2.9.3, < 3.0) - rubocop-ast (>= 1.47.1, < 2.0) + rubocop-ast (>= 1.49.0, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 4.0) - rubocop-ast (1.48.0) + rubocop-ast (1.49.0) parser (>= 3.3.7.2) - prism (~> 1.4) + prism (~> 1.7) rubocop-capybara (2.22.1) lint_roller (~> 1.1) rubocop (~> 1.72, >= 1.72.1) @@ -252,7 +261,7 @@ GEM lint_roller (~> 1.1) rubocop (>= 1.75.0, < 2.0) rubocop-ast (>= 1.47.1, < 2.0) - rubocop-rails (2.34.1) + rubocop-rails (2.34.3) activesupport (>= 4.2.0) lint_roller (~> 1.1) rack (>= 1.1) @@ -261,7 +270,7 @@ GEM rubocop-rake (0.7.1) lint_roller (~> 1.1) rubocop (>= 1.72.1) - rubocop-rspec (3.8.0) + rubocop-rspec (3.9.0) lint_roller (~> 1.1) rubocop (~> 1.81) rubocop-sequel (0.4.1) @@ -271,43 +280,43 @@ GEM lint_roller (~> 1.1) rubocop (~> 1.72, >= 1.72.1) rubocop-ast (>= 1.44.0, < 2.0) - rubocop-yard (1.0.0) + rubocop-yard (1.1.0) lint_roller rubocop (~> 1.72) yard ruby-progressbar (1.13.0) - ruby_parser (3.21.1) + ruby_parser (3.22.0) racc (~> 1.5) sexp_processor (~> 4.16) - rugged (1.6.5) + rugged (1.9.0) sass (3.7.4) sass-listen (~> 4.0.0) sass-listen (4.0.0) rb-fsevent (~> 0.9, >= 0.9.4) rb-inotify (~> 0.9, >= 0.9.7) - sawyer (0.9.2) + sawyer (0.9.3) addressable (>= 2.3.5) faraday (>= 0.17.3, < 3) - scss_lint (0.59.0) + scss_lint (0.60.0) sass (~> 3.5, >= 3.5.5) securerandom (0.4.1) - sexp_processor (4.17.3) + sexp_processor (4.17.5) smart_properties (1.17.0) terminal-table (4.0.0) unicode-display_width (>= 1.1.1, < 4) - thor (1.3.2) + thor (1.5.0) tzinfo (2.0.6) concurrent-ruby (~> 1.0) unicode-display_width (3.2.0) unicode-emoji (~> 4.1) - unicode-emoji (4.1.0) + unicode-emoji (4.2.0) uri (1.1.1) webmock (3.26.1) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - yard (0.9.37) - zeitwerk (2.6.18) + yard (0.9.38) + zeitwerk (2.7.4) PLATFORMS ruby @@ -340,66 +349,68 @@ DEPENDENCIES rubocop-sequel rubocop-thread_safety rubocop-yard - rugged (< 1.7.1) + rugged (<= 1.9.0) webmock CHECKSUMS - actionview (8.1.1) sha256=ca480c8b099dea0862b0934f24182b84c2d29092e7dbf464fb3e6d4eb9b468dc - activesupport (8.1.1) sha256=5e92534e8d0c8b8b5e6b16789c69dbea65c1d7b752269f71a39422e9546cea67 - addressable (2.8.7) sha256=462986537cf3735ab5f3c0f557f14155d778f4b43ea4f485a9deb9c8f7c58232 + actionview (8.1.2) sha256=80455b2588911c9b72cec22d240edacb7c150e800ef2234821269b2b2c3e2e5b + activesupport (8.1.2) sha256=88842578ccd0d40f658289b0e8c842acfe9af751afee2e0744a7873f50b6fdae + addressable (2.8.8) sha256=7c13b8f9536cf6364c03b9d417c19986019e28f7c00ac8132da4eb0fe393b057 ast (2.4.3) sha256=954615157c1d6a382bc27d690d973195e79db7f55e9765ac7c481c60bdb4d383 base64 (0.3.0) sha256=27337aeabad6ffae05c265c450490628ef3ebd4b67be58257393227588f5a97b - better_html (2.1.1) sha256=046c3551d1488a3f2939a7cac6fabf2bde08c32e135c91fcd683380118e5af55 - bigdecimal (3.3.1) sha256=eaa01e228be54c4f9f53bf3cc34fe3d5e845c31963e7fcc5bedb05a4e7d52218 - brakeman (6.2.1) sha256=862e709caa1abf00dd0c47045682404c349f64876c7be74a8e6a4d6be5f61a1d + better_html (2.2.0) sha256=e68ab66ab09696b708333bbf35e8aa3c107500ba7892f528e2111624bdd8cf76 + bigdecimal (4.0.1) sha256=8b07d3d065a9f921c80ceaea7c9d4ae596697295b584c296fe599dd0ad01c4a7 + brakeman (8.0.1) sha256=c68ce0ac35a6295027c4eab8b4ac597d2a0bfc82f0d62dcd334bbf944d352f70 builder (3.3.0) sha256=497918d2f9dca528fdca4b88d84e4ef4387256d984b8154e9d5d3fe5a9c8835f climate_control (1.2.0) sha256=36b21896193fa8c8536fa1cd843a07cf8ddbd03aaba43665e26c53ec1bd70aa5 code_analyzer (0.5.5) sha256=c81533e9986259657acb9b3321d831efb1720ef59eed37e7e5dec56ac368e03e coderay (1.1.3) sha256=dc530018a4684512f8f38143cd2a096c9f02a1fc2459edcfe534787a7fc77d4b - concurrent-ruby (1.3.5) sha256=813b3e37aca6df2a21a3b9f1d497f8cbab24a2b94cab325bffe65ee0f6cbebc6 - connection_pool (2.5.4) sha256=e9e1922327416091f3f6542f5f4446c2a20745276b9aa796dd0bb2fd0ea1e70a + concurrent-ruby (1.3.6) sha256=6b56837e1e7e5292f9864f34b69c5a2cbc75c0cf5338f1ce9903d10fa762d5ab + connection_pool (3.0.2) sha256=33fff5ba71a12d2aa26cb72b1db8bba2a1a01823559fb01d29eb74c286e62e0a crack (1.0.1) sha256=ff4a10390cd31d66440b7524eb1841874db86201d5b70032028553130b6d4c7e crass (1.0.6) sha256=dc516022a56e7b3b156099abc81b6d2b08ea1ed12676ac7a5657617f012bd45d - csv (3.3.4) sha256=e96ecd5a8c3494aa5b596282249daba5c6033203c199248e6146e36d2a78d8cd + csv (3.3.5) sha256=6e5134ac3383ef728b7f02725d9872934f523cb40b961479f69cf3afa6c8e73f diff-lcs (1.6.2) sha256=9ae0d2cba7d4df3075fe8cd8602a8604993efc0dfa934cff568969efb1909962 drb (2.2.3) sha256=0b00d6fdb50995fe4a45dea13663493c841112e4068656854646f418fda13373 - dry-configurable (1.2.0) sha256=3d3b6e2f5b96853f906de62a27307463d39cc4a2d2a1999b8f47fe34b8bee4fa - dry-core (1.0.1) sha256=f32f4245e0f54e787f3708584ed8f7545aaf8dd99072e36f169312468ec5450d - dry-inflector (1.1.0) sha256=340fb9b1b69b4355a3071f1d8fd94d97fc69d48c438748da5c13debfe5c06792 - dry-initializer (3.1.1) sha256=4d267dea367ccabe498b259c62b909b99d577d6db547d9510561999403546dec - dry-logic (1.5.0) sha256=99ed2180f1970c3d8247004f277a01dffbe8e82cf6680de9c7209312d86cd416 - dry-schema (1.13.4) sha256=caeb644de0be412d347eb4a6d91c56ceef8ec22cfceb98e80d03d354954b1d2a - dry-types (1.7.2) sha256=ff180fc285331e572a563408b834a78d1506ee3f5a6c7f803da2232947b0c46a - erb_lint (0.6.0) sha256=32368f77792ee921ab20260837396ff6caa60a7a34f7e61187d274bc744555cd - erubi (1.13.0) sha256=fca61b47daefd865d0fb50d168634f27ad40181867445badf6427c459c33cd62 + dry-configurable (1.3.0) sha256=882d862858567fc1210d2549d4c090f34370fc1bb7c5c1933de3fe792e18afa8 + dry-core (1.2.0) sha256=0cc5a7da88df397f153947eeeae42e876e999c1e30900f3c536fb173854e96a1 + dry-inflector (1.3.1) sha256=7fb0c2bb04f67638f25c52e7ba39ab435d922a3a5c3cd196120f63accb682dcc + dry-initializer (3.2.0) sha256=37d59798f912dc0a1efe14a4db4a9306989007b302dcd5f25d0a2a20c166c4e3 + dry-logic (1.6.0) sha256=da6fedbc0f90fc41f9b0cc7e6f05f5d529d1efaef6c8dcc8e0733f685745cea2 + dry-schema (1.15.0) sha256=0f2a34adba4206bd6d46ec1b6b7691b402e198eecaff1d8349a7d48a77d82cd2 + dry-types (1.9.0) sha256=7b656fe0a78d2432500ae1f29fefd6762f5a032ca7000e4f36bc111453d45d4d + erb_lint (0.9.0) sha256=dfb5e40ad839e8d1f0d56ca85ec9a7ac4c9cd966ec281138282f35b323ca7c31 + erubi (1.13.1) sha256=a082103b0885dbc5ecf1172fede897f9ebdb745a4b97a5e8dc63953db1ee4ad9 erubis (2.7.0) sha256=63653f5174a7997f6f1d6f465fbe1494dcc4bdab1fb8e635f6216989fb1148ba - faraday (2.13.1) sha256=cc531eb5467e7d74d4517630fa96f1a7003647cbf20a9a3e067d098941217b75 - faraday-net_http (3.4.0) sha256=a1f1e4cd6a2cf21599c8221595e27582d9936819977bbd4089a601f24c64e54a + faraday (2.14.0) sha256=8699cfe5d97e55268f2596f9a9d5a43736808a943714e3d9a53e6110593941cd + faraday-net_http (3.4.2) sha256=f147758260d3526939bf57ecf911682f94926a3666502e24c69992765875906c fasterer (0.11.0) sha256=9c38b77583584f3339a729eb077fd8f2856a317abe747528f6563d7c23e9dda8 - ffi (1.15.5) sha256=6f2ed2fa68047962d6072b964420cba91d82ce6fa8ee251950c17fca6af3c2a0 - flay (2.13.3) sha256=664cea795a61a8bff71b9a3e4d5fca50f70308c99f6be93b522fc75ff25dd289 + ffi (1.17.3) sha256=0e9f39f7bb3934f77ad6feab49662be77e87eedcdeb2a3f5c0234c2938563d4c + flay (2.14.2) sha256=d153a8928a0b6f74d4aab7a97577b12440d02df928ffbafb6ebe4bb6730a53f8 gitlab (4.20.1) sha256=08bb40fcbcb54817bb1a5067308afe2445a4919c86212fc072d24d1e4784145c hashdiff (1.2.1) sha256=9c079dbc513dfc8833ab59c0c2d8f230fa28499cc5efb4b8dd276cf931457cd1 - httparty (0.23.1) sha256=3ac1dd62f2010f6ece551716f5ceec2b2012011d89f1751917ab7f724e966b55 - i18n (1.14.7) sha256=ceba573f8138ff2c0915427f1fc5bdf4aa3ab8ae88c8ce255eb3ecf0a11a5d0f - json (2.16.0) sha256=ca5630320bb5ca23ebfd0bac84532fab56eb357575653b815b9df42c051e1525 + httparty (0.24.2) sha256=8fca6a54aa0c4aa4303a0fd33e5e2156175d6a5334f714263b458abd7fda9c38 + i18n (1.14.8) sha256=285778639134865c5e0f6269e0b818256017e8cde89993fdfcbfb64d088824a5 + io-console (0.8.2) sha256=d6e3ae7a7cc7574f4b8893b4fca2162e57a825b223a177b7afa236c5ef9814cc + json (2.18.0) sha256=b10506aee4183f5cf49e0efc48073d7b75843ce3782c68dbeb763351c08fd505 language_server-protocol (3.17.0.5) sha256=fd1e39a51a28bf3eec959379985a72e296e9f9acfce46f6a79d31ca8760803cc lint_roller (1.1.0) sha256=2c0c845b632a7d172cb849cc90c1bce937a28c5c8ccccb50dfd46a485003cc87 logger (1.7.0) sha256=196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203 - loofah (2.22.0) sha256=10d76e070c86b12fec74b6a9515fd1940f4459198b991342d0a7897d86c372fe - method_source (1.0.0) sha256=d779455a2b5666a079ce58577bfad8534f571af7cec8107f4dce328f0981dede + loofah (2.25.0) sha256=df5ed7ac3bac6a4ec802df3877ee5cc86d027299f8952e6243b3dac446b060e6 + method_source (1.1.0) sha256=181301c9c45b731b4769bc81e8860e72f9161ad7d66dd99103c9ab84f560f5c5 mini_mime (1.1.5) sha256=8681b7e2e4215f2a159f9400b5816d85e9d8c6c6b491e96a12797e798f8bccef - mini_portile2 (2.8.7) sha256=13eef5ab459bbfd33d61e539564ec25a9c2cf593b0a5ea6d4d7ef8c19b162ee0 + mini_portile2 (2.8.9) sha256=0cd7c7f824e010c072e33f68bc02d85a00aeb6fce05bb4819c03dfd3c140c289 minitest (5.26.2) sha256=f021118a6185b9ba9f5af71f2ba103ad770c75afde9f2ab8da512677c550cde3 - multi_xml (0.7.2) sha256=307a96dc48613badb7b2fc174fd4e62d7c7b619bc36ea33bfd0c49f64f5787ce - net-http (0.6.0) sha256=9621b20c137898af9d890556848c93603716cab516dc2c89b01a38b894e259fb - nokogiri (1.16.7) sha256=f819cbfdfb0a7b19c9c52c6f2ca63df0e58a6125f4f139707b586b9511d7fe95 + multi_xml (0.8.1) sha256=addba0290bac34e9088bfe73dc4878530297a82a7bbd66cb44dcd0a4b86edf5a + net-http (0.9.1) sha256=25ba0b67c63e89df626ed8fac771d0ad24ad151a858af2cc8e6a716ca4336996 + nokogiri (1.19.0) sha256=e304d21865f62518e04f2bf59f93bd3a97ca7b07e7f03952946d8e1c05f45695 octokit (10.0.0) sha256=82e99a539b7637b7e905e6d277bb0c1a4bed56735935cc33db6da7eae49a24e8 + ostruct (0.6.3) sha256=95a2ed4a4bd1d190784e666b47b2d3f078e4a9efda2fccf18f84ddc6538ed912 parallel (1.27.0) sha256=4ac151e1806b755fb4e2dc2332cbf0e54f2e24ba821ff2d3dcf86bf6dc4ae130 - parser (3.3.10.0) sha256=ce3587fa5cc55a88c4ba5b2b37621b3329aadf5728f9eafa36bbd121462aabd6 - path_expander (1.1.3) sha256=bea16440dea5a770b9765312c8037931cc576f4f2872d71133a3e480028f9f67 - prism (1.6.0) sha256=bfc0281a81718c4872346bc858dc84abd3a60cae78336c65ad35c8fbff641c6b - pronto (0.11.4) sha256=4703a7bca647ee3a0b7481251079dc66fbf9d9f0c59645dd035fdf57a9da74d5 + parser (3.3.10.1) sha256=06f6a725d2cd91e5e7f2b7c32ba143631e1f7c8ae2fb918fc4cebec187e6a688 + path_expander (2.0.1) sha256=2de201164bff4719cc4d0b3767286e9977cc832a59c4d70abab571ec86cb41e4 + prism (1.9.0) sha256=7b530c6a9f92c24300014919c9dcbc055bf4cdf51ec30aed099b06cd6674ef85 + pronto (0.11.5) sha256=3b3f6dcb05a9c923460a2c1f86dc233d0747b37df50b6897164970f76c847f66 pronto-brakeman (0.11.2) sha256=92133440a5484b3d0c27c2a325ffb703d66c17d1489ce66ea4a9e54c89d62a30 pronto-erb_lint (0.1.6) sha256=4d95d71551c7ac49ae001c5265d456e8ae0dd0288a688350addc5fde3856ecff pronto-eslint_npm (0.11.0) sha256=f397ad909a0da93e8b649bcd32e5002d1b3424a042c44ef1e2a3572acee59909 @@ -411,58 +422,59 @@ CHECKSUMS pronto-rubocop (0.11.6) sha256=291ce2038525a6938816d9d82c55090d15c3ec369c1866f795cf02beb9d77b8d pronto-scss (0.11.0) sha256=ff1fc527b8aba9d73947bb46683cd975de216f223e502943c677a22c62766226 pronto-stylelint (0.11.1) sha256=8df2e5b9ac94e6d208234ce11d9af9961459e613337c3587c76a630f6565e192 - pry (0.14.1) sha256=99b6df0665875dd5a39d85e0150aa5a12e2bb4fef401b6c4f64d32ee502f8454 - public_suffix (6.0.2) sha256=bfa7cd5108066f8c9602e0d6d4114999a5df5839a63149d3e8b0f9c1d3558394 + pry (0.16.0) sha256=d76c69065698ed1f85e717bd33d7942c38a50868f6b0673c636192b3d1b6054e + public_suffix (7.0.2) sha256=9114090c8e4e7135c1fd0e7acfea33afaab38101884320c65aaa0ffb8e26a857 racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f rack (3.2.4) sha256=5d74b6f75082a643f43c1e76b419c40f0e5527fcfee1e669ac1e6b73c0ccb6f6 - rails-dom-testing (2.2.0) sha256=e515712e48df1f687a1d7c380fd7b07b8558faa26464474da64183a7426fa93b - rails-html-sanitizer (1.6.0) sha256=86e9f19d2e6748890dcc2633c8945ca45baa08a1df9d8c215ce17b3b0afaa4de - rails_best_practices (1.23.1) sha256=c82b608001230d69b1a37e4aa6578fff06a7f81006a764acbf6ee7bafe2dc744 + rails-dom-testing (2.3.0) sha256=8acc7953a7b911ca44588bf08737bc16719f431a1cc3091a292bca7317925c1d + rails-html-sanitizer (1.6.2) sha256=35fce2ca8242da8775c83b6ba9c1bcaad6751d9eb73c1abaa8403475ab89a560 + rails_best_practices (1.23.3) sha256=543ea7d7a26fdb91fb0c54496defaf1b266e3e89ac9e05a879fcd8c4f8b03b0c rainbow (3.1.1) sha256=039491aa3a89f42efa1d6dec2fc4e62ede96eb6acd95e52f1ad581182b79bc6a - rb-fsevent (0.11.1) sha256=d585e0211cacbb793b4444e911212b3733f7dfb1c3016cb6c5fcacd8f7058519 - rb-inotify (0.10.1) sha256=050062d4f31d307cca52c3f6a7f4b946df8de25fc4bd373e1a5142e41034a7ca + rb-fsevent (0.11.2) sha256=43900b972e7301d6570f64b850a5aa67833ee7d87b458ee92805d56b7318aefe + rb-inotify (0.11.1) sha256=a0a700441239b0ff18eb65e3866236cd78613d6b9f78fea1f9ac47a85e47be6e rb-readline (0.5.5) sha256=9e9bd7e198bdef0822c46902f6c592b882c1f9777894a4c3dcf5b320824a8793 - reek (6.3.0) sha256=4501c45ad75038e1f04030a7ddb6ad18c9bcc9ba62a0b3827e430b342f582ae7 + reek (6.5.0) sha256=d26d3a492773b2bbc228888067a21afe33ac07954a17dbd64cdeae42c4c69be1 regexp_parser (2.11.3) sha256=ca13f381a173b7a93450e53459075c9b76a10433caadcb2f1180f2c741fc55a4 + reline (0.6.3) sha256=1198b04973565b36ec0f11542ab3f5cfeeec34823f4e54cebde90968092b1835 require_all (3.0.0) sha256=937853faa2833388eab551107bf7bf87c6bba6b4800bac5ce469eda7b6a9fed0 rexml (3.4.4) sha256=19e0a2c3425dfbf2d4fc1189747bdb2f849b6c5e74180401b15734bc97b5d142 rspec (3.13.2) sha256=206284a08ad798e61f86d7ca3e376718d52c0bc944626b2349266f239f820587 rspec-core (3.13.6) sha256=a8823c6411667b60a8bca135364351dda34cd55e44ff94c4be4633b37d828b2d rspec-expectations (3.13.5) sha256=33a4d3a1d95060aea4c94e9f237030a8f9eae5615e9bd85718fe3a09e4b58836 - rspec-mocks (3.13.6) sha256=78b137ae5e91c5072bf81d40d78189aa911e965a81adc245e2d8d9ba624d9b4e - rspec-support (3.13.6) sha256=2e8de3702427eab064c9352fe74488cc12a1bfae887ad8b91cba480ec9f8afb2 - rubocop (1.81.7) sha256=6fb5cc298c731691e2a414fe0041a13eb1beed7bab23aec131da1bcc527af094 - rubocop-ast (1.48.0) sha256=22df9bbf3f7a6eccde0fad54e68547ae1e2a704bf8719e7c83813a99c05d2e76 + rspec-mocks (3.13.7) sha256=0979034e64b1d7a838aaaddf12bf065ea4dc40ef3d4c39f01f93ae2c66c62b1c + rspec-support (3.13.7) sha256=0640e5570872aafefd79867901deeeeb40b0c9875a36b983d85f54fb7381c47c + rubocop (1.84.0) sha256=88dec310153bb685a879f5a7cdb601f6287b8f0ee675d9dc63a17c7204c4190a + rubocop-ast (1.49.0) sha256=49c3676d3123a0923d333e20c6c2dbaaae2d2287b475273fddee0c61da9f71fd rubocop-capybara (2.22.1) sha256=ced88caef23efea53f46e098ff352f8fc1068c649606ca75cb74650970f51c0c rubocop-factory_bot (2.28.0) sha256=4b17fc02124444173317e131759d195b0d762844a71a29fe8139c1105d92f0cb rubocop-i18n (3.2.3) sha256=9620228f372892c0e6c0a3a73d7caed964a932404bee567e5ff4b8292e2a2bda rubocop-minitest (0.38.2) sha256=5a9dfb5a538973d0601aa51e59637d3998bb8df81233edf1ff421504c6280068 rubocop-performance (1.26.1) sha256=cd19b936ff196df85829d264b522fd4f98b6c89ad271fa52744a8c11b8f71834 - rubocop-rails (2.34.1) sha256=77a092ed1f05405a9e2ca1bee3d13b78ed0c3cc5342671a2d4f7de2056ee6a6e + rubocop-rails (2.34.3) sha256=10d37989024865ecda8199f311f3faca990143fbac967de943f88aca11eb9ad2 rubocop-rake (0.7.1) sha256=3797f2b6810c3e9df7376c26d5f44f3475eda59eb1adc38e6f62ecf027cbae4d - rubocop-rspec (3.8.0) sha256=28440dccb3f223a9938ca1f946bd3438275b8c6c156dab909e2cb8bc424cab33 + rubocop-rspec (3.9.0) sha256=8fa70a3619408237d789aeecfb9beef40576acc855173e60939d63332fdb55e2 rubocop-sequel (0.4.1) sha256=f325dc470c1e3191a616b41a4bf8cfbb2c3c2f4fbc2eee6286de019ca1f7c113 rubocop-thread_safety (0.7.3) sha256=067cdd52fbf5deffc18995437e45b5194236eaff4f71de3375a1f6052e48f431 - rubocop-yard (1.0.0) sha256=5191ff73cbc36990298cdfee0dc645bbf79ed1b00fb91d17640e2a78d862374c + rubocop-yard (1.1.0) sha256=a9a4051c852e58a1b967e41abb85c94698f482782e6261f747a9acae79fe6f73 ruby-progressbar (1.13.0) sha256=80fc9c47a9b640d6834e0dc7b3c94c9df37f08cb072b7761e4a71e22cff29b33 - ruby_parser (3.21.1) sha256=9d931abe5aec287d65280f811d3cf672564956ef1bd49f528ca48479984d6fec - rugged (1.6.5) sha256=a48c77a17f9fa58540eb7e3673b0180b685b913c52d720c5930f7cfc2900dfad + ruby_parser (3.22.0) sha256=1eb4937cd9eb220aa2d194e352a24dba90aef00751e24c8dfffdb14000f15d23 + rugged (1.9.0) sha256=7faaa912c5888d6e348d20fa31209b6409f1574346b1b80e309dbc7e8d63efac sass (3.7.4) sha256=808b0d39053aa69068df939e24671fe84fd5a9d3314486e1a1457d0934a4255d sass-listen (4.0.0) sha256=ae9dcb76dd3e234329e5ba6e213f48e532c5a3e7b0b4d8a87f13aaca0cc18377 - sawyer (0.9.2) sha256=fa3a72d62a4525517b18857ddb78926aab3424de0129be6772a8e2ba240e7aca - scss_lint (0.59.0) sha256=67fbe3dc39cf6295147ea5093b3a1b6c0fe26dbcfcbd4823c3d5de64c9fccde8 + sawyer (0.9.3) sha256=0d0f19298408047037638639fe62f4794483fb04320269169bd41af2bdcf5e41 + scss_lint (0.60.0) sha256=aad2d0e1cdddcd81b81583b5c90a0ae562071b6913a0c200a7bffb7a377f375b securerandom (0.4.1) sha256=cc5193d414a4341b6e225f0cb4446aceca8e50d5e1888743fac16987638ea0b1 - sexp_processor (4.17.3) sha256=5ef0d952565eeedb416519f678b6b41c6ab6700abba828f46986f2d85d295dae + sexp_processor (4.17.5) sha256=ae2b48ba98353d5d465ce8759836b7a05f2e12c5879fcd14d7815b026de32f0e smart_properties (1.17.0) sha256=f9323f8122e932341756ddec8e0ac9ec6e238408a7661508be99439ca6d6384b terminal-table (4.0.0) sha256=f504793203f8251b2ea7c7068333053f0beeea26093ec9962e62ea79f94301d2 - thor (1.3.2) sha256=eef0293b9e24158ccad7ab383ae83534b7ad4ed99c09f96f1a6b036550abbeda + thor (1.5.0) sha256=e3a9e55fe857e44859ce104a84675ab6e8cd59c650a49106a05f55f136425e73 tzinfo (2.0.6) sha256=8daf828cc77bcf7d63b0e3bdb6caa47e2272dcfaf4fbfe46f8c3a9df087a829b unicode-display_width (3.2.0) sha256=0cdd96b5681a5949cdbc2c55e7b420facae74c4aaf9a9815eee1087cb1853c42 - unicode-emoji (4.1.0) sha256=4997d2d5df1ed4252f4830a9b6e86f932e2013fbff2182a9ce9ccabda4f325a5 + unicode-emoji (4.2.0) sha256=519e69150f75652e40bf736106cfbc8f0f73aa3fb6a65afe62fefa7f80b0f80f uri (1.1.1) sha256=379fa58d27ffb1387eaada68c749d1426738bd0f654d812fcc07e7568f5c57c6 webmock (3.26.1) sha256=4f696fb57c90a827c20aadb2d4f9058bbff10f7f043bd0d4c3f58791143b1cd7 - yard (0.9.37) sha256=a6e910399e78e613f80ba9add9ba7c394b1a935f083cccbef82903a3d2a26992 - zeitwerk (2.6.18) sha256=bd2d213996ff7b3b364cd342a585fbee9797dbc1c0c6d868dc4150cc75739781 + yard (0.9.38) sha256=721fb82afb10532aa49860655f6cc2eaa7130889df291b052e1e6b268283010f + zeitwerk (2.7.4) sha256=2bef90f356bdafe9a6c2bd32bcd804f83a4f9b8bc27f3600fff051eb3edcec8b BUNDLED WITH 2.7.2 From ab99f110c82b8059f901e871bd473651ad9ec561 Mon Sep 17 00:00:00 2001 From: "David A." <3106338+Dakad@users.noreply.github.com> Date: Mon, 2 Feb 2026 12:22:03 +0100 Subject: [PATCH 8/8] Fix hadolint complaints --- Dockerfile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 77dc9bb..de06768 100644 --- a/Dockerfile +++ b/Dockerfile @@ -16,11 +16,10 @@ LABEL org.opencontainers.image.vendor="AppTweak" LABEL org.opencontainers.image.version=${CVS_REF} LABEL org.opencontainers.image.created=${BUILD_DATE} -RUN apt-get update && apt-get install -y curl - RUN apt-get update && \ apt-get install --no-install-recommends -y \ build-essential \ + curl \ cmake \ git \ pkg-config \