From 6ba868991a0c607eeebecde385e2fd29c6307aa8 Mon Sep 17 00:00:00 2001 From: "Peter H. Boling" Date: Sat, 20 Sep 2025 15:44:42 -0600 Subject: [PATCH 1/5] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20IDE=20s?= =?UTF-8?q?ettings?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/.gitignore | 7 ++ .idea/oauth-tty.iml | 189 -------------------------------------------- 2 files changed, 7 insertions(+), 189 deletions(-) delete mode 100644 .idea/oauth-tty.iml diff --git a/.idea/.gitignore b/.idea/.gitignore index 13566b8..9df2ac9 100644 --- a/.idea/.gitignore +++ b/.idea/.gitignore @@ -6,3 +6,10 @@ # Datasource local storage ignored files /dataSources/ /dataSources.local.xml + +# Zencoder local files +/zencoder/chats +/zencoder-chat-index.xml +/zencoder-chats-dedicated.xml +# Local project config +*.iml diff --git a/.idea/oauth-tty.iml b/.idea/oauth-tty.iml deleted file mode 100644 index 2ac92f7..0000000 --- a/.idea/oauth-tty.iml +++ /dev/null @@ -1,189 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file From 271df522eeb9badb7a3ec37e93e5929b3e17d298 Mon Sep 17 00:00:00 2001 From: "Peter H. Boling" Date: Sat, 20 Sep 2025 15:44:55 -0600 Subject: [PATCH 2/5] =?UTF-8?q?=E2=AC=86=EF=B8=8F=20kettle-dev,=20version?= =?UTF-8?q?=5Fgem?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile.lock | 40 ++++++++++++++++++++-------------------- oauth-tty.gemspec | 4 ++-- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 33db2d4..0aac10d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -12,19 +12,19 @@ GIT GIT remote: https://github.com/ruby-oauth/oauth - revision: 66b90d72d8157b58e16961748cfdf1c7aef31d22 + revision: 2ae700b99c264baf2b179dfb79749cefc36915db branch: main specs: oauth (1.1.1) oauth-tty (~> 1.0, >= 1.0.1) snaky_hash (~> 2.0) - version_gem (~> 1.1) + version_gem (~> 1.1, >= 1.1.9) PATH remote: . specs: oauth-tty (1.0.5) - version_gem (~> 1.1, >= 1.1.8) + version_gem (~> 1.1, >= 1.1.9) GEM remote: https://rubygems.org/ @@ -124,8 +124,8 @@ GEM pp (>= 0.6.0) rdoc (>= 4.0.0) reline (>= 0.4.2) - json (2.13.2) - kettle-dev (1.1.16) + json (2.14.1) + kettle-dev (1.1.26) kettle-soup-cover (1.0.10) simplecov (~> 0.22) simplecov-cobertura (~> 3.0) @@ -154,26 +154,26 @@ GEM mime-types (3.7.0) logger mime-types-data (~> 3.2025, >= 3.2025.0507) - mime-types-data (3.2025.0909) + mime-types-data (3.2025.0916) mocha (2.7.1) ruby2_keywords (>= 0.0.5) mutex_m (0.3.0) netrc (0.11.0) - nokogiri (1.18.9-aarch64-linux-gnu) + nokogiri (1.18.10-aarch64-linux-gnu) racc (~> 1.4) - nokogiri (1.18.9-aarch64-linux-musl) + nokogiri (1.18.10-aarch64-linux-musl) racc (~> 1.4) - nokogiri (1.18.9-arm-linux-gnu) + nokogiri (1.18.10-arm-linux-gnu) racc (~> 1.4) - nokogiri (1.18.9-arm-linux-musl) + nokogiri (1.18.10-arm-linux-musl) racc (~> 1.4) - nokogiri (1.18.9-arm64-darwin) + nokogiri (1.18.10-arm64-darwin) racc (~> 1.4) - nokogiri (1.18.9-x86_64-darwin) + nokogiri (1.18.10-x86_64-darwin) racc (~> 1.4) - nokogiri (1.18.9-x86_64-linux-gnu) + nokogiri (1.18.10-x86_64-linux-gnu) racc (~> 1.4) - nokogiri (1.18.9-x86_64-linux-musl) + nokogiri (1.18.10-x86_64-linux-musl) racc (~> 1.4) ostruct (0.6.3) parallel (1.27.0) @@ -183,7 +183,7 @@ GEM pp (0.6.2) prettyprint prettyprint (0.2.0) - prism (1.4.0) + prism (1.5.1) psych (5.2.6) date stringio @@ -205,7 +205,7 @@ GEM parser (~> 3.3.0) rainbow (>= 2.0, < 4.0) rexml (~> 3.1) - regexp_parser (2.11.2) + regexp_parser (2.11.3) reline (0.6.2) io-console (~> 0.5) require_bench (1.0.4) @@ -235,7 +235,7 @@ GEM ruby_version (~> 1.0) version_gem (~> 1.1, >= 1.1.8) rspec-stubbed_env (1.0.4) - rspec-support (3.13.5) + rspec-support (3.13.6) rspec_junit_formatter (0.6.0) rspec-core (>= 2, < 4, != 2.12.0) rubocop (1.80.2) @@ -249,7 +249,7 @@ GEM rubocop-ast (>= 1.46.0, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 4.0) - rubocop-ast (1.46.0) + rubocop-ast (1.47.0) parser (>= 3.3.7.2) prism (~> 1.4) rubocop-gradual (0.3.6) @@ -322,7 +322,7 @@ GEM snaky_hash (2.0.3) hashie (>= 0.1.0, < 6) version_gem (>= 1.1.8, < 3) - standard (1.51.0) + standard (1.51.1) language_server-protocol (~> 3.17.0.2) lint_roller (~> 1.0) rubocop (~> 1.80.2) @@ -390,7 +390,7 @@ DEPENDENCIES gem_bench (~> 2.0, >= 2.0.5) gitmoji-regex (~> 1.0, >= 1.0.3) irb (~> 1.15, >= 1.15.2) - kettle-dev (~> 1.0) + kettle-dev (~> 1.1) kettle-soup-cover (~> 1.0, >= 1.0.10) kettle-test (~> 1.0) kramdown (~> 2.5, >= 2.5.1) diff --git a/oauth-tty.gemspec b/oauth-tty.gemspec index 313a831..be5c689 100644 --- a/oauth-tty.gemspec +++ b/oauth-tty.gemspec @@ -95,7 +95,7 @@ Gem::Specification.new do |spec| spec.executables = ["oauth"] # Utilities - spec.add_dependency("version_gem", "~> 1.1", ">= 1.1.8") # ruby >= 2.2.0 + spec.add_dependency("version_gem", "~> 1.1", ">= 1.1.9") # ruby >= 2.2.0 # NOTE: It is preferable to list development dependencies in the gemspec due to increased # visibility and discoverability on RubyGems.org. @@ -112,7 +112,7 @@ Gem::Specification.new do |spec| # and preferably a modular one (see gemfiles/modular/*.gemfile). # Dev, Test, & Release Tasks - spec.add_development_dependency("kettle-dev", "~> 1.0") # ruby >= 2.3.0 + spec.add_development_dependency("kettle-dev", "~> 1.1") # ruby >= 2.3.0 # Security spec.add_development_dependency("bundler-audit", "~> 0.9.2") # ruby >= 2.0.0 From bcbc8f30db02ed205f652c33fc6106969a6dbf5f Mon Sep 17 00:00:00 2001 From: "Peter H. Boling" Date: Sat, 20 Sep 2025 15:45:51 -0600 Subject: [PATCH 3/5] =?UTF-8?q?=F0=9F=8E=A8=20Template=20bootstrap=20by=20?= =?UTF-8?q?kettle-dev-setup=20v1.1.26?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile.lock | 13 ------------- Rakefile | 2 +- gemfiles/modular/x_std_libs/r2.3/libs.gemfile | 1 - gemfiles/modular/x_std_libs/r2.4/libs.gemfile | 1 - gemfiles/modular/x_std_libs/r2.6/libs.gemfile | 1 - gemfiles/modular/x_std_libs/r2/libs.gemfile | 1 - gemfiles/modular/x_std_libs/r3.1/libs.gemfile | 1 - gemfiles/modular/x_std_libs/r3/libs.gemfile | 1 - gemfiles/modular/x_std_libs/vHEAD.gemfile | 1 - oauth-tty.gemspec | 8 +++++--- 10 files changed, 6 insertions(+), 24 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 0aac10d..245ac9d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -46,9 +46,6 @@ GEM thor (~> 1.0) concurrent-ruby (1.3.5) cookiejar (0.3.4) - crack (1.0.0) - bigdecimal - rexml date (3.4.1) debug (1.11.0) irb (~> 1.10) @@ -113,7 +110,6 @@ GEM version_gem (~> 1.1, >= 1.1.4) gitmoji-regex (1.0.3) version_gem (~> 1.1, >= 1.1.8) - hashdiff (1.2.1) hashie (5.0.0) http-accept (1.7.0) http-cookie (1.0.8) @@ -356,13 +352,7 @@ GEM unicode-display_width (3.2.0) unicode-emoji (~> 4.1) unicode-emoji (4.1.0) - vcr (6.3.1) - base64 version_gem (1.1.9) - webmock (3.25.1) - addressable (>= 2.8.0) - crack (>= 0.3.2) - hashdiff (>= 0.4.0, < 2.0.0) yard (0.9.37) yard-relative_markdown_links (0.5.0) nokogiri (>= 1.14.3, < 2) @@ -381,7 +371,6 @@ PLATFORMS DEPENDENCIES appraisal2 (~> 3.0) - base64 (~> 0.3) benchmark (~> 0.4, >= 0.4.1) bundler-audit (~> 0.9.2) debug (>= 1.1) @@ -417,8 +406,6 @@ DEPENDENCIES stone_checksums (~> 1.0, >= 1.0.2) stringio (>= 3.0) typhoeus (>= 0.1.13) - vcr (>= 4) - webmock (>= 3) yard (~> 0.9, >= 0.9.37) yard-junk (~> 0.0, >= 0.0.10)! yard-relative_markdown_links (~> 0.5.0) diff --git a/Rakefile b/Rakefile index d6a4ff2..b6d8ffc 100644 --- a/Rakefile +++ b/Rakefile @@ -1,6 +1,6 @@ # frozen_string_literal: true -# kettle-dev Rakefile v1.1.16 - 2025-09-10 +# kettle-dev Rakefile v1.1.26 - 2025-09-20 # Ruby 2.3 (Safe Navigation) or higher required # # MIT License (see License.txt) diff --git a/gemfiles/modular/x_std_libs/r2.3/libs.gemfile b/gemfiles/modular/x_std_libs/r2.3/libs.gemfile index b037517..2fee8b6 100644 --- a/gemfiles/modular/x_std_libs/r2.3/libs.gemfile +++ b/gemfiles/modular/x_std_libs/r2.3/libs.gemfile @@ -1,4 +1,3 @@ -eval_gemfile "../../base64/r2.3/v0.1.gemfile" eval_gemfile "../../erb/r2.3/default.gemfile" eval_gemfile "../../mutex_m/r2.4/v0.1.gemfile" eval_gemfile "../../stringio/r2.4/v0.0.2.gemfile" diff --git a/gemfiles/modular/x_std_libs/r2.4/libs.gemfile b/gemfiles/modular/x_std_libs/r2.4/libs.gemfile index 67fe5ba..c1bcbd8 100644 --- a/gemfiles/modular/x_std_libs/r2.4/libs.gemfile +++ b/gemfiles/modular/x_std_libs/r2.4/libs.gemfile @@ -1,4 +1,3 @@ -eval_gemfile "../../base64/r2/v0.2.gemfile" eval_gemfile "../../erb/r2.6/v2.2.gemfile" eval_gemfile "../../mutex_m/r2.4/v0.1.gemfile" eval_gemfile "../../stringio/r2.4/v0.0.2.gemfile" diff --git a/gemfiles/modular/x_std_libs/r2.6/libs.gemfile b/gemfiles/modular/x_std_libs/r2.6/libs.gemfile index 33e62b2..beac38c 100644 --- a/gemfiles/modular/x_std_libs/r2.6/libs.gemfile +++ b/gemfiles/modular/x_std_libs/r2.6/libs.gemfile @@ -1,4 +1,3 @@ -eval_gemfile "../../base64/r2/v0.2.gemfile" eval_gemfile "../../erb/r2.6/v2.2.gemfile" eval_gemfile "../../mutex_m/r2/v0.3.gemfile" eval_gemfile "../../stringio/r2/v3.0.gemfile" diff --git a/gemfiles/modular/x_std_libs/r2/libs.gemfile b/gemfiles/modular/x_std_libs/r2/libs.gemfile index 1bcb535..441c4f0 100644 --- a/gemfiles/modular/x_std_libs/r2/libs.gemfile +++ b/gemfiles/modular/x_std_libs/r2/libs.gemfile @@ -1,4 +1,3 @@ -eval_gemfile "../../base64/r2/v0.2.gemfile" eval_gemfile "../../erb/r2/v3.0.gemfile" eval_gemfile "../../mutex_m/r2/v0.3.gemfile" eval_gemfile "../../stringio/r2/v3.0.gemfile" diff --git a/gemfiles/modular/x_std_libs/r3.1/libs.gemfile b/gemfiles/modular/x_std_libs/r3.1/libs.gemfile index 3ca8a13..bdab5bd 100644 --- a/gemfiles/modular/x_std_libs/r3.1/libs.gemfile +++ b/gemfiles/modular/x_std_libs/r3.1/libs.gemfile @@ -1,4 +1,3 @@ -eval_gemfile "../../base64/r3/v0.3.gemfile" eval_gemfile "../../erb/r3.1/v4.0.gemfile" eval_gemfile "../../mutex_m/r3/v0.3.gemfile" eval_gemfile "../../stringio/r3/v3.0.gemfile" diff --git a/gemfiles/modular/x_std_libs/r3/libs.gemfile b/gemfiles/modular/x_std_libs/r3/libs.gemfile index 116f025..c293a3d 100644 --- a/gemfiles/modular/x_std_libs/r3/libs.gemfile +++ b/gemfiles/modular/x_std_libs/r3/libs.gemfile @@ -1,4 +1,3 @@ -eval_gemfile "../../base64/r3/v0.3.gemfile" eval_gemfile "../../erb/r3/v5.0.gemfile" eval_gemfile "../../mutex_m/r3/v0.3.gemfile" eval_gemfile "../../stringio/r3/v3.0.gemfile" diff --git a/gemfiles/modular/x_std_libs/vHEAD.gemfile b/gemfiles/modular/x_std_libs/vHEAD.gemfile index 2610110..acc5ccb 100644 --- a/gemfiles/modular/x_std_libs/vHEAD.gemfile +++ b/gemfiles/modular/x_std_libs/vHEAD.gemfile @@ -1,4 +1,3 @@ -eval_gemfile "../base64/vHEAD.gemfile" eval_gemfile "../erb/vHEAD.gemfile" eval_gemfile "../mutex_m/vHEAD.gemfile" eval_gemfile "../stringio/vHEAD.gemfile" diff --git a/oauth-tty.gemspec b/oauth-tty.gemspec index be5c689..2770ea8 100644 --- a/oauth-tty.gemspec +++ b/oauth-tty.gemspec @@ -112,7 +112,7 @@ Gem::Specification.new do |spec| # and preferably a modular one (see gemfiles/modular/*.gemfile). # Dev, Test, & Release Tasks - spec.add_development_dependency("kettle-dev", "~> 1.1") # ruby >= 2.3.0 + spec.add_development_dependency("kettle-dev", "~> 1.1") # ruby >= 2.3.0 # Security spec.add_development_dependency("bundler-audit", "~> 0.9.2") # ruby >= 2.0.0 @@ -163,6 +163,8 @@ Gem::Specification.new do |spec| # | # ./spec/config/vcr.rb:3:in `' # | # ./spec/spec_helper.rb:8:in `require_relative' # | # ./spec/spec_helper.rb:8:in `' - spec.add_development_dependency("vcr", ">= 4") # 6.0 claims to support ruby >= 2.3, but fails on ruby 2.4 - spec.add_development_dependency("webmock", ">= 3") # Last version to support ruby >= 2.3 + # spec.add_development_dependency("vcr", ">= 4") # 6.0 claims to support ruby >= 2.3, but fails on ruby 2.4 + # spec.add_development_dependency("webmock", ">= 3") # Last version to support ruby >= 2.3 + # spec.add_development_dependency("backports", "~> 3.25", ">= 3.25.1") # ruby >= 0 + end From db8acd5cff8f2ac97f490b4ed0be727cfef8b1ff Mon Sep 17 00:00:00 2001 From: "Peter H. Boling" Date: Sat, 20 Sep 2025 15:59:56 -0600 Subject: [PATCH 4/5] =?UTF-8?q?=F0=9F=8E=A8=20kettle-dev=20v1.1.26=20templ?= =?UTF-8?q?ate?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/current.yml | 4 +- .github/workflows/license-eye.yml | 40 ++++++++++++++ .junie/guidelines.md | 10 +++- .licenserc.yaml | 7 +++ .rubocop_gradual.lock | 8 +-- Appraisals | 2 + CHANGELOG.md | 29 ++++++++++ Gemfile.lock | 13 +++++ README.md | 91 ++++++++++++++++++------------- oauth-tty.gemspec | 24 ++++---- spec/ext/backports.rb | 4 ++ spec/spec_helper.rb | 11 +++- 12 files changed, 181 insertions(+), 62 deletions(-) create mode 100644 .github/workflows/license-eye.yml create mode 100644 .licenserc.yaml create mode 100644 spec/ext/backports.rb diff --git a/.github/workflows/current.yml b/.github/workflows/current.yml index 72e44fe..f8a9e64 100644 --- a/.github/workflows/current.yml +++ b/.github/workflows/current.yml @@ -45,9 +45,7 @@ jobs: rubygems: latest bundler: latest - # truffleruby-24.1 - # (according to documentation: targets Ruby 3.3 compatibility) - # (according to runtime: targets Ruby 3.2 compatibility) + # truffleruby-24.1 (targets Ruby 3.3 compatibility) - ruby: "truffleruby" appraisal: "current" exec_cmd: "rake test" diff --git a/.github/workflows/license-eye.yml b/.github/workflows/license-eye.yml new file mode 100644 index 0000000..d5e667d --- /dev/null +++ b/.github/workflows/license-eye.yml @@ -0,0 +1,40 @@ +name: Apache SkyWalking Eyes + +permissions: + contents: read + +on: + push: + branches: + - 'main' + - '*-stable' + tags: + - '!*' # Do not execute on tags + pull_request: + branches: + - '*' + # Allow manually triggering the workflow. + workflow_dispatch: + +# Cancels all previous workflow runs for the same branch that have not yet completed. +concurrency: + # The concurrency group contains the workflow name and the branch name. + group: "${{ github.workflow }}-${{ github.ref }}" + cancel-in-progress: true + +jobs: + license-check: + if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')" + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v5 + + - name: Check Dependencies' License + uses: apache/skywalking-eyes/dependency@main + with: + config: .licenserc.yaml + # Ruby packages declared as dependencies in gemspecs or Gemfiles are + # typically consumed as binaries; enable weak-compatibility + # so permissive and weak-copyleft combinations are treated as compatible. + flags: --weak-compatible diff --git a/.junie/guidelines.md b/.junie/guidelines.md index ac18231..fc333d4 100644 --- a/.junie/guidelines.md +++ b/.junie/guidelines.md @@ -12,7 +12,8 @@ This document captures project-specific knowledge to streamline setup, testing, - See .env.local.example for an example of what to put in .env.local. - See CONTRIBUTING.md for details on how to set up your local environment. - Ruby and Bundler - - Runtime supports very old Rubies (>= 1.9.2) but development tooling targets >= 2.3 because of CI/setup-ruby and dev dependencies. + - Runtime supports Ruby >= 2.3.0 + - Development tooling targets Ruby >= 2.3.0 (minimum supported by setup-ruby GHA). - Use a recent Ruby (>= 3.4 recommended) for fastest setup and to exercise modern coverage behavior. - Install dependencies via Bundler in project root: - bundle install @@ -53,7 +54,7 @@ This document captures project-specific knowledge to streamline setup, testing, - RSpec.describe usage: - Use `describe "#"` to contain a block of specs that test instance method behavior. - Use `describe "::"` to contain a block of specs that test class method behavior. - - Do not use `describe "."` because the dot is ambiguous w.r.t instance vs. class methods. + - Do not use `describe "."` because the dot is ambiguous w.r.t instance vs. class methods. - When adding new code or modifying existing code always add tests to cover the updated behavior, including branches, and different types of expected and unexpected inputs. - Additional test utilities: - rspec-stubbed_env: Use stub_env to control ENV safely within examples. @@ -89,11 +90,13 @@ This document captures project-specific knowledge to streamline setup, testing, - Place new specs under spec/ mirroring lib/ structure where possible. Do not require "spec_helper" at the top of spec files, as it is automatically loaded by .rspec. - If your code relies on environment variables that drive activation (see "Activation env vars" below), prefer using rspec-stubbed_env: - it does not support stubbing with blocks, but it does automatically clean up after itself. - - outside the example: + - the below config is included in all spec scenarios by the kettle-test gem, so no need to do it again; it is here for reference: include_context 'with stubbed env' - in a before hook, or in an example: stub_env("FLOSS_FUNDING_MY_NS" => "Free-as-in-beer") + # example code continues + - If your spec needs to assert on console output, tag it with :check_output. By default, STDOUT is silenced. - Use Timecop for deterministic time-sensitive behavior as needed (require config/timecop is already done by spec_helper). @@ -133,6 +136,7 @@ Notes - Coverage reports: NEVER review the HTML report. Use JSON (preferred), XML, LCOV, or RCOV. For this project, always run tests with K_SOUP_COV_FORMATTERS set to "json". - Do NOT modify .envrc in tasks; when running tests locally or in scripts, manually prefix each run, e.g.: K_SOUP_COV_FORMATTERS="json" bin/rspec - For all the kettle-soup-cover options, see .envrc and find the K_SOUP_COV_* env vars. +- NEVER modify ENV variables in tests directly. Always use the stub_env macro from the rspec-stubbed_env gem (more details in the testing section above). Important documentation rules - Do NOT edit files under docs/ manually; they are generated by `bundle exec rake yard` as part of the default rake task. diff --git a/.licenserc.yaml b/.licenserc.yaml new file mode 100644 index 0000000..0eb9981 --- /dev/null +++ b/.licenserc.yaml @@ -0,0 +1,7 @@ +header: + license: + spdx-id: MIT + +dependency: + files: + - Gemfile.lock diff --git a/.rubocop_gradual.lock b/.rubocop_gradual.lock index 6261247..cc33db0 100644 --- a/.rubocop_gradual.lock +++ b/.rubocop_gradual.lock @@ -5,10 +5,10 @@ "lib/oauth/tty/command.rb:3092098200": [ [126, 23, 4, "Security/Open: The use of `Kernel#open` is a serious security risk.", 2087926481] ], - "oauth-tty.gemspec:3967633356": [ - [130, 3, 40, "Gemspec/DependencyVersion: Dependency version specification is required.", 2300588954], - [132, 3, 44, "Gemspec/DependencyVersion: Dependency version specification is required.", 1905290578], - [133, 3, 46, "Gemspec/DependencyVersion: Dependency version specification is required.", 4289565910] + "oauth-tty.gemspec:3319279878": [ + [129, 3, 40, "Gemspec/DependencyVersion: Dependency version specification is required.", 2300588954], + [131, 3, 44, "Gemspec/DependencyVersion: Dependency version specification is required.", 1905290578], + [132, 3, 46, "Gemspec/DependencyVersion: Dependency version specification is required.", 4289565910] ], "spec/oauth/backwards_compatibility_spec.rb:4041711732": [ [3, 16, 25, "RSpec/DescribeClass: The first argument to describe should be the class or module being tested.", 3956042931] diff --git a/Appraisals b/Appraisals index d1373c0..4a221df 100644 --- a/Appraisals +++ b/Appraisals @@ -31,6 +31,8 @@ end # Used for head (nightly) releases of ruby, truffleruby, and jruby. # Split into discrete appraisals if one of them needs a dependency locked discretely. appraise "head" do + # Why is gem "cgi" here? See: https://github.com/vcr/vcr/issues/1057 + # gem "cgi", ">= 0.5" gem "oauth", ">= 1.1.0" gem "benchmark", "~> 0.4", ">= 0.4.1" eval_gemfile "modular/x_std_libs.gemfile" diff --git a/CHANGELOG.md b/CHANGELOG.md index 21f713f..fac49b6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,7 +17,9 @@ Please file a bug if you notice a violation of semantic versioning. [📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-FFDD67.svg?style=flat ## [Unreleased] + ### Added + - (dev) kettle-dev v1.1.16 (@pboling) - (docs) more documentation (@Aboling0, @pboling) - (docs) Deployed documentation site for HEAD (@Aboling0) @@ -25,53 +27,80 @@ Please file a bug if you notice a violation of semantic versioning. - (test) many new tests (@pboling) - (docs) CITATION.cff - support window increased, down to Ruby 2.3 (@pboling) + ### Changed + - (docs) upgrade Code of Conduct to Contributor Covenant 2.1 (@pboling) - (test) migrated test suite to RSpec (@pboling) - (test) ignore Ruby warnings coming from other libs (@pboling) + ### Deprecated + ### Removed + - (test) minitest (@pboling) + ### Fixed + ### Security ## [1.0.5] - 2022-09-20 + - TAG: [v1.0.5][1.0.5t] + ### Added + - SHA 256 Checksum for release (in addition to SHA 512) (@pboling) - Aligned checksums directory name with `rake build:checksum` task (@pboling) - General Cleanup ## [1.0.4] - 2022-09-19 + - TAG: [1.0.4][1.0.4t] + ### Added + - Certificate for signing gem releases (@pboling) - Gemspec metadata (@pboling) - funding_uri - mailing_list_uri - Installation and usage documentation (@pboling) - SHA 512 Checksum for release (@pboling) + ### Changed + - Gem releases are now cryptographically signed (@pboling) ## [1.0.3] - 2022-09-06 + - TAG: [1.0.3][1.0.3t] + ### Fixed + - Author name - Thaigo Pinto (@pboling) ## [1.0.2] - 2022-08-26 + - TAG: [1.0.2][1.0.2t] + ### Fixed + - URLs in Gemspec (@pboling) ## [1.0.1] - 2022-08-26 + - TAG: [1.0.1][1.0.1t] + ### Fixed + - Circular reference while loading (@pboling) ## [1.0.0] - 2022-08-26 + - TAG: [1.0.0][1.0.0t] + ### Added + - Initial release (@pboling) [Unreleased]: https://gitlab.com/ruby-oauth/oauth-tty/-/compare/v1.0.5...main diff --git a/Gemfile.lock b/Gemfile.lock index 245ac9d..a1ed51a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -46,6 +46,9 @@ GEM thor (~> 1.0) concurrent-ruby (1.3.5) cookiejar (0.3.4) + crack (1.0.0) + bigdecimal + rexml date (3.4.1) debug (1.11.0) irb (~> 1.10) @@ -110,6 +113,7 @@ GEM version_gem (~> 1.1, >= 1.1.4) gitmoji-regex (1.0.3) version_gem (~> 1.1, >= 1.1.8) + hashdiff (1.2.1) hashie (5.0.0) http-accept (1.7.0) http-cookie (1.0.8) @@ -352,7 +356,13 @@ GEM unicode-display_width (3.2.0) unicode-emoji (~> 4.1) unicode-emoji (4.1.0) + vcr (6.3.1) + base64 version_gem (1.1.9) + webmock (3.25.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) yard (0.9.37) yard-relative_markdown_links (0.5.0) nokogiri (>= 1.14.3, < 2) @@ -371,6 +381,7 @@ PLATFORMS DEPENDENCIES appraisal2 (~> 3.0) + backports (~> 3.25, >= 3.25.1) benchmark (~> 0.4, >= 0.4.1) bundler-audit (~> 0.9.2) debug (>= 1.1) @@ -406,6 +417,8 @@ DEPENDENCIES stone_checksums (~> 1.0, >= 1.0.2) stringio (>= 3.0) typhoeus (>= 0.1.13) + vcr (>= 4) + webmock (>= 3) yard (~> 0.9, >= 0.9.37) yard-junk (~> 0.0, >= 0.0.10)! yard-relative_markdown_links (~> 0.5.0) diff --git a/README.md b/README.md index 76140bd..36baf72 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ # 🖥️ OAuth::TTY -[![Version][👽versioni]][👽version] [![GitHub tag (latest SemVer)][⛳️tag-img]][⛳️tag] [![License: MIT][📄license-img]][📄license-ref] [![Downloads Rank][👽dl-ranki]][👽dl-rank] [![Open Source Helpers][👽oss-helpi]][👽oss-help] [![CodeCov Test Coverage][🔑codecovi]][🔑codecov] [![Coveralls Test Coverage][🔑coveralls-img]][🔑coveralls] [![QLTY Test Coverage][🔑qlty-covi]][🔑qlty-cov] [![QLTY Maintainability][🔑qlty-mnti]][🔑qlty-mnt] [![CI Heads][🚎3-hd-wfi]][🚎3-hd-wf] [![CI Runtime Dependencies @ HEAD][🚎12-crh-wfi]][🚎12-crh-wf] [![CI Current][🚎11-c-wfi]][🚎11-c-wf] [![CI Truffle Ruby][🚎9-t-wfi]][🚎9-t-wf] [![CI JRuby][🚎10-j-wfi]][🚎10-j-wf] [![Deps Locked][🚎13-🔒️-wfi]][🚎13-🔒️-wf] [![Deps Unlocked][🚎14-🔓️-wfi]][🚎14-🔓️-wf] [![CI Supported][🚎6-s-wfi]][🚎6-s-wf] [![CI Legacy][🚎4-lg-wfi]][🚎4-lg-wf] [![CI Unsupported][🚎7-us-wfi]][🚎7-us-wf] [![CI Ancient][🚎1-an-wfi]][🚎1-an-wf] [![CI Test Coverage][🚎2-cov-wfi]][🚎2-cov-wf] [![CI Style][🚎5-st-wfi]][🚎5-st-wf] [![CodeQL][🖐codeQL-img]][🖐codeQL] +[![Version][👽versioni]][👽version] [![GitHub tag (latest SemVer)][⛳️tag-img]][⛳️tag] [![License: MIT][📄license-img]][📄license-ref] [![Downloads Rank][👽dl-ranki]][👽dl-rank] [![Open Source Helpers][👽oss-helpi]][👽oss-help] [![CodeCov Test Coverage][🏀codecovi]][🏀codecov] [![Coveralls Test Coverage][🏀coveralls-img]][🏀coveralls] [![QLTY Test Coverage][🏀qlty-covi]][🏀qlty-cov] [![QLTY Maintainability][🏀qlty-mnti]][🏀qlty-mnt] [![CI Heads][🚎3-hd-wfi]][🚎3-hd-wf] [![CI Runtime Dependencies @ HEAD][🚎12-crh-wfi]][🚎12-crh-wf] [![CI Current][🚎11-c-wfi]][🚎11-c-wf] [![CI Truffle Ruby][🚎9-t-wfi]][🚎9-t-wf] [![CI JRuby][🚎10-j-wfi]][🚎10-j-wf] [![Deps Locked][🚎13-🔒️-wfi]][🚎13-🔒️-wf] [![Deps Unlocked][🚎14-🔓️-wfi]][🚎14-🔓️-wf] [![CI Supported][🚎6-s-wfi]][🚎6-s-wf] [![CI Legacy][🚎4-lg-wfi]][🚎4-lg-wf] [![CI Unsupported][🚎7-us-wfi]][🚎7-us-wf] [![CI Ancient][🚎1-an-wfi]][🚎1-an-wf] [![CI Test Coverage][🚎2-cov-wfi]][🚎2-cov-wf] [![CI Style][🚎5-st-wfi]][🚎5-st-wf] [![CodeQL][🖐codeQL-img]][🖐codeQL] [![Apache SkyWalking Eyes License Compatibility Check][🚎15-🪪-wfi]][🚎15-🪪-wf] `if ci_badges.map(&:color).detect { it != "green"}` ☝️ [let me know][🖼️galtzo-discord], as I may have missed the [discord notification][🖼️galtzo-discord]. @@ -17,7 +17,7 @@ `if ci_badges.map(&:color).all? { it == "green"}` 👇️ send money so I can do more of this. FLOSS maintenance is now my full-time job. -[![OpenCollective Backers][🖇osc-backers-i]][🖇osc-backers] [![OpenCollective Sponsors][🖇osc-sponsors-i]][🖇osc-sponsors] [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor] [![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay] [![Donate on PayPal][🖇paypal-img]][🖇paypal] [![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate on Polar][🖇polar-img]][🖇polar] [![Donate to my FLOSS or refugee efforts at ko-fi.com][🖇kofi-img]][🖇kofi] [![Donate to my FLOSS or refugee efforts using Patreon][🖇patreon-img]][🖇patreon] +[![OpenCollective Backers][🖇osc-backers-i]][🖇osc-backers] [![OpenCollective Sponsors][🖇osc-sponsors-i]][🖇osc-sponsors] [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor] [![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay] [![Donate on PayPal][🖇paypal-img]][🖇paypal] [![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate on Polar][🖇polar-img]][🖇polar] [![Donate at ko-fi.com][🖇kofi-img]][🖇kofi] ## 🌻 Synopsis @@ -25,23 +25,23 @@ ## 💡 Info you can shake a stick at -| Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] | -|-------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| Works with JRuby | ![JRuby 9.1 Compat][💎jruby-9.1i] ![JRuby 9.2 Compat][💎jruby-9.2i] ![JRuby 9.3 Compat][💎jruby-9.3i]
[![JRuby 9.4 Compat][💎jruby-9.4i]][🚎10-j-wf] [![JRuby 10.0 Compat][💎jruby-c-i]][🚎11-c-wf] [![JRuby HEAD Compat][💎jruby-headi]][🚎3-hd-wf] | -| Works with Truffle Ruby | ![Truffle Ruby 22.3 Compat][💎truby-22.3i] ![Truffle Ruby 23.0 Compat][💎truby-23.0i]
[![Truffle Ruby 23.1 Compat][💎truby-23.1i]][🚎9-t-wf] [![Truffle Ruby 24.1 Compat][💎truby-c-i]][🚎11-c-wf] | -| Works with MRI Ruby 3 | [![Ruby 3.0 Compat][💎ruby-3.0i]][🚎4-lg-wf] [![Ruby 3.1 Compat][💎ruby-3.1i]][🚎6-s-wf] [![Ruby 3.2 Compat][💎ruby-3.2i]][🚎6-s-wf] [![Ruby 3.3 Compat][💎ruby-3.3i]][🚎6-s-wf] [![Ruby 3.4 Compat][💎ruby-c-i]][🚎11-c-wf] [![Ruby HEAD Compat][💎ruby-headi]][🚎3-hd-wf] | -| Works with MRI Ruby 2 | [![Ruby 2.3 Compat][💎ruby-2.3i]][🚎1-an-wf] [![Ruby 2.4 Compat][💎ruby-2.4i]][🚎1-an-wf] [![Ruby 2.5 Compat][💎ruby-2.5i]][🚎1-an-wf] [![Ruby 2.6 Compat][💎ruby-2.6i]][🚎7-us-wf] [![Ruby 2.7 Compat][💎ruby-2.7i]][🚎7-us-wf] | -| Source | [![Source on GitLab.com][📜src-gl-img]][📜src-gl] [![Source on CodeBerg.org][📜src-cb-img]][📜src-cb] [![Source on Github.com][📜src-gh-img]][📜src-gh] [![The best SHA: dQw4w9WgXcQ!][🧮kloc-img]][🧮kloc] | -| Documentation | [![Current release on RubyDoc.info][📜docs-cr-rd-img]][🚎yard-current] [![YARD on Galtzo.com][📜docs-head-rd-img]][🚎yard-head] [![Maintainer Blog][🚂maint-blog-img]][🚂maint-blog] [![Wiki][📜wiki-img]][📜wiki] | -| Compliance | [![License: MIT][📄license-img]][📄license-ref] [![📄ilo-declaration-img]][📄ilo-declaration] [![Security Policy][🔐security-img]][🔐security] [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct] [![SemVer 2.0.0][📌semver-img]][📌semver] | -| Style | [![Enforced Code Style Linter][💎rlts-img]][💎rlts] [![Keep-A-Changelog 1.0.0][📗keep-changelog-img]][📗keep-changelog] [![Gitmoji Commits][📌gitmoji-img]][📌gitmoji] [![Compatibility appraised by: appraisal2][💎appraisal2-img]][💎appraisal2] | -| Support | [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite] [![Get help from me on Upwork][👨🏼‍🏫expsup-upwork-img]][👨🏼‍🏫expsup-upwork] [![Get help from me on Codementor][👨🏼‍🏫expsup-codementor-img]][👨🏼‍🏫expsup-codementor] | -| Maintainer 🎖️ | [![Follow Me on LinkedIn][💖🖇linkedin-img]][💖🖇linkedin] [![Follow Me on Ruby.Social][💖🐘ruby-mast-img]][💖🐘ruby-mast] [![Follow Me on Bluesky][💖🦋bluesky-img]][💖🦋bluesky] [![Contact Maintainer][🚂maint-contact-img]][🚂maint-contact] [![My technical writing][💖💁🏼‍♂️devto-img]][💖💁🏼‍♂️devto] | -| `...` 💖 | [![Find Me on WellFound:][💖✌️wellfound-img]][💖✌️wellfound] [![Find Me on CrunchBase][💖💲crunchbase-img]][💖💲crunchbase] [![My LinkTree][💖🌳linktree-img]][💖🌳linktree] [![More About Me][💖💁🏼‍♂️aboutme-img]][💖💁🏼‍♂️aboutme] [🧊][💖🧊berg] [🐙][💖🐙hub] [🛖][💖🛖hut] [🧪][💖🧪lab] | +| Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] | +|-------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Works with JRuby | ![JRuby 9.1 Compat][💎jruby-9.1i] ![JRuby 9.2 Compat][💎jruby-9.2i] ![JRuby 9.3 Compat][💎jruby-9.3i]
[![JRuby 9.4 Compat][💎jruby-9.4i]][🚎10-j-wf] [![JRuby 10.0 Compat][💎jruby-c-i]][🚎11-c-wf] [![JRuby HEAD Compat][💎jruby-headi]][🚎3-hd-wf] | +| Works with Truffle Ruby | ![Truffle Ruby 22.3 Compat][💎truby-22.3i] ![Truffle Ruby 23.0 Compat][💎truby-23.0i]
[![Truffle Ruby 23.1 Compat][💎truby-23.1i]][🚎9-t-wf] [![Truffle Ruby 24.1 Compat][💎truby-c-i]][🚎11-c-wf] | +| Works with MRI Ruby 3 | [![Ruby 3.0 Compat][💎ruby-3.0i]][🚎4-lg-wf] [![Ruby 3.1 Compat][💎ruby-3.1i]][🚎6-s-wf] [![Ruby 3.2 Compat][💎ruby-3.2i]][🚎6-s-wf] [![Ruby 3.3 Compat][💎ruby-3.3i]][🚎6-s-wf] [![Ruby 3.4 Compat][💎ruby-c-i]][🚎11-c-wf] [![Ruby HEAD Compat][💎ruby-headi]][🚎3-hd-wf] | +| Works with MRI Ruby 2 | [![Ruby 2.3 Compat][💎ruby-2.3i]][🚎1-an-wf] [![Ruby 2.4 Compat][💎ruby-2.4i]][🚎1-an-wf] [![Ruby 2.5 Compat][💎ruby-2.5i]][🚎1-an-wf] [![Ruby 2.6 Compat][💎ruby-2.6i]][🚎7-us-wf] [![Ruby 2.7 Compat][💎ruby-2.7i]][🚎7-us-wf] | +| Support & Community | [![Join Me on Daily.dev's RubyFriends][✉️ruby-friends-img]][✉️ruby-friends] [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite] [![Get help from me on Upwork][👨🏼‍🏫expsup-upwork-img]][👨🏼‍🏫expsup-upwork] [![Get help from me on Codementor][👨🏼‍🏫expsup-codementor-img]][👨🏼‍🏫expsup-codementor] | +| Source | [![Source on GitLab.com][📜src-gl-img]][📜src-gl] [![Source on CodeBerg.org][📜src-cb-img]][📜src-cb] [![Source on Github.com][📜src-gh-img]][📜src-gh] [![The best SHA: dQw4w9WgXcQ!][🧮kloc-img]][🧮kloc] | +| Documentation | [![Current release on RubyDoc.info][📜docs-cr-rd-img]][🚎yard-current] [![YARD on Galtzo.com][📜docs-head-rd-img]][🚎yard-head] [![Maintainer Blog][🚂maint-blog-img]][🚂maint-blog] [![GitLab Wiki][📜gl-wiki-img]][📜gl-wiki] [![GitHub Wiki][📜gh-wiki-img]][📜gh-wiki] | +| Compliance | [![License: MIT][📄license-img]][📄license-ref] [![Compatible with Apache Software Projects: Verified by SkyWalking Eyes][📄license-compat-img]][📄license-compat] [![📄ilo-declaration-img]][📄ilo-declaration] [![Security Policy][🔐security-img]][🔐security] [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct] [![SemVer 2.0.0][📌semver-img]][📌semver] | +| Style | [![Enforced Code Style Linter][💎rlts-img]][💎rlts] [![Keep-A-Changelog 1.0.0][📗keep-changelog-img]][📗keep-changelog] [![Gitmoji Commits][📌gitmoji-img]][📌gitmoji] [![Compatibility appraised by: appraisal2][💎appraisal2-img]][💎appraisal2] | +| Maintainer 🎖️ | [![Follow Me on LinkedIn][💖🖇linkedin-img]][💖🖇linkedin] [![Follow Me on Ruby.Social][💖🐘ruby-mast-img]][💖🐘ruby-mast] [![Follow Me on Bluesky][💖🦋bluesky-img]][💖🦋bluesky] [![Contact Maintainer][🚂maint-contact-img]][🚂maint-contact] [![My technical writing][💖💁🏼‍♂️devto-img]][💖💁🏼‍♂️devto] | +| `...` 💖 | [![Find Me on WellFound:][💖✌️wellfound-img]][💖✌️wellfound] [![Find Me on CrunchBase][💖💲crunchbase-img]][💖💲crunchbase] [![My LinkTree][💖🌳linktree-img]][💖🌳linktree] [![More About Me][💖💁🏼‍♂️aboutme-img]][💖💁🏼‍♂️aboutme] [🧊][💖🧊berg] [🐙][💖🐙hub] [🛖][💖🛖hut] [🧪][💖🧪lab] | ### Compatibility -Compatible with MRI Ruby 2.3+, and concordant releases of JRuby, and TruffleRuby. +Compatible with MRI Ruby 2.3.0+, and concordant releases of JRuby, and TruffleRuby. | 🚚 _Amazing_ test matrix was brought to you by | 🔎 appraisal2 🔎 and the color 💚 green 💚 | |------------------------------------------------|--------------------------------------------------------| @@ -50,13 +50,14 @@ Compatible with MRI Ruby 2.3+, and concordant releases of JRuby, and TruffleRuby ### Federated DVCS
- Find this repo on other forges + Find this repo on federated forges (Coming soon!) | Federated [DVCS][💎d-in-dvcs] Repository | Status | Issues | PRs | Wiki | CI | Discussions | |-------------------------------------------------|-----------------------------------------------------------------------|---------------------------|--------------------------|---------------------------|--------------------------|------------------------------| -| 🧪 [ruby-oauth/oauth-tty on GitLab][📜src-gl] | The Truth | [💚][🤝gl-issues] | [💚][🤝gl-pulls] | [💚][📜wiki] | 🏀 Tiny Matrix | ➖ | +| 🧪 [ruby-oauth/oauth-tty on GitLab][📜src-gl] | The Truth | [💚][🤝gl-issues] | [💚][🤝gl-pulls] | [💚][📜gl-wiki] | 🐭 Tiny Matrix | ➖ | | 🧊 [ruby-oauth/oauth-tty on CodeBerg][📜src-cb] | An Ethical Mirror ([Donate][🤝cb-donate]) | [💚][🤝cb-issues] | [💚][🤝cb-pulls] | ➖ | ⭕️ No Matrix | ➖ | -| 🐙 [ruby-oauth/oauth-tty on GitHub][📜src-gh] | Another Mirror | [💚][🤝gh-issues] | [💚][🤝gh-pulls] | ➖ | 💯 Full Matrix | [💚][gh-discussions] | +| 🐙 [ruby-oauth/oauth-tty on GitHub][📜src-gh] | Another Mirror | [💚][🤝gh-issues] | [💚][🤝gh-pulls] | [💚][📜gh-wiki] | 💯 Full Matrix | [💚][gh-discussions] | +| 🤼 [OAuth Ruby Google Group][⛳gg-discussions] | "Active" | ➖ | ➖ | ➖ | ➖ | [💚][⛳gg-discussions] | | 🎮️ [Discord Server][✉️discord-invite] | [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite] | [Let's][✉️discord-invite] | [talk][✉️discord-invite] | [about][✉️discord-invite] | [this][✉️discord-invite] | [library!][✉️discord-invite] |
@@ -170,19 +171,25 @@ and [Tidelift][🏙️entsup-tidelift]. ### Open Collective for Individuals +Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/ruby-oauth#backer)] + +NOTE: [kettle-readme-backers][kettle-readme-backers] updates this list every day, automatically. + No backers yet. Be the first! -Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/ruby-oauth#backer)] - ### Open Collective for Organizations +Become a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/ruby-oauth#sponsor)] + +NOTE: [kettle-readme-backers][kettle-readme-backers] updates this list every day, automatically. + No sponsors yet. Be the first! -Become a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/ruby-oauth#sponsor)] +[kettle-readme-backers]: https://github.com/ruby-oauth/oauth-tty/blob/main/exe/kettle-readme-backers ### Another way to support open-source @@ -219,11 +226,11 @@ See [CONTRIBUTING.md][🤝contributing]. ### Code Coverage -[![Coverage Graph][🔑codecov-g]][🔑codecov] +[![Coverage Graph][🏀codecov-g]][🏀codecov] -[![Coveralls Test Coverage][🔑coveralls-img]][🔑coveralls] +[![Coveralls Test Coverage][🏀coveralls-img]][🏀coveralls] -[![QLTY Test Coverage][🔑qlty-covi]][🔑qlty-cov] +[![QLTY Test Coverage][🏀qlty-covi]][🏀qlty-cov] ### 🪇 Code of Conduct @@ -362,7 +369,9 @@ Thanks for RTFM. ☺️ [🖇floss-funding.dev]: https://floss-funding.dev [🖇floss-funding-gem]: https://github.com/galtzo-floss/floss_funding [✉️discord-invite]: https://discord.gg/3qme4XHNKN -[✉️discord-invite-img-ftb]: https://img.shields.io/discord/1373797679469170758?style=for-the-badge +[✉️discord-invite-img-ftb]: https://img.shields.io/discord/1373797679469170758?style=for-the-badge&logo=discord +[✉️ruby-friends-img]: https://img.shields.io/badge/daily.dev-%F0%9F%92%8E_Ruby_Friends-0A0A0A?style=for-the-badge&logo=dailydotdev&logoColor=white +[✉️ruby-friends]: https://app.daily.dev/squads/rubyfriends [✇bundle-group-pattern]: https://gist.github.com/pboling/4564780 [⛳️gem-namespace]: https://github.com/ruby-oauth/oauth-tty @@ -412,22 +421,24 @@ Thanks for RTFM. ☺️ [📜src-gh]: https://github.com/ruby-oauth/oauth-tty [📜docs-cr-rd-img]: https://img.shields.io/badge/RubyDoc-Current_Release-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white [📜docs-head-rd-img]: https://img.shields.io/badge/YARD_on_Galtzo.com-HEAD-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white -[📜wiki]: https://gitlab.com/ruby-oauth/oauth-tty/-/wikis/home -[📜wiki-img]: https://img.shields.io/badge/wiki-examples-943CD2.svg?style=for-the-badge&logo=Wiki&logoColor=white +[📜gl-wiki]: https://gitlab.com/ruby-oauth/oauth-tty/-/wikis/home +[📜gh-wiki]: https://github.com/ruby-oauth/oauth-tty/wiki +[📜gl-wiki-img]: https://img.shields.io/badge/wiki-examples-943CD2.svg?style=for-the-badge&logo=gitlab&logoColor=white +[📜gh-wiki-img]: https://img.shields.io/badge/wiki-examples-943CD2.svg?style=for-the-badge&logo=github&logoColor=white [👽dl-rank]: https://rubygems.org/gems/oauth-tty [👽dl-ranki]: https://img.shields.io/gem/rd/oauth-tty.svg [👽oss-help]: https://www.codetriage.com/ruby-oauth/oauth-tty [👽oss-helpi]: https://www.codetriage.com/ruby-oauth/oauth-tty/badges/users.svg [👽version]: https://rubygems.org/gems/oauth-tty [👽versioni]: https://img.shields.io/gem/v/oauth-tty.svg -[🔑qlty-mnt]: https://qlty.sh/gh/ruby-oauth/projects/oauth-tty -[🔑qlty-mnti]: https://qlty.sh/gh/ruby-oauth/projects/oauth-tty/maintainability.svg -[🔑qlty-cov]: https://qlty.sh/gh/ruby-oauth/projects/oauth-tty/metrics/code?sort=coverageRating -[🔑qlty-covi]: https://qlty.sh/gh/ruby-oauth/projects/oauth-tty/coverage.svg -[🔑codecov]: https://codecov.io/gh/ruby-oauth/oauth-tty -[🔑codecovi]: https://codecov.io/gh/ruby-oauth/oauth-tty/graph/badge.svg -[🔑coveralls]: https://coveralls.io/github/ruby-oauth/oauth-tty?branch=main -[🔑coveralls-img]: https://coveralls.io/repos/github/ruby-oauth/oauth-tty/badge.svg?branch=main +[🏀qlty-mnt]: https://qlty.sh/gh/ruby-oauth/projects/oauth-tty +[🏀qlty-mnti]: https://qlty.sh/gh/ruby-oauth/projects/oauth-tty/maintainability.svg +[🏀qlty-cov]: https://qlty.sh/gh/ruby-oauth/projects/oauth-tty/metrics/code?sort=coverageRating +[🏀qlty-covi]: https://qlty.sh/gh/ruby-oauth/projects/oauth-tty/coverage.svg +[🏀codecov]: https://codecov.io/gh/ruby-oauth/oauth-tty +[🏀codecovi]: https://codecov.io/gh/ruby-oauth/oauth-tty/graph/badge.svg +[🏀coveralls]: https://coveralls.io/github/ruby-oauth/oauth-tty?branch=main +[🏀coveralls-img]: https://coveralls.io/repos/github/ruby-oauth/oauth-tty/badge.svg?branch=main [🖐codeQL]: https://github.com/ruby-oauth/oauth-tty/security/code-scanning [🖐codeQL-img]: https://github.com/ruby-oauth/oauth-tty/actions/workflows/codeql-analysis.yml/badge.svg [🚎1-an-wf]: https://github.com/ruby-oauth/oauth-tty/actions/workflows/ancient.yml @@ -458,6 +469,8 @@ Thanks for RTFM. ☺️ [🚎13-🔒️-wfi]: https://github.com/ruby-oauth/oauth-tty/actions/workflows/locked_deps.yml/badge.svg [🚎14-🔓️-wf]: https://github.com/ruby-oauth/oauth-tty/actions/workflows/unlocked_deps.yml [🚎14-🔓️-wfi]: https://github.com/ruby-oauth/oauth-tty/actions/workflows/unlocked_deps.yml/badge.svg +[🚎15-🪪-wf]: https://github.com/ruby-oauth/oauth-tty/actions/workflows/license-eye.yml +[🚎15-🪪-wfi]: https://github.com/ruby-oauth/oauth-tty/actions/workflows/license-eye.yml/badge.svg [💎ruby-2.3i]: https://img.shields.io/badge/Ruby-2.3-DF00CA?style=for-the-badge&logo=ruby&logoColor=white [💎ruby-2.4i]: https://img.shields.io/badge/Ruby-2.4-DF00CA?style=for-the-badge&logo=ruby&logoColor=white [💎ruby-2.5i]: https://img.shields.io/badge/Ruby-2.5-DF00CA?style=for-the-badge&logo=ruby&logoColor=white @@ -488,7 +501,7 @@ Thanks for RTFM. ☺️ [🤝cb-pulls]: https://codeberg.org/ruby-oauth/oauth-tty/pulls [🤝cb-donate]: https://donate.codeberg.org/ [🤝contributing]: CONTRIBUTING.md -[🔑codecov-g]: https://codecov.io/gh/ruby-oauth/oauth-tty/graphs/tree.svg +[🏀codecov-g]: https://codecov.io/gh/ruby-oauth/oauth-tty/graphs/tree.svg [🖐contrib-rocks]: https://contrib.rocks [🖐contributors]: https://github.com/ruby-oauth/oauth-tty/graphs/contributors [🖐contributors-img]: https://contrib.rocks/image?repo=ruby-oauth/oauth-tty @@ -506,13 +519,15 @@ Thanks for RTFM. ☺️ [📌gitmoji]:https://gitmoji.dev [📌gitmoji-img]:https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ -[🧮kloc-img]: https://img.shields.io/badge/KLOC-3.613-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue +[🧮kloc-img]: https://img.shields.io/badge/KLOC-1.225-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue [🔐security]: SECURITY.md [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year [📄license]: LICENSE.txt [📄license-ref]: https://opensource.org/licenses/MIT [📄license-img]: https://img.shields.io/badge/License-MIT-259D6C.svg +[📄license-compat]: https://dev.to/galtzo/how-to-check-license-compatibility-41h0 +[📄license-compat-img]: https://img.shields.io/badge/Apache_Compatible:_Category_A-%E2%9C%93-259D6C.svg?style=flat&logo=Apache [📄ilo-declaration]: https://www.ilo.org/declaration/lang--en/index.htm [📄ilo-declaration-img]: https://img.shields.io/badge/ILO_Fundamental_Principles-✓-259D6C.svg?style=flat [🚎yard-current]: http://rubydoc.info/gems/oauth-tty diff --git a/oauth-tty.gemspec b/oauth-tty.gemspec index 2770ea8..69772fa 100644 --- a/oauth-tty.gemspec +++ b/oauth-tty.gemspec @@ -91,7 +91,7 @@ Gem::Specification.new do |spec| ] spec.require_paths = ["lib"] spec.bindir = "exe" - # files listed are relative paths from bindir above. + # Listed files are the relative paths from bindir above. spec.executables = ["oauth"] # Utilities @@ -101,12 +101,11 @@ Gem::Specification.new do |spec| # visibility and discoverability on RubyGems.org. # However, development dependencies in gemspec will install on # all versions of Ruby that will run in CI. - # This gem, and its gemspec runtime dependencies, will install on Ruby down to 2.3.x. - # This gem, and its gemspec development dependencies, will install on Ruby down to 2.3.x. - # This is because in CI easy installation of Ruby, via setup-ruby, is for >= 2.3. + # This gem, and its gemspec runtime dependencies, will install on Ruby down to 2.3.0. + # This gem, and its gemspec development dependencies, will install on Ruby down to 2.3.0. # Thus, dev dependencies in gemspec must have # - # required_ruby_version ">= 2.3" (or lower) + # required_ruby_version ">= 2.3.0" (or lower) # # Development dependencies that require strictly newer Ruby versions should be in a "gemfile", # and preferably a modular one (see gemfiles/modular/*.gemfile). @@ -151,9 +150,7 @@ Gem::Specification.new do |spec| spec.add_development_dependency("gitmoji-regex", "~> 1.0", ">= 1.0.3") # ruby >= 2.3.0 # HTTP recording for deterministic specs - # It seems that somehow just having a newer version of appraisal installed breaks - # Ruby 2.3 and 2.4 even if their bundle specifies an older version, - # and as a result it can only be a dependency in the appraisals. + # Ruby 2.3 / 2.4 can fail with: # | An error occurred while loading spec_helper. # | Failure/Error: require "vcr" # | @@ -163,8 +160,11 @@ Gem::Specification.new do |spec| # | # ./spec/config/vcr.rb:3:in `' # | # ./spec/spec_helper.rb:8:in `require_relative' # | # ./spec/spec_helper.rb:8:in `' - # spec.add_development_dependency("vcr", ">= 4") # 6.0 claims to support ruby >= 2.3, but fails on ruby 2.4 - # spec.add_development_dependency("webmock", ">= 3") # Last version to support ruby >= 2.3 - # spec.add_development_dependency("backports", "~> 3.25", ">= 3.25.1") # ruby >= 0 - + # So that's why we need backports. + spec.add_development_dependency("backports", "~> 3.25", ">= 3.25.1") # ruby >= 0 + # In Ruby 3.5 (HEAD) the CGI library has been pared down, so we also need to depend on gem "cgi" for ruby@head + # This is done in the "head" appraisal. + # See: https://github.com/vcr/vcr/issues/1057 + spec.add_development_dependency("vcr", ">= 4") # 6.0 claims to support ruby >= 2.3, but fails on ruby 2.4 + spec.add_development_dependency("webmock", ">= 3") # Last version to support ruby >= 2.3 end diff --git a/spec/ext/backports.rb b/spec/ext/backports.rb new file mode 100644 index 0000000..322d8f4 --- /dev/null +++ b/spec/ext/backports.rb @@ -0,0 +1,4 @@ +# frozen_string_literal: true + +require "backports/2.5.0/hash/transform_keys" +require "backports/2.5.0/string/delete_prefix" diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 880093b..312693b 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,5 +1,12 @@ # frozen_string_literal: true +# Global Extensions +require_relative "ext/backports" + +# External libraries +require "addressable/uri" +require "rspec/pending_for" + # External RSpec & related config require "kettle/test/rspec" @@ -18,7 +25,7 @@ # Config for development dependencies of this library # i.e., not configured by this library # -# Simplecov & related config (must run BEFORE any other requires) +# Simplecov & related config (must run BEFORE any of this library is loaded) # NOTE: Gemfiles for older rubies won't have kettle-soup-cover. # The rescue LoadError handles that scenario. begin @@ -29,5 +36,5 @@ raise error unless error.message.include?("kettle") end -# this library +# This gem require "oauth/tty" From f36228f6d83ff216c89ffa3364b0428a33be4007 Mon Sep 17 00:00:00 2001 From: "Peter H. Boling" Date: Sat, 20 Sep 2025 16:24:08 -0600 Subject: [PATCH 5/5] =?UTF-8?q?=F0=9F=91=B7=20depend=20on=20HEAD=20of=20oa?= =?UTF-8?q?uth=20to=20avoid=20em-http-request?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Appraisals | 16 ++++++++-------- gemfiles/audit.gemfile | 2 +- gemfiles/coverage.gemfile | 2 +- gemfiles/current.gemfile | 2 +- gemfiles/head.gemfile | 2 +- gemfiles/ruby_3_1.gemfile | 2 +- gemfiles/ruby_3_2.gemfile | 2 +- gemfiles/ruby_3_3.gemfile | 2 +- gemfiles/style.gemfile | 2 +- 9 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Appraisals b/Appraisals index 4a221df..411ade4 100644 --- a/Appraisals +++ b/Appraisals @@ -33,7 +33,7 @@ end appraise "head" do # Why is gem "cgi" here? See: https://github.com/vcr/vcr/issues/1057 # gem "cgi", ">= 0.5" - gem "oauth", ">= 1.1.0" + gem "oauth", github: "ruby-oauth/oauth", branch: "main" gem "benchmark", "~> 0.4", ">= 0.4.1" eval_gemfile "modular/x_std_libs.gemfile" end @@ -41,7 +41,7 @@ end # Used for current releases of ruby, truffleruby, and jruby. # Split into discrete appraisals if one of them needs a dependency locked discretely. appraise "current" do - gem "oauth", ">= 1.1.0" + gem "oauth", github: "ruby-oauth/oauth", branch: "main" eval_gemfile "modular/x_std_libs.gemfile" end @@ -86,29 +86,29 @@ appraise "ruby-3-0" do end appraise "ruby-3-1" do - gem "oauth", ">= 1.1.0" + gem "oauth", github: "ruby-oauth/oauth", branch: "main" eval_gemfile "modular/x_std_libs/r3.1/libs.gemfile" end appraise "ruby-3-2" do - gem "oauth", ">= 1.1.0" + gem "oauth", github: "ruby-oauth/oauth", branch: "main" eval_gemfile "modular/x_std_libs/r3/libs.gemfile" end appraise "ruby-3-3" do - gem "oauth", ">= 1.1.0" + gem "oauth", github: "ruby-oauth/oauth", branch: "main" eval_gemfile "modular/x_std_libs/r3/libs.gemfile" end # Only run security audit on the latest version of Ruby appraise "audit" do - gem "oauth", ">= 1.1.0" + gem "oauth", github: "ruby-oauth/oauth", branch: "main" eval_gemfile "modular/x_std_libs.gemfile" end # Only run coverage on the latest version of Ruby appraise "coverage" do - gem "oauth", ">= 1.1.0" + gem "oauth", github: "ruby-oauth/oauth", branch: "main" eval_gemfile "modular/coverage.gemfile" eval_gemfile "modular/optional.gemfile" eval_gemfile "modular/x_std_libs.gemfile" @@ -116,7 +116,7 @@ end # Only run linter on the latest version of Ruby (but, in support of oldest supported Ruby version) appraise "style" do - gem "oauth", ">= 1.1.0" + gem "oauth", github: "ruby-oauth/oauth", branch: "main" eval_gemfile "modular/style.gemfile" eval_gemfile "modular/x_std_libs.gemfile" end diff --git a/gemfiles/audit.gemfile b/gemfiles/audit.gemfile index 841cb82..20f9cf2 100644 --- a/gemfiles/audit.gemfile +++ b/gemfiles/audit.gemfile @@ -2,7 +2,7 @@ source "https://rubygems.org" -gem "oauth", ">= 1.1.0" +gem "oauth", branch: "main", git: "https://github.com/ruby-oauth/oauth" gemspec path: "../" diff --git a/gemfiles/coverage.gemfile b/gemfiles/coverage.gemfile index 4557049..c95e22e 100644 --- a/gemfiles/coverage.gemfile +++ b/gemfiles/coverage.gemfile @@ -2,7 +2,7 @@ source "https://rubygems.org" -gem "oauth", ">= 1.1.0" +gem "oauth", branch: "main", git: "https://github.com/ruby-oauth/oauth" gemspec path: "../" diff --git a/gemfiles/current.gemfile b/gemfiles/current.gemfile index 841cb82..20f9cf2 100644 --- a/gemfiles/current.gemfile +++ b/gemfiles/current.gemfile @@ -2,7 +2,7 @@ source "https://rubygems.org" -gem "oauth", ">= 1.1.0" +gem "oauth", branch: "main", git: "https://github.com/ruby-oauth/oauth" gemspec path: "../" diff --git a/gemfiles/head.gemfile b/gemfiles/head.gemfile index 55ef3d5..1cce6a3 100644 --- a/gemfiles/head.gemfile +++ b/gemfiles/head.gemfile @@ -2,7 +2,7 @@ source "https://rubygems.org" -gem "oauth", ">= 1.1.0" +gem "oauth", branch: "main", git: "https://github.com/ruby-oauth/oauth" gem "benchmark", "~> 0.4", ">= 0.4.1" gemspec path: "../" diff --git a/gemfiles/ruby_3_1.gemfile b/gemfiles/ruby_3_1.gemfile index 76ef994..52142b9 100644 --- a/gemfiles/ruby_3_1.gemfile +++ b/gemfiles/ruby_3_1.gemfile @@ -2,7 +2,7 @@ source "https://rubygems.org" -gem "oauth", ">= 1.1.0" +gem "oauth", branch: "main", git: "https://github.com/ruby-oauth/oauth" gemspec path: "../" diff --git a/gemfiles/ruby_3_2.gemfile b/gemfiles/ruby_3_2.gemfile index e3f5950..2b84cc8 100644 --- a/gemfiles/ruby_3_2.gemfile +++ b/gemfiles/ruby_3_2.gemfile @@ -2,7 +2,7 @@ source "https://rubygems.org" -gem "oauth", ">= 1.1.0" +gem "oauth", branch: "main", git: "https://github.com/ruby-oauth/oauth" gemspec path: "../" diff --git a/gemfiles/ruby_3_3.gemfile b/gemfiles/ruby_3_3.gemfile index e3f5950..2b84cc8 100644 --- a/gemfiles/ruby_3_3.gemfile +++ b/gemfiles/ruby_3_3.gemfile @@ -2,7 +2,7 @@ source "https://rubygems.org" -gem "oauth", ">= 1.1.0" +gem "oauth", branch: "main", git: "https://github.com/ruby-oauth/oauth" gemspec path: "../" diff --git a/gemfiles/style.gemfile b/gemfiles/style.gemfile index 1092e5e..381c448 100644 --- a/gemfiles/style.gemfile +++ b/gemfiles/style.gemfile @@ -2,7 +2,7 @@ source "https://rubygems.org" -gem "oauth", ">= 1.1.0" +gem "oauth", branch: "main", git: "https://github.com/ruby-oauth/oauth" gemspec path: "../"