diff --git a/ruby4.0-lru_redux.yaml b/ruby4.0-lru_redux.yaml new file mode 100644 index 00000000000..55458cfa000 --- /dev/null +++ b/ruby4.0-lru_redux.yaml @@ -0,0 +1,114 @@ +package: + name: ruby4.0-lru_redux + version: 1.1.0 + epoch: 0 + description: An efficient, thread safe LRU cache. + copyright: + - license: MIT + +environment: + contents: + packages: + - build-base + - busybox + - ca-certificates-bundle + - ruby-${{vars.rubyMM}} + - ruby-${{vars.rubyMM}}-dev + +pipeline: + - uses: git-checkout + with: + repository: https://github.com/SamSaffron/lru_redux.git + tag: v${{package.version}} + expected-commit: 47e0c92f494390955ee828e11a357cf682f1ce9f + + - uses: ruby/build + with: + gem: ${{vars.gem}} + + - uses: ruby/install + with: + gem: ${{vars.gem}} + version: ${{package.version}} + + - uses: ruby/clean + +vars: + gem: lru_redux + +update: + enabled: true + github: + identifier: SamSaffron/lru_redux + strip-prefix: v + use-tag: true + +var-transforms: + - from: ${{package.name}} + match: ^ruby(\d\.\d+)-.* + replace: $1 + to: rubyMM + +test: + pipeline: + - name: Verify library import + runs: ruby -e "require 'lru_redux'" + - name: Basic functionality test (adapted from project README) + runs: | + ruby -e ' + require "lru_redux" + + # non thread safe + cache = LruRedux::Cache.new(100) + cache[:a] = "1" + cache[:b] = "2" + + raise "Access failed" unless cache.to_a == [[:b, "2"], [:a, "1"]] + + # note the order matters here, last accessed is first + cache[:a] # a pushed to front + # "1" + raise "Access failed" unless cache.to_a == [[:a, "1"], [:b, "2"]] + + cache.delete(:a) + raise "Delete failed" unless cache.to_a == [[:b, "2"]] + + cache.max_size = 200 # cache now stores 200 items + cache.clear # cache has no items + + cache.getset(:a) { 1 } + raise "Getset failed" unless cache.to_a == [[:a, 1]] + + # already set so don"t call block + cache.getset(:a) { 99 } + raise "Getset unexpectedly updated" unless cache.to_a == [[:a, 1]] + ' + - name: Basic threadsafe functionality test (adapted from project README) + runs: | + ruby -e ' + require "lru_redux" + + cache = LruRedux::ThreadSafeCache.new(100) + cache[:a] = "1" + cache[:b] = "2" + + raise "Access failed" unless cache.to_a == [[:b, "2"], [:a, "1"]] + + # note the order matters here, last accessed is first + cache[:a] # a pushed to front + # "1" + raise "Access failed" unless cache.to_a == [[:a, "1"], [:b, "2"]] + + cache.delete(:a) + raise "Delete failed" unless cache.to_a == [[:b, "2"]] + + cache.max_size = 200 # cache now stores 200 items + cache.clear # cache has no items + + cache.getset(:a) { 1 } + raise "Getset failed" unless cache.to_a == [[:a, 1]] + + # already set so don"t call block + cache.getset(:a) { 99 } + raise "Getset unexpectedly updated" unless cache.to_a == [[:a, 1]] + ' diff --git a/ruby4.0-mail.yaml b/ruby4.0-mail.yaml new file mode 100644 index 00000000000..7016219a065 --- /dev/null +++ b/ruby4.0-mail.yaml @@ -0,0 +1,58 @@ +package: + name: ruby4.0-mail + version: "2.9.0" + epoch: 0 + description: A really Ruby Mail handler. + copyright: + - license: MIT + dependencies: + runtime: + - ruby${{vars.rubyMM}}-mini_mime + - ruby${{vars.rubyMM}}-net-imap + +environment: + contents: + packages: + - build-base + - busybox + - ca-certificates-bundle + - git + - ruby-${{vars.rubyMM}} + - ruby-${{vars.rubyMM}}-dev + +pipeline: + - uses: git-checkout + with: + repository: https://github.com/mikel/mail + tag: ${{package.version}} + expected-commit: 490fe219712829ce763fd46eea7fbd3d4eaa102d + + - uses: ruby/build + with: + gem: ${{vars.gem}} + + - uses: ruby/install + with: + gem: ${{vars.gem}} + version: ${{package.version}} + + - uses: ruby/clean + +vars: + gem: mail + +update: + enabled: true + github: + identifier: mikel/mail + use-tag: true + +var-transforms: + - from: ${{package.name}} + match: ^ruby(\d\.\d+)-.* + replace: $1 + to: rubyMM + +test: + pipeline: + - uses: test/tw/gem-check diff --git a/ruby4.0-manticore.yaml b/ruby4.0-manticore.yaml new file mode 100644 index 00000000000..ab9786a0746 --- /dev/null +++ b/ruby4.0-manticore.yaml @@ -0,0 +1,69 @@ +# Generated from https://github.com/cheald/manticore +package: + name: ruby4.0-manticore + version: "0.9.2" + epoch: 0 + description: Manticore is an HTTP client built on the Apache HttpCore components + copyright: + - license: MIT + dependencies: + runtime: + - ruby${{vars.rubyMM}}-openssl_pkcs8_pure + +environment: + contents: + packages: + - build-base + - busybox + - ca-certificates-bundle + - git + - ruby-${{vars.rubyMM}} + - ruby-${{vars.rubyMM}}-dev + +pipeline: + - uses: git-checkout + with: + repository: https://github.com/cheald/manticore + tag: v${{package.version}} + expected-commit: aa692fb77eec2a7aad7362d0ca5d87b8fb36fd5d + + - runs: | + sed -i 's/exists?/exist?/g' manticore.gemspec + + - uses: ruby/build + with: + gem: ${{vars.gem}} + + - uses: ruby/install + with: + # Output file name has `java` suffix. + gem-file: ${{vars.gem}}-${{package.version}}-java.gem + version: ${{package.version}} + + - uses: ruby/clean + +vars: + gem: manticore + +update: + enabled: true + github: + identifier: cheald/manticore + strip-prefix: v + use-tag: true + +var-transforms: + - from: ${{package.name}} + match: ^ruby(\d\.\d+)-.* + replace: $1 + to: rubyMM + +test: + pipeline: + - uses: test/tw/gem-check + with: + require: | + manticore/cookie + manticore/facade + manticore/version + manticore/client/proxies diff --git a/ruby4.0-method_source.yaml b/ruby4.0-method_source.yaml new file mode 100644 index 00000000000..394a52bdd3c --- /dev/null +++ b/ruby4.0-method_source.yaml @@ -0,0 +1,56 @@ +# Generated from https://github.com/banister/method_source +package: + name: ruby4.0-method_source + version: 1.1.0 + epoch: 0 + description: retrieve the sourcecode for a method + copyright: + - license: MIT + +environment: + contents: + packages: + - build-base + - busybox + - ca-certificates-bundle + - git + - ruby-${{vars.rubyMM}} + - ruby-${{vars.rubyMM}}-dev + +pipeline: + - uses: git-checkout + with: + expected-commit: eef98af83806572d503c8bc624de0efdc0dffc28 + repository: https://github.com/banister/method_source + tag: v${{package.version}} + + - uses: ruby/build + with: + gem: ${{vars.gem}} + + - uses: ruby/install + with: + gem: ${{vars.gem}} + version: ${{package.version}} + + - uses: ruby/clean + +vars: + gem: method_source + +update: + enabled: true + github: + identifier: banister/method_source + strip-prefix: v + use-tag: true + +var-transforms: + - from: ${{package.name}} + match: ^ruby(\d\.\d+)-.* + replace: $1 + to: rubyMM + +test: + pipeline: + - uses: test/tw/gem-check diff --git a/ruby4.0-metrics.yaml b/ruby4.0-metrics.yaml new file mode 100644 index 00000000000..cddf462cabc --- /dev/null +++ b/ruby4.0-metrics.yaml @@ -0,0 +1,63 @@ +package: + name: ruby4.0-metrics + version: "0.15.0" + epoch: 0 + description: Application metrics and instrumentation. + copyright: + - license: MIT + dependencies: + runtime: + - ruby${{vars.rubyMM}}-console + - ruby-${{vars.rubyMM}} + +environment: + contents: + packages: + - build-base + - busybox + - ca-certificates-bundle + - git + - ruby${{vars.rubyMM}}-bundler + - ruby-${{vars.rubyMM}} + - ruby-${{vars.rubyMM}}-dev + +pipeline: + - uses: git-checkout + with: + expected-commit: 2883b0a592df32eb23fa18d78a4db574da14d2e6 + repository: https://github.com/socketry/metrics + tag: v${{package.version}} + + - runs: sed -i '/signing_key/d' ${{vars.gem}}.gemspec + + - uses: ruby/build + with: + gem: ${{vars.gem}} + + - uses: ruby/install + with: + gem: ${{vars.gem}} + version: ${{package.version}} + + - uses: ruby/clean + +vars: + gem: metrics + +update: + enabled: true + github: + identifier: socketry/metrics + strip-prefix: v + use-tag: true + +test: + pipeline: + - runs: | + ruby -e "require 'metrics'" + +var-transforms: + - from: ${{package.name}} + match: ^ruby(\d\.\d+)-.* + replace: $1 + to: rubyMM diff --git a/ruby4.0-mime-types-data.yaml b/ruby4.0-mime-types-data.yaml new file mode 100644 index 00000000000..d009ad22310 --- /dev/null +++ b/ruby4.0-mime-types-data.yaml @@ -0,0 +1,56 @@ +package: + name: ruby4.0-mime-types-data + version: "3.2025.0924" + epoch: 0 + description: MIME Type registry data + copyright: + - license: MIT + +environment: + contents: + packages: + - build-base + - busybox + - ca-certificates-bundle + - git + - ruby-${{vars.rubyMM}} + - ruby-${{vars.rubyMM}}-dev + +pipeline: + - uses: git-checkout + with: + repository: https://github.com/mime-types/mime-types-data.git + tag: v${{package.version}} + expected-commit: 85ac1a531d68d453658222cd85587865a316198b + + - uses: ruby/build + with: + gem: ${{vars.gem}} + + - uses: ruby/install + with: + gem: ${{vars.gem}} + version: ${{package.version}} + + - uses: ruby/clean + +vars: + gem: mime-types-data + +test: + pipeline: + - runs: | + ruby -e "require 'mime-types-data'" + +update: + enabled: true + github: + identifier: mime-types/mime-types-data + strip-prefix: v + use-tag: true + +var-transforms: + - from: ${{package.name}} + match: ^ruby(\d\.\d+)-.* + replace: $1 + to: rubyMM diff --git a/ruby4.0-mime-types.yaml b/ruby4.0-mime-types.yaml new file mode 100644 index 00000000000..ae0d4f04dd8 --- /dev/null +++ b/ruby4.0-mime-types.yaml @@ -0,0 +1,125 @@ +package: + name: ruby4.0-mime-types + version: "3.7.0" + epoch: 0 + description: Ruby MIME type registry library + copyright: + - license: MIT + dependencies: + runtime: + - ruby${{vars.rubyMM}}-mime-types-data + +environment: + contents: + packages: + - build-base + - busybox + - ca-certificates-bundle + - git + - ruby-${{vars.rubyMM}} + - ruby-${{vars.rubyMM}}-dev + +pipeline: + - uses: git-checkout + with: + repository: https://github.com/mime-types/ruby-mime-types.git + tag: v${{package.version}} + expected-commit: afa0fd687188969b6102dcb9b176c490dfed94f6 + + - runs: | + # Upstream missed updating the gemspec for 3.6.2 + sed -i 's/3.6.1/3.6.2/' mime-types.gemspec + + - uses: ruby/build + with: + gem: ${{vars.gem}} + + - uses: ruby/install + with: + gem: ${{vars.gem}} + version: ${{package.version}} + + - uses: ruby/clean + +vars: + gem: mime-types + +test: + pipeline: + - runs: | + ruby -e "require 'mime/types'" + - name: Simple test + runs: | + cat < /tmp/test.rb + require 'mime/types' + + plaintext = MIME::Types['text/plain'] # => [ text/plain ] + text = plaintext.first + puts text.media_type # => 'text' + puts text.sub_type # => 'plain' + + puts text.extensions.join(' ') # => 'txt asc c cc h hh cpp hpp dat hlp' + puts text.preferred_extension # => 'txt' + puts text.friendly # => 'Text Document' + puts text.i18n_key # => 'text.plain' + + puts text.encoding # => quoted-printable + puts text.default_encoding # => quoted-printable + puts text.binary? # => false + puts text.ascii? # => true + puts text.obsolete? # => false + puts text.registered? # => true + puts text.provisional? # => false + puts text.complete? # => true + + puts text # => 'text/plain' + + puts text == 'text/plain' # => true + puts 'text/plain' == text # => true + puts text == 'text/x-plain' # => false + puts 'text/x-plain' == text # => false + + puts MIME::Type.simplified('x-appl/x-zip') # => 'x-appl/x-zip' + puts MIME::Type.i18n_key('x-appl/x-zip') # => 'x-appl.x-zip' + + puts text.like?('text/x-plain') # => true + puts text.like?(MIME::Type.new('x-text/x-plain')) # => true + + puts text.xrefs.inspect # => { "rfc" => [ "rfc2046", "rfc3676", "rfc5147" ] } + puts text.xref_urls # => [ "http://www.iana.org/go/rfc2046", + # "http://www.iana.org/go/rfc3676", + # "http://www.iana.org/go/rfc5147" ] + + xtext = MIME::Type.new('x-text/x-plain') + puts xtext.media_type # => 'text' + puts xtext.raw_media_type # => 'x-text' + puts xtext.sub_type # => 'plain' + puts xtext.raw_sub_type # => 'x-plain' + puts xtext.complete? # => false + + puts MIME::Types.any? { |type| type.content_type == 'text/plain' } # => true + puts MIME::Types.all?(&:registered?) # => false + + # Various string representations of MIME types + qcelp = MIME::Types['audio/QCELP'].first # => audio/QCELP + puts qcelp.content_type # => 'audio/QCELP' + puts qcelp.simplified # => 'audio/qcelp' + + xwingz = MIME::Types['application/x-Wingz'].first # => application/x-Wingz + puts xwingz.content_type # => 'application/x-Wingz' + puts xwingz.simplified # => 'application/x-wingz' + EOF + ruby /tmp/test.rb + +update: + enabled: true + github: + identifier: mime-types/ruby-mime-types + strip-prefix: v + use-tag: true + +var-transforms: + - from: ${{package.name}} + match: ^ruby(\d\.\d+)-.* + replace: $1 + to: rubyMM diff --git a/ruby4.0-mini_mime.yaml b/ruby4.0-mini_mime.yaml new file mode 100644 index 00000000000..35ce25764e0 --- /dev/null +++ b/ruby4.0-mini_mime.yaml @@ -0,0 +1,55 @@ +package: + name: ruby4.0-mini_mime + version: 1.1.5 + epoch: 0 + description: A lightweight mime type lookup toy + copyright: + - license: MIT + +environment: + contents: + packages: + - build-base + - busybox + - ca-certificates-bundle + - git + - ruby-${{vars.rubyMM}} + - ruby-${{vars.rubyMM}}-dev + +pipeline: + - uses: git-checkout + with: + expected-commit: ad29352bf7b8fa547ea3058f2e97f3e8496f034a + repository: https://github.com/discourse/mini_mime + tag: v${{package.version}} + + - uses: ruby/build + with: + gem: ${{vars.gem}} + + - uses: ruby/install + with: + gem: ${{vars.gem}} + version: ${{package.version}} + + - uses: ruby/clean + +vars: + gem: mini_mime + +update: + enabled: true + github: + identifier: discourse/mini_mime + strip-prefix: v + use-tag: true + +var-transforms: + - from: ${{package.name}} + match: ^ruby(\d\.\d+)-.* + replace: $1 + to: rubyMM + +test: + pipeline: + - uses: test/tw/gem-check diff --git a/ruby4.0-mini_portile2.yaml b/ruby4.0-mini_portile2.yaml new file mode 100644 index 00000000000..88d98b0649d --- /dev/null +++ b/ruby4.0-mini_portile2.yaml @@ -0,0 +1,96 @@ +package: + name: ruby4.0-mini_portile2 + version: "2.8.9" + epoch: 0 + description: Simple autoconf and cmake builder for developers + copyright: + - license: MIT + dependencies: + runtime: + - build-base + - cmake + - ruby-${{vars.rubyMM}} + +environment: + contents: + packages: + - ruby-${{vars.rubyMM}} + - ruby-${{vars.rubyMM}}-dev + +vars: + gem: mini_portile2 + +pipeline: + - uses: git-checkout + with: + repository: https://github.com/flavorjones/mini_portile + tag: v${{package.version}} + expected-commit: ef35d0b05d8ebf6975385c46f6c693466a4d4840 + + - uses: ruby/build + with: + gem: ${{vars.gem}} + + - uses: ruby/install + with: + gem: ${{vars.gem}} + version: ${{package.version}} + + - uses: ruby/clean + +test: + environment: + contents: + packages: + - build-base + - cmake + - gcc-14-default # libiconv 1.17 ftbfs w/ gcc 15 + pipeline: + - name: Validate import + runs: ruby -e "require 'mini_portile2'" + - name: Test example recipe from docs + runs: | + cat > test.rb < test.rb < "test", "value" => 123} + packed = data.to_msgpack + assert_equal data, MessagePack.unpack(packed) + puts "Hash serialization test passed" + # Test nested structure + nested = { + "array" => [1, 2, 3], + "hash" => {"a" => 1, "b" => 2}, + "mixed" => [{"x" => 1}, [1, 2], "test"] + } + packed = nested.to_msgpack + assert_equal nested, MessagePack.unpack(packed) + puts "Nested structure serialization test passed" + # Test packer/unpacker streaming API + packer = MessagePack::Packer.new + packer.write(1) + packer.write("string") + packer.write([1,2,3]) + data = packer.to_s + unpacker = MessagePack::Unpacker.new + unpacker.feed(data) + results = [] + unpacker.each {|obj| results << obj } + assert_equal [1, "string", [1,2,3]], results + puts "Streaming API test passed" + puts "All tests passed!" + EOF + - uses: test/tw/ldd-check + +update: + enabled: true + github: + identifier: msgpack/msgpack-ruby + strip-prefix: v + use-tag: true + tag-filter: v + +var-transforms: + - from: ${{package.name}} + match: ^ruby(\d\.\d+)-.* + replace: $1 + to: rubyMM diff --git a/ruby4.0-multi_json.yaml b/ruby4.0-multi_json.yaml new file mode 100644 index 00000000000..40e50cb9c14 --- /dev/null +++ b/ruby4.0-multi_json.yaml @@ -0,0 +1,55 @@ +package: + name: ruby4.0-multi_json + version: 1.15.0 + epoch: 0 + description: A common interface to multiple JSON libraries, including Oj, Yajl, the JSON gem (with C-extensions), the pure-Ruby JSON gem, NSJSONSerialization, gson.rb, JrJackson, and OkJson. + copyright: + - license: MIT + +environment: + contents: + packages: + - build-base + - busybox + - ca-certificates-bundle + - git + - ruby-${{vars.rubyMM}} + - ruby-${{vars.rubyMM}}-dev + +pipeline: + - uses: git-checkout + with: + repository: https://github.com/intridea/multi_json + tag: v${{package.version}} + expected-commit: 530a9813e32ca1fc08bc294fa1178796c3d1861a + + - uses: ruby/build + with: + gem: ${{vars.gem}} + + - uses: ruby/install + with: + gem: ${{vars.gem}} + version: ${{package.version}} + + - uses: ruby/clean + +vars: + gem: multi_json + +update: + enabled: true + github: + identifier: intridea/multi_json + strip-prefix: v + use-tag: true + +var-transforms: + - from: ${{package.name}} + match: ^ruby(\d\.\d+)-.* + replace: $1 + to: rubyMM + +test: + pipeline: + - uses: test/tw/gem-check diff --git a/ruby4.0-multi_xml.yaml b/ruby4.0-multi_xml.yaml new file mode 100644 index 00000000000..b5924efadcd --- /dev/null +++ b/ruby4.0-multi_xml.yaml @@ -0,0 +1,56 @@ +# Generated from https://github.com/sferik/multi_xml +package: + name: ruby4.0-multi_xml + version: "0.8.0" + epoch: 0 + description: Provides swappable XML backends utilizing LibXML, Nokogiri, Ox, or REXML. + copyright: + - license: MIT + +environment: + contents: + packages: + - build-base + - busybox + - ca-certificates-bundle + - git + - ruby-${{vars.rubyMM}} + - ruby-${{vars.rubyMM}}-dev + +pipeline: + - uses: git-checkout + with: + expected-commit: f1d0703da70e754af5a7260219665225427d4a66 + repository: https://github.com/sferik/multi_xml + tag: v${{package.version}} + + - uses: ruby/build + with: + gem: ${{vars.gem}} + + - uses: ruby/install + with: + gem: ${{vars.gem}} + version: ${{package.version}} + + - uses: ruby/clean + +vars: + gem: multi_xml + +update: + enabled: true + github: + identifier: sferik/multi_xml + strip-prefix: v + use-tag: true + +var-transforms: + - from: ${{package.name}} + match: ^ruby(\d\.\d+)-.* + replace: $1 + to: rubyMM + +test: + pipeline: + - uses: test/tw/gem-check diff --git a/ruby4.0-mustermann.yaml b/ruby4.0-mustermann.yaml new file mode 100644 index 00000000000..a978c86756d --- /dev/null +++ b/ruby4.0-mustermann.yaml @@ -0,0 +1,61 @@ +# Generated from https://github.com/sinatra/mustermann +package: + name: ruby4.0-mustermann + version: "3.0.4" + epoch: 0 + description: A library implementing patterns that behave like regular expressions. + copyright: + - license: MIT + +environment: + contents: + packages: + - build-base + - busybox + - ca-certificates-bundle + - git + - ruby-${{vars.rubyMM}} + - ruby-${{vars.rubyMM}}-dev + +pipeline: + - uses: git-checkout + with: + expected-commit: 2e2467847f64387db6f85afdeb506f885abb4d35 + tag: v${{package.version}} + repository: https://github.com/sinatra/mustermann + + - uses: ruby/build + with: + gem: ${{vars.gem}} + dir: mustermann + + - uses: ruby/install + with: + gem: ${{vars.gem}} + version: ${{package.version}} + dir: mustermann + + - uses: ruby/clean + +vars: + gem: mustermann + +test: + pipeline: + - uses: ruby/require + with: + module_name: ${{vars.gem}} + +update: + enabled: true + github: + identifier: sinatra/mustermann + strip-prefix: v + tag-filter-prefix: v + use-tag: true + +var-transforms: + - from: ${{package.name}} + match: ^ruby(\d\.\d+)-.* + replace: $1 + to: rubyMM diff --git a/ruby4.0-net-http-persistent.yaml b/ruby4.0-net-http-persistent.yaml new file mode 100644 index 00000000000..05aaaf93383 --- /dev/null +++ b/ruby4.0-net-http-persistent.yaml @@ -0,0 +1,62 @@ +package: + name: ruby4.0-net-http-persistent + version: "4.0.6" + epoch: 0 + description: Manages persistent connections using Net::HTTP including a thread pool for connecting to multiple hosts. + copyright: + - license: MIT + dependencies: + runtime: + - ruby${{vars.rubyMM}}-connection_pool + +environment: + contents: + packages: + - build-base + - busybox + - ca-certificates-bundle + - git + - glibc-locale-en + - ruby-${{vars.rubyMM}} + - ruby-${{vars.rubyMM}}-dev + environment: + LANG: en_US.UTF-8 + +pipeline: + - uses: git-checkout + with: + expected-commit: 234f3b2c6a0ed044e3c55e3de982257b4860ba0a + repository: https://github.com/drbrain/net-http-persistent + tag: v${{package.version}} + + - uses: ruby/build + with: + gem: ${{vars.gem}} + + - uses: ruby/install + with: + gem: ${{vars.gem}} + version: ${{package.version}} + + - uses: ruby/clean + +vars: + gem: net-http-persistent + +update: + enabled: true + git: + strip-prefix: v + +var-transforms: + - from: ${{package.name}} + match: ^ruby(\d\.\d+)-.* + replace: $1 + to: rubyMM + +test: + pipeline: + - uses: test/tw/gem-check + with: + require: | + net/http/persistent diff --git a/ruby4.0-net-http.yaml b/ruby4.0-net-http.yaml new file mode 100644 index 00000000000..9e74163786c --- /dev/null +++ b/ruby4.0-net-http.yaml @@ -0,0 +1,64 @@ +package: + name: ruby4.0-net-http + version: "0.9.1" + epoch: 0 + description: "A rich library which can be used to build HTTP user-agents for Ruby" + copyright: + - license: BSD-2-Clause OR Ruby + +environment: + contents: + packages: + - build-base + - busybox + - ca-certificates-bundle + - git + - ruby-${{vars.rubyMM}} + - ruby-${{vars.rubyMM}}-dev + +pipeline: + - uses: git-checkout + with: + repository: https://github.com/ruby/net-http + tag: v${{package.version}} + expected-commit: 8cee86e939f69bd0906864e7eb740bb471a205bd + + - uses: ruby/build + with: + gem: ${{vars.gem}} + + - uses: ruby/install + with: + gem: ${{vars.gem}} + version: ${{package.version}} + + - uses: ruby/clean + +vars: + gem: net-http + +test: + pipeline: + - name: Verify library import + runs: ruby -e "require 'net/http'" + - name: Basic usage + runs: | + cat < /tmp/test.rb + require "net/http" + uri = URI("https://edu.chainguard.dev/open-source/wolfi/overview/") + Net::HTTP.get(uri) + puts "OK" + EOF + ruby /tmp/test.rb + +update: + enabled: true + github: + identifier: ruby/net-http + strip-prefix: v + +var-transforms: + - from: ${{package.name}} + match: ^ruby(\d\.\d+)-.* + replace: $1 + to: rubyMM diff --git a/ruby4.0-net-imap.yaml b/ruby4.0-net-imap.yaml new file mode 100644 index 00000000000..cff31d26da6 --- /dev/null +++ b/ruby4.0-net-imap.yaml @@ -0,0 +1,81 @@ +package: + name: ruby4.0-net-imap + version: "0.6.2" + epoch: 0 + description: Ruby client api for Internet Message Access Protocol + copyright: + - license: Ruby + - license: BSD-2-Clause + dependencies: + runtime: + - ruby${{vars.rubyMM}}-date + - ruby${{vars.rubyMM}}-net-protocol + +environment: + contents: + packages: + - build-base + - busybox + - ca-certificates-bundle + - git + - ruby-${{vars.rubyMM}} + - ruby-${{vars.rubyMM}}-dev + +pipeline: + - uses: git-checkout + with: + expected-commit: 38622aa7bf4cb1c412ac246561161228f04d22ac + repository: https://github.com/ruby/net-imap + tag: v${{package.version}} + + - uses: ruby/build + with: + gem: ${{vars.gem}} + + - uses: ruby/install + with: + gem: ${{vars.gem}} + version: ${{package.version}} + + - uses: ruby/clean + +vars: + gem: net-imap + +update: + enabled: true + github: + identifier: ruby/net-imap + strip-prefix: v + use-tag: true + +var-transforms: + - from: ${{package.name}} + match: ^ruby(\d\.\d+)-.* + replace: $1 + to: rubyMM + +test: + environment: + contents: + packages: + - build-base + - ruby-${{vars.rubyMM}}-dev + - ruby${{vars.rubyMM}}-bundler + - ruby${{vars.rubyMM}}-json + - ruby${{vars.rubyMM}}-psych + - ruby${{vars.rubyMM}}-stringio + pipeline: + - runs: | + # Test that our installed package is importable + ruby -e "require 'net/imap'" + - uses: git-checkout + with: + expected-commit: bab9dfb161d473d7b379b6d0e060fef28791ccb9 + repository: https://github.com/ruby/net-imap + tag: v${{package.version}} + - runs: | + # Run upstream tests: against the repo's code not our installed + # package, but at least find out if we have incompatibilities + bundle install + bundle exec rake test diff --git a/ruby4.0-net-protocol.yaml b/ruby4.0-net-protocol.yaml new file mode 100644 index 00000000000..7b1974d9f41 --- /dev/null +++ b/ruby4.0-net-protocol.yaml @@ -0,0 +1,105 @@ +package: + name: ruby4.0-net-protocol + version: 0.2.2 + epoch: 0 + description: The abstract interface for net-* client. + copyright: + - license: Ruby + - license: BSD-2-Clause + dependencies: + runtime: + - ruby${{vars.rubyMM}}-timeout + +environment: + contents: + packages: + - build-base + - busybox + - ca-certificates-bundle + - git + - ruby-${{vars.rubyMM}} + - ruby-${{vars.rubyMM}}-dev + +pipeline: + - uses: git-checkout + with: + expected-commit: 2d3c4b43a837a616e5853f807cde63aaffbcd280 + repository: https://github.com/ruby/net-protocol + tag: v${{package.version}} + + - uses: ruby/build + with: + gem: ${{vars.gem}} + + - uses: ruby/install + with: + gem: ${{vars.gem}} + version: ${{package.version}} + + - uses: ruby/clean + +vars: + gem: net-protocol + +update: + enabled: true + github: + identifier: ruby/net-protocol + strip-prefix: v + +var-transforms: + - from: ${{package.name}} + match: ^ruby(\d\.\d+)-.* + replace: $1 + to: rubyMM + +test: + environment: + contents: + packages: + - ruby-${{vars.rubyMM}} + pipeline: + - uses: test/tw/gem-check + - name: Verify library loading and classes + runs: | + ruby <<-EOF + require 'net/protocol' + + # Verify basic classes and constants + expected_classes = [ + Net::Protocol, + Net::BufferedIO, + Net::WriteTimeout, + Net::ReadTimeout, + Net::ProtocolError + ] + + present_classes = expected_classes.select { |cls| Object.const_defined?(cls.to_s) } + + puts "Found #{present_classes.size}/#{expected_classes.size} expected classes:" + present_classes.each { |cls| puts "- #{cls}" } + + # Verify we can instantiate a Protocol object + proto = Net::Protocol.new + puts "Successfully created Net::Protocol instance" + + # Check class constants and methods + if Net::Protocol.const_defined?(:VERSION) + puts "VERSION: #{Net::Protocol::VERSION}" + end + + # Verify BufferedIO which is the main functional class in this gem + if Net::BufferedIO.method_defined?(:read_timeout) && + Net::BufferedIO.method_defined?(:read_timeout=) && + Net::BufferedIO.method_defined?(:write_timeout) && + Net::BufferedIO.method_defined?(:write_timeout=) + puts "BufferedIO timeout methods are properly defined" + else + puts "Expected timeout methods are missing from BufferedIO" + methods = Net::BufferedIO.instance_methods(false).sort + puts "Available methods: #{methods.join(', ')}" + exit 1 + end + + puts "All net/protocol class verification completed successfully" + EOF diff --git a/ruby4.0-netrc.yaml b/ruby4.0-netrc.yaml new file mode 100644 index 00000000000..5f3b26f678e --- /dev/null +++ b/ruby4.0-netrc.yaml @@ -0,0 +1,70 @@ +package: + name: ruby4.0-netrc + version: 0.11.0 + epoch: 0 + description: This library can read and update netrc files, preserving formatting including comments and whitespace. + copyright: + - license: MIT + +environment: + contents: + packages: + - build-base + - busybox + - ca-certificates-bundle + - git + - ruby-${{vars.rubyMM}} + - ruby-${{vars.rubyMM}}-dev + +pipeline: + - uses: git-checkout + with: + expected-commit: 6ce9be04800aae0df1b7d44ce195117485de8b6a + repository: https://github.com/heroku/netrc + tag: v${{package.version}} + + - uses: ruby/build + with: + gem: ${{vars.gem}} + + - uses: ruby/install + with: + gem: ${{vars.gem}} + version: ${{package.version}} + + - uses: ruby/clean + +vars: + gem: netrc + +test: + pipeline: + - runs: | + ruby -e "require 'netrc'" + - name: Simple test + runs: | + cat < /tmp/.netrc + machine example.com + login netrc + password test + EOF + chmod 0600 /tmp/.netrc + cat < /tmp/test.rb + require 'netrc' + n = Netrc.read("/tmp/.netrc") + user, pass = n["example.com"] + EOF + ruby /tmp/test.rb + +# heroku uses IP allow list for querying GitHub API +update: + enabled: true + git: + strip-prefix: v + tag-filter-prefix: v + +var-transforms: + - from: ${{package.name}} + match: ^ruby(\d\.\d+)-.* + replace: $1 + to: rubyMM diff --git a/ruby4.0-nio4r.yaml b/ruby4.0-nio4r.yaml new file mode 100644 index 00000000000..4ffbbc787e5 --- /dev/null +++ b/ruby4.0-nio4r.yaml @@ -0,0 +1,56 @@ +# Generated from https://github.com/socketry/nio4r/tree/v2.5.9 +package: + name: ruby4.0-nio4r + version: 2.7.1 + epoch: 0 + description: Cross-platform asynchronous I/O primitives for scalable network clients and servers. Inspired by the Java NIO API, but simplified for ease-of-use. + copyright: + - license: MIT + +environment: + contents: + packages: + - build-base + - busybox + - ca-certificates-bundle + - git + - ruby-${{vars.rubyMM}} + - ruby-${{vars.rubyMM}}-dev + +pipeline: + - uses: git-checkout + with: + expected-commit: d8179e72a63d763ba9a84cbfa7a3412e7f100985 + repository: https://github.com/socketry/nio4r + tag: v${{package.version}} + + - uses: ruby/build + with: + gem: ${{vars.gem}} + + - uses: ruby/install + with: + gem: ${{vars.gem}} + version: ${{package.version}} + + - uses: ruby/clean + +vars: + gem: nio4r + +update: + enabled: true + github: + identifier: socketry/nio4r + strip-prefix: v + +var-transforms: + - from: ${{package.name}} + match: ^ruby(\d\.\d+)-.* + replace: $1 + to: rubyMM + +test: + pipeline: + - uses: test/tw/gem-check + - uses: test/tw/ldd-check diff --git a/ruby4.0-nokogiri.yaml b/ruby4.0-nokogiri.yaml new file mode 100644 index 00000000000..2a7dfd93581 --- /dev/null +++ b/ruby4.0-nokogiri.yaml @@ -0,0 +1,97 @@ +# Generated from https://github.com/sparklemotion/nokogiri +package: + name: ruby4.0-nokogiri + version: "1.18.10" + epoch: 0 + description: | + Nokogiri makes it easy and painless to work with XML and HTML from Ruby. + copyright: + - license: MIT + dependencies: + runtime: + - ruby${{vars.rubyMM}}-mini_portile2 + +environment: + contents: + packages: + - build-base + - busybox + - ca-certificates-bundle + - git + - ruby${{vars.rubyMM}}-mini_portile2 + - ruby-${{vars.rubyMM}} + - ruby-${{vars.rubyMM}}-dev + # Upstream also does this in their CI. Otherwise we need to wait for mirrors. + environment: + NOKOGIRI_USE_CANONICAL_GNOME_SOURCE: t + +pipeline: + - uses: git-checkout + with: + repository: https://github.com/sparklemotion/nokogiri.git + tag: v${{package.version}} + expected-commit: 680374099b3570b97471f822acc978cc847fee46 + + - uses: ruby/build + with: + gem: ${{vars.gem}} + + - uses: ruby/install + with: + gem: ${{vars.gem}} + version: ${{package.version}} + + - uses: ruby/clean + +update: + enabled: true + github: + identifier: sparklemotion/nokogiri + strip-prefix: v + use-tag: true + tag-filter: v + +vars: + gem: nokogiri + +test: + pipeline: + - uses: test/tw/gem-check + with: + require: | + nokogiri + nokogiri/class_resolver + nokogiri/extension + nokogiri/gumbo + nokogiri/syntax_error + nokogiri/version + nokogiri/css/node + nokogiri/css/parser + nokogiri/css/selector_cache + nokogiri/css/syntax_error + nokogiri/css/tokenizer + nokogiri/decorators/slop + nokogiri/html4/element_description + nokogiri/html4/element_description_defaults + nokogiri/html4/entity_lookup + nokogiri/html4/sax/push_parser + nokogiri/version/constant + nokogiri/xml/notation + nokogiri/xml/parse_options + nokogiri/xml/pp + nokogiri/xml/schema + nokogiri/xml/searchable + nokogiri/xml/xpath_context + nokogiri/xml/pp/character_data + nokogiri/xml/pp/node + nokogiri/xml/sax/document + nokogiri/xml/sax/parser_context + nokogiri/xml/sax/push_parser + nokogiri/xslt/stylesheet + - uses: test/tw/ldd-check + +var-transforms: + - from: ${{package.name}} + match: ^ruby(\d\.\d+)-.* + replace: $1 + to: rubyMM diff --git a/ruby4.0-numerizer.yaml b/ruby4.0-numerizer.yaml new file mode 100644 index 00000000000..f8a1d186786 --- /dev/null +++ b/ruby4.0-numerizer.yaml @@ -0,0 +1,225 @@ +# Generated from http://github.com/jduff/numerizer +package: + name: ruby4.0-numerizer + version: 0.2.0 + epoch: 0 + description: Numerizer is a gem to help with parsing numbers in natural language from strings (ex forty two). It was extracted from the awesome Chronic gem http://github.com/evaryont/chronic. + copyright: + - license: MIT + +environment: + contents: + packages: + - build-base + - busybox + - ca-certificates-bundle + - git + - ruby-${{vars.rubyMM}} + - ruby-${{vars.rubyMM}}-dev + +pipeline: + - uses: git-checkout + with: + repository: https://github.com/jduff/numerizer + tag: v${{package.version}} + expected-commit: 83c0eedb5b49053b3e36434c3d640a8291587fd3 + + - uses: ruby/build + with: + gem: ${{vars.gem}} + + - uses: ruby/install + with: + gem: ${{vars.gem}} + version: ${{package.version}} + + - uses: ruby/clean + +vars: + gem: numerizer + +update: + enabled: true + github: + identifier: jduff/numerizer + strip-prefix: v + use-tag: true + +var-transforms: + - from: ${{package.name}} + match: ^ruby(\d\.\d+)-.* + replace: $1 + to: rubyMM + +test: + environment: + contents: + packages: + - ruby-${{vars.rubyMM}} + pipeline: + - uses: test/tw/gem-check + - name: Verify library loading + runs: | + ruby -e "require 'numerizer'; puts 'Successfully loaded numerizer gem'" + - name: Test number parsing functionality + runs: | + ruby <<-EOF + require 'numerizer' + + begin + # Test basic number words + tests = { + 'one' => '1', + 'two' => '2', + 'three' => '3', + 'four' => '4', + 'five' => '5', + 'six' => '6', + 'seven' => '7', + 'eight' => '8', + 'nine' => '9', + 'ten' => '10', + 'eleven' => '11', + 'twelve' => '12', + 'thirteen' => '13', + 'fourteen' => '14', + 'fifteen' => '15', + 'sixteen' => '16', + 'seventeen' => '17', + 'eighteen' => '18', + 'nineteen' => '19', + 'twenty' => '20' + } + + tests.each do |input, expected| + result = Numerizer.numerize(input) + raise "Basic test failed for '\#{input}': expected '\#{expected}', got '\#{result}'" unless result == expected + end + puts "Basic number word tests passed!" + + # Test tens + tests = { + 'twenty' => '20', + 'thirty' => '30', + 'forty' => '40', + 'fifty' => '50', + 'sixty' => '60', + 'seventy' => '70', + 'eighty' => '80', + 'ninety' => '90' + } + + tests.each do |input, expected| + result = Numerizer.numerize(input) + raise "Tens test failed for '\#{input}': expected '\#{expected}', got '\#{result}'" unless result == expected + end + puts "Tens number tests passed!" + + # Test compound numbers + tests = { + 'twenty-three' => '23', + 'thirty-seven' => '37', + 'forty-five' => '45', + 'fifty-nine' => '59', + 'seventy-six' => '76', + 'eighty-eight' => '88', + 'ninety-nine' => '99' + } + + tests.each do |input, expected| + result = Numerizer.numerize(input) + raise "Compound test failed for '\#{input}': expected '\#{expected}', got '\#{result}'" unless result == expected + end + puts "Compound number tests passed!" + + # Test larger numbers + tests = { + 'one hundred' => '100', + 'two hundred and five' => '205', + 'five hundred and sixty-seven' => '567', + 'one thousand' => '1000', + 'two thousand and one' => '2001', + 'five thousand three hundred and forty-two' => '5342', + 'one million' => '1000000', + 'two million five hundred thousand' => '2500000' + } + + tests.each do |input, expected| + result = Numerizer.numerize(input) + raise "Large number test failed for '\#{input}': expected '\#{expected}', got '\#{result}'" unless result == expected + end + puts "Large number tests passed!" + + # Test fractions + tests = { + 'a half' => '1/2', + 'one half' => '1/2', + 'a quarter' => '1/4', + 'one quarter' => '1/4', + 'three quarters' => '3/4', + 'two thirds' => '2/3', + 'five eighths' => '5/8' + } + + tests.each do |input, expected| + result = Numerizer.numerize(input) + raise "Fraction test failed for '\#{input}': expected '\#{expected}', got '\#{result}'" unless result == expected + end + puts "Fraction tests passed!" + + # Test mixed numbers + tests = { + 'one and a half' => '1.5', + 'two and a quarter' => '2.25', + 'three and three quarters' => '3.75' + } + + tests.each do |input, expected| + result = Numerizer.numerize(input) + raise "Mixed number test failed for '\#{input}': expected '\#{expected}', got '\#{result}'" unless result == expected + end + puts "Mixed number tests passed!" + + # Test numbers in context + tests = { + 'I have five apples' => 'I have 5 apples', + 'There are twenty-five people here' => 'There are 25 people here', + 'One hundred and twenty-five dolls in the shop' => '125 dolls in the shop' + } + + tests.each do |input, expected| + result = Numerizer.numerize(input) + raise "Context test failed for '\#{input}': expected '\#{expected}', got '\#{result}'" unless result == expected + end + puts "Numbers in context tests passed!" + + # Test bias parameter + begin + ambiguous_input = 'quarter' + fractional = Numerizer.numerize(ambiguous_input, bias: :fractional) + ordinal = Numerizer.numerize(ambiguous_input, bias: :ordinal) + + raise "Bias test failed for fractional" unless fractional == '1/4' + raise "Bias test failed for ordinal" unless ordinal == '4th' + puts "Bias parameter tests passed!" + rescue => e + puts "Bias parameter tests skipped: #{e.message}" + end + + # Test ignore parameter + begin + input = 'five horses and six sheep' + ignored = Numerizer.numerize(input, ignore: ['five']) + + raise "Ignore test failed" unless ignored == 'five horses and 6 sheep' + puts "Ignore parameter test passed!" + rescue => e + puts "Ignore parameter test skipped: #{e.message}" + end + + puts "All numerizer tests passed successfully!" + rescue => e + puts "Test failed: \#{e.message}" + exit 1 + end + EOF diff --git a/ruby4.0-oauth2.yaml b/ruby4.0-oauth2.yaml new file mode 100644 index 00000000000..d6f4753f868 --- /dev/null +++ b/ruby4.0-oauth2.yaml @@ -0,0 +1,104 @@ +package: + name: ruby4.0-oauth2 + version: "2.0.18" + epoch: 0 + description: A Ruby wrapper for the OAuth 2.0 protocol built with a similar style to the original OAuth spec. + copyright: + - license: MIT + dependencies: + runtime: + - ruby${{vars.rubyMM}}-faraday + - ruby${{vars.rubyMM}}-jwt + - ruby${{vars.rubyMM}}-multi_xml + - ruby${{vars.rubyMM}}-rack + - ruby${{vars.rubyMM}}-snaky_hash + - ruby${{vars.rubyMM}}-version_gem + +environment: + contents: + packages: + - build-base + - busybox + - ca-certificates-bundle + - git + - ruby-${{vars.rubyMM}} + - ruby-${{vars.rubyMM}}-dev + +pipeline: + - uses: git-checkout + with: + repository: https://gitlab.com/oauth-xx/oauth2 + tag: v${{package.version}} + expected-commit: b5753116121553d56937039dafc5ea472d9a99ed + + - uses: ruby/build + with: + gem: ${{vars.gem}} + + - uses: ruby/install + with: + gem: ${{vars.gem}} + version: ${{package.version}} + + - uses: ruby/clean + +vars: + gem: oauth2 + +test: + environment: + contents: + packages: + - ruby-${{vars.rubyMM}} + pipeline: + - name: Verify library loading + runs: | + ruby -e "require 'oauth2'; puts 'Successfully loaded OAuth2 library'" + - name: Verify class instantiation + runs: | + ruby <<-EOF + require 'oauth2' + + begin + # Test creating an OAuth2::Client + client = OAuth2::Client.new( + 'client_id', + 'client_secret', + site: 'https://example.org' + ) + + # Verify client was created successfully + raise "Client instantiation failed" unless client.is_a?(OAuth2::Client) + puts "Client instantiation successful" + + # Verify client ID and secret were set correctly + raise "Client ID not set correctly" unless client.id == 'client_id' + raise "Client secret not set correctly" unless client.secret == 'client_secret' + puts "Client ID and secret verified" + + # Verify site was set correctly + raise "Site not set correctly" unless client.site == 'https://example.org' + puts "Site URL verified" + + # Test creating an access token instance + token = OAuth2::AccessToken.new(client, 'sample_token') + raise "Token instantiation failed" unless token.is_a?(OAuth2::AccessToken) + puts "Token instantiation successful" + + puts "All OAuth2 tests passed successfully!" + rescue => e + puts "Test failed with error: #{e.message}" + exit 1 + end + EOF + +update: + enabled: true + git: + strip-prefix: v + +var-transforms: + - from: ${{package.name}} + match: ^ruby(\d\.\d+)-.* + replace: $1 + to: rubyMM diff --git a/ruby4.0-octokit.yaml b/ruby4.0-octokit.yaml new file mode 100644 index 00000000000..a70726625fc --- /dev/null +++ b/ruby4.0-octokit.yaml @@ -0,0 +1,147 @@ +# Generated from https://github.com/octokit/octokit.rb +package: + name: ruby4.0-octokit + version: "10.0.0" + epoch: 0 + description: Simple wrapper for the GitHub API + copyright: + - license: MIT + dependencies: + runtime: + - ruby${{vars.rubyMM}}-faraday + - ruby${{vars.rubyMM}}-sawyer + +environment: + contents: + packages: + - build-base + - busybox + - ca-certificates-bundle + - git + - ruby-${{vars.rubyMM}} + - ruby-${{vars.rubyMM}}-dev + +pipeline: + - uses: git-checkout + with: + repository: https://github.com/octokit/octokit.rb.git + tag: v${{package.version}} + expected-commit: ea3413c3174571e87c83d358fc893cc7613091fa + cherry-picks: | + main/b2ac1e62cd5e9228db6c6e70e0871dd04a2f3915: Update octokit requirement from >= 4.20, < 10.0 to >= 4.20, < 11.0 + + - uses: ruby/build + with: + gem: ${{vars.gem}} + + - uses: ruby/install + with: + gem: ${{vars.gem}} + version: ${{package.version}} + + - uses: ruby/clean + +update: + enabled: true + github: + identifier: octokit/octokit.rb + strip-prefix: v + use-tag: true + tag-filter: v + +vars: + gem: octokit + +test: + pipeline: + - uses: test/tw/gem-check + with: + require: | + ext/sawyer/relation + octokit/arguments + octokit/client + octokit/configurable + octokit/connection + octokit/enterprise_admin_client + octokit/enterprise_management_console_client + octokit/error + octokit/gist + octokit/manage_ghes_client + octokit/organization + octokit/rate_limit + octokit/user + octokit/version + octokit/warnable + octokit/client/actions_artifacts + octokit/client/actions_secrets + octokit/client/actions_workflow_jobs + octokit/client/actions_workflow_runs + octokit/client/actions_workflows + octokit/client/apps + octokit/client/checks + octokit/client/code_scanning + octokit/client/codespaces_secrets + octokit/client/commit_branches + octokit/client/commit_comments + octokit/client/commit_pulls + octokit/client/commits + octokit/client/community_profile + octokit/client/contents + octokit/client/dependabot_secrets + octokit/client/deployments + octokit/client/downloads + octokit/client/emojis + octokit/client/environments + octokit/client/events + octokit/client/feeds + octokit/client/gists + octokit/client/gitignore + octokit/client/hooks + octokit/client/issues + octokit/client/labels + octokit/client/legacy_search + octokit/client/licenses + octokit/client/markdown + octokit/client/marketplace + octokit/client/meta + octokit/client/milestones + octokit/client/notifications + octokit/client/oauth_applications + octokit/client/objects + octokit/client/organizations + octokit/client/pages + octokit/client/projects + octokit/client/pull_requests + octokit/client/rate_limit + octokit/client/reactions + octokit/client/refs + octokit/client/releases + octokit/client/repositories + octokit/client/repository_invitations + octokit/client/reviews + octokit/client/say + octokit/client/search + octokit/client/service_status + octokit/client/source_import + octokit/client/stats + octokit/client/statuses + octokit/client/tokens + octokit/client/traffic + octokit/client/users + octokit/enterprise_admin_client/admin_stats + octokit/enterprise_admin_client/license + octokit/enterprise_admin_client/orgs + octokit/enterprise_admin_client/search_indexing + octokit/enterprise_admin_client/users + octokit/enterprise_management_console_client/management_console + octokit/manage_ghes_client/manage_ghes + octokit/middleware/follow_redirects + octokit/response/base_middleware + octokit/response/feed_parser + octokit/response/raise_error + +var-transforms: + - from: ${{package.name}} + match: ^ruby(\d\.\d+)-.* + replace: $1 + to: rubyMM diff --git a/ruby4.0-oj.yaml b/ruby4.0-oj.yaml new file mode 100644 index 00000000000..f01641799ce --- /dev/null +++ b/ruby4.0-oj.yaml @@ -0,0 +1,71 @@ +package: + name: ruby4.0-oj + version: "3.16.13" + epoch: 0 + description: The fastest JSON parser and object serializer. + copyright: + - license: MIT + dependencies: + runtime: + - ruby-${{vars.rubyMM}} + +environment: + contents: + packages: + - build-base + - busybox + - ca-certificates-bundle + - git + - ruby-${{vars.rubyMM}} + - ruby-${{vars.rubyMM}}-dev + +vars: + gem: oj + +pipeline: + - uses: git-checkout + with: + expected-commit: 63499b1838b9fe1304d56472c899522b0c49298c + repository: https://github.com/ohler55/oj + tag: v${{package.version}} + + - uses: ruby/build + with: + gem: ${{vars.gem}} + + - uses: ruby/install + with: + gem: ${{vars.gem}} + version: ${{package.version}} + + - uses: ruby/clean + +update: + enabled: true + github: + identifier: ohler55/oj + strip-prefix: v + use-tag: true + +var-transforms: + - from: ${{package.name}} + match: ^ruby(\d\.\d+)-.* + replace: $1 + to: rubyMM + +test: + pipeline: + - uses: test/tw/gem-check + with: + require: | + oj + oj/bag + oj/easy_hash + oj/error + oj/json + oj/mimic + oj/saj + oj/schandler + oj/state + oj/version + - uses: test/tw/ldd-check diff --git a/ruby4.0-openid_connect-1.1.8.yaml b/ruby4.0-openid_connect-1.1.8.yaml new file mode 100644 index 00000000000..4f1740b18ef --- /dev/null +++ b/ruby4.0-openid_connect-1.1.8.yaml @@ -0,0 +1,134 @@ +package: + name: ruby4.0-openid_connect-1.1.8 + version: 1.1.8 + epoch: 0 + description: OpenID Connect Server & Client Library + copyright: + - license: MIT + dependencies: + runtime: + - ruby${{vars.rubyMM}}-activemodel + - ruby${{vars.rubyMM}}-attr_required + - ruby${{vars.rubyMM}}-faraday + - ruby${{vars.rubyMM}}-faraday-follow_redirects + - ruby${{vars.rubyMM}}-json-jwt + - ruby${{vars.rubyMM}}-rack-oauth2 + - ruby${{vars.rubyMM}}-swd + - ruby${{vars.rubyMM}}-tzinfo + - ruby${{vars.rubyMM}}-validate_email + - ruby${{vars.rubyMM}}-validate_url + - ruby${{vars.rubyMM}}-webfinger + provides: + - ruby${{vars.rubyMM}}-openid_connect=${{package.full-version}} + +environment: + contents: + packages: + - build-base + - busybox + - ca-certificates-bundle + - git + - ruby-${{vars.rubyMM}} + - ruby-${{vars.rubyMM}}-dev + +pipeline: + - uses: git-checkout + with: + repository: https://github.com/nov/openid_connect + tag: v${{package.version}} + expected-commit: c3614e860e37e4ddd30b4ac91588b4326a129f98 + + - uses: ruby/build + with: + gem: ${{vars.gem}} + + - uses: ruby/install + with: + gem: ${{vars.gem}} + version: ${{package.version}} + + - uses: ruby/clean + +vars: + gem: openid_connect + +update: + enabled: false + exclude-reason: | + This is a pinned version of the OpenID Connect library. We do not want to update it. + +test: + environment: + contents: + packages: + - ruby-${{vars.rubyMM}} + - ruby${{vars.rubyMM}}-tzinfo-data + pipeline: + - name: Verify OpenID Connect library loading + runs: | + ruby -e "require 'openid_connect'; puts 'Successfully loaded OpenID Connect gem version ' + OpenIDConnect::VERSION" + - name: Test OpenID Connect functionality + runs: | + ruby <<-EOF + require 'openid_connect' + + begin + puts "Testing OpenID Connect functionality..." + + # Test Client class - core functionality of OpenID Connect + puts "Testing Client class..." + client = OpenIDConnect::Client.new( + identifier: 'client_id', + secret: 'client_secret', + redirect_uri: 'https://example.com/callback', + authorization_endpoint: 'https://provider.example.com/auth', + token_endpoint: 'https://provider.example.com/token', + userinfo_endpoint: 'https://provider.example.com/userinfo' + ) + + # Verify client configuration + unless client.identifier == 'client_id' && + client.secret == 'client_secret' && + client.redirect_uri == 'https://example.com/callback' + raise "Client configuration failed" + end + puts "Client configured successfully" + + # Generate an authorization URL - this is a key function of the OpenID Connect client + auth_url = client.authorization_uri( + response_type: :code, + scope: [:openid, :email, :profile], + state: 'random_state', + nonce: 'random_nonce' + ) + + # Verify URL contains expected parameters according to the OpenID Connect spec + %w(client_id redirect_uri response_type scope state nonce).each do |param| + unless auth_url.include?(param) + raise "Authorization URL missing parameter: \#{param}" + end + end + puts "Authorization URL generated successfully: \#{auth_url}" + + # Check available scopes - another important aspect of OpenID Connect + puts "Available scopes: \#{OpenIDConnect::ResponseObject::IdToken::ACCESSIBLE_ATTRIBUTES.join(', ')}" + + # Verify discovery endpoint class - used for OpenID Connect Discovery + unless defined?(OpenIDConnect::Discovery::Provider::Config) + raise "Missing Discovery Provider Config class" + end + puts "Discovery Provider Config class available" + + puts "All OpenID Connect tests passed successfully!" + rescue => e + puts "Test failed: \#{e.message}" + puts e.backtrace + exit 1 + end + EOF + +var-transforms: + - from: ${{package.name}} + match: ^ruby(\d\.\d+)-.* + replace: $1 + to: rubyMM diff --git a/ruby4.0-openid_connect.yaml b/ruby4.0-openid_connect.yaml new file mode 100644 index 00000000000..b279fb15244 --- /dev/null +++ b/ruby4.0-openid_connect.yaml @@ -0,0 +1,133 @@ +package: + name: ruby4.0-openid_connect + version: 2.3.0 + epoch: 0 + description: OpenID Connect Server & Client Library + copyright: + - license: MIT + dependencies: + runtime: + - ruby${{vars.rubyMM}}-activemodel + - ruby${{vars.rubyMM}}-attr_required + - ruby${{vars.rubyMM}}-email_validator + - ruby${{vars.rubyMM}}-faraday + - ruby${{vars.rubyMM}}-faraday-follow_redirects + - ruby${{vars.rubyMM}}-json-jwt + - ruby${{vars.rubyMM}}-rack-oauth2 + - ruby${{vars.rubyMM}}-swd + - ruby${{vars.rubyMM}}-tzinfo + - ruby${{vars.rubyMM}}-validate_url + - ruby${{vars.rubyMM}}-webfinger + +environment: + contents: + packages: + - build-base + - busybox + - ca-certificates-bundle + - git + - ruby-${{vars.rubyMM}} + - ruby-${{vars.rubyMM}}-dev + +pipeline: + - uses: git-checkout + with: + expected-commit: e1eb8ea962af43752b1aed2c1063a3e24f96c5bc + repository: https://github.com/nov/openid_connect + tag: v${{package.version}} + + - uses: ruby/build + with: + gem: ${{vars.gem}} + + - uses: ruby/install + with: + gem: ${{vars.gem}} + version: ${{package.version}} + + - uses: ruby/clean + +vars: + gem: openid_connect + +update: + enabled: true + github: + identifier: nov/openid_connect + strip-prefix: v + +var-transforms: + - from: ${{package.name}} + match: ^ruby(\d\.\d+)-.* + replace: $1 + to: rubyMM + +test: + environment: + contents: + packages: + - ruby-${{vars.rubyMM}} + - ruby${{vars.rubyMM}}-tzinfo-data + pipeline: + - name: Verify OpenID Connect library loading + runs: | + ruby -e "require 'openid_connect'; puts 'Successfully loaded OpenID Connect gem version ' + OpenIDConnect::VERSION" + - name: Test OpenID Connect functionality + runs: | + ruby <<-EOF + require 'openid_connect' + + begin + puts "Testing OpenID Connect functionality..." + + # Test Client class - core functionality of OpenID Connect + puts "Testing Client class..." + client = OpenIDConnect::Client.new( + identifier: 'client_id', + secret: 'client_secret', + redirect_uri: 'https://example.com/callback', + authorization_endpoint: 'https://provider.example.com/auth', + token_endpoint: 'https://provider.example.com/token', + userinfo_endpoint: 'https://provider.example.com/userinfo' + ) + + # Verify client configuration + unless client.identifier == 'client_id' && + client.secret == 'client_secret' && + client.redirect_uri == 'https://example.com/callback' + raise "Client configuration failed" + end + puts "Client configured successfully" + + # Generate an authorization URL - this is a key function of the OpenID Connect client + auth_url = client.authorization_uri( + response_type: :code, + scope: [:openid, :email, :profile], + state: 'random_state', + nonce: 'random_nonce' + ) + + # Verify URL contains expected parameters according to the OpenID Connect spec + %w(client_id redirect_uri response_type scope state nonce).each do |param| + unless auth_url.include?(param) + raise "Authorization URL missing parameter: \#{param}" + end + end + puts "Authorization URL generated successfully: \#{auth_url}" + + # Check available scopes - another important aspect of OpenID Connect + puts "Available scopes: \#{OpenIDConnect::ResponseObject::IdToken::ACCESSIBLE_ATTRIBUTES.join(', ')}" + + # Verify discovery endpoint class - used for OpenID Connect Discovery + unless defined?(OpenIDConnect::Discovery::Provider::Config) + raise "Missing Discovery Provider Config class" + end + puts "Discovery Provider Config class available" + + puts "All OpenID Connect tests passed successfully!" + rescue => e + puts "Test failed: \#{e.message}" + puts e.backtrace + exit 1 + end + EOF diff --git a/ruby4.0-openssl_pkcs8_pure.yaml b/ruby4.0-openssl_pkcs8_pure.yaml new file mode 100644 index 00000000000..e2fc45defa8 --- /dev/null +++ b/ruby4.0-openssl_pkcs8_pure.yaml @@ -0,0 +1,56 @@ +# Generated from http://github.com/cielavenir/openssl_pkcs8_pure +package: + name: ruby4.0-openssl_pkcs8_pure + version: 0.0.0.2 + epoch: 0 + description: OpenSSL::PKey::[DSA/RSA/EC]#to_pem_pkcs8 written in Ruby + copyright: + - license: BSD-2-Clause + +environment: + contents: + packages: + - build-base + - busybox + - ca-certificates-bundle + - git + - ruby-${{vars.rubyMM}} + - ruby-${{vars.rubyMM}}-dev + +pipeline: + - uses: git-checkout + with: + repository: https://github.com/cielavenir/openssl_pkcs8_pure + tag: v${{package.version}} + expected-commit: 380967a0e48f3029b80874fd5a3d21e0b33ce7f8 + + - uses: ruby/build + with: + gem: ${{vars.gem}} + + - uses: ruby/install + with: + gem: ${{vars.gem}} + version: ${{package.version}} + + - uses: ruby/clean + +vars: + gem: openssl_pkcs8_pure + +update: + enabled: true + github: + identifier: cielavenir/openssl_pkcs8_pure + strip-prefix: v + use-tag: true + +var-transforms: + - from: ${{package.name}} + match: ^ruby(\d\.\d+)-.* + replace: $1 + to: rubyMM + +test: + pipeline: + - uses: test/tw/gem-check diff --git a/ruby4.0-pg.yaml b/ruby4.0-pg.yaml new file mode 100644 index 00000000000..4285bdcfa74 --- /dev/null +++ b/ruby4.0-pg.yaml @@ -0,0 +1,70 @@ +# Generated from https://github.com/ged/ruby-pg +package: + name: ruby4.0-pg + version: "1.6.2" + epoch: 0 + description: Pg is the Ruby interface to the PostgreSQL RDBMS. It works with PostgreSQL 9.3 and later. + copyright: + - license: BSD-2-Clause + +environment: + contents: + packages: + - build-base + - busybox + - ca-certificates-bundle + - git + - libpq + - postgresql-dev + - ruby-${{vars.rubyMM}} + - ruby-${{vars.rubyMM}}-dev + +pipeline: + - uses: git-checkout + with: + expected-commit: c75ed8da19c356b52d83da2627295760780d3d36 + repository: https://github.com/ged/ruby-pg + tag: v${{package.version}} + + - uses: ruby/build + with: + gem: ${{vars.gem}} + + - uses: ruby/install + with: + gem: ${{vars.gem}} + version: ${{package.version}} + + - uses: ruby/clean + +vars: + gem: pg + +update: + enabled: true + github: + identifier: ged/ruby-pg + strip-prefix: v + use-tag: true + +test: + environment: + contents: + repositories: + - https://packages.wolfi.dev/os + keyring: + - https://packages.wolfi.dev/os/wolfi-signing.rsa.pub + packages: + - shadow + - ruby-${{vars.rubyMM}}-dev + pipeline: + - name: Check pg is install + runs: | + echo "Is pg installed?: $(gem list -i pg)" + - uses: test/tw/ldd-check + +var-transforms: + - from: ${{package.name}} + match: ^ruby(\d\.\d+)-.* + replace: $1 + to: rubyMM diff --git a/ruby4.0-polyglot.yaml b/ruby4.0-polyglot.yaml new file mode 100644 index 00000000000..5bbb9de2b56 --- /dev/null +++ b/ruby4.0-polyglot.yaml @@ -0,0 +1,56 @@ +# Generated from http://github.com/cjheath/polyglot +package: + name: ruby4.0-polyglot + version: 0.3.5 + epoch: 0 + description: Augment 'require' to load non-ruby file types + copyright: + - license: MIT + +environment: + contents: + packages: + - build-base + - busybox + - ca-certificates-bundle + - git + - ruby-${{vars.rubyMM}} + - ruby-${{vars.rubyMM}}-dev + +pipeline: + - uses: git-checkout + with: + expected-commit: 75f4d4d4521f8347a087e852ed81ec867d759854 + repository: https://github.com/cjheath/polyglot + tag: v${{package.version}} + + - uses: ruby/build + with: + gem: ${{vars.gem}} + + - uses: ruby/install + with: + gem: ${{vars.gem}} + version: ${{package.version}} + + - uses: ruby/clean + +vars: + gem: polyglot + +update: + enabled: true + github: + identifier: cjheath/polyglot + strip-prefix: v + use-tag: true + +var-transforms: + - from: ${{package.name}} + match: ^ruby(\d\.\d+)-.* + replace: $1 + to: rubyMM + +test: + pipeline: + - uses: test/tw/gem-check diff --git a/ruby4.0-polyglot/polyglot.gemspec b/ruby4.0-polyglot/polyglot.gemspec new file mode 100644 index 00000000000..d061eef005e --- /dev/null +++ b/ruby4.0-polyglot/polyglot.gemspec @@ -0,0 +1,21 @@ +# polyglot.gemspec +lib = File.expand_path('lib', __dir__) +$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) +require 'polyglot/version' + +Gem::Specification.new do |spec| + spec.name = "polyglot" + spec.version = Polyglot::VERSION::STRING + spec.authors = ["Clifford Heath"] + spec.email = %w[clifford.heath@gmail.com] + spec.summary = %q{Augment 'require' to load non-Ruby file types} + spec.description = %q{The Polyglot library allows a Ruby module to register a loader +for the file type associated with a filename extension, and it +augments 'require' to find and load matching files.} + spec.homepage = "http://github.com/cjheath/polyglot" + spec.license = "MIT" + + spec.files = Dir["lib/**/*", "README.md", "LICENSE.txt"] + spec.require_paths = ["lib"] +end + diff --git a/ruby4.0-prometheus-client.yaml b/ruby4.0-prometheus-client.yaml new file mode 100644 index 00000000000..258d162c590 --- /dev/null +++ b/ruby4.0-prometheus-client.yaml @@ -0,0 +1,71 @@ +package: + name: ruby4.0-prometheus-client + version: "4.2.5" + epoch: 0 + description: A suite of instrumentation metric primitivesthat can be exposed through a web services interface. + copyright: + - license: Apache-2.0 + +environment: + contents: + packages: + - build-base + - busybox + - ca-certificates-bundle + - git + - ruby-${{vars.rubyMM}} + - ruby-${{vars.rubyMM}}-dev + +pipeline: + - uses: git-checkout + with: + expected-commit: 5c64546870ef306c34374a813c61188fcc1fa546 + repository: https://github.com/prometheus/client_ruby + tag: v${{package.version}} + + - uses: ruby/build + with: + gem: ${{vars.gem}} + + - uses: ruby/install + with: + gem: ${{vars.gem}} + version: ${{package.version}} + + - uses: ruby/clean + +vars: + gem: prometheus-client + +update: + enabled: true + github: + identifier: prometheus/client_ruby + strip-prefix: v + +var-transforms: + - from: ${{package.name}} + match: ^ruby(\d\.\d+)-.* + replace: $1 + to: rubyMM + +test: + environment: + contents: + packages: + - curl + - ruby${{vars.rubyMM}}-puma + - ruby${{vars.rubyMM}}-rackup + pipeline: + - uses: git-checkout + with: + expected-commit: 5c64546870ef306c34374a813c61188fcc1fa546 + repository: https://github.com/prometheus/client_ruby + tag: v${{package.version}} + - runs: | + cd examples/rack + rackup > /dev/null 2>&1 & + sleep 1 + # Put output into ~/debug.log to make figuring error out easier + curl http://127.0.0.1:9292/metrics | tee -a /home/build/debug.log | grep '# TYPE http_server_requests_total counter' > /dev/null + curl http://127.0.0.1:9292/metrics | tee -a /home/build/debug.log | grep 'http_server_requests_total{code="200",method="get",path="/metrics"} 1.0' > /dev/null diff --git a/ruby4.0-protocol-hpack.yaml b/ruby4.0-protocol-hpack.yaml new file mode 100644 index 00000000000..c1020cbd7d3 --- /dev/null +++ b/ruby4.0-protocol-hpack.yaml @@ -0,0 +1,76 @@ +package: + name: ruby4.0-protocol-hpack + version: 1.5.1 + epoch: 0 + description: A compressor and decompressor for HTTP 2.0 HPACK. + copyright: + - license: MIT + dependencies: + runtime: + - ruby-${{vars.rubyMM}} + +environment: + contents: + packages: + - build-base + - busybox + - ca-certificates-bundle + - git + - ruby-${{vars.rubyMM}} + - ruby-${{vars.rubyMM}}-dev + +vars: + gem: protocol-hpack + # NOTE: http-hpack is required for the gemspec name. It has since been + # updated to match the standard naming scheme, however it is not in this tag + gemspec: protocol-hpack + +pipeline: + # This package makes use of `git ls-files` in it's gemspec so the git repo + # must be checked out in order for the gem to build with all files. + - uses: git-checkout + with: + destination: ${{vars.gem}} + expected-commit: e572ccf0d291821915bc9d2d57425c7435b7483b + repository: https://github.com/socketry/http-hpack.git + tag: v${{package.version}} + + - working-directory: ${{vars.gem}} + pipeline: + - uses: ruby/build + with: + # NOTE: See vars.gemspec comment for details + gem: ${{vars.gemspec}} + - uses: ruby/install + with: + gem: ${{vars.gem}} + version: ${{package.version}} + - uses: ruby/clean + +update: + enabled: true + github: + identifier: socketry/http-hpack + strip-prefix: v + use-tag: true + +var-transforms: + - from: ${{package.name}} + match: ^ruby(\d\.\d+)-.* + replace: $1 + to: rubyMM + +test: + pipeline: + - uses: test/tw/gem-check + with: + require: | + protocol/hpack + protocol/hpack/compressor + protocol/hpack/context + protocol/hpack/decompressor + protocol/hpack/error + protocol/hpack/huffman + protocol/hpack/version + protocol/hpack/huffman/generator + protocol/hpack/huffman/machine diff --git a/ruby4.0-protocol-http.yaml b/ruby4.0-protocol-http.yaml new file mode 100644 index 00000000000..bdc578536a5 --- /dev/null +++ b/ruby4.0-protocol-http.yaml @@ -0,0 +1,71 @@ +package: + name: ruby4.0-protocol-http + version: "0.56.1" + epoch: 0 + description: Provides abstractions to handle HTTP protocols. + copyright: + - license: MIT + dependencies: + runtime: + - ruby-${{vars.rubyMM}} + +environment: + contents: + packages: + - build-base + - busybox + - ca-certificates-bundle + - git + - ruby-${{vars.rubyMM}} + - ruby-${{vars.rubyMM}}-dev + +vars: + gem: protocol-http + +pipeline: + - uses: git-checkout + with: + expected-commit: f4f463acfea110cb2f711ad5aceeb9d0b122529f + repository: https://github.com/socketry/protocol-http + tag: v${{package.version}} + + - uses: ruby/build + with: + gem: ${{vars.gem}} + + - uses: ruby/install + with: + gem: ${{vars.gem}} + version: ${{package.version}} + + - uses: ruby/clean + +update: + enabled: true + github: + identifier: socketry/protocol-http + strip-prefix: v + use-tag: true + +test: + pipeline: + - name: Check Gem Installation + runs: | + if gem list | grep -q "${{vars.gem}}"; then + echo "${{vars.gem}} gem installed successfully." + else + echo "${{vars.gem}} gem installation failed!" && exit 1 + fi + - name: Test Functionality + runs: | + ruby -r 'protocol/http' -e ' + request = Protocol::HTTP::Request.new(nil, nil, "GET", "/") + request.headers.add("content-type", "application/json") + puts "Content-Type Header: " + request.headers["content-type"] + ' || (echo "${{vars.gem}} test failed!" && exit 1) + +var-transforms: + - from: ${{package.name}} + match: ^ruby(\d\.\d+)-.* + replace: $1 + to: rubyMM diff --git a/ruby4.0-protocol-http1.yaml b/ruby4.0-protocol-http1.yaml new file mode 100644 index 00000000000..624d2ee3903 --- /dev/null +++ b/ruby4.0-protocol-http1.yaml @@ -0,0 +1,82 @@ +package: + name: ruby4.0-protocol-http1 + version: "0.35.2" + epoch: 0 + description: A low level implementation of the HTTP/1 protocol. + copyright: + - license: MIT + dependencies: + runtime: + - ruby${{vars.rubyMM}}-protocol-http + - ruby-${{vars.rubyMM}} + +environment: + contents: + packages: + - build-base + - busybox + - ca-certificates-bundle + - git + - ruby-${{vars.rubyMM}} + - ruby-${{vars.rubyMM}}-dev + +vars: + gem: protocol-http1 + +pipeline: + - uses: git-checkout + with: + expected-commit: 5b2149ccfd938f3e8d91a9b9f182e790fc5ae92b + repository: https://github.com/socketry/protocol-http1 + tag: v${{package.version}} + + - uses: ruby/build + with: + gem: ${{vars.gem}} + + - uses: ruby/install + with: + gem: ${{vars.gem}} + version: ${{package.version}} + + - uses: ruby/clean + +update: + enabled: true + github: + identifier: socketry/protocol-http1 + strip-prefix: v + use-tag: true + +test: + pipeline: + - runs: ruby -e "require 'protocol/http1'" + - name: Simple HTTP1 test + runs: | + cat < /tmp/test.rb + require 'protocol/http1' + require 'stringio' + + # Create a string that simulates a basic HTTP request + request = "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n" + + # Open the string as if it were a stream + stream = StringIO.new(request) + + # Create an HTTP1 connection using the stream + connection = Protocol::HTTP1::Connection.new(stream) + + # Read and parse the request, returns an array of request components + request = connection.read_request + + # Extract and print the authority (host) from the request + authority = request[0] + puts authority # Expected: "example.com" + EOF + ruby /tmp/test.rb + +var-transforms: + - from: ${{package.name}} + match: ^ruby(\d\.\d+)-.* + replace: $1 + to: rubyMM diff --git a/ruby4.0-protocol-http2.yaml b/ruby4.0-protocol-http2.yaml new file mode 100644 index 00000000000..b2388ac8a9f --- /dev/null +++ b/ruby4.0-protocol-http2.yaml @@ -0,0 +1,87 @@ +package: + name: ruby4.0-protocol-http2 + version: "0.23.0" + epoch: 0 + description: A low level implementation of the HTTP/2 protocol. + copyright: + - license: MIT + dependencies: + runtime: + - ruby${{vars.rubyMM}}-protocol-hpack + - ruby${{vars.rubyMM}}-protocol-http + - ruby-${{vars.rubyMM}} + +environment: + contents: + packages: + - build-base + - busybox + - ca-certificates-bundle + - git + - ruby-${{vars.rubyMM}} + - ruby-${{vars.rubyMM}}-dev + +vars: + gem: protocol-http2 + +pipeline: + - uses: git-checkout + with: + expected-commit: 9f38daa9169561ab0b5c0083e284c5f7bc417a3f + repository: https://github.com/socketry/protocol-http2 + tag: v${{package.version}} + + - uses: ruby/build + with: + gem: ${{vars.gem}} + + - uses: ruby/install + with: + gem: ${{vars.gem}} + version: ${{package.version}} + + - uses: ruby/clean + +update: + enabled: true + github: + identifier: socketry/protocol-http2 + strip-prefix: v + use-tag: true + +var-transforms: + - from: ${{package.name}} + match: ^ruby(\d\.\d+)-.* + replace: $1 + to: rubyMM + +test: + environment: + contents: + packages: + - ruby${{vars.rubyMM}}-protocol-hpack + - ruby${{vars.rubyMM}}-protocol-http + pipeline: + - name: Basic require test + runs: | + ruby -e "require 'protocol/http2'; puts 'HTTP/2 protocol library loaded successfully!'" + - name: Test frame handling + runs: | + ruby <<-EOF + require 'protocol/http2' + require 'stringio' + + # Create a data frame with actual payload + payload = "Hello, HTTP/2" + frame = Protocol::HTTP2::DataFrame.new + frame.pack(payload) + + # Create buffer for writing + buffer = StringIO.new + frame.write(buffer) + + raise "Frame encoding failed" if buffer.string.empty? + raise "Invalid frame length" unless frame.length == payload.length + + puts "Frame handling test passed!" + EOF diff --git a/ruby4.0-protocol-url.yaml b/ruby4.0-protocol-url.yaml new file mode 100644 index 00000000000..c354a93a163 --- /dev/null +++ b/ruby4.0-protocol-url.yaml @@ -0,0 +1,86 @@ +package: + name: ruby4.0-protocol-url + version: 0.4.0 + epoch: 0 + description: Provides abstractions for working with URLs. + copyright: + - license: MIT + dependencies: + runtime: + - ruby-${{vars.rubyMM}} + +environment: + contents: + packages: + - build-base + - busybox + - ca-certificates-bundle + - git + - ruby-${{vars.rubyMM}} + - ruby-${{vars.rubyMM}}-dev + +vars: + gem: protocol-url + +pipeline: + - uses: git-checkout + with: + expected-commit: 623d8d9341a64bd7b894a92b0b624a56cd27e93b + repository: https://github.com/socketry/protocol-url + tag: v${{package.version}} + + - uses: ruby/build + with: + gem: ${{vars.gem}} + + - uses: ruby/install + with: + gem: ${{vars.gem}} + version: ${{package.version}} + + - uses: ruby/clean + +update: + enabled: true + github: + identifier: socketry/protocol-url + strip-prefix: v + use-tag: true + +test: + environment: + contents: + packages: + - ruby-${{vars.rubyMM}} + pipeline: + - uses: test/tw/gem-check + - name: Verify library loading + runs: | + ruby -e "require 'protocol/url'; puts 'Successfully loaded gem'" + - name: Test URL parsing and manipulation + runs: | + ruby <<-EOF + require 'protocol/url' + + # Test parsing an absolute URL using Protocol::URL[] + url = Protocol::URL["https://example.com/path?query=value#fragment"] + raise "Failed to parse URL" if url.nil? + raise "Expected Absolute URL" unless url.is_a?(Protocol::URL::Absolute) + + # Test parsing a relative URL + relative = Protocol::URL["/path/to/resource"] + raise "Failed to parse relative URL" if relative.nil? + raise "Expected Relative URL" unless relative.is_a?(Protocol::URL::Relative) + + # Test that nil is returned for nil input + result = Protocol::URL[nil] + raise "Expected nil for nil input" unless result.nil? + + puts "All tests passed!" + EOF + +var-transforms: + - from: ${{package.name}} + match: ^ruby(\d\.\d+)-.* + replace: $1 + to: rubyMM diff --git a/ruby4.0-pry.yaml b/ruby4.0-pry.yaml new file mode 100644 index 00000000000..8504eb4d423 --- /dev/null +++ b/ruby4.0-pry.yaml @@ -0,0 +1,63 @@ +# Generated from https://github.com/pry/pry +package: + name: ruby4.0-pry + version: 0.15.2 + epoch: 0 + description: A runtime developer console and IRB alternative with powerful introspection capabilities + copyright: + - license: MIT + dependencies: + runtime: + - ruby${{vars.rubyMM}}-coderay + - ruby${{vars.rubyMM}}-method_source + +environment: + contents: + packages: + - build-base + - busybox + - ca-certificates-bundle + - git + - ruby-${{vars.rubyMM}} + - ruby-${{vars.rubyMM}}-dev + +pipeline: + - uses: git-checkout + with: + expected-commit: 2c89b65855b1519947cdb4855e6814637397f8eb + repository: https://github.com/pry/pry + tag: v${{package.version}} + + - uses: ruby/build + with: + gem: ${{vars.gem}} + + - uses: ruby/install + with: + gem: ${{vars.gem}} + version: ${{package.version}} + + - uses: ruby/clean + +vars: + gem: pry + +update: + enabled: true + github: + identifier: pry/pry + strip-prefix: v + use-tag: true + +test: + pipeline: + # AUTOGENERATED + - runs: | + pry --version + pry --help + +var-transforms: + - from: ${{package.name}} + match: ^ruby(\d\.\d+)-.* + replace: $1 + to: rubyMM diff --git a/ruby4.0-psych.yaml b/ruby4.0-psych.yaml new file mode 100644 index 00000000000..c66d9b42266 --- /dev/null +++ b/ruby4.0-psych.yaml @@ -0,0 +1,61 @@ +# Generated from https://github.com/ruby/psych +package: + name: ruby4.0-psych + version: "5.3.1" + epoch: 0 + description: Psych is a YAML parser and emitter. + copyright: + - license: MIT + dependencies: + runtime: + - ruby${{vars.rubyMM}}-stringio + - ruby-${{vars.rubyMM}} + +environment: + contents: + packages: + - build-base + - busybox + - ca-certificates-bundle + - git + - ruby-${{vars.rubyMM}} + - ruby-${{vars.rubyMM}}-dev + - yaml-dev + +pipeline: + - uses: git-checkout + with: + repository: https://github.com/ruby/psych.git + tag: v${{package.version}} + expected-commit: 8345af9ffbac73aa53a9513efa222c5fa267cc48 + + - uses: ruby/build + with: + gem: ${{vars.gem}} + + - uses: ruby/install + with: + gem: ${{vars.gem}} + version: ${{package.version}} + + - uses: ruby/clean + +vars: + gem: psych + +test: + pipeline: + - runs: ruby -e "require 'psych'" + - uses: test/tw/ldd-check + +update: + enabled: true + github: + identifier: ruby/psych + strip-prefix: v + +var-transforms: + - from: ${{package.name}} + match: ^ruby(\d\.\d+)-.* + replace: $1 + to: rubyMM diff --git a/ruby4.0-public_suffix.yaml b/ruby4.0-public_suffix.yaml new file mode 100644 index 00000000000..f5c634bdc79 --- /dev/null +++ b/ruby4.0-public_suffix.yaml @@ -0,0 +1,58 @@ +package: + name: ruby4.0-public_suffix + version: "7.0.0" + epoch: 0 + description: PublicSuffix can parse and decompose a domain name into top level domain, domain and subdomains. + copyright: + - license: MIT + +environment: + contents: + packages: + - build-base + - busybox + - ca-certificates-bundle + - git + - ruby-${{vars.rubyMM}} + - ruby-${{vars.rubyMM}}-dev + +pipeline: + - uses: git-checkout + with: + repository: https://github.com/weppos/publicsuffix-ruby + tag: v${{package.version}} + expected-commit: af45298523be055dd86ec9d7bac1bb26621ddbb2 + + - uses: ruby/build + with: + gem: ${{vars.gem}} + + - uses: ruby/install + with: + gem: ${{vars.gem}} + version: ${{package.version}} + + - uses: ruby/clean + +vars: + gem: public_suffix + +update: + enabled: true + ignore-regex-patterns: + - thesis-naive + github: + identifier: weppos/publicsuffix-ruby + strip-prefix: v + use-tag: true + tag-filter: v + +var-transforms: + - from: ${{package.name}} + match: ^ruby(\d\.\d+)-.* + replace: $1 + to: rubyMM + +test: + pipeline: + - uses: test/tw/gem-check