diff --git a/.envrc b/.envrc index e049643d..6b06e0ae 100644 --- a/.envrc +++ b/.envrc @@ -1,4 +1,6 @@ # Run any command in this library's bin/ without the bin/ prefix! +# Prefer exe version over binstub +PATH_add exe PATH_add bin # Only add things to this file that should be shared with the team. @@ -16,18 +18,21 @@ PATH_add bin ### External Testing Controls export K_SOUP_COV_DO=true # Means you want code coverage +export K_SOUP_COV_COMMAND_NAME="Test Coverage" # Available formats are html, xml, rcov, lcov, json, tty -export K_SOUP_COV_COMMAND_NAME="RSpec Coverage" -export K_SOUP_COV_FORMATTERS="html,tty" -export K_SOUP_COV_MIN_BRANCH=100 # Means you want to enforce X% branch coverage -export K_SOUP_COV_MIN_LINE=100 # Means you want to enforce X% line coverage +export K_SOUP_COV_FORMATTERS="html,xml,rcov,lcov,json,tty" +export K_SOUP_COV_MIN_BRANCH=78 # Means you want to enforce X% branch coverage +export K_SOUP_COV_MIN_LINE=97 # Means you want to enforce X% line coverage export K_SOUP_COV_MIN_HARD=true # Means you want the build to fail if the coverage thresholds are not met export K_SOUP_COV_MULTI_FORMATTERS=true export K_SOUP_COV_OPEN_BIN= # Means don't try to open coverage results in browser export MAX_ROWS=1 # Setting for simplecov-console gem for tty output, limits to the worst N rows of bad coverage +export KETTLE_TEST_SILENT=true # Internal Debugging Controls export DEBUG=false # do not allow byebug statements (override in .env.local) +export FLOSS_CFG_FUND_DEBUG=false # extra logging to help diagnose issues (override in .env.local) +export FLOSS_CFG_FUND_LOGFILE=tmp/log/debug.log # Concurrently developing the rubocop-lts suite? export RUBOCOP_LTS_LOCAL=false diff --git a/.git-hooks/commit-msg b/.git-hooks/commit-msg new file mode 100755 index 00000000..cd918f6b --- /dev/null +++ b/.git-hooks/commit-msg @@ -0,0 +1,41 @@ +#!/usr/bin/env ruby +# vim: set syntax=ruby + +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) + +require "rubygems" +require "bundler/setup" + +# External gems +require "gitmoji/regex" + +full_text = File.read(ARGV[0]) +# Is the first character a GitMoji? +gitmoji_index = full_text =~ Gitmoji::Regex::REGEX +if gitmoji_index == 0 + exit 0 +else + denied = < (& many more) are a full-time endeavor. +- [❤️] Though I adore my work, it lacks financial sustainability. +- [❤️] Please, help me continue enhancing your tools by becoming a sponsor: + - [💲] https://liberapay.com/pboling/donate + - [💲] https://github.com/sponsors/pboling + +<% if ENV["GIT_HOOK_FOOTER_APPEND_DEBUG"] == "true" %> + @pwd = <%= @pwd %> + @gemspecs = <%= @gemspecs %> + @spec = <%= @spec %> + @gemspec_path = <%= @gemspec_path %> + @gem_name <%= @gem_name %> + @spec_name <%= @spec_name %> + @content <%= @content %> +<% end %> diff --git a/.git-hooks/prepare-commit-msg b/.git-hooks/prepare-commit-msg new file mode 100755 index 00000000..48c75470 --- /dev/null +++ b/.git-hooks/prepare-commit-msg @@ -0,0 +1,20 @@ +#!/bin/sh + +# Fail on error and unset variables +set -eu + +# Determine project root as the parent directory of this hook script +PROJECT_ROOT="$(CDPATH= cd -- "$(dirname -- "$0")"/.. && pwd)" + +# Run the Ruby hook within the direnv context (if available), +# so ENV from .envrc/.env.local at project root is loaded. +# One of the things .envrc needs to do is add $PROJECT_ROOT/bin/ to the path. +# You should have this line at the top of .envrc +# PATH_add bin +# NOTE: this project needs to also add exe as well, +# but other libraries won't generally need to do that. +if command -v direnv >/dev/null 2>&1; then + exec direnv exec "$PROJECT_ROOT" "kettle-commit-msg" "$@" +else + raise "direnv not found. Local development of this project ($PROJECT_ROOT) with tools from the kettle-dev gem may not work properly. Please run 'brew install direnv'." +fi diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 056a9722..5ee55773 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -6,8 +6,8 @@ github: [pboling] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., issuehunt: pboling # Replace with a single IssueHunt username ko_fi: pboling # Replace with a single Ko-fi username liberapay: pboling # Replace with a single Liberapay username -open_collective: ruby-oauth # Replace with a single Open Collective username +open_collective: ruby-oauth patreon: galtzo # Replace with a single Patreon username polar: pboling thanks_dev: u/gh/pboling -tidelift: rubygems/oauth2 # Replace with a single Tidelift platform-name/package-name e.g., npm/babel +tidelift: rubygems/oauth2 diff --git a/.github/dependabot.yml b/.github/dependabot.yml index dc043b45..956aa5a3 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -3,12 +3,11 @@ updates: - package-ecosystem: bundler directory: "/" schedule: - interval: daily - time: "04:28" - open-pull-requests-limit: 10 + interval: "weekly" + open-pull-requests-limit: 5 ignore: - dependency-name: "rubocop-lts" - package-ecosystem: "github-actions" directory: "/" schedule: - interval: "daily" + interval: "weekly" diff --git a/.github/workflows/ancient.yml b/.github/workflows/ancient.yml index 2055a73e..31a9e947 100644 --- a/.github/workflows/ancient.yml +++ b/.github/workflows/ancient.yml @@ -24,8 +24,8 @@ concurrency: jobs: test: - name: Specs ${{ matrix.ruby }} ${{ matrix.appraisal }}${{ matrix.name_extra || '' }} if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')" + name: Specs ${{ matrix.ruby }} ${{ matrix.appraisal }}${{ matrix.name_extra || '' }} runs-on: ubuntu-22.04 continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }} env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps @@ -34,6 +34,15 @@ jobs: fail-fast: false matrix: include: +# Ruby 2.3 is tested heavily by caboose.yml +# # Ruby 2.3 +# - ruby: "ruby-2.3" +# appraisal: "ruby-2-3" +# exec_cmd: "rake test" +# gemfile: "Appraisal.root" +# rubygems: "3.3.27" +# bundler: "2.3.27" + # Ruby 2.4 - ruby: "ruby-2.4" appraisal: "ruby-2-4" diff --git a/.github/workflows/auto-assign.yml b/.github/workflows/auto-assign.yml new file mode 100644 index 00000000..96975f22 --- /dev/null +++ b/.github/workflows/auto-assign.yml @@ -0,0 +1,21 @@ +name: Auto Assign +on: + issues: + types: [opened] + pull_request: + types: [opened] +jobs: + run: + runs-on: ubuntu-latest + permissions: + issues: write + pull-requests: write + steps: + - name: 'Auto-assign issue' + uses: pozil/auto-assign-issue@v2 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + assignees: pboling + abortIfPreviousAssignees: true + allowSelfAssign: true + numOfAssignee: 1 \ No newline at end of file diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index a03c20f2..45a8ec2c 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -13,10 +13,10 @@ name: "CodeQL" on: push: - branches: [ main, "*-stable" ] + branches: [ main, '*-stable' ] pull_request: # The branches below must be a subset of the branches above - branches: [ main, "*-stable" ] + branches: [ main, '*-stable' ] schedule: - cron: '35 1 * * 5' diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 40e7f9ab..c9d6a2e1 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -9,7 +9,7 @@ env: K_SOUP_COV_MIN_BRANCH: 100 K_SOUP_COV_MIN_LINE: 100 K_SOUP_COV_MIN_HARD: true - K_SOUP_COV_FORMATTERS: "html,xml,rcov,lcov,tty" + K_SOUP_COV_FORMATTERS: "xml,rcov,lcov,tty" K_SOUP_COV_DO: true K_SOUP_COV_MULTI_FORMATTERS: true K_SOUP_COV_COMMAND_NAME: "Test Coverage" @@ -35,8 +35,8 @@ concurrency: jobs: coverage: - name: Code Coverage on ${{ matrix.ruby }}@current if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')" + name: Code Coverage on ${{ matrix.ruby }}@current runs-on: ubuntu-latest continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }} env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps @@ -67,7 +67,7 @@ jobs: # Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root) # We need to do this first to get appraisal installed. - # NOTE: This does not use the main Gemfile at all. + # NOTE: This does not use the primary Gemfile at all. - name: Install Root Appraisal run: bundle - name: Appraisal for ${{ matrix.appraisal }} @@ -85,21 +85,22 @@ jobs: - name: Upload coverage to QLTY if: ${{ !env.ACT }} - uses: qltysh/qlty-action/coverage@v2 + uses: qltysh/qlty-action/coverage@main with: token: ${{secrets.QLTY_COVERAGE_TOKEN}} files: coverage/.resultset.json continue-on-error: ${{ matrix.experimental != 'false' }} -# # Build will fail here if coverage upload fails -# # which will hopefully be noticed for the lack of code coverage comments -# - name: Upload coverage to CodeCov -# uses: codecov/codecov-action@v5 -# with: -# use_oidc: true -# fail_ci_if_error: true # optional (default = false) -# files: coverage/lcov.info,coverage/coverage.xml -# verbose: true # optional (default = false) + # Build will fail here if coverage upload fails + # which will hopefully be noticed for the lack of code coverage comments + - name: Upload coverage to CodeCov + if: ${{ !env.ACT }} + uses: codecov/codecov-action@v5 + with: + use_oidc: true + fail_ci_if_error: false # optional (default = false) + files: coverage/lcov.info,coverage/coverage.xml + verbose: true # optional (default = false) # Then PR comments - name: Code Coverage Summary Report diff --git a/.github/workflows/current.yml b/.github/workflows/current.yml index 1096ce9b..aca52ba3 100644 --- a/.github/workflows/current.yml +++ b/.github/workflows/current.yml @@ -28,8 +28,8 @@ concurrency: jobs: test: - name: Specs ${{ matrix.ruby }}@${{ matrix.appraisal }} if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')" + name: Specs ${{ matrix.ruby }}@${{ matrix.appraisal }} runs-on: ubuntu-latest continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }} env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps diff --git a/.github/workflows/discord-notifier.yml b/.github/workflows/discord-notifier.yml new file mode 100644 index 00000000..ad98367a --- /dev/null +++ b/.github/workflows/discord-notifier.yml @@ -0,0 +1,39 @@ +name: Discord Notify + +on: + check_run: + types: [completed] + discussion: + types: [ created ] + discussion_comment: + types: [ created ] + fork: + gollum: + issues: + types: [ opened ] + issue_comment: + types: [ created ] + pull_request: + types: [ opened, reopened, closed ] + release: + types: [ published ] + watch: + types: [ started ] + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + # This workflow contains a single job called "build" + notify: + if: false + # The type of runner that the job will run on + runs-on: ubuntu-latest + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + - name: Actions Status Discord + uses: sarisia/actions-status-discord@v1 + if: always() + with: + webhook: ${{ secrets.DISCORD_WEBHOOK }} + status: ${{ job.status }} + username: GitHub Actions diff --git a/.github/workflows/heads.yml b/.github/workflows/heads.yml index a1f1f0a7..e2046e66 100644 --- a/.github/workflows/heads.yml +++ b/.github/workflows/heads.yml @@ -27,8 +27,8 @@ concurrency: jobs: test: - name: Specs ${{ matrix.ruby }}@${{ matrix.appraisal }}${{ matrix.name_extra || '' }} if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')" + name: Specs ${{ matrix.ruby }}@${{ matrix.appraisal }}${{ matrix.name_extra || '' }} runs-on: ubuntu-latest continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }} env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps diff --git a/.github/workflows/jruby.yml b/.github/workflows/jruby.yml index 06f1eb99..99ea13d9 100644 --- a/.github/workflows/jruby.yml +++ b/.github/workflows/jruby.yml @@ -27,8 +27,8 @@ concurrency: jobs: test: - name: Specs ${{ matrix.ruby }} ${{ matrix.appraisal }}${{ matrix.name_extra || '' }} if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')" + name: Specs ${{ matrix.ruby }} ${{ matrix.appraisal }}${{ matrix.name_extra || '' }} runs-on: ubuntu-22.04 continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }} env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps @@ -36,22 +36,6 @@ jobs: strategy: matrix: include: - # jruby-9.2 (targets Ruby 2.5 compatibility) - - ruby: "jruby-9.2" - appraisal: "ruby-2-5" - exec_cmd: "rake test" - gemfile: "Appraisal.root" - rubygems: default - bundler: default - - # jruby-9.3 (targets Ruby 2.6 compatibility) - - ruby: "jruby-9.3" - appraisal: "ruby-2-6" - exec_cmd: "rake test" - gemfile: "Appraisal.root" - rubygems: default - bundler: default - # jruby-9.4 (targets Ruby 3.1 compatibility) - ruby: "jruby-9.4" appraisal: "ruby-3-1" diff --git a/.github/workflows/legacy.yml b/.github/workflows/legacy.yml index dc59e4ac..7f1fc299 100644 --- a/.github/workflows/legacy.yml +++ b/.github/workflows/legacy.yml @@ -27,8 +27,8 @@ concurrency: jobs: test: - name: Specs ${{ matrix.ruby }} ${{ matrix.appraisal }}${{ matrix.name_extra || '' }} if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')" + name: Specs ${{ matrix.ruby }} ${{ matrix.appraisal }}${{ matrix.name_extra || '' }} runs-on: ubuntu-22.04 continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }} env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps @@ -37,14 +37,6 @@ jobs: fail-fast: false matrix: include: - # Ruby 3.1 - - ruby: "ruby-3.1" - appraisal: "ruby-3-1" - exec_cmd: "rake test" - gemfile: "Appraisal.root" - rubygems: latest - bundler: latest - # Ruby 3.0 - ruby: "ruby-3.0" appraisal: "ruby-3-0" @@ -53,6 +45,14 @@ jobs: rubygems: '3.5.23' bundler: '2.5.23' + # Ruby 3.1 + - ruby: "ruby-3.1" + appraisal: "ruby-3-1" + exec_cmd: "rake test" + gemfile: "Appraisal.root" + rubygems: latest + bundler: latest + steps: - name: Checkout uses: actions/checkout@v5 diff --git a/.github/workflows/deps_locked.yml b/.github/workflows/locked_deps.yml similarity index 74% rename from .github/workflows/deps_locked.yml rename to .github/workflows/locked_deps.yml index 96dc9767..7d946ad6 100644 --- a/.github/workflows/deps_locked.yml +++ b/.github/workflows/locked_deps.yml @@ -3,13 +3,13 @@ # # Two often conflicting goals resolved! # -# - deps_unlocked.yml +# - unlocked_deps.yml # - All runtime & dev dependencies, but does not have a `gemfiles/*.gemfile.lock` committed -# - Uses an Appraisal2 "deps_unlocked" gemfile, and the current MRI Ruby release +# - Uses an Appraisal2 "unlocked_deps" gemfile, and the current MRI Ruby release # - Know when new dependency releases will break local dev with unlocked dependencies # - Broken workflow indicates that new releases of dependencies may not work # -# - deps_locked.yml +# - locked_deps.yml # - All runtime & dev dependencies, and has a `Gemfile.lock` committed # - Uses the project's main Gemfile, and the current MRI Ruby release # - Matches what contributors and maintainers use locally for development @@ -21,7 +21,17 @@ permissions: contents: read env: - KITCHEN_SINK: true + # Running coverage, but not validating minimum coverage, + # because it would be redundant with the coverage workflow. + # Also we can validate all output formats without breaking CodeCov, + # since we aren't submitting these reports anywhere. + K_SOUP_COV_MIN_BRANCH: 71 + K_SOUP_COV_MIN_LINE: 86 + K_SOUP_COV_MIN_HARD: false + K_SOUP_COV_FORMATTERS: "html,xml,rcov,lcov,json,tty" + K_SOUP_COV_DO: true + K_SOUP_COV_MULTI_FORMATTERS: true + K_SOUP_COV_COMMAND_NAME: "Test Coverage" on: push: @@ -44,8 +54,8 @@ concurrency: jobs: test: + if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')" name: Default rake task w/ main Gemfile.lock ${{ matrix.name_extra || '' }} - if: ${{ !contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]') }} runs-on: ubuntu-latest continue-on-error: ${{ matrix.experimental }} strategy: diff --git a/.github/workflows/opencollective.yml b/.github/workflows/opencollective.yml new file mode 100644 index 00000000..6122df47 --- /dev/null +++ b/.github/workflows/opencollective.yml @@ -0,0 +1,40 @@ +name: Open Collective Backers + +on: + schedule: + # Run once a week on Sunday at 12:00 AM UTC + - cron: '0 0 * * 0' + workflow_dispatch: + +permissions: + contents: write + +jobs: + update-backers: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + with: + persist-credentials: false + - name: Setup Ruby & RubyGems + uses: ruby/setup-ruby@v1 + with: + ruby-version: ruby + rubygems: default + bundler: default + bundler-cache: true + + - name: README Update + env: + # Keep GITHUB_TOKEN for any tools/scripts expecting it, mapped to the same secret + GITHUB_TOKEN: ${{ secrets.README_UPDATER_TOKEN }} + README_UPDATER_TOKEN: ${{ secrets.README_UPDATER_TOKEN }} + REPO: ${{ github.repository }} + run: | + git config user.name 'autobolt' + git config user.email 'autobots@9thbit.net' + # Use the configured token for authenticated pushes + git remote set-url origin "https://x-access-token:${README_UPDATER_TOKEN}@github.com/${REPO}.git" + bin/kettle-readme-backers + # Push back to the same branch/ref that triggered the workflow (default branch for schedule) + git push origin HEAD diff --git a/.github/workflows/style.yml b/.github/workflows/style.yml index dfee1fac..2fe1e03c 100644 --- a/.github/workflows/style.yml +++ b/.github/workflows/style.yml @@ -24,8 +24,8 @@ concurrency: jobs: rubocop: - name: Style on ${{ matrix.ruby }}@current if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')" + name: Style on ${{ matrix.ruby }}@current runs-on: ubuntu-latest continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }} env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps diff --git a/.github/workflows/supported.yml b/.github/workflows/supported.yml index d20a3e84..887034b0 100644 --- a/.github/workflows/supported.yml +++ b/.github/workflows/supported.yml @@ -27,8 +27,8 @@ concurrency: jobs: test: - name: Specs ${{ matrix.ruby }} ${{ matrix.appraisal }}${{ matrix.name_extra || '' }} if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')" + name: Specs ${{ matrix.ruby }} ${{ matrix.appraisal }}${{ matrix.name_extra || '' }} runs-on: ubuntu-latest continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }} env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps diff --git a/.github/workflows/truffle.yml b/.github/workflows/truffle.yml index bf51aaca..db651885 100644 --- a/.github/workflows/truffle.yml +++ b/.github/workflows/truffle.yml @@ -27,8 +27,8 @@ concurrency: jobs: test: - name: Specs ${{ matrix.ruby }} ${{ matrix.appraisal }}${{ matrix.name_extra || '' }} if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')" + name: Specs ${{ matrix.ruby }} ${{ matrix.appraisal }}${{ matrix.name_extra || '' }} runs-on: ubuntu-22.04 continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }} env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps diff --git a/.github/workflows/deps_unlocked.yml b/.github/workflows/unlocked_deps.yml similarity index 92% rename from .github/workflows/deps_unlocked.yml rename to .github/workflows/unlocked_deps.yml index cfa42543..7faffa13 100644 --- a/.github/workflows/deps_unlocked.yml +++ b/.github/workflows/unlocked_deps.yml @@ -3,13 +3,13 @@ # # Two often conflicting goals resolved! # -# - deps_unlocked.yml +# - unlocked_deps.yml # - All runtime & dev dependencies, but does not have a `gemfiles/*.gemfile.lock` committed -# - Uses an Appraisal2 "deps_unlocked" gemfile, and the current MRI Ruby release +# - Uses an Appraisal2 "unlocked_deps" gemfile, and the current MRI Ruby release # - Know when new dependency releases will break local dev with unlocked dependencies # - Broken workflow indicates that new releases of dependencies may not work # -# - deps_locked.yml +# - locked_deps.yml # - All runtime & dev dependencies, and has a `Gemfile.lock` committed # - Uses the project's main Gemfile, and the current MRI Ruby release # - Matches what contributors and maintainers use locally for development @@ -27,7 +27,7 @@ on: push: branches: - 'main' - - "*-stable" + - '*-stable' tags: - '!*' # Do not execute on tags pull_request: @@ -44,8 +44,8 @@ concurrency: jobs: test: - name: Default rake task w/ unlocked deps ${{ matrix.name_extra || '' }} if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')" + name: Default rake task w/ unlocked deps ${{ matrix.name_extra || '' }} runs-on: ubuntu-latest continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }} env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps @@ -55,7 +55,7 @@ jobs: include: # Ruby - ruby: "ruby" - appraisal_name: "deps_unlocked" + appraisal_name: "unlocked_deps" exec_cmd: "rake" gemfile: "Appraisal.root" rubygems: latest @@ -75,7 +75,7 @@ jobs: # Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root) # We need to do this first to get appraisal installed. - # NOTE: This does not use the main Gemfile at all. + # NOTE: This does not use the primary Gemfile at all. - name: Install Root Appraisal run: bundle - name: Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal_name }} diff --git a/.github/workflows/unsupported.yml b/.github/workflows/unsupported.yml index 0bfc0d3b..98336994 100644 --- a/.github/workflows/unsupported.yml +++ b/.github/workflows/unsupported.yml @@ -27,8 +27,8 @@ concurrency: jobs: test: - name: Specs ${{ matrix.ruby }} ${{ matrix.appraisal }}${{ matrix.name_extra || '' }} if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')" + name: Specs ${{ matrix.ruby }} ${{ matrix.appraisal }}${{ matrix.name_extra || '' }} runs-on: ubuntu-22.04 continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }} env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps diff --git a/.gitignore b/.gitignore index 159a4bd6..83000f2c 100644 --- a/.gitignore +++ b/.gitignore @@ -15,6 +15,7 @@ Appraisal.*.gemfile.lock .rspec_status /coverage/ /spec/reports/ +/results/ # Documentation /.yardoc/ @@ -42,3 +43,6 @@ Appraisal.*.gemfile.lock # Editors *~ + +# Sentinels +.floss_funding.*.lock diff --git a/.idea/oauth2.iml b/.idea/oauth2.iml index d98c93e6..52e08626 100755 --- a/.idea/oauth2.iml +++ b/.idea/oauth2.iml @@ -12,6 +12,7 @@ + @@ -25,9 +26,11 @@ + + @@ -42,17 +45,21 @@ + + + + @@ -63,31 +70,35 @@ + + - + - + - + - + + + @@ -98,12 +109,12 @@ - + - + - + @@ -111,11 +122,13 @@ - + - + + + @@ -123,6 +136,7 @@ +