From d6d1775d793bcaf206af700120b0b4bd2dc3842d Mon Sep 17 00:00:00 2001 From: Nazar Matus Date: Tue, 19 Jan 2021 15:47:38 +0200 Subject: [PATCH 01/39] Fix Ruby 2.5 incopatibility We don't really need that second optional argument, as its default value is just what we need https://ruby-doc.org/core-2.7.2/Module.html#method-i-private_method_defined-3F --- lib/ruby2_keywords.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ruby2_keywords.rb b/lib/ruby2_keywords.rb index 97cd081..7a3f2fa 100644 --- a/lib/ruby2_keywords.rb +++ b/lib/ruby2_keywords.rb @@ -1,5 +1,5 @@ class Module - unless private_method_defined?(:ruby2_keywords, true) + unless private_method_defined?(:ruby2_keywords) private # call-seq: # ruby2_keywords(method_name, ...) From 956156ba793330928280c5301b093300a1a9f792 Mon Sep 17 00:00:00 2001 From: Nazar Matus Date: Tue, 19 Jan 2021 16:07:37 +0200 Subject: [PATCH 02/39] Add Ruby 2.5 to the CI matrix --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b79ea7d..abe6e88 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -7,7 +7,7 @@ jobs: name: build (${{ matrix.ruby }} / ${{ matrix.os }}) strategy: matrix: - ruby: [ '3.0', 2.7, 2.6, head ] + ruby: [ '3.0', 2.7, 2.6, 2.5, head ] os: [ ubuntu-latest, macos-latest, windows-latest ] runs-on: ${{ matrix.os }} steps: From 403ff84d12c9fe1f34397b3a164b0b2f73a560d1 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Tue, 19 Jan 2021 23:25:17 +0900 Subject: [PATCH 03/39] Set SOURCE_DATE_EPOCH to make builds reproducible --- Rakefile | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Rakefile b/Rakefile index 8830e05..bfcf912 100644 --- a/Rakefile +++ b/Rakefile @@ -6,3 +6,9 @@ Rake::TestTask.new(:test) do |t| end task :default => :test + +task "build" => "date_epoch" + +task "date_epoch" do + ENV["SOURCE_DATE_EPOCH"] = IO.popen(%W[git -C #{__dir__} log -1 --format=%ct], &:read).chomp +end From fba8eb45d6b2db2d0f829b0d20300e7d19268146 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Tue, 19 Jan 2021 23:29:46 +0900 Subject: [PATCH 04/39] Build package --- .github/workflows/test.yml | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index abe6e88..c5c461c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,4 +1,4 @@ -name: ubuntu +name: test on: [push, pull_request] @@ -11,6 +11,11 @@ jobs: os: [ ubuntu-latest, macos-latest, windows-latest ] runs-on: ${{ matrix.os }} steps: + - name: git config + run: | + git config --global core.autocrlf false + git config --global core.eol lf + git config --global advice.detachedHead 0 - uses: actions/checkout@master - name: Set up Ruby uses: ruby/setup-ruby@v1 @@ -18,3 +23,17 @@ jobs: ruby-version: ${{ matrix.ruby }} - name: Run test run: rake test + - id: build + run: | + rake build + echo "::set-output name=pkg::${GITHUB_REPOSITORY#*/}-${RUNNING_OS%-*}" + env: + RUNNING_OS: ${{matrix.os}} + if: "matrix.ruby == '3.0'" + shell: bash + - name: Upload package + uses: actions/upload-artifact@v2 + with: + path: pkg/*.gem + name: ${{steps.build.outputs.pkg}} + if: steps.build.outputs.pkg From 8bf4b5b4169545ef5be46dec8cd6502d902a3e4a Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Tue, 19 Jan 2021 23:49:51 +0900 Subject: [PATCH 05/39] Added bump target --- Rakefile | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/Rakefile b/Rakefile index bfcf912..6eb5091 100644 --- a/Rakefile +++ b/Rakefile @@ -1,6 +1,8 @@ require "bundler/gem_tasks" require "rake/testtask" +helper = Bundler::GemHelper.instance + Rake::TestTask.new(:test) do |t| t.test_files = FileList["test/**/test_*.rb"] end @@ -12,3 +14,41 @@ task "build" => "date_epoch" task "date_epoch" do ENV["SOURCE_DATE_EPOCH"] = IO.popen(%W[git -C #{__dir__} log -1 --format=%ct], &:read).chomp end + +def helper.update_gemspec + path = "#{__dir__}/#{gemspec.name}.gemspec" + File.open(path, "r+b") do |f| + if (d = f.read).sub!(/^(version\s*=\s*)".*"/) {$1 + gemspec.version.to_s.dump} + f.rewind + f.truncate(0) + f.print(d) + end + end +end + +def helper.commit_bump + sh(%W[git -C #{__dir__} commit -m bump\ up\ to\ #{gemspec.version} + #{gemspec.name}.gemspec]) +end + +def helper.version=(v) + gemspec.version = v + update_gemspec + commit_bump + tag_version +end +major, minor, teeny = helper.gemspec.version.segments + +task "bump:teeny" do + helper.version = Gem::Version.new("#{major}.#{minor}.#{teeny+1}") +end + +task "bump:minor" do + raise "can't bump up minor" +end + +task "bump:major" do + raise "can't bump up major" +end + +task "bump" => "bump:teeny" From 31766f4327e6e4555543b44fc6a5dc252c8ff6d9 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Tue, 19 Jan 2021 23:49:55 +0900 Subject: [PATCH 06/39] bump up to 0.0.4 --- ruby2_keywords.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruby2_keywords.gemspec b/ruby2_keywords.gemspec index 5eac57b..8247998 100644 --- a/ruby2_keywords.gemspec +++ b/ruby2_keywords.gemspec @@ -1,4 +1,4 @@ -version = "0.0.3" +version = "0.0.4" abort "Version must not reach 1" if version[/\d+/].to_i >= 1 Gem::Specification.new do |s| From c353a3fffc323982d829275c82ae09fdbad94816 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Wed, 20 Jan 2021 10:20:25 +0900 Subject: [PATCH 07/39] bump up to 0.0.5 --- ruby2_keywords.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruby2_keywords.gemspec b/ruby2_keywords.gemspec index 8247998..d3a58ef 100644 --- a/ruby2_keywords.gemspec +++ b/ruby2_keywords.gemspec @@ -1,4 +1,4 @@ -version = "0.0.4" +version = "0.0.5" abort "Version must not reach 1" if version[/\d+/].to_i >= 1 Gem::Specification.new do |s| From 75927b417a79377770cddfe219b34aa87280a5e7 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Wed, 20 Jan 2021 10:21:52 +0900 Subject: [PATCH 08/39] Separate tagging from version bump --- Rakefile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Rakefile b/Rakefile index 6eb5091..912db4e 100644 --- a/Rakefile +++ b/Rakefile @@ -35,7 +35,6 @@ def helper.version=(v) gemspec.version = v update_gemspec commit_bump - tag_version end major, minor, teeny = helper.gemspec.version.segments @@ -52,3 +51,7 @@ task "bump:major" do end task "bump" => "bump:teeny" + +task "tag" do + helper.__send__(:tag_version) +end From 9e5b2a4ba56d61a2b59f9db52c98155c0c449152 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Wed, 20 Jan 2021 10:24:47 +0900 Subject: [PATCH 09/39] Added extra_rdoc_files to make README.md the main page --- ruby2_keywords.gemspec | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ruby2_keywords.gemspec b/ruby2_keywords.gemspec index d3a58ef..000ef7d 100644 --- a/ruby2_keywords.gemspec +++ b/ruby2_keywords.gemspec @@ -10,9 +10,11 @@ Gem::Specification.new do |s| s.authors = ["Nobuyoshi Nakada"] s.require_paths = ["lib"] s.rdoc_options = ["--main", "README.md"] - s.files = [ + s.extra_rdoc_files = [ "LICENSE", "README.md", + ] + s.files = [ "lib/ruby2_keywords.rb", ] end From 4c54e01675202ad0a69bbd39a790290b9870e125 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Wed, 20 Jan 2021 10:52:47 +0900 Subject: [PATCH 10/39] Added ChangeLog rule --- .gitignore | 1 + Rakefile | 21 +++++++++++++++++++++ ruby2_keywords.gemspec | 1 + 3 files changed, 23 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..82baf63 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +ChangeLog* diff --git a/Rakefile b/Rakefile index 912db4e..4752a33 100644 --- a/Rakefile +++ b/Rakefile @@ -55,3 +55,24 @@ task "bump" => "bump:teeny" task "tag" do helper.__send__(:tag_version) end + +task "ChangeLog", [:ver, :prev] do |ver: nil, prev: nil| + logs = Dir.glob("ChangeLog-*", base: __dir__).map {Gem::Version.new(_1[/ChangeLog-\K.*/])} + ver &&= Gem::Version.new(ver) + unless prev + logs.reject! {_1 >= ver} if ver + prev = logs.max + end + range = [[prev], [ver, "HEAD"]].map {_1 ? "v#{_1.to_s}" : _2}.compact.join("..") + IO.popen(%W[git log --format=fuller --topo-order --no-merges #{range}]) do |log| + line = log.gets + File.open(["ChangeLog", (ver if ver)].compact.join("-"), "wb") do |f| + f.print "-*- coding: utf-8 -*-\n\n", line + log.each_line do |line| + line.sub!(/^(?!:)(?:Author|Commit)?(?:Date)?: /, ' \&') + line.sub!(/ +$/, '') + f.print(line) + end + end + end +end diff --git a/ruby2_keywords.gemspec b/ruby2_keywords.gemspec index 000ef7d..2b4279c 100644 --- a/ruby2_keywords.gemspec +++ b/ruby2_keywords.gemspec @@ -13,6 +13,7 @@ Gem::Specification.new do |s| s.extra_rdoc_files = [ "LICENSE", "README.md", + "ChangeLog", ] s.files = [ "lib/ruby2_keywords.rb", From 2f7e9000b4a64240616b1cbfbcff5e9174fdf6b1 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Wed, 20 Jan 2021 13:19:12 +0900 Subject: [PATCH 11/39] Include ChangeLogs for old versions --- Rakefile | 26 +++++++++++++++++++------- ruby2_keywords.gemspec | 1 + 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/Rakefile b/Rakefile index 4752a33..c7ef0f5 100644 --- a/Rakefile +++ b/Rakefile @@ -10,6 +10,7 @@ end task :default => :test task "build" => "date_epoch" +task "build" => "changelogs" task "date_epoch" do ENV["SOURCE_DATE_EPOCH"] = IO.popen(%W[git -C #{__dir__} log -1 --format=%ct], &:read).chomp @@ -56,17 +57,13 @@ task "tag" do helper.__send__(:tag_version) end -task "ChangeLog", [:ver, :prev] do |ver: nil, prev: nil| - logs = Dir.glob("ChangeLog-*", base: __dir__).map {Gem::Version.new(_1[/ChangeLog-\K.*/])} +def changelog(ver = nil, prev = nil, output:) ver &&= Gem::Version.new(ver) - unless prev - logs.reject! {_1 >= ver} if ver - prev = logs.max - end range = [[prev], [ver, "HEAD"]].map {_1 ? "v#{_1.to_s}" : _2}.compact.join("..") IO.popen(%W[git log --format=fuller --topo-order --no-merges #{range}]) do |log| line = log.gets - File.open(["ChangeLog", (ver if ver)].compact.join("-"), "wb") do |f| + FileUtils.mkpath(File.dirname(output)) + File.open(output, "wb") do |f| f.print "-*- coding: utf-8 -*-\n\n", line log.each_line do |line| line.sub!(/^(?!:)(?:Author|Commit)?(?:Date)?: /, ' \&') @@ -76,3 +73,18 @@ task "ChangeLog", [:ver, :prev] do |ver: nil, prev: nil| end end end + +tags = IO.popen(%w[git tag -l v0.*]).grep(/v(.*)/) {$1} +tags.sort_by! {_1.scan(/\d+/).map(&:to_i)} +tags.inject(nil) do |prev, tag| + task("logs/ChangeLog-#{tag}") {|t| changelog(tag, prev, output: t.name)} + tag +end + +desc "Make ChangeLog" +task "ChangeLog", [:ver, :prev] do |t, ver: nil, prev: tags.last| + changelog(ver, prev, output: t.name) +end +changelogs = ["ChangeLog", *tags.map {"logs/ChangeLog-#{_1}"}] +task "changelogs" => changelogs +CLOBBER.concat(changelogs) << "logs" diff --git a/ruby2_keywords.gemspec b/ruby2_keywords.gemspec index 2b4279c..9357c7b 100644 --- a/ruby2_keywords.gemspec +++ b/ruby2_keywords.gemspec @@ -14,6 +14,7 @@ Gem::Specification.new do |s| "LICENSE", "README.md", "ChangeLog", + *Dir.glob("logs/ChangeLog-*[^~]", base: __dir__), ] s.files = [ "lib/ruby2_keywords.rb", From 294d9e79171b1b954f223f08acc6144f0fc6efd4 Mon Sep 17 00:00:00 2001 From: Benoit Daloze Date: Tue, 19 Jan 2021 16:15:55 +0100 Subject: [PATCH 12/39] Add TruffleRuby in CI --- .github/workflows/test.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c5c461c..bfd38f3 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -7,8 +7,10 @@ jobs: name: build (${{ matrix.ruby }} / ${{ matrix.os }}) strategy: matrix: - ruby: [ '3.0', 2.7, 2.6, 2.5, head ] + ruby: [ '3.0', 2.7, 2.6, 2.5, head, truffleruby ] os: [ ubuntu-latest, macos-latest, windows-latest ] + exclude: + - { os: windows-latest, ruby: truffleruby } runs-on: ${{ matrix.os }} steps: - name: git config From 88867dc48b9f0ec139cd349af40ae9dbea677b93 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Tue, 9 Feb 2021 23:37:17 +0900 Subject: [PATCH 13/39] Moved the mandatory argument first --- Rakefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Rakefile b/Rakefile index c7ef0f5..13faad9 100644 --- a/Rakefile +++ b/Rakefile @@ -57,7 +57,7 @@ task "tag" do helper.__send__(:tag_version) end -def changelog(ver = nil, prev = nil, output:) +def changelog(output, ver = nil, prev = nil) ver &&= Gem::Version.new(ver) range = [[prev], [ver, "HEAD"]].map {_1 ? "v#{_1.to_s}" : _2}.compact.join("..") IO.popen(%W[git log --format=fuller --topo-order --no-merges #{range}]) do |log| @@ -77,13 +77,13 @@ end tags = IO.popen(%w[git tag -l v0.*]).grep(/v(.*)/) {$1} tags.sort_by! {_1.scan(/\d+/).map(&:to_i)} tags.inject(nil) do |prev, tag| - task("logs/ChangeLog-#{tag}") {|t| changelog(tag, prev, output: t.name)} + task("logs/ChangeLog-#{tag}") {|t| changelog(t.name, tag, prev)} tag end desc "Make ChangeLog" task "ChangeLog", [:ver, :prev] do |t, ver: nil, prev: tags.last| - changelog(ver, prev, output: t.name) + changelog(t.name, ver, prev) end changelogs = ["ChangeLog", *tags.map {"logs/ChangeLog-#{_1}"}] task "changelogs" => changelogs From c898163464e896d63698f19a49bc0ab8cc593081 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Tue, 9 Feb 2021 23:50:56 +0900 Subject: [PATCH 14/39] Revert "Add TruffleRuby in CI" This reverts commit 294d9e79171b1b954f223f08acc6144f0fc6efd4. --- .github/workflows/test.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index bfd38f3..c5c461c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -7,10 +7,8 @@ jobs: name: build (${{ matrix.ruby }} / ${{ matrix.os }}) strategy: matrix: - ruby: [ '3.0', 2.7, 2.6, 2.5, head, truffleruby ] + ruby: [ '3.0', 2.7, 2.6, 2.5, head ] os: [ ubuntu-latest, macos-latest, windows-latest ] - exclude: - - { os: windows-latest, ruby: truffleruby } runs-on: ${{ matrix.os }} steps: - name: git config From f40159f5a66fff7bed873d68e06439ec960bc3f9 Mon Sep 17 00:00:00 2001 From: Ivo Anjo Date: Thu, 4 Feb 2021 10:35:42 +0000 Subject: [PATCH 15/39] Avoid using numbered block parameters This feature is only available on Ruby 2.7+ and breaks older rubies. See for more details. --- Rakefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Rakefile b/Rakefile index 13faad9..f32f2a8 100644 --- a/Rakefile +++ b/Rakefile @@ -59,7 +59,7 @@ end def changelog(output, ver = nil, prev = nil) ver &&= Gem::Version.new(ver) - range = [[prev], [ver, "HEAD"]].map {_1 ? "v#{_1.to_s}" : _2}.compact.join("..") + range = [[prev], [ver, "HEAD"]].map {|ver, branch| ver ? "v#{ver.to_s}" : branch}.compact.join("..") IO.popen(%W[git log --format=fuller --topo-order --no-merges #{range}]) do |log| line = log.gets FileUtils.mkpath(File.dirname(output)) @@ -75,7 +75,7 @@ def changelog(output, ver = nil, prev = nil) end tags = IO.popen(%w[git tag -l v0.*]).grep(/v(.*)/) {$1} -tags.sort_by! {_1.scan(/\d+/).map(&:to_i)} +tags.sort_by! {|tag| tag.scan(/\d+/).map(&:to_i)} tags.inject(nil) do |prev, tag| task("logs/ChangeLog-#{tag}") {|t| changelog(t.name, tag, prev)} tag @@ -85,6 +85,6 @@ desc "Make ChangeLog" task "ChangeLog", [:ver, :prev] do |t, ver: nil, prev: tags.last| changelog(t.name, ver, prev) end -changelogs = ["ChangeLog", *tags.map {"logs/ChangeLog-#{_1}"}] +changelogs = ["ChangeLog", *tags.map {|tag| "logs/ChangeLog-#{tag}"}] task "changelogs" => changelogs CLOBBER.concat(changelogs) << "logs" From 7f5f4f8cd9c605741bec1cdabece0dd7e53afd9a Mon Sep 17 00:00:00 2001 From: Ivo Anjo Date: Thu, 4 Feb 2021 10:15:27 +0000 Subject: [PATCH 16/39] Avoid using `base:` option for `Dir.glob` This option is only available on Ruby 2.5+ and breaks older rubies. See for more details. --- ruby2_keywords.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruby2_keywords.gemspec b/ruby2_keywords.gemspec index 9357c7b..9eca56a 100644 --- a/ruby2_keywords.gemspec +++ b/ruby2_keywords.gemspec @@ -14,7 +14,7 @@ Gem::Specification.new do |s| "LICENSE", "README.md", "ChangeLog", - *Dir.glob("logs/ChangeLog-*[^~]", base: __dir__), + *Dir.glob("#{__dir__}/logs/ChangeLog-*[^~]"), ] s.files = [ "lib/ruby2_keywords.rb", From 0784ef08e280a5eb3c08fd9198b381af0ec027f6 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Tue, 9 Feb 2021 23:46:24 +0900 Subject: [PATCH 17/39] Strip the source directory from globbed paths --- ruby2_keywords.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruby2_keywords.gemspec b/ruby2_keywords.gemspec index 9eca56a..8b5030f 100644 --- a/ruby2_keywords.gemspec +++ b/ruby2_keywords.gemspec @@ -14,7 +14,7 @@ Gem::Specification.new do |s| "LICENSE", "README.md", "ChangeLog", - *Dir.glob("#{__dir__}/logs/ChangeLog-*[^~]"), + *Dir.glob("#{__dir__}/logs/ChangeLog-*[^~]").map {|path| path[(__dir__.size+1)..-1]}, ] s.files = [ "lib/ruby2_keywords.rb", From 1773502b1c445ae0ca1c31960a1b64b2f040f8c1 Mon Sep 17 00:00:00 2001 From: Ivo Anjo Date: Thu, 4 Feb 2021 10:43:18 +0000 Subject: [PATCH 18/39] Avoid using `Binding#receiver` This feature is only available on Ruby 2.2+ and breaks older rubies. See for more details. --- lib/ruby2_keywords.rb | 2 +- test/test_keyword.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/ruby2_keywords.rb b/lib/ruby2_keywords.rb index 7a3f2fa..09827b5 100644 --- a/lib/ruby2_keywords.rb +++ b/lib/ruby2_keywords.rb @@ -11,7 +11,7 @@ def ruby2_keywords(name, *) end end -main = TOPLEVEL_BINDING.receiver +main = TOPLEVEL_BINDING.eval('self') unless main.respond_to?(:ruby2_keywords, true) # call-seq: # ruby2_keywords(method_name, ...) diff --git a/test/test_keyword.rb b/test/test_keyword.rb index 5fcecb5..13d6041 100644 --- a/test/test_keyword.rb +++ b/test/test_keyword.rb @@ -22,7 +22,7 @@ def test_module_ruby2_keywords end def test_toplevel_ruby2_keywords - main = TOPLEVEL_BINDING.receiver + main = TOPLEVEL_BINDING.eval('self') assert_send([main, :respond_to?, :ruby2_keywords, true]) assert_operator(main.method(:ruby2_keywords).arity, :<, 0) end From 098295f4e9510a751097a6fc0e76c278ae9a1ff0 Mon Sep 17 00:00:00 2001 From: Ivo Anjo Date: Thu, 4 Feb 2021 11:20:19 +0000 Subject: [PATCH 19/39] Avoid built-in old `test-unit` In Ruby <= 2.1, `test-unit` was shipped with Ruby itself (unbundling was done for 2.2 -- see ). The `test-unit` version shipped with 2.1 breaks some of the tests. To fix this, I've added the minimum needed version explicitly to the `gemspec`, as well as added a `gems.rb` for allowing the use of `bundler` to run the tests and ensure the correct `test-unit` is used. --- gems.rb | 3 +++ ruby2_keywords.gemspec | 2 ++ 2 files changed, 5 insertions(+) create mode 100644 gems.rb diff --git a/gems.rb b/gems.rb new file mode 100644 index 0000000..fa75df1 --- /dev/null +++ b/gems.rb @@ -0,0 +1,3 @@ +source 'https://rubygems.org' + +gemspec diff --git a/ruby2_keywords.gemspec b/ruby2_keywords.gemspec index 8b5030f..0610b4d 100644 --- a/ruby2_keywords.gemspec +++ b/ruby2_keywords.gemspec @@ -19,4 +19,6 @@ Gem::Specification.new do |s| s.files = [ "lib/ruby2_keywords.rb", ] + s.add_development_dependency 'test-unit', '>= 2.2' + s.add_development_dependency 'rake' end From 74cb318db44a3851f724ac72624f1509bbf1bdd4 Mon Sep 17 00:00:00 2001 From: Ivo Anjo Date: Thu, 4 Feb 2021 12:09:11 +0000 Subject: [PATCH 20/39] Add older Rubies to CI as well --- .github/workflows/test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c5c461c..934b2b6 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -7,7 +7,7 @@ jobs: name: build (${{ matrix.ruby }} / ${{ matrix.os }}) strategy: matrix: - ruby: [ '3.0', 2.7, 2.6, 2.5, head ] + ruby: [ '3.0', 2.7, 2.6, 2.5, 2.4, 2.3, 2.2, 2.1, head ] os: [ ubuntu-latest, macos-latest, windows-latest ] runs-on: ${{ matrix.os }} steps: @@ -22,7 +22,7 @@ jobs: with: ruby-version: ${{ matrix.ruby }} - name: Run test - run: rake test + run: bundle install && bundle exec rake test - id: build run: | rake build From 64aad913e16d7e6008aa6ca06cf3f1b6fa864c4a Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Wed, 10 Feb 2021 00:42:59 +0900 Subject: [PATCH 21/39] Separated install from test --- .github/workflows/test.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 934b2b6..8d85225 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -21,8 +21,10 @@ jobs: uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} + - name: Install + run: bundle install - name: Run test - run: bundle install && bundle exec rake test + run: bundle exec rake test - id: build run: | rake build From 6974495d294cd59b8c0dba78a26b391f25154050 Mon Sep 17 00:00:00 2001 From: Ivo Anjo Date: Thu, 4 Feb 2021 11:39:26 +0000 Subject: [PATCH 22/39] Explicitly declare support for Ruby >= 2.0.0 This can be used to clarify support, as well as in the future to drop support for rubies, if so desired. --- ruby2_keywords.gemspec | 1 + 1 file changed, 1 insertion(+) diff --git a/ruby2_keywords.gemspec b/ruby2_keywords.gemspec index 0610b4d..1340427 100644 --- a/ruby2_keywords.gemspec +++ b/ruby2_keywords.gemspec @@ -19,6 +19,7 @@ Gem::Specification.new do |s| s.files = [ "lib/ruby2_keywords.rb", ] + s.required_ruby_version = '>= 2.0.0' s.add_development_dependency 'test-unit', '>= 2.2' s.add_development_dependency 'rake' end From 97b4de75c83c927eca773e689ecb49557a972024 Mon Sep 17 00:00:00 2001 From: Ivo Anjo Date: Thu, 4 Feb 2021 11:58:41 +0000 Subject: [PATCH 23/39] Add docker-compose.yml for easy testing of older rubies --- README.md | 8 +++++++ docker-compose.yml | 57 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 docker-compose.yml diff --git a/README.md b/README.md index 4cc0282..42e1157 100644 --- a/README.md +++ b/README.md @@ -56,6 +56,14 @@ ruby2_keywords :delegating_method Bug reports and pull requests are welcome on [GitHub] or [Ruby Issue Tracking System]. +## Development + +After checking out the repo, run `bundle install` to install dependencies. +Then, run `bundle exec rake test` to run the tests. + +To test on older Ruby versions, you can use docker. E.g. to test on Ruby 2.0, +use `docker-compose run ruby-2.0`. + ## License The gem is available as open source under the terms of the diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..3135f88 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,57 @@ +version: '3.0' + +services: + ruby-2.0: + image: ruby:2.0 + volumes: + - .:/app + command: + bash -c 'cd /app && bundle install && bundle exec rake test' + ruby-2.1: + image: ruby:2.1 + volumes: + - .:/app + command: + bash -c 'cd /app && bundle install && bundle exec rake test' + ruby-2.2: + image: ruby:2.2 + volumes: + - .:/app + command: + bash -c 'cd /app && bundle install && bundle exec rake test' + ruby-2.3: + image: ruby:2.3 + volumes: + - .:/app + command: + bash -c 'cd /app && bundle install && bundle exec rake test' + ruby-2.4: + image: ruby:2.4 + volumes: + - .:/app + command: + bash -c 'cd /app && bundle install && bundle exec rake test' + ruby-2.5: + image: ruby:2.5 + volumes: + - .:/app + command: + bash -c 'cd /app && bundle install && bundle exec rake test' + ruby-2.6: + image: ruby:2.6 + volumes: + - .:/app + command: + bash -c 'cd /app && bundle install && bundle exec rake test' + ruby-2.7: + image: ruby:2.7 + volumes: + - .:/app + command: + bash -c 'cd /app && bundle install && bundle exec rake test' + ruby-3.0: + image: ruby:3.0 + volumes: + - .:/app + command: + bash -c 'cd /app && bundle install && bundle exec rake test' From 636c350c0a10ec75a9b01dd4db983abe6310136f Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Wed, 10 Feb 2021 12:26:30 +0900 Subject: [PATCH 24/39] Reduced tests Target only the currently maintained versions and the oldest available version, omitting the in-betweens. --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8d85225..3de47d9 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -7,7 +7,7 @@ jobs: name: build (${{ matrix.ruby }} / ${{ matrix.os }}) strategy: matrix: - ruby: [ '3.0', 2.7, 2.6, 2.5, 2.4, 2.3, 2.2, 2.1, head ] + ruby: [ '3.0', 2.7, 2.6, 2.1, head ] os: [ ubuntu-latest, macos-latest, windows-latest ] runs-on: ${{ matrix.os }} steps: From 03b864c09e657c130a66c7ab68d962a31df3b819 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Wed, 10 Feb 2021 21:37:20 +0900 Subject: [PATCH 25/39] Do not use gemspec for gem dependecy --- gems.rb | 5 +++++ ruby2_keywords.gemspec | 2 -- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/gems.rb b/gems.rb index fa75df1..2b2a2c4 100644 --- a/gems.rb +++ b/gems.rb @@ -1,3 +1,8 @@ source 'https://rubygems.org' gemspec + +group :development do + gem "test-unit", ">= 2.2" + gem "rake" +end diff --git a/ruby2_keywords.gemspec b/ruby2_keywords.gemspec index 1340427..cfe7811 100644 --- a/ruby2_keywords.gemspec +++ b/ruby2_keywords.gemspec @@ -20,6 +20,4 @@ Gem::Specification.new do |s| "lib/ruby2_keywords.rb", ] s.required_ruby_version = '>= 2.0.0' - s.add_development_dependency 'test-unit', '>= 2.2' - s.add_development_dependency 'rake' end From 8e4d9a8de92e9f1f3690fbc224aac1e0d102c36e Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Thu, 11 Feb 2021 21:38:24 +0900 Subject: [PATCH 26/39] Ignore lock file and generated logs --- .gitignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 82baf63..6c2c094 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ -ChangeLog* +ChangeLog +logs/ +gems.locked From 5f993b84a469cdc1995077dc0d8391928bb7ac1a Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Thu, 11 Feb 2021 12:18:26 +0900 Subject: [PATCH 27/39] Split Rakefile into rakelib --- Rakefile | 74 ----------------------------------------- rakelib/changelogs.rake | 34 +++++++++++++++++++ rakelib/epoch.rake | 5 +++ rakelib/version.rake | 44 ++++++++++++++++++++++++ ruby2_keywords.gemspec | 6 ++-- 5 files changed, 86 insertions(+), 77 deletions(-) create mode 100644 rakelib/changelogs.rake create mode 100644 rakelib/epoch.rake create mode 100644 rakelib/version.rake diff --git a/Rakefile b/Rakefile index f32f2a8..caacbf2 100644 --- a/Rakefile +++ b/Rakefile @@ -1,48 +1,12 @@ require "bundler/gem_tasks" require "rake/testtask" -helper = Bundler::GemHelper.instance - Rake::TestTask.new(:test) do |t| t.test_files = FileList["test/**/test_*.rb"] end task :default => :test -task "build" => "date_epoch" -task "build" => "changelogs" - -task "date_epoch" do - ENV["SOURCE_DATE_EPOCH"] = IO.popen(%W[git -C #{__dir__} log -1 --format=%ct], &:read).chomp -end - -def helper.update_gemspec - path = "#{__dir__}/#{gemspec.name}.gemspec" - File.open(path, "r+b") do |f| - if (d = f.read).sub!(/^(version\s*=\s*)".*"/) {$1 + gemspec.version.to_s.dump} - f.rewind - f.truncate(0) - f.print(d) - end - end -end - -def helper.commit_bump - sh(%W[git -C #{__dir__} commit -m bump\ up\ to\ #{gemspec.version} - #{gemspec.name}.gemspec]) -end - -def helper.version=(v) - gemspec.version = v - update_gemspec - commit_bump -end -major, minor, teeny = helper.gemspec.version.segments - -task "bump:teeny" do - helper.version = Gem::Version.new("#{major}.#{minor}.#{teeny+1}") -end - task "bump:minor" do raise "can't bump up minor" end @@ -50,41 +14,3 @@ end task "bump:major" do raise "can't bump up major" end - -task "bump" => "bump:teeny" - -task "tag" do - helper.__send__(:tag_version) -end - -def changelog(output, ver = nil, prev = nil) - ver &&= Gem::Version.new(ver) - range = [[prev], [ver, "HEAD"]].map {|ver, branch| ver ? "v#{ver.to_s}" : branch}.compact.join("..") - IO.popen(%W[git log --format=fuller --topo-order --no-merges #{range}]) do |log| - line = log.gets - FileUtils.mkpath(File.dirname(output)) - File.open(output, "wb") do |f| - f.print "-*- coding: utf-8 -*-\n\n", line - log.each_line do |line| - line.sub!(/^(?!:)(?:Author|Commit)?(?:Date)?: /, ' \&') - line.sub!(/ +$/, '') - f.print(line) - end - end - end -end - -tags = IO.popen(%w[git tag -l v0.*]).grep(/v(.*)/) {$1} -tags.sort_by! {|tag| tag.scan(/\d+/).map(&:to_i)} -tags.inject(nil) do |prev, tag| - task("logs/ChangeLog-#{tag}") {|t| changelog(t.name, tag, prev)} - tag -end - -desc "Make ChangeLog" -task "ChangeLog", [:ver, :prev] do |t, ver: nil, prev: tags.last| - changelog(t.name, ver, prev) -end -changelogs = ["ChangeLog", *tags.map {|tag| "logs/ChangeLog-#{tag}"}] -task "changelogs" => changelogs -CLOBBER.concat(changelogs) << "logs" diff --git a/rakelib/changelogs.rake b/rakelib/changelogs.rake new file mode 100644 index 0000000..df72f9d --- /dev/null +++ b/rakelib/changelogs.rake @@ -0,0 +1,34 @@ +task "build" => "changelogs" + +changelog = proc do |output, ver = nil, prev = nil| + ver &&= Gem::Version.new(ver) + range = [[prev], [ver, "HEAD"]].map {|ver, branch| ver ? "v#{ver.to_s}" : branch}.compact.join("..") + IO.popen(%W[git log --format=fuller --topo-order --no-merges #{range}]) do |log| + line = log.gets + FileUtils.mkpath(File.dirname(output)) + File.open(output, "wb") do |f| + f.print "-*- coding: utf-8 -*-\n\n", line + log.each_line do |line| + line.sub!(/^(?!:)(?:Author|Commit)?(?:Date)?: /, ' \&') + line.sub!(/ +$/, '') + f.print(line) + end + end + end +end + +tags = IO.popen(%w[git tag -l v[0-9]*]).grep(/v(.*)/) {$1} +tags.sort_by! {|tag| tag.scan(/\d+/).map(&:to_i)} +tags.inject(nil) do |prev, tag| + task("logs/ChangeLog-#{tag}") {|t| changelog[t.name, tag, prev]} + tag +end + +desc "Make ChangeLog" +task "ChangeLog", [:ver, :prev] do |t, ver: nil, prev: tags.last| + changelog[t.name, ver, prev] +end + +changelogs = ["ChangeLog", *tags.map {|tag| "logs/ChangeLog-#{tag}"}] +task "changelogs" => changelogs +CLOBBER.concat(changelogs) << "logs" diff --git a/rakelib/epoch.rake b/rakelib/epoch.rake new file mode 100644 index 0000000..80f27c9 --- /dev/null +++ b/rakelib/epoch.rake @@ -0,0 +1,5 @@ +task "build" => "date_epoch" + +task "date_epoch" do + ENV["SOURCE_DATE_EPOCH"] = IO.popen(%W[git -C #{__dir__} log -1 --format=%ct], &:read).chomp +end diff --git a/rakelib/version.rake b/rakelib/version.rake new file mode 100644 index 0000000..c56ea56 --- /dev/null +++ b/rakelib/version.rake @@ -0,0 +1,44 @@ +class << (helper = Bundler::GemHelper.instance) + def update_gemspec + path = gemspec.loaded_from + File.open(path, "r+b") do |f| + d = f.read + if d.sub!(/^(_VERSION\s*=\s*)".*"/) {$1 + gemspec.version.to_s.dump} + f.rewind + f.truncate(0) + f.print(d) + end + end + end + + def commit_bump + sh(%W[git -C #{__dir__} commit -m bump\ up\ to\ #{gemspec.version} + #{gemspec.loaded_from}]) + end + + def version=(v) + gemspec.version = v + update_gemspec + commit_bump + end +end + +major, minor, teeny = helper.gemspec.version.segments + +task "bump:teeny" do + helper.version = Gem::Version.new("#{major}.#{minor}.#{teeny+1}") +end + +task "bump:minor" do + helper.version = Gem::Version.new("#{major}.#{minor+1}.0") +end + +task "bump:major" do + helper.version = Gem::Version.new("#{major+1}.0.0") +end + +task "bump" => "bump:teeny" + +task "tag" do + helper.__send__(:tag_version) +end diff --git a/ruby2_keywords.gemspec b/ruby2_keywords.gemspec index cfe7811..e2cd397 100644 --- a/ruby2_keywords.gemspec +++ b/ruby2_keywords.gemspec @@ -1,9 +1,9 @@ -version = "0.0.5" -abort "Version must not reach 1" if version[/\d+/].to_i >= 1 +_VERSION = "0.0.5" +abort "Version must not reach 1" if _VERSION[/\d+/].to_i >= 1 Gem::Specification.new do |s| s.name = "ruby2_keywords" - s.version = version + s.version = _VERSION s.summary = "Shim library for Module#ruby2_keywords" s.homepage = "https://github.com/ruby/ruby2_keywords" s.licenses = ["Ruby", "BSD-2-Clause"] From 07d7fa17e4c61102597280bd31a6b5972d8e5588 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Thu, 11 Feb 2021 17:23:30 +0900 Subject: [PATCH 28/39] bundle-install only on ruby 2.1 --- .github/workflows/test.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 3de47d9..817e65e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -22,9 +22,13 @@ jobs: with: ruby-version: ${{ matrix.ruby }} - name: Install - run: bundle install + id: bundle + run: | + bundle install + echo "::set-output name=exec::bundle exec" + if: "matrix.ruby <= '2.1'" - name: Run test - run: bundle exec rake test + run: ${{steps.bundle.outputs.exec}} rake test - id: build run: | rake build From 92ad9c5c3fff591b8383ada8b93c3da1279d24ad Mon Sep 17 00:00:00 2001 From: Benoit Daloze Date: Tue, 19 Jan 2021 16:15:55 +0100 Subject: [PATCH 29/39] Add TruffleRuby in CI --- .github/workflows/test.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 817e65e..2aae1ac 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -7,8 +7,10 @@ jobs: name: build (${{ matrix.ruby }} / ${{ matrix.os }}) strategy: matrix: - ruby: [ '3.0', 2.7, 2.6, 2.1, head ] + ruby: [ '3.0', 2.7, 2.6, 2.1, head, truffleruby-head ] os: [ ubuntu-latest, macos-latest, windows-latest ] + exclude: + - { os: windows-latest, ruby: truffleruby-head } runs-on: ${{ matrix.os }} steps: - name: git config From f0754bdacf9786700f3c2814ef18c9e0c880fc6f Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Tue, 16 Nov 2021 19:22:05 +0900 Subject: [PATCH 30/39] Fix commit_bump --- rakelib/version.rake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rakelib/version.rake b/rakelib/version.rake index c56ea56..bbb327f 100644 --- a/rakelib/version.rake +++ b/rakelib/version.rake @@ -12,7 +12,7 @@ class << (helper = Bundler::GemHelper.instance) end def commit_bump - sh(%W[git -C #{__dir__} commit -m bump\ up\ to\ #{gemspec.version} + sh(%W[git commit -m bump\ up\ to\ #{gemspec.version} #{gemspec.loaded_from}]) end From b73d1d72e0576f454579b51e015e1920927d0e2a Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 25 Mar 2022 16:47:31 +0900 Subject: [PATCH 31/39] Added dependabot (#20) --- .github/dependabot.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..b18fd29 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,6 @@ +version: 2 +updates: + - package-ecosystem: 'github-actions' + directory: '/' + schedule: + interval: 'weekly' From 120c3bb220d8b743a44d073b5af84de16fa59a4b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Apr 2022 04:23:34 +0000 Subject: [PATCH 32/39] Bump actions/upload-artifact from 2 to 3 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 2 to 3. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v2...v3) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 2aae1ac..f93aa83 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -40,7 +40,7 @@ jobs: if: "matrix.ruby == '3.0'" shell: bash - name: Upload package - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: path: pkg/*.gem name: ${{steps.build.outputs.pkg}} From 3882dac4c9bc784183d7d4cf7374edd56017746f Mon Sep 17 00:00:00 2001 From: Junichi Sato <22004610+sato11@users.noreply.github.com> Date: Sat, 21 Jan 2023 15:28:46 +0900 Subject: [PATCH 33/39] Use GITHUB_OUTPUT instead of deprecated set-output (#22) --- .github/workflows/test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f93aa83..3bd301d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -27,14 +27,14 @@ jobs: id: bundle run: | bundle install - echo "::set-output name=exec::bundle exec" + echo "exec=bundle exec" >> $GITHUB_OUTPUT if: "matrix.ruby <= '2.1'" - name: Run test run: ${{steps.bundle.outputs.exec}} rake test - id: build run: | rake build - echo "::set-output name=pkg::${GITHUB_REPOSITORY#*/}-${RUNNING_OS%-*}" + echo "pkg=${GITHUB_REPOSITORY#*/}-${RUNNING_OS%-*}" >> $GITHUB_OUTPUT env: RUNNING_OS: ${{matrix.os}} if: "matrix.ruby == '3.0'" From 9d9f84978a53c62fd6d3befb56ea59ede700e0bc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Dec 2023 04:46:35 +0000 Subject: [PATCH 34/39] Bump actions/upload-artifact from 3 to 4 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3 to 4. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 3bd301d..b1c365e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -40,7 +40,7 @@ jobs: if: "matrix.ruby == '3.0'" shell: bash - name: Upload package - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: path: pkg/*.gem name: ${{steps.build.outputs.pkg}} From 947bad9f47a803c5bb678ee8b0f2f448f921601b Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 30 May 2025 15:56:43 +0900 Subject: [PATCH 35/39] Use ruby_versions.yml --- .github/workflows/test.yml | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b1c365e..3df4654 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -3,14 +3,28 @@ name: test on: [push, pull_request] jobs: + ruby-versions: + uses: ruby/actions/.github/workflows/ruby_versions.yml@master + with: + engine: cruby + min_version: 2.1 + build: + needs: ruby-versions name: build (${{ matrix.ruby }} / ${{ matrix.os }}) strategy: matrix: - ruby: [ '3.0', 2.7, 2.6, 2.1, head, truffleruby-head ] + ruby: ${{ fromJson(needs.ruby-versions.outputs.versions) }} os: [ ubuntu-latest, macos-latest, windows-latest ] + include: + - { os: ubuntu-latest, ruby: truffleruby-head } + - { os: macos-latest, ruby: truffleruby-head } exclude: - - { os: windows-latest, ruby: truffleruby-head } + - { os: macos-latest, ruby: 2.1 } + - { os: macos-latest, ruby: 2.2 } + - { os: macos-latest, ruby: 2.3 } + - { os: macos-latest, ruby: 2.4 } + - { os: macos-latest, ruby: 2.5 } runs-on: ${{ matrix.os }} steps: - name: git config From 7c555d20b224682900ed34c7cecf39bad747ca1b Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 30 May 2025 16:01:45 +0900 Subject: [PATCH 36/39] Always use bundle exec --- .github/workflows/test.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 3df4654..be0eaf0 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -41,10 +41,9 @@ jobs: id: bundle run: | bundle install - echo "exec=bundle exec" >> $GITHUB_OUTPUT if: "matrix.ruby <= '2.1'" - name: Run test - run: ${{steps.bundle.outputs.exec}} rake test + run: bundle exec rake test - id: build run: | rake build From 80ab4bf53d1a5df335a0209b0495f385a88826df Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 30 May 2025 16:04:37 +0900 Subject: [PATCH 37/39] Use bundler-cache instead of bundle install --- .github/workflows/test.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index be0eaf0..5932c89 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -37,11 +37,7 @@ jobs: uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} - - name: Install - id: bundle - run: | - bundle install - if: "matrix.ruby <= '2.1'" + bundler-cache: true - name: Run test run: bundle exec rake test - id: build From 05be175c4e8f5307ea75ece34a9dc27a2ad84138 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 30 May 2025 15:37:19 +0900 Subject: [PATCH 38/39] Enabled trusted publisher for rubygems.org --- .github/workflows/push_gem.yml | 46 ++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 .github/workflows/push_gem.yml diff --git a/.github/workflows/push_gem.yml b/.github/workflows/push_gem.yml new file mode 100644 index 0000000..f662094 --- /dev/null +++ b/.github/workflows/push_gem.yml @@ -0,0 +1,46 @@ +name: Publish gem to rubygems.org + +on: + push: + tags: + - 'v*' + +permissions: + contents: read + +jobs: + push: + if: github.repository == 'ruby/ruby2_keywords' + runs-on: ubuntu-latest + + environment: + name: rubygems.org + url: https://rubygems.org/gems/ruby2_keywords + + permissions: + contents: write + id-token: write + + steps: + - name: Harden Runner + uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 + with: + egress-policy: audit + + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Set up Ruby + uses: ruby/setup-ruby@13e7a03dc3ac6c3798f4570bfead2aed4d96abfb # v1.244.0 + with: + bundler-cache: true + ruby-version: "ruby" + + - name: Publish to RubyGems + uses: rubygems/release-gem@a25424ba2ba8b387abc8ef40807c2c85b96cbe32 # v1.1.1 + + - name: Create GitHub release + run: | + tag_name="$(git describe --tags --abbrev=0)" + gh release create "${tag_name}" --verify-tag --generate-notes + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 8abbcef5e4b2468f9cc7291b9ad492c0a27425ad Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 30 May 2025 15:37:33 +0900 Subject: [PATCH 39/39] Ignore pkg directory --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 6c2c094..230b7e3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ ChangeLog logs/ gems.locked +pkg/