diff options
author | Nicolas Graves <ngraves@ngraves.fr> | 2025-06-05 03:13:25 +0200 |
---|---|---|
committer | Andreas Enge <andreas@enge.fr> | 2025-06-20 20:40:02 +0200 |
commit | 01ad0cf43ea778e59e8fd7ed3cf03d809d920639 (patch) | |
tree | 69446c1788b8e9cb203148b5a7f19dd8f7cd9136 /gnu/packages/ruby.scm | |
parent | 6fe1237ce6b437732d936546048dc256f34b32ad (diff) |
gnu: ruby: Populating (gnu packages ruby-check/ruby-xyz).
* gnu/packages/ruby.scm: Move all packages except different versions
of ruby and mruby, to either (gnu packages ruby-check) or
(gnu packages ruby-xyz).
* gnu/packages/ruby-check.scm (bundler, ruby-builder, ruby-cucumber-ci-environment,
ruby-cucumber-compatibility-kit,
ruby-cucumber-compatibility-kit-bootstrap, ruby-cucumber-core,
ruby-cucumber-expressions, ruby-cucumber-gherkin,
ruby-cucumber-html-formatter, ruby-cucumber-messages,
ruby-cucumber-tag-expressions, ruby-cucumber-wire, ruby-diff-lcs,
ruby-docile, ruby-fivemat, ruby-given-core, ruby-hoe, ruby-hoe-3,
ruby-json, ruby-mime-types, ruby-mime-types-data, ruby-mini-portile,
ruby-mini-portile-2, ruby-minitest, ruby-minitest-bonus-assertions,
ruby-minitest-focus, ruby-minitest-hooks, ruby-minitest-moar,
ruby-multi-test, ruby-rake, ruby-rake-compiler,
ruby-rake-compiler-dock, ruby-rspec, ruby-rspec-2, ruby-rspec-core,
ruby-rspec-core-2, ruby-rspec-expectations, ruby-rspec-expectations-2,
ruby-rspec-mocks, ruby-rspec-mocks-2, ruby-rspec-support, ruby-sequel,
ruby-simplecov-json-formatter, ruby-simplecov, ruby-simplecov-html,
ruby-sorcerer, ruby-unindent): Moved from (gnu packages ruby).
(ruby-asciidoctor/minimal): New variable, to allow more minimal
import of only (gnu packages ruby-check) in a lot of modules.
(ruby-rubocop/minimal): New variable to build cucumber with a lot
less dependencies.
(cucumber-ruby-core)[native-inputs]: Replace ruby-rubocop by
ruby-rubocop/minimal. Remove ruby-coveralls.
* gnu/packages/ruby-xyz.scm: Move all other packages from
(gnu packages ruby).
* gnu/packages/admin.scm
* gnu/packages/bioinformatics.scm
* gnu/packages/databases.scm
* gnu/packages/emacs-xyz.scm
* gnu/packages/gnome-xyz.scm
* gnu/packages/gnome.scm
* gnu/packages/groff.scm
* gnu/packages/kde-systemtools.scm
* gnu/packages/libffi.scm
* gnu/packages/mail.scm
* gnu/packages/maths.scm
* gnu/packages/mpd.scm
* gnu/packages/ntp.scm
* gnu/packages/package-management.scm
* gnu/packages/plotutils.scm
* gnu/packages/protobuf.scm
* gnu/packages/rails.scm
* gnu/packages/ruby-check.scm
* gnu/packages/ruby-xyz.scm
* gnu/packages/ruby.scm
* gnu/packages/shellutils.scm
* gnu/packages/statistics.scm
* gnu/packages/tex.scm
* gnu/packages/virtualization.scm:
Adapt module imports accordingly.
* gnu/packages/backup.scm (btrbk):
* gnu/packages/ccache.scm (ccache):
* gnu/packages/cluster.scm (drbd-utils):
* gnu/packages/compton.scm (picom):
* gnu/packages/cryptsetup.scm (cryptsetup):
* gnu/packages/engineering.scm (kicad-doc):
* gnu/packages/games.scm (warzone2100):
* gnu/packages/irc.scm (open-adventure):
* gnu/packages/ntp.scm (weechat):
* gnu/packages/password-utils.scm (keepassxc):
* gnu/packages/radio.scm (wsjtx, jtdx):
* gnu/packages/syndication.scm (newsboat):
* gnu/packages/task-management.scm (timewarrior):
* gnu/packages/version-control.scm (git-lfs):
[native-inputs]: Replace ruby-asciidoctor by
ruby-asciidoctor/minimal. Adapt module imports accordingly.
* gnu/packages/text-editors.scm: Remove (gnu packages ruby) import.
Signed-off-by: Andreas Enge <andreas@enge.fr>
Diffstat (limited to 'gnu/packages/ruby.scm')
-rw-r--r-- | gnu/packages/ruby.scm | 17767 |
1 files changed, 12 insertions, 17755 deletions
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 105ac485fc..d7341d8f97 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -1,41 +1,20 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014, 2015 Pjotr Prins <pjotr.guix@thebird.nl> -;;; Copyright © 2014-2017, 2021-2022, 2024 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org> -;;; Copyright © 2014, 2015 David Thompson <davet@gnu.org> +;;; Copyright © 2015-2018 Ben Woodcroft <donttrustben@gmail.com> +;;; Copyright © 2015 David Thompson <davet@gnu.org> ;;; Copyright © 2015, 2019 Ricardo Wurmus <rekado@elephly.net> -;;; Copyright © 2015, 2016, 2017 Ben Woodcroft <donttrustben@gmail.com> -;;; Copyright © 2017 Nikita <nikita@n0.is> -;;; Copyright © 2017, 2019-2022 Marius Bakke <marius@gnu.org> -;;; Copyright © 2017-2025 Efraim Flashner <efraim@flashner.co.il> -;;; Copyright © 2017, 2018, 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr> -;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org> -;;; Copyright © 2017, 2018, 2019 Christopher Baines <mail@cbaines.net> -;;; Copyright © 2018 Vasile Dumitrascu <va511e@yahoo.com> -;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com> -;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz> -;;; Copyright © 2019 Mikhail Kirillov <w96k.ru@gmail.com> +;;; Copyright © 2018 Danny Milosavljevic <dannym@scratchpost.org> +;;; Copyright © 2019, 2020 Christopher Baines <mail@cbaines.net> ;;; Copyright © 2019 Jelle Licht <jlicht@fsfe.org> -;;; Copyright © 2019 Brian Leung <bkleung89@gmail.com> -;;; Copyright © 2019 Collin J. Doering <collin@rekahsoft.ca> -;;; Copyright © 2019 Diego N. Barbato <dnbarbato@posteo.de> -;;; Copyright © 2019 Brett Gilio <brettg@posteo.de> ;;; Copyright © 2020, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com> -;;; Copyright © 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr> -;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de> -;;; Copyright © 2020 Holgr Peters <holger.peters@posteo.de> -;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org> -;;; Copyright © 2021 EuAndreh <eu@euandre.org> -;;; Copyright © 2020 Tomás Ortín Fernández <tomasortin@mailbox.org> -;;; Copyright © 2021 Giovanni Biscuolo <g@xelera.eu> -;;; Copyright © 2022 Philip McGrath <philip@philipmcgrath.com> -;;; Copyright © 2022-2025 Remco van 't Veer <remco@remworks.net> -;;; Copyright © 2022 Taiju HIGASHI <higashi@taiju.info> -;;; Copyright © 2023 Yovan Naumovski <yovan@gorski.stream> -;;; Copyright © 2023, 2024 gemmaro <gemmaro.dev@gmail.com> -;;; Copyright © 2023, 2024 Janneke Nieuwenhuizen <janneke@gnu.org> -;;; Copyright © 2023, 2024 Zheng Junjie <873216071@qq.com> -;;; Copyright © 2023, 2024 Hartmut Goebel <h.goebel@crazy-compilers.com> +;;; Copyright © 2020 Ryan Prior <rprior@protonmail.com> +;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2021 Marius Bakke <marius@gnu.org> +;;; Copyright © 2023 Christopher Baines <mail@cbaines.net> +;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org> +;;; Copyright © 2023 Zheng Junjie <873216071@qq.com> ;;; Copyright © 2025 Nicolas Graves <ngraves@ngraves.fr> ;;; ;;; This file is part of GNU Guix. @@ -96,7 +75,6 @@ #:use-module (gnu packages web-browsers) #:use-module (gnu packages serialization) #:use-module (guix packages) - #:use-module (guix deprecation) #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix gexp) @@ -105,15 +83,7 @@ #:use-module (guix build-system gnu) #:use-module (gnu packages xml) #:use-module (gnu packages web) - #:use-module (guix build-system ruby) - #:use-module ((srfi srfi-1) #:select (alist-delete))) - -(define %prawn-project-licenses - ;; This set of licenses applies to most (all?) components of the Prawn - ;; project (it is triple licensed). - (list license:ruby - license:gpl2+ - license:gpl3+)) + #:use-module (guix build-system ruby)) (define-public ruby-3.4 (package @@ -349,17719 +319,6 @@ language. Its syntax is Ruby 3.x compatible except for pattern matching. mruby can be linked and embedded within your application.") (license license:expat))) -(define-public ruby-commander - (package - (name "ruby-commander") - (version "4.6.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "commander" version)) - (sha256 - (base32 - "1n8k547hqq9hvbyqbx2qi08g0bky20bbjca1df8cqq5frhzxq7bx")))) - (build-system ruby-build-system) - (arguments - (list - #:test-target "spec" - #:phases - #~(modify-phases %standard-phases - ;; Don't run or require rubocop, the code linting tool, as this is a - ;; bit unnecessary. - (add-after 'unpack 'dont-run-rubocop - (lambda _ - (substitute* "Rakefile" - ((".*rubocop.*") "") - ((".*RuboCop.*") ""))))))) - (propagated-inputs - (list ruby-highline)) - (native-inputs - (list bundler ruby-rspec-core ruby-rspec-expectations - ruby-rspec-mocks ruby-simplecov)) - (home-page "https://github.com/commander-rb/commander") - (synopsis "Library for building Ruby command-line executables") - (description - "Commander aims to be a complete solution for Ruby command-line -executables. Commander bridges the gap between other terminal related -libraries (OptionParser, HighLine), while providing many new features, and an -elegant API.") - (license license:expat))) - -(define-public ruby-highline - (package - (name "ruby-highline") - (version "2.0.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "highline" version)) - (sha256 - (base32 - "0gr6pckj2jayxw1gdgh9193j5jag5zrrqqlrnl4jvcwpyd3sn2zc")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f)) ;; TODO: NameError: uninitialized constant SPEC - (native-inputs - (list bundler ruby-code-statistics)) - (synopsis - "HighLine helps you build command-line interfaces") - (description - "HighLine provides a high-level IO library that provides validation, -type conversion, and more for command-line interfaces. HighLine also includes -a menu system for providing multiple options to the user.") - (home-page "https://github.com/JEG2/highline") - (license (list license:gpl2 license:ruby)))) - -(define-public ruby-hoe - (package - (name "ruby-hoe") - (version "4.2.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "hoe" version)) - (sha256 - (base32 - "1rhj1zs02mpdw6f4fh3mpfmj0p5pfar7rfxm758pk7l931mm8pyn")))) - (build-system ruby-build-system) - (arguments - (list - ;; Circular dependency with minitest - #:tests? #f)) - (synopsis "Ruby project management helper") - (description - "Hoe is a rake/rubygems helper for project Rakefiles. It helps manage, -maintain, and release projects and includes a dynamic plug-in system allowing -for easy extensibility. Hoe ships with plug-ins for all the usual project -tasks including rdoc generation, testing, packaging, deployment, and -announcement.") - (home-page "https://www.zenspider.com/projects/hoe.html") - (license license:expat))) - -(define-public ruby-hoe-3 - (package - (inherit ruby-hoe) - (version "3.26.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "hoe" version)) - (sha256 - (base32 - "02vmphnfzna1dbb1l5nczcvlvvsg4flr26bdhmvdyf447bpswa63")))))) - -(define-public ruby-rake-compiler - (package - (name "ruby-rake-compiler") - (version "1.2.9") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rake-compiler" version)) - (sha256 - (base32 - "01rnl94p1sr84xkbnh66db42qsndykbfx2z2fggxyxx9vnji6cjs")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; needs cucumber - (synopsis "Building and packaging helper for Ruby native extensions") - (description "Rake-compiler provides a framework for building and -packaging native C and Java extensions in Ruby.") - (home-page "https://github.com/rake-compiler/rake-compiler") - (license license:expat))) - -(define-public ruby-rake-compiler-dock - (package - (name "ruby-rake-compiler-dock") - (version "1.3.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rake-compiler-dock" version)) - (sha256 - (base32 - "0yr5f72irvhmnk12q7bbr4qw0xwy7diqkbcvb4lygjbg7rvk3k8k")))) - (build-system ruby-build-system) - (arguments (list #:tests? #f)) ;test suite requires docker - (synopsis "Cross compiler environment for building Ruby gems") - (description "The code{rake-compiler-dock} gem provides a cross compiler -environment for building gems on a variety of platforms (GNU/Linux, JRuby, -Windows and Mac).") - (home-page "https://github.com/rake-compiler/rake-compiler-dock") - (license license:expat))) - -(define-public ruby-rsync - (package - (name "ruby-rsync") - (version "1.0.9") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "rsync" version)) - (sha256 - (base32 - "0p8b27q1gvxilqfq2528xpwglzcm2myikkjxpqk7mwbwg9r6knxv")))) - (build-system ruby-build-system) - (arguments - '(#:test-target "spec" - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'remove-coveralls-requirement - (lambda _ - (substitute* "spec/spec_helper.rb" - (("require 'coveralls'") "") - (("Coveralls.wear!") ""))))))) - (native-inputs - (list bundler rsync ruby-rspec-core ruby-rspec-expectations - ruby-rspec-mocks)) - (home-page "https://github.com/jbussdieker/ruby-rsync") - (synopsis "Ruby wrapper around rsync") - (description - "Ruby Rsync is a Ruby library that can synchronize files between remote -hosts by wrapping the @file{rsync} binary.") - (license license:expat))) - -(define-public ruby-i18n - (package - (name "ruby-i18n") - (version "1.13.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "i18n" version)) - (sha256 - (base32 - "1yk33slipi3i1kydzrrchbi7cgisaxym6pgwlzx7ir8vjk6wl90x")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; no tests - (propagated-inputs `(("concurrent-ruby" ,ruby-concurrent))) - (synopsis "Internationalization library for Ruby") - (description "Ruby i18n is an internationalization and localization -solution for Ruby programs. It features translation and localization, -interpolation of values to translations, pluralization, customizable -transliteration to ASCII, flexible defaults, bulk lookup, lambdas as -translation data, custom key/scope separator, custom exception handlers, and -an extensible architecture with a swappable backend.") - (home-page "https://github.com/ruby-i18n/i18n") - (license license:expat))) - -(define-public ruby-ice-nine - (package - (name "ruby-ice-nine") - (version "0.11.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "ice_nine" version)) - (sha256 - (base32 "1nv35qg1rps9fsis28hz2cq2fx1i96795f91q4nmkm934xynll2x")))) - (build-system ruby-build-system) - (arguments - (list #:tests? #f)) ;Dependency on convoluted unpackaged ruby-devtools. - (synopsis "Deep Freeze Ruby Objects") - (description - "This package provides a function to deep freeze Ruby objects.") - (home-page "https://github.com/dkubb/ice_nine") - (license license:expat))) - -(define-public ruby-io-console - (package - (name "ruby-io-console") - (version "0.6.0") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/ruby/io-console/") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0gwxrp29b6awkid1sf85sbh529mnq6hb86m8c2443cm6nc4vr8qb")))) - (build-system ruby-build-system) - (arguments - (list #:phases #~(modify-phases %standard-phases - (add-after 'unpack 'delete-rakelib-files - (lambda _ - ;; These depend on git and other extraneous - ;; dependencies, and are loaded by rake. - (delete-file-recursively "rakelib")))))) - (native-inputs (list ruby-rake-compiler)) - (synopsis "Console capabilities library for IO instances") - (description "IO.console adds console capabilities to Ruby IO instances.") - (home-page "https://github.com/ruby/io-console") - (license license:bsd-2))) - -(define-public ruby-irb - (package - (name "ruby-irb") - (version "1.6.3") - (source (origin - (method url-fetch) - (uri (rubygems-uri "irb" version)) - (sha256 - (base32 - "1h9s07n5v3z029v18924ws9vdkdc80n6llp9ccx77yg1krv2g0f3")))) - (build-system ruby-build-system) - ;; XXX: Disable the test suite, as it requires debug, which requires this - ;; package (dependency cycle). - (arguments (list #:tests? #f)) - (propagated-inputs (list ruby-reline)) - (synopsis "Ruby command-line tool for REPL (Read Eval Print Loop)") - (description "IRB is an interactive Ruby command-line tool for REPL (Read -Eval Print Loop).") - (home-page "https://github.com/ruby/irb") - (license license:bsd-2))) - -(define-public ruby-irb-1.1.1 - (package - (inherit ruby-irb) - (version "1.1.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "irb" version)) - (sha256 - (base32 - "0h605w798s2bg9wg681ynvvzgdz1yy69gh387bl0khw9ll7wkn8v")))))) - -(define-public ruby-iruby - (package - (name "ruby-iruby") - (version "0.3") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "iruby" version)) - (sha256 - (base32 - "1wdf2c0x8y6cya0n3y0p3p7b1sxkb2fdavdn2k58rf4rs37s7rzn")))) - (build-system ruby-build-system) - (arguments - ;; TODO: Tests currently fail. - ;; - ;; Finished in 1.764405s, 1.1335 runs/s, 5.1009 assertions/s. - ;; - ;; 1) Failure: - ;; IntegrationTest#test_interaction [/tmp/guix-build-ruby-iruby-0.3.drv-0/gem/test/integration_test.rb:25]: - ;; In [ expected - ;; - ;; 2 runs, 9 assertions, 1 failures, 0 errors, 0 skips - '(#:tests? #f - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-ipython - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "lib/iruby/command.rb" - (("version = `") - (string-append - "version = `" - (assoc-ref inputs "python-ipython") - "/bin/")) - (("Kernel\\.exec\\('") - (string-append - "Kernel.exec('" - (assoc-ref inputs "python-ipython") - "/bin/")))))))) - (inputs - (list python-ipython)) - (propagated-inputs - (list ruby-bond - ruby-data_uri - ruby-mimemagic - ruby-multi-json - ruby-cztop - ;; Optional inputs - ruby-pry)) - (synopsis "Ruby kernel for Jupyter/IPython") - (description - "This package provides a Ruby kernel for Jupyter/IPython frontends (e.g. -notebook).") - (home-page "https://github.com/SciRuby/iruby") - (license license:expat))) - -;; RSpec is the dominant testing library for Ruby projects. Even RSpec's -;; dependencies use RSpec for their test suites! To avoid these circular -;; dependencies, we disable tests for all of the RSpec-related packages. -(define-public ruby-rspec-support - (package - (name "ruby-rspec-support") - (version "3.13.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rspec-support" version)) - (sha256 - (base32 - "1v6v6xvxcpkrrsrv7v1xgf7sl0d71vcfz1cnrjflpf6r7x3a58yf")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; avoid dependency cycles - (synopsis "RSpec support library") - (description "Support utilities for RSpec gems.") - (home-page "https://github.com/rspec/rspec-support") - (license license:expat))) - -(define-public ruby-rspec-core - (package - (name "ruby-rspec-core") - (version "3.13.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rspec-core" version)) - (sha256 - (base32 - "001kazj244cb6fbkmh7ap74csbr78717qaskqzqpir1q8xpdmywl")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; avoid dependency cycles - (propagated-inputs - (list ruby-rspec-support)) - (synopsis "RSpec core library") - (description "Rspec-core provides the RSpec test runner and example -groups.") - (home-page "https://github.com/rspec/rspec-core") - (license license:expat))) - -(define-public ruby-rspec-core-2 - (package (inherit ruby-rspec-core) - (version "2.14.8") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rspec-core" version)) - (sha256 - (base32 - "0psjy5kdlz3ph39br0m01w65i1ikagnqlg39f8p65jh5q7dz8hwc")))) - (arguments - (cons* - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'patch - (lambda _ - (substitute* "lib/rspec/core/ruby_project.rb" - (("File\\.exists\\?") "File.exist?"))))) - (package-arguments ruby-rspec-core))) - (propagated-inputs `()))) - -(define-public ruby-date - (package - (name "ruby-date") - (version "3.3.3") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/ruby/date") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1jiqjnaap1jk1r8z37iicnzqha1rhc713qmcir17f4vnz8ac8v75")))) - (build-system ruby-build-system) - (arguments (list #:test-target "default")) - (native-inputs (list ruby-rake-compiler)) - (synopsis "Ruby @code{Object} subclass with date comparison capability") - (description "This package provides a subclass of @code{Object} that -includes the @code{Comparable} module for handling dates.") - (home-page "https://github.com/ruby/date") - (license license:bsd-2))) - -(define-public ruby-time - (package - (name "ruby-time") - (version "0.3.0") - (source (origin - (method git-fetch) ; for tests - (uri (git-reference - (url "https://github.com/ruby/time") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0jd6df2lxd60wcxyaf37j8v3nnfn952d5xhg6aap9zlcdmkk4g2n")))) - (build-system ruby-build-system) - (propagated-inputs (list ruby-date)) - (native-inputs (list ruby-test-unit-ruby-core)) - (synopsis - "Extends the Time class with methods for parsing and conversion") - (description - "When this gem is @code{require}d, it extends the Time class with with -additional methods for parsing and converting Times.") - (home-page "https://github.com/ruby/time") - (license license:bsd-2))) - -(define-public ruby-diff-lcs - (package - (name "ruby-diff-lcs") - (version "1.3") - (source (origin - (method url-fetch) - (uri (rubygems-uri "diff-lcs" version)) - (sha256 - (base32 - "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; avoid dependency cycles - (synopsis "Compute the difference between two Enumerable sequences") - (description "Diff::LCS computes the difference between two Enumerable -sequences using the McIlroy-Hunt longest common subsequence (LCS) algorithm. -It includes utilities to create a simple HTML diff output format and a -standard diff-like tool.") - (home-page "https://github.com/halostatue/diff-lcs") - (license license:expat))) - -(define-public ruby-rspec-expectations - (package - (name "ruby-rspec-expectations") - (version "3.13.3") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rspec-expectations" version)) - (sha256 - (base32 - "0n3cyrhsa75x5wwvskrrqk56jbjgdi2q1zx0irllf0chkgsmlsqf")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; avoid dependency cycles - (propagated-inputs - (list ruby-diff-lcs ruby-rspec-support)) - (synopsis "RSpec expectations library") - (description "Rspec-expectations provides a simple API to express expected -outcomes of a code example.") - (home-page "https://github.com/rspec/rspec-expectations") - (license license:expat))) - -(define-public ruby-rspec-expectations-2 - (package (inherit ruby-rspec-expectations) - (version "2.14.5") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rspec-expectations" version)) - (sha256 - (base32 - "1ni8kw8kjv76jvwjzi4jba00k3qzj9f8wd94vm6inz0jz3gwjqf9")))) - (propagated-inputs - (list ruby-diff-lcs)))) - -(define-public ruby-sorcerer - (package - (name "ruby-sorcerer") - (version "2.0.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "sorcerer" version)) - (sha256 - (base32 - "0d32ha9pp9slpmsm027pkdpbr9vc5jn2m8rl6hwwx6a87m8cr58h")))) - (build-system ruby-build-system) - (synopsis "Ripper-style abstract syntax tree to Ruby source generator") - (description "Sorcerer generates Ruby code from a Ripper-like abstract -syntax tree (i.e. S-Expressions). Sorcerer is targeted mainly at small -snippets of Ruby code, expressible in a single line. Longer examples may be -re-sourced, but they will be rendered in a single-line format.") - (home-page "https://github.com/rspec-given/sorcerer") - (license license:expat))) - -(define-public ruby-sorted-set - (package - (name "ruby-sorted-set") - (version "1.0.3") - (source (origin - (method url-fetch) - (uri (rubygems-uri "sorted_set" version)) - (sha256 - (base32 - "0brpwv68d7m9qbf5js4bg8bmg4v7h4ghz312jv9cnnccdvp8nasg")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-rbtree ruby-set)) - (synopsis - "Ruby Set variant whose elements are sorted in ascending order") - (description - "This package implements a variant of Set whose elements are sorted in -ascending order") - (home-page "https://github.com/knu/sorted_set") - (license license:bsd-2))) - -(define-public ruby-given-core - (package - (name "ruby-given-core") - (version "3.8.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "given_core" version)) - (sha256 - (base32 - "0w1pyhgb2am7c267s8v06dpd9qhmsk2x4hfr2aq8l8lh49ma227s")))) - (build-system ruby-build-system) - (arguments '(#:tests? #f)) ;no test suite for the core package - (propagated-inputs - (list ruby-sorcerer)) - (synopsis "Core abstractions used by rspec-given and minitest-given") - (description "Given_core is the basic functionality behind rspec-given and -minitest-given, extensions that allow the use of Given/When/Then terminology -when defining specifications.") - (home-page "https://github.com/rspec-given/rspec-given") - (license license:expat))) - -(define-public ruby-rspec-given - (package - (name "ruby-rspec-given") - (version "3.8.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "rspec-given" version)) - (sha256 - (base32 - "0xzzxjjzwrsp84p12sd6ab3jbm9kh7sbnqpxgc9mlfq3s3ll0fdj")))) - (build-system ruby-build-system) - (arguments - `(#:test-target "rs" - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'fix-rakefile - (lambda _ - (substitute* '("Rakefile" "rakelib/gemspec.rake") - (("require '\\./lib/given/.*") "") - (("Given::VERSION") (format #f "~s" ,version)) - ;; Fix the error: "cannot load such file -- example_helper" - (("sh \"rspec") - "sh \"rspec -Ilib:examples")))) - (add-after 'extract-gemspec 'delete-failing-tests - ;; See: https://github.com/jimweirich/rspec-given/issues/57. - (lambda _ - (substitute* ".gemspec" - (("\"spec/lib/given/natural_assertion_spec.rb\".freeze, ") - "") - (("\"examples/integration/failing_messages_spec.rb\".freeze, ") - "")) - (delete-file "spec/lib/given/natural_assertion_spec.rb") - (delete-file "examples/integration/failing_messages_spec.rb")))))) - (native-inputs - (list ruby-rspec ruby-minitest)) - (propagated-inputs - (list ruby-given-core ruby-rspec)) - (synopsis "Given/When/Then for RSpec and Minitest") - (description "Given is an RSpec extension that allows the use of -Given/When/Then terminology when defining specifications, in a way similar to -the Cucumber Gherkin language.") - (home-page "https://github.com/rspec-given/rspec-given") - (license license:expat))) - -(define-public ruby-rspec-its - (package - (name "ruby-rspec-its") - (version "1.3.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/rspec/rspec-its") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "02mlsc9d4d1cjj5vahi8v3q8hyn9fyiv8nnlidhgfh186qp20g1p")))) - (build-system ruby-build-system) - (arguments - `(#:test-target "spec" - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'dont-install-gems-from-gemfile - (lambda _ - (substitute* "Gemfile" - (("rspec rspec-core rspec-expectations rspec-mocks rspec-support") - "")))) - (add-before 'build 'loosen-ffi-requirement - (lambda _ - ;; Accept any version of ruby-ffi. - (substitute* "Gemfile" - ((" gem 'ffi', '~> 1\\.9\\.25'") - " gem 'ffi'")))) - (add-before 'build 'remove-unnecessary-dependency-versions-from-gemfile - (lambda _ - (substitute* "rspec-its.gemspec" - (("rake.*") "rake'\n") - (("spec.add_development_dependency 'cucumber'.*") - "spec.add_development_dependency 'cucumber'\n") - (("bundler.*") "bundler'\n") - (("\"aruba.*") "'aruba'\n"))))))) - (propagated-inputs - (list ruby-rspec-core ruby-rspec-expectations)) - (native-inputs - (list bundler ruby-cucumber ruby-ffi ruby-aruba)) - (synopsis "RSpec extension that provides the @code{its} method") - (description - "RSpec::Its provides the its method as a short-hand to specify the expected -value of an attribute. For example, one can use @code{its(:size)\\{should -eq(1)\\}}.") - (home-page "https://github.com/rspec/rspec-its") - (license license:expat))) - -;;; This variant is used to break a cycle with ruby-protobuf. -(define-public ruby-rspec-its-minimal - (hidden-package - (package - (inherit ruby-rspec-its) - (arguments - (substitute-keyword-arguments (package-arguments ruby-rspec-its) - ((#:tests? _ #f) #f))) - (native-inputs '())))) - -(define-public ruby-rspec-mocks - (package - (name "ruby-rspec-mocks") - (version "3.13.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rspec-mocks" version)) - (sha256 - (base32 - "1vxxkb2sf2b36d8ca2nq84kjf85fz4x7wqcvb8r6a5hfxxfk69r3")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; avoid dependency cycles - (propagated-inputs - (list ruby-diff-lcs ruby-rspec-support)) - (synopsis "RSpec stubbing and mocking library") - (description "Rspec-mocks provides RSpec's \"test double\" framework, with -support for stubbing and mocking.") - (home-page "https://github.com/rspec/rspec-mocks") - (license license:expat))) - -(define-public ruby-rspec-mocks-2 - (package (inherit ruby-rspec-mocks) - (version "2.14.6") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rspec-mocks" version)) - (sha256 - (base32 - "1fwsmijd6w6cmqyh4ky2nq89jrpzh56hzmndx9wgkmdgfhfakv30")))) - (propagated-inputs - (list ruby-diff-lcs)))) - -(define-public ruby-rspec-block-is-expected - (package - (name "ruby-rspec-block-is-expected") - (version "1.0.5") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/pboling/rspec-block_is_expected") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1zi5z12lkw3fiwgr7g61845wj73asr2vzw4zsjv45klnnfspwass")))) - (build-system ruby-build-system) - (arguments - (list #:phases #~(modify-phases %standard-phases - (add-after 'unpack 'relax-requirements - (lambda _ - (substitute* "Rakefile" - (("require 'rubocop/rake_task'") "") - (("RuboCop::RakeTask.new") "")) - ;; Contains extraneous requirements not actually - ;; needed for the test suite. - (delete-file "Gemfile"))) - (add-before 'build 'drop-signing-key-requirement - (lambda _ - (substitute* "rspec-block_is_expected.gemspec" - (("spec.signing_key =.*") - "spec.signing_key = nil"))))))) - (native-inputs (list ruby-rspec-pending-for ruby-rspec-expectations)) - (propagated-inputs (list ruby-rspec-core)) - (synopsis "Simplify testing of blocks in RSpec") - (description "This RSpec plugin allows you to use @code{block_is_expected} -similarly to how you would use @code{is_expected} if a block was wrapping the -subject.") - (home-page "https://github.com/pboling/rspec-block_is_expected") - (license license:expat))) - -(define-public ruby-rspec-pending-for - (package - (name "ruby-rspec-pending-for") - (version "0.1.16") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/pboling/rspec-pending_for") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "107l560vm0kx25w5iy5rsk9ly8dxzr81b31284j514f4hkd0qv3m")))) - (build-system ruby-build-system) - (native-inputs (list ruby-rspec ruby-simplecov)) - (propagated-inputs (list ruby-rspec-core ruby-ruby-engine - ruby-ruby-version)) - (synopsis "Skip RSpec tests for specific Ruby engines or versions") - (description "This RSpec plugin makes it easy to mark test cases as -pending or skipped for a specific Ruby engine (e.g. MRI or JRuby) or version -combinations.") - (home-page "https://github.com/pboling/rspec-pending_for") - (license license:expat))) - -(define-public ruby-rspec-rerun - (package - (name "ruby-rspec-rerun") - (version "1.1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "rspec-rerun" version)) - (sha256 - (base32 - "1gy7znkcaqhpccfnk2nvaqbsvgxy3q57cmjwkl9fi1zabaq5lbkj")))) - (build-system ruby-build-system) - (arguments - '(;; No included tests - #:tests? #f)) - (propagated-inputs (list ruby-rspec)) - (synopsis "Track failed RSpec tests to re-run them") - (description - "This package provides an automated way to track, and then re-run failed -RSpec tests.") - (home-page "https://github.com/dblock/rspec-rerun") - (license license:expat))) - -(define-public ruby-rspec-stubbed-env - ;; There is no release nor tag (see: - ;; https://github.com/pboling/rspec-stubbed_env/issues/7). - (let ((revision "0") - (commit "9d767dec77a6d130f6ad83c48a00a5c81b14b9fa")) - (package - (name "ruby-rspec-stubbed-env") - (version (git-version "1.0.0" revision commit)) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/pboling/rspec-stubbed_env") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1dy4m04h613dp0s59rknjd6h4lqs1h17mffc5kd8kh046mk8nr1p")))) - (build-system ruby-build-system) - (arguments - (list #:test-target "spec" - #:phases #~(modify-phases %standard-phases - (add-after 'unpack 'streamline-requirements - (lambda _ - ;; Remove extraneous development dependencies. - (substitute* "rspec-stubbed_env.gemspec" - ((".*bundler.*") "") - ((".*rubocop.*") ""))))))) - (native-inputs (list ruby-simplecov)) - (propagated-inputs (list ruby-rspec)) - (synopsis "RSpec plugin to stub environment variables") - (description - "This RSpec plugin can be used to stub environment variables in a scoped -context for testing.") - (home-page "https://github.com/pboling/rspec-stubbed_env") - (license license:expat)))) - -(define-public ruby-rspec-wait - (package - (name "ruby-rspec-wait") - (version "0.0.9") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "rspec-wait" version)) - (sha256 - (base32 - "0gvj1bp5ccx001dyvcgk2j49s5sl6vs9fdaqqb08z3bd1554hsww")))) - (build-system ruby-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda _ - (invoke "rake" "spec")))))) - (native-inputs - (list bundler)) - (propagated-inputs - (list ruby-rspec)) - (home-page "https://github.com/laserlemon/rspec-wait") - (synopsis "Wait for conditions in RSpec") - (description - "RSpec::Wait strives to make it easier to test asynchronous or slow -interactions.") - (license license:expat))) - -(define-public ruby-rspec - (package - (name "ruby-rspec") - (version "3.13.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rspec" version)) - (sha256 - (base32 - "14xrp8vq6i9zx37vh0yp4h9m0anx9paw200l1r5ad9fmq559346l")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; avoid dependency cycles - (propagated-inputs - (list ruby-rspec-core ruby-rspec-expectations ruby-rspec-mocks)) - (synopsis "Behavior-driven development framework for Ruby") - (description "RSpec is a behavior-driven development (BDD) framework for -Ruby. This meta-package includes the RSpec test runner, along with the -expectations and mocks frameworks.") - (home-page "https://rspec.info/") - (license license:expat))) - -(define-public ruby-rspec-2 - (package (inherit ruby-rspec) - (version "2.14.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rspec" version)) - (sha256 - (base32 - "134y4wzk1prninb5a0bhxgm30kqfzl8dg06af4js5ylnhv2wd7sg")))) - (propagated-inputs - (list ruby-rspec-core-2 ruby-rspec-mocks-2 ruby-rspec-expectations-2)))) - -(define-public ruby-rspec-debug - (package - (name "ruby-rspec-debug") - (version "0.2.0") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/ko1/rspec-debug") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "125p1zxjznkk765nyqvkksw8x1nbm7xk4sjc1wza2fyp5hvyiddn")))) - (build-system ruby-build-system) - (arguments - (list #:test-target "spec" - #:phases #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'relax-dependencies - (lambda _ - (substitute* "Gemfile" - (("~>") ">="))))))) - (native-inputs (list ruby-rspec)) - (propagated-inputs (list ruby-debug)) - (synopsis "Invoke Ruby debugger when spec fails") - (description "This package can be used to have the execution stopped for -inspection in the Ruby debugger upon encountering a failure. To use it, set -the @env{RSPEC_DEBUG} environment variable to @samp{true} then invoke the -@command{rspec} command as usual.") - (home-page "https://github.com/ko1/rspec-debug") - (license license:expat))) - -(define-public ruby-specinfra - (package - (name "ruby-specinfra") - (version "2.88.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "specinfra" version)) - (sha256 - (base32 - "07lap3sknncffpq9jw1x1mn9c5xxd058wxs5vnyz1y0lawdjfnsf")))) - (build-system ruby-build-system) - (propagated-inputs (list ruby-net-scp ruby-net-ssh ruby-net-telnet - ruby-sfl)) - (arguments - (list - #:test-target "spec" - #:phases - #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'relax-dependencies - (lambda _ - (substitute* "specinfra.gemspec" - (("%q<net-telnet>.freeze, \\[.*\\]") - "%q<net-telnet>.freeze, [\">= 0\"]"))))))) - (synopsis "Common layer for serverspec and itamae") - (description "This Gem provides a common layer for serverspec and -itamae.") - (home-page "https://github.com/mizzy/specinfra") - (license license:expat))) - -(define-public ruby-serverspec - (package - (name "ruby-serverspec") - (version "2.42.3") - (source (origin - (method url-fetch) - (uri (rubygems-uri "serverspec" version)) - (sha256 - (base32 - "0kfaqrqynly8n3dy5qrbjvx4lx6mk9a5vynwb7xwqj8bixm0mab4")))) - (build-system ruby-build-system) - (propagated-inputs (list ruby-multi-json ruby-rspec ruby-rspec-its - ruby-specinfra)) - (arguments - (list #:test-target "spec")) - (synopsis - "RSpec tests for servers configured by Puppet, Chef, Itamae, etc") - (description - "With Serverspec, you can write RSpec tests for checking your servers are -configured correctly. - -Serverspec tests your servers’ actual state by executing command locally, via -SSH, via WinRM, via Docker API and so on. So you don’t need to install any -agent softwares on your servers and can use any configuration management -tools, Puppet, Ansible, CFEngine, Itamae and so on. - -But the true aim of Serverspec is to help refactoring infrastructure code.") - (home-page "https://serverspec.org/") - (license license:expat))) - -;; Bundler is yet another source of circular dependencies, so we must disable -;; its test suite as well. -(define-public bundler - (package - (name "bundler") - (version "2.4.18") - (source (origin - (method url-fetch) - (uri (rubygems-uri "bundler" version)) - (sha256 - (base32 - "03ppd60cbwzlrhsidi7frj826ssmxzwd954ikjk7966l45qx5xxn")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; avoid dependency cycles - (synopsis "Ruby gem bundler") - (description "Bundler automatically downloads and installs a list of gems -specified in a \"Gemfile\", as well as their dependencies.") - (home-page "https://bundler.io/") - (license license:expat))) - -(define-public ruby-base64 - (package - (name "ruby-base64") - (version "0.2.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "base64" version)) - (sha256 - (base32 "01qml0yilb9basf7is2614skjp8384h2pycfx86cr8023arfj98g")))) - (build-system ruby-build-system) - (arguments '(#:tests? #f)) ; No tests bundled. - (synopsis "Base64 encoding/decoding in Ruby") - (description - "This package provides support for encoding and decoding binary data -using a Base64 representation.") - (home-page "https://github.com/ruby/base64") - (license (list license:bsd-2)))) - -(define-public ruby-builder - (package - (name "ruby-builder") - (version "3.2.4") - (source (origin - (method url-fetch) - (uri (rubygems-uri "builder" version)) - (sha256 - (base32 - "045wzckxpwcqzrjr353cxnyaxgf0qg22jh00dcx7z38cys5g1jlr")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'patch - (lambda _ - (substitute* "rakelib/tags.rake" - (("File\\.exists\\?") "File.exist?")) - - ;; TODO This test is broken - ;; https://github.com/tenderlove/builder/issues/13 - (substitute* "test/test_blankslate.rb" - (("test_late_included_module_in_kernel_is_ok") - "test_late_included_module_in_kernel_is_ok - skip(\"test expected to fail\") -")) - (substitute* "rakelib/tags.rake" - (("RVM_GEMDIR = .*") "RVM_GEMDIR = 'no-rvm-please'\n"))))))) - (synopsis "Ruby library to create structured data") - (description "Builder provides a number of builder objects that make it -easy to create structured data. Currently the following builder objects are -supported: XML Markup and XML Events.") - (home-page "https://github.com/tenderlove/builder") - (license license:expat))) - -(define-public ruby-bump - (package - (name "ruby-bump") - (version "0.7.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "bump" version)) - (sha256 - (base32 - "1xinbr9rzh6cj75x24niwgqcnbhdxc68a8bc41lk8xv6fd906fym")))) - (build-system ruby-build-system) - (arguments - '(;; No included tests - #:tests? #f)) - (synopsis "Tool for working with Rubygems") - (description - "Bump provides commands to manage Rubygem versioning, updating to the -next patch version for example.") - (home-page "https://github.com/gregorym/bump") - (license license:expat))) - -(define-public ruby-rjb - (package - (name "ruby-rjb") - (version "1.6.7") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rjb" version)) - (sha256 - (base32 - "0ck802bm8cklhmqsgzhsa0y8lg80qy52dp3m8rlld3zc5gv1rsb9")))) - (build-system ruby-build-system) - (arguments - (list - #:tests? #f ; no rakefile - #:phases - #~(modify-phases %standard-phases - (add-before 'build 'set-java-home - (lambda* (#:key inputs #:allow-other-keys) - (setenv "JAVA_HOME" (assoc-ref inputs "jdk"))))))) - (native-inputs - `(("jdk" ,icedtea "jdk"))) - (synopsis "Ruby-to-Java bridge using the Java Native Interface") - (description "RJB is a bridge program that connects Ruby and Java via the -Java Native Interface.") - (home-page "https://www.artonx.org/collabo/backyard/?RubyJavaBridge") - (license license:lgpl2.1+))) - -(define-public ruby-log4r - (package - (name "ruby-log4r") - (version "1.1.10") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "log4r" version)) - (sha256 - (base32 - "0ri90q0frfmigkirqv5ihyrj59xm8pq5zcmf156cbdv4r4l2jicv")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; no Rakefile in gem - (synopsis "Flexible logging library for Ruby") - (description "Comprehensive and flexible logging library written -in Ruby for use in Ruby programs. It features a hierarchical logging -system of any number of levels, custom level names, logger -inheritance, multiple output destinations per log event, execution -tracing, custom formatting, thread safteyness, XML and YAML -configuration, and more.") - (home-page "http://log4r.rubyforge.org/") - (license license:bsd-3))) - -(define-public ruby-atoulme-antwrap - (package - (name "ruby-atoulme-antwrap") - (version "0.7.5") - (source (origin - (method url-fetch) - (uri (rubygems-uri "atoulme-Antwrap" version)) - (sha256 - (base32 - "05s3iw44lqa81f8nfy5f0xjj808600h82zb9bsh46b9kcq2w2kmz")))) - (build-system ruby-build-system) - ;; Test data required for most of the tests are not included. - (arguments `(#:tests? #f)) - (native-inputs - (list ruby-hoe)) - (inputs - (list ruby-rjb)) - (synopsis "Ruby wrapper for the Ant build tool") - (description "Antwrap is a Ruby module that wraps the Apache Ant build -tool. Antwrap can be used to invoke Ant tasks from a Ruby or a JRuby -script.") - (home-page "http://rubyforge.org/projects/antwrap/") - (license license:expat))) - -(define-public ruby-atoulme-saikuro - (package - (name "ruby-atoulme-saikuro") - (version "1.2.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "atoulme-Saikuro" version)) - (sha256 - (base32 - "0kvd2nsxffbza61d3q4j94wrbnbv50r1zy3a7q26f6k706fw1f19")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'fix-module-resolution - (lambda _ - (substitute* "lib/saikuro.rb" - ;; irb 1.2.0 or later doesn't have RubyToken - (("require 'irb/ruby-lex'") - "require 'rubygems'\ngem 'irb', '=1.1.1'\nrequire 'irb/ruby-lex'")))) - (delete 'check) - (add-after 'install 'check - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (saikuro (string-append out "/bin/saikuro"))) - (setenv "GEM_PATH" (string-append - (getenv "GEM_PATH") ":" - #$output "/lib/ruby/vendor_ruby")) - (invoke saikuro "--cyclo" "--token" "--input_directory" "tests"))))))) - (propagated-inputs (list ruby-irb-1.1.1 - ruby-e2mmap)) ;required by rubygems - (synopsis "Cyclomatic complexity analyzer") - (description "Saikuro is a Ruby cyclomatic complexity analyzer. When -given Ruby source code Saikuro will generate a report listing the cyclomatic -complexity of each method found. In addition, Saikuro counts the number of -lines per method and can generate a listing of the number of tokens on each -line of code.") - (home-page "http://www.github.com/atoulme/Saikuro") - ;; File headers contain the BSD-3 license and the README.rdoc says that - ;; "Saikuro uses the BSD license", but the LICENSE file contains the text - ;; of the Expat license. - (license license:bsd-3))) - -(define-public ruby-awesome-print - (package - (name "ruby-awesome-print") - (version "1.9.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "awesome_print" version)) - (sha256 - (base32 - "0vkq6c8y2jvaw03ynds5vjzl1v9wg608cimkd3bidzxc0jvk56z9")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (replace 'check - (lambda _ - ;; Remove failing test. - (for-each delete-file - '("spec/ext/nokogiri_spec.rb" - "spec/colors_spec.rb" - "spec/formats_spec.rb" - "spec/methods_spec.rb" - "spec/misc_spec.rb" - "spec/objects_spec.rb")) - (invoke "rspec" "-c" "spec")))))) - (native-inputs - (list ruby-nokogiri ruby-rspec ruby-simplecov)) - (synopsis "Pretty print Ruby objects to visualize their structure") - (description - "Ruby dubugging companion: pretty print Ruby objects to visualize their -structure. Supports custom object formatting via plugins.") - (home-page "https://github.com/awesome-print/awesome_print") - (license license:expat))) - -(define-public ruby-pandoc-ruby - (package - (name "ruby-pandoc-ruby") - (version "2.1.4") - (source - (origin - (method git-fetch) ;the gem lacks many test files - (uri (git-reference - (url "https://github.com/xwmx/pandoc-ruby") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "03a11clhycyn0jhc7g9davpqd83sn60jqwjy1y145ag9sq6sp935")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f ; Disable tests since they depend on pandoc behavior - ; and there are no upstream releases. - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-pandoc-path - (lambda* (#:key inputs #:allow-other-keys) - (let ((pandoc (search-input-file inputs "/bin/pandoc"))) - (substitute* "lib/pandoc-ruby.rb" - (("@@pandoc_path = 'pandoc'") - (format #f "@@pandoc_path = '~a'" pandoc))) - (substitute* "test/test_pandoc_ruby.rb" - (("('|\")pandoc" _ quote) - (string-append quote pandoc)) - (("\\^pandoc") - ".*pandoc"))))) - (add-after 'unpack 'adjust-tests - ;; The tests expect filenames with spaces. Because they don't have - ;; spaces the quotes around the output are dropped automatically. - (lambda _ - (substitute* "test/test_pandoc_ruby.rb" - (("\\\\\"#\\{file\\.path\\}\\\\\"") "#{file.path}")))) - (add-after 'extract-gemspec 'remove-Gemfile.lock - (lambda _ - (delete-file "Gemfile.lock") - (substitute* "pandoc-ruby.gemspec" - (("Gemfile\\.lock") ""))))))) - (native-inputs - (list ruby-mocha)) - (inputs - (list pandoc)) - (synopsis "Ruby wrapper for Pandoc") - (description "PandocRuby is a wrapper for Pandoc, a Haskell library with -command line tools for converting one markup format to another. Pandoc can -convert documents from a variety of formats including markdown, -reStructuredText, textile, HTML, DocBook, LaTeX, and MediaWiki markup to a -variety of other formats, including markdown, reStructuredText, HTML, LaTeX, -ConTeXt, PDF, RTF, DocBook XML, OpenDocument XML, ODT, GNU Texinfo, MediaWiki -markup, groff man pages, HTML slide shows, EPUB, Microsoft Word docx, and -more.") - (home-page "https://github.com/xwmx/pandoc-ruby") - (license license:expat))) - -(define-public ruby-patron - (package - (name "ruby-patron") - (version "0.13.3") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "patron" version)) - (sha256 - (base32 - "0523gddx88zql2mq6655k60gy2ac8vybpzkcf90lmd9nx7wl3fi9")))) - (build-system ruby-build-system) - (inputs - (list curl)) - (arguments - `(#:tests? #f)) ; no included tests - (synopsis "Ruby HTTP client library based on @code{libcurl}") - (description - "Patron is a Ruby HTTP client library based on @code{libcurl}. It does -not try to expose the full power (read complexity) of @code{libcurl} but -instead tries to provide a sane API while taking advantage of @code{libcurl} -under the hood.") - (home-page "https://github.com/toland/patron") - (license license:expat))) - -(define-public ruby-slim - (package - (name "ruby-slim") - (version "5.2.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "slim" version)) - (sha256 - (base32 - "1rqk7jn66wgx50b18ndhbppjq55rbcwgqg1rbhnhxwiggvzisdbj")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - ;; See: https://github.com/slim-template/slim/issues/857 and - ;; https://github.com/slim-template/slim/issues/858. - (add-after 'unpack 'skip-broken-tests - (lambda _ - (substitute* "test/core/test_embedded_engines.rb" - (("def test_render_with_markdown") - "def skipped_test_render_with_markdown")) - (substitute* "test/translator/test_translator.rb" - (("raise (\"Missing test for.*)" _ tail) - (string-append "print " tail))))) - ;; See: https://salsa.debian.org/ruby-team/ruby-slim/-/commit/ - ;; 824862bd99d1675bc699d8fc71ba965a785c1f44. - (add-after 'unpack 'prevent-bundler-interference - (lambda _ - (substitute* "Rakefile" - (("require 'bundler/setup'") "nil") - (("Bundler::GemHelper\\.install_tasks") "nil"))))))) - (native-inputs - (list ruby-rack-test ruby-rspec-core ruby-sinatra)) - (propagated-inputs - (list ruby-temple ruby-tilt)) - (synopsis "Minimalist template language for Ruby") - (description "Slim is a template language for Ruby that aims to reduce the -syntax to the minimum while remaining clear.") - (home-page "http://slim-lang.com/") - (license license:expat))) - -(define-public ruby-asciidoctor - (package - (name "ruby-asciidoctor") - (version "2.0.20") - (source - (origin - (method git-fetch) ;the gem release lacks a Rakefile - (uri (git-reference - (url "https://github.com/asciidoctor/asciidoctor") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "19qvilhwa9plg80ppspn5ys0ybl8qfyaicqbl9w316hk5ldwi1jq")))) - (build-system ruby-build-system) - (arguments - (list - #:test-target "test:all" - #:phases - #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'strip-version-requirements - (lambda _ - (delete-file "Gemfile") - (substitute* "asciidoctor.gemspec" - (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped) - (string-append stripped "\n"))))) - (add-after 'install 'install-man-page - (lambda* (#:key outputs #:allow-other-keys) - (install-file (search-input-file - outputs (string-append "lib/ruby/vendor_ruby/" - "gems/asciidoctor-" - #$version - "/man/asciidoctor.1")) - (string-append #$output "/share/man/man1"))))))) - (native-inputs - (list ruby-asciimath - ruby-coderay - ruby-cucumber - ruby-erubis - ruby-haml - ruby-minitest - ruby-nokogiri - ruby-open-uri-cached - ruby-rouge - ruby-rspec-expectations - ruby-simplecov - ruby-slim - ruby-tilt - ruby-erubi)) - (synopsis "Converter from AsciiDoc content to other formats") - (description "Asciidoctor is a text processor and publishing toolchain for -converting AsciiDoc content to HTML5, DocBook 5, PDF, and other formats.") - (home-page "https://asciidoctor.org") - (license license:expat))) - -(define-public ruby-asciidoctor/minimal - (hidden-package - (package - (inherit ruby-asciidoctor) - (arguments - (ensure-keyword-arguments - (package-arguments ruby-asciidoctor) - (list #:tests? #f))) - (native-inputs '())))) - -(define-public ruby-asciidoctor-multipage - (package - (name "ruby-asciidoctor-multipage") - (version "0.0.16") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/owenh000/asciidoctor-multipage") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0rnz7qxdw5qbi3qjplihhk468kv690njdi06yllgylc75k62ar1p")))) - (propagated-inputs (list ruby-asciidoctor ruby-slim)) - (build-system ruby-build-system) - (arguments - `(#:phases (modify-phases %standard-phases - (add-after 'extract-gemspec 'strip-version-requirements - (lambda _ - (delete-file "Gemfile") - (substitute* "asciidoctor-multipage.gemspec" - (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped) - (string-append stripped "\n")))))))) - (synopsis - "Asciidoctor extension for generating HTML output using multiple pages") - (description - "Asciidoctor generates single-page documents. This extension -splits documents up into multiple HTML pages according to their headings, with -configurable levels.") - (license license:expat) - (home-page "https://github.com/owenh000/asciidoctor-multipage"))) - -(define-public ruby-prawn-icon - (package - (name "ruby-prawn-icon") - (version "3.1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "prawn-icon" version)) - (sha256 - (base32 - "049k42bqy4iq9hddf7jah83b6qr8ka63w1d63illh1mf4f4dihdk")))) - (build-system ruby-build-system) - (arguments - `(#:test-target "spec" - #:phases (modify-phases %standard-phases - (add-after 'unpack 'remove-unnecessary-dependencies - (lambda _ - (substitute* '("Rakefile" "spec/spec_helper.rb") - ((".*[Bb]undler.*") "") - (("^require 'rubocop.*") "") - (("^RuboCop.*") ""))))))) - (native-inputs - (list ruby-pdf-inspector ruby-pdf-reader ruby-rspec ruby-simplecov)) - (propagated-inputs - (list ruby-prawn)) - (synopsis "Icon fonts for use with the Prawn PDF toolkit") - (description "@code{Prawn::Icon} provides various icon fonts including -FontAwesome, PaymentFont and Foundation Icons for use with the Prawn PDF -toolkit.") - (home-page "https://github.com/jessedoyle/prawn-icon/") - (license %prawn-project-licenses))) - -(define-public ruby-css-parser - (package - (name "ruby-css-parser") - (version "1.7.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "css_parser" version)) - (sha256 - (base32 - "04c4dl8cm5rjr50k9qa6yl9r05fk9zcb1zxh0y0cdahxlsgcydfw")))) - (build-system ruby-build-system) - (arguments `(#:tests? #f)) ;gem doesn't ship with test suite - (propagated-inputs - (list ruby-addressable)) - (synopsis "Ruby Cascading Style Sheets (CSS) parser") - (description "This package allows loading, parsing and cascading Cascading -Style Sheets (CSS) rule sets in Ruby.") - (home-page "https://github.com/premailer/css_parser") - (license license:expat))) - -(define-public ruby-prism - (package - (name "ruby-prism") - (version "1.3.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/ruby/prism.git") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "03bs2gbackc3c3k4p979l2p9v215jb1m5h7b44n6yzh18kaimc85")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'build - (lambda _ - (setenv "CC" ,(cc-for-target)) - (invoke "rake" "compile"))) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (setenv "GEM_HOME" (string-append (assoc-ref outputs "out") - "/lib/ruby/vendor_ruby")) - (invoke "rake" "install") - ;; Make build reproducible. - (for-each delete-file - (find-files (string-append (assoc-ref outputs "out") - "/lib/ruby/vendor_ruby") - "gem_make.out$"))))))) - (native-inputs - (list ruby-rake ruby-rake-compiler)) - (synopsis "Parser for Ruby source code") - (description "This package provides a parser for Ruby source code, -written in C.") - (home-page "https://ruby.github.io/prism/") - (license license:expat))) - -(define-public ruby-prawn-svg - (package - (name "ruby-prawn-svg") - (version "0.36.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "prawn-svg" version)) - (sha256 - (base32 "008p1p334h3019x5w5bqvwgmly3g5n08s63va1261nwyvfb955jv")))) - (build-system ruby-build-system) - (arguments - (list #:test-target "spec" - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'do-not-use-bundler - (lambda _ - (substitute* "spec/spec_helper.rb" - ((".*[Bb]undler.*") "")))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - ;; This test fails due to the recent rspec 3.12 used - ;; (see: https://github.com/mogest/prawn-svg/issues/151). - (delete-file "spec/prawn/svg/interface_spec.rb") - (invoke "rspec" "-Ilib" "-rprawn-svg"))))))) - (native-inputs (list ruby-rspec)) - (propagated-inputs (list ruby-css-parser ruby-matrix ruby-prawn ruby-rexml)) - (synopsis "SVG renderer for the Prawn PDF library") - (description "This library allows rendering Scalable Vector Graphics (SVG) -graphics directly into a Portable Document Format (PDF) document using the -Prawn module.") - (home-page "https://github.com/mogest/prawn-svg") - (license license:expat))) - -(define-public ruby-prawn-templates - (package - (name "ruby-prawn-templates") - (version "0.1.2") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/prawnpdf/prawn-templates") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0wll54wxxwixpwazfn4ffbqvqbfrl01cfsv8y11vnlzy7isx5xvl")))) - (build-system ruby-build-system) - (arguments - `(#:phases (modify-phases %standard-phases - (add-after 'unpack 'do-not-use-bundler - (lambda _ - (substitute* "spec/spec_helper.rb" - ((".*[Bb]undler.*") "")))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (native-inputs - (list ruby-pdf-inspector ruby-rspec)) - (propagated-inputs - (list ruby-pdf-reader ruby-prawn)) - (synopsis "Prawn extension to include or combine PDF documents") - (description "This @strong{unmaintained} package provides a Prawn -extension that allows including other Portable Document Format (PDF) documents -as background or combining several PDF documents into one. This functionality -used to be part of Prawn itself, but was extracted from Prawn 0.15.0 because -of its many longstanding issues.") - (home-page "https://github.com/prawnpdf/prawn-templates") - (license %prawn-project-licenses))) - -(define-public ruby-polyglot - (package - (name "ruby-polyglot") - (version "0.3.5") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "polyglot" version)) - (sha256 - (base32 - "1bqnxwyip623d8pr29rg6m8r0hdg08fpr2yb74f46rn1wgsnxmjr")))) - (build-system ruby-build-system) - (arguments `(#:tests? #f)) ;no test suite - (synopsis "Augment @code{require} to load non-Ruby file types") - (description "The Polyglot library allows a Ruby module to register a -loader for the file type associated with a filename extension, and it augments -@code{require} to find and load matching files.") - (home-page "https://github.com/cjheath/polyglot") - (license license:expat))) - -(define-public ruby-treetop - (package - (name "ruby-treetop") - (version "1.6.12") - (source - (origin - (method git-fetch) ;no test suite in distributed gem - (uri (git-reference - (url "https://github.com/cjheath/treetop") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0cgs6f9z0a9dq5fc03710zsch4gmh1771wq36mq81qsql4x9vksf")))) - (build-system ruby-build-system) - (arguments - `(#:test-target "spec")) - (native-inputs - (list ruby-activesupport ruby-rr ruby-rspec)) - (propagated-inputs - (list ruby-polyglot)) - (synopsis "Ruby-based parsing DSL based on parsing expression grammars") - (description "This package provides a Ruby-based Parsing Expression -Grammar (PEG) parser generator Domain Specific Language (DSL).") - (home-page "https://github.com/cjheath/treetop") - (license license:expat))) - -(define-public ruby-typhoeus - (package - (name "ruby-typhoeus") - (version "1.4.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "typhoeus" version)) - (sha256 - (base32 - "1m22yrkmbj81rzhlny81j427qdvz57yk5wbcf3km0nf3bl6qiygz")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f)) ; no included tests - (propagated-inputs - (list ruby-ethon)) - (synopsis "@code{libcurl} wrapper in Ruby") - (description - "Like a modern code version of the mythical beast with 100 serpent heads, -Typhoeus runs HTTP requests in parallel while cleanly encapsulating handling -logic.") - (home-page "https://github.com/typhoeus/typhoeus") - (license license:expat))) - -;;; A minimal variant used to build ruby-rubocop itself. -(define ruby-rubocop-capybara-minimal - (package - (name "ruby-rubocop-capybara") - (version "2.21.0") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/rubocop/rubocop-capybara") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "19r2s782r9ch2g1lxgrvk22d9qqkxi69brza16bfwp2rl2064qnc")))) - (build-system ruby-build-system) - (arguments (list #:tests? #f)) - (synopsis "Capybara plugin for RuboCop") - (description "This package provides a RuboCop plugin that can be used for -code style checking of Capybara test files (RSpec, Cucumber, Minitest).") - (home-page "https://github.com/rubocop/rubocop-capybara") - (license license:expat))) - -(define-public ruby-rubocop-capybara - (package - (inherit ruby-rubocop-capybara-minimal) - (arguments - (list #:test-target "spec" - #:phases #~(modify-phases %standard-phases - (add-after 'unpack 'relax-requirements - (lambda _ - (substitute* "Gemfile" - (("gem 'rubocop-rspec', '~> 2.16.0'") - "gem 'rubocop-rspec', '>= 2.16.0'") - (("gem 'danger'.*") ""))))))) - (native-inputs - (list ruby-bump - ruby-rack - ruby-rake - ruby-rspec - ruby-rubocop - ruby-rubocop-performance-minimal - ruby-rubocop-rake-minimal - ruby-rubocop-rspec-minimal - ruby-simplecov - ruby-yard)))) - -(define-public ruby-rubocop-factory-bot - (package - (name "ruby-rubocop-factory-bot") - (version "2.26.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "rubocop-factory_bot" version)) - (sha256 - (base32 "1aljadsjx7affcarzbhz7pydpy6fgqb8hl951y0cmrffxpa3rqcd")))) - (build-system ruby-build-system) - (arguments '(#:tests? #f)) ; No tests bundled. - (synopsis "Code style checking for factory_bot files") - (description - "This package provides a plugin for the @code{RuboCop} code style -enforcing & linting tool for @code{factory_bot} files.") - (home-page "https://github.com/rubocop/rubocop-factory_bot") - (license license:expat))) - -;;; A minimal variant used to build ruby-rubocop itself. -(define ruby-rubocop-rake-minimal - (package - (name "ruby-rubocop-rake") - (version "0.6.0") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/rubocop/rubocop-rake") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1r53szwglikbir1fvpz4i51p915khrrkl6rp61zcx3dcrclkr3ld")))) - (build-system ruby-build-system) - (arguments (list #:tests? #f)) ;avoid extra dependencies - (synopsis "RuboCop plugin for Rake") - (description "This package provides a RuboCop plugin for Rake.") - (home-page "https://github.com/rubocop/rubocop-rake") - (license license:expat))) - -(define-public ruby-rubocop-rake - (package - (inherit ruby-rubocop-rake-minimal) - (arguments - (list #:test-target "spec")) - (native-inputs - (list ruby-rake - ruby-rspec - ruby-rubocop - ruby-rubocop-rspec)) - (propagated-inputs - (list ruby-rubocop)))) - -;;; A minimal variant used to build ruby-rubocop itself. -(define ruby-rubocop-rspec-minimal - (package - (name "ruby-rubocop-rspec") - (version "2.26.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/rubocop/rubocop-rspec") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1w9whadx60kv4vlbnk77b5yyhhfcg717r9cr334zqznqr1bqr8mh")))) - (build-system ruby-build-system) - (arguments - (list #:tests? #f ;avoid extra dependencies - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'relax-requirements - (lambda _ - (substitute* "Gemfile" - (("gem 'danger'.*") ""))))))) - (propagated-inputs (list ruby-rubocop-factory-bot)) - (synopsis "Code style checking for RSpec files") - (description "This package provides a plugin for the RuboCop code style -enforcing & linting tool.") - (home-page "https://github.com/rubocop/rubocop-rspec") - (license license:expat))) - -(define-public ruby-rubocop-rspec - (package - (inherit ruby-rubocop-rspec-minimal) - (arguments - (substitute-keyword-arguments - (package-arguments ruby-rubocop-rspec-minimal) - ((#:tests? _ #f) #t) - ((#:test-target _ "test") "spec"))) - (native-inputs - (list ruby-bump - ruby-rack - ruby-rspec - ruby-rubocop-performance-minimal - ruby-rubocop-rake-minimal - ruby-simplecov - ruby-yard)) - (propagated-inputs - (list ruby-rubocop - ruby-rubocop-ast - ruby-rubocop-capybara - ruby-rubocop-factory-bot)))) - -(define-public ruby-rubocop-packaging - (package - (name "ruby-rubocop-packaging") - (version "0.5.2") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/utkarsh2102/rubocop-packaging") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "08jsfp42z0aj32002z2hz8vkmza0jvnrqk9rk2v0xb8qdxkgbx3l")))) - (build-system ruby-build-system) - (arguments - (list #:test-target "spec" - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'skip-problematic-tests - (lambda _ - ;; Tests are actually running fine, except for a prefix. - ;; This doesn't impair functionality, ignored for now. - (delete-file - "spec/rubocop/cop/packaging/gemspec_git_spec.rb")))))) - (propagated-inputs - (list ruby-rubocop)) - (native-inputs - (list ruby-rspec - ruby-yard - ruby-bump)) - (synopsis - "Collection of RuboCop checks for downstream compatibility issues") - (description - "This package provides a collection of RuboCop cops to check for -downstream compatibility issues in the Ruby code.") - (home-page "https://github.com/utkarsh2102/rubocop-packaging") - (license license:expat))) - -(define-public ruby-rubocop-performance - (package - (name "ruby-rubocop-performance") - (version "1.23.1") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/rubocop/rubocop-performance") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0d1p6pgrcnj58q1g0np5j4vbk7wavj31b4bapi5p4gckqlnc7xjd")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f ; tests require a git checkout of rubocop's source code. - #:phases - (modify-phases %standard-phases - (replace 'replace-git-ls-files - (lambda _ - (substitute* "rubocop-performance.gemspec" - (("`git ls-files -z config lib LICENSE.txt README.md`") - "`find config lib LICENSE.txt README.md \ --type f -print0 |sort -z`")))) - (add-before 'check 'set-HOME - (lambda _ - (setenv "HOME" "/tmp")))))) - (propagated-inputs - (list ruby-rubocop ruby-rubocop-ast)) - (native-inputs - (list ruby-bump ruby-yard)) - (synopsis "Performance optimizations checkers for Ruby code") - (description "This package provides a collection of RuboCop cops to check -for performance optimizations in Ruby code.") - (home-page "https://docs.rubocop.org/rubocop-performance/") - (license license:expat))) - -(define-public ruby-rubocop-performance-minimal - (hidden-package - (package - (inherit ruby-rubocop-performance) - (arguments - (substitute-keyword-arguments (package-arguments ruby-rubocop-performance) - ((#:tests? _ #f) #f))) - (propagated-inputs '()) - (native-inputs '())))) - -(define-public ruby-stud - (package - (name "ruby-stud") - (version "0.0.23") - (source (origin - (method url-fetch) - (uri (rubygems-uri "stud" version)) - (sha256 - (base32 - "0qpb57cbpm9rwgsygqxifca0zma87drnlacv49cqs2n5iyi6z8kb")))) - (build-system ruby-build-system) - (native-inputs (list ruby-rspec)) - (arguments - (list #:phases #~(modify-phases %standard-phases - ;; No Rakefile is included, so run rspec directly. - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (synopsis "Retries, worker supervision, resource pools and more for Ruby") - (description "The Stud Ruby library adds a few things missing from the -standard Ruby library such as: -@table @code -@item {Stud::Try} -Retry on failure, with back-off, where failure is any exception. -@item {Stud::Pool} -Generic resource pools. -@item {Stud::Task} -Tasks (threads that can return values, exceptions, etc.) -@item {Stud.interval} -Interval execution (do X every N seconds). -@item {Stud::Buffer} -Batch and flush behavior. -@end itemize") - (home-page "https://github.com/jordansissel/ruby-stud") - (license license:asl2.0))) - -(define-public ruby-standard-custom - (package - (name "ruby-standard-custom") - (version "1.0.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "standard-custom" version)) - (sha256 - (base32 "0av55ai0nv23z5mhrwj1clmxpgyngk7vk6rh58d4y1ws2y2dqjj2")))) - (build-system ruby-build-system) - (arguments '(#:tests? #f)) ;Circular dependency on ruby-standard. - (propagated-inputs (list ruby-lint-roller ruby-rubocop)) - (synopsis "Plugin of custom cops for Standard Ruby") - (description - "This package provides a implementations of custom cops that are bundled -as defaults in Standard Ruby.") - (home-page "https://github.com/standardrb/standard-custom") - (license license:expat))) - -(define-public ruby-standard-performance - (package - (name "ruby-standard-performance") - (version "1.6.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "standard-performance" version)) - (sha256 - (base32 "1x298w3wmq8cavbsg903wc3arxp3xh2x8263brvy128436m732rd")))) - (build-system ruby-build-system) - (arguments '(#:tests? #f)) ;Circular dependency on ruby-standard. - (propagated-inputs (list ruby-lint-roller ruby-rubocop-performance)) - (synopsis "Standard Ruby Plugin for rubocop-performance") - (description - "This package is a Standard Ruby Plugin providing configuration for -@code{rubocop-performance}.") - (home-page "https://github.com/standardrb/standard-performance") - (license license:expat))) - -(define-public ruby-standard - (package - (name "ruby-standard") - (version "1.37.0") - (source - (origin - (method git-fetch) ;no test suite in distributed gem - (uri (git-reference - (url "https://github.com/testdouble/standard") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "0gm9fn6fz41aya34xz7kzda8xxs7h98n7cjx66qbcy2w0qhs40wc")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'set-HOME - (lambda _ - ;; Some tests fail otherwise. - (setenv "HOME" "/tmp"))) - (add-after 'unpack 'relax-requirements - (lambda _ - (substitute* "standard.gemspec" - (("\"rubocop\", \".*\"") - (string-append - "\"rubocop\", \"~> " - #$(package-version - (this-package-input "ruby-rubocop")) - "\"")) - (("\"rubocop-performance\", \".*\"") - (string-append - "\"rubocop-performance\", \"~> " - #$(package-version - (this-package-input "ruby-rubocop-performance")) - "\""))))) - (add-after 'unpack 'delete-problematic-tests - ;; These tests fail for unknown reasons (see: - ;; https://github.com/testdouble/standard/issues/532). - (lambda _ - (delete-file "test/standard_test.rb") - (substitute* "test/standard/base_test.rb" - ((".*test_configures_all_rubocop_cops.*" all) - (string-append all - " skip('fails on guix')\n")))))))) - (native-inputs - (list ruby-simplecov)) - (propagated-inputs - (list ruby-language-server-protocol - ruby-lint-roller - ruby-rubocop - ruby-rubocop-performance - ruby-standard-custom - ruby-standard-performance)) - (synopsis "Ruby Style Guide, with linter & automatic code fixer") - (description "Standard is a port of StandardJS. Like StandardJS, it aims -to save time in the following ways: -@itemize -@item No configuration. -@item Automatically format code. -@item Catch style issues and programmer errors early. -@end itemize") - (home-page "https://github.com/testdouble/standard") - (license license:expat))) - -(define-public ruby-chunky-png - (package - (name "ruby-chunky-png") - (version "1.4.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/wvanbergen/chunky_png") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "05qwj72dy2fcy0n2jnf3bfriybfj36m7s6pv9xash6295dbcp901")))) - (build-system ruby-build-system) - (arguments - (list - #:ruby ruby-3.1 - #:test-target "spec" - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'disable-bundler - (lambda _ - (substitute* (find-files "." "\\.rb$") - (("require.*bundler/setup.*") ""))))))) - (native-inputs - (list bundler ruby-rspec ruby-standard ruby-yard)) - (synopsis "Ruby library to handle PNG images") - (description "ChunkyPNG is a pure Ruby library that can read and write -Portable Network Graphics (PNG) images without depending on an external image -library. It tries to be memory efficient and reasonably fast. It has -features such as: -@itemize -@item -Decoding support for any image that the PNG standard allows. This includes all -standard color modes, all bit depths, all transparency, and interlacing and -filtering options. -@item -Encoding support for images of all color modes (true color, grayscale, and -indexed) and transparency for all these color modes. The best color mode is -chosen automatically, based on the amount of used colors. -@item Read/write access to the image's pixels. -@item Read/write access to all image metadata that is stored in chunks. -@item -Memory efficiency: @code{fixnum} are used, i.e. 4 or 8 bytes of memory per -pixel, depending on the hardware). -@item -Performance: ChunkyPNG is reasonably fast for Ruby standards, by only using -integer math and a highly optimized saving routine. -@item Interoperability with RMagick. -@end itemize - -ChunkyPNG is vulnerable to decompression bombs and can run out of memory when -loading a specifically crafted PNG file. This is hard to fix in pure Ruby. -Deal with untrusted images in a separate process, e.g., by using @code{fork} -or a background processing library.") - (home-page "https://github.com/wvanbergen/chunky_png/wiki") - (license license:expat))) - -(define-public ruby-text-hyphen - (package - (name "ruby-text-hyphen") - (version "1.5.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "text-hyphen" version)) - (sha256 - (base32 - "01js0wxz84cc5hzxgqbcqnsa0y6crhdi6plmgkzyfm55p0rlajn4")))) - (build-system ruby-build-system) - (native-inputs - (list ruby-hoe)) - (synopsis "Ruby library to hyphenate words in various languages") - (description "Text::Hyphen is a Ruby library to hyphenate words in various -languages using Ruby-fied versions of TeX hyphenation patterns. It will -properly hyphenate various words according to the rules of the language the -word is written in. The algorithm is based on that of the TeX typesetting -system by Donald E. Knuth.") - (home-page "https://github.com/halostatue/text-hyphen") - ;; The whole is licensed under the Expat license, but parts use various - ;; versions of the LaTeX Project Public License. - (license license:expat))) - -(define-public ruby-open-uri-cached - (package - (name "ruby-open-uri-cached") - (version "1.0.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "open-uri-cached" version)) - (sha256 - (base32 - "03v0if3jlvbclnd6jgjk94fbhf0h2fq1wxr0mbx7018sxzm0biwr")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f)) ;no test suite - (synopsis "OpenURI with transparent disk caching") - (description "OpenURI with transparent disk caching, which is -useful to avoid making excessive queries, for example when scraping -web pages.") - (home-page "https://github.com/tigris/open-uri-cached") - (license license:expat))) - -(define-public ruby-asciidoctor-pdf - (package - (name "ruby-asciidoctor-pdf") - (version "2.3.19") - (source - (origin - (method git-fetch) ;no test suite in the distributed gem - (uri (git-reference - (url "https://github.com/asciidoctor/asciidoctor-pdf") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1l8my8jj4aww2yad80n6f7hs76lq5gicld8dy014pw90pk3x43mp")) - (patches - (search-patches - "ruby-asciidoctor-pdf-support-prawn-svg-0_36.patch")))) - (build-system ruby-build-system) - (arguments - (list - #:test-target "spec" - #:phases - #~(modify-phases %standard-phases - ;; The tests rely on the Gem being installed, so move the check - ;; phase after the install phase. - (delete 'check) - (add-after 'install 'check - (lambda* (#:key tests? #:allow-other-keys) - (setenv "GEM_PATH" (string-append - (getenv "GEM_PATH") ":" - #$output "/lib/ruby/vendor_ruby")) - (when tests? - (invoke "rspec" "-t" "~visual" "-t" "~cli" - "-t" "~network"))))))) - (native-inputs - (list ruby-chunky-png - ruby-coderay - ruby-pdf-inspector - ruby-rouge - ruby-rspec)) - (propagated-inputs - (list ruby-asciidoctor - ruby-concurrent - ruby-prawn - ruby-prawn-icon - ruby-prawn-svg - ruby-prawn-table - ruby-prawn-templates - ruby-text-hyphen - ruby-treetop - ruby-ttfunk)) - (synopsis"AsciiDoc to Portable Document Format (PDF)} converter") - (description "Asciidoctor PDF is an extension for Asciidoctor that -converts AsciiDoc documents to Portable Document Format (PDF) using the Prawn -PDF library. It has features such as: -@itemize -@item Direct AsciiDoc to PDF conversion -@item Configuration-driven theme (style and layout) -@item Scalable Vector Graphics (SVG) support -@item PDF document outline (i.e., bookmarks) -@item Table of contents page(s) -@item Document metadata (title, authors, subject, keywords, etc.) -@item Internal cross reference links -@item Syntax highlighting with Rouge, Pygments, or CodeRay -@item Page numbering -@item Customizable running content (header and footer) -@item -“Keep together” blocks (i.e., page breaks avoided in certain block content) -@item Orphaned section titles avoided -@item Autofit verbatim blocks (as permitted by base_font_size_min setting) -@item Table border settings honored -@item Font-based icons -@item Custom TrueType (TTF) fonts -@item Double-sided printing mode (margins alternate on recto and verso pages) -@end itemize") - (home-page "https://asciidoctor.org/docs/asciidoctor-pdf") - (license license:expat))) - -(define-public ruby-ast - (package - (name "ruby-ast") - (version "2.4.2") - (source - (origin - (method git-fetch) ;no test included in gem from v2.4.1 - (uri (git-reference - (url "https://github.com/whitequark/ast") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0vm94yml8rknr7z034vg6s3fpx6lml2prz9fn3hr67cx0143bb4h")))) - (build-system ruby-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'remove-coveralls-requirement - (lambda _ - (substitute* "test/helper.rb" - (("require 'coveralls'") "") - (("Coveralls::SimpleCov::Formatter") "")))) - (add-after 'extract-gemspec 'remove-unnecessary-requirements - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "ast.gemspec" - ((".*coveralls.*") "\n") - (("%q<rest-client>.*") "%q<rest-client>.freeze, [\">= 0\"])\n") - (("%q<mime-types>.*") "%q<mime-types>.freeze, [\">= 0\"])\n") - (("%q<rake>.*") "%q<rake>.freeze, [\">= 0\"])\n") - (("12\\.3") "13.0"))))))) - (native-inputs - (list bundler - ruby-bacon - ruby-bacon-colored-output - ruby-json-pure - ruby-kramdown - ruby-mime-types - ruby-racc - ruby-rest-client - ruby-simplecov - ruby-yard)) - (synopsis "Library for working with Abstract Syntax Trees") - (description - "@code{ast} is a Ruby library for working with Abstract Syntax Trees. -It does this through immutable data structures.") - (home-page "https://whitequark.github.io/ast/") - (license license:expat))) - -(define-public ruby-sporkmonger-rack-mount - ;; Testing the addressable gem requires a newer commit than that released, so - ;; use an up to date version. - (let ((revision "1") - (commit "076aa2c47d9a4c081f1e9bcb56a826a9e72bd5c3")) - (package - (name "ruby-sporkmonger-rack-mount") - (version (git-version "0.8.3" revision commit)) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/sporkmonger/rack-mount") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1scx273g3xd93424x9lxc4zyvcp2niknbw5mkz6wkivpf7xsyxdq")))) - (build-system ruby-build-system) - (arguments - ;; Tests currently fail so disable them. - ;; https://github.com/sporkmonger/rack-mount/pull/1 - `(#:tests? #f)) - (propagated-inputs (list ruby-rack)) - (synopsis "Stackable dynamic tree based Rack router") - (description - "@code{Rack::Mount} supports Rack's @code{X-Cascade} convention to -continue trying routes if the response returns pass. This allows multiple -routes to be nested or stacked on top of each other.") - (home-page "https://github.com/sporkmonger/rack-mount") - (license license:expat)))) - -(define-public ruby-ci-reporter - (package - (name "ruby-ci-reporter") - (version "2.1.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "ci_reporter" version)) - (sha256 - (base32 - "0qcafasmjjr8a5gzr4k92ncm6h2943skwllhjzwz8spawdwc7dla")))) - (build-system ruby-build-system) - (arguments - `(#:test-target "rspec")) - (propagated-inputs - (list ruby-builder ruby-rexml)) - (native-inputs - (list bundler ruby-rspec)) - (synopsis "Generate XML reports of runs test") - (description - "@code{CI::Reporter} is an add-on to Ruby testing frameworks that allows -you to generate XML reports of your test runs. The resulting files can be -read by a continuous integration system that understands Ant's JUnit report -format.") - (home-page "https://github.com/nicksieger/ci_reporter") - (license license:expat))) - -(define-public ruby-console - (package - (name "ruby-console") - (version "1.16.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "console" version)) - (sha256 - (base32 - "0y1bv3kd1l9p0k5n3anvvjxdrcq113pyngz2g29i9mvdgbbx7kq2")))) - (build-system ruby-build-system) - ;; XXX: Disable test suite to avoid dependency cycles with ruby-samovar. - (arguments (list #:tests? #f)) - (propagated-inputs (list ruby-fiber-local)) - (synopsis "Console logging library for Ruby") - (description "This gem provides beautiful console logging for Ruby -applications. It implements fast, buffered log output and has the following -features: -@itemize -@item Thread safe global logger with per-fiber context -@item Carry along context with nested loggers -@item Enable/disable log levels per class -@item Detailed logging of exceptions -@item Beautiful logging to the terminal or structured logging using JSON. -@end itemize") - (home-page "https://github.com/socketry/console") - (license license:expat))) - -(define-public ruby-contracts - (package - (name "ruby-contracts") - (version "0.17.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "contracts" version)) - (sha256 - (base32 - "1sclvlwnlxfaj1595xd0rn3x3w0ljic3vqgnx6476lr7x8xbpbiv")))) - (build-system ruby-build-system) - (arguments - (list - #:test-target "spec" - #:phases - #~(modify-phases %standard-phases - ;; Don't run or require rubocop, the code linting tool, as this is a - ;; bit unnecessary. - (add-after 'unpack 'dont-run-rubocop - (lambda _ - (substitute* "Rakefile" - ((".*rubocop.*") "") - ((".*RuboCop.*") ""))))))) - (native-inputs - (list ruby-rspec)) - (synopsis "Method contracts for Ruby") - (description - "This library provides contracts for Ruby. A contract describes the -correct inputs and output for a method, and will raise an error if a incorrect -value is found.") - (home-page "https://github.com/egonSchiele/contracts.ruby") - (license license:bsd-2))) - -(define-public ruby-crack - (package - (name "ruby-crack") - (version "0.4.5") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "crack" version)) - (sha256 - (base32 - "1cr1kfpw3vkhysvkk3wg7c54m75kd68mbm9rs5azdjdq57xid13r")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (for-each (lambda (file) - (display file)(display "\n") - (invoke "ruby" "-Ilib" "-Itest" "-rrubygems" file)) - (find-files "test" ".*rb$")))))))) - (synopsis "Simple JSON and XML parsing for Ruby") - (description - "@code{crack} provides really simple JSON and XML parsing, extracted from -code in Merb and Rails.") - (home-page "https://github.com/jnunemaker/crack") - (license license:expat))) - -(define-public ruby-clamp - (package - (name "ruby-clamp") - (version "1.3.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "clamp" version)) - (sha256 - (base32 - "08m0syh06bhx8dqn560ivjg96l5cs5s3l9jh2szsnlcdcyl9jsjg")))) - (build-system ruby-build-system) - (arguments - (list #:test-target "spec" - #:phases #~(modify-phases %standard-phases - (add-after 'unpack 'do-not-require-rubocop - (lambda _ - (substitute* "Rakefile" - (("require \"rubocop/rake_task\"") - "") - (("RuboCop::RakeTask.new") - ""))))))) - (native-inputs (list ruby-rspec)) - (synopsis "Command-line parsing library for Ruby") - (description "Clamp provides an object-model for command-line utilities. -It handles parsing of command-line options, and generation of usage help.") - (home-page "https://github.com/mdub/clamp") - (license license:expat))) - -(define-public ruby-cliver - (package - (name "ruby-cliver") - (version "0.3.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "cliver" version)) - (sha256 - (base32 - "096f4rj7virwvqxhkavy0v55rax10r4jqf8cymbvn4n631948xc7")))) - (build-system ruby-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - ;; Avoid a incompatibility between rspec@2 and rake. Using rspec@3 - ;; would be nice, but the tests look to be incompatible: - ;; - ;; NoMethodError: undefined method `last_comment' - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (native-inputs - (list bundler ruby-rspec-2)) - (synopsis "Assertions for command-line dependencies in Ruby") - (description - "@code{cliver} provides a way to detect missing command-line -dependencies, including versions.") - (home-page "https://github.com/yaauie/cliver") - (license license:expat))) - -(define-public ruby-czmq-ffi-gen - (package - (name "ruby-czmq-ffi-gen") - (version "0.13.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "czmq-ffi-gen" version)) - (sha256 - (base32 - "1yf719dmf4mwks1hqdsy6i5kzfvlsha69sfnhb2fr2cgk2snbys3")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f ;; Tests are not included in the release on rubygems.org - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-lib_dirs - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "lib/czmq-ffi-gen/czmq/ffi.rb" - (("lib\\_dirs = \\[.*\\]") - (string-append "lib_dirs = ['" - (assoc-ref inputs "czmq") "/lib" - "']"))) - (substitute* "lib/czmq-ffi-gen/libzmq.rb" - (("lib\\_dirs = \\[.*\\]") - (string-append "lib_dirs = ['" - (assoc-ref inputs "zeromq") "/lib" - "']")))))))) - (inputs - (list zeromq czmq)) - (propagated-inputs (list ruby-ffi)) - (synopsis "Low-level Ruby bindings for CZMQ (generated using zproject)") - (description - "These Ruby bindings are not intended to be directly used, but rather -used by higher level bindings like those provided by CZTop.") - (home-page - "https://github.com/paddor/czmq-ffi-gen") - (license license:isc))) - -(define-public ruby-cztop - (package - (name "ruby-cztop") - (version "0.12.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "cztop" version)) - (sha256 - (base32 - "0yqbpaiw5d7f271d73lyrsh8xpx6n4zi6xqwfgi00dacxrq3s3fa")))) - (build-system ruby-build-system) - (arguments - '(#:test-target "spec" - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-lib_paths - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "lib/cztop/poller/zmq.rb" - (("lib\\_paths = \\[.*\\]") - (string-append "lib_paths = ['" - (assoc-ref inputs "zeromq") "/lib" - "']")))))))) - (native-inputs - (list bundler ruby-rspec)) - (inputs - (list zeromq)) - (propagated-inputs - (list ruby-czmq-ffi-gen)) - (synopsis "CZMQ Ruby bindings") - (description - "CZMQ Ruby bindings, based on the generated low-level FFI bindings of -CZMQ. The focus of of CZTop is on being easy to use and providing first class -support for security mechanisms.") - (home-page "https://github.com/paddor/cztop") - (license license:isc))) - -(define-public ruby-saikuro-treemap - (package - (name "ruby-saikuro-treemap") - (version "0.2.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "saikuro_treemap" version)) - (sha256 - (base32 - "0w70nmh43mwfbpq20iindl61siqqr8acmf7p3m7n5ipd61c24950")))) - (build-system ruby-build-system) - ;; Some of the tests fail because the generated JSON has keys in a - ;; different order. This is a problem with the test suite rather than any - ;; of the involved libraries. - (arguments `(#:tests? #f)) - (propagated-inputs - (list ruby-json-pure ruby-atoulme-saikuro)) - (synopsis "Generate complexity treemap based on saikuro analysis") - (description - "This gem generates a treemap showing the complexity of Ruby code on -which it is run. It uses Saikuro under the covers to analyze Ruby code -complexity.") - (home-page "https://github.com/ThoughtWorksStudios/saikuro_treemap") - (license license:expat))) - -(define-public ruby-oauth2 - (package - (name "ruby-oauth2") - (version "2.0.9") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://gitlab.com/oauth-xx/oauth2") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "191j1f4gjw8wij1jy2fvddgi8cv1mm0ki7v0b0795clix1avnj29")))) - (build-system ruby-build-system) - (arguments - (list #:modules '((guix build ruby-build-system) - (guix build utils) - (ice-9 regex) - (ice-9 textual-ports)) - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'relax-requirements - (lambda _ - (substitute* "Gemfile" - (("^linting = .*") - "linting = false\n") - (("^coverage = .*") - "coverage = false\n") - (("^debug = .*") - "debug = false\n")) - (substitute* "spec/spec_helper.rb" - (("^RUN_COVERAGE = .*") - "RUN_COVERAGE = false\n") - (("^ALL_FORMATTERS = .*") - "ALL_FORMATTERS = false\n")))) - (add-after 'unpack 'skip-problematic-test - (lambda _ - ;; XXX: substitute* can't match 2 lines. - (with-atomic-file-replacement - "spec/oauth2/client_spec.rb" - (lambda (in out) - (let* ((pattern "\ - context 'when parse: :xml but response is JSON' do\n\ - it 'returns a configured AccessToken' do\n") - (content (get-string-all in)) - (matched (string-match pattern content))) - (if matched - (format out "~a skip('fails on guix')~%~a" - (string-take content (match:end matched)) - (string-drop content (match:end matched))) - (display content out)))))))))) - (native-inputs - (list bundler - ruby-addressable - ruby-backports - ruby-rexml - ruby-rspec-block-is-expected - ruby-rspec-pending-for - ruby-rspec-stubbed-env - ruby-silent-stream)) - (propagated-inputs - (list ruby-faraday - ruby-jwt - ruby-multi-xml - ruby-rack - ruby-snaky-hash - ruby-version-gem)) - (synopsis "Ruby wrapper for the OAuth 2.0") - (description - "This package provides a Ruby wrapper for the OAuth 2.0 protocol built -with a similar style to the original OAuth spec.") - (home-page "https://github.com/oauth-xx/oauth2") - (license license:expat))) - -(define-public ruby-omniauth - (package - (name "ruby-omniauth") - (version "2.1.1") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/omniauth/omniauth") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1mm7a4ll7ymamrbsl63yi6i34qpwmh2nh5a9kj961gja1iz2gyd1")))) - (build-system ruby-build-system) - (arguments - (list #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'relax-requirements - (lambda _ - (substitute* "spec/helper.rb" - ;; This condition is used to require coveralls and - ;; simplecov; override it to avoid these extraneous - ;; requirements. - (("RUBY_VERSION >= '1.9'") - "false") - (("require 'rack/freeze'") ""))))))) - (native-inputs (list ruby-rspec)) - (propagated-inputs (list ruby-hashie ruby-rack ruby-rack-test - ruby-rack-protection)) - (synopsis "Generalized Rack framework for multiple-provider authentication") - (description - "This package provides a generalized Rack framework for multiple-provider -authentication.") - (home-page "https://github.com/omniauth/omniauth") - (license license:expat))) - -(define-public ruby-omniauth-oauth2 - (package - (name "ruby-omniauth-oauth2") - (version "1.8.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "omniauth-oauth2" version)) - (sha256 - (base32 - "0y4y122xm8zgrxn5nnzwg6w39dnjss8pcq2ppbpx9qn7kiayky5j")))) - (build-system ruby-build-system) - (arguments - (list #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'relax-requirements - (lambda _ - (substitute* "spec/helper.rb" - ;; This condition is used to require coveralls and - ;; simplecov; override it to avoid these extraneous - ;; requirements. - (("RUBY_VERSION >= \"1.9\"") - "false"))))))) - (propagated-inputs (list ruby-oauth2 ruby-omniauth)) - (native-inputs (list ruby-rspec ruby-rack-test ruby-webmock)) - (synopsis "Abstract OAuth2 strategy for OmniAuth") - (description - "This library provides a generic OAuth2 strategy for OmniAuth. It -doesn't provide a way to gather user information, so should be used as a -building block for authentication strategies.") - (home-page "https://github.com/omniauth/omniauth-oauth2") - (license license:expat))) - -(define-public ruby-open4 - (package - (name "ruby-open4") - (version "1.3.4") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "open4" version)) - (sha256 - (base32 - "1cgls3f9dlrpil846q0w7h66vsc33jqn84nql4gcqkk221rh7px1")))) - (build-system ruby-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch - (lambda _ - (substitute* "rakefile" - ;; Update the Rakefile so it works - (("-rubygems") "-rrubygems") - (("Config") "RbConfig")))) - (add-before 'check 'set-LIB - (lambda _ - ;; This is used in the rakefile when running the tests - (setenv "LIB" "open4")))))) - (synopsis "Open child processes from Ruby and manage them easily") - (description - "@code{Open4} is a Ruby library to run child processes and manage their -input and output.") - (home-page "https://github.com/ahoward/open4") - (license license:ruby))) - -(define-public ruby-options - (package - (name "ruby-options") - (version "2.3.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "options" version)) - (sha256 - (base32 - "1s650nwnabx66w584m1cyw82icyym6hv5kzfsbp38cinkr5klh9j")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f ;; TODO: NameError: uninitialized constant Config - #:phases - (modify-phases %standard-phases - (add-before 'check 'set-LIB - (lambda _ - ;; This is used in the Rakefile, and setting it avoids an issue - ;; with running the tests. - (setenv "LIB" "options")))))) - (synopsis "Ruby library to parse options from *args cleanly") - (description - "The @code{options} library helps with parsing keyword options in Ruby -functions.") - (home-page "https://github.com/ahoward/options") - (license license:ruby))) - -(define-public ruby-erubi - (package - (name "ruby-erubi") - (version "1.11.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/jeremyevans/erubi") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 "0y4qskz260fjwbnjps5z5yygjwgh6ds0f97lfa9gsmh6zqa1lvvx")))) - (build-system ruby-build-system) - (arguments - (list #:test-target "spec")) - (native-inputs (list ruby-minitest - ruby-minitest-global-expectations)) - (synopsis "ERB template engine for Ruby") - (description - "Erubi is a ERB template engine for Ruby. It is a simplified fork of -Erubis") - (home-page "https://github.com/jeremyevans/erubi") - (license license:expat))) - -(define-public ruby-erubis - (package - (name "ruby-erubis") - (version "2.7.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "erubis" version)) - (sha256 - (base32 - "1fj827xqjs91yqsydf0zmfyw9p4l2jz5yikg3mppz6d7fi8kyrb3")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; tests do not run properly with Ruby 2.0 - (synopsis "Implementation of embedded Ruby (eRuby)") - (description - "Erubis is a fast implementation of embedded Ruby (eRuby) with several -features such as multi-language support, auto escaping, auto trimming spaces -around @code{<% %>}, a changeable embedded pattern, and Ruby on Rails -support.") - (home-page "http://www.kuwata-lab.com/erubis/") - (license license:expat))) - -(define-public ruby-ethon - (package - (name "ruby-ethon") - (version "0.12.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "ethon" version)) - (sha256 - (base32 - "0gggrgkcq839mamx7a8jbnp2h7x2ykfn34ixwskwb0lzx2ak17g9")))) - (build-system ruby-build-system) - (arguments - (list - #:tests? #f ; no included tests - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'libcurl-use-absolute-reference - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "lib/ethon/curls/settings.rb" - (("libcurl', 'libcurl\\.so\\.4") - (search-input-file inputs "/lib/libcurl.so")))))))) - (inputs - (list curl)) - (propagated-inputs - (list ruby-ffi)) - (synopsis "Very lightweight @code{libcurl} wrapper") - (description - "Ethon is a very basic @code{libcurl} wrapper using ffi.") - (home-page "https://github.com/typhoeus/ethon") - (license license:expat))) - -(define-public ruby-execjs - (package - (name "ruby-execjs") - (version "2.7.0") - (source - (origin - ;; fetch from github as the gem does not contain testing code - (method git-fetch) - (uri (git-reference - (url "https://github.com/rails/execjs") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0c0vd2mmqq3ar4plbwi2wsbr31vn4h45i19r5km66skydnnbp1y6")))) - (build-system ruby-build-system) - (native-inputs - (list bundler - ;; The test suite tests all the available backends. Currently, this just - ;; means the node backend. - ;; - ;; PASSED: test:node - ;; SKIPPED: test:duktape, ;; test:javascriptcore, test:jscript, - ;; test:miniracer, test:rubyracer, ;; test:rubyrhino, test:v8 - node-lts)) - (synopsis "Run JavaScript code from Ruby") - (description - "ExecJS lets you run JavaScript code from Ruby. It automatically picks a -runtime to evaluate your JavaScript program, then returns the result to you as -a Ruby object.") - (home-page "https://github.com/rails/execjs") - (license license:expat))) - -(define-public ruby-fakefs - (package - (name "ruby-fakefs") - (version "2.8.0") - (home-page "https://github.com/fakefs/fakefs") - (source (origin - ;; The Rubygems release does not contain tests. - (method git-fetch) - (uri (git-reference - (url home-page) - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0a3vq6cllml279j77hxipmbln31pjw6di3zdgpzqvhqgazv55v10")))) - (build-system ruby-build-system) - (arguments - '(#:phases (modify-phases %standard-phases - (replace 'replace-git-ls-files - (lambda _ - (substitute* "fakefs.gemspec" - (("`git ls-files lib README.md LICENSE`") - "`find lib README.md LICENSE -type f | sort`")))) - (add-before 'check 'remove-version-constraints - (lambda _ - ;; Drop hard version requirements for test dependencies. - (substitute* "fakefs.gemspec" - (("(.*add_development_dependency .*), .*" _ dep) - (string-append dep "\n")))))))) - (native-inputs - (list ruby-bump ruby-maxitest ruby-pry ruby-rubocop ruby-rspec)) - (synopsis "Fake file system for Ruby") - (description - "This package provides a fake file system for use in test suites. It -avoids the need for manually creating temporary directories, or dealing -with platform intricacies in @code{File} and @code{FileUtils}.") - (license license:expat))) - -(define-public ruby-orderedhash - (package - (name "ruby-orderedhash") - (version "0.0.6") - (source (origin - (method url-fetch) - (uri (rubygems-uri "orderedhash" version)) - (sha256 - (base32 - "0fryy7f9jbpx33jq5m402yqj01zcg563k9fsxlqbhmq638p4bzd7")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; no test suite - (synopsis "Ruby library providing an order-preserving hash") - (description "Orderedhash is a Ruby library providing a hash -implementation that preserves the order of items and features some array-like -extensions.") - (home-page "http://codeforpeople.com/lib/ruby/orderedhash/") - (license license:public-domain))) - -(define-public ruby-libxml - (package - (name "ruby-libxml") - (version "3.0.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "libxml-ruby" version)) - (sha256 - (base32 - "0xy8wmjwjcnv36zi042678ncjzpxvy351ccbv7mzkns2n3kxfp54")))) - (build-system ruby-build-system) - (inputs - (list zlib libxml2)) - (arguments - '(#:tests? #f ; test suite hangs for unknown reason - #:gem-flags - (list "--no-document" ; TODO: Re-enable when documentation - ; generation works - "--" - (string-append "--with-xml2-include=" - (assoc-ref %build-inputs "libxml2") - "/include/libxml2" )))) - (synopsis "Ruby bindings for GNOME Libxml2") - (description "The Libxml-Ruby project provides Ruby language bindings for -the GNOME Libxml2 XML toolkit.") - (home-page "https://xml4r.github.com/libxml-ruby") - (license license:expat))) - -(define-public ruby-lino - (package - (name "ruby-lino") - (version "3.1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "lino" version)) - (sha256 - (base32 - "1zq9dza040fgjvr9imh7z2lgxrcyc5ac100rqimsnsf9bpfz3fsm")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; No included tests - (propagated-inputs - (list ruby-hamster ruby-open4)) - (synopsis "Build and execute commands in Ruby") - (description - "@code{Lino} provides an interface to run external commands. It provides -an interface to add options as well as managing the standard input, output and -error streams.") - (home-page "https://github.com/tobyclemson/lino") - (license license:expat))) - -(define-public ruby-x25519 - (package - (name "ruby-x25519") - (version "1.0.10") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/RubyCrypto/x25519") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1g0311ly32f6hfn4q5fvkbjbl2bhv1l9fx6s0kglxfsrwq51926y")) - (patches - (search-patches - "ruby-x25519-automatic-fallback-non-x86_64.patch")))) - (build-system ruby-build-system) - (arguments - (list #:test-target "spec" - #:phases #~(modify-phases %standard-phases - (add-after 'unpack 'remove-unnecessary-dependencies - (lambda _ - (substitute* "Gemfile" - ((".*rubocop.*") - "")) - (substitute* "Rakefile" - (("require \"rubocop/rake_task\"") - "") - (("RuboCop::RakeTask.new") - "")))) - (add-before 'build 'compile - (lambda _ - (invoke "rake" "compile")))))) - (native-inputs (list ruby-rake-compiler ruby-rspec)) - (synopsis "Cryptography library for Ruby providing the X25519 -Diffie-Hellman function") - (description - "The x25519 gem is an efficient public key cryptography library for -Ruby providing key exchange/agreement via the X25519 (as known as -Curve25519) Elliptic Curve Diffie-Hellman function as described in -@url{https://www.ietf.org/rfc/rfc7748.txt, RFC 7748}.") - (home-page "https://github.com/RubyCrypto/x25519") - (license license:bsd-3))) - -(define-public ruby-xml-simple - (package - (name "ruby-xml-simple") - (version "1.1.5") - (source (origin - (method url-fetch) - (uri (rubygems-uri "xml-simple" version)) - (sha256 - (base32 - "0xlqplda3fix5pcykzsyzwgnbamb3qrqkgbrhhfz2a2fxhrkvhw8")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; no test suite - (synopsis "Simple Ruby library for XML processing") - (description "This library provides a simple API for XML processing in -Ruby.") - (home-page "https://github.com/maik/xml-simple") - (license license:ruby))) - -(define-public ruby-xpath - (package - (name "ruby-xpath") - (version "3.2.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "xpath" version)) - (sha256 - (base32 - "0bh8lk9hvlpn7vmi6h4hkcwjzvs2y0cmkk3yjjdr8fxvj6fsgzbd")))) - (build-system ruby-build-system) - (arguments (list #:phases #~(modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec" "spec" ))))))) - (native-inputs (list ruby-pry ruby-rspec)) - (propagated-inputs (list ruby-nokogiri)) - (synopsis "Ruby DSL for generating XPath expressions") - (description "XPath is a Ruby domain-specific language (DSL) for -generating XPath expressions.") - (home-page "https://github.com/teamcapybara/xpath") - (license license:expat))) - -(define-public ruby-thor - (package - (name "ruby-thor") - (version "1.2.2") - (source (origin - ;; Pull from git because the gem has no tests. - (method git-fetch) - (uri (git-reference - (url "https://github.com/rails/thor") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1k3z2mlhaig5ycapjxwybb19z7ca0q1876i6csfmv2j0hf1hnc0z")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'remove-coveralls-dependency - (lambda _ - ;; Do not hook the test suite into the online coveralls service. - (substitute* "Gemfile" - ((".*coveralls.*") "")) - (substitute* "spec/helper.rb" - (("require \"coveralls\"") "") - (("Coveralls::SimpleCov::Formatter") "")))) - (add-after 'unpack 'disable-problematic-tests - (lambda _ - ;; These tests attempt to check the git repository for - ;; tabs vs spaces, double vs single quotes, etc, and - ;; depend on the git checkout. - (delete-file "spec/quality_spec.rb") - (substitute* "spec/parser/options_spec.rb" - ;; This test fails for unknown reasons (see: - ;; https://github.com/rails/thor/issues/814). - (("it \"raises an error for unknown switches" all) - (string-append "x" all))))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec" "spec" ))))))) - (native-inputs (list ruby-rspec ruby-simplecov ruby-webmock)) - (synopsis "Ruby toolkit for building command-line interfaces") - (description "Thor is a toolkit for building powerful command-line -interfaces.") - (home-page "http://whatisthor.com/") - (license license:expat))) - -(define-public ruby-lumberjack - (package - (name "ruby-lumberjack") - (version "1.0.13") - (source (origin - (method url-fetch) - (uri (rubygems-uri "lumberjack" version)) - (sha256 - (base32 - "06im7gcg42x77yhz2w5da2ly9xz0n0c36y5ks7xs53v0l9g0vf5n")))) - (build-system ruby-build-system) - (native-inputs - (list ruby-rspec ruby-timecop)) - (synopsis "Logging utility library for Ruby") - (description "Lumberjack is a simple logging utility that can be a drop in -replacement for Logger or ActiveSupport::BufferedLogger. It provides support -for automatically rolling log files even with multiple processes writing the -same log file.") - (home-page "https://github.com/bdurand/lumberjack") - (license license:expat))) - -(define-public ruby-rbnacl - (package - (name "ruby-rbnacl") - (version "7.1.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rbnacl" version)) - (sha256 - (base32 - "0y8yzianlkc9w6sbqy8iy8l0yym0y6x7p5rjflkfixq76fqmhvzk")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'remove-unnecessary-dependencies - (lambda _ - ;; Coveralls relates to a network service, and Rubocop to code - ;; linting and both are unnecessary to run the tests - (substitute* "Gemfile" - ((".*rubocop.*") - "\n") - ((".*guard-rspec.*") - "\n") - ((".*coveralls.*") - "\n")) - (substitute* "spec/spec_helper.rb" - (("require \"coveralls\"") - "") - (("Coveralls.wear!") - "")))) - (add-after 'unpack 'use-libsodium-from-store - (lambda* (#:key inputs #:allow-other-keys) - (substitute* '("lib/rbnacl/init.rb" - "lib/rbnacl/sodium.rb") - (("ffi_lib \\[.+\\]") - (string-append "ffi_lib [\"" - (assoc-ref inputs "libsodium") - "/lib/libsodium.so" "\"]"))))) - ;; Run Rspec directly to avoid the Rubocop dependency in the - ;; Rakefile - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (propagated-inputs (list ruby-ffi)) - (inputs (list libsodium)) - (native-inputs (list bundler ruby-rspec)) - (synopsis "Ruby FFI binding to libsodium") - (description - "This package provides Ruby FFI bindings to the Networking and -Cryptography (NaCl) library, also known as libsodium. This provides a -high-level toolkit for building cryptographic systems and protocols.") - (home-page "https://github.com/RubyCrypto/rbnacl") - (license license:expat))) - -(define-public ruby-rbtree - (package - (name "ruby-rbtree") - (version "0.4.6") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rbtree" version)) - (sha256 - (base32 - "1z0h1x7fpkzxamnvbw1nry64qd6n0nqkwprfair29z94kd3a9vhl")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-before 'build 'extconf - (lambda _ - (invoke "ruby" "extconf.rb") - (invoke "make" "install" (string-append "prefix=" #$output)))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "ruby" "-I." "test.rb"))))))) - (synopsis "Ruby implementation of a sorted associative collection") - (description - "This package provides a RBTree is a sorted associative collection that -is implemented with a Red-Black Tree. It maps keys to values like a Hash, but -maintains its elements in ascending key order. The interface is the almost -identical to that of Hash.") - (home-page "http://rbtree.rubyforge.org/") - (license license:expat))) - -(define-public ruby-rgl - (package - (name "ruby-rgl") - (version "0.6.6") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rgl" version)) - (sha256 - (base32 - "0dji1k9knrf8cxm5psd3pgd9i8f7cfq182jwjpi1pwxw15axf496")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'remove-unnecessary-dependencies - (lambda _ - (substitute* "Gemfile" - ;; Caring about coverage is a not a packager's task but a - ;; developer's - ;;(("gem \"simplecov\"") "") - ;; CodeClimate is an online service, and is unnecessary for - ;; running the tests - (("gem \"codeclimate-test-reporter\", .*") "\n"))))))) - (native-inputs (list ruby-test-unit ruby-simplecov ruby-yard graphviz-minimal)) - (propagated-inputs (list ruby-pairing-heap ruby-rexml ruby-stream)) - (synopsis "Framework for graph data structures and algorithms") - (description "RGL is a framework for graph data structures and algorithms. -The design of the library is much influenced by the Boost Graph Library (BGL) -which is written in C++.") - (home-page "https://github.com/monora/rgl") - (license license:bsd-2))) - -(define-public ruby-hkdf - (package - (name "ruby-hkdf") - (version "1.0.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/jtdowney/hkdf") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1xqwdmxfnhagivwgb5v9ilwpb4jxlsqwj7pnj43d65zzg5m8p9r5")))) - (build-system ruby-build-system) - (arguments - `(#:test-target "default")) - (native-inputs - (list ruby-rspec)) - (synopsis "HMAC-based Key Derivation Function") - (description - "This package provides a Ruby implementation of RFC5869: @acronym{HKDF, -HMAC-based Extract-and-Expand Key Derivation Function}. The goal of HKDF is to -take some source key material and generate suitable cryptographic keys from it.") - (home-page "https://github.com/jtdowney/hkdf") - (license license:expat))) - -(define-public ruby-nenv - (package - (name "ruby-nenv") - (version "0.3.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "nenv" version)) - (sha256 - (base32 - "0r97jzknll9bhd8yyg2bngnnkj8rjhal667n7d32h8h7ny7nvpnr")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f)) ; no tests included - (native-inputs - (list ruby-rspec bundler)) - (synopsis "Ruby interface for modifying the environment") - (description "Nenv provides a convenient wrapper for Ruby's ENV to modify -and inspect the environment.") - (home-page "https://github.com/e2/nenv") - (license license:expat))) - -(define-public ruby-ptools - (package - (name "ruby-ptools") - (version "1.5.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "ptools" version)) - (sha256 - (base32 - "0damllbshkxycrwjv80sz78h76dw7r9z54d17mb5cbha1daq9q2d")))) - (build-system ruby-build-system) - (arguments - (list - #:test-target "spec:all" - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'patch - (lambda _ - (substitute* "Rakefile" - ;; Don't require rubocop - (("require 'rubocop/rake_task'") "") - (("RuboCop::RakeTask.new") "") - ;; Do not attempt to sign the gem. - (("spec\\.signing_key = .*") "")) - - (substitute* "spec/binary_spec.rb" - (("/bin/ls") (which "ls")) - (("/bin/cat") (which "cat")) - (("/bin/chmod") (which "chmod")) - (("/bin/df") (which "df")))))))) - (native-inputs - (list ruby-rspec)) - (synopsis "Extra methods for Ruby's @code{File} class") - (description - "The @dfn{ptools} (power tools) library extends Ruby's core @code{File} -class with many additional methods modelled after common POSIX tools, such as -@code{File.which} for finding executables, @code{File.tail} to print the last -lines of a file, @code{File.wc} to count words, and so on.") - (home-page "https://github.com/djberg96/ptools") - (license license:artistic2.0))) - -(define-public ruby-permutation - (package - (name "ruby-permutation") - (version "0.1.8") - (source (origin - (method url-fetch) - (uri (rubygems-uri "permutation" version)) - (sha256 - (base32 - "13crwk2vfbzv99czva7881027dbcnidihmvx2jc58z2vm3bp9sl8")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'fix-rakefile - (lambda _ - (substitute* "Rakefile" - (("require 'rake/gempackagetask'") - "require 'rubygems/package_task'") - (("include Config") "")))) - (replace 'check - (lambda _ - (invoke "ruby" "-Ilib" "test/test.rb")))))) - (synopsis "Library to perform operations with sequence permutations") - (description "This package provides a Ruby library to perform different -operations with permutations of sequences, such as strings and arrays.") - (home-page "https://flori.github.io/permutation") - (license license:gpl2))) ; GPL 2 only - -(define-public ruby-shellany - (package - (name "ruby-shellany") - (version "0.0.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "shellany" version)) - (sha256 - (base32 - "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf")))) - (build-system ruby-build-system) - (arguments - `(#:test-target "default" - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'fix-version-test - (lambda _ - (substitute* "spec/shellany_spec.rb" - (("^RSpec") "require \"shellany\"\nRSpec"))))))) - (native-inputs - (list ruby-rspec ruby-nenv bundler)) - (synopsis "Capture command output") - (description "Shellany is a Ruby library providing functions to capture -the output produced by running shell commands.") - (home-page "https://rubygems.org/gems/shellany") - (license license:expat))) - -(define-public ruby-notiffany - (package - (name "ruby-notiffany") - (version "0.1.3") - (source (origin - (method url-fetch) - (uri (rubygems-uri "notiffany" version)) - (sha256 - (base32 - "0f47h3bmg1apr4x51szqfv3rh2vq58z3grh4w02cp3bzbdh6jxnk")))) - (build-system ruby-build-system) - ;; Tests are not included in the gem. - (arguments `(#:tests? #f)) - (propagated-inputs - (list ruby-shellany ruby-nenv)) - (native-inputs - (list bundler)) - (synopsis "Wrapper library for notification libraries") - (description "Notiffany is a Ruby wrapper library for notification -libraries such as Libnotify.") - (home-page "https://github.com/guard/notiffany") - (license license:expat))) - -(define-public ruby-forking-test-runner - (package - (name "ruby-forking-test-runner") - (version "1.6.0") - (home-page "https://github.com/grosser/forking_test_runner") - (source (origin - (method git-fetch) - (uri (git-reference (url home-page) - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1mrglzkj2nrgisccf2f30zbfmcs0awv1g3lw994b2az90fl39x8m")))) - (build-system ruby-build-system) - (arguments - '(#:test-target "spec" - ;; FIXME: ActiveRecord depends on sqlite3 1.3.6, but Guix has - ;; 1.4.1, which in turn breaks the tests that use ActiveRecord. - #:tests? #f - #:phases (modify-phases %standard-phases - (replace 'replace-git-ls-files - (lambda _ - (substitute* "forking_test_runner.gemspec" - (("`git ls-files lib/ bin/ MIT-LICENSE`") - "`find lib/ bin/ MIT-LICENSE -type f | sort`")))) - (add-before 'check 'remove-version-constraints - (lambda _ - ;; Ignore hard coded version constraints for the tests. - (delete-file "Gemfile.lock"))) - (add-before 'check 'set-HOME - (lambda _ - ;; Many tests invoke Bundler, and fails when Bundler - ;; warns that /homeless-shelter does not exist. - (setenv "HOME" "/tmp")))))) - (native-inputs - (list ruby-activerecord ruby-bump ruby-rspec ruby-sqlite3 ruby-wwtd)) - (propagated-inputs - (list ruby-parallel-tests)) - (synopsis "Run every test in a fork") - (description - "This package is a wrapper around @code{parallel_tests} that runs every -test in a fork to avoid pollution and get clean output per test.") - (license license:expat))) - -(define-public ruby-formatador - (package - (name "ruby-formatador") - (version "0.2.5") - (source (origin - (method url-fetch) - (uri (rubygems-uri "formatador" version)) - (sha256 - (base32 - "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0")))) - (build-system ruby-build-system) - ;; Circular dependency: Tests require ruby-shindo, which requires - ;; ruby-formatador at runtime. - (arguments `(#:tests? #f)) - (synopsis "Ruby library to format text on stdout") - (description "Formatador is a Ruby library to format text printed to the -standard output stream.") - (home-page "https://github.com/geemus/formatador") - (license license:expat))) - -(define-public ruby-fuubar - (package - (name "ruby-fuubar") - (version "2.3.2") - (source - (origin - ;; Fetch from the git repository, as the gem package doesn't include - ;; the tests. - (method git-fetch) - (uri (git-reference - (url "https://github.com/thekompanee/fuubar") - (commit (string-append "releases/v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0jm1x2xp13csbnadixaikj7mlkp5yk4byx51npm56zi13izp7259")))) - (build-system ruby-build-system) - (arguments - '(;; TODO: Some tests fail, unsure why. - ;; 21 examples, 7 failures - #:tests? #f - #:phases - (modify-phases %standard-phases - (add-before 'build 'delete-certificate - (lambda _ - ;; Remove 's.cert_chain' as we do not build with a private key - (substitute* "fuubar.gemspec" - ((".*cert_chain.*") "") - ((".*signing_key.*") "")))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (native-inputs - (list bundler)) - (propagated-inputs - (list ruby-rspec-core ruby-progressbar)) - (synopsis "Fuubar is an RSpec formatter that uses a progress bar") - (description - "Fuubar is an RSpec formatter that uses a progress bar instead of a -string of letters and dots as feedback. It also stops on the first test -failure.") - (home-page "https://github.com/thekompanee/fuubar") - (license license:expat))) - -(define-public ruby-haml - (package - (name "ruby-haml") - (version "5.0.4") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "haml" version)) - (sha256 - (base32 - "1q0a9fvqh8kn6wm97fcks6qzbjd400bv8bx748w8v87m7p4klhac")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; No included tests - (propagated-inputs - (list ruby-tilt ruby-temple)) - (synopsis "Haml is a Ruby library to generate HTML documents") - (description - "@acronym{Haml, HTML Abstraction Markup Language} is a layer on top of -HTML or XML that is designed to express the structure of documents using -indentation rather than closing tags. It was originally envisioned as a -plugin for Ruby on Rails, but it can function as a stand-alone templating -engine.") - (home-page "https://haml.info/") - (license license:expat))) - -(define-public ruby-hamster - (package - (name "ruby-hamster") - (version "3.0.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "hamster" version)) - (sha256 - (base32 - "1n1lsh96vnyc1pnzyd30f9prcsclmvmkdb3nm5aahnyizyiy6lar")))) - (build-system ruby-build-system) - (arguments - (list - ;; Only supports Ruby 2 currently - #:ruby ruby-2.7 - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'remove-unnecessary-dependencies - (lambda _ - ;; pry is a debugging tool, and is unnecessary when running the - ;; tests - (substitute* "spec/lib/hamster/vector/insert_spec.rb" - (("require 'pry'") "")) - (substitute* "spec/spec_helper.rb" - (("require \"pry\"") "") - ;; CodeClimate is an online service, and is unnecessary for - ;; running the tests - (("require \"codeclimate-test-reporter\"") "") - (("CodeClimate.*\n") "")))) - ;; No Rakefile is included, so run rspec directly. - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "ruby" (which "rspec")))))))) - (propagated-inputs - (list ruby-concurrent)) - (native-inputs - (list ruby-rspec)) - (synopsis "Efficient, immutable, thread-safe collection classes for Ruby") - (description - "Hamster provides 6 persistent data structures: @code{Hash}, @code{Vector}, -@code{Set}, @code{SortedSet}, @code{List}, and @code{Deque} (which works as an -immutable queue or stack).") - (home-page "https://github.com/hamstergem/hamster") - (license license:expat))) - -(define-public ruby-hashdiff - (package - (name "ruby-hashdiff") - (version "1.0.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "hashdiff" version)) - (sha256 - (base32 - "1nynpl0xbj0nphqx1qlmyggq58ms1phf5i03hk64wcc0a17x1m1c")))) - (build-system ruby-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - ;; Run tests directly via rspec to avoid depending on rubocop. - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (native-inputs - (list bundler ruby-rspec-2)) - (synopsis "HashDiff computes the smallest difference between two hashes") - (description - "HashDiff is a Ruby library to compute the smallest difference between -two hashes.") - (home-page "https://github.com/liufengyun/hashdiff") - (license license:expat))) - -(define-public ruby-hydra-minimal - ;; No releases yet. - (let ((commit "a4cab705a8a281e4356cb6a05a1946443ad9d53b") - (revision "1")) - (package - (name "ruby-hydra-minimal") - (version (git-version "0.0.0" revision commit)) - (home-page "https://github.com/hyphenation/hydra") - (source (origin - (method git-fetch) - (uri (git-reference (url home-page) (commit commit))) - (file-name (git-file-name name version)) - ;; byebug is a non-essential debugging utility that brings in - ;; many dependencies. - (patches (search-patches "ruby-hydra-minimal-no-byebug.patch")) - (sha256 - (base32 - "1swzab7i4cqk1bck7p5m3bh526jh0v6m9qq720r3270zbjc8x8z3")))) - (build-system ruby-build-system) - (arguments - ;; Avoid rspec dependency. - '(#:tests? #f)) - (synopsis "Ruby hyphenation patterns") - (description - "ruby-hydra-minimal is a Ruby library for working with hyphenation patterns. -It is a low-dependency variant of ruby-hydra.") - (license license:expat)))) - -;; Pinned variant for use by texlive -(define-public ruby-hydra-minimal/pinned - (let ((commit "5abfa378743756ae4d9306cc134bcc482f5c9525") - (revision "0")) - (hidden-package - (package - (inherit ruby-hydra-minimal) - (version (git-version "0.0" revision commit)) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/hyphenation/hydra") - (commit commit))) - (file-name (git-file-name "ruby-hydra-minimal" version)) - ;; byebug is a non-essential debugging utility that brings in - ;; many dependencies. - (patches (search-patches "ruby-hydra-minimal-no-byebug.patch")) - (sha256 - (base32 - "1cik398l2765y3d9sdhjzki3303hkry58ac6jlkiy7iy62nm529f")))) - (arguments - (list - #:ruby ruby-2.7 - #:tests? #f)))))) - -(define-public ruby-hydra - (package - (inherit ruby-hydra-minimal) - (name "ruby-hydra") - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'make-files-writable - (lambda _ - (for-each make-file-writable (find-files ".")))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (native-inputs - (list ruby-rspec)) - (description - "ruby-hydra is a Ruby library for working with hyphenation patterns."))) - -(define-public ruby-shindo - (package - (name "ruby-shindo") - (version "0.3.11") - (source (origin - (method url-fetch) - (uri (rubygems-uri "shindo" version)) - (sha256 - (base32 - "1wccg3a4g3agfyszipkdnbcgsazcfwdbz1gv51q8m17m9plvpzdp")))) - (build-system ruby-build-system) - (arguments - (list - #:test-target "tests" - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'fix-tests - (lambda _ - (substitute* "tests/tests_helper.rb" - (("-rrubygems") "")))) - ;; Move the 'check phase to after 'install, to use installed shindo. - (delete 'check) - (add-after 'install 'configure-tests - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (setenv "GEM_PATH" - (string-append - (getenv "GEM_PATH") ":" - #$output "/lib/ruby/vendor_ruby")) - (setenv "PATH" - (string-append - (getenv "PATH") ":" #$output "/bin"))))) - (add-after 'configure-tests 'check - (assoc-ref %standard-phases 'check))))) - (propagated-inputs - (list ruby-formatador)) - (synopsis "Simple depth first Ruby testing") - (description "Shindo is a simple depth first testing library for Ruby.") - (home-page "https://github.com/geemus/shindo") - (license license:expat))) - -(define-public ruby-rubygems-tasks - (package - (name "ruby-rubygems-tasks") - (version "0.2.5") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rubygems-tasks" version)) - (sha256 - (base32 - "1x3sz3n2dlknd3v7w1mrq6f0ag6pwzhjvg7z29p75w3p42ma1gbx")))) - (build-system ruby-build-system) - ;; Tests need Internet access. - (arguments `(#:tests? #f)) - (synopsis "Rake tasks for managing and releasing Ruby Gems") - (description "Rubygems-task provides Rake tasks for managing and releasing -Ruby Gems.") - (home-page "https://github.com/postmodern/rubygems-tasks") - (license license:expat))) - -(define-public ruby-rubyzip - (package - (name "ruby-rubyzip") - (version "2.3.2") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/rubyzip/rubyzip") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "03p8c990n6c1r4g64w0vv7z2iaswisl07l2f1lbh1s78cvmlmfxx")))) - (build-system ruby-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'disable-rubocop - (lambda _ - (substitute* "Rakefile" - (("require 'rubocop/rake_task'") "") - (("RuboCop::RakeTask.new") "")))) - (add-before 'check 'patch-tests - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "test/gentestfiles.rb" - (("/usr/bin/zip") (which "zip"))))) - (add-after 'patch-source-shebangs 'unpatch-some-source-shebangs - (lambda _ - ;; The tests compare zipped files with data test files; since the - ;; zip files do not have their shebangs patched, the data files - ;; compared with their extracted version must also be left - ;; un-patched. - (substitute* (find-files "test/data" "\\.(txt|rb)$") - (((which "ruby")) - "/usr/bin/env ruby"))))))) - (native-inputs - (list bundler ruby-simplecov zip unzip)) - (synopsis "Ruby module is for reading and writing zip files") - (description - "The rubyzip module provides ways to read from and create zip files.") - (home-page "https://github.com/rubyzip/rubyzip") - (license license:bsd-2))) - -(define-public ruby-silent-stream - (package - (name "ruby-silent-stream") - (version "1.0.6") - (source (origin - (method url-fetch) - (uri (rubygems-uri "silent_stream" version)) - (sha256 - (base32 - "10381fpvjzfjvhgfyv700607fpa29firgf52w5w5536m4fh6x63m")))) - (build-system ruby-build-system) - (synopsis "ActiveSupport stream silencing without ActiveSupport") - (description "SilentStream is an extraction of some parts of -ActiveSupport's Kernel Reporting Core Extensions around silencing IO -streams.") - (home-page "https://github.com/pboling/silent_stream") - (license license:expat))) - -(define-public ruby-simplecov-html - (package - (name "ruby-simplecov-html") - (version "0.12.3") - (source (origin - (method url-fetch) - (uri (rubygems-uri "simplecov-html" version)) - (sha256 - (base32 - "0yx01bxa8pbf9ip4hagqkp5m0mqfnwnw2xk8kjraiywz4lrss6jb")))) - (build-system ruby-build-system) - (arguments `(#:tests? #f)) ; there are no tests - (native-inputs - (list bundler)) - (synopsis "Default HTML formatter for SimpleCov code coverage tool") - (description "This package provides the default HTML formatter for -the SimpleCov code coverage tool for Ruby version 1.9 and above.") - (home-page "https://github.com/simplecov-ruby/simplecov-html") - (license license:expat))) - -(define-public ruby-simplecov-json-formatter - (package - (name "ruby-simplecov-json-formatter") - (version "0.1.4") - (source (origin - (method url-fetch) - (uri (rubygems-uri "simplecov_json_formatter" version)) - (sha256 - (base32 - "0a5l0733hj7sk51j81ykfmlk2vd5vaijlq9d5fn165yyx3xii52j")))) - (build-system ruby-build-system) - ;; The test suite is disabled because it requires simplecov, which - ;; requires this, introducing a dependency cycle. - (arguments (list #:tests? #f)) - (synopsis "JSON formatter for SimpleCov") - (description "This package provides a JSON formatter for SimpleCov, the -Ruby code coverage tool.") - (home-page - "https://github.com/codeclimate-community/simplecov_json_formatter") - (license license:expat))) - -(define-public ruby-simplecov - (package - (name "ruby-simplecov") - (version "0.22.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "simplecov" version)) - (sha256 - (base32 - "198kcbrjxhhzca19yrdcd6jjj9sb51aaic3b0sc3pwjghg3j49py")))) - (build-system ruby-build-system) - ;; Simplecov depends on rubocop for code style checking at build time. - ;; Rubocop needs simplecov at build time. - (arguments `(#:tests? #f)) - (propagated-inputs - (list ruby-json - ruby-docile - ruby-simplecov-html - ruby-simplecov-json-formatter)) - (synopsis "Code coverage framework for Ruby") - (description "SimpleCov is a code coverage framework for Ruby with a -powerful configuration library and automatic merging of coverage across test -suites.") - (home-page "https://github.com/simplecov-ruby/simplecov") - (license license:expat))) - -(define-public ruby-simplecov-lcov - (package - (name "ruby-simplecov-lcov") - (version "0.8.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "simplecov-lcov" version)) - (sha256 - (base32 - "1h8kswnshgb9zidvc88f4zjy4gflgz3854sx9wrw8ppgnwfg6581")))) - (build-system ruby-build-system) - ;; The test suite fails half of its tests; it seems to rely on older - ;; versions of simplecov, rspec, possibly others (see: - ;; https://github.com/fortissimo1997/simplecov-lcov/issues/29). - (arguments (list #:tests? #f - #:test-target "spec")) - (native-inputs - (list ruby-activesupport - ruby-coveralls - ruby-rspec - ruby-simplecov)) - (synopsis "SimpleCov formatter to generate a lcov style coverage") - (description "This package provides a SimpleCov formatter to generate a -lcov-style coverage report.") - (home-page "https://github.com/fortissimo1997/simplecov-lcov") - (license license:expat))) - -(define-public ruby-snaky-hash - (package - (name "ruby-snaky-hash") - (version "2.0.1") - (source (origin - (method git-fetch) - (uri (git-reference ;for tests - (url "https://gitlab.com/oauth-xx/snaky_hash") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0zmixxzi2g2d75zii65bq037j4g67p25l6aqddbmmwizspsp5az6")))) - (build-system ruby-build-system) - (arguments - (list #:phases #~(modify-phases %standard-phases - (add-after 'unpack 'relax-requirements - (lambda _ - (substitute* "Gemfile" - (("^linting = .*") - "linting = false\n") - (("^coverage = .*") - "coverage = false\n") - (("^debug = .*") - "debug = false\n")) - (substitute* "spec/spec_helper.rb" - (("^RUN_COVERAGE = .*") - "RUN_COVERAGE = false\n") - (("^ALL_FORMATTERS = .*") - "ALL_FORMATTERS = false\n")))) - (add-before 'build 'drop-signing-key-requirement - (lambda _ - (substitute* "snaky_hash.gemspec" - (("spec.signing_key =.*") - "spec.signing_key = nil"))))))) - (native-inputs (list ruby-rspec ruby-rspec-block-is-expected)) - (propagated-inputs (list ruby-hashie ruby-version-gem)) - (synopsis "Hash keys and look-ups normalization Ruby library") - (description "The SnakyHash Ruby library provides classes for normalizing -hash keys and look-ups, and a pseudo-object interface.") - (home-page "https://gitlab.com/oauth-xx/snaky_hash") - (license license:expat))) - -(define-public ruby-useragent - (package - (name "ruby-useragent") - (version "0.16.10") - (source (origin - (method url-fetch) - (uri (rubygems-uri "useragent" version)) - (sha256 - (base32 - "1fv5kvq494swy0p17h9qya9r50w15xsi9zmvhzb8gh55kq6ki50p")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; no test suite - (synopsis "HTTP user agent parser for Ruby") - (description "UserAgent is a Ruby library that parses and compares HTTP -User Agents.") - (home-page "https://github.com/gshutler/useragent") - (license license:expat))) - -(define-public ruby-backports - (package - (name "ruby-backports") - (version "3.11.4") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "backports" version)) - (sha256 - (base32 - "1hshjxww2h7s0dk57njrygq4zpp0nlqrjfya7zwm27iq3rhc3y8g")))) - (build-system ruby-build-system) - (arguments - '(;; TODO: This should be default, but there is one test failure - #:test-target "all_spec")) - (native-inputs - (list ruby-mspec ruby-activesupport)) - (synopsis "Backports of the features in newer Ruby versions") - (description - "Backports enables more compatibility across Ruby versions by providing -backports of some features.") - (home-page "https://github.com/marcandre/backports") - (license license:expat))) - -(define-public ruby-bacon - (package - (name "ruby-bacon") - (version "1.2.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "bacon" version)) - (sha256 - (base32 - "1f06gdj77bmwzc1k5iragl1595hbn67yc7sqvs56ca8plrr2vmai")))) - (build-system ruby-build-system) - (synopsis "Small RSpec clone") - (description "Bacon is a small RSpec clone providing all essential -features.") - (home-page "https://github.com/chneukirchen/bacon") - (license license:expat))) - -(define-public ruby-bacon-bits - (package - (name "ruby-bacon-bits") - (version "0.1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "bacon-bits" version)) - (sha256 - (base32 - "1ghpj8ja94lhi8rgi872hqk4fd2amz2k7g9znd64z5dj7v6l0dmx")))) - (build-system ruby-build-system) - (arguments - ;; No tests - '(#:tests? #f)) - (propagated-inputs (list ruby-bacon)) - (synopsis "Extensions to Bacon, for disabling tests, before and after -blocks and more") - (description - "This extends the bacon testing framework with useful extensions to -disable tests, have before and after blocks that run once and more.") - (home-page "https://github.com/cldwalker/bacon-bits") - (license license:expat))) - -(define-public ruby-bacon-colored-output - (package - (name "ruby-bacon-colored-output") - (version "1.1.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "bacon-colored_output" version)) - (sha256 - (base32 - "1znyh3vkfdlmf19p3k4zip88ibym41dn5g4p4n5hmks2iznb7qpx")))) - (build-system ruby-build-system) - (arguments - '(;; No included tests - #:tests? #f)) - (propagated-inputs - (list ruby-bacon)) - (synopsis "Colored output for Bacon test framework") - (description - "This package adds color through ANSI escape codes to Bacon test -output.") - (home-page "https://github.com/whitequark/bacon-colored_output") - (license license:expat))) - -(define-public ruby-bake - (package - (name "ruby-bake") - (version "0.18.2") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/ioquatix/bake") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "19yi1fxzz9n580gig3p3j6nxbgcfcassa6b0q07jkqrzxdqn7xhn")))) - (build-system ruby-build-system) - (arguments - (list #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'sanitize-dependencies - (lambda _ - ;; These dependencies are not needed to build and run tests - ;; and contain circular dependencies. - (substitute* "gems.rb" - ((".*'bake-modernize'.*") "") - ((".*'bake-gem'.*") "") - ((".*'bake-github-pages'.*") "") - ((".*'utopia-project'.*") "")))) - (add-before 'build 'drop-signing-key-requirement - (lambda _ - (substitute* "bake.gemspec" - (("spec.signing_key =.*") - "spec.signing_key = nil")))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (native-inputs (list ruby-covered ruby-rspec)) - (propagated-inputs (list ruby-samovar)) - (synopsis "Replacement for rake with a simpler syntax") - (description "Bake is a task execution tool, inspired by Rake, but -codifying many of the use cases which are typically implemented in an ad-hoc -manner.") - (home-page "https://github.com/ioquatix/bake") - (license license:expat))) - -(define-public ruby-bake-test - (package - (name "ruby-bake-test") - (version "0.2.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "bake-test" version)) - (sha256 - (base32 - "1p6kfpncj0s4zyynrrq6c735jvh0dnwyv7kfqym4rpyka4f85qdp")))) - (build-system ruby-build-system) - ;; XXX: Disable the test suite to avoid a circular dependency with - ;; ruby-sus. - (arguments (list #:tests? #f)) - (propagated-inputs (list ruby-bake)) - (synopsis "Test suite automatic runner for Ruby") - (description "@command{bake-test} automatically discovers how to run local -test suites for Ruby projects. It supports @command{rspec}, @command{sus}, as -well as @samp{rake}.") - (home-page "https://github.com/ioquatix/bake-test") - (license license:expat))) - -(define-public ruby-bake-test-external - (package - (name "ruby-bake-test-external") - (version "0.3.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "bake-test-external" version)) - (sha256 - (base32 - "0749xc7jkz1c5gsq1giwhrqy6s6xqm48bdvs414372881wki2jmh")))) - (build-system ruby-build-system) - ;; The test suite relies on git and network access to clone external - ;; repositories. - (arguments (list #:tests? #f)) - (propagated-inputs (list ruby-bake)) - (synopsis "Continuous integration extension for Bake") - (description "Bake Test External adds a @samp{test:external} action to the -@command{bake} command to run the test suites of dependent projects to check -for breakage.") - (home-page "https://github.com/ioquatix/bake-test-external") - (license license:expat))) - -(define-public ruby-connection-pool - (package - (name "ruby-connection-pool") - (version "2.4.1") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/mperham/connection_pool") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1iijshb1n9xl5knvpzzx0vqlw7v7mskiw1cpfj1cmdmssavyhsx5")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'patch - (lambda _ - (substitute* "Rakefile" - (("require \"standard/rake\"") "") - ((":\"standard:fix\",") ""))))))) - (native-inputs - (list bundler)) - (synopsis "Generic connection pool for Ruby") - (description "Connection_pool provides a generic connection pooling -interface for Ruby programs.") - (home-page "https://github.com/mperham/connection_pool") - (license license:expat))) - -(define-public ruby-fast-gettext - (package - (name "ruby-fast-gettext") - (version "4.1.0") - (home-page "https://github.com/grosser/fast_gettext") - (source (origin - (method git-fetch) - (uri (git-reference (url home-page) - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "04p9s0r67xgvckab9ydb3fbnrc7g20p5c05z2zsacynlkp9x5jp9")))) - (build-system ruby-build-system) - (arguments - (list - #:test-target "spec" - #:phases - #~(modify-phases %standard-phases - (add-before 'check 'remove-version-constraints - (lambda _ - (delete-file "Gemfile.lock")))))) - (native-inputs - (list ;; For tests. - ruby-activerecord - ruby-activesupport - ruby-bump - ruby-forking-test-runner - ruby-i18n - ruby-rubocop - ruby-rubocop-packaging - ruby-rspec - ruby-single-cov - ruby-sqlite3 - ruby-wwtd)) - (synopsis "Fast implementation of @code{GetText}") - (description - "This package provides an alternative implementation of the Ruby -@code{GetText} library that is approximately 12x faster yet thread safe.") - ;; Some parts are covered by the Ruby license, see file headers. - (license (list license:expat license:ruby)))) - -(define-public ruby-fiber-local - (package - (name "ruby-fiber-local") - (version "1.0.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/socketry/fiber-local") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0pp5b81h0lysdnphgprkixh1az0fkrgir5sbcp0mm8arxf3f8m90")))) - (build-system ruby-build-system) - (arguments - (list #:phases - #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'sanitize-dependencies - (lambda _ - ;; This pulls in extraneous maintenance dependencies. - (delete-file "gems.rb") - ;; Depending on ruby-covered would introduce a dependency - ;; cycle with it. - (substitute* '("fiber-local.gemspec" "spec/spec_helper.rb") - ((".*covered.*") "")))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (native-inputs (list ruby-rspec)) - (synopsis "Ruby module to simplify fiber-local state management") - (description "This package provides a class-level mixin to make managing -fiber-local state easy. It provides easy access to a fiber-local state from a -fiber, and defaults to a shared thread-local state.") - (home-page "https://github.com/socketry/fiber-local") - (license license:expat))) - -(define-public ruby-flores - (let ((commit "92fded00b04b1e3d308edb7440d7b7ab2c89ab5e") - (revision "0")) - (package - (name "ruby-flores") - (version (git-version "0.0.8" revision commit)) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/jordansissel/ruby-flores") - (commit commit))) - (sha256 - (base32 "0jvnw0jli2zzxklfk751vfbi4acf9lijppk67346j3b2qxqi8xms")) - (patches - (search-patches "ruby-flores-fix-deprecations.patch")))) - (build-system ruby-build-system) - (arguments - (list #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'fix-gemspec - (lambda _ - (substitute* "flores.gemspec" - ;; Since this is not a git repository, do not call 'git'. - (("git ls-files") "find . -type f |sort")))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "ruby" (which "rspec")))))))) - (native-inputs (list ruby-rspec ruby-simplecov)) - (synopsis "Fuzzing, randomization, and stress testing library") - (description "Flores is a fuzzing, randomization, and stress library to -help tests uncover more bugs.") - (home-page "https://github.com/jordansissel/ruby-flores") - (license license:asl2.0)))) - -(define-public ruby-ipaddr - (package - (name "ruby-ipaddr") - (version "1.2.6") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/ruby/ipaddr") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0h3z8i1fa8s4gx48322fflhpkzghd4bmd9109hglsgdkic7b0dyp")))) - (build-system ruby-build-system) - (native-inputs (list ruby-test-unit-ruby-core)) - (synopsis "Manipulate IP addresses") - (description "This package provides a set of methods to manipulate an IP -address. Both IPv4 and IPv6 are supported.") - (home-page "https://github.com/ruby/ipaddr") - (license license:bsd-2))) - -(define-public ruby-fake-ftp - (package - (name "ruby-fake-ftp") - (version "0.3.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "fake_ftp" version)) - (sha256 - (base32 - "1zl9q9m4x7lz9890g0h1qqj7hcxnwzpjfnfbxadjblps7b5054q4")))) - (build-system ruby-build-system) - (native-inputs (list ruby-rspec ruby-rubocop ruby-simplecov)) - (arguments - '(#:test-target "spec")) - (synopsis "Fake FTP server for use with ruby tests") - (description "This package allows you to test FTP implementations in ruby. -It is a minimal single-client FTP server that can be bound to any arbitrary -port on localhost.") - (home-page "https://rubygems.org/gems/fake_ftp") - (license license:expat))) - -(define-public ruby-net-telnet - (package - (name "ruby-net-telnet") - (version "0.2.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "net-telnet" version)) - (sha256 - (base32 - "16nkxc79nqm7fd6w1fba4kb98vpgwnyfnlwxarpdcgywz300fc15")))) - (build-system ruby-build-system) - (synopsis "Telnet client functionality") - (description "This package provides telnet client functionality.") - (home-page "https://github.com/ruby/net-telnet") - (license license:bsd-2))) - -(define-public ruby-net-ftp - (package - (name "ruby-net-ftp") - (version "0.3.4") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/ruby/net-ftp") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "11b1sw7c4c7xrhn5li5m0wylw42hp52jp6pqacyb43hkw1m5zr36")))) - (build-system ruby-build-system) - (propagated-inputs (list ruby-net-protocol ruby-time)) - (synopsis "File Transfer Protocol client library") - (description "This class implements the File Transfer Protocol. If you -have used a command-line FTP program, and are familiar with the commands, you -will be able to use this class easily. Some extra features are included to -take advantage of Ruby's style and strengths.") - (home-page "https://github.com/ruby/net-ftp") - (license license:bsd-2))) - -(define-public ruby-net-http-persistent - (package - (name "ruby-net-http-persistent") - (version "4.0.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "net-http-persistent" version)) - (sha256 - (base32 - "0i1as2lgnw7b4jid0gw5glv5hnxz36nmfsbr9rmxbcap72ijgy03")))) - (build-system ruby-build-system) - (native-inputs - (list ruby-connection-pool - ruby-hoe - ruby-rake-manifest)) - (synopsis "Persistent HTTP connection manager") - (description "Net::HTTP::Persistent manages persistent HTTP connections -using Net::HTTP, supporting reconnection and retry according to RFC 2616.") - (home-page "https://github.com/drbrain/net-http-persistent") - (license license:expat))) - -(define-public ruby-net-imap - (package - (name "ruby-net-imap") - (version "0.3.4") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/ruby/net-imap") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0nx49i1n9q1wpancqaac2srrpb8mb43mc8wryyqyhpgki2grwyxw")))) - (build-system ruby-build-system) - (arguments - ;; The test suite appears to rely on RFCs it tries fetching from the - ;; network (see: https://github.com/ruby/net-imap/issues/136). - (list #:tests? #f - #:phases - #~(modify-phases %standard-phases - (add-before 'replace-git-ls-files 'adjust-for-git-ls-files - (lambda _ - ;; Adjust the git ls-files invocation so that it matches - ;; the expected pattern. - (substitute* "net-imap.gemspec" - (("`git ls-files -z 2>/dev/null`") - "`git ls-files -z`"))))))) - (propagated-inputs (list ruby-date ruby-net-protocol)) - (synopsis "Ruby client api for Internet Message Access Protocol") - (description "@code{Net::IMAP} implements Internet Message Access -Protocol (IMAP) client functionality. The protocol is described in -@url{https://tools.ietf.org/html/rfc3501, IMAP}.") - (home-page "https://github.com/ruby/net-imap") - (license license:bsd-2))) - -(define-public ruby-net-pop - (package - (name "ruby-net-pop") - (version "0.1.2") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/ruby/net-pop") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "05vz6a56va2rbr7ld78gdzwy1j5mzs98cz82ax5aqa83pzzk6jld")))) - (build-system ruby-build-system) - (propagated-inputs (list ruby-net-protocol)) - (synopsis "Ruby client library for POP3") - (description "This library provides functionality for retrieving email via -POP3, the Post Office Protocol version 3, as specified by -@url{http://www.ietf.org/rfc/rfc1939.txt, RFC1939}.") - (home-page "https://github.com/ruby/net-pop") - (license license:bsd-2))) - -(define-public ruby-net-smtp - (package - (name "ruby-net-smtp") - (version "0.3.3") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/ruby/net-smtp") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0ca2wh45xvc09rv6v6sz3vbnkzrjzk5c4l6dk50zk4dwxvghma8r")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-before 'check 'regenerate-certificate - ;; On version 0.5.0 a Makefile was introduced to regenerated - ;; the certificates, and instead of calling openssl directory - ;; we could do (with-directory-excursion "test/net/fixtures" - ;; (invoke "make" "regen_certs"). However the certificate is - ;; expired versions before 0.5.0 as well. - (lambda _ - (with-directory-excursion "test/net/fixtures" - (invoke - "openssl" "req" "-new" "-key" "server.key" "-out" - "server.csr" "-subj" - "/C=JP/ST=Shimane/O=Ruby Core Team/OU=Ruby Test/CN=localhost") - (invoke "openssl" "req" "-new" "-x509" "-days" "3650" - "-key" "server.key" "-out" "cacert.pem" "-subj" - (string-append - "/C=JP/ST=Shimane/L=Matz-e city/O=Ruby " - "Core Team/CN=Ruby Test " - "CA/emailAddress=security@ruby-lang.org")) - (invoke "openssl" "x509" "-days" "3650" "-CA" "cacert.pem" - "-CAkey" "server.key" "-set_serial" "00" "-in" - "server.csr" "-req" "-out" "server.crt"))))))) - (native-inputs (list openssl)) - (propagated-inputs (list ruby-net-protocol)) - (synopsis "Simple Mail Transfer Protocol client library for Ruby") - (description "This library provides functionality to send Internet mail -via SMTP, the Simple Mail Transfer Protocol. The SMTP protocol specification -is known as @url{http://www.ietf.org/rfc/rfc2821.txt, RFC2821}.") - (home-page "https://github.com/ruby/net-smtp") - (license license:bsd-2))) - -(define-public ruby-pleaserun - (package - (name "ruby-pleaserun") - (version "0.0.32") - (source (origin - (method url-fetch) - (uri (rubygems-uri "pleaserun" version)) - (sha256 - (base32 - "1aykf0l8327bqkkf5xd9jcglsib973zpy37cfnlf4j0vp0cdpn2d")))) - (build-system ruby-build-system) - (arguments - (list #:phases - #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'relax-requirements - (lambda _ - (substitute* "pleaserun.gemspec" - ;; Mustache is pinned at 0.99.8, for portability with - ;; older Rubies. - (("dependency\\(%q<mustache>.freeze.*") - "dependency(%q<mustache>.freeze)\n")))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - ;; The cli_spec.rb test fails non-deterministically with - ;; a Errno::EISDIR error (see: - ;; https://github.com/jordansissel/pleaserun/issues/155) - (invoke "rspec" "--exclude-pattern" - "spec/pleaserun/cli_spec.rb"))))))) - (native-inputs (list ruby-flores ruby-rspec)) - (propagated-inputs (list ruby-cabin - ruby-clamp - ruby-dotenv - ruby-insist - ruby-mustache - ruby-stud)) - (synopsis "Init scripts and service definitions generation tool") - (description "Pleaserun is a tool to generate startup scripts and service -definitions. It targets service managers such as systemd, Upstart, launchd, -sysv init, and runit.") - (home-page "https://github.com/jordansissel/pleaserun") - (license license:asl2.0))) - -(define-public ruby-power-assert - (package - (name "ruby-power-assert") - (version "1.1.5") - (source (origin - (method url-fetch) - (uri (rubygems-uri "power_assert" version)) - (sha256 - (base32 - "1dii0wkfa0jm8sk9b20zl1z4980dmrjh0zqnii058485pp3ws10s")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; No included tests - (native-inputs - (list bundler)) - (synopsis "Assert library with descriptive assertion messages") - (description "Power-assert is an assertion library providing descriptive -assertion messages for tests.") - (home-page "https://github.com/k-tsj/power_assert") - (license (list license:bsd-2 license:ruby)))) - -(define-public ruby-powerpack - (package - (name "ruby-powerpack") - (version "0.1.3") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "powerpack" version)) - (sha256 - (base32 - "1f71axvlhnxja0k17qqxdi4qh5ck807hqg4i3j6cgy8fgzmyg7rg")))) - (build-system ruby-build-system) - (arguments - (list #:test-target "spec")) - (native-inputs - (list bundler ruby-rspec ruby-yard)) - (synopsis "Useful extensions to core Ruby classes") - (description - "This package provides a few useful extensions to core Ruby classes, -including @code{Array}, @code{Enumerable}, @code{Hash}, @code{Numeric}, and -@code{String}.") - (home-page "https://github.com/bbatsov/powerpack") - (license license:expat))) - -(define-public ruby-locale - (package - (name "ruby-locale") - (version "2.1.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "locale" version)) - (sha256 - (base32 - "1sls9bq4krx0fmnzmlbn64dw23c4d6pz46ynjzrn9k8zyassdd0x")))) - (build-system ruby-build-system) - ;; ruby-test-unit is required to run tests, but that needs ruby-packnga, - ;; which needs ruby-gettext, which needs ruby-locale. To break the - ;; dependency cycle we disable tests. - (arguments `(#:tests? #f)) - (native-inputs - (list bundler ruby-yard/minimal)) - (synopsis "Ruby library providing basic localization APIs") - (description - "Ruby-Locale is the pure ruby library which provides basic APIs for -localization.") - (home-page "https://github.com/ruby-gettext/locale") - (license (list license:lgpl3+ license:ruby)))) - -(define-public ruby-temple - (package - (name "ruby-temple") - (version "0.10.0") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/judofyr/temple") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0rr9fnlcgj9nm3b6hzzjsvcw8x3y7z48j7slk7xxff2mh8s7y3y0")))) - (build-system ruby-build-system) - (arguments - (list #:phases - #~(modify-phases %standard-phases - (add-after 'replace-git-ls-files 'replace-more-git-ls-files - (lambda _ - (substitute* "temple.gemspec" - ;; There no longer are test, spec or features - ;; directories. - ((".*`git ls-files -- \\{test,spec,features}/\\*`.*") - "") - ;; There isn't any bin directory either. - ((".*`git ls-files -- bin/\\*`.*") - "")))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (native-inputs (list ruby-bacon ruby-erubi ruby-rspec ruby-tilt)) - (synopsis "Template compilation framework in Ruby") - (description "Temple is an abstraction and framework for compiling -templates to pure Ruby.") - (home-page "https://github.com/judofyr/temple") - (license license:expat))) - -(define-public ruby-text - (package - (name "ruby-text") - (version "1.3.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "text" version)) - (sha256 - (base32 - "1x6kkmsr49y3rnrin91rv8mpc3dhrf3ql08kbccw8yffq61brfrg")))) - (build-system ruby-build-system) - (synopsis "Collection of text algorithms for Ruby") - (description - "This package provides a collection of text algorithms: Levenshtein, -Soundex, Metaphone, Double Metaphone, Porter Stemming.") - (home-page "https://github.com/threedaymonk/text") - (license license:expat))) - -(define-public ruby-gdbm - (package - (name "ruby-gdbm") - (version "2.1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "gdbm" version)) - (sha256 - (base32 "0xxygf50b2fvy8lcn2vip27vq32p607d3lwd1diplvkajijq8q8b")))) - (build-system ruby-build-system) - (arguments '(#:tests? #f)) ; No bundled tests. - (inputs (list gdbm)) - (synopsis "Ruby extension for GNU dbm") - (description "This package provides a Ruby extension for GNU dbm.") - (home-page "https://github.com/ruby/gdbm") - (license license:bsd-2))) - -(define-public ruby-gettext - (package - (name "ruby-gettext") - (version "3.4.4") - (source (origin - (method url-fetch) - (uri (rubygems-uri "gettext" version)) - (sha256 - (base32 - "11hlxkk2yr9wjwd3nf8kgmsjcd8wf35yqlxi9wpvrgmvrk9n9a2k")))) - (build-system ruby-build-system) - ;; ruby-test-unit is required to run tests, but that needs ruby-packnga, - ;; which needs ruby-gettext. To break the dependency cycle we disable - ;; tests. - (arguments `(#:tests? #f)) - (propagated-inputs - (list ruby-locale ruby-text ruby-erubi)) - (native-inputs - (list bundler ruby-yard/minimal)) - (synopsis "GNU gettext-like program for Ruby") - (description - "Gettext is a GNU gettext-like program for Ruby. The catalog -file (po-file) used is the same as that used by GNU gettext, allowing you to -use GNU gettext tools for maintenance.") - (home-page "https://ruby-gettext.github.com/") - (license (list license:lgpl3+ license:ruby)))) - -(define-public ruby-packnga - (package - (name "ruby-packnga") - (version "1.0.4") - (source (origin - (method url-fetch) - (uri (rubygems-uri "packnga" version)) - (sha256 - (base32 - "1vv2j0i43s4xid2km5hgrrxqlqpwgq8nlm8kaxfg2531c1vwfsd4")))) - (build-system ruby-build-system) - ;; ruby-test-unit is required to run tests, but that needs ruby-packnga. - ;; To break the dependency cycle we disable tests. - (arguments `(#:tests? #f)) - (propagated-inputs - (list ruby-gettext ruby-yard)) - (native-inputs - (list bundler)) - (synopsis "Utility library to package internationalized libraries") - (description - "Packnga is a library to translate to many languages using YARD.") - (home-page "https://ranguba.org/packnga/") - (license license:lgpl2.0+))) - -(define-public ruby-test-construct - (package - (name "ruby-test-construct") - (version "2.0.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "test_construct" version)) - (sha256 - (base32 - "17q7rw92l7r4zh6rkvzrn4dyl8p8p77217vaa1wf7nsv8k5541vy")))) - (build-system ruby-build-system) - (native-inputs - (list bundler ruby-mocha-1 ruby-rspec)) - (synopsis "Creates temporary files and directories for testing") - (description - "TestConstruct is a @acronym{DSL, Domain Specific Language} for creating -temporary files and directories during tests.") - (home-page "https://github.com/bhb/test_construct") - (license license:expat))) - -(define-public ruby-test-unit - (package - (name "ruby-test-unit") - (version "3.6.0") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/test-unit/test-unit") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0w1m432q3y5v9lkak8yyxadak3z17bsp6afni97i4zjdgfz7niz2")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-power-assert)) - (native-inputs - (list bundler ruby-packnga ruby-yard)) - (synopsis "Unit testing framework for Ruby") - (description "@code{Test::Unit} is unit testing framework for Ruby, based -on xUnit principles. These were originally designed by Kent Beck, creator of -extreme programming software development methodology, for Smalltalk's SUnit. -It allows writing tests, checking results and automated testing in Ruby.") - (home-page "https://test-unit.github.io/") - (license (list license:psfl license:ruby)))) - -(define-public ruby-test-unit/minimal - (hidden-package - (package - (inherit ruby-test-unit) - (arguments - (ensure-keyword-arguments - (package-arguments ruby-test-unit) - (list #:tests? #f))) - (native-inputs '())))) - -(define-public ruby-test-unit-ruby-core - (package - (name "ruby-test-unit-ruby-core") - (version "1.0.5") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "test-unit-ruby-core" version)) - (sha256 - (base32 "1i7fa4hlj6xiqvjaikagwrmiyc21jzyswvd4grjbfqysziwsxygc")))) - (build-system ruby-build-system) - (arguments - (list #:tests? #f)) ; contains no tests - (synopsis "Additional test assertions for Ruby standard libraries") - (description "This package provides additional test assertions for Ruby -standard libraries.") - (home-page "https://github.com/ruby/test-unit-ruby-core") - (license license:ruby))) - -(define-public ruby-mapping - (package - (name "ruby-mapping") - (version "1.1.1") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/ioquatix/mapping") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0yhmqp8mprjqf9m7wzc4hhi50qbfax86r89w852csns0ijaffjjs")))) - (build-system ruby-build-system) - (arguments - (list - #:test-target "spec" - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'patch - (lambda _ - (substitute* "spec/mapping/model_spec.rb" - ;; From https://github.com/ioquatix/mapping/pull/2 - (("offset:") "offset ="))))))) - (native-inputs (list ruby-rspec)) - (synopsis "Map model objects based on their class to a given output model") - (description "The @code{mapping} gem maps model objects based on their -class to a given output model. It is useful for versioning external -interfaces (e.g. JSON APIs) or processing structured data from one format to -another.") - (home-page "https://github.com/ioquatix/mapping") - (license license:expat))) - -(define-public ruby-markaby - (package - (name "ruby-markaby") - (version "0.9.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "markaby" version)) - (sha256 - (base32 - "1j4jc31ycydbkh5h3q6zwidzpavg3g5mbb5lqyaczd3jrq78rd7i")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - ;; Run rspec manually without using the Rakefile, as the versions of - ;; Rake and RSpec 2 are incompatible: - ;; - ;; NoMethodError: undefined method `last_comment' - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - ;; Skip some broken tests, this should be redundant with the - ;; next release - (delete-file "spec/markaby/markaby_test_unit_spec.rb") - (substitute* "spec/markaby/markaby_spec.rb" - (("generated.should == str") - "# Test broken: generated.should == str")) - - (when tests? - (invoke "rspec"))))))) - (propagated-inputs - (list ruby-builder)) - (native-inputs - (list bundler ruby-rspec-2)) - (synopsis "Write HTML pages in pure Ruby") - (description - "Markaby allows writing HTML packages in pure Ruby. This is similar to -the functionality provided by @acronym{ERB, Embedded Ruby}, but without the -mixture of HTML and additional ERB syntax.") - (home-page "https://markaby.github.io/") - (license license:expat))) - -(define-public ruby-maruku - (package - (name "ruby-maruku") - (version "0.7.3") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "maruku" version)) - (sha256 - (base32 - "1r7bxpgnx2hp3g12bjrmdrpv663dfqxsdp0af69kjhxmaxpia56x")))) - (build-system ruby-build-system) - (arguments - '(;; TODO: 3 tests seem to fail due to HTML encoding issues - #:tests? #f - #:phases - (modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (native-inputs - (list ruby-rspec ruby-simplecov ruby-nokogiri-diff)) - (synopsis "Markdown interpreter in Ruby") - (description - "Maruku is a Markdown interpreter in Ruby. It can export Markdown to -HTML, and PDF through LaTeX.") - (home-page "https://github.com/bhollis/maruku") - (license license:expat))) - -(define-public ruby-metaclass - (package - (name "ruby-metaclass") - (version "0.0.4") - (source (origin - (method url-fetch) - (uri (rubygems-uri "metaclass" version)) - (sha256 - (base32 - "0hp99y2b1nh0nr8pc398n3f8lakgci6pkrg4bf2b2211j1f6hsc5")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'add-test-unit-to-search-path - (lambda* (#:key inputs #:allow-other-keys) - (let* ((test-unit (assoc-ref inputs "ruby-test-unit"))) - (substitute* "Rakefile" - (("t\\.libs << \"test\"" line) - (string-append line "; t.libs << \"" - test-unit "/lib/ruby/vendor_ruby" - "/gems/test-unit-" - ,(package-version ruby-test-unit) - "/lib\""))))))))) - (native-inputs - (list bundler ruby-test-unit/minimal)) - (synopsis "Ruby library adding metaclass method to all objects") - (description - "Metaclass is a Ruby library adding a @code{metaclass} method to all Ruby -objects.") - (home-page "https://github.com/floehopper/metaclass") - (license license:expat))) - -(define-public ruby-mkmf-lite - (package - (name "ruby-mkmf-lite") - (version "0.5.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "mkmf-lite" version)) - (sha256 - (base32 - "0rqa5kzswhqkj7r9mqrqz4mjd2vdxsblgybb52gj3mwr1gwvl4c5")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - ;; Avoid rubocop dependency - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (propagated-inputs - (list ruby-ptools)) - (native-inputs - (list ruby-rspec)) - (synopsis "Lightweight alternative to @code{mkmf}") - (description - "@code{mkmf-lite} is a light version of Ruby's @code{mkmf.rb} designed -for use as a library. It does not create packages, builds, or log files of -any kind. Instead, it provides mixin methods that you can use in FFI or tests -to check for the presence of header files, constants, and so on.") - (home-page "https://github.com/djberg96/mkmf-lite") - (license license:asl2.0))) - -(define-public ruby-msgpack - (package - (name "ruby-msgpack") - (version "1.7.5") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/msgpack/msgpack-ruby") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0d759pjgxgrxw18kmk81yv9brc141b4d8gszlp4vdnpvwvb96nln")))) - (build-system ruby-build-system) - (arguments (list #:test-target "spec")) - (native-inputs - (list ruby-rake-compiler - ruby-ruby-memcheck - ruby-rspec - ruby-yard)) - (synopsis "Efficient object serialization library for Ruby") - (description "MessagePack is a binary-based efficient object serialization -library. It enables to exchange structured objects between many languages -like JSON. Unlike JSON, it is very fast and small.") - (home-page "https://msgpack.org/") - (license license:asl2.0))) - -(define-public ruby-mspec - (package - (name "ruby-mspec") - (version "1.9.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "mspec" version)) - (sha256 - (base32 - "0wmyh2n40m4srwdx9z6h6g6p46k02pzyhcsja3hqcw5h5b0hfmhd")))) - (build-system ruby-build-system) - (arguments - '(;; TODO: 3 test failures - ;; ./spec/mocks/mock_spec.rb:82 - ;; ./spec/utils/name_map_spec.rb:151 - ;; ./spec/utils/name_map_spec.rb:155 - #:tests? #f - #:phases - (modify-phases %standard-phases - (add-after 'extract-gemspec 'change-dependency-constraints - (lambda _ - (substitute* "mspec.gemspec" - (("rake.*") "rake>)\n") - (("rspec.*") "rspec>)\n")))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec" "spec"))))))) - (native-inputs - (list bundler ruby-rake ruby-rspec)) - (synopsis "MSpec is a specialized framework for RubySpec") - (description - "MSpec is a specialized framework that is syntax-compatible with RSpec 2 -for basic features. MSpec contains additional features that assist in writing -specs for Ruby implementations in ruby/spec.") - (home-page "http://rubyspec.org") - (license license:expat))) - -(define-public ruby-mysql2 - (package - (name "ruby-mysql2") - (version "0.5.2") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/brianmario/mysql2") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "11lvfgc2rmvkm52jp0nbi6pvhk06klznghr7llldfw8basl9n5wv")))) - (build-system ruby-build-system) - (arguments - '(;; TODO: Tests require a running MySQL/MariaDB service - #:tests? #f - #:phases - (modify-phases %standard-phases - (replace 'replace-git-ls-files - (lambda _ - (substitute* "mysql2.gemspec" - (("git ls-files .*`") "find . -type f |sort`")))) - (add-before 'install 'set-MAKEFLAGS - (lambda* (#:key outputs #:allow-other-keys) - (setenv "MAKEFLAGS" - (string-append - "V=1 " - "prefix=" (assoc-ref outputs "out"))))) - ;; Move the 'check phase to after 'install, as then you can test - ;; using the installed mysql2 gem in the store. - (delete 'check) - (add-after 'install 'check - (lambda* (#:key outputs tests? #:allow-other-keys) - (setenv "GEM_PATH" - (string-append - (getenv "GEM_PATH") - ":" - (assoc-ref outputs "out") "/lib/ruby/vendor_ruby")) - (when tests? - (invoke "rspec"))))))) - (inputs - `(("mariadb-dev" ,mariadb "dev") - ("zlib" ,zlib))) - (native-inputs - (list ruby-rspec ruby-rake-compiler)) - (synopsis "MySQL library for Ruby, binding to libmysql") - (description - "This package provides a simple, fast MySQL library for Ruby, binding to -libmysql.") - (home-page "https://github.com/brianmario/mysql2") - (license license:expat))) - -(define-public ruby-blankslate - (package - (name "ruby-blankslate") - (version "3.1.3") - (source (origin - (method url-fetch) - (uri (rubygems-uri "blankslate" version)) - (sha256 - (base32 - "0fwkb4d1j9gc7vdwn2nxvwgy2g5wlag4c4bp7bl85jvq0kgp6cyx")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda _ (invoke "rspec" "spec/")))))) - (native-inputs - (list bundler ruby-rspec)) - (synopsis "Abstract base class with no predefined methods") - (description - "BlankSlate provides an abstract base class with no predefined -methods (except for @code{__send__} and @code{__id__}). BlankSlate is useful -as a base class when writing classes that depend upon -@code{method_missing} (e.g. dynamic proxies).") - (home-page "https://github.com/masover/blankslate") - (license license:expat))) - -(define-public ruby-bond - (package - (name "ruby-bond") - (version "0.5.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "bond" version)) - (sha256 - (base32 - "1r19ifc4skyl2gxnifrxa5jvbbay9fb2in79ppgv02b6n4bhsw90")))) - (build-system ruby-build-system) - (arguments - ;; The test suite fails (see: - ;; https://github.com/cldwalker/bond/issues/46). - `(#:tests? #f)) - (native-inputs - (list ruby-bacon ruby-bacon-bits ruby-mocha-on-bacon)) - (synopsis "Bond can provide custom autocompletion for arguments, methods -and more") - (description - "Bond can autocomplete argument(s) to methods, uniquely completing per -module, per method and per argument. Bond provides a configuration system and -a DSL for creating custom completions and completion rules. Bond can also -load completions that ship with gems. Bond is able to offer more than irb's -completion since it uses the full line of input when completing as opposed to -irb's last-word approach.") - (home-page "http://tagaholic.me/bond/") - (license license:expat))) - -(define-public ruby-idn-ruby - (package - (name "ruby-idn-ruby") - (version "0.1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "idn-ruby" version)) - (sha256 - (base32 - "07vblcyk3g72sbq12xz7xj28snpxnh3sbcnxy8bglqbfqqhvmawr")))) - (build-system ruby-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - (delete 'check) - (add-after 'install 'check - (lambda* (#:key tests? outputs #:allow-other-keys) - (when tests? - (let* ((gem-file (cadr (find-files "." "\\.gem"))) - (name-and-version (basename gem-file ".gem"))) - (apply invoke - "ruby" "--verbose" - (string-append "-I" - (assoc-ref outputs "out") - "/lib/ruby/vendor_ruby/gems/" - name-and-version - "/lib") - (find-files "./test" ".*\\.rb"))))))))) - (inputs - (list libidn)) - (synopsis "Ruby Bindings for the GNU LibIDN library") - (description - "Ruby Bindings for the GNU LibIDN library, an implementation of the -Stringprep, Punycode and IDNA specifications. These are used to encode and -decode internationalized domain + names according to the IDNA2003 -specifications. - -Included are the most important parts of the Stringprep, Punycode and IDNA -APIs like performing Stringprep processings, encoding to and decoding from -Punycode strings and converting entire domain names to and from the ACE -encoded form.") - (home-page "https://github.com/deepfryed/idn-ruby") - (license license:asl2.0))) - -(define-public ruby-insist - (package - (name "ruby-insist") - (version "1.0.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "insist" version)) - (sha256 - (base32 - "0bw3bdwns14mapbgb8cbjmr0amvwz8y72gyclq04xp43wpp5jrvg")))) - (build-system ruby-build-system) - (arguments (list #:phases #~(modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "ruby" "test/testing.rb"))))))) - (synopsis "Testing tool for Ruby") - (description "This package provides a simple block-driven assertion -library for both testing and for production code that attempts to make test -definitions more readable.") - (home-page "https://github.com/jordansissel/ruby-insist/") - (license license:asl2.0))) - -(define-public ruby-introspection - (package - (name "ruby-introspection") - (version "0.0.4") - (source (origin - (method url-fetch) - (uri (rubygems-uri "introspection" version)) - (sha256 - (base32 - "1y2nbijkc0zlfmn9ss6588ilarq2kbn2i7w7pwwsli66dj84zgca")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-metaclass)) - (native-inputs - (list bundler - ruby-blankslate)) - (synopsis "Dynamic inspection of the method hierarchy on a Ruby object") - (description - "Introspection provides tools to inspect the hierarchy of method -definitions on a Ruby object.") - (home-page "https://github.com/floehopper/introspection") - (license license:expat))) - -(define-public ruby-redcarpet - (package - (name "ruby-redcarpet") - (version "3.5.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "redcarpet" version)) - (sha256 - (base32 - "0skcyx1h8b5ms0rp2zm3ql6g322b8c1adnkwkqyv7z3kypb4bm7k")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - ;; The gem archive does not include the conformance tests. - (add-after 'unpack 'disable-conformance-tests - (lambda _ - (substitute* "Rakefile" - (("task :test => %w\\[test:unit test:conformance\\]") - "task :test => %w[test:unit]"))))))) - (native-inputs - (list bundler ruby-test-unit ruby-rake-compiler)) - (synopsis "Extensible Markdown to (X)HTML converter") - (description - "Redcarpet is an extensible Ruby library for Markdown processing and -conversion to (X)HTML.") - (home-page "https://github.com/vmg/redcarpet") - (license license:expat))) - -(define-public ruby-reline - (package - (name "ruby-reline") - (version "0.3.3") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/ruby/reline") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1papa4f4prjml9qk6yydi4k5a4zgbzmxmbhd8fz9kfg1i34s35cw")))) - (build-system ruby-build-system) - (propagated-inputs (list ruby-io-console)) - (synopsis "GNU Readline or Editline implementation in Ruby") - (description "Reline is a pure Ruby alternative GNU Readline or Editline -implementation.") - (home-page "https://github.com/ruby/reline") - (license (list license:bsd-2 license:ruby)))) ;dual license - -(define-public ruby-rerun - (package - (name "ruby-rerun") - (version "0.13.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "rerun" version)) - (sha256 - (base32 - "1cskvxk8z8vmfail8na7hj91hs0qnvds9nydj04zi3dbddgnbmvz")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; No included tests - (propagated-inputs - (list ruby-listen)) - (synopsis "Run a process, and restart when some monitored files change") - (description - "Rerun is a tool to launch programs, then monitor the file system, and -restart the program when any of the monitored files change. It's written in -Ruby, but can be used for all programs.") - (home-page "https://github.com/alexch/rerun/") - (license license:expat))) - -(define-public ruby-maxitest - (package - (name "ruby-maxitest") - (version "5.1.0") - (home-page "https://github.com/grosser/maxitest") - (source (origin - ;; Pull from git because the gem does not contain tests. - (method git-fetch) - (uri (git-reference - (url home-page) - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0qj410krfm497ggmf71xpnabbb6814y0585by4nlzyjvg9hpgg3m")))) - (build-system ruby-build-system) - (arguments - (list - #:test-target "default" - #:phases - #~(modify-phases %standard-phases - (replace 'replace-git-ls-files - (lambda _ - (substitute* "maxitest.gemspec" - (("`git ls-files lib/ bin/ MIT-LICENSE Readme.md`") - "`find lib/ bin/ MIT-LICENSE Readme.md -type f | sort`")))) - (add-before 'check 'remove-version-constraints - (lambda _ - ;; Don't use specific versions of dependencies, instead - ;; take whatever is available in Guix. - (delete-file "Gemfile.lock"))) - (add-before 'check 'add-mtest-on-PATH - (lambda _ - ;; Tests use 'mtest' which is not automatically added on - ;; PATH. - (setenv "PATH" (string-append (getcwd) "/bin:" - (getenv "PATH")))))))) - (native-inputs - (list procps - ruby-bump - ruby-rspec - ruby-wwtd)) - (propagated-inputs - (list ruby-minitest)) - (synopsis "Minitest with extra features") - (description - "Maxitest is a wrapper around Minitest with extra functionality such -as timeouts, an @command{mtest} executable that can run tests by line -number, support for interrupted tests, better backtraces, and more.") - (license license:expat))) - -(define-public ruby-mocha - (package - (name "ruby-mocha") - (version "2.0.4") - (source (origin - (method url-fetch) - (uri (rubygems-uri "mocha" version)) - (sha256 - (base32 - "18xn9gm9yypavy9yck71fplan19hy5697mwd1rwzz7vizh3ip7bd")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-before 'check 'remove-rubocop-dependency - (lambda _ - ;; Disable dependency on Rubocop, which is just a linter, - ;; and would introduce a circular dependency. - (substitute* "Gemfile" - ((".*rubocop.*") ""))))))) - (propagated-inputs - (list ruby-ruby2-keywords)) - (native-inputs - (list ruby-psych-3 - ruby-introspection)) - (synopsis "Mocking and stubbing library for Ruby") - (description - "Mocha is a mocking and stubbing library with JMock/SchMock syntax, which -allows mocking and stubbing of methods on real (non-mock) classes.") - (home-page "https://mocha.jamesmead.org/") - ;; Mocha can be used with either license at the users choice. - (license (list license:expat license:ruby)))) - -(define-public ruby-mocha-1 - (package - (inherit ruby-mocha) - (version "1.13.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "mocha" version)) - (sha256 - (base32 - "15s53ggsykk69kxqvs4416s8yxdhz6caggva55n8sjgy4ixzwp10")))) - (arguments - '(#:tests? #f)))) - -(define-public ruby-mocha-on-bacon - (package - (name "ruby-mocha-on-bacon") - (version "0.2.3") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "mocha-on-bacon" version)) - (sha256 - (base32 - "1h49b33rq889hn8x3wp9byczl91va16jh1w4d2wyy4yj23icdrcp")))) - (build-system ruby-build-system) - (arguments - ;; rubygems.org release missing tests - '(#:tests? #f)) - (propagated-inputs (list ruby-mocha)) - (synopsis "Mocha adapter for Bacon") - (description - "This package provides a Mocha adapter for Bacon, allowing you to use the -Mocha stubbing and mocking library with Bacon, a small RSpec clone.") - (home-page - "https://github.com/alloy/mocha-on-bacon") - (license license:expat))) - -(define-public ruby-net-ssh - (package - (name "ruby-net-ssh") - (version "7.1.0") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/net-ssh/net-ssh") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1dkbyzpl31jygnnva5sa754vk42q1fih4qz5ipqw5gqiafrrlb91")))) - (build-system ruby-build-system) - (native-inputs - (list bundler - ruby-bcrypt-pbkdf - ruby-ed25519 - ruby-mocha - ruby-rbnacl - ruby-test-unit - ruby-x25519)) - (synopsis "Ruby implementation of the SSH2 client protocol") - (description "@code{Net::SSH} is a pure-Ruby implementation of the SSH2 -client protocol. It allows you to write programs that invoke and interact -with processes on remote servers, via SSH2.") - (home-page "https://github.com/net-ssh/net-ssh") - (license license:expat))) - -(define-public ruby-net-scp - (package - (name "ruby-net-scp") - (version "4.0.1.rc3") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/net-ssh/net-scp") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "136mb8idxdkxkadx827027nyxcsvvv2wivz5dnjqy8g6ic0h9dzn")))) - (build-system ruby-build-system) - (native-inputs - (list bundler ruby-test-unit ruby-mocha-1)) - (propagated-inputs - (list ruby-net-ssh)) - (synopsis "Pure-Ruby SCP client library") - (description "@code{Net::SCP} is a pure-Ruby implementation of the SCP -client protocol.") - (home-page "https://github.com/net-ssh/net-scp") - (license license:expat))) - -(define-public ruby-net-sftp - (package - (name "ruby-net-sftp") - (version "4.0.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "net-sftp" version)) - (sha256 - (base32 - "0r33aa2d61hv1psm0l0mm6ik3ycsnq8symv7h84kpyf2b7493fv5")))) - (build-system ruby-build-system) - (propagated-inputs (list ruby-net-ssh)) - (synopsis "Pure Ruby implementation of the SFTP client protocol") - (description - "@code{Net::SFTP} is a pure Ruby implementation of the SFTP -protocol (specifically, versions 1 through 6 of the SFTP protocol). Note that -this is the “Secure File Transfer Protocol”, typically run over an SSH -connection, and has nothing to do with the FTP protocol.") - (home-page "https://github.com/net-ssh/net-sftp") - (license license:expat))) - -(define-public ruby-minima - (package - (name "ruby-minima") - (version "2.5.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "minima" version)) - (sha256 - (base32 - "1gk7jmriiswda1ykjzpsw9cpiya4m9n0yrh0h6xnrc8zcfy543jj")))) - (arguments - (list #:phases #~(modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "jekyll" "build")) - ;; Without the following, an attempt to remove - ;; minima-<version>.gem is made during installation, - ;; which will fail. - (delete-file #$(string-append "_site/minima-" - version ".gem"))))))) - (build-system ruby-build-system) - (propagated-inputs (list jekyll ruby-jekyll-feed ruby-jekyll-seo-tag)) - (synopsis "Beautiful, minimal theme for Jekyll") - (description - "Minima is a one-size-fits-all Jekyll theme for writers. It's Jekyll's -default (and first) theme. It's what you get when you run @code{jekyll new}.") - (home-page "https://github.com/jekyll/minima") - (license license:expat))) - -(define-public ruby-minitest - (package - (name "ruby-minitest") - (version "5.18.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "minitest" version)) - (sha256 - (base32 - "1kg9wh7jlc9zsr3hkhpzkbn0ynf4np5ap9m2d8xdrb8shy0y6pmb")))) - (build-system ruby-build-system) - (native-inputs (list ruby-hoe)) - (home-page "https://github.com/minitest/minitest") - (synopsis "Small test suite library for Ruby") - (description "Minitest provides a complete suite of Ruby testing -facilities supporting TDD, BDD, mocking, and benchmarking.") - (license license:expat))) - -(define-public ruby-minitest-around - (package - (name "ruby-minitest-around") - (version "0.5.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "minitest-around" version)) - (sha256 - (base32 - "15ywnqx0719jl9c25yqfshmwcir57i5f4hr1ra9v9vay9ylcwndr")))) - (build-system ruby-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - (add-after 'extract-gemspec 'remove-unnecessary-dependency-versions - (lambda _ - (substitute* "minitest-around.gemspec" - (("%q<cucumber>.*") "%q<cucumber>, [\">= 0\"])\n"))))))) - (propagated-inputs - (list ruby-minitest)) - (native-inputs - (list bundler ruby-cucumber ruby-bump ruby-test-construct)) - (synopsis "Run code around tests in Minitest") - (description - "This library provides a way to run code around tests in Minitest, -written using either the unit test or spec style.") - (home-page "https://github.com/splattael/minitest-around") - (license license:expat))) - -(define-public ruby-minitest-retry - (package - (name "ruby-minitest-retry") - (version "0.2.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "minitest-retry" version)) - (sha256 - (base32 - "1c1zq0b1a9y0hbqphq4ybijnjldlis1g6kyhx92q2ynnqfmzhfga")))) - (build-system ruby-build-system) - (propagated-inputs (list ruby-minitest)) - (synopsis "Minitest extension to re-run failing tests") - (description "This package provides the @code{Minitest::Retry} class, -which extends Minitest to allow retrying tests when they fail.") - (home-page "https://github.com/y-yagi/minitest-retry") - (license license:expat))) - -(define-public ruby-minitest-sprint - (package - (name "ruby-minitest-sprint") - (version "1.1.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "minitest-sprint" version)) - (sha256 - (base32 - "179d6pj56l9xzm46fqsqj10mzjkr1f9fv4cxa8wvchs97hqz33w1")))) - (build-system ruby-build-system) - (native-inputs - (list ruby-hoe ruby-minitest)) - (synopsis "Fast test suite runner for minitest") - (description "Minitest-sprint is a test runner for minitest that makes it -easier to re-run individual failing tests.") - (home-page "https://github.com/seattlerb/minitest-sprint") - (license license:expat))) - -(define-public ruby-minitest-stub-const - (package - (name "ruby-minitest-stub-const") - (version "0.6") ;for Rakefile - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/adammck/minitest-stub-const") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0cz4r9fxplx94c7wakx0998n2gv7l21prn8pfpw6z2c33k3g2xar")))) - (build-system ruby-build-system) - (synopsis "Stub constants for the duration of a block in MiniTest") - (description "This package provides a MiniTest extension to stub constants -for the duration of a block in MiniTest.") - (home-page "https://github.com/adammck/minitest-stub-const") - (license license:expat))) - -(define-public ruby-minitest-bacon - (package - (name "ruby-minitest-bacon") - (version "1.0.3") - (source (origin - (method url-fetch) - (uri (rubygems-uri "minitest-bacon" version)) - (sha256 - (base32 - "0zhdwcl6bgha61qiyfvr7zs7ywaxc33wmj9xhxl8jdmpdvifvfaj")))) - (build-system ruby-build-system) - (native-inputs - (list ruby-hoe)) - (inputs - (list ruby-minitest)) - (synopsis "Bacon compatibility library for minitest") - (description "Minitest-bacon extends minitest with bacon-like -functionality, making it easier to migrate test suites from bacon to minitest.") - (home-page "https://github.com/seattlerb/minitest-bacon") - (license license:expat))) - -(define-public ruby-minitest-focus - (package - (name "ruby-minitest-focus") - (version "1.3.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "minitest-focus" version)) - (sha256 - (base32 - "13kd2dkd9akfb99ziqndz9mir5iynyfyj2l45mcibab6mq5k8g67")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-minitest)) - (native-inputs - (list ruby-hoe)) - (synopsis "Allows a few specific tests to be focused on") - (description - "@code{minitest-focus} gives the ability focus on a few tests with ease -without having to use command-line arguments. It introduces a @code{focus} -class method for use in testing classes, specifying that the next defined test -is to be run.") - (home-page "https://github.com/seattlerb/minitest-focus") - (license license:expat))) - -(define-public ruby-minitest-power-assert - (package - (name "ruby-minitest-power-assert") - (version "0.3.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "minitest-power_assert" version)) - (sha256 - (base32 - "1dazl6nbxjvvmi5jamrsygkz396s29b7cd841ni6qy4izk8jd9b7")))) - (build-system ruby-build-system) - (propagated-inputs (list ruby-minitest ruby-power-assert)) - (synopsis "Power Assert implementation for Minitest") - (description "This gem provides a Power Assert implementation for -Minitest. It is inspired by the @code{test-unit-power_assert} gem.") - (home-page "https://github.com/hsbt/minitest-power_assert") - (license license:bsd-2))) - -(define-public ruby-minitest-profile - (package - (name "ruby-minitest-profile") - (version "0.0.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "minitest-profile" version)) - (sha256 - (base32 - "13h4nwbq6yv7hsaa7dpj90lry4rc5qqnpzvm9n2s57mm2xi31xfa")))) - (build-system ruby-build-system) - (synopsis "Display the slowest tests in a MiniTest suite") - (description "This package provides a MiniTest plugin for displaying the -slowest tests in a minitest suite.") - (home-page "https://github.com/nmeans/minitest-profile") - (license license:expat))) - -(define-public ruby-minitest-proveit - (package - (name "ruby-minitest-proveit") - (version "1.0.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "minitest-proveit" version)) - (sha256 - (base32 - "0k1hpr8lgkgygfivgcsnnib7xjlf9ribgpn7yidvb4q0l0q2yfmr")))) - (build-system ruby-build-system) - (native-inputs (list ruby-hoe)) - (propagated-inputs (list ruby-minitest)) - (synopsis "Assertion-based tests extension for MiniTest") - (description "The @code{minitest-proveit} MiniTest extension ensures all -tests to prove success (via at least one assertion) rather than rely on the -absence of failure.") - (home-page "https://github.com/seattlerb/minitest-proveit") - (license license:expat))) - -(define-public ruby-minitest-moar - (package - (name "ruby-minitest-moar") - (version "0.0.4") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "minitest-moar" version)) - (sha256 - (base32 - "0nb83blrsab92gcy6nfpw39njys7zisia8pw4igzzfzfl51cis0x")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-before 'check 'clean-dependencies - (lambda _ - ;; Remove all gems defined in the Gemfile because these are not - ;; truly needed. - (substitute* "Gemfile" - (("gem .*") "")) - ;; Remove byebug as not needed to run tests. - (substitute* "test/test_helper.rb" - (("require 'byebug'") ""))))))) - (native-inputs - (list bundler ruby-minitest)) - (synopsis "Extra features and changes to MiniTest") - (description "@code{MiniTest Moar} add some additional features and -changes some default behaviours in MiniTest. For instance, Moar replaces the -MiniTest @code{Object#stub} with a global @code{stub} method.") - (home-page "https://github.com/dockyard/minitest-moar") - (license license:expat))) - -(define-public ruby-minitest-bonus-assertions - (package - (name "ruby-minitest-bonus-assertions") - (version "3.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "minitest-bonus-assertions" version)) - (sha256 - (base32 - "1hbq9jk904xkz868yha1bqcm6azm7kmjsll2k4pn2nrcib508h2a")))) - (build-system ruby-build-system) - (arguments - (list - #:tests? #f ; Test suite has bitrotted. - #:phases - #~(modify-phases %standard-phases - (add-before 'check 'clean-dependencies - (lambda _ - ;; Remove unneeded require statement that would entail another - ;; dependency. - (substitute* "test/minitest_config.rb" - (("require 'minitest/bisect'") ""))))))) - (native-inputs - (list ruby-hoe - ruby-minitest-focus - ruby-minitest-moar)) - (synopsis "Bonus assertions for @code{Minitest}") - (description - "Minitest bonus assertions provides extra MiniTest assertions. For -instance, it provides @code{assert_true}, @code{assert_false} and -@code{assert_set_equal}.") - (home-page "https://github.com/halostatue/minitest-bonus-assertions") - (license license:expat))) - -(define-public ruby-minitest-reporters - (package - (name "ruby-minitest-reporters") - (version "1.3.6") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "minitest-reporters" version)) - (sha256 - (base32 - "1a3das80rwgys5rj48i5ly144nvszyqyi748bk9bss74jblcf5ay")))) - (build-system ruby-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - ;; Remove the requirement on Rubocop, as it isn't useful to run, and - ;; including it as an input can lead to circular dependencies. - (add-after 'unpack 'remove-rubocop-from-Rakefile - (lambda _ - (substitute* "Rakefile" - (("require 'rubocop/rake\\_task'") "") - (("RuboCop::RakeTask\\.new\\(:rubocop\\)") "[].each")))) - (add-after 'extract-gemspec 'remove-rubocop-from-gemspec - (lambda _ - (substitute* "minitest-reporters.gemspec" - ((".*%q<rubocop>.*") "\n"))))))) - (propagated-inputs - (list ruby-ansi ruby-builder ruby-minitest ruby-progressbar)) - (native-inputs - (list bundler ruby-maruku)) - (synopsis "Enhanced reporting for Minitest tests") - (description - "@code{minitest/reporters} provides a custom Minitest runner to improve -how the test state is reported. A number of different reporters are -available, including a spec reporter, progress bar reporter, a HTML -reporter.") - (home-page "https://github.com/kern/minitest-reporters") - (license license:expat))) - -(define-public ruby-minitest-rg - (package - (name "ruby-minitest-rg") - (version "5.2.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "minitest-rg" version)) - (sha256 - (base32 - "0sq509ax1x62rd0w10b0hcydcxyk5bxxr3fwrgxv02r8drq2r354")))) - (build-system ruby-build-system) - (arguments - ;; Some tests fail even outside Guix, so disable tests. - ;; https://github.com/blowmage/minitest-rg/issues/12 - ;; https://github.com/blowmage/minitest-rg/pull/13 - `(#:tests? #f)) - (propagated-inputs - (list ruby-minitest)) - (synopsis "Coloured output for Minitest") - (description - "@code{minitest-rg} changes the colour of the output from Minitest.") - (home-page "https://blowmage.com/minitest-rg/") - (license license:expat))) - -(define-public ruby-minitest-global-expectations - (package - (name "ruby-minitest-global-expectations") - (version "1.0.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "minitest-global_expectations" - version)) - (sha256 - (base32 - "1pp3k2608spj4kvqy2y16hs18an917g6vwgvphrfhjviac83090x")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-minitest)) - (synopsis "Adjust minitest behaviour for calling expectation methods") - (description - "Minitest-global_expectations allows continued use of expectation methods -on all objects. Calling expectation methods on all objects was deprecated in -minitest 5.12, and is planned to be removed from minitest 6.") - (home-page "https://github.com/jeremyevans/minitest-global_expectations") - (license license:expat))) - -(define-public ruby-minitest-hooks - (package - (name "ruby-minitest-hooks") - (version "1.5.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "minitest-hooks" version)) - (sha256 - (base32 "11jb31dl5kbpyl3kgxql0p7da9066r2aqw54y5q6cni9nmld3zf5")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; No tests bundled. - (native-inputs - (list ruby-sequel ruby-sqlite3)) - (synopsis "Hooks for the minitest framework") - (description - "Minitest-hooks adds @code{around}, @code{before_all}, @code{after_all}, -@code{around_all} hooks for Minitest. This allows, for instance, running each -suite of specs inside a database transaction, running each spec inside its own -savepoint inside that transaction. This can significantly speed up testing -for specs that share expensive database setup code.") - (home-page "https://github.com/jeremyevans/minitest-hooks") - (license license:expat))) - -(define-public ruby-daemons - (package - (name "ruby-daemons") - (version "1.2.5") - (source (origin - (method url-fetch) - (uri (rubygems-uri "daemons" version)) - (sha256 - (base32 - "15smbsg0gxb7nf0nrlnplc68y0cdy13dm6fviavpmw7c630sring")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f)) ; no test suite - (synopsis "Daemonize Ruby programs") - (description "Daemons provides a way to wrap existing Ruby scripts to be -run as a daemon and to be controlled by simple start/stop/restart commands.") - (home-page "https://github.com/thuehlinger/daemons") - (license license:expat))) - -(define-public ruby-dalli - (package - (name "ruby-dalli") - (version "3.2.4") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/petergoldstein/dalli") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1hhqqv1j3zd2y0vr6maaabsflrvkf1x0i6z8n725mhqydp3f9gwp")))) - (build-system ruby-build-system) - ;; Disable tests to avoid a dependency cycle with ruby-activesupport, - ;; through ruby-ruby-prof. - (arguments (list #:tests? #f)) - (synopsis "High performance memcached client for Ruby") - (description "Dalli is a high performance pure Ruby client for accessing -memcached servers. Dalli supports: - -@itemize -@item Simple and complex memcached configurations -@item Fail-over between memcached instances -@item Fine-grained control of data serialization and compression -@item Thread-safe operation -@item SSL/TLS connections to memcached -@item SASL authentication. -@end itemize - -The name is a variant of Salvador Dali for his famous painting The Persistence -of Memory.") - (home-page "https://github.com/petergoldstein/dalli") - (license license:expat))) - -(define-public ruby-data_uri - (package - (name "ruby-data_uri") - (version "0.1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "data_uri" version)) - (sha256 - (base32 - "0fzkxgdxrlbfl4537y3n9mjxbm28kir639gcw3x47ffchwsgdcky")))) - (build-system ruby-build-system) - (synopsis "URI class for parsing data URIs") - (description - "Data @acronym{URI, universal resource identifier}s allow resources to be -embedded inside a URI. The URI::Data class provides support for parsing these -URIs using the normal URI.parse method.") - (home-page "https://github.com/dball/data_uri") - (license license:expat))) - -(define-public ruby-debug - (package - (name "ruby-debug") - (version "1.7.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "debug" version)) - (sha256 - (base32 - "0x59508j69w9p275gabysv521n210pd3n060gqfgsiqjms1h0ldf")))) - (build-system ruby-build-system) - (arguments (list #:test-target "test_all")) - (propagated-inputs (list ruby-irb ruby-reline)) - (synopsis "Debugging functionality for Ruby") - (description "Debugging functionality for Ruby. This is completely -rewritten debug.rb which was contained by the ancient Ruby versions. It is -included with Ruby itself, but this package is made available so that the -latest version can be made available independently from Ruby.") - (home-page "https://github.com/ruby/debug") - (license license:bsd-2))) - -(define-public ruby-deep-merge - (package - (name "ruby-deep-merge") - (version "1.2.1") - (home-page "https://github.com/danielsdeleo/deep_merge") - ;; The Rubygem source does not contain the gemspec required for tests. - (source (origin - (method git-fetch) - (uri (git-reference (url home-page) (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0c9rk23ilhc0n4489y6lda2wzphpzh6ish6fahlbpjhxn82wb931")))) - (build-system ruby-build-system) - (native-inputs - (list ruby-minitest)) - (synopsis "Recursively merge hashes") - (description - "Deep Merge is a set of utility functions for @code{Hash}. It permits -you to merge elements inside a hash together recursively.") - (license license:expat))) - -(define-public ruby-delayed-job - (package - (name "ruby-delayed-job") - (version "4.1.11") - (source (origin - (method url-fetch) - (uri (rubygems-uri "delayed_job" version)) - (sha256 - (base32 - "0s2xg72ljg4cwmr05zi67vcyz8zib46gvvf7rmrdhsyq387m2qcq")))) - (build-system ruby-build-system) - (arguments - (list #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'disable-bundler - (lambda _ - (substitute* "Rakefile" - (("require 'bundler/setup'") "") - (("Bundler::GemHelper\\.install_tasks") "")))) - (add-after 'unpack 'disable-rubocop - (lambda _ - (substitute* "Rakefile" - (("require 'rubocop/rake_task'") "") - (("RuboCop::RakeTask.new") "")))) - (add-after 'extract-gemspec 'remove-dependency-on-actionmailer - (lambda _ - (substitute* "spec/helper.rb" - (("require 'action_mailer'") "")) - (substitute* "delayed_job.gemspec" - (("\"spec/performable_mailer_spec.rb\".freeze, ") "")) - (delete-file "spec/performable_mailer_spec.rb")))))) - (native-inputs - (list ruby-activerecord - ruby-rspec - ruby-simplecov - ruby-simplecov-lcov - ruby-zeitwerk - ruby-mini-portile-2)) - (propagated-inputs - (list ruby-activesupport)) - (synopsis "Asynchronous background tasks execution library") - (description "Delayed_job (or DJ) encapsulates the common pattern of -asynchronously executing longer tasks in the background. It is a direct -extraction from Shopify where the job table is responsible for a multitude of -core tasks.") - (home-page "https://github.com/collectiveidea/delayed_job") - (license license:expat))) - -(define-public ruby-git - (package - (name "ruby-git") - (version "1.3.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "git" version)) - (sha256 - (base32 - "1waikaggw7a1d24nw0sh8fd419gbf7awh000qhsf411valycj6q3")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f ; no tests - #:phases (modify-phases %standard-phases - (add-after 'install 'patch-git-binary - (lambda* (#:key inputs outputs #:allow-other-keys) - ;; Make the default git binary an absolute path to the - ;; store. - (let ((git (search-input-file inputs "/bin/git")) - (config (string-append - (assoc-ref outputs "out") - "/lib/ruby/vendor_ruby/gems/git-" - ,version "/lib/git/config.rb"))) - (substitute* (list config) - (("'git'") - (string-append "'" git "'"))))))))) - (inputs - (list git)) - (synopsis "Ruby wrappers for Git") - (description "Ruby/Git is a Ruby library that can be used to create, read -and manipulate Git repositories by wrapping system calls to the git binary.") - (home-page "https://github.com/schacon/ruby-git") - (license license:expat))) - -(define-public ruby-hocon - (package - (name "ruby-hocon") - (version "1.4.0") - (home-page "https://github.com/puppetlabs/ruby-hocon") - (source (origin - (method git-fetch) - (uri (git-reference (url home-page) (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "04wgv0pwrghawnl6qp346z59fvp9v37jymq8p0lsrzxa6nvrykmk")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (if tests? - (invoke "rspec") - (format #t "test suite not run~%"))))))) - (native-inputs - (list bundler ruby-rspec)) - (synopsis "HOCON config library") - (description - "This package provides Ruby support for the @acronym{HOCON, -Human-Optimized Config Object Notation} configuration file format. It -supports parsing and modifying HOCON and JSON files, and rendering parsed -objects back to a @code{String}.") - (license license:asl2.0))) - -(define-public ruby-slop - (package - (name "ruby-slop") - (version "4.10.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "slop" version)) - (sha256 - (base32 - "1iyrjskgxyn8i1679qwkzns85p909aq77cgx2m4fs5ygzysj4hw4")))) - (build-system ruby-build-system) - (synopsis "Ruby command line option parser") - (description "Slop provides a Ruby domain specific language for gathering -options and parsing command line flags.") - (home-page "https://github.com/leejarvis/slop") - (license license:expat))) - -(define-public ruby-slop-3 - (package (inherit ruby-slop) - (version "3.6.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "slop" version)) - (sha256 - (base32 - "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n")))))) - -(define-public ruby-multi-xml - (package - (name "ruby-multi-xml") - (version "0.6.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "multi_xml" version)) - (sha256 - (base32 - "0lmd4f401mvravi1i1yq7b2qjjli0yq7dfc4p1nj5nwajp7r6hyj")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; No included tests - (synopsis "Swappable XML backends for Ruby") - (description - "@code{MultiXml} provides swappable XML backends utilizing either LibXML, -Nokogiri, Ox, or REXML.") - (home-page "https://github.com/sferik/multi_xml") - (license license:expat))) - -(define-public ruby-multipart-parser - (package - (name "ruby-multipart-parser") - (version "0.1.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "multipart-parser" version)) - (sha256 - (base32 - "0xb4p475yrfm883h9kn80a021myn17dvs50wpa1djzcmlq7p0882")))) - (build-system ruby-build-system) - (arguments - (list - #:phases #~(modify-phases %standard-phases - (add-after 'unpack 'skip-failing-test - ;; One test fails for unknown reasons (see: - ;; https://github.com/danabr/multipart-parser/issues/7). - (lambda _ - (substitute* "test/multipart_parser/reader_test.rb" - (("def test_long" all) - (string-append all "\n return true")))))))) - (synopsis "Parser for multipart MIME messages") - (description "@code{multipart-parser} is a simple parser for multipart -MIME messages, written in Ruby, based on felixge/node-formidable's parser. It -has the following characteristics: -@itemize -@item Pure Ruby -@item Event-driven API -@item Only supports one level of multipart parsing -@item Does not perform I/O -@item Does not depend on any other library. -@end itemize") - (home-page "https://github.com/danabr/multipart-parser") - (license license:expat))) - -(define-public ruby-multipart-post - (package - (name "ruby-multipart-post") - (version "2.0.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "multipart-post" version)) - (sha256 - (base32 - "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x")))) - (build-system ruby-build-system) - (native-inputs - (list bundler)) - (synopsis "Multipart POST library for Ruby") - (description "Multipart-Post Adds multipart POST capability to Ruby's -net/http library.") - (home-page "https://github.com/nicksieger/multipart-post") - (license license:expat))) - -(define-public ruby-multi-json - (package - (name "ruby-multi-json") - (version "1.15.0") - (source - (origin - (method git-fetch) - ;; Tests are not distributed at rubygems.org so download from GitHub - ;; instead. - (uri (git-reference - (url "https://github.com/intridea/multi_json") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0mkdvy6i00yyksjvnv6znh7wf89j9506qzzjq6bsbmbkyqrszp4d")))) - (build-system ruby-build-system) - (arguments - (list - ;; TODO Tests don't currently work with Ruby 3 - #:tests? #f - #:phases - #~(modify-phases %standard-phases - (add-before 'check 'pre-check - (lambda _ - ;; As seen in the .travis.yml file. - (setenv "SKIP_ADAPTERS" "gson,jr_jackson,nsjsonserialization")))))) - (native-inputs - (list ruby-rspec ruby-json-pure ruby-oj ruby-yajl-ruby)) - (synopsis "Common interface to multiple JSON libraries for Ruby") - (description - "This package provides 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.") - (home-page "https://github.com/intridea/multi_json") - (license license:expat))) - -(define-public ruby-multi-test - (package - (name "ruby-multi-test") - (version "0.1.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "multi_test" version)) - (sha256 - (base32 - "1sx356q81plr67hg16jfwz9hcqvnk03bd9n75pmdw8pfxjfy1yxd")))) - (build-system ruby-build-system) - (arguments - '(;; Tests require different sets of specific gem versions to be available, - ;; and there is no gemfile that specifies the newest versions of - ;; dependencies to be tested. - #:tests? #f)) - (synopsis - "Interface to testing libraries loaded into a running Ruby process") - (description - "@code{multi_test} provides a uniform interface onto whatever testing -libraries that have been loaded into a running Ruby process to help control -rogue test/unit/autorun requires.") - (home-page "https://github.com/cucumber/multi_test") - (license license:expat))) - -(define-public ruby-arr-pm - (package - (name "ruby-arr-pm") - (version "0.0.12") - (source (origin - (method url-fetch) - (uri (rubygems-uri "arr-pm" version)) - (sha256 - (base32 - "0fddw0vwdrr7v3a0lfqbmnd664j48a9psrjd3wh3k4i3flplizzx")))) - (build-system ruby-build-system) - (arguments - (list #:phases - #~(modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (native-inputs (list ruby-flores ruby-insist ruby-rspec ruby-stud)) - (synopsis "RPM reader/writer library written in Ruby") - (description "This library allows reading and writing RPM packages. It is -used by the @command{fpm} tool. It is written in pure Ruby because -@code{librpm} is not available on all systems and requires many -dependencies.") - (home-page "https://github.com/jordansissel/ruby-arr-pm") - (license license:asl2.0))) - -(define-public ruby-arel - (package - (name "ruby-arel") - (version "9.0.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "arel" version)) - (sha256 - (base32 - "1jk7wlmkr61f6g36w9s2sn46nmdg6wn2jfssrhbhirv5x9n95nk0")))) - (build-system ruby-build-system) - (arguments '(#:tests? #f)) ; no tests - (home-page "https://github.com/rails/arel") - (synopsis "SQL AST manager for Ruby") - (description "Arel is an SQL @dfn{Abstract Syntax Tree} (AST) manager for -Ruby. It simplifies the generation of complex SQL queries and adapts to -various relational database implementations.") - (license license:expat))) - -(define-public ruby-minitar - ;; We package from the GitHub source to fix the security issue reported at - ;; https://github.com/halostatue/minitar/issues/16. - (let ((commit "e25205ecbb6277ae8a3df1e6a306d7ed4458b6e4")) - (package - (name "ruby-minitar") - (version (string-append "0.5.4-1." (string-take commit 8))) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/halostatue/minitar") - (commit commit))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "1iywfx07jgjqcmixzkxk9zdwfmij1fyg1z2jlwzj15cj7s99qlfv")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; missing a gemspec - (synopsis "Ruby library and utility for handling tar archives") - (description - "Archive::Tar::Minitar is a pure-Ruby library and command-line utility -that provides the ability to deal with POSIX tar archive files.") - (home-page "http://www.github.com/atoulme/minitar") - (license (list license:gpl2+ license:ruby))))) - -(define-public ruby-mini-portile - (package - (name "ruby-mini-portile") - (version "0.6.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "mini_portile" version)) - (sha256 - (base32 - "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; tests require network access - (synopsis "Ports system for Ruby developers") - (description "Mini-portile is a port/recipe system for Ruby developers. -It provides a standard way to compile against specific versions of libraries -to reproduce user environments.") - (home-page "https://github.com/flavorjones/mini_portile") - (license license:expat))) - -(define-public ruby-mini-portile-2 - (package - (inherit ruby-mini-portile) - (version "2.8.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "mini_portile2" version)) - (sha256 - (base32 - "0z7f38iq37h376n9xbl4gajdrnwzq284c9v1py4imw3gri2d5cj6")))))) - -(define-public ruby-nokogiri - (package - (name "ruby-nokogiri") - (version "1.15.2") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/sparklemotion/nokogiri") - (commit "a6ad20b3edc8f020043ccfe5d9ec6ae9af103720"))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1n0vlg6v58jw3qzgyihz1dh5fvp4js1qgdh75j0kn47nvyiw3jxj")) - (patches (search-patches "ruby-nokogiri.patch")))) - (build-system ruby-build-system) - (arguments - (list #:gem-flags #~(list "--" "--use-system-libraries" - (string-append "--with-xml2-include=" - #$(this-package-input "libxml2") - "/include/libxml2")) - #:phases #~(modify-phases %standard-phases - (add-after 'install 'delete-mkmf.log - (lambda _ - ;; Rubygems installs build log files that embed volatile file - ;; names (see: - ;; https://github.com/rubygems/rubygems/issues/6259). - (for-each delete-file - (find-files #$output "^mkmf\\.log$")))) - (delete 'check) - (add-after 'install 'check - (lambda* (#:key tests? #:allow-other-keys) - (setenv "GEM_PATH" (string-append - (getenv "GEM_PATH") ":" - #$output "/lib/ruby/vendor_ruby")) - (when tests? - (for-each (lambda (file) - (invoke "ruby" "-Itest" file)) - (find-files "test" "^test_.*\\.rb")))))))) - (native-inputs (list ruby-hoe ruby-rubyzip)) - (inputs (list zlib libxml2 libxslt)) - (propagated-inputs (list ruby-mini-portile-2 ruby-pkg-config)) - (synopsis "HTML, XML, SAX, and Reader parser for Ruby") - (description "Nokogiri (鋸) parses and searches XML/HTML, and features -both CSS3 selector and XPath 1.0 support.") - (home-page "https://nokogiri.org/") - (license license:expat))) - -(define-public ruby-method-source - (package - (name "ruby-method-source") - (version "1.0.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "method_source" version)) - (sha256 - (base32 - "1pnyh44qycnf9mzi1j6fywd5fkskv3x7nmsqrrws0rjn5dd4ayfp")))) - (build-system ruby-build-system) - (arguments - `(#:test-target "spec" - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'remove-git-ls-files - (lambda* (#:key outputs #:allow-other-keys) - (substitute* "Rakefile" - (("git ls-files") "find . -type f"))))))) - (native-inputs - (list ruby-rspec)) - (synopsis "Retrieve the source code for Ruby methods") - (description "Method_source retrieves the source code for Ruby methods. -Additionally, it can extract source code from Proc and Lambda objects or just -extract comments.") - (home-page "https://github.com/banister/method_source") - (license license:expat))) - -(define-public ruby-coderay - (package - (name "ruby-coderay") - (version "1.1.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "coderay" version)) - (sha256 - (base32 - "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; missing test files - (synopsis "Ruby syntax highlighting library") - (description "Coderay is a Ruby library that provides syntax highlighting -for select languages.") - (home-page "http://coderay.rubychan.de") - (license license:expat))) - -(define-public ruby-cuke-modeler - (package - (name "ruby-cuke-modeler") - (version "3.20.1") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/enkessler/cuke_modeler") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0xbnx1blxm4kfhfwfh58n2ja40p2kfw8hbbz60dlzvghz25vcwy6")))) - (build-system ruby-build-system) - (arguments - (list #:test-target "default" - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'improve-reproducibility - (lambda _ - (substitute* - "testing/rspec/spec/unit/cuke_modeler_unit_spec.rb" - (("#\\{Time.now.year\\}") "")))) - (add-after 'unpack 'relax-requirements - (lambda _ - (substitute* "Gemfile" - ;; Cucumber appears pinned to an older version for no - ;; particular reason (see: - ;; https://github.com/enkessler/cuke_modeler/issues/14). - (("'cucumber', '2.2.0'") - "'cucumber', '>= 2.2.0'") - (("^gherkin_major_version_used = .*") - (string-append - "gherkin_major_version_used = " - #$(car - (string-split - (package-version - (this-package-input "ruby-cucumber-gherkin")) #\.)) - "\n"))) - ;; Disable Bundler. - (substitute* "bin/console" - (("require 'bundler/setup'") "")) - (substitute* "rakefiles/testing_tasks.rb" - (("'bundle', 'exec', ") "")) - ;; Remove extraneous dependencies. - (substitute* "cuke_modeler.gemspec" - ((".*bundler.*") "") - ((".*rubocop.*") "") - ((".*yard.*") "")) - (substitute* "Rakefile" - (("Rainbow.enabled = true") "") - (("require_relative 'rakefiles/documentation_tasks'") "") - (("require_relative 'rakefiles/other_tasks'") "") - (("require_relative 'rakefiles/release_tasks'") ""))))))) - (native-inputs - (list ruby-childprocess - ruby-cucumber - ruby-rainbow - ruby-rspec - ruby-simplecov - ruby-simplecov-lcov)) - (propagated-inputs (list ruby-cucumber-gherkin)) - (synopsis "Gherkin test suite analysis tool") - (description "CukeModeler facilitates modeling a test suite that is -written in Gherkin (e.g. Cucumber, SpecFlow, Lettuce, etc.). It does this by -providing an abstraction layer on top of the Abstract Syntax Tree (AST) that -the @code{cucumber-gherkin} generates when parsing features, as well as -providing models for feature files and directories in order to be able to have -a fully traversable model tree of a test suite's structure. These models can -then be analyzed or manipulated more easily than the underlying AST layer.") - (home-page "https://github.com/enkessler/cuke_modeler") - (license license:expat))) - -(define-public ruby-parallel-tests - (package - (name "ruby-parallel-tests") - (version "4.9.0") - (home-page "https://github.com/grosser/parallel_tests") - (source (origin - (method git-fetch) - (uri (git-reference - (url home-page) - (commit (string-append "v" version)))) - (file-name (string-append name version)) - (sha256 - (base32 - "0ljb17i1bvlr0y1avwishcrg60h48bj6iwgkp8yrck08wcs7b338")))) - (build-system ruby-build-system) - (arguments - '(#:test-target "spec" ;avoid rubocop dependency - #:phases (modify-phases %standard-phases - (add-after 'patch-source-shebangs 'patch-shell-invocations - (lambda _ - (substitute* '("lib/parallel_tests/tasks.rb" - "spec/parallel_tests/tasks_spec.rb") - (("/bin/sh") (which "sh")) - (("/bin/bash") (which "bash"))))) - (add-before 'check 'relax-requirements - (lambda _ - ;; Remove hard coded version constraints, instead just - ;; use whatever versions are available in Guix. - (delete-file "Gemfile.lock") - (substitute* "Gemfile" - (("'minitest',.*") - "'minitest'\n") - (("'cucumber',.*") - "'cucumber'\n") - ;; Do not depend on a git-fetched spinach version. - (("gem 'spinach',.*") - "gem 'spinach'\n") - ((".*rubocop.*") "")))) - (add-before 'check 'disable-rails-test - (lambda _ - ;; XXX: This test attempts to download and run the test - ;; suites of multiple Rails versions(!) directly. - (delete-file "spec/rails_spec.rb"))) - (add-before 'check 'disable-problematic-tests - (lambda _ - ;; This test fails, probably because of the newer - ;; Cucumber version used here. - (delete-file "spec/parallel_tests/cucumber/\ -failure_logger_spec.rb") )) - (add-before 'check 'set-HOME - (lambda _ - ;; Some tests check the output of Bundler, and fail when - ;; Bundler warns that /homeless-shelter does not exist. - (setenv "HOME" "/tmp")))))) - (native-inputs - (list ruby-bump - ruby-cucumber - ruby-cuke-modeler - ruby-minitest - ruby-rake - ruby-rspec - ruby-spinach)) - (propagated-inputs - (list ruby-parallel)) - (synopsis "Run tests in parallel") - (description - "This package can speed up @code{Test::Unit}, @code{RSpec}, -@code{Cucumber}, and @code{Spinach} tests by running them concurrently -across multiple CPU cores.") - (license license:expat))) - -(define-public ruby-parser - (package - (name "ruby-parser") - (version "3.3.7.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "parser" version)) - (sha256 - (base32 - "16qi2qhpszm842awxghmsp64yvvawafq96w5jw98irz3f4bh2jbl")))) - (build-system ruby-build-system) - (arguments '(#:tests? #f)) ; tests not included in gem - (native-inputs (list bundler ruby-cliver ruby-simplecov)) - (inputs (list ragel)) - (propagated-inputs (list ruby-ast ruby-racc)) - (synopsis "Ruby parser written in pure Ruby") - (description - "This package provides a Ruby parser written in pure Ruby.") - (home-page "https://github.com/whitequark/parser") - (license license:expat))) - -(define-public ruby-set - (package - (name "ruby-set") - (version "1.0.3") - (source (origin - (method url-fetch) - (uri (rubygems-uri "set" version)) - (sha256 - (base32 - "07kc057nrkddrybqmlbmgf9x7nsmbc3ni6gy1z6xjx5b838vlj33")))) - (build-system ruby-build-system) - (synopsis - "Ruby class to deal with collections of unordered, unique values") - (description - "This package provides a class to deal with collections of unordered, -unique values") - (home-page "https://github.com/ruby/set") - (license license:bsd-2))) - -(define-public ruby-sexp-processor - (package - (name "ruby-sexp-processor") - (version "4.17.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "sexp_processor" version)) - (sha256 - (base32 - "0vzz9mhg4kkdqf179pm30i204h7iskanxrk53j0csf0qrrs4iajd")))) - (build-system ruby-build-system) - (native-inputs - (list ruby-hoe - ruby-minitest - ruby-minitest-proveit)) - (synopsis "ParseTree fork which includes generic S-exp processing tools") - (description "The sexp_processor package is derived from ParseTree, but -contrary to ParseTree, it includes all the generic S-exp processing tools. -Amongst the included tools are @code{Sexp}, @code{SexpProcessor} and -@code{Environment}") - (home-page "https://github.com/seattlerb/sexp_processor") - (license license:expat))) - -(define-public ruby-ruby-parser - (package - (name "ruby-ruby-parser") - (version "3.20.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "ruby_parser" version)) - (sha256 - (base32 - "0q851n8654wkjrq8jawq8vi5yhr1y9vpyr2vj7cnn3sa4ikg6d3z")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'patch - (lambda _ - (substitute* "Rakefile" - (("`which bison`") - (string-append "\"" (which "bison") "\"")) - (("which unifdef") - (which "unifdef")))))))) - (native-inputs - (list ruby-hoe - ruby-racc - unifdef - bison - ruby-minitest)) - (propagated-inputs - (list ruby-sexp-processor)) - (home-page "https://github.com/seattlerb/ruby_parser/") - (synopsis "Ruby parser written in pure Ruby") - (description "The ruby_parser (RP) package provides a Ruby parser written -in pure Ruby. It outputs S-expressions which can be manipulated and converted -back to Ruby via the @code{ruby2ruby} library.") - (license license:expat))) - -(define-public ruby-ruby-version - (package - (name "ruby-ruby-version") - (version "1.0.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "ruby_version" version)) - (sha256 - (base32 - "0lvc7bd5ps3w2vq2wb02i0pi3vfcx2rnckx2ix4rjym1qf52kb2j")))) - (build-system ruby-build-system) - (arguments - (list #:phases - #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'delete-gem-files - ;; There are some pre-built files in the source, and - ;; registered in the .gemspec (see: - ;; https://github.com/janlelis/ruby_version/issues/1). - (lambda _ - (delete-file-recursively "pkg") - (substitute* "ruby_version.gemspec" - (("\"pkg/ruby_version-1.0.0.gem\".freeze, ") - "") - (("\"pkg/ruby_version-1.0.1.gem\".freeze, ") - "")))) - (add-after 'extract-gemspec 'relax-requirements - (lambda _ - (delete-file "Gemfile.lock") - (substitute* "ruby_version.gemspec" - (("\"Gemfile.lock\".freeze, ") "") - ;; Allow a newers versions of development dependencies. - (("~>") ">="))))))) - (native-inputs (list ruby-rdoc ruby-rubygems-tasks ruby-rspec)) - (synopsis "Ruby class for checking the Ruby version") - (description "This package provides a @code{RubyVersion} class which -offers a convenient Domain Specific Language (DSL) for checking for the right -Ruby version.") - (home-page "https://github.com/janlelis/ruby_version") - (license license:expat))) - -(define-public ruby-prawn-manual-builder - (package - (name "ruby-prawn-manual-builder") - (version "0.3.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "prawn-manual_builder" version)) - (sha256 - (base32 "1vlg5w7wq43g2hgpgra2nrcxj1kb4ayqliz4gmja2rhs037j2vzs")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f ; no included tests - #:phases - (modify-phases %standard-phases - (add-after 'extract-gemspec 'patch-gemspec - (lambda _ - (substitute* ".gemspec" - ;; Loosen the requirement for pdf-inspector - (("~> 1\\.0\\.7") ">= 0"))))))) - (propagated-inputs - (list ruby-coderay)) - (synopsis "Tool for writing manuals for Prawn and Prawn accessories") - (description - "This package provides a tool for writing manuals for Prawn and Prawn -accessories") - (home-page "https://github.com/prawnpdf/prawn-manual_builder") - (license %prawn-project-licenses))) - -(define-public ruby-progress_bar - (package - (name "ruby-progress_bar") - (version "1.1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "progress_bar" version)) - (sha256 - (base32 - "1qc40mr6p1z9a3vlpnsg1zfgk1qswviql2a31y63wpv3vr6b5f48")))) - (build-system ruby-build-system) - (arguments - '(#:test-target "spec")) - (propagated-inputs - (list ruby-highline ruby-options)) - (native-inputs - (list bundler ruby-rspec ruby-timecop)) - (synopsis - "Ruby library for displaying progress bars") - (description - "ProgressBar is a simple library for displaying progress bars. The -maximum value is configurable, and additional information can be displayed -like the percentage completion, estimated time remaining, elapsed time and -rate.") - (home-page "https://github.com/paul/progress_bar") - (license license:wtfpl2))) - -(define-public ruby-progressbar - (package - (name "ruby-progressbar") - (version "1.10.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "ruby-progressbar" version)) - (sha256 - (base32 "1k77i0d4wsn23ggdd2msrcwfy0i376cglfqypkk2q77r2l3408zf")))) - (build-system ruby-build-system) - (arguments - '(;; TODO: There looks to be a circular dependency with ruby-fuubar. - #:tests? #f)) - (synopsis "Text progress bar library for Ruby") - (description - "Ruby/ProgressBar is an flexible text progress bar library for Ruby. -The output can be customized with a formatting system.") - (home-page "https://github.com/jfelchner/ruby-progressbar") - (license license:expat))) - -(define-public ruby-latest-ruby - (package - (name "ruby-latest-ruby") - (version "3.1.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "latest_ruby" version)) - (sha256 - (base32 - "15rqwgxzpnkzdiz8m02jra0zq5sx0fiz61vkfrj1ls6slqfhnzqg")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; No Rakefile - (synopsis "Answers the question of what the latest Ruby version is") - (description "Knows about MRI, Rubinius, JRuby, MagLev and MacRuby.") - (home-page "https://github.com/kyrylo/latest_ruby") - (license license:zlib))) - -(define-public ruby-pry - (package - (name "ruby-pry") - (version "0.14.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "pry" version)) - (sha256 - (base32 - "0k9kqkd9nps1w1r1rb7wjr31hqzkka2bhi8b518x78dcxppm9zn4")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; no tests - (propagated-inputs - (list ruby-coderay ruby-method-source)) - (synopsis "Ruby REPL") - (description "Pry is an IRB alternative and runtime developer console for -Ruby. It features syntax highlighting, a plugin architecture, runtime -invocation, and source and documentation browsing.") - (home-page "https://cobaltbluemedia.com/pryrepl/") - (license license:expat))) - -(define-public ruby-pry-doc - (package - (name "ruby-pry-doc") - (version "1.4.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "pry-doc" version)) - (sha256 - (base32 - "1pp43n69p6bjvc640wgcz295w1q2v9awcqgbwcqn082dbvq5xvnx")))) - (build-system ruby-build-system) - (propagated-inputs (list ruby-pry ruby-yard)) - (native-inputs (list ruby-latest-ruby ruby-rspec ruby-rake)) ;for tests - (synopsis "Provides YARD and extended documentation support for Pry") - (description - "Pry Doc is a Pry REPL plugin. It provides extended documentation -support for the REPL by means of improving the @code{show-doc} and -@code{show-source} commands. With help of the plugin the commands are -be able to display the source code and the docs of Ruby methods and -classes implemented in C.") - (home-page "https://github.com/pry/pry-doc") - (license license:expat))) - -(define-public ruby-single-cov - (package - (name "ruby-single-cov") - (version "1.9.1") - (home-page "https://github.com/grosser/single_cov") - (source (origin - (method git-fetch) - (uri (git-reference (url home-page) - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1w4k81f2mdg620m6pwkrqayddnz9mr8qx0myqn33mw8k6imfip05")))) - (build-system ruby-build-system) - (arguments - '(#:test-target "spec" ;to avoid rubocop requirement - #:phases (modify-phases %standard-phases - (replace 'replace-git-ls-files - (lambda _ - (substitute* "single_cov.gemspec" - (("`git ls-files lib/ bin/ MIT-LICENSE`") - ;; There no longer appear to be a 'bin' - ;; sub-directory. - "`find lib/ MIT-LICENSE -type f | sort`")))) - (add-before 'check 'remove-version-constraints - (lambda _ - (delete-file "Gemfile.lock"))) - (add-before 'check 'relax-requirements - (lambda _ - ;; Remove extraneous requirements. - (substitute* "Rakefile" - ((".*require.*bump.*") "")) - (substitute* "Gemfile" - ((".*gem \"bump\".*") "") - ((".*gem \"rubocop\".*") "")))) - (add-before 'check 'disable-failing-test - (lambda _ - ;; XXX: This test copies assets from minitest, but can - ;; not cope with the files being read-only. Just skip - ;; it for now. - (substitute* "specs/single_cov_spec.rb" - (("it \"complains when coverage is bad\"") - "xit \"complains when coverage is bad\""))))))) - (native-inputs (list ruby-minitest ruby-rspec ruby-simplecov)) - (synopsis "Code coverage reporting tool") - (description - "This package provides actionable code coverage reports for Ruby -projects. It has very little overhead and can be easily integrated with -development tools to catch coverage problems early.") - (license license:expat))) - -(define-public ruby-oedipus-lex - (package - (name "ruby-oedipus-lex") - (version "2.6.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "oedipus_lex" version)) - (sha256 - (base32 - "06l4d3l75vhdcmnavnkzr7bd39rb0njxhkbmwrw6ni64z2hlj7w7")))) - (build-system ruby-build-system) - (native-inputs - (list ruby-hoe - ruby-minitest)) - (synopsis "Ruby lexer") - (description - "Oedipus Lex is a lexer generator in the same family as Rexical and Rex. -It is based primarily on generating code much like you would a hand-written -lexer. It uses StrScanner within a multi-level case statement. As such, -Oedipus matches on the first match, not the longest.") - (home-page "https://github.com/seattlerb/oedipus_lex") - (license license:expat))) - -(define-public ruby-guard - (package - (name "ruby-guard") - (version "2.13.0") - (source (origin - (method git-fetch) - ;; The gem does not include a Rakefile, nor does it contain a - ;; gemspec file, nor does it come with the tests. This is why - ;; we fetch the tarball from Github. - (uri (git-reference - (url "https://github.com/guard/guard") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "16pxcszr0g2jnl3090didxh1d8z5m2mly14m3w4rspb8fmclsnjs")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f ; tests require cucumber - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'remove-git-ls-files - (lambda* (#:key outputs #:allow-other-keys) - (substitute* "guard.gemspec" - (("git ls-files -z") "find . -type f -print0")))) - (replace 'build - (lambda _ - (invoke "gem" "build" "guard.gemspec")))))) - (propagated-inputs - (list ruby-formatador - ruby-listen - ruby-lumberjack - ruby-nenv - ruby-notiffany - ruby-pry - ruby-shellany - ruby-thor)) - (native-inputs - (list bundler ruby-rspec)) - (synopsis "Tool to handle events on file system modifications") - (description - "Guard is a command line tool to easily handle events on file system -modifications. Guard automates various tasks by running custom rules whenever -file or directories are modified.") - (home-page "https://guardgem.org/") - (license license:expat))) - -(define-public ruby-spinach - (package - (name "ruby-spinach") - (version "0.12.0") - (home-page "https://github.com/codegram/spinach") - (source (origin - (method url-fetch) - (uri (rubygems-uri "spinach" version)) - (sha256 - (base32 - "1v9nvpvlgjx698dc4q2p1l45sxm5fjjzfxayrkyzb9nv0q0xfjsp")))) - (build-system ruby-build-system) - (arguments - ;; FIXME: Disable tests altogether because they depend on 'capybara' - ;; which in turn depends on many other unpackaged gems. Enable once - ;; capybara is available. - '(#:tests? #f)) - (propagated-inputs - (list ruby-colorize ruby-gherkin-ruby)) - (synopsis "Gherkin-based BDD framework") - (description - "Spinach is a high-level @acronym{BDD, Behavior-driven development} -framework that leverages the expressive @code{Gherkin} language to help you -define executable specifications of your code.") - (license license:expat))) - -(define-public ruby-timers - (package - (name "ruby-timers") - (version "4.3.5") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/socketry/timers") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1vvahlhk6i1xks1bsha6s64pjjxhagmzvvf1q9h6z3lpcba43rpx")))) - (build-system ruby-build-system) - (arguments - (list #:phases - #~(modify-phases %standard-phases - (add-before 'build 'prune-gems.rb - (lambda _ - (substitute* "gems.rb" - ;; These are only required for maintenance. - ((".*gem \"bake-modernize\".*") "") - ((".*gem \"bake-gem\".*") "") - ;; Not actually required by the tests. - ((".*gem 'benchmark-ips'.*") "") - ((".*gem \"ruby-prof\".*") "")))) - (add-before 'build 'remove-missing-signing-key - (lambda _ - ;; Otherwise, the build fails with ENOENT. - (substitute* "timers.gemspec" - ((".*spec.signing_key.*") "")))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "bake" "test"))))))) - (native-inputs - (list ruby-covered - ruby-bake-test - ruby-bake-test-external - ruby-sus)) - (synopsis "Collection of Ruby timer classes") - (description "Timers offers a collections of one-shot and periodic timers, -intended for use with event loops such as async.") - (home-page "https://github.com/socketry/timers") - (license license:expat))) - -(define-public ruby-tilt - (package - (name "ruby-tilt") - (version "2.2.0") - (source - (origin - (method git-fetch) ;the distributed gem lacks tests - (uri (git-reference - (url "https://github.com/jeremyevans/tilt") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "056zm4vzx9xjwl7zgmb17hzb91qx5cvzk60wvsxchfybvl03gn5d")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-before 'check 'set-SASS_IMPLEMENTATION - (lambda _ - (setenv "SASS_IMPLEMENTATION" "sassc")))))) - (propagated-inputs - (list ruby-pandoc-ruby ruby-sassc)) - (native-inputs - (list bundler ruby-yard ruby-builder ruby-erubis ruby-markaby)) - (synopsis "Generic interface to multiple Ruby template engines") - (description - "Tilt is a thin interface over a number of different Ruby template -engines in an attempt to make their usage as generic as possible.") - (home-page "https://github.com/rtomayko/tilt/") - (license license:expat))) - -(define-public ruby-thread-safe - (package - (name "ruby-thread-safe") - (version "0.3.6") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "thread_safe" version)) - (sha256 - (base32 - "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; needs simplecov, among others - (synopsis "Thread-safe utilities for Ruby") - (description "The thread_safe library provides thread-safe collections and -utilities for Ruby.") - (home-page "https://github.com/ruby-concurrency/thread_safe") - (license license:asl2.0))) - -(define-public ruby-tzinfo - (package - (name "ruby-tzinfo") - (version "2.0.6") - (source - (origin - (method git-fetch) - (uri (git-reference - ;; Pull from git because the gem has no tests. - (url "https://github.com/tzinfo/tzinfo") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1n1gzjqwwnx209h8d054miva0y7x17db2ahy7jav5r25ibhh7rgm")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'skip-safe-tests - (lambda _ - (substitute* "test/test_utils.rb" - (("def safe_test\\(options = \\{\\}\\)") - "def safe_test(options = {}) - skip('The Guix build environment has an unsafe load path')")))) - (add-before 'check 'pre-check - (lambda _ - (setenv "HOME" (getcwd)) - (substitute* "Gemfile" - (("simplecov.*") "simplecov'\n")))) - (replace 'check - (lambda* (#:key tests? test-target #:allow-other-keys) - (when tests? - (invoke "bundler" "exec" "rake" test-target))))))) - (propagated-inputs - (list ruby-concurrent)) - (native-inputs - (list ruby-simplecov)) - (synopsis "Time zone library for Ruby") - (description "TZInfo is a Ruby library that provides daylight savings -aware transformations between times in different time zones.") - (home-page "https://tzinfo.github.io") - (license license:expat))) - -(define-public ruby-tzinfo-data - (package - (name "ruby-tzinfo-data") - (version "1.2023.3") - (source - (origin - (method git-fetch) - ;; Download from GitHub because the rubygems version does not contain - ;; Rakefile or tests. - (uri (git-reference - (url "https://github.com/tzinfo/tzinfo-data") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1v3fpfmw485lsc9bfqfcasb9j25g9ywfpmmk648l2vdsh7nipilf")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'patch-source - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "Rakefile" - (("URI\\.parse\\(url\\)\\.open") - "URI.open(url)") - (("https://data.iana.org/time-zones/releases") - (assoc-ref inputs "tzdata"))))) - (add-before 'check 'pre-check - (lambda _ - (setenv "HOME" (getcwd)) - (substitute* "Rakefile" - ;; Don't need gpg, and it may break after a time. - (("gpg ") "echo ") - ((" sh\\(\\\"make -C" text) - (string-append " sh(\"sed -i 's@/bin/sh@sh@' #{tzdb_combined_path}/Makefile \")\n" - " sh(\"sed -i 's@cc=@cc?=@' #{tzdb_combined_path}/Makefile \")\n" text))) - (setenv "cc" #$(cc-for-target))))))) - (propagated-inputs - (list ruby-tzinfo)) - (native-inputs - `(("tzdata" - ,(file-union "tzdata-for-ruby-tzdata-info" - `(("tzdata2023c.tar.gz" - ,(origin - (method url-fetch) - (uri "https://data.iana.org/time-zones/releases/tzdata2023c.tar.gz") - (sha256 - (base32 - "0p4nvp5bdxxdqh269nvvcfrpycbbfwm31al5whwbpsaa3dfhnl9z")))) - ("tzdata2023c.tar.gz.asc" - ,(origin - (method url-fetch) - (uri "https://data.iana.org/time-zones/releases/tzdata2023c.tar.gz.asc") - (sha256 - (base32 - "0mrmhczs5qnj1zp6gh4pg6fm0iblr2jmzy0fgh9slinwxmn7pv6m")))) - ("tzcode2023c.tar.gz" - ,(origin - (method url-fetch) - (uri "https://data.iana.org/time-zones/releases/tzcode2023c.tar.gz") - (sha256 - (base32 - "1rqln88ki0jagi372nqyn7bs03rf2l33081sy2835mwsn4mpzla6")))) - ("tzcode2023c.tar.gz.asc" - ,(origin - (method url-fetch) - (uri "https://data.iana.org/time-zones/releases/tzcode2023c.tar.gz.asc") - (sha256 - (base32 - "0jbx8xjv75qfh7bxa2xmrf97r37057y89rhmrq1gz8s6b8qlzb2i"))))))))) - (synopsis "Data from the IANA Time Zone database") - (description - "This library provides @code{TZInfo::Data}, which contains data from the -IANA Time Zone database packaged as Ruby modules for use with @code{TZInfo}.") - (home-page "https://tzinfo.github.io") - (license license:expat))) - -(define-public ruby-rb-inotify - (package - (name "ruby-rb-inotify") - (version "0.10.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "rb-inotify" version)) - (sha256 - (base32 - "1jm76h8f8hji38z3ggf4bzi8vps6p7sagxn3ab57qc0xyga64005")))) - (build-system ruby-build-system) - (arguments - (list - #:tests? #f ; there are no tests - #:phases - #~(modify-phases %standard-phases - ;; Building the gemspec with rake is not working here since it is - ;; generated with Jeweler. It is also unnecessary because the - ;; existing gemspec does not use any development tools to generate a - ;; list of files. - (replace 'build - (lambda _ - (invoke "gem" "build" "rb-inotify.gemspec")))))) - (propagated-inputs - (list ruby-ffi)) - (native-inputs - (list ruby-yard)) - (synopsis "Ruby wrapper for Linux's inotify") - (description "rb-inotify is a simple wrapper over the @code{inotify} Linux -kernel subsystem for monitoring changes to files and directories.") - (home-page "https://github.com/nex3/rb-inotify") - (license license:expat))) - -(define-public ruby-pry-editline - (package - (name "ruby-pry-editline") - (version "1.1.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "pry-editline" version)) - (sha256 - (base32 - "1pjxyvdxvw41xw3yyl18pwzix8hbvn6lgics7qcfhjfsf1zs8x1z")))) - (build-system ruby-build-system) - (arguments `(#:tests? #f)) ; no tests included - (native-inputs - (list bundler)) - (synopsis "Open the current REPL line in an editor") - (description - "This gem provides a plugin for the Ruby REPL to enable opening the -current line in an external editor.") - (home-page "https://github.com/tpope/pry-editline") - (license license:expat))) - -(define-public ruby-sdoc - (package - (name "ruby-sdoc") - (version "1.1.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "sdoc" version)) - (sha256 - (base32 - "1am73dldx1fqlw2xny5vyk00pgkisg6bvs0pa8jjd7c19drjczrd")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-before 'check 'set-rubylib-and-patch-gemfile - (lambda _ - (setenv "RUBYLIB" "lib") - (substitute* "sdoc.gemspec" - (("s.add_runtime_dependency.*") "\n") - (("s.add_dependency.*") "\n")) - (substitute* "Gemfile" - (("gem \"rake\".*") - "gem 'rake'\ngem 'rdoc'\ngem 'json'\n"))))))) - (propagated-inputs - (list ruby-json)) - (native-inputs - (list bundler ruby-minitest ruby-hoe)) - (synopsis "Generate searchable RDoc documentation") - (description - "SDoc is an RDoc documentation generator to build searchable HTML -documentation for Ruby code.") - (home-page "https://github.com/voloko/sdoc") - (license license:expat))) - -(define-public ruby-tins - (package - (name "ruby-tins") - (version "1.29.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "tins" version)) - (sha256 - (base32 - "0nzp88y19rqlcizp1nw8m44fvfxs9g3bhjpscz44dwfawfrmr0cb")))) - (build-system ruby-build-system) - ;; This gem needs gem-hadar at development time, but gem-hadar needs tins - ;; at runtime. To avoid the dependency on gem-hadar we disable rebuilding - ;; the gemspec. - (arguments - `(#:tests? #f ; there are no tests - #:phases - (modify-phases %standard-phases - (replace 'build - (lambda _ - ;; "lib/spruz" is a symlink. Leaving it in the gemspec file - ;; causes an error. - (substitute* "tins.gemspec" - (("\"lib/spruz\", ") "")) - (invoke "gem" "build" "tins.gemspec")))))) - (propagated-inputs - (list ruby-sync)) - (synopsis "Assorted tools for Ruby") - (description "Tins is a Ruby library providing assorted tools.") - (home-page "https://github.com/flori/tins") - (license license:expat))) - -(define-public ruby-gemtext - (package - (name "ruby-gemtext") - (version "1.0.3") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "gemtext" version)) - (sha256 - (base32 "1z559f5z0zvwnqgnny0zf4mppiary020ljxwpw3bdxi2hr9aj3gp")))) - (build-system ruby-build-system) - (synopsis "Gemtext parser for Ruby") - (description - "This package is a Ruby parser library for Gemtext (hypertext format -which is intended to serve as the native response format of the Gemini -file transfer protocol) and produces a document object of various -nodes.") - (home-page "https://github.com/exastencil/gemtext") - (license license:expat))) - -(define-public ruby-gem-hadar - (package - (name "ruby-gem-hadar") - (version "1.11.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "gem_hadar" version)) - (sha256 - (base32 - "160abb3l4n3gkhd86f22n981bhqxkbf5ym6fhsk796pix6696pd5")))) - (build-system ruby-build-system) - ;; This gem needs itself at development time. We disable rebuilding of the - ;; gemspec to avoid this loop. - (arguments - `(#:tests? #f ; there are no tests - #:phases - (modify-phases %standard-phases - (replace 'build - (lambda _ - (invoke "gem" "build" "gem_hadar.gemspec")))))) - (propagated-inputs - (list git-minimal/pinned ruby-tins ruby-yard)) - (synopsis "Library for the development of Ruby gems") - (description - "This library contains some useful functionality to support the -development of Ruby gems.") - (home-page "https://github.com/flori/gem_hadar") - (license license:expat))) - -(define-public ruby-term-ansicolor - (package - (name "ruby-term-ansicolor") - (version "1.7.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "term-ansicolor" version)) - (sha256 - (base32 - "1xq5kci9215skdh27npyd3y55p812v4qb4x2hv3xsjvwqzz9ycwj")))) - (build-system ruby-build-system) - ;; Rebuilding the gemspec seems to require git, even though this is not a - ;; git repository, so we just build the gem from the existing gemspec. - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'fix-test - (lambda - - (substitute* "tests/hsl_triple_test.rb" - (("0\\\\\\.0%") - "0\\.?0?%")))) - (replace 'build - (lambda _ - (invoke "gem" "build" "term-ansicolor.gemspec")))))) - (propagated-inputs - (list ruby-tins)) - (native-inputs - (list ruby-gem-hadar)) - (synopsis "Ruby library to control the attributes of terminal output") - (description - "This Ruby library uses ANSI escape sequences to control the attributes -of terminal output.") - (home-page "https://flori.github.io/term-ansicolor/") - ;; There is no mention of the "or later" clause. - (license license:gpl2))) - -(define-public ruby-immutable-struct - (let ((commit "bb67ad8fa2117e8031c3f4333b4c25c8bcd3afff") - (revision "0")) - (package - (name "ruby-immutable-struct") - (version (git-version "2.4.1" revision commit)) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/stitchfix/immutable-struct") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0vsr2spypjf0i7ppg2a0gj3mjj5k3dyqsx224cbsxw51p6cc11c1")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "ruby" (which "rspec")))))))) - (native-inputs - (list ruby-rspec)) - (synopsis "Ruby library for creating immutable struct classes") - (description - "This package provides a library to help create value objects without -the pain of Ruby's Struct (or its setters).") - (home-page "https://stitchfix.github.io/immutable-struct/") - (license license:expat)))) - -(define-public ruby-faker - (package - (name "ruby-faker") - (version "3.2.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/faker-ruby/faker") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1wwdwh5qwaxnd9dl6732mj6b953l5r32r4936pj5680963iagq59")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'remove-rubocop-from-rakefile - (lambda _ - (substitute* "Rakefile" - (("require 'rubocop/rake_task'") "") - (("RuboCop::RakeTask\\.new") ""))))))) - (native-inputs (list ruby-yard ruby-simplecov ruby-timecop)) - (propagated-inputs (list ruby-i18n)) - (synopsis "Library for generating fake data") - (description "Faker is a port of Data::Faker from Perl. It is used to -easily generate fake data: names, addresses, phone numbers, etc.") - (home-page "https://github.com/faker-ruby/faker") - (license license:expat))) - -(define-public ruby-terraform - (package - (name "ruby-terraform") - (version "1.7.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/infrablocks/ruby_terraform") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "18d1qkf2rbbvc2f0dxni85i2l2g8zn5kzh0v8zr1b86r1wjy6rvd")))) - (build-system ruby-build-system) - (arguments - (list - #:test-target "spec" - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'disable-bundler - (lambda _ - (substitute* "spec/spec_helper.rb" - (("require 'bundler/setup'") "")))) - (add-before 'check 'disable-falinig-tests - (lambda _ - (substitute* "spec/ruby_terraform/commands/plan_spec.rb" - (("it 'logs an error raised when running the command'") - "xit 'logs an error raised when running the command'") - (("it 'raises execution error when an error occurs running the command'") - "xit 'raises execution error when an error occurs running the command'")))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (native-inputs - (list ruby-rspec - ruby-faker - ruby-simplecov)) - (propagated-inputs - (list ruby-lino ruby-immutable-struct)) - (synopsis "Ruby wrapper around the Terraform command line interface") - (description - "This package provides a Ruby wrapper around the Terraform command line -interface so that Terraform can be more easily invoked from Ruby code.") - (home-page "https://github.com/infrablocks/ruby_terraform") - (license license:expat))) - -(define-public ruby-pstree - (package - (name "ruby-pstree") - (version "0.3.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "pstree" version)) - (sha256 - (base32 - "0ld3ng37y92kv9vqnachw1l3n07hsc8hrnjs9d840liw0mysf1vp")))) - (build-system ruby-build-system) - (native-inputs - (list ruby-gem-hadar bundler)) - (synopsis "Create a process tree data structure") - (description - "This library uses the output of the @code{ps} command to create a -process tree data structure for the current host.") - (home-page "https://github.com/flori/pstree") - ;; There is no mention of the "or later" clause. - (license license:gpl2))) - -(define-public ruby-psych - (package - (name "ruby-psych") - (version "5.1.0") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/ruby/psych") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0m3668y79jcv2h9p7w74awwdyz13rpfr24w4nzh3iz96kxwssz83")))) - (build-system ruby-build-system) - (inputs - (list libyaml)) - (native-inputs - (list ruby-rake-compiler)) - (synopsis "Ruby YAML parser and emitter") - (description - "Psych is a YAML parser and emitter. Psych leverages libyaml for its -YAML parsing and emitting capabilities. In addition to wrapping libyaml, -Psych also knows how to serialize and de-serialize most Ruby objects to and -from the YAML format.") - (home-page "https://github.com/ruby/psych") - (license license:expat))) - -(define-public ruby-psych-3 - (package - (inherit ruby-psych) - (version "3.3.4") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/ruby/psych") - (commit (string-append "v" version)))) - (file-name (git-file-name "ruby-psych" version)) - (sha256 - (base32 - "11f7bxbhaj5697izap7hfbiln6lfk5cks78a498mkyhs2ylhl0fc")))) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "bundle" "exec" "rake" "default"))))))))) - -(define-public ruby-utils - (package - (name "ruby-utils") - (version "0.9.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "utils" version)) - (sha256 - (base32 - "196zhgcygrnx09bb9mh22qas03rl9avzx8qs0wnxznpin4pffwcl")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-tins ruby-term-ansicolor ruby-pstree ruby-pry-editline)) - (native-inputs - (list ruby-gem-hadar bundler)) - (synopsis "Command line tools for working with Ruby") - (description - "This package provides assorted command line tools that may be useful -when working with Ruby code.") - (home-page "https://github.com/flori/utils") - ;; There is no mention of the "or later" clause. - (license license:gpl2))) - -(define-public ruby-jaro-winkler - (package - (name "ruby-jaro-winkler") - (version "1.5.4") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "jaro_winkler" version)) - (sha256 - (base32 "1y8l6k34svmdyqxya3iahpwbpvmn3fswhwsvrz0nk1wyb8yfihsh")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; no included tests - (synopsis "Ruby implementation of Jaro-Winkler distance algorithm") - (description - "@code{jaro_winkler} is an implementation of Jaro-Winkler distance -algorithm. It is written as a C extension and will fallback to a pure Ruby -implementation on platforms where this is unsupported.") - (home-page "https://github.com/tonytonyjan/jaro_winkler") - (license license:expat))) - -(define-public ruby-json - (package - (name "ruby-json") - (version "2.1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "json" version)) - (sha256 - (base32 - "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp")))) - (build-system ruby-build-system) - (arguments '(#:tests? #f)) ; dependency cycle with sdoc - (synopsis "JSON library for Ruby") - (description "This Ruby library provides a JSON implementation written as -a native C extension.") - (home-page "http://json-jruby.rubyforge.org/") - (license (list license:ruby license:gpl2)))) ; GPL2 only - -(define-public ruby-json-pure - (package - (name "ruby-json-pure") - (version "2.6.3") - (source - (origin - ;; For tests - (method git-fetch) - (uri (git-reference - (url "https://github.com/flori/json.git") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0551269c98a07m6bl594syh5vknrm3c636a4dxis9jpsb7vf7lfx")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'fix-rakefile - (lambda _ - (substitute* "Rakefile" - ;; Since this is not a git repository, do not call 'git'. - (("`git ls-files`") "`find . -type f |sort`"))))))) - (native-inputs - (list bundler ragel ruby-simplecov ruby-test-unit which)) - (synopsis "JSON implementation in pure Ruby") - (description - "This package provides a JSON implementation written in pure Ruby.") - (home-page "https://flori.github.io/json/") - (license license:ruby))) - -(define-public ruby-jwt - (package - (name "ruby-jwt") - (version "2.7.1") - (source - (origin - ;; For tests - (method git-fetch) - (uri (git-reference - (url "https://github.com/jwt/ruby-jwt") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "12ss6knfis6a6a41qndalnlvq3yykhpg6igzll8qyssnnwi9zdw7")))) - (build-system ruby-build-system) - (arguments - (list - #:test-target "test" - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'remove-unnecessary-dependencies - (lambda _ - (substitute* "ruby-jwt.gemspec" - (("spec\\.add_development_dependency 'appraisal'") "") - (("spec\\.add_development_dependency 'simplecov'") "")) - (substitute* "Gemfile" - (("gem 'rubocop'.*") "")) - (substitute* "Rakefile" - (("require 'rubocop/rake_task'") "") - (("RuboCop::RakeTask\\.new\\(:rubocop\\)") "")) - (substitute* "spec/spec_helper.rb" - (("require 'simplecov.*") "\n") - ;; Use [].each to disable running the SimpleCov configuration - ;; block - (("SimpleCov\\.configure") "[].each") - (("require 'codeclimate-test-reporter'") "") - (("require 'codacy-coverage'") "") - (("Codacy::Reporter\\.start") ""))))))) - (native-inputs - (list bundler ruby-rspec ruby-rbnacl)) - (synopsis "Ruby implementation of the JSON Web Token standard") - (description - "This package provides a pure Ruby implementation of the RFC 7519 OAuth -@acronym{JWT, JSON Web Token} standard.") - (home-page "https://github.com/jwt/ruby-jwt") - (license license:expat))) - -;; Even though this package only provides bindings for a Mac OSX API it is -;; required by "ruby-listen" at runtime. -(define-public ruby-rb-fsevent - (package - (name "ruby-rb-fsevent") - (version "0.10.3") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rb-fsevent" version)) - (sha256 - (base32 - "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8")))) - (build-system ruby-build-system) - ;; Tests need "guard-rspec", which needs "guard". However, "guard" needs - ;; "listen", which needs "rb-fsevent" at runtime. - (arguments `(#:tests? #f)) - (synopsis "FSEvents API with signals catching") - (description - "This library provides Ruby bindings for the Mac OSX FSEvents API.") - (home-page "https://rubygems.org/gems/rb-fsevent") - (license license:expat))) - -(define-public ruby-listen - (package - (name "ruby-listen") - (version "3.8.0") - (source - (origin - ;; The gem does not include a Rakefile, so fetch from the Git - ;; repository. - (method git-fetch) - (uri (git-reference - (url "https://github.com/guard/listen") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1skkglml094dw1xr4742in1rwwa84ld0mz4nkw6qa8pwhx48x2n5")))) - (build-system ruby-build-system) - (arguments - (list - #:test-target "spec" - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'fix-files-in-gemspec - (lambda _ - (substitute* "listen.gemspec" - (("`git ls-files -z`") - "`find . -type f -printf '%P\\\\0' |sort -z`")))) - (add-before 'check 'remove-unnecessary-dependencies' - (lambda _ - (substitute* "Rakefile" - ;; Rubocop is for code linting, and is unnecessary for running - ;; the tests. - ((".*rubocop.*") ""))))))) - (native-inputs - (list bundler ruby-rspec)) - (inputs - (list ;; ruby-thor is used for the command line interface, and is referenced - ;; in the wrapper, and therefore just needs to be an input. - ruby-thor)) - (propagated-inputs - (list ruby-rb-fsevent ruby-rb-inotify)) - (synopsis "Listen to file modifications") - (description "The Listen gem listens to file modifications and notifies -you about the changes.") - (home-page "https://github.com/guard/listen") - (license license:expat))) - -(define-public ruby-loofah - (package - (name "ruby-loofah") - (version "2.21.3") - (home-page "https://github.com/flavorjones/loofah") - (source - (origin - ;; Build from git because the gem lacks tests. - (method git-fetch) - (uri (git-reference (url home-page) - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1lh7cf56y1b0h090ahphvz7grq581phsamdl0rq59y0q9bqwrhg0")))) - (build-system ruby-build-system) - (native-inputs - (list ruby-hoe ruby-hoe-markdown ruby-rr)) - (propagated-inputs - (list ruby-nokogiri ruby-crass)) - (synopsis "Ruby library for manipulating and transforming HTML/XML") - (description - "Loofah is a general library for manipulating and transforming HTML/XML -documents and fragments. It's built on top of Nokogiri and libxml2.") - (license license:expat))) - -(define-public ruby-crass - (package - (name "ruby-crass") - (version "1.0.6") - (home-page "https://github.com/rgrove/crass") - (source (origin - ;; The gem does not contain tests, so pull from git. - (method git-fetch) - (uri (git-reference - (url home-page) - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1gbsb81psgb6xhnwpx4s409jc0mk0gijh039sy5xyi8jpaaadp40")))) - (build-system ruby-build-system) - (synopsis "Pure Ruby CSS parser") - (description - "Crass is a pure Ruby CSS parser based on the CSS Syntax Level 3 spec.") - (license license:expat))) - -;;; The ruby-nokogumbo package has been absorbed into ruby-nokogiri. -(define-public ruby-nokogumbo - (deprecated-package "ruby-nokogumbo" ruby-nokogiri)) - -(define-public ruby-samovar - (package - (name "ruby-samovar") - (version "2.1.4") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/ioquatix/samovar") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "05pc5xlbv44anx0sfqssh0xhxg297bvl5slsl7k1vnka4k5fhax6")))) - (build-system ruby-build-system) - (native-inputs (list ruby-covered ruby-rspec)) - (propagated-inputs (list ruby-console ruby-mapping)) - (synopsis "Flexible option parser for Ruby") - (description "Samovar is a modern framework for building command-line -tools and applications. It provides a declarative class-based DSL for -building command-line parsers that include automatic documentation generation. -It helps you keep your functionality clean and isolated where possible.") - (home-page "https://github.com/ioquatix/samovar") - (license license:expat))) - -(define-public ruby-sanitize - (package - (name "ruby-sanitize") - (version "6.0.0") - (home-page "https://github.com/rgrove/sanitize") - (source (origin - (method git-fetch) - ;; The gem does not include the Rakefile, so we download the - ;; source from Github. - (uri (git-reference - (url home-page) - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0p1a28vx95vscy9xzzyyddzgb9496x42a5i2ka39cpxbl5f3gkl0")))) - (build-system ruby-build-system) - (propagated-inputs (list ruby-crass ruby-nokogiri)) - (native-inputs (list ruby-minitest)) - (synopsis "Whitelist-based HTML and CSS sanitizer") - (description - "Sanitize is a whitelist-based HTML and CSS sanitizer. Given a list of -acceptable elements, attributes, and CSS properties, Sanitize will remove all -unacceptable HTML and/or CSS from a string.") - (license license:expat))) - -(define-public ruby-sync - (package - (name "ruby-sync") - (version "0.5.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "sync" version)) - (sha256 - (base32 - "1z9qlq4icyiv3hz1znvsq1wz2ccqjb1zwd6gkvnwg6n50z65d0v6")))) - (build-system ruby-build-system) - (synopsis "Ruby module with a two-phase lock and counter") - (description "This package provides a Ruby module that provides a two-phase -lock with a counter.") - (home-page "https://github.com/ruby/sync") - (license license:bsd-2))) - -(define-public ruby-oj - (package - (name "ruby-oj") - (version "3.13.9") - (source - (origin - (method git-fetch) - ;; Version on rubygems.org does not contain Rakefile, so download from - ;; GitHub instead. - (uri (git-reference - (url "https://github.com/ohler55/oj") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0a24zd28y58nyhjxgrpn2k9p72vzj3zbmdrcsbhwbdycj7nn9fpd")))) - (build-system ruby-build-system) - (arguments - '(#:test-target "test_all" - #:phases - (modify-phases %standard-phases - (add-before 'check 'disable-bundler - (lambda _ - (substitute* "Rakefile" - (("Bundler\\.with_clean_env") "1.times") - (("bundle exec ") ""))))))) - (native-inputs - (list bundler ruby-rspec ruby-rake-compiler)) - (synopsis "JSON parser for Ruby optimized for speed") - (description - "Oj is a JSON parser and generator for Ruby, where the encoding and -decoding of JSON is implemented as a C extension to Ruby.") - (home-page "https://www.ohler.com/oj/") - (license (list license:expat ; Ruby code - license:bsd-3)))) ; extension code - -(define-public ruby-ox - (package - (name "ruby-ox") - (version "2.6.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "ox" version)) - (sha256 - (base32 - "0fmk62b1h2i79dfzjj8wmf8qid1rv5nhwfc17l489ywnga91xl83")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; no tests - (synopsis "Optimized XML library for Ruby") - (description - "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby -written as a native C extension. It was designed to be an alternative to -Nokogiri and other Ruby XML parsers for generic XML parsing and as an -alternative to Marshal for Object serialization.") - (home-page "https://www.ohler.com/ox") - (license license:expat))) - -(define-public ruby-redcloth - (package - (name "ruby-redcloth") - (version "4.3.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "RedCloth" version)) - (sha256 - (base32 - "0m9dv7ya9q93r8x1pg2gi15rxlbck8m178j1fz7r5v6wr1avrrqy")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f ; no tests - #:phases - (modify-phases %standard-phases - ;; Redcloth has complicated rake tasks to build various versions for - ;; multiple targets using RVM. We don't want this so we just use the - ;; existing gemspec. - (replace 'build - (lambda _ - (invoke "gem" "build" "redcloth.gemspec")))))) - (native-inputs - `(("bundler" ,bundler) - ("ruby-diff-lcs" ,ruby-diff-lcs) - ("ruby-rspec-2" ,ruby-rspec-2))) - (synopsis "Textile markup language parser for Ruby") - (description - "RedCloth is a Ruby parser for the Textile markup language.") - (home-page "http://redcloth.org") - (license license:expat))) - -(define-public ruby-pg - (let ((commit "378b7a35c12292625460ef2f33373de7114bf255") - (revision "0")) - (package - (name "ruby-pg") - (version (git-version "1.5.9" revision commit)) - (home-page "https://github.com/ged/ruby-pg") - (source - (origin - (method git-fetch) - (uri (git-reference - (url home-page) - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 "1aq6kakyghgbb4yykxxl9ziaaa7jbdbyc7vz6avyxhlby1jkj0m8")) - (patches - (search-patches "ruby-pg-fix-connect-timeout.patch")))) - (build-system ruby-build-system) - (arguments - (list - #:test-target "spec" - #:phases - #~(modify-phases %standard-phases - (add-before 'build 'compile - (lambda _ - (invoke "rake" "compile"))) - ;; Some tests rely on postgresql_lib_path.rb, but it is not - ;; available until the gem is installed. Run tests after - ;; installing to work around it. - (delete 'check) - (add-after 'install 'check - (lambda* (#:key tests? #:allow-other-keys) - (let ((new-gem (string-append #$output - "/lib/ruby/vendor_ruby"))) - (setenv "GEM_PATH" - (string-append (getenv "GEM_PATH") ":" new-gem)) - (when tests? - (invoke "rspec")))))))) - (native-inputs (list ruby-rake-compiler ruby-hoe ruby-rspec)) - (inputs (list postgresql)) - (synopsis "Ruby interface to PostgreSQL") - (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works -with PostgreSQL 9.3 and later.") - (license license:ruby)))) - -(define-public ruby-byebug - (package - (name "ruby-byebug") - (version "11.1.3") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/deivid-rodriguez/byebug") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0vyy3k2s7dcndngj6m8kxhs1vxc2c93dw8b3yyand3srsg9ffpij")) - (modules '((guix build utils))) - (snippet - '(begin - ;; Remove wrappers that try to setup a bundle environment. - (with-directory-excursion "bin" - (for-each delete-file '("bundle" "rake" "rubocop")) - ;; ruby-minitest doesn't come with a launcher, so fix the one - ;; provided. - (substitute* "minitest" - (("load File\\.expand_path\\(\"bundle\".*") "") - (("require \"bundler/setup\".*") ""))))))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'sanitize-dependencies - (lambda _ - (substitute* "Rakefile" - ((".*chandler/tasks.*") "")))) - (add-after 'unpack 'skip-tmp-path-sensitive-test - (lambda _ - (substitute* "test/commands/where_test.rb" - (("unless /cygwin\\|mswin\\|mingw\\|darwin/.*") - "unless true\n")))) - (add-before 'build 'compile - (lambda _ - (invoke "rake" "compile"))) - (add-before 'check 'patch-tests - (lambda _ - ;; srand': no implicit conversion of nil into Integer (TypeError) - (delete-file "test/minitest_runner_test.rb") - ;; Expects 5, gets 162. From a file containing ~10 lines. - (substitute* "test/commands/finish_test.rb" - (("test_finish_inside_autoloaded_files") - "finish_inside_autoloaded_files")))) - (add-before 'check 'set-home - (lambda _ - (setenv "HOME" (getcwd))))))) - (native-inputs - (list bundler - ruby-minitest - ruby-pry - ruby-rake-compiler - ruby-rubocop - ruby-yard)) - (synopsis "Debugger for Ruby 2") - (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2 -TracePoint C API for execution control and the Debug Inspector C API for call -stack navigation. The core component provides support that front-ends can -build on. It provides breakpoint handling and bindings for stack frames among -other things and it comes with a command line interface.") - (home-page "https://github.com/deivid-rodriguez/byebug") - (license license:bsd-2))) - -(define-public ruby-netrc - (package - (name "ruby-netrc") - (version "0.11.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "netrc" version)) - (sha256 - (base32 - "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - ;; There is no Rakefile and minitest can only run one file at once, - ;; so we have to iterate over all test files. - (lambda _ - (for-each (lambda (file) - (invoke "ruby" "-Itest" file)) - (find-files "./test" "test_.*\\.rb")))) - (add-before 'check 'patch-tests-for-newer-ruby - (lambda _ - (substitute* "test/test_netrc.rb" - (("Dir.pwd, '.netrc'") "Netrc.home_path, '.netrc'"))))))) - (native-inputs - (list ruby-minitest)) - (synopsis "Library to read and update netrc files") - (description - "This library can read and update netrc files, preserving formatting -including comments and whitespace.") - (home-page "https://github.com/geemus/netrc") - (license license:expat))) - -(define-public ruby-unf-ext - (package - (name "ruby-unf-ext") - (version "0.0.8.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "unf_ext" version)) - (sha256 - (base32 - "1yj2nz2l101vr1x9w2k83a0fag1xgnmjwp8w8rw4ik2rwcz65fch")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'build 'build-ext - (lambda _ (invoke "rake" "compile:unf_ext"))) - (add-before 'check 'lose-rake-compiler-dock-dependency - (lambda _ - ;; rake-compiler-dock is listed in the gemspec, but only - ;; required when cross-compiling. - (substitute* "unf_ext.gemspec" - ((".*rake-compiler-dock.*") ""))))))) - (native-inputs - (list bundler ruby-rake-compiler ruby-test-unit)) - (synopsis "Unicode normalization form support library") - (description - "This package provides unicode normalization form support for Ruby.") - (home-page "https://github.com/knu/ruby-unf_ext") - (license license:expat))) - -(define-public ruby-tdiff - ;; Use a newer than released snapshot so that rspec-2 is not required. - (let ((commit "b662a6048f08abc45c1a834e5f34dd1c662935e2")) - (package - (name "ruby-tdiff") - (version (string-append "0.3.3-1." (string-take commit 8))) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/postmodern/tdiff") - (commit commit))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "0n3gq8rx49f7ln6zqlshqfg2mgqyy30rsdjlnki5mv307ykc7ad4")))) - (build-system ruby-build-system) - (native-inputs - (list ruby-rspec ruby-yard/minimal ruby-rubygems-tasks)) - (synopsis "Calculate the differences between two tree-like structures") - (description - "This library provides functions to calculate the differences between two -tree-like structures. It is similar to Ruby's built-in @code{TSort} module.") - (home-page "https://github.com/postmodern/tdiff") - (license license:expat)))) - -(define-public ruby-nokogiri-diff - ;; Use a newer than released snapshot so that rspec-2 is not required. - (let ((commit "a38491e4d8709b7406f2cae11a50226d927d06f5")) - (package - (name "ruby-nokogiri-diff") - (version (string-append "0.2.0-1." (string-take commit 8))) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/postmodern/nokogiri-diff") - (commit commit))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "1ah2sfjh9n1p0ln2wkqzfl448ml7j4zfy6dhp1qgzq2m41php6rf")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-tdiff - ruby-nokogiri)) - (native-inputs - (list ruby-rspec ruby-yard/minimal ruby-rubygems-tasks)) - (synopsis "Calculate the differences between two XML/HTML documents") - (description - "@code{Nokogiri::Diff} adds the ability to calculate the -differences (added or removed nodes) between two XML/HTML documents.") - (home-page "https://github.com/postmodern/nokogiri-diff") - (license license:expat)))) - -(define-public ruby-racc - (package - (name "ruby-racc") - (version "1.5.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "racc" version)) - (sha256 - (base32 - "178k7r0xn689spviqzhvazzvxfq6fyjldxb3ywjbgipbfi4s8j1g")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f)) ; Fails while parsing test instructions. - (native-inputs - (list ruby-hoe ruby-rake-compiler)) - (synopsis "LALR(1) parser generator for Ruby") - (description - "Racc is a LALR(1) parser generator. It is written in Ruby itself, and -generates Ruby program.") - (home-page "https://i.loveruby.net/en/projects/racc/") - (license (list - ;; Generally licensed under the LGPL2.1, and some files also - ;; available under the same license as Ruby. - license:lgpl2.1 - license:ruby)))) - -(define-public ruby-rack - (package - (name "ruby-rack") - ;; Do not upgrade to version 3, as Rails doesn't support it yet. - (version "2.2.7") - (source - (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/rack/rack") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "02r41fr61x0jfhraizc6bsgs40p8mlpvnzix71zwmcvibg384ify")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-before 'check 'fix-tests - (lambda _ - ;; This test fails in the build environment (and passes outside - ;; of it). - (substitute* "test/spec_files.rb" - (("res.body.must_equal expected_body") "")) - ;; A few of the tests use the length of a file on disk for - ;; Content-Length and Content-Range headers. However, this file - ;; has a shebang in it which an earlier phase patches, growing - ;; the file size from 193 to 239 bytes when the store prefix is - ;; "/gnu/store". - (let ((size-diff (- (string-length (which "ruby")) - (string-length "/usr/bin/env ruby")))) - (substitute* '("test/spec_files.rb") - (("208" bytes) - (number->string (+ (string->number bytes) size-diff))) - (("bytes(.)22-33" all delimiter) - (string-append "bytes" - delimiter - (number->string (+ 22 size-diff)) - "-" - (number->string (+ 33 size-diff))))))))))) - (native-inputs - (list ruby-minitest - ruby-minitest-global-expectations - ruby-webrick)) - (synopsis "Unified web application interface for Ruby") - (description "Rack provides a minimal, modular and adaptable interface for -developing web applications in Ruby. By wrapping HTTP requests and responses, -it unifies the API for web servers, web frameworks, and software in between -into a single method call.") - (home-page "https://github.com/rack/rack") - (license license:expat))) - -(define-public ruby-rack-next - (package - (inherit ruby-rack) - (name "ruby-rack") - (version "3.0.7") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/rack/rack") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0msf14655nfcq1kgmib6932lgzm9nw3nb0m3c7nh6nj4sx30yxfr")))) - (arguments '()))) - -(define-public ruby-rackup - (package - (name "ruby-rackup") - (version "2.1.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/rack/rackup") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "19b7sy700zjwaw7x47qpxvhnnz5hrp5bhrxfyljgagrli824dajy")))) - (build-system ruby-build-system) - (native-inputs (list ruby-minitest-global-expectations)) - (inputs (list ruby-rack-next ruby-webrick)) - (synopsis "Command line interface (CLI) for running for Rack applications") - (description "This package provides a command line interface for running -for Rack applications.") - (home-page "https://github.com/rack/rackup") - (license license:expat))) - -(define-public ruby-rackup-1 - (package - (inherit ruby-rackup) - (name "ruby-rackup") - (version "1.0.1") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/rack/rackup") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1xdfxsz7jx2gwfq212y9mca6q0i5s7kyqbfcscy1315awg57ynyp")))))) - -(define-public ruby-rack-cache - (package - (name "ruby-rack-cache") - (version "1.13.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rack-cache" version)) - (sha256 - (base32 - "1cqpax628h2mhnsjfg91c3klxwx2pkvaj061cisb0saqa99b0jgm")))) - (build-system ruby-build-system) - (arguments - (list - ;; The test suite depends on ruby-memcached, which is not available in - ;; Guix and bundles a very dated copy of memcached (undesirable). - #:tests? #f)) - (propagated-inputs (list ruby-rack)) - (synopsis "Component to enable HTTP caching for Rack-based applications") - (description "Rack::Cache is suitable as a drop-in component to enable -HTTP caching for Rack-based applications that produce freshness (Expires, -Cache-Control) and/or validation (Last-Modified, ETag) information.") - (home-page "https://github.com/rtomayko/rack-cache") - (license license:expat))) - -(define-public ruby-rack-test - (package - (name "ruby-rack-test") - (version "2.1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "rack-test" version)) - (sha256 - (base32 - "1ysx29gk9k14a14zsp5a8czys140wacvp91fja8xcja0j1hzqq8c")))) - (build-system ruby-build-system) - (arguments - ;; Disable tests because of circular dependencies: requires sinatra, - ;; which requires rack-protection, which requires rack-test. Instead - ;; simply require the library. - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "ruby" "-Ilib" "-r" "rack/test"))))))) - (propagated-inputs - (list ruby-rack)) - (synopsis "Testing API for Rack applications") - (description - "Rack::Test is a small, simple testing API for Rack applications. It can -be used on its own or as a reusable starting point for Web frameworks and -testing libraries to build on.") - (home-page "https://github.com/rack/rack-test") - (license license:expat))) - -(define-public ruby-rack-session - (package - (name "ruby-rack-session") - ;; Stay on version 1 until all the rack users such as Rails can use rack 3 - ;; (rack-session 2 requires rack 3). - (version "1.0.1") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/rack/rack-session") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0rv955wd7ckp5jgy5c229wmajh48jpcy8s0iv5i8ma61wf7qw0i1")))) - (build-system ruby-build-system) - (native-inputs - (list ruby-minitest-global-expectations - ruby-minitest-sprint)) - (propagated-inputs - (list ruby-rack)) - (synopsis "Session management for Rack") - (description "This package provides a session management implementation -for Rack.") - (home-page "https://github.com/rack/rack-session") - (license license:expat))) - -(define-public ruby-rack-protection - (package - (name "ruby-rack-protection") - (version "3.0.5") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "rack-protection" version)) - (sha256 - (base32 - "1a12m1mv8dc0g90fs1myvis8vsgr427k1arg1q4a9qlfw6fqyhis")))) - (build-system ruby-build-system) - (arguments - '(;; Tests missing from the gem. - #:tests? #f)) - (propagated-inputs - (list ruby-rack)) - (native-inputs - (list bundler ruby-rspec-2 ruby-rack-test)) - (synopsis "Rack middleware that protects against typical web attacks") - (description "Rack middleware that can be used to protect against typical -web attacks. It can protect all Rack apps, including Rails. For instance, it -protects against cross site request forgery, cross site scripting, -clickjacking, directory traversal, session hijacking and IP spoofing.") - (home-page "https://github.com/sinatra/sinatra/tree/master/rack-protection") - (license license:expat))) - -(define-public ruby-rainbow - (package - (name "ruby-rainbow") - (version "3.0.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "rainbow" version)) - (sha256 - (base32 - "0bb2fpjspydr6x0s8pn1pqkzmxszvkfapv0p4627mywl7ky4zkhk")))) - (build-system ruby-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - ;; Run rspec directly, to avoid requiring Rubocop which is used from - ;; the Rakefile. - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (native-inputs - (list bundler ruby-rspec)) - (synopsis "Colorize printed text on ANSI terminals") - (description - "@code{rainbow} provides a string presenter object to colorize strings by -wrapping them in ANSI escape codes.") - (home-page "https://github.com/sickill/rainbow") - (license license:expat))) - -(define-public ruby-rr - (package - (name "ruby-rr") - (version "1.2.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "rr" version)) - (sha256 - (base32 - "1n9g78ba4c2zzmz8cdb97c38h1xm0clircag00vbcxwqs4dq0ymp")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; test files not included - (native-inputs - (list bundler ruby-rspec)) - (synopsis "Ruby test double framework") - (description - "RR is a test double framework that features a rich selection of double -techniques and a terse syntax.") - (home-page "https://rr.github.io/rr/") - (license license:expat))) - -(define-public ruby-rest-client - (package - (name "ruby-rest-client") - (version "2.1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "rest-client" version)) - (sha256 - (base32 - "1qs74yzl58agzx9dgjhcpgmzfn61fqkk33k1js2y5yhlvc5l19im")))) - (build-system ruby-build-system) - (arguments - (list - ;; TODO Some tests are currently broken - #:tests? #f - #:phases - #~(modify-phases %standard-phases - (add-before 'check 'remove-unnecessary-development-dependencies - (lambda _ - (substitute* "rest-client.gemspec" - ;; Remove rubocop as it's unused. Rubocop also indirectly - ;; depends on this package through ruby-parser and ruby-ast so - ;; this avoids a dependency loop. - ((".*rubocop.*") "\n") - ;; Remove pry as it's unused, it's a debugging tool - ((".*pry.*") "\n") - ;; Remove an unnecessarily strict rdoc dependency - ((".*rdoc.*") "\n")))) - (add-before 'check 'delete-network-dependent-tests - (lambda _ - (delete-file "spec/integration/request_spec.rb") - (delete-file "spec/integration/httpbin_spec.rb"))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (propagated-inputs - (list ruby-http-accept-1 - ruby-http-cookie - ruby-mime-types - ruby-netrc)) - (native-inputs - (list bundler - ruby-webmock-2 - ruby-rspec)) - (synopsis "Simple HTTP and REST client for Ruby") - (description - "@code{rest-client} provides a simple HTTP and REST client for Ruby, -inspired by the Sinatra microframework style of specifying actions: -@code{get}, @code{put}, @code{post}, @code{delete}.") - (home-page "https://github.com/rest-client/rest-client") - (license license:expat))) - -(define-public ruby-rubocop-ast - (package - (name "ruby-rubocop-ast") - (version "1.37.0") - (source - (origin - (method git-fetch) ;no test suite in distributed gem - (uri (git-reference - (url "https://github.com/rubocop/rubocop-ast") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1ww1vxcx6qaih4g68mrbq4xlgrqbv8w7cqxdaz629sazpw2hkycs")))) - (build-system ruby-build-system) - (arguments - `(#:test-target "spec" - #:phases (modify-phases %standard-phases - (add-after 'unpack 'relax-dependencies - (lambda _ - (substitute* "Gemfile" - (("gem 'simplecov', '~> 0.10', '< 0.18'") - "gem 'simplecov', '~> 0.10'")))) - (add-before 'build 'generate-lexer - (lambda _ - (setenv "RUBOCOP_VERSION" "none") - (invoke "rake" "generate"))) - (replace 'replace-git-ls-files - (lambda _ - (substitute* "rubocop-ast.gemspec" - (("`git ls-files(.*)`" _ files) - (format #f "`find ~a -type f| sort`" files)))))))) - (native-inputs - (list ruby-bump - ruby-oedipus-lex - ruby-prism - ruby-racc - ruby-rake - ruby-rspec - ruby-simplecov)) - (propagated-inputs - (list ruby-parser)) - (synopsis "RuboCop's AST extensions and NodePattern functionality") - (description "Rubocop::AST extends @code{ruby-parser} with classes used -by RuboCop to deal with Ruby's Abstract Syntax Tree (AST), in particular: -@itemize -@item @code{RuboCop::AST::Node} -@item @code{RuboCop::AST::NodePattern} -@end itemize") - (home-page "https://rubocop.org/") - (license license:expat))) - -(define-public ruby-rexml - (package - (name "ruby-rexml") - (version "3.2.5") - (source - (origin - (method git-fetch) ;no tests in distributed gem - (uri (git-reference - (url "https://github.com/ruby/rexml") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "13n6vaa80drqic2wri4q6k22qzvsn683vp5s8c9dllil6x04kn0x")))) - (build-system ruby-build-system) - (synopsis "XML toolkit for Ruby") - (description "Inspired by Electric XML library for Java, REXML aims to be -easy-to-use API, small and fast. It supports both tree and stream document -parsing.") - (home-page "https://github.com/ruby/rexml") - (license license:bsd-2))) - -(define-public ruby-character-set - (package - (name "ruby-character-set") - (version "1.4.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "character_set" version)) - (sha256 - (base32 - "0affq9n77vwy897ri2zhmfinfagf37hcwwimrccy1bcxan9mj3h3")))) - (build-system ruby-build-system) - (arguments '(#:tests? #f)) ;avoid a cycle with ruby-regexp-parser - (synopsis "Ruby library to manipulate Unicode") - (description "CharacterSet is a C-extended Ruby library to work with sets -of Unicode code points. It can read and write these sets in various formats -and implements the @code{stdlib} @code{Set} interface for them. It also -offers an alternate paradigm of @code{String} processing which grants much -better performance than @code{Regexp} and @code{String} methods from the -@code{stdlib} where applicable. Many parts can be used independently, e.g.: -@itemize -@item @code{CharacterSet::Character} -@item @code{CharacterSet::Parser} -@item @code{CharacterSet::Writer} -@item @code{RangeCompressor} -@end itemize") - (home-page "https://github.com/jaynetics/character_set") - (license license:expat))) - -(define-public ruby-range-compressor - (package - (name "ruby-range-compressor") - (version "1.2.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/janosch-x/range_compressor") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1zmc44si5ac2h7r1x4f1j8z5yr6wz528c7dssh0g70fmczs3pfga")))) - (build-system ruby-build-system) - (arguments - (list - #:test-target "spec" - #:phases - #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'strip-version-requirements - (lambda _ - (substitute* "range_compressor.gemspec" - (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped) - (string-append stripped "\n")))))))) - (native-inputs - (list ruby-rspec - ruby-sorted-set)) - (synopsis "Simple arrays of objects to arrays of ranges compressor") - (description "RangeCompresses is a tiny library that allows compressing -arrays of objects into arrays of ranges. For example, it can turn the -following: @code{[1, 2, 3, 4, 6, 8, 9, 10]} into @code{[1..4, 6..6, 8..10]}.") - (home-page "https://github.com/janosch-x/range_compressor") - (license license:expat))) - -(define-public ruby-regexp-property-values - (let ((commit "03007a66c912949a7130b973cc0eca109c20811f") - (revision "1")) - (package - (name "ruby-regexp-property-values") - (version (git-version "1.0.0" revision commit)) - (source - (origin - (method git-fetch) - (uri (git-reference ;no test suite in distributed gem - (url "https://github.com/jaynetics/regexp_property_values") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1zsax784p16zdkf60lyq9z924zvsafhx9ckxx9srsgkyiqrifi1s")))) - (build-system ruby-build-system) - (arguments - '(#:test-target "default")) - (native-inputs - (list ruby-character-set ruby-rake ruby-rake-compiler - ruby-range-compressor ruby-rspec)) - (synopsis "Inspect Ruby's regex engine property values") - (description "This small library lets you see which property values are -supported by the regular expression engine of the Ruby version you are running -and can directly read out their code point ranges. In other words, it -determines all supported values for @code{\\p{value}} expressions and what -they match.") - (home-page "https://github.com/jaynetics/regexp_property_values") - (license license:expat)))) - -(define-public ruby-regexp-parser - (package - (name "ruby-regexp-parser") - (version "2.6.0") - (source - (origin - (method git-fetch) ;bin/test missing from gem - (uri (git-reference - (url "https://github.com/ammar/regexp_parser") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "07dx96gjvpa07dsdnzpwhhwc7qpxakjgws7d7wbnkbs20fyvx55x")))) - (build-system ruby-build-system) - (arguments - '(#:test-target "default" - #:phases (modify-phases %standard-phases - (add-before 'build 'compile-scanner.rb - (lambda _ - (invoke "rake" "build") - ;; XXX: This is needed otherwise the install - ;; phase fails to delete the installed cached - ;; gem file. - (delete-file-recursively "pkg")))))) - (native-inputs - (list ragel ruby-ice-nine ruby-regexp-property-values ruby-rspec)) - (synopsis "Regular expression parser library for Ruby") - (description "A Ruby gem for tokenizing, parsing, and transforming regular -expressions. It comprises the following components: -@itemize -@item A scanner/tokenizer based on Ragel, -@item A lexer that produces a stream of token objects, -@item A parser that produces a tree of Expression objects. -@end itemize") - (home-page "https://github.com/ammar/regexp_parser") - (license license:expat))) - -(define-public ruby-test-queue - (package - (name "ruby-test-queue") - (version "0.4.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "test-queue" version)) - (sha256 - (base32 - "0hvm3n1qrqxqilhqk4rjivw3gcrd08zz1i6am9qzg1ppjxv6f36f")))) - (build-system ruby-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (native-inputs - (list ruby-rspec)) - (synopsis "Minitest/RSpec parallel test runner for CI environments") - (description "The test-queue module is a parallel test runner, -built using a centralized queue to ensure optimal distribution of -tests between workers. It is specifically optimized for Continuous -Integration (CI) environments: build statistics from each run are -stored locally and used to sort the queue at the beginning of the next -run.") - (home-page "https://github.com/tmm1/test-queue") - (license license:expat))) - -(define-public ruby-rubocop - (package - (name "ruby-rubocop") - (version "1.68.0") - (source - (origin - (method git-fetch) ;no tests in distributed gem - (uri (git-reference - (url "https://github.com/rubocop/rubocop") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0pfsrgkg2dhb6a2rknciqskgxgmb9kf48rvbkhay9n8n6m712v2w")))) - (build-system ruby-build-system) - (arguments - `(#:test-target "default" - ;; TODO: Figure out why test hangs. - #:tests? ,(not (or (%current-target-system) - (target-riscv64?))) - #:phases - (modify-phases %standard-phases - (add-before 'check 'set-home - (lambda _ - (setenv "HOME" (getcwd)))) - ;; Rubocop depends on itself for tests, directly and indirectly. By - ;; regenerating the TODO list we test rubocop against itself and - ;; forgo adjusting the test suite to our environment each release. - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (make-file-writable ".rubocop_todo.yml") - (invoke "./exe/rubocop" "--auto-gen-config"))))))) - (native-inputs - (list ruby-pry - ruby-rake - ruby-rspec - ruby-rubocop-ast - ruby-rubocop-capybara-minimal - ruby-rubocop-factory-bot - ruby-rubocop-minimal - ruby-rubocop-performance-minimal - ruby-rubocop-rake-minimal - ruby-rubocop-rspec-minimal - ruby-simplecov - ruby-stackprof - ruby-test-queue - ruby-webmock - ruby-yard)) - (propagated-inputs - (list ruby-json - ruby-language-server-protocol - ruby-parallel - ruby-parser - ruby-progressbar - ruby-rainbow - ruby-regexp-parser - ruby-rexml - ruby-rubocop-ast - ruby-unicode-display-width)) - (synopsis "Ruby code style checking tool") - (description - "@code{rubocop} is a Ruby code style checking tool. It aims to enforce -the community-driven Ruby Style Guide.") - (home-page "https://github.com/rubocop/rubocop") - (license license:expat))) - -(define-public ruby-rubocop-minimal - (hidden-package - (package - (inherit ruby-rubocop) - (arguments - (substitute-keyword-arguments (package-arguments ruby-rubocop) - ((#:tests? _ #f) #f))) - (propagated-inputs '()) - (native-inputs '())))) - -(define-public ruby-contest - (package - (name "ruby-contest") - (version "0.1.3") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "contest" version)) - (sha256 - (base32 - "1p9f2292b7b0fbrcjswvj9v01z7ig5ig52328wyqcabgb553qsdf")))) - (build-system ruby-build-system) - (synopsis "Write declarative tests using nested contexts") - (description - "Contest allows writing declarative @code{Test::Unit} tests using nested -contexts without performance penalties.") - (home-page "https://github.com/citrusbyte/contest") - (license license:expat))) - -(define-public ruby-creole - (package - (name "ruby-creole") - (version "0.5.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "creole" version)) - (sha256 - (base32 - "00rcscz16idp6dx0dk5yi5i0fz593i3r6anbn5bg2q07v3i025wm")))) - (build-system ruby-build-system) - (native-inputs - (list ruby-bacon)) - (synopsis "Creole markup language converter") - (description - "Creole is a lightweight markup language and this library for converting -creole to @code{HTML}.") - (home-page "https://github.com/minad/creole") - (license license:ruby))) - -(define-public ruby-docile - (package - (name "ruby-docile") - (version "1.1.5") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "docile" version)) - (sha256 - (base32 - "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; needs github-markup, among others - (synopsis "Ruby EDSL helper library") - (description "Docile is a Ruby library that provides an interface for -creating embedded domain specific languages (EDSLs) that manipulate existing -Ruby classes.") - (home-page "https://ms-ati.github.io/docile/") - (license license:expat))) - -(define-public ruby-middleware - (package - (name "ruby-middleware") - (version "0.1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "middleware" version)) - (sha256 - (base32 - "0703nkf2v371wqr41c04x5qid7ww45cxqv3hnlg07if3b3xrm9xl")))) - (build-system ruby-build-system) - (arguments '(#:tests? #f)) ;no test suite - (synopsis "Implementation of a middleware abstraction for Ruby") - (description "Middleware is a generalized implementation of a middleware -abstraction for Ruby.") - (home-page "https://github.com/mitchellh/middleware") - (license license:expat))) - -(define-public ruby-benchmark-ips - (package - (name "ruby-benchmark-ips") - (version "2.12.0") - (source - (origin - (method git-fetch) ;no tests in distributed gem - (uri (git-reference - (url "https://github.com/evanphx/benchmark-ips") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "19pa2a1lgjzrxcz6vxwfiq5qq337vr15bbbpc2mfwzljdlx5059s")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'patch - (lambda _ - (substitute* "Gemfile" - (("gem 'rake'.*") - "gem 'rake'")) - (substitute* "benchmark-ips.gemspec" - (("git ls-files -- examples lib") - "find examples lib -type f | sort"))))))) - (native-inputs - (list ruby-hoe)) - (synopsis "Iterations per second enhancement for the Ruby Benchmark module") - (description "Benchmark-ips enhances the Ruby Benchmark module with the -iterations per second count. For short snippets of code, it can automatically -figure out how many times to run the code to get interesting data.") - (home-page "https://github.com/evanphx/benchmark-ips") - (license license:expat))) - -(define-public ruby-ffi-rzmq-core - (package - (name "ruby-ffi-rzmq-core") - (version "1.0.7") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "ffi-rzmq-core" version)) - (sha256 - (base32 - "0amkbvljpjfnv0jpdmz71p1i3mqbhyrnhamjn566w0c01xd64hb5")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-libzmq-search-path - (lambda* (#:key inputs #:allow-other-keys) - (let ((zeromq (assoc-ref inputs "zeromq"))) - (substitute* "lib/ffi-rzmq-core/libzmq.rb" - (("/usr/local/lib") - (string-append zeromq "/lib")))))) - (replace 'check - (lambda _ - (invoke "rspec")))))) - (native-inputs - (list ruby-rspec)) - (inputs - (list zeromq)) - (propagated-inputs (list ruby-ffi)) - (synopsis "Low-level Ruby FFI wrapper for the ZeroMQ networking library") - (description "This library only provides the FFI wrapper for the ZeroMQ -networking library. It can be used to implement a Ruby API for the ZeroMQ -library.") - (home-page "https://github.com/chuckremes/ffi-rzmq-core") - (license license:expat))) - -(define-public ruby-ffi-rzmq - (package - (name "ruby-ffi-rzmq") - (version "2.0.7") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "ffi-rzmq" version)) - (sha256 - (base32 - "14a5kxfnf8l3ngyk8hgmk30z07aj1324ll8i48z67ps6pz2kpsrg")))) - (build-system ruby-build-system) - (arguments '(#:phases (modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (native-inputs - (list ruby-rspec)) - (propagated-inputs - (list ruby-ffi-rzmq-core)) - (synopsis "High-level Ruby wrapper for the ZeroMQ networking library") - (description "This library provides a high-level API that wraps the ZeroMQ -networking library using the Ruby foreign function interface (FFI). It is a -pure Ruby wrapper, hence is compatible with any Ruby runtime that has support -for FFI.") - (home-page "https://github.com/chuckremes/ffi-rzmq") - (license license:expat))) - -(define-public ruby-sawyer - (package - (name "ruby-sawyer") - (version "0.9.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "sawyer" version)) - (sha256 - (base32 - "1jks1qjbmqm8f9kvwa81vqj39avaj9wdnzc531xm29a55bb74fps")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-addressable ruby-faraday)) - (synopsis "Experimental hypermedia agent for Ruby") - (description "Sawyer is an experimental hypermedia agent for Ruby built on -top of Faraday.") - (home-page "https://github.com/lostisland/sawyer") - (license license:expat))) - -(define-public ruby-octokit - (package - (name "ruby-octokit") - (version "6.1.1") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/octokit/octokit.rb") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "02bcmh0b0v80cis1l80lhzxw8adb69xkz6qgg4m7qcmj3y5arwmk")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'remove-unnecessary-dependencies - (lambda _ - (substitute* "spec/spec_helper.rb" - (("require 'pry-byebug'") ""))))))) - (native-inputs - (list ruby-faraday-multipart - ruby-jwt - ruby-mime-types - ruby-multi-json - ruby-netrc - ruby-rbnacl - ruby-rspec - ruby-simplecov - ruby-webmock - ruby-vcr-expat)) - (propagated-inputs (list ruby-faraday ruby-sawyer)) - (synopsis "Ruby toolkit for the GitHub API") - (description "Octokit wraps the GitHub API in a flat API client that -follows Ruby conventions and requires little knowledge of REST.") - (home-page "https://github.com/octokit/octokit.rb") - (license license:expat))) - -(define-public ruby-hashicorp-checkpoint - (package - (name "ruby-hashicorp-checkpoint") - (version "0.1.5") - (source (origin - (method url-fetch) - (uri (rubygems-uri "hashicorp-checkpoint" version)) - (sha256 - (base32 - "1z6mwzvd7p2wqhmk07dwrhvm0ncgqm7pxn0pr2k025rwsspp9bsd")))) - (build-system ruby-build-system) - (arguments - (list #:tests? #f)) ;; no need to test, useless outside HashiCorp anyway - (synopsis "Internal HashiCorp service to check version information") - (description "This package is probably useless outside of internal -HashiCorp use. It is open source for disclosure and because HashiCorp's open -source projects must be able to link to it.") - (home-page "https://github.com/hashicorp/ruby-checkpoint") - (license license:mpl2.0))) - -(define-public ruby-vagrant-cloud - (package - (name "ruby-vagrant-cloud") - (version "3.1.1") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/hashicorp/vagrant_cloud") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0bnjd8b86lrgj5ar1l7pg5if95bv0sxa75mz7x2ikqyz6q8rmjb3")))) - (build-system ruby-build-system) - (arguments - `(#:test-target "spec")) - (native-inputs (list ruby-rspec ruby-webmock)) - (propagated-inputs (list ruby-excon ruby-log4r ruby-rexml)) - (synopsis "Vagrant Cloud API library") - (description "This library provides the functionality to create, modify, -and delete boxes, versions, and providers on HashiCorp's Vagrant Cloud.") - (home-page "https://github.com/hashicorp/vagrant_cloud") - (license license:asl2.0))) - -(define-public ruby-libvirt - (package - (name "ruby-libvirt") - (version "0.8.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "ruby-libvirt" version)) - (sha256 - (base32 - "0v6vj5vs9v01zr00bflqpfczhwcyc6jdf8k2dqn42lq6d87si77d")))) - (build-system ruby-build-system) - (arguments - (list - #:tests? #f)) ; tests require access to libvirt socket - (native-inputs (list pkg-config)) - (inputs (list libvirt)) - (synopsis "Ruby bindings for libvirt") - (description "This package provides Ruby language binding for libvirt's -native C API.") - (home-page "https://ruby.libvirt.org/") - (license license:lgpl2.1+))) - -(define-public ruby-fog-core - (package - (name "ruby-fog-core") - (version "2.4.0") - (source (origin - (method git-fetch) ; for tests - (uri (git-reference - (url "https://github.com/fog/fog-core") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "184vpi81az7raz98652m7d98ikabdl9di37dgal0adr76q57j03c")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-before 'check 'set-home - (lambda _ - (setenv "HOME" "/tmp")))))) - (native-inputs (list ruby-minitest-stub-const)) - (propagated-inputs (list ruby-builder ruby-excon ruby-formatador - ruby-mime-types)) - (synopsis "Shared classes and tests for fog providers and services") - (description "@code{fog} is a Ruby cloud services library. This package -provides shared classes and tests for @code{fog} providers and services.") - (home-page "https://github.com/fog/fog-core") - (license license:expat))) - -(define-public ruby-fog-json - (package - (name "ruby-fog-json") - (version "1.2.0") - (source (origin - (method git-fetch) ; for tests - (uri (git-reference - (url "https://github.com/fog/fog-json") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0f4hbmhy22b1gbkzd3pnj5xvljp6bl7inc2y4fxh29nrmcn4pgb0")))) - (build-system ruby-build-system) - (native-inputs (list ruby-minitest)) - (propagated-inputs (list ruby-fog-core ruby-multi-json)) - (synopsis "JSON parsing tools used by @code{fog} providers") - (description "This package containse the JSON parsing tools shared between -a number of providers in the @code{fog} gem. @code{fog} is a Ruby cloud -services library.") - (home-page "https://github.com/fog/fog-json") - (license license:expat))) - -(define-public ruby-fog-xml - (package - (name "ruby-fog-xml") - (version "0.1.5") - (source (origin - (method git-fetch) ; for tests - (uri (git-reference - (url "https://github.com/fog/fog-xml") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1v896k9j44axhgvwjvk1j0amy27a9fm6ynv656fxqa1m2wib6dzh")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - ;; Run tests via bundler so rake picks up the minitest gem from - ;; native-inputs, not the one installed otherwise. This is required - ;; since turn@0.9.7 needs minitest@4 and can not be upgraded to - ;; minitest@5. - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "bundle" "exec" "rake"))))))) - (native-inputs (list ruby-minitest ruby-pry ruby-coveralls)) - (propagated-inputs (list ruby-fog-core ruby-nokogiri)) - (synopsis "XML parsing tools used by @code{fog} providers") - (description "This package containse the XML parsing tools shared between -a number of providers in the @code{fog} gem. @code{fog} is a Ruby cloud -services library.") - (home-page "https://github.com/fog/fog-xml") - (license license:expat))) - -(define-public ruby-fog-libvirt - (package - (name "ruby-fog-libvirt") - (version "0.12.0") - (source (origin - (method git-fetch) ; for tests - (uri (git-reference - (url "https://github.com/fog/fog-libvirt") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0b1qafb0l24anmr8fviwhp9vj14g0fic0mkg9n1i11h68zhqkj2v")))) - (build-system ruby-build-system) - (native-inputs (list ruby-minitest-stub-const ruby-mocha ruby-net-ssh - ruby-netrc ruby-octokit ruby-pry ruby-rubocop - ruby-shindo ruby-simplecov ruby-yard )) - (propagated-inputs (list ruby-fog-core ruby-fog-json ruby-fog-xml - ruby-json ruby-libvirt)) - (synopsis "Ruby libvirt provider, either standalone or as a module for -@code{fog}") - (description "This library can be used as a module for @code{fog} or as -standalone libvirt provider. @code{fog} is a Ruby cloud services library.") - (home-page "https://github.com/fog/fog-libvirt") - (license license:expat))) - -(define-public ruby-pry-byebug - (package - (name "ruby-pry-byebug") - (version "3.10.1") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/deivid-rodriguez/pry-byebug") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0z8rhvmr9qmlbk8c8h6jbig5qd5xbdg9qihvx3g0cv1whqzbfikq")))) - (build-system ruby-build-system) - (arguments - `(#:phases (modify-phases %standard-phases - (add-after 'unpack 'sanitize-dependencies - (lambda _ - (substitute* "Rakefile" - ((".*chandler/tasks.*") "")))) - (add-before 'check 'set-home - (lambda _ - (setenv "HOME" (getcwd))))))) - (native-inputs (list ruby-rubocop ruby-simplecov)) - (propagated-inputs (list ruby-byebug ruby-pry)) - (synopsis "Step-by-step debugging and stack navigation in Pry") - (description "This package adds step-by-step debugging and stack -navigation capabilities to @code{pry}, using @code{byebug}.") - (home-page "https://github.com/deivid-rodriguez/pry-byebug") - (license license:expat))) - -(define-public ruby-stackprof - (package - (name "ruby-stackprof") - (version "0.2.27") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "stackprof" version)) - (sha256 - (base32 "03788mbipmihq2w7rznzvv0ks0s9z1321k1jyr6ffln8as3d5xmg")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-before 'check 'patch-gemspec - (lambda _ - (substitute* "stackprof.gemspec" - (("rake-compiler.*") - "rake-compiler>.freeze, [\"> 0.9\"])\n") - (("mocha.*") - "mocha>.freeze, [\"> 0.14\"])\n")))) - (add-before 'check 'skip-dubious-test - (lambda _ - (substitute* "test/test_stackprof.rb" - ;; This unreliable test can fail with "Expected 0 to be >= 1." - (("def test_(cputime)" _ name) - (string-append "def skip_" name)) - ;; This test often fails - (("def test_gc") "def skip_test_gc") - ;; This test is known to fail on 32-bit systems. - ;; /gnu/store/...-stackprof-0.2.27.gem - (("def test_raw") "def skip_test_raw")))) - (add-before 'check 'build-tests - (lambda _ - (invoke "rake" "compile"))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "bundle" "exec" "rake" "default"))))))) - (native-inputs - (list bundler ruby-mocha-1 ruby-rake-compiler)) - (synopsis "Sampling profiler for Ruby code") - (description - "@code{stackprof} is a fast sampling profiler for Ruby code, with cpu, -wallclock and object allocation samplers.") - (home-page "https://github.com/tmm1/stackprof") - (license license:expat))) - -(define-public ruby-bindex - (package - (name "ruby-bindex") - (version "0.8.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "bindex" version)) - (sha256 - (base32 "0zmirr3m02p52bzq4xgksq4pn8j641rx5d4czk68pv9rqnfwq7kv")))) - (build-system ruby-build-system) - (arguments - (list #:test-target "default" - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'avoid-bundler - (lambda _ - (substitute* "Rakefile" - (("^Bundler::.*") ""))))))) - (native-inputs (list bundler ruby-rake-compiler)) - (synopsis "Bindings for Ruby exceptions") - (description - "This package provides bindings for any kind of Ruby exceptions.") - (home-page "https://github.com/gsamokovarov/bindex") - (license license:expat))) - -(define-public ruby-binding-of-caller - (package - (name "ruby-binding-of-caller") - (version "0.8.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "binding_of_caller" version)) - (sha256 - (base32 - "05syqlks7463zsy1jdfbbdravdhj9hpj5pv2m74blqpv8bq4vv5g")))) - (build-system ruby-build-system) - ;; Attempting to run the test suite fails with a rake deprecation error - ;; (see: https://github.com/banister/binding_of_caller/issues/76). - (arguments '(#:tests? #f)) - (propagated-inputs - (list ruby-debug-inspector)) - (synopsis "Retrieve the binding of a method's caller") - (description "The @code{binding_of_caller} module provides the -@code{Binding#of_caller} method. It allows accessing bindings from upper -frames in the call stack and can evaluate code in that context.") - (home-page "https://github.com/banister/binding_of_caller") - (license license:expat))) - -(define-public ruby-pry-stack-explorer - (package - (name "ruby-pry-stack-explorer") - (version "0.5.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "pry-stack_explorer" version)) - (sha256 - (base32 - "157rd2n9pfvcmmicm0xkq8z4p6famaj13syrpra6b4032qpb1wn0")))) - (build-system ruby-build-system) - (arguments '(#:tests? #f)) ;no test suite in gem release - (propagated-inputs - (list ruby-binding-of-caller ruby-pry)) - (synopsis "Call-stack navigation plugin for the Pry REPL") - (description "@code{pry-stack_explorer} is a plugin for the Pry REPL that -add support to navigate the call-stack.") - (home-page "https://github.com/pry/pry-stack_explorer") - (license license:expat))) - -(define-public ruby-varint - (package - (name "ruby-varint") - (version "0.1.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "varint" version)) - (sha256 - (base32 - "1y0l2qc64cwsyv76ygg9bbjnk86riz2kq73kmn87gdrlmpiyrdac")))) - (build-system ruby-build-system) - (arguments '(#:tests? #f)) ;no test suite - (synopsis "Variable length integers (varint) C extension for Ruby") - (description "This package provides a small C extension to speed up -variable length integers (varint) in Ruby Protocol Buffers.") - (home-page "https://github.com/liquidm/varint") - (license license:bsd-3))) - -(define-public ruby-version-gem - (package - (name "ruby-version-gem") - (version "1.1.3") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://gitlab.com/oauth-xx/version_gem") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1wazx2jr9vx5wm48fy8bccvfwhg7y2s8shfw9q81dhb4yvwk6gbf")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'relax-requirements - (lambda _ - (substitute* "Gemfile" - (("^linting = .*") - "linting = false\n") - (("^coverage = .*") - "coverage = false\n") - (("^debug = .*") - "debug = false\n")) - (substitute* "spec/spec_helper.rb" - (("^RUN_COVERAGE = .*") - "RUN_COVERAGE = false\n") - (("^ALL_FORMATTERS = .*") - "ALL_FORMATTERS = false\n")))) - (add-before 'build 'drop-signing-key-requirement - (lambda _ - (substitute* "version_gem.gemspec" - (("spec.signing_key =.*") - "spec.signing_key = nil"))))))) - (native-inputs (list ruby-rspec ruby-rspec-block-is-expected)) - (synopsis "Improved @code{Version} module for Ruby") - (description "VersionGem aims to provide introspection of a @code{Version} -module based on a @code{Version::VERSION} constant string wile not interfering -with gemspec parsing where the @code{VERSION} string is traditionally used.") - (home-page "https://gitlab.com/oauth-xx/version_gem") - (license license:expat))) - -;;; Note: Do NOT update to a newer version; this is the last commit that is -;;; still licensed as free software, the project having switched to the -;;; Hippocratic license afterward (see: -;;; https://github.com/vcr/vcr/issues/959). -(define-public ruby-vcr-expat - (let ((revision "0") - (commit-dont-touch "842b2bf89099dc91f2c643d0d85d1abd54eb7e85")) ; - (package - (name "ruby-vcr-expat") - (version (git-version "5.0.0" revision commit-dont-touch)) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/vcr/vcr") - (commit commit-dont-touch))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "02mzifd2655kjh35bbry01n66jjcjrsw6ncqlybfkjcaqrw2zalv")))) - (build-system ruby-build-system) - (arguments (list #:tests? #f)) ;avoid all dependencies - (home-page "https://github.com/vcr/vcr") - (synopsis "HTTP interaction recorder [old version]") - (description "Record your test suite's HTTP interactions and replay them -during future test runs for fast, deterministic, accurate tests. This is an -older version of VCR that is free software under the Expat license. The -project later switched to the Hippocratic license, which is non-free. -@emph{Do not use it in new free software projects}.") - (license license:expat)))) - -(define-public ruby-ruby-prof - (package - (name "ruby-ruby-prof") - (version "1.4.5") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "ruby-prof" version)) - (sha256 - (base32 - "09n13bzm1p956z318xx1v7ikqdp2i971v7p3kwf3170axz368ccy")))) - (build-system ruby-build-system) - (arguments - ;; FIXME: Investigate why the tests fail on i686-linux. - `(#:tests? ,(not (or (%current-target-system) - (target-x86-32?))) - #:phases - (modify-phases %standard-phases - ;; The LineNumbersTest test fails non-deterministically (see: - ;; https://github.com/ruby-prof/ruby-prof/issues/276). - (add-after 'extract-gemspec 'delete-flaky-test - (lambda _ - (delete-file "test/line_number_test.rb") - (substitute* "ruby-prof.gemspec" - (("\"test/line_number_test\\.rb\"\\.freeze, ") "")))) - (add-before 'check 'compile - (lambda _ - (invoke "rake" "compile")))))) - (native-inputs (list bundler ruby-minitest ruby-rake-compiler ruby-rdoc)) - (synopsis "Fast code profiler for Ruby") - (description "RubyProf is a fast code profiler for Ruby. Its features -include: -@table @asis -@item Speed -Being a C extension, it is many times faster than the standard Ruby profiler. -@item Measurement Modes -It can measure program wall time, process time, object allocations and memory -usage. -@item Reports -A variety of text and cross-referenced HTML reports can be generated. -@item Threads -Profiling multiple threads simultaneously is supported. -@end table") - (home-page "https://github.com/ruby-prof/ruby-prof") - (license license:bsd-2))) - -(define-public ruby-ruby-memcheck - (package - (name "ruby-ruby-memcheck") - (version "1.3.2") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/Shopify/ruby_memcheck") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0fj4j4d062sw2kx2qlj877gjbj1xbb691njr8x9nbah6615idlni")))) - (build-system ruby-build-system) - (arguments - (list - ;; The tests seem to fail on 32bit x86 - #:tests? (not (or (target-x86-32?) - (%current-target-system))) - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'patch-valgrind-path - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "lib/ruby_memcheck/configuration.rb" - (("DEFAULT_VALGRIND = \"valgrind\"") - (format #f "DEFAULT_VALGRIND = ~s" - (search-input-file inputs "bin/valgrind")))))) - (add-before 'replace-git-ls-files 'standardize-git-ls-files - (lambda _ - (substitute* "ruby_memcheck.gemspec" - (("%x\\(git ls-files -z)") - "`git ls-files -z`"))))))) - (native-inputs (list ruby-rake-compiler ruby-rspec)) - (inputs (list valgrind/pinned)) - (propagated-inputs (list ruby-nokogiri)) - (synopsis "Valgrind memcheck tool for Ruby") - (description "The @code{ruby_memcheck} gem provides a sane way to use -Valgrind's memcheck on your native extension gem, that filters out all the -false positives caused by Ruby not freeing all of the memory it allocates -during shutdown.") - (home-page "https://github.com/Shopify/ruby_memcheck") - (license license:expat))) - -(define-public ruby-memory-profiler - (package - (name "ruby-memory-profiler") - (version "1.0.1") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/SamSaffron/memory_profiler") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1z1x0rymfv45gh1y3s46w5pga5y8cvgn228jiwlnhc8hin3zig84")))) - (build-system ruby-build-system) - (synopsis "Memory profiling routines for Ruby") - (description - "This package provides memory profiling routines for Ruby.") - (home-page "https://github.com/SamSaffron/memory_profiler") - (license license:expat))) - -(define-public ruby-cucumber-compatibility-kit - (package - (name "ruby-cucumber-compatibility-kit") - (version "11.2.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "cucumber-compatibility-kit" version)) - (sha256 - (base32 - "17c8zx0yn68rcpfbw4nb1gzvh9fzpwsi1y0qivb99ahdlgzcdp8q")))) - (build-system ruby-build-system) - (arguments (list #:phases #~(modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (propagated-inputs (list ruby-cucumber-messages ruby-rake ruby-rspec)) - (synopsis "Cucumber compatibility verification utility") - (description "The Cucumber Compatibility Kit (CCK) aims to validate a -Cucumber implementation's support for the Cucumber Messages protocol.") - (home-page "https://github.com/cucumber/compatibility-kit") - (license license:expat))) - -;;; Variant package to break a cycle with ruby-cucumber-messages. -(define ruby-cucumber-compatibility-kit-bootstrap - (package/inherit ruby-cucumber-compatibility-kit - (arguments (list #:tests? #f)) - (propagated-inputs (modify-inputs (package-propagated-inputs - ruby-cucumber-compatibility-kit) - (delete "ruby-cucumber-messages"))))) - -(define-public ruby-cucumber-messages - (package - (name "ruby-cucumber-messages") - (version "21.0.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "cucumber-messages" version)) - (sha256 - (base32 - "0482a63y7my0arn2bv208g401dq8525f0gwhnwaa11mhv6ph0q5i")))) - (build-system ruby-build-system) - (arguments - (list #:phases - #~(modify-phases %standard-phases - ;; The test suite requires the gem to be installed, so move it - ;; after the install phase. - (delete 'check) - (add-after 'install 'check - (lambda* (#:key tests? #:allow-other-keys) - (setenv "GEM_PATH" (string-append - (getenv "GEM_PATH") ":" - #$output "/lib/ruby/vendor_ruby")) - (when tests? - (invoke "rspec"))))))) - (native-inputs - (list ruby-cucumber-compatibility-kit-bootstrap ruby-rspec)) - (home-page "https://github.com/cucumber/messages/") - (synopsis "Cucumber Messages for Ruby (Protocol Buffers)") - (description "Cucumber Messages for Ruby is a library which allows -serialization and deserialization of the protocol buffer messages used in -Cucumber.") - (license license:expat))) - -(define-public ruby-cucumber-gherkin - (package - (name "ruby-cucumber-gherkin") - (version "26.1.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/cucumber/gherkin") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1rsannfcg5rqh5a3d3paw10kf6mmqjrgbq3k235px4swbyqysmgn")))) - (build-system ruby-build-system) - (arguments (list #:test-target "spec" - #:phases #~(modify-phases %standard-phases - (add-after 'unpack 'chdir - (lambda _ - (chdir "ruby")))))) - (native-inputs (list ruby-rspec)) - (propagated-inputs (list ruby-cucumber-messages)) - (synopsis "Gherkin parser for Ruby") - (description "Gherkin is a parser and compiler for the Gherkin language. -It is intended be used by all Cucumber implementations to parse -@file{.feature} files.") - (home-page "https://github.com/cucumber/gherkin") - (license license:expat))) - -(define-deprecated ruby-gherkin ruby-cucumber-gherkin) - -(define-public ruby-gherkin-ruby - (package - (name "ruby-gherkin-ruby") - (version "0.3.2") - (home-page "https://github.com/codegram/gherkin-ruby") - (source (origin - (method url-fetch) - (uri (rubygems-uri "gherkin-ruby" version)) - (sha256 - (base32 - "18ay7yiibf4sl9n94k7mbi4k5zj2igl4j71qcmkswv69znyx0sn1")))) - (build-system ruby-build-system) - (synopsis "Pure Ruby Gherkin parser") - (description - "Gherkin-ruby is a Gherkin parser written in pure Ruby and less than -200 lines of code.") - ;; XXX: No license information anywhere but Readme.md. - (license license:expat))) - -(define-public ruby-aruba - (package - (name "ruby-aruba") - (version "2.1.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/cucumber/aruba") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1mmlgqhi6yww3z34hmrrnha2rygkv6kx0q962z31dqxjkcv23yfd")))) - (build-system ruby-build-system) - (arguments - (list - ;; XXX: Only run the "spec" target and not the "cucumber" one, as it is - ;; slow and has multiple unexplained test failures. - #:test-target "spec" - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'patch-paths - (lambda _ - ;; This test file relies on a dynamically generated script; - ;; patch its #!/bin/bash shebang. - (substitute* "spec/aruba/api/commands_spec.rb" - (("/bin/bash") - (which "bash"))))) - (add-before 'check 'relax-requirements - ;; Many development requirements are not actually needed. - (lambda _ - (substitute* "aruba.gemspec" - (("\\[\">= 0.18.0\", \"< 0.22.0\"]") ;simplecov - "\">= 0.18.0\"") - ((".*appraisal.*") "") - ((".*pry.*") "") - ((".*kramdown.*") "") - ((".*rubocop.*") "") - ((".*yard-junk.*") "")) - (substitute* "Rakefile" - ((".*require \"rubocop/rake_task\".*") "") - ((".*require \"yard-junk/rake\".*") "") - ((".*RuboCop::RakeTask.new.*") "") - ((".*YardJunk::Rake.define_task.*") "")))) - ;; The tests rely on the Gem being installed, so move the check - ;; phase after the install phase. - (delete 'check) - (add-after 'install 'check - (assoc-ref %standard-phases 'check)) - (add-before 'check 'set-GEM_PATH - (lambda _ - (setenv "GEM_PATH" (string-append - (getenv "GEM_PATH") ":" - #$output "/lib/ruby/vendor_ruby")))) - (add-before 'check 'set-home - (lambda _ - (setenv "HOME" "/tmp")))))) - (native-inputs - (list ruby-rake-manifest - ruby-rspec - ruby-simplecov)) - (propagated-inputs - (list bundler - ruby-childprocess - ruby-contracts - ruby-cucumber - ruby-rspec-expectations - ruby-thor)) - (synopsis "Test command-line applications with Cucumber, RSpec or Minitest") - (description - "Aruba is an extension for Cucumber, RSpec and Minitest for testing -command-line applications. It supports applications written in any -language.") - (home-page "https://github.com/cucumber/aruba") - (license license:expat))) - -(define-public ruby-sys-uname - (package - (name "ruby-sys-uname") - (version "1.2.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "sys-uname" version)) - (sha256 - (base32 - "00p3wwvkdbg6pl38bchaagncv3i4fq4y0ks470imwykjanpy2ic0")))) - (build-system ruby-build-system) - (arguments - `(#:test-target "spec")) - (propagated-inputs (list ruby-ffi)) - (native-inputs (list ruby-rspec)) - (synopsis "Ruby interface for gathering system information") - (description "The sys-uname library provides an interface for gathering -information about your current platform. It allows retrieving information -such as the OS name, OS version, system name, etc.") - (home-page "https://github.com/djberg96/sys-uname") - (license license:asl2.0))) - -(define-public ruby-cucumber-html-formatter - (package - (name "ruby-cucumber-html-formatter") - (version "20.2.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "cucumber-html-formatter" version)) - (sha256 - (base32 - "0c7r9mfmph4c6yzc7y3dkr92rhwvpyksr0mdhpqp67xmmr8z1br4")))) - (build-system ruby-build-system) - (arguments - (list #:phases #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'relax-requirements - (lambda _ - (substitute* ".gemspec" - (("~> 18.0") "~> 21.0")))) ;cucumber-messages - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (native-inputs (list ruby-cucumber-compatibility-kit ruby-rspec)) - (propagated-inputs (list ruby-cucumber-messages)) - (synopsis "HTML formatter for Cucumber") - (description "Cucumber HTML Formatter produces a HTML report for Cucumber -runs. It is built on top of cucumber-react and works with any Cucumber -implementation with a protocol buffer formatter that outputs Cucumber -messages.") - (home-page "https://github.com/cucumber/html-formatter") - (license license:expat))) - -(define-public ruby-cucumber-ci-environment - (package - (name "ruby-cucumber-ci-environment") - (version "9.1.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "cucumber-ci-environment" version)) - (sha256 - (base32 - "1nmn2hfrjlbazgcryr3hwvsa5v4csfbjqxb4q7wbjhaxl9xxn0k7")))) - (build-system ruby-build-system) - (arguments (list #:phases #~(modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (native-inputs (list ruby-rspec)) - (synopsis "Detect CI Environment from environment variables") - (description "This is a Ruby utility library for Cucumber that detects a -CI environment from environment variables.") - (home-page "https://github.com/cucumber/ci-environment") - (license license:expat))) - -(define-public ruby-cucumber - (package - (name "ruby-cucumber") - (version "8.0.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/cucumber/cucumber-ruby") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1dz880fdz6rfbh1nwwcq21v65byik46jnf9gppnrqf3p5k61i55r")))) - (build-system ruby-build-system) - (arguments - (list #:test-target "spec" - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'disable-rubocop - ;; Remove extraneous Lint checks. - (lambda _ - (substitute* "Rakefile" - (("require 'rubocop/rake_task'") - "") - (("RuboCop::RakeTask.new") - "")))) - (add-after 'extract-gemspec 'strip-version-requirements - (lambda _ - (delete-file "Gemfile") ;do not use Bundler - (substitute* "cucumber.gemspec" - ;; The dependency specifications are often trailing - ;; behind and appear stricter than necessary, since the - ;; test suite passes with the newer component versions. - (("(.*add_.*dependency '[_A-Za-z0-9-]+')(.*)" - _ stripped rest) - (string-append stripped " # " rest "\n"))))) - (add-before 'check 'set-home - (lambda _ - (setenv "HOME" (getcwd))))))) - (propagated-inputs - (list ruby-builder - ruby-cucumber-ci-environment - ruby-cucumber-core - ruby-cucumber-gherkin - ruby-cucumber-html-formatter - ruby-cucumber-messages - ruby-cucumber-wire - ruby-diff-lcs - ruby-mime-types - ruby-multi-test - ruby-sys-uname)) - (native-inputs - (list ruby-cucumber-compatibility-kit - ruby-nokogiri - ruby-pry - ruby-webrick - ruby-rspec)) - (synopsis "Describe automated tests in plain language") - (description "Cucumber is a tool for running automated tests written in -plain language. It's designed to support a Behaviour Driven Development (BDD) -software development workflow.") - (home-page "https://cucumber.io/") - (license license:expat))) - -(define ruby-cucumber-without-tests - (package (inherit ruby-cucumber) - (arguments - '(#:tests? #f)) - (native-inputs - '()))) - -(define-public ruby-covered - (package - (name "ruby-covered") - (version "0.20.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "covered" version)) - (sha256 - (base32 - "04fpj493jn23ah5fq93956a5h2xj3z0hrckvc26fxcfsg5pbwypa")))) - (build-system ruby-build-system) - (arguments - ;; XXX: The test suite is disabled to avoid dependency cycles with - ;; ruby-samovar, through ruby-bake. - (list #:tests? #f - #:phases - #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'relax-requirements - (lambda _ - (substitute* ".gemspec" - (("\">= 3.2\"") - "\">= 2.7\""))))))) - (propagated-inputs (list ruby-console ruby-msgpack)) - (synopsis "Modern approach to code coverage in Ruby") - (description "Covered uses modern Ruby features to generate comprehensive -coverage, including support for templates which are compiled into Ruby. It -has the following features: -@itemize -@item -Incremental coverage -- if you run your full test suite, and the run a subset, -it will still report the correct coverage - so you can incrementally work on -improving coverage. -@item -Integration with RSpec, Minitest, Travis & Coveralls - no need to configure -anything - out of the box support for these platforms. -@item -It supports coverage of views -- templates compiled to Ruby code can be -tracked for coverage reporting. -@end itemize") - (home-page "https://github.com/ioquatix/covered") - (license license:expat))) - -(define-public ruby-coveralls - (package - (name "ruby-coveralls") - (version "0.8.23") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "coveralls" version)) - (sha256 - (base32 - "1mv4fn5lfxhy7bc2f1lpnc5yp9mvv97az77j4r7jgrxcqwn8fqxc")))) - (build-system ruby-build-system) - (arguments - (list #:test-target "default" - #:phases #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'disable-problematic-tests - (lambda _ - (substitute* "spec/coveralls/coveralls_spec.rb" - ;; This test fails for unknown reasons (perhaps - ;; networking); skip it. - (("it \"sends existing test results\"" all) - (string-append "x" all))) - ;; 3 simplecov tests fail, perhaps due to using a - ;; newer simplecov version. - (delete-file "spec/coveralls/simplecov_spec.rb") - (substitute* "coveralls-ruby.gemspec" - (("\"spec/coveralls/simplecov_spec.rb\".freeze, ") - "")))) - (add-after 'extract-gemspec 'relax-requirements - (lambda _ - (substitute* "coveralls-ruby.gemspec" - (("%q<simplecov>.freeze, \\[\"~> 0.16.1\"]") - "%q<simplecov>.freeze"))))))) - (native-inputs - (list git-minimal/pinned - ruby-pry - ruby-rspec - ruby-truthy - ruby-vcr-expat - ruby-webmock)) - (propagated-inputs - (list ruby-json - ruby-term-ansicolor - ruby-thor - ruby-tins - ruby-simplecov)) - (synopsis "Ruby implementation of the Coveralls API") - (description "This package provides a Ruby implementation of the Coveralls -API.") - (home-page "https://coveralls.io") - (license license:expat))) - -(define-public ruby-unindent - (package - (name "ruby-unindent") - (version "1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "unindent" version)) - (sha256 - (base32 - "1wqh3rzv8589yzibigminxx3qpmj2nqj28f90xy1sczk1pijmcrd")))) - (build-system ruby-build-system) - (synopsis "Ruby method to unindent strings") - (description "This module provides a @code{String#unindent} Ruby method to -unindent strings, which can be useful to unindent multiline strings embedded -in already-indented code.") - (home-page "https://github.com/mynyml/unindent") - (license license:expat))) - -(define-public ruby-cucumber-core - (package - (name "ruby-cucumber-core") - (version "11.1.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/cucumber/cucumber-ruby-core") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0lf2inlam0951djc2qz81x0nkffmw2dpj44iadw1fw31m7r8wqvh")))) - (build-system ruby-build-system) - (arguments (list #:test-target "spec" - #:phases - #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'relax-version-requirements - (lambda _ - (substitute* "cucumber-core.gemspec" - (("'cucumber-tag-expressions',.*") - "'cucumber-tag-expressions', '>=4.1.0'\n"))))))) - (native-inputs - (list ruby-rspec - ruby-coveralls - ruby-rubocop - ruby-simplecov - ruby-unindent)) - (propagated-inputs - (list ruby-cucumber-gherkin - ruby-cucumber-messages - ruby-cucumber-tag-expressions)) - (synopsis "Core library for the Cucumber BDD app") - (description "Cucumber is a tool for running automated tests -written in plain language. Because they're written in plain language, -they can be read by anyone on your team. Because they can be read by -anyone, you can use them to help improve communication, collaboration -and trust on your team.") - (home-page "https://cucumber.io/") - (license license:expat))) - -(define-public ruby-cucumber-expressions - (package - (name "ruby-cucumber-expressions") - (version "16.1.2") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/cucumber/cucumber-expressions") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1dhq88k9x2x8svam5bc7rrcd166fqymda8wxryqkbkffhnzla0id")))) - (build-system ruby-build-system) - (arguments - (list #:test-target "spec" - #:phases #~(modify-phases %standard-phases - (add-after 'unpack 'chdir - (lambda _ - (chdir "ruby")))))) - (native-inputs (list ruby-rspec ruby-simplecov)) - (synopsis "Simpler alternative to Regular Expressions") - (description "Cucumber Expressions offer similar functionality to Regular -Expressions, with a syntax that is easier to read and write. Cucumber -Expressions are extensible with parameter types.") - (home-page "https://github.com/cucumber/cucumber-expressions/") - (license license:expat))) - -(define-public ruby-cucumber-wire - (package - (name "ruby-cucumber-wire") - (version "6.2.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "cucumber-wire" version)) - (sha256 - (base32 - "1pmydrh9lcckj7p0cn67jw7msxdkgr9zir86cs19h3mf2zlcv7b9")))) - (build-system ruby-build-system) - (arguments - (list #:tests? #f)) ;tests use cucumber, causing a cycle - (propagated-inputs - (list ruby-cucumber-core ruby-cucumber-expressions - ruby-cucumber-messages)) - (synopsis "Cucumber wire protocol plugin") - (description "Cucumber's wire protocol allows step definitions to be -implemented and invoked on any platform.") - (home-page "https://github.com/cucumber/cucumber-ruby-wire") - (license license:expat))) - -(define-public ruby-cucumber-tag-expressions - (package - (name "ruby-cucumber-tag-expressions") - (version "5.0.1") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/cucumber/tag-expressions") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1ziq30szn8m5y29hsdpx4dn1a8sy29h01nvcldm8nr1mx4b7dj1w")))) - (build-system ruby-build-system) - (arguments - (list #:test-target "spec" - #:phases #~(modify-phases %standard-phases - (add-after 'unpack 'chdir - (lambda _ - (chdir "ruby")))))) - (native-inputs (list ruby-rspec)) - (synopsis "Cucumber tag expressions for Ruby") - (description "Cucumber tag expression parser for Ruby. A tag expression -is an infix boolean expression used by Cucumber.") - (home-page "https://github.com/cucumber/tag-expressions") - (license license:expat))) - -(define-public ruby-skiptrace - (package - (name "ruby-skiptrace") - (version "0.8.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "skiptrace" version)) - (sha256 - (base32 - "1qpjy6pqd8hx4w7bai64jsr10mwbpnnb65wcbssyqcnalimi1s12")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'remove-git-from-gemspec - (lambda _ - (substitute* "skiptrace.gemspec" - (("`git ls-files -z`") "`find . -type f -print0 |sort -z`")))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "bundle" "exec" "rake" "default"))))))) - (native-inputs - (list bundler ruby-rake-compiler)) - (synopsis "Provides access for bindings relating to Ruby exceptions") - (description - "@code{skiptrace} provides a way to access the bindings that relate to -exceptions in Ruby, providing more information about the context in which the -exception occurred.") - (home-page "https://github.com/gsamokovarov/skiptrace") - (license license:expat))) - -(define-public ruby-bio-logger - (package - (name "ruby-bio-logger") - (version "1.0.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "bio-logger" version)) - (sha256 - (base32 - "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f)) ; rake errors, missing shoulda - (propagated-inputs - (list ruby-log4r)) - (synopsis "Log4r wrapper for Ruby") - (description "Bio-logger is a wrapper around Log4r adding extra logging -features such as filtering and fine grained logging.") - (home-page "https://github.com/pjotrp/bioruby-logger-plugin") - (license license:expat))) - -(define-public ruby-yajl-ruby - (package - (name "ruby-yajl-ruby") - (version "1.4.3") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "yajl-ruby" version)) - (sha256 - (base32 - "1lni4jbyrlph7sz8y49q84pb0sbj82lgwvnjnsiv01xf26f4v5wc")))) - (build-system ruby-build-system) - (arguments - (list - #:test-target "spec" - #:phases - #~(modify-phases %standard-phases - (add-before 'check 'patch-test-to-update-load-path - (lambda _ - (substitute* "spec/parsing/large_number_spec.rb" - (("require \"yajl\"") - "$LOAD_PATH << 'lib'; require 'yajl'"))))))) - (native-inputs - (list ruby-rake-compiler ruby-rspec)) - (synopsis "Streaming JSON parsing and encoding library for Ruby") - (description - "Ruby C bindings to the Yajl JSON stream-based parser library. The API -is compatible with the JSON gem, so yajl-ruby can act as a drop in -replacement. - -A modified copy of yajl is used, and included in the package.") - (home-page "https://github.com/brianmario/yajl-ruby") - (license (list license:expat ; Ruby code, yajl_ext.c and yajl_ext.h - license:bsd-3)))) ; Included, modified copy of yajl - -(define-public ruby-yard - (package - (name "ruby-yard") - (version "0.9.34") - (source - (origin - (method git-fetch) - ;; Tests do not pass if we build from the distributed gem. - (uri (git-reference - (url "https://github.com/lsegal/yard") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "10jq0hyzyy0d6l63jxld32g36fhrclkb3rwnyp47igcik73kbagb")))) - (build-system ruby-build-system) - (arguments - (list - #:test-target "default" - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'do-not-set-date-in-gemspec - ;; Fix a reproducibility issue (see: - ;; https://github.com/lsegal/yard/issues/1343). - (lambda _ - (substitute* "yard.gemspec" - ((".*s\\.date.*") "")))) - (add-before 'check 'prepare-for-tests - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (substitute* "Rakefile" - ((".*[Ss]amus.*") "")) - ;; Delete the Gemfile to avoid errors relating to it. - (delete-file "Gemfile") - ;; $HOME needs to be set to somewhere writeable for tests to - ;; run. - (setenv "HOME" "/tmp") - ;; This test fails - ;; #<File (class)> received :open with unexpected arguments - ;; expected: ("gem1.gem", "rb") - ;; got: ("/gnu/store/.../lib/ruby/vendor_ruby/specifications/asciidoctor-2.0.18.gemspec", "r:UTF-8:-") - (substitute* "spec/cli/diff_spec.rb" - (("it \"searches for .gem file") - "xit \"searches for .gem file")))))))) - (native-inputs - (list ruby-rspec - ruby-rack - ruby-redcloth - ruby-webrick - ruby-asciidoctor/minimal)) - (synopsis "Documentation generation tool for Ruby") - (description "YARD is a documentation generation tool for the Ruby -programming language. It enables the user to generate consistent, usable -documentation that can be exported to a number of formats very easily, and -also supports extending for custom Ruby constructs such as custom class level -definitions.") - (home-page "https://yardoc.org") - (license license:expat))) - -(define-public ruby-yard/minimal - (hidden-package - (package - (inherit ruby-yard) - (arguments - (ensure-keyword-arguments - (package-arguments ruby-yard) - (list #:tests? #f))) - (native-inputs '())))) - -(define-public ruby-spectroscope - (package - (name "ruby-spectroscope") - (version "0.1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "spectroscope" version)) - (sha256 - (base32 - "0iiid9sm110qhx0i1zkds710cvsnmhd308wbqa7slkzbq2akrb3y")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda _ - (with-output-to-file ".test" - (lambda _ - (display - "\ -require 'ae/should' -require 'rspec' - -include RSpec - -Test.run :default do |run| - run.files << 'spec/*_spec.rb' -end"))) - (invoke "ruby" "-Ilib" "-rrubytest" ".test")))))) - (native-inputs - (list ruby-ae ruby-rspec)) - (propagated-inputs - (list ruby-rubytest)) - (synopsis "Behavior-Driven Development (BDD) framework built on RubyTest") - (description "Spectroscope is a Behavior-Driven Development (BDD) -framework built on RubyTest, designed to emulate RSpec in most respects. It -is assertion framework independent so any number of assertion systems can be -used, such as Assay or AE.") - (home-page "http://rubyworks.github.com/spectroscope/") - (license license:bsd-2))) - -(define-public ruby-tomparse - (package - (name "ruby-tomparse") - (version "0.4.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "tomparse" version)) - (sha256 - (base32 - "06xakk41f1kgj6j1ahkwn4r6cvidixvm4phhlrvmwb7c3pr8ygc8")))) - (build-system ruby-build-system) - ;; TODO: Tests require citron and rulebow, not yet packaged. - (arguments '(#:tests? #f)) - (synopsis "TomDoc parser for Ruby") - (description "TomParse is a TomDoc parser for Ruby. It takes a code -comment as input and parses it into a convenient object-oriented structure in -accordance with the TomDoc standard. See -@url{https://github.com/mojombo/tomdoc, TomDoc} for more information about the -TomDoc format.") - (home-page "http://rubyworks.github.com/tomparse/") - (license license:bsd-2))) - -(define-public ruby-yard-tomdoc - (package - (name "ruby-yard-tomdoc") - (version "0.7.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "yard-tomdoc" version)) - (sha256 - (base32 - "1725gs8b8klpwhrvnf2wwp7dw3zxs9vz2la983l2d8c4r4fn1j2z")))) - (build-system ruby-build-system) - (arguments - `(#:phases (modify-phases %standard-phases - (replace 'check - (lambda _ - (invoke "rubytest" "-Ilib" "-Itest" "test/")))))) - (native-inputs - (list ruby-rubytest-cli ruby-spectroscope ruby-ae)) - (propagated-inputs - (list ruby-tomparse ruby-yard)) - (synopsis "TomDoc syntax for YARD") - (description "This module adds support for the TomDoc documentation format -to YARD, a documentation generation tool for Ruby.") - (home-page "http://rubyworks.github.com/yard-tomdoc/") - (license license:expat))) - -(define-public ruby-clap - (package - (name "ruby-clap") - (version "1.0.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "clap" version)) - (sha256 - (base32 - "190m05k3pca72c1h8k0fnvby15m303zi0lpb9c478ad19wqawa5q")))) - (build-system ruby-build-system) - ;; Clap needs cutest for running tests, but cutest needs clap. - (arguments `(#:tests? #f)) - (synopsis "Command line argument parsing for simple applications") - (description - "Clap provides command line argument parsing features. It covers the -simple case of executing code based on the flags or parameters passed.") - (home-page "https://github.com/djanowski/cutest") - (license license:expat))) - -(define-public ruby-cutest - (package - (name "ruby-cutest") - (version "1.2.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "cutest" version)) - (sha256 - (base32 - "1mldhjn62g53vx4gq2qdqg2lgjvyrqxa8d0khf8347bbfgi16d32")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-clap)) - (synopsis "Run tests in separate processes") - (description - "Cutest runs tests in separate processes to avoid shared state.") - (home-page "https://github.com/djanowski/cutest") - (license license:expat))) - -(define-public ruby-pygmentize - (package - (name "ruby-pygmentize") - (version "0.0.3") - (source (origin - (method url-fetch) - (uri (rubygems-uri "pygmentize" version)) - (sha256 - (base32 - "1pxryhkiwvsz6xzda3bvqwz5z8ggzl1cdglf8qbcf4bb7akirdpb")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'fix-pygmentize-path - (lambda _ - (substitute* "lib/pygmentize.rb" - (("\"/usr/bin/env python.*") - (string-append "\"" (which "pygmentize") "\"\n"))))) - (add-after 'build 'do-not-use-vendor-directory - (lambda _ - ;; Remove bundled pygments sources - ;; FIXME: ruby-build-system does not support snippets. - (delete-file-recursively "vendor") - (substitute* "pygmentize.gemspec" - (("\"vendor/\\*\\*/\\*\",") ""))))))) - (inputs - `(("pygments" ,python-pygments))) - (native-inputs - (list ruby-cutest ruby-nokogiri)) - (synopsis "Thin Ruby wrapper around pygmentize") - (description - "Pygmentize provides a simple way to call pygmentize from within a Ruby -application.") - (home-page "https://github.com/djanowski/pygmentize") - (license license:expat))) - -(define-public ruby-event-emitter - (package - (name "ruby-event-emitter") - (version "0.2.6") - (source (origin - (method url-fetch) - (uri (rubygems-uri "event_emitter" version)) - (sha256 - (base32 - "148k9qv8102l3m6klc24dwip79f9y4bjr5z19dckd7ffbjyrf9n7")))) - (build-system ruby-build-system) - (arguments - (list #:phases #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'relax-requirements - (lambda _ - (substitute* "event_emitter.gemspec" - (("~> 1.15") ">= 1.15"))))))) - (synopsis "Ruby port of EventEmitter from Node.js") - (description - "This package provides a Ruby port of EventEmitter from Node.js.") - (home-page "https://shokai.github.io/event_emitter/") - (license license:expat))) - -(define-public ruby-eventmachine - (package - (name "ruby-eventmachine") - (version "1.2.7") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "eventmachine" version)) - (sha256 - (base32 - "0wh9aqb0skz80fhfn66lbpr4f86ya2z5rx6gm5xlfhd05bj1ch4r")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; test suite tries to connect to google.com - (inputs - (list openssl)) - (native-inputs - (list ruby-rake-compiler)) - (synopsis "Single-threaded network event framework for Ruby") - (description - "EventMachine implements a single-threaded engine for arbitrary network -communications. EventMachine wraps all interactions with sockets, allowing -programs to concentrate on the implementation of network protocols. It can be -used to create both network servers and clients.") - ;; The ‘official’ rubyeventmachine.com domain is now registrar-squatted. - (home-page "https://github.com/eventmachine/eventmachine") - (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT - -(define-public ruby-ruby-engine - (package - (name "ruby-ruby-engine") - (version "2.0.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "ruby_engine" version)) - (sha256 - (base32 - "0wqdcv8gxybp1y7kjhh18g3r9dczacs62d4ahcvyhz32bih8c9fm")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'extract-gemspec 'clean-up - (lambda _ - (delete-file "Gemfile.lock") - (substitute* "ruby_engine.gemspec" - ;; Remove unnecessary imports that would entail further - ;; dependencies. - ((".*<rdoc.*") "") - ((".*<rubygems-tasks.*") "") - ;; Remove extraneous .gem file - (("\"pkg/ruby_engine-[0-9.]+\\.gem\".freeze, ") "") - (("\"Gemfile.lock\".freeze, ") "") - ;; Soften rake dependency - (("%q<rake>.freeze, \\[\"~> 10.0\"\\]") - "%q<rake>.freeze, [\">= 10.0\"]") - ;; Soften the rspec dependency - (("%q<rspec>.freeze, \\[\"~> 2.4\"\\]") - "%q<rspec>.freeze, [\">= 2.4\"]")) - (substitute* "Rakefile" - (("require 'rubygems/tasks'") "") - (("Gem::Tasks.new") "")) - ;; Remove extraneous .gem file that otherwise gets installed. - (delete-file-recursively "pkg")))))) - (native-inputs - (list bundler ruby-rake ruby-rspec)) - (synopsis "Simplifies checking for Ruby implementation") - (description - "@code{ruby_engine} provides an RubyEngine class that can be used to -check which implementation of Ruby is in use. It can provide the interpreter -name and provides query methods such as @code{RubyEngine.mri?}.") - (home-page "https://github.com/janlelis/ruby_engine") - (license license:expat))) - -(define-public ruby-mimemagic - (package - (name "ruby-mimemagic") - (version "0.3.3") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "mimemagic" version)) - (sha256 - (base32 "04cp5sfbh1qx82yqxn0q75c7hlcx8y1dr5g3kyzwm4mx6wi2gifw")))) - (build-system ruby-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - ;; This phase breaks the tests, as it patches some of the test data. - (delete 'patch-source-shebangs)))) - (native-inputs - (list ruby-bacon)) - (synopsis "Ruby library for MIME detection by extension or content") - (description - "@acronym{MIME, Multipurpose Internet Mail Extensions} detection by -extension or content, using the freedesktop.org.xml shared-mime-info -database.") - (home-page "https://github.com/minad/mimemagic") - (license license:expat))) - -(define-public ruby-mime-types-data - (package - (name "ruby-mime-types-data") - (version "3.2016.0521") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "mime-types-data" version)) - (sha256 - (base32 - "04my3746hwa4yvbx1ranhfaqkgf6vavi1kyijjnw8w3dy37vqhkm")))) - (build-system ruby-build-system) - (native-inputs - (list ruby-hoe)) - (synopsis "Registry for information about MIME media type definitions") - (description - "@code{mime-types-data} provides a registry for information about -Multipurpose Internet Mail Extensions (MIME) media type definitions. It can -be used with the Ruby mime-types library or other software to determine -defined filename extensions for MIME types, or to use filename extensions to -look up the likely MIME type definitions.") - (home-page "https://github.com/mime-types/mime-types-data/") - (license license:expat))) - -(define-public ruby-mime-types - (package - (name "ruby-mime-types") - (version "3.4.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "mime-types" version)) - (sha256 - (base32 - "0ipw892jbksbxxcrlx9g5ljq60qx47pm24ywgfbyjskbcl78pkvb")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-mime-types-data)) - (native-inputs - (list ruby-hoe - ruby-fivemat - ruby-minitest-focus - ruby-minitest-bonus-assertions - ruby-minitest-hooks)) - (synopsis "Library and registry for MIME content type definitions") - (description "The mime-types library provides a library and registry for -information about Multipurpose Internet Mail Extensions (MIME) content type -definitions. It can be used to determine defined filename extensions for MIME -types, or to use filename extensions to look up the likely MIME type -definitions.") - (home-page "https://github.com/mime-types/ruby-mime-types") - (license license:expat))) - -(define-public ruby-mini-mime - (package - (name "ruby-mini-mime") - (version "1.1.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "mini_mime" version)) - (sha256 - (base32 - "0lbim375gw2dk6383qirz13hgdmxlan0vc5da2l072j3qw6fqjm5")))) - (build-system ruby-build-system) - (synopsis "Lightweight mime type lookup toy") - (description "This package provides a lightweight mime type lookup toy.") - (home-page "https://github.com/discourse/mini_mime") - (license license:expat))) - -(define-public ruby-fileutils - (package - (name "ruby-fileutils") - (version "1.7.0") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/ruby/fileutils") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0m68gaqclnc2wflilmrnr19kky2gr6fjf6k3yq02sf9scs281kid")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-before 'check 'disable-problematic-tests - (lambda _ - (substitute* "test/fileutils/test_fileutils.rb" - ;; The 'test_chown' tests depends on /etc/groups, which - ;; doesn't exist in the build environment. - (("def test_chown.*" all) - (string-append all " return true\n")) - ;; The 'test_cp_r_dev' expects a RuntimeError to be raised - ;; when copying a char device to a directory, but this is not - ;; triggered in the build environment, for reasons unknown. - (("def test_cp_r_dev.*" all) - (string-append all " return true\n")))))))) - (synopsis "Ruby utility library to manipulate files") - (description "The FileUtils Ruby library includes Several file utility -methods for copying, moving, removing, etc.") - (home-page "https://github.com/ruby/fileutils") - (license license:bsd-2))) - -(define-public ruby-fivemat - (package - (name "ruby-fivemat") - (version "1.3.7") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "fivemat" version)) - (sha256 - (base32 - "0pzlycasvwmg4bbx7plllpqnhd9zlmmff8l2w3yii86nrm2nvf9n")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f)) ; no tests - (synopsis "Each test file given its own line of dots") - (description - "Fivemat is a MiniTest/RSpec/Cucumber formatter that gives each test file -its own line of dots during testing. It aims to provide test output that is -neither too verbose nor too minimal.") - (home-page "https://github.com/tpope/fivemat") - (license license:expat))) - -(define-public ruby-sqlite3 - (package - (name "ruby-sqlite3") - (version "2.5.0") - (source - (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/sparklemotion/sqlite3-ruby") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1fanv7bv5lszd5g752yy8nmpjhrl9gqwbbkbis2xbh83y96f2zfm")))) - (build-system ruby-build-system) - (arguments - (list - #:gem-flags #~(list "--" "--enable-system-libraries") - #:modules '((guix build ruby-build-system) - (guix build utils) - (ice-9 rdelim) - (ice-9 textual-ports)) - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'relax-requirements - (lambda _ - ;; Don't try to format C code, remove rubocop-rake. - (delete-file "rakelib/format.rake") - ;; Don't try to run valgrind-like memory tests. - ;; This cuts all lines after Minitest::TestTask.create - (with-atomic-file-replacement - "rakelib/test.rake" - (lambda (in out) - (let loop () - (let ((line (read-line in))) - (cond - ((eof-object? line) #f) - ((string-prefix? "Minitest::TestTask.create" line) #f) - (else - (format out "~a~%" line) - (loop))))))))) - (delete 'check) - (add-after 'install 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (setenv "GEM_PATH" - (string-append (getenv "GEM_PATH") ":" - #$output "/lib/ruby/vendor_ruby")) - (invoke "rake" "test"))))))) - (propagated-inputs - (list ruby-mini-portile-2)) - (inputs - (list sqlite)) - (native-inputs - (list ruby-hoe - ruby-rake-compiler - ruby-rake-compiler-dock)) - (synopsis "Interface with SQLite3 databases") - (description - "This module allows Ruby programs to interface with the SQLite3 database -engine.") - (home-page - "https://github.com/sparklemotion/sqlite3-ruby") - (license license:bsd-3))) - -(define-public ruby-sqlite3-1.4 - (package/inherit ruby-sqlite3 - (name "ruby-sqlite3") - (version "1.4.4") - (source - (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/sparklemotion/sqlite3-ruby") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0ngirjbai3f5ki2sf6m4gxbbrjpr3b35bz5nrz1cifyw1jk6a6sr")))) - (arguments - (substitute-keyword-arguments (package-arguments ruby-sqlite3) - ((#:tests? #t #t) #f) - ((#:phases phases #~%standard-phases) - #~(modify-phases #$phases - (delete 'relax-requirements) - (add-after 'unpack 'fix-version - (lambda _ - (substitute* "sqlite3.gemspec" - (("s\\.version = .*") - (format #f "s.version = ~s~%" #$version))))))))))) - -(define-public ruby-shoulda-context - (package - (name "ruby-shoulda-context") - (version "2.0.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "shoulda-context" version)) - (sha256 - (base32 - "0d1clcp92jv8756h09kbc55qiqncn666alx0s83za06q5hs4bpvs")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - ;; Do not run tests to avoid circular dependence with rails. - ;; Instead just import the library to test. - (invoke "ruby" "-Ilib" "-r" "shoulda-context"))))))) - (synopsis "Test::Unit context framework extracted from Shoulda") - (description - "@code{shoulda-context} is the context framework extracted from Shoulda. -Instead of writing Ruby methods with lots_of_underscores, shoulda-context adds -context, setup, and should blocks combine to produce natural test method -names.") - (home-page "https://github.com/thoughtbot/shoulda-context") - (license license:expat))) - -(define-public ruby-shoulda-matchers - (package - (name "ruby-shoulda-matchers") - (version "5.3.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "shoulda-matchers" version)) - (sha256 - (base32 - "11igjgh16dl5pwqizdmclzlzpv7mbmnh8fx7m9b5kfsjhwxqdfpn")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - ;; Do not run tests to avoid circular dependence with rails. Instead - ;; just import the library to test. - (invoke "ruby" "-Ilib" "-r" "shoulda-matchers"))))))) - (propagated-inputs - (list ruby-activesupport)) - (synopsis "Collection of testing matchers extracted from Shoulda") - (description - "Shoulda Matchers provides RSpec- and Minitest-compatible one-liners that -test common Rails functionality. These tests would otherwise be much longer, -more complex, and error-prone.") - (home-page "https://github.com/thoughtbot/shoulda-matchers") - (license license:expat))) - -(define-public ruby-shoulda - (package - (name "ruby-shoulda") - (version "4.0.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "shoulda" version)) - (sha256 - (base32 - "02lww34kn1g6lidp4rx4rs6bqvirrzxlfw1y2wm11aif8f622xz6")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - ;; Don't run tests to avoid circular dependence with rails. - ;; Instead just import the library to test. - (invoke "ruby" "-Ilib" "-r" "shoulda")))) - (add-after 'extract-gemspec 'relax-requirements - (lambda _ - (substitute* "shoulda.gemspec" - ;; An older version of shoulda-matchers (4.0) is used, out of - ;; little maintenance rather than because of an real - ;; incompatibility (see: - ;; https://github.com/thoughtbot/shoulda/issues/275). - ((", \\[\"~> 4.0\"]") ""))))))) - (propagated-inputs - (list ruby-shoulda-context ruby-shoulda-matchers)) - (synopsis "Context framework and matchers for testing") - (description - "@code{shoulda} is a meta-package combining @code{shoulda-context} and -@code{shoulda-matchers} providing tools for writing tests.") - (home-page "https://github.com/thoughtbot/shoulda") - (license license:expat))) - -(define-public ruby-unf - (package - (name "ruby-unf") - (version "0.1.4") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "unf" version)) - (sha256 - (base32 - "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-before 'check 'add-dependency-to-bundler - (lambda _ - ;; test-unit is required but not provided by the bundler - ;; environment. This is fixed in the upstream repository but fix - ;; has not been released. - (substitute* "Gemfile" - (("^gemspec") "gem 'test-unit'\ngemspec"))))))) - (propagated-inputs - (list ruby-unf-ext)) - (native-inputs - (list ruby-shoulda bundler ruby-test-unit)) - (synopsis "Unicode Normalization Form support to Ruby and JRuby") - (description - "@code{ruby-unf} is a wrapper library to bring Unicode Normalization Form -support to both Ruby and JRuby. It uses @code{unf_ext} on CRuby and -@code{java.text.Normalizer} on JRuby.") - (home-page "https://github.com/knu/ruby-unf") - (license license:bsd-2))) - -(define-public ruby-warden - (package - (name "ruby-warden") - (version "1.2.8") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "warden" version)) - (sha256 - (base32 - "1fr9n9i9r82xb6i61fdw4xgc7zjv7fsdrr4k0njchy87iw9fl454")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; No included tests - (propagated-inputs - (list ruby-rack)) - (synopsis "Rack middleware providing authentication") - (description - "Warden is a Rack-based middleware that provides a mechanism for -authentication in Ruby web applications.") - (home-page "https://github.com/wardencommunity/warden") - (license license:expat))) - -(define-public ruby-warden-oauth2 - (package - (name "ruby-warden-oauth2") - (version "0.0.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "warden-oauth2" version)) - (sha256 - (base32 - "1z9154lvzrnnfjbjkmirh4n811nygp6pm2fa6ikr7y1ysa4zv3cz")))) - (build-system ruby-build-system) - (arguments - '(#:test-target "spec" - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'remove-unnecessary-dependencies - (lambda _ - (substitute* "Gemfile" - ;; All of these gems relate to development, and are unnecessary - ;; when running the tests - (("gem 'guard-bundler'") "") - (("gem 'guard'") "") - (("gem 'guard-rspec'") "") - (("gem 'rb-fsevent'") "") - (("gem 'pry'") "") - (("gem 'growl'") "")))) - ;; The test suite doesn't work with rspec@2, and this is incompatible - ;; with the current version of Rake, so invoke Rspec directly - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "bundle" "exec" "rspec"))))))) - (propagated-inputs - (list ruby-warden)) - (native-inputs - (list bundler ruby-rspec-2 ruby-rack-test)) - (synopsis "OAuth 2.0 strategies for Warden") - (description - "This library extends Warden to support OAuth 2.0 authorized API -requests.") - (home-page "https://github.com/opperator/warden-oauth2") - (license license:expat))) - -(define-public ruby-webmock - (package - (name "ruby-webmock") - (version "3.11.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "webmock" version)) - (sha256 - (base32 - "1hdlbvfw316lkz251qnfk79drmaay7l51kidvicz41nhvw12xz8v")))) - (build-system ruby-build-system) - (native-inputs - (list bundler ruby-rspec)) - (propagated-inputs - (list ruby-addressable ruby-crack ruby-hashdiff)) - (synopsis "Allows stubbing and setting expectations on HTTP requests") - (description - "WebMock allows stubbing HTTP requests and setting expectations on HTTP -requests. This is useful when testing software.") - (home-page "https://github.com/bblimke/webmock") - (license license:expat))) - -(define-public ruby-webmock-2 - (package - (inherit ruby-webmock) - (name "ruby-webmock") - (version "2.3.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "webmock" version)) - (sha256 - (base32 - "04hkcqsmbfnp8g237pisnc834vpgildklicbjbyikqg0bg1rwcy5")))))) - -(define-public ruby-unicode-display-width - (package - (name "ruby-unicode-display-width") - (version "2.4.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "unicode-display_width" version)) - (sha256 - (base32 - "1gi82k102q7bkmfi7ggn9ciypn897ylln1jk9q67kjhr39fj043a")))) - (build-system ruby-build-system) - (arguments - '(;; Test data not included. - #:tests? #f)) - (synopsis "Determine the monospace display width of Ruby strings") - (description - "@code{Unicode::DisplayWidth} is a Ruby library which can determine the -display width of strings in Ruby.") - (home-page "https://github.com/janlelis/unicode-display_width") - (license license:expat))) - -;; There is another gem called 'ruby-version' so we use an underscore in this -;; name -(define-public ruby_version - (package - (name "ruby_version") - (version "1.0.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "ruby_version" version)) - (sha256 - (base32 - "0lvc7bd5ps3w2vq2wb02i0pi3vfcx2rnckx2ix4rjym1qf52kb2j")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-before 'check 'fix-dependencies - (lambda _ - ;; Remove the Gemfile.lock, as we want to use Guix packages at - ;; whatever versions. - (delete-file "Gemfile.lock") - ;; Remove the included gem files as they unnecessary. - (delete-file-recursively "pkg/") - ;; Accept any version of rake, rdoc and rspec - (substitute* "ruby_version.gemspec" - (("%q<rake.*") "%q<rake>)\n") - (("%q<rdoc.*") "%q<rdoc>)\n") - (("%q<rspec.*") "%q<rspec>)\n")) - ;; Do not use bundler. - (substitute* "Rakefile" - (("Bundler\\.setup.*") "nil\n"))))))) - (native-inputs - (list ruby-rdoc ruby-rspec ruby-rubygems-tasks)) - (synopsis "Ruby library to help check the Ruby version") - (description "@code{ruby_version} provides a @code{RubyVersion} module to simplify -checking for the right Ruby version in software.") - (home-page "https://github.com/janlelis/ruby_version") - (license license:expat))) - -(define-public ruby-websocket-client-simple - (package - (name "ruby-websocket-client-simple") - (version "0.6.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "websocket-client-simple" version)) - (sha256 - (base32 - "1ypl4xvlh5c99zbn20sifv7gv04zi20ly464vsgikfrpn5f37bid")))) - (build-system ruby-build-system) - (arguments (list #:test-target "default")) - (native-inputs (list ruby-eventmachine ruby-websocket-eventmachine-server)) - (propagated-inputs (list ruby-event-emitter ruby-websocket)) - (synopsis "Simple WebSocket client for Ruby") - (description "This package provides a simple WebSocket client for Ruby.") - (home-page "https://github.com/ruby-jp/websocket-client-simple") - (license license:expat))) - -(define-public ruby-websocket-eventmachine-base - (package - (name "ruby-websocket-eventmachine-base") - (version "1.2.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "websocket-eventmachine-base" version)) - (sha256 - (base32 - "0wiz61mcwgs3k21cdr5l9b4jpg29gl6mflfampww2v525yc3hr1r")))) - (build-system ruby-build-system) - (arguments - (list #:tests? #f)) ;no test suite - (propagated-inputs (list ruby-eventmachine ruby-websocket - ruby-websocket-native)) - (synopsis "WebSocket base for Ruby client and server") - (description "This package provides a WebSocket base for a Ruby client and -server.") - (home-page "https://github.com/imanel/websocket-eventmachine-base") - (license license:expat))) - -(define-public ruby-websocket-eventmachine-server - (package - (name "ruby-websocket-eventmachine-server") - (version "1.0.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "websocket-eventmachine-server" version)) - (sha256 - (base32 - "0iqpzc8s028nck1flqaj784gvyn64wy1h3svpa4y2847wklg8sms")))) - (build-system ruby-build-system) - ;; TODO: The test suite requires Autobahn, not yet packaged in Guix. - (arguments (list #:tests? #f)) - (propagated-inputs (list ruby-websocket-eventmachine-base)) - (synopsis "WebSocket server for Ruby") - (description "This package provides a WebSocket server for Ruby.") - (home-page "https://github.com/imanel/websocket-eventmachine-server") - (license license:expat))) - -(define-public ruby-websocket-native - (package - (name "ruby-websocket-native") - (version "1.0.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "websocket-native" version)) - (sha256 - (base32 - "1kgvd3gyzh7hk0ddzn85jrs4csxm54qnvla95ldyn6rzgfbjchdn")))) - (build-system ruby-build-system) - (arguments - (list #:test-target "spec" - #:phases #~(modify-phases %standard-phases - (add-before 'check 'disable-problematic-tests - (lambda _ - (substitute* "spec/websocket_spec.rb" - (("it \"should have mask_native defined\"" all) - (string-append "x" all))))) - (add-after 'build 'compile - (lambda _ - (invoke "rake" "compile")))))) - (native-inputs (list ruby-rake-compiler ruby-rspec)) - (synopsis "Native Ruby extension for the WebSocket gem") - (description "This package provides a native extension that can increase -performance by about 25% compared to the pure Ruby WebSocket implementation.") - (home-page "https://github.com/imanel/websocket-ruby-native") - (license license:expat))) - -(define-public ruby-websocket-driver - (package - (name "ruby-websocket-driver") - (version "0.7.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "websocket-driver" version)) - (sha256 - (base32 "1bxamwqldmy98hxs5pqby3andws14hl36ch78g0s81gaz9b91nj2")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; no included tests - (propagated-inputs - (list ruby-websocket-extensions)) - (synopsis "WebSocket protocol handler with pluggable I/O") - (description - "@code{websocket-driver} provides a complete implementation of the -WebSocket protocols that can be hooked up to any TCP library") - (home-page "https://github.com/faye/websocket-driver-ruby") - (license license:expat))) - -(define-public ruby-websocket-extensions - (package - (name "ruby-websocket-extensions") - (version "0.1.3") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "websocket-extensions" version)) - (sha256 - (base32 - "034sdr7fd34yag5l6y156rkbhiqgmy395m231dwhlpcswhs6d270")))) - (build-system ruby-build-system) - (arguments - '(;; No included tests - #:tests? #f)) - (synopsis "Generic extension manager for WebSocket connections") - (description - "@code{websocket-extensions} provides a container for registering -extension plugins.") - (home-page "https://github.com/faye/websocket-extensions-ruby") - (license license:expat))) - -(define-public ruby-domain-name - (package - (name "ruby-domain-name") - (version "0.5.20190701") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "domain_name" version)) - (sha256 - (base32 "0lcqjsmixjp52bnlgzh4lg9ppsk52x9hpwdjd53k8jnbah2602h0")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-before 'check 'fix-versions - (lambda _ - ;; Fix NameError that appears to already be fixed upstream. - (substitute* "Rakefile" - (("DomainName::VERSION") - "Bundler::GemHelper.gemspec.version")) - ;; Loosen unnecessarily strict test-unit version specification. - (substitute* "domain_name.gemspec" - (("<test-unit>.freeze, \\[\\\"~> 2.5.5") "<test-unit>, [\">0")) - #t))))) - (propagated-inputs - (list ruby-unf)) - (native-inputs - (list ruby-shoulda bundler ruby-test-unit)) - (synopsis "Domain name manipulation library") - (description - "@code{domain_name} is a Domain name manipulation library. It parses a -domain name ready for extracting the registered domain and TLD (Top Level -Domain). It can also be used for cookie domain validation based on the Public -Suffix List.") - (home-page "https://github.com/knu/ruby-domain_name") - (license license:bsd-2))) - -(define-public ruby-dotenv - (package - (name "ruby-dotenv") - (version "3.1.7") - (source (origin - (method git-fetch) ;for the tests - (uri (git-reference - (url "https://github.com/bkeepers/dotenv") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "19j0acy12si537hwi4q54q8n5ycmlvfd2ik5y6r7jir6ww06l8yx")))) - (build-system ruby-build-system) - (arguments - (list - #:test-target "spec" - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'do-not-build-dotenv-rails - (lambda _ - ;; The repository includes the definitions of two packages, - ;; 'dotenv' and 'dotenv-rails'. Since we want to package them - ;; separately, remove the dotenv-rails and associated Rake - ;; tasks. - (delete-file "dotenv-rails.gemspec") - (delete-file "spec/dotenv/rails_spec.rb") - (delete-file "spec/dotenv/log_subscriber_spec.rb") - (substitute* "spec/spec_helper.rb" - (("require \"dotenv\"" all) - (string-append "require \"pathname\"\n" all))) - (substitute* "Rakefile" - (("DotenvRailsGemHelper.install_tasks name: \"dotenv-rails\"") - "") - ((", \"dotenv-rails:.*\"") - "")))) - (replace 'replace-git-ls-files - (lambda _ - (substitute* "dotenv.gemspec" - (("`git ls-files (README.md LICENSE lib bin) \\| ([^`]*`)" - all files command) - (string-append - "`find " files " -type f | sort | " command)))))))) - (native-inputs (list ruby-standard ruby-rspec)) - (synopsis "Ruby library for setting environment variables") - (description "Dotenv is a Ruby library for setting environment variables -defined in a @file{.env} file.") - (home-page "https://github.com/bkeepers/dotenv") - (license license:expat))) - -(define-public ruby-dotenv-rails - (package - (inherit ruby-dotenv) - (name "ruby-dotenv-rails") - (arguments - (substitute-keyword-arguments (package-arguments ruby-dotenv) - ((#:phases phases '%standard-phases) - #~(modify-phases #$phases - (delete 'do-not-build-dotenv-rails) - (add-after 'unpack 'delete-Gemfile - (lambda _ - ;; It defines extraneous dependencies; remove it. - (delete-file "Gemfile"))) - (add-after 'unpack 'remove-extraneous-gemspec - (lambda _ - (delete-file "dotenv.gemspec") - (substitute* "Gemfile" - ((".*\"dotenv\".*") "")) - (substitute* "Rakefile" - ;; Remove the dotenv-related Rake tasks. - (("Bundler::GemHelper.install_tasks name: \"dotenv\"") - "") - (("\"dotenv:[^\"]*\", ") - "")))) - (replace 'replace-git-ls-files - (lambda _ - (substitute* "dotenv-rails.gemspec" - (("`git ls-files lib \\| grep rails`") - "`find lib -type f | sort | grep rails`")))))))) - (native-inputs (list ruby-rspec ruby-spring ruby-standard)) - (propagated-inputs (list ruby-dotenv ruby-railties)) - (synopsis "Ruby library for setting environment variables in Rails project") - (description "Dotenv is a Ruby library for setting environment variables -defined in a @file{.env} file. This is the Rails variant, adapted for use -with Ruby on Rails projects."))) - -(define-public ruby-http-accept - (package - (name "ruby-http-accept") - (version "2.2.0") - (source (origin - (method git-fetch) ;for the tests - (uri (git-reference - (url "https://github.com/socketry/http-accept") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1d69cy12hqbcqrhw4dibvdq5pqklxsa59kih6pzl479nxq79rgs7")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'remove-missing-key-directive - ;; This seem to be a common problem in Ruby projects (see: - ;; https://github.com/prawnpdf/ttfunk/issues/99). - (lambda _ - (substitute* "http-accept.gemspec" - ((".*spec.signing_key.*") "")))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (native-inputs - (list ruby-rspec - ruby-covered)) - (synopsis "Parse Accept and Accept-Language HTTP headers") - (description - "This package provides a set of parsers for Accept and Accept-Language -HTTP headers.") - (home-page "https://github.com/socketry/http-accept") - (license license:expat))) - -(define-public ruby-http-accept-1 - (package - (inherit ruby-http-accept) - (version "1.7.0") - (source (origin - (method git-fetch) ;for the tests - (uri (git-reference - (url "https://github.com/ioquatix/http-accept") - (commit (string-append "v" version)))) - (file-name (git-file-name "ruby-http-accept" version)) - (sha256 - (base32 - "1hnqmqpa135s3xgcvv30qzqm8zp88my1aj05m72d2q9cvc31g92z")))))) - -(define-public ruby-http-cookie - (package - (name "ruby-http-cookie") - (version "1.0.5") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "http-cookie" version)) - (sha256 - (base32 - "13rilvlv8kwbzqfb644qp6hrbsj82cbqmnzcvqip1p6vqx36sxbk")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-before 'check 'add-dependency-to-bundler - (lambda _ - ;; Fix NameError - (substitute* "Rakefile" - (("HTTP::Cookie::VERSION") - "Bundler::GemHelper.gemspec.version"))))))) - (propagated-inputs - (list ruby-domain-name)) - (native-inputs - (list ruby-simplecov - bundler - ruby-sqlite3 - ruby-test-unit)) - (synopsis "Handle HTTP Cookies based on RFC 6265") - (description - "@code{HTTP::Cookie} is a Ruby library to handle HTTP Cookies based on -RFC 6265. It has been designed with security, standards compliance and -compatibility in mind, to behave just the same as today's major web browsers. -It has built-in support for the legacy @code{cookies.txt} and -@code{cookies.sqlite} formats of Mozilla Firefox.") - (home-page "https://github.com/sparklemotion/http-cookie") - (license license:expat))) - -(define-public ruby-httpclient - (package - (name "ruby-httpclient") - (version "2.8.3") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "httpclient" version)) - (sha256 - (base32 - "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99")))) - (build-system ruby-build-system) - (arguments - '(;; TODO: Some tests currently fail - ;; ------ - ;; 211 tests, 729 assertions, 13 failures, 4 errors, 0 pendings, - ;; 2 omissions, 0 notifications - ;; 91.866% passed - ;; ------ - ;; 6.49 tests/s, 22.41 assertions/s - #:tests? #f - #:phases - (modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (if tests? - (invoke "ruby" - "-Ilib" - "test/runner.rb"))))))) - (native-inputs - (list ruby-rack)) - (synopsis - "Make HTTP requests with support for HTTPS, Cookies, authentication and more") - (description - "The @code{httpclient} ruby library provides functionality related to -HTTP. Compared to the @code{net/http} library, @code{httpclient} also provides -Cookie, multithreading and authentication (digest, NTLM) support. - -Also provided is a @command{httpclient} command, which can perform HTTP -requests either using arguments or with an interactive prompt.") - (home-page "https://github.com/nahi/httpclient") - (license license:ruby))) - -(define-public ruby-ansi - (package - (name "ruby-ansi") - (version "1.5.0") - (source - (origin - (method git-fetch) - ;; Fetch from GitHub as the gem does not contain testing code. - (uri (git-reference - (url "https://github.com/rubyworks/ansi") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1wsz7xxwl3vkh277jb7fd7akqnqqgbvalxzpjwniiqk8ghfprbi5")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - ;; Disable testing to break the cycle ansi, ae, ansi, as well as the - ;; cycle ansi, qed, ansi. Instead simply test that the library can - ;; be require'd. - (replace 'check - (lambda _ - (invoke "ruby" "-Ilib" "-r" "ansi"))) - (add-before 'validate-runpath 'replace-broken-symlink - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (file (string-append - out "/lib/ruby/vendor_ruby/gems/ansi-" - ,version "/lib/ansi.yml"))) - ;; XXX: This symlink is broken since ruby 2.4. - ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html - (delete-file file) - (symlink "../.index" file))))))) - (synopsis "ANSI escape code related libraries") - (description - "This package is a collection of ANSI escape code related libraries -enabling ANSI colorization and stylization of console output. Included in the -library are the @code{Code} module, which defines ANSI codes as constants and -methods, a @code{Mixin} module for including color methods, a @code{Logger}, a -@code{ProgressBar}, and a @code{String} subclass. The library also includes a -@code{Terminal} module which provides information about the current output -device.") - (home-page "https://rubyworks.github.io/ansi/") - (license license:bsd-2))) - -(define-public ruby-systemu - (package - (name "ruby-systemu") - (version "2.6.5") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "systemu" version)) - (sha256 - (base32 - "0gmkbakhfci5wnmbfx5i54f25j9zsvbw858yg3jjhfs5n4ad1xq1")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-before 'check 'set-version - (lambda _ - (setenv "VERSION" ,version)))))) - (synopsis "Capture of stdout/stderr and handling of child processes") - (description - "Systemu can be used on any platform to return status, stdout, and stderr -of any command. Unlike other methods like @code{open3} and @code{popen4} -there is no danger of full pipes or threading issues hanging your process or -subprocess.") - (home-page "https://github.com/ahoward/systemu") - (license license:ruby))) - -(define-public ruby-bcrypt - (package - (name "ruby-bcrypt") - (version "3.1.20") - ;; FIXME: Unbundle the bcrypt library used. - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/bcrypt-ruby/bcrypt-ruby") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "0q6h8kmjb34hg6qjv31v374n3cavv00drsfyzv6nybdwipgyg62i")))) - (build-system ruby-build-system) - (arguments (list #:test-target "default")) ;compile + spec - (native-inputs (list ruby-rake-compiler ruby-rspec)) - (synopsis "Ruby bcrypt wrapper") - (description "This Ruby library provides a simple wrapper to bcrypt, a -secure hash algorithm for hashing passwords.") - (home-page "https://github.com/bcrypt-ruby/bcrypt-ruby") - (license license:expat))) - -(define-public ruby-bcrypt-pbkdf - (package - (name "ruby-bcrypt-pbkdf") - (version "1.1.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "bcrypt_pbkdf" version)) - (sha256 - (base32 - "0ndamfaivnkhc6hy0yqyk2gkwr6f3bz6216lh74hsiiyk3axz445")))) - (build-system ruby-build-system) - (arguments - (list #:phases #~(modify-phases %standard-phases - (add-before 'build 'compile - (lambda _ - (invoke "rake" "compile")))))) - (native-inputs (list ruby-minitest ruby-rake-compiler - ruby-rake-compiler-dock ruby-rdoc)) - (synopsis "Reading password encrypted Ed25519 keys in Ruby") - (description - "This gem implements @samp{bcrypt_pbkdf}, which is a variant of -PBKDF2 (Password-Based Key Derivation Function 2) with bcrypt-based -pseudorandom function. This is currently used by @samp{net-ssh} to -read password encrypted Ed25519 keys.") - (home-page "https://github.com/net-ssh/bcrypt_pbkdf-ruby") - (license license:expat))) - -(define-public ruby-bio-commandeer - (package - (name "ruby-bio-commandeer") - (version "0.4.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "bio-commandeer" version)) - (sha256 - (base32 - "0khpfw1yl5l3d2m8nxpkk32ybc4c3pa5hic3agd160jdfjjjnlni")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - ;; Run test without calling 'rake' so that jeweler is - ;; not required as an input. - (lambda _ - (invoke "rspec" "spec/bio-commandeer_spec.rb")))))) - (propagated-inputs - (list ruby-bio-logger ruby-systemu)) - (native-inputs - (list bundler ruby-rspec)) - (synopsis "Simplified running of shell commands from within Ruby") - (description - "Bio-commandeer provides an opinionated method of running shell commands -from within Ruby. The advantage of bio-commandeer over other methods of -running external commands is that when something goes wrong, messages printed -to the @code{STDOUT} and @code{STDERR} streams are reported, giving extra -detail to ease debugging.") - (home-page "https://github.com/wwood/bioruby-commandeer") - (license license:expat))) - -(define-public ruby-rubytest - (package - (name "ruby-rubytest") - (version "0.8.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "rubytest" version)) - (sha256 - (base32 - "19jydsdnkl81i9dhdcr4dc34j0ilm68ff2ngnka1hi38xiw4p5qz")))) - (build-system ruby-build-system) - (arguments - ;; Disable regular testing to break the cycle rubytest, qed, brass, - ;; rubytest, as well as the cycle rubytest, qed, ansi, rubytest. Instead - ;; simply test that the library can be require'd. - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda _ - (invoke "ruby" "-Ilib" "-r" "rubytest")))))) - (propagated-inputs - (list ruby-ansi)) - (synopsis "Universal test harness for Ruby") - (description - "Rubytest is a testing meta-framework for Ruby. It can handle any -compliant test framework and can run tests from multiple frameworks in a -single pass.") - (home-page "https://rubyworks.github.io/rubytest") - (license license:bsd-2))) - -(define-public ruby-brass - (package - (name "ruby-brass") - (version "1.2.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "brass" version)) - (sha256 - (base32 - "154lp8rp1vmg60ri1j4cb8hqlw37z7bn575h899v8hzxwi11sxka")))) - (build-system ruby-build-system) - (arguments - ;; Disable tests to break the cycle brass, lemon, ae, qed, brass. - ;; Instead simply test that the library can be require'd. - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "ruby" "-Ilib" "-r" "brass"))))))) - (synopsis "Basic foundational assertions framework") - (description - "BRASS (Bare-Metal Ruby Assertion System Standard) is a basic -foundational assertions framework for other assertion and test frameworks to -make use of.") - (home-page "https://rubyworks.github.io/brass") - (license license:bsd-2))) - -(define-public ruby-qed - (package - (name "ruby-qed") - (version "2.9.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "qed" version)) - (sha256 - (base32 - "03h4lmlxpcya8j7s2cnyscqlx8v3xl1xgsw5y1wk1scxcgz2vbmr")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "ruby" "-Ilib" "bin/qed"))))))) - (native-inputs - (list ruby-ae-bootstrap)) - (propagated-inputs - (list ruby-ansi ruby-brass)) - (synopsis "Test framework utilizing literate programming techniques") - (description - "@dfn{Quality Ensured Demonstrations} (QED) is a test framework for -@dfn{Test Driven Development} (TDD) and @dfn{Behaviour Driven -Development} (BDD) utilizing Literate Programming techniques. QED sits -somewhere between lower-level testing tools like @code{Test::Unit} and -requirement specifications systems like Cucumber.") - (home-page "https://rubyworks.github.io/qed") - (license license:bsd-2))) - -(define-public ruby-que - (package - (name "ruby-que") - (version "1.0.0.beta3") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "que" version)) - (sha256 - (base32 - "0gr9pb814d4qj3ds98g6cjrdk7wv0yg8aqbm7c1lmgl87jkg8q04")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; No included tests - (synopsis "Job queue using PostgreSQL written in Ruby") - (description - "This package provides a job queue that uses PostgreSQL for storing jobs -and locking between worker processes.") - (home-page "https://github.com/chanks/que") - (license license:expat))) - -(define-public ruby-queue-classic - (package - (name "ruby-queue-classic") - (version "4.0.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "queue_classic" version)) - (sha256 - (base32 - "0npyhajf2fc80apkw9s2kj0n254w5lcl4xpjidg5d5w1fb19abh6")))) - (build-system ruby-build-system) - (arguments (list #:tests? #f)) ;tests require a postgresql server - (native-inputs (list ruby-activerecord ruby-minitest-reporters)) - (propagated-inputs (list ruby-pg)) - (synopsis "Queuing library for Ruby") - (description "@code{queue_classic} is a queuing library for Ruby -applications (Rails, Sinatra, etc.) @code{queue_classic} features -asynchronous job polling, database maintained locks and has a single -dependency, @code{pg}.") - (home-page "https://github.com/QueueClassic/queue_classic") - (license license:expat))) - -(define-public ruby-pairing-heap - (package - (name "ruby-pairing-heap") - (version "3.1.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "pairing_heap" version)) - (sha256 - (base32 - "059kqpw53cancnp0bp7y1s74y1955riw33w3lqfbnms4b4mdh5zj")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'patch - (lambda _ - (substitute* "Rakefile" - (("require \"standard/rake\"") "") - ((":\"standard:fix\",") ""))))))) - (synopsis "Priority queue in pure Ruby") - (description "This package provides a performant priority queue in pure -ruby with support for changing priority using pairing heap data structure") - (home-page "https://github.com/mhib/pairing_heap") - (license license:expat))) - -(define-public ruby-ae - (package - (name "ruby-ae") - (version "1.8.2") - (source - (origin - (method git-fetch) - ;; Fetch from github so tests are included. - (uri (git-reference - (url "https://github.com/rubyworks/ae") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "11299jj5ma8mi7b4majkyjy70y6zlqpgl8aql1c5lvfjavlpwmlp")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "qed")))) - (add-before 'validate-runpath 'replace-broken-symlink - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (file (string-append - out "/lib/ruby/vendor_ruby/gems/ae-" - ,version "/lib/ae.yml"))) - ;; XXX: This symlink is broken since ruby 2.4. - ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html - (delete-file file) - (symlink "../.index" file))))))) - (propagated-inputs - (list ruby-ansi)) - (native-inputs - (list ruby-qed)) - (synopsis "Assertions library") - (description - "Assertive Expressive (AE) is an assertions library specifically designed -for reuse by other test frameworks.") - (home-page "https://rubyworks.github.io/ae/") - (license license:bsd-2))) - -(define-public ruby-ae-bootstrap - (hidden-package - (package/inherit ruby-ae - (arguments - (substitute-keyword-arguments - (package-arguments ruby-ae) - ((#:tests? _ #t) #f))) - (native-inputs '())))) - -(define-public ruby-lemon - (package - (name "ruby-lemon") - (version "0.9.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "lemon" version)) - (sha256 - (base32 - "0gqhpgjavgpvx23rqpfqcv3d5bs8gc7lr9yvj8kxgp7mfbdc2jcm")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check (lambda _ (invoke "qed")))))) - (propagated-inputs - (list ruby-ae ruby-ansi ruby-rubytest)) - (native-inputs - (list ruby-qed)) - (synopsis "Test framework correlating code structure and test unit") - (description - "Lemon is a unit testing framework that enforces highly formal -case-to-class and unit-to-method test construction. This enforcement can help -focus concern on individual units of behavior.") - (home-page "https://rubyworks.github.io/lemon") - (license license:bsd-2))) - -(define-public ruby-rubytest-cli - (package - (name "ruby-rubytest-cli") - (version "0.2.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "rubytest-cli" version)) - (sha256 - (base32 - "0n7hv4k1ba4fm3i98c6ydbsqhkxgbp52mhi70ba1x3mqzfvk438p")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f)) ; no tests - (propagated-inputs - (list ruby-ansi ruby-rubytest)) - (synopsis "Command-line interface for rubytest") - (description - "Rubytest CLI is a command-line interface for running tests for -Rubytest-based test frameworks. It provides the @code{rubytest} executable.") - (home-page "https://rubyworks.github.io/rubytest-cli") - (license license:bsd-2))) - -(define-public ruby-hashery - (package - (name "ruby-hashery") - (version "2.1.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "hashery" version)) - (sha256 - (base32 - "0qj8815bf7q6q7llm5rzdz279gzmpqmqqicxnzv066a020iwqffj")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda _ - (invoke "qed") - (invoke "rubytest" "-Ilib" "-Itest" "test/")))))) - (native-inputs - (list ruby-rubytest-cli ruby-qed ruby-lemon)) - (synopsis "Hash-like classes with extra features") - (description - "The Hashery is a tight collection of @code{Hash}-like classes. -Included are the auto-sorting @code{Dictionary} class, the efficient -@code{LRUHash}, the flexible @code{OpenHash} and the convenient -@code{KeyHash}. Nearly every class is a subclass of the @code{CRUDHash} which -defines a CRUD (Create, Read, Update and Delete) model on top of Ruby's -standard @code{Hash} making it possible to subclass and augment to fit any -specific use case.") - (home-page "https://rubyworks.github.io/hashery") - (license license:bsd-2))) - -(define-public ruby-rc4 - (package - (name "ruby-rc4") - (version "0.1.5") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "ruby-rc4" version)) - (sha256 - (base32 - "00vci475258mmbvsdqkmqadlwn6gj9m01sp7b5a3zd90knil1k00")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda _ - (invoke "rspec" "spec/rc4_spec.rb")))))) - (native-inputs - (list ruby-rspec-2)) - (synopsis "Implementation of the RC4 algorithm") - (description - "RubyRC4 is a pure Ruby implementation of the RC4 algorithm.") - (home-page "https://github.com/caiges/Ruby-RC4") - (license license:expat))) - -(define-public ruby-afm - (package - (name "ruby-afm") - (version "0.2.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "afm" version)) - (sha256 - (base32 - "06kj9hgd0z8pj27bxp2diwqh6fv7qhwwm17z64rhdc4sfn76jgn8")))) - (build-system ruby-build-system) - (native-inputs - (list bundler)) - (synopsis "Read Adobe Font Metrics (afm) files") - (description - "This library provides methods to read @dfn{Adobe Font Metrics} (afm) -files and use the data therein.") - (home-page "https://github.com/halfbyte/afm") - (license license:expat))) - -(define-public ruby-ascii85 - (package - (name "ruby-ascii85") - (version "1.0.3") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "Ascii85" version)) - (sha256 - (base32 - "0658m37jjjn6drzqg1gk4p6c205mgp7g1jh2d00n4ngghgmz5qvs")))) - (build-system ruby-build-system) - (native-inputs - (list bundler)) - (synopsis "Encode and decode Ascii85 binary-to-text encoding") - (description - "This library provides methods to encode and decode Ascii85 -binary-to-text encoding. The main modern use of Ascii85 is in PostScript and -@dfn{Portable Document Format} (PDF) file formats.") - (home-page "https://github.com/datawraith/ascii85gem") - (license license:expat))) - -(define-public ruby-ttfunk - (package - (name "ruby-ttfunk") - (version "1.7.0") - (source - (origin - (method git-fetch) - ;; Fetch from github as the gem does not contain testing code. - (uri (git-reference - (url "https://github.com/prawnpdf/ttfunk") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1jyxn928mpyb1sikjd93s3v8fmh33232pq41ziaph513j7am6fi5")))) - (build-system ruby-build-system) - (arguments - (list #:test-target "spec" ;avoid the rubocop target - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'remove-missing-key-directive - ;; This seem to be a common problem in Ruby projects (see: - ;; https://github.com/prawnpdf/ttfunk/issues/99). - (lambda _ - (substitute* "ttfunk.gemspec" - ((".*spec.signing_key.*") ""))))))) - (native-inputs (list ruby-prawn-dev)) - (synopsis "Font metrics parser for the Prawn PDF generator") - (description - "TTFunk is a TrueType font parser written in pure Ruby. It is used as -part of the Prawn PDF generator.") - (home-page "https://github.com/prawnpdf/ttfunk") - ;; From the README: "Matz's terms for Ruby, GPLv2, or GPLv3. See LICENSE - ;; for details." - (license %prawn-project-licenses))) - -(define-public ruby-puma - (package - (name "ruby-puma") - (version "6.6.0") - (source - (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/puma/puma") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1pdd7s403pi4y75s1sb4jkghhmm2w9zcqifj7z7yx4z0qfs7lvzv")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'patch-Gemfile - (lambda _ - (substitute* "Gemfile" - (("gem \"rake-compiler\".*") - "gem 'rake-compiler'\n")))) - (add-after 'unpack 'disable-rubocop - (lambda _ - (setenv "PUMA_NO_RUBOCOP" "1"))) - (add-after 'unpack 'use-rack-2 - (lambda _ - (setenv "PUMA_CI_RACK" "rack2") - (setenv "PUMA_CI_RACK_2" "1"))) - (add-before 'build 'increase-resource-limits - (lambda _ - ;; The test suite requires a higher number of open files. Try - ;; increasing the soft resource limit of max open files to 2048, - ;; or equal to the hard limit, whichever is lower. - (call-with-values (lambda () (getrlimit 'nofile)) - (lambda (soft hard) - (when (and soft (< soft 2048)) - (if hard - (setrlimit 'nofile (min hard 2048) hard) - (setrlimit 'nofile 2048 #f)) - (format - #t "increased maximum number of open files from ~d to ~d~%" - soft (if hard (min hard 2048) 2048))))))) - (add-before 'build 'fix-gemspec - (lambda _ - (substitute* "puma.gemspec" - (("`git ls-files -- bin docs ext lib tools`") - "`find bin docs ext lib tools -type f |sort`")))) - (delete 'check) ;moved after install - (add-after 'install 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "bundle" "exec" "rake" "test")))) - (add-after 'install 'delete-mkmf.log - (lambda _ - ;; Rubygems installs build log files that embed volatile file - ;; names (see: - ;; https://github.com/rubygems/rubygems/issues/6259). - (for-each delete-file (find-files #$output "^mkmf\\.log$")))) - (add-before 'check 'disable-problematic-tests - (lambda _ - (let-syntax ((skip-tests - (syntax-rules () - ((_ file test ...) - (substitute* file - (((string-append "def " test ".*") all) - (string-append - all " skip('fails on guix')\n")) ...))))) - ;; The test failures were reported at: - ;; https://github.com/puma/puma/issues/3093, but appear to be - ;; caused by the Guix build container, perhaps the lack of - ;; zombie process reaping (see: - ;; https://issues.guix.gnu.org/30948). - ;; All the tests in the 'test_worker_gem_independence.rb' - ;; module fail with "Expected false to be truthy.". - (delete-file "test/test_worker_gem_independence.rb") - (skip-tests "test/test_integration_ssl_session.rb" - ;; The TLS 1.2 test fails for unknown reasons. - "test_off_tls1_2") - (skip-tests "test/test_integration_cluster.rb" - "test_fork_worker_on_refork" - "test_hot_restart_does_not_drop_connections" - "test_culling_strategy_oldest_fork_worker" - "test_usr1_fork_worker") - (skip-tests "test/test_integration_pumactl.rb" - "test_refork_cluster") - ;; The Openssl certificate has expired, causing these tests to fail. - (skip-tests "test/test_puma_server_ssl.rb" - "test_verify_fail_if_client_expired_cert" - "test_verify_client_cert" - "test_server_ssl_with_cert_pem_and_key_pem") - (skip-tests "test/test_integration_ssl.rb" - "test_ssl_run_with_curl_client") - (skip-tests "test/test_web_concurrency_auto.rb" "\ -test_web_concurrency_with_concurrent_ruby_unavailable") - (skip-tests "test/helpers/integration.rb" - "test_puma_started_log_writing")))) - (add-before 'check 'relax-test-case-timeout - (lambda _ - ;; The default value is 45 s and easily causes timeouts. - (setenv "TEST_CASE_TIMEOUT" "600"))) - (add-before 'check 'set-home - (lambda _ - ;; Some tests fail if the cannot write to HOME. - (setenv "HOME" "/tmp"))) - (add-before 'check 'set-paths - (lambda _ - ;; The test suite requires the 'puma' command to be on PATH. - (setenv "PATH" (string-append (getenv "PATH") ":" - #$output "/bin")) - (setenv "GEM_PATH" (string-append - (getenv "GEM_PATH") ":" - #$output "/lib/ruby/vendor_ruby"))))))) - (native-inputs - (list bundler - curl - ruby-json - ruby-localhost - ruby-m - ruby-minitest-proveit - ruby-minitest-retry - ruby-minitest-stub-const - ruby-rack - ruby-rackup-1 - ruby-rake-compiler - ruby-webrick)) - (inputs - (list openssl - ruby-nio4r)) - (propagated-inputs - (list ruby-concurrent-ruby)) - (synopsis "Simple, concurrent HTTP server for Ruby/Rack") - (description - "Puma is a simple, fast, threaded, and highly concurrent HTTP 1.1 server -for Ruby/Rack applications. Puma is intended for use in both development and -production environments. In order to get the best throughput, it is highly -recommended that you use a Ruby implementation with real threads like Rubinius -or JRuby.") - (home-page "https://puma.io/") - (license license:expat))) - -(define-public ruby-hoe-git - (package - (name "ruby-hoe-git") - (version "1.6.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "hoe-git" version)) - (sha256 - (base32 - "10jmmbjm0lkglwxbn4rpqghgg1ipjxrswm117n50adhmy8yij650")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-hoe-3)) - (synopsis "Hoe plugins for tighter Git integration") - (description - "This package provides a set of Hoe plugins for tighter Git integration. -It provides tasks to automate release tagging and pushing and changelog -generation.") - (home-page "https://github.com/jbarnette/hoe-git") - (license license:expat))) - -(define-public ruby-hoe-markdown - (package - (name "ruby-hoe-markdown") - (version "1.4.0") - (home-page "https://github.com/flavorjones/hoe-markdown") - (source - (origin - (method git-fetch) - (uri (git-reference - (url home-page) - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "0wb0yjdx9gx9r0cahpx42pblvglgh1i9pdfxjavq7f40nan2g076")))) - (build-system ruby-build-system) - (arguments - '(#:test-target "spec" - #:phases (modify-phases %standard-phases - (add-before 'check 'disable-bundler-dependency - (lambda _ - (substitute* "spec/spec_helper.rb" - (("require.*bundler/setup.*") - ""))))))) - (native-inputs - (list ruby-rspec)) - (propagated-inputs - (list ruby-rake)) - (synopsis "Hoe plugin with Markdown helpers") - (description - "This package provides a Hoe plugin with various Markdown helpers, which -can be used to e.g. hyperlink Markdown documentation between project files.") - (license license:expat))) - -(define-public ruby-sequel - (package - (name "ruby-sequel") - (version "5.47.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "sequel" version)) - (sha256 - (base32 - "03pmhj4kc3ga75wy397l57bvd18jxxmrk3qsznjw93b993qgvj3z")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; Avoid dependency loop with ruby-minitest-hooks. - (synopsis "Database toolkit for Ruby") - (description "Sequel provides thread safety, connection pooling and a -concise DSL for constructing SQL queries and table schemas. It includes a -comprehensive ORM layer for mapping records to Ruby objects and handling -associated records.") - (home-page "https://sequel.jeremyevans.net") - (license license:expat))) - -(define-public ruby-timecop - (package - (name "ruby-timecop") - (version "0.9.6") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "timecop" version)) - (sha256 - (base32 - "0dlx4gx0zh836i7nzna03xdl7fc233s5z6plnr6k3kw46ah8d1fc")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-before 'check 'set-check-rubylib - (lambda _ - ;; Set RUBYLIB so timecop tests finds its own lib. - (setenv "RUBYLIB" "lib")))))) - (native-inputs - (list bundler - ruby-minitest-rg - ruby-mocha - ruby-activesupport - ruby-pry)) - (synopsis "Test mocks for time-dependent functions") - (description - "Timecop provides \"time travel\" and \"time freezing\" capabilities, -making it easier to test time-dependent code. It provides a unified method to -mock @code{Time.now}, @code{Date.today}, and @code{DateTime.now} in a single -call.") - (home-page "https://github.com/travisjeffery/timecop") - (license license:expat))) - -(define-public ruby-concurrent-ruby - (package - (name "ruby-concurrent-ruby") - (version "1.3.5") - (source (origin - (method git-fetch) - (uri (git-reference ;for tests - (url "https://github.com/ruby-concurrency/concurrent-ruby") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0f0apna8k9cwnpa4lddwimywxzznrd4rjv4m0lka2i54z49iky73")))) - (build-system ruby-build-system) - (arguments - (list - #:tests? #f ;the test suite is run in ruby-concurrent-ruby-edge - #:phases #~(modify-phases %standard-phases - (add-after 'unpack 'delete-unwanted-gemspecs - (lambda _ - (for-each delete-file - '("concurrent-ruby-ext.gemspec" - "concurrent-ruby-edge.gemspec")))) - (add-after 'unpack 'do-not-install-concurrent_ruby.jar - (lambda _ - ;; This file is only built when building the Java - ;; extension. - (substitute* "concurrent-ruby.gemspec" - (("'lib/concurrent-ruby/concurrent/concurrent_ruby.jar'") - ""))))))) - (synopsis "Concurrency library for Ruby") - (description "Concurrent Ruby includes concurrency tools such as agents, -futures, promises, thread pools, actors, supervisors, and more. It is -inspired by Erlang, Clojure, Go, JavaScript, actors, and classic concurrency -patterns.") - (home-page "https://github.com/ruby-concurrency/concurrent-ruby") - (license license:expat))) - -;;; The 'gem' is called 'concurrent-ruby'; reversing its name was confusing -;;; and failed to be picked by the gem importer (which led to this newer -;;; package). -(define-public ruby-concurrent - (deprecated-package "ruby-concurrent" ruby-concurrent-ruby)) - -(define-public ruby-concurrent-ruby-ext - (package - (inherit ruby-concurrent-ruby) - (name "ruby-concurrent-ruby-ext") - (arguments - (list - #:tests? #f ;tested as part of concurrent-ruby-edge - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'delete-unwanted-gemspecs - (lambda _ - (for-each delete-file - '("concurrent-ruby.gemspec" - "concurrent-ruby-edge.gemspec"))))))) - (native-inputs (list ruby-rake-compiler)) - (propagated-inputs (list ruby-concurrent-ruby)) - (synopsis "C extensions for concurrent-ruby") - (description "This package provides C extensions to optimize the -concurrent-ruby gem when running under the Matz's Ruby Interpreter (MRI, also -known as CRuby)."))) - -(define-public ruby-concurrent-ruby-edge - (package - (inherit ruby-concurrent-ruby) - (name "ruby-concurrent-ruby-edge") - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'delete-unwanted-gemspecs - (lambda _ - (for-each delete-file - '("concurrent-ruby.gemspec" - "concurrent-ruby-ext.gemspec")))) - ;; The tests rely on the Gem being installed, so move the check - ;; phase after the install phase. - (delete 'check) - (add-after 'install 'check - (lambda* (#:key tests? #:allow-other-keys) - (setenv "GEM_PATH" (string-append - (getenv "GEM_PATH") ":" - #$output "/lib/ruby/vendor_ruby")) - (when tests? - (invoke "rake" "ci"))))))) - (native-inputs - (list ruby-rake-compiler - ruby-rake-compiler-dock - ruby-rspec - ruby-timecop - ruby-yard)) - (propagated-inputs - (list ruby-concurrent-ruby ruby-concurrent-ruby-ext)) - (synopsis "Edge features and additions to the @code{concurrent-ruby} gem") - (description "The @code{concurrent-ruby-edge} gem includes -@code{concurrent-ruby} features that are under active development and may -change frequently. They are expected not to keep backward -compatibility (there may also lack tests and documentation), although semantic -versions are obeyed though. Features developed in @code{concurrent-ruby-edge} -are expected to move to @code{concurrent-ruby} when final."))) - -(define-public ruby-pkg-config - (package - (name "ruby-pkg-config") - (version "1.2.5") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "pkg-config" version)) - (sha256 - (base32 - "056mzqdh4yjznsg36fi0xiq76f24vxlhzh2n4az919l3x5k318ar")))) - (build-system ruby-build-system) - (arguments - ;; Tests require extra files not included in the gem. - `(#:tests? #f)) - (synopsis "Detect libraries for compiling Ruby native extensions") - (description - "@code{pkg-config} can be used in your extconf.rb to properly detect need -libraries for compiling Ruby native extensions.") - (home-page "https://github.com/ruby-gnome2/pkg-config") - (license license:lgpl2.0+))) - -(define-public ruby-net-http-digest-auth - (package - (name "ruby-net-http-digest-auth") - (version "1.4.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "net-http-digest_auth" version)) - (sha256 - (base32 - "1nq859b0gh2vjhvl1qh1zrk09pc7p54r9i6nnn6sb06iv07db2jb")))) - (build-system ruby-build-system) - (native-inputs - (list ruby-hoe - ruby-minitest)) - (synopsis "RFC 2617 HTTP digest authentication library") - (description - "This library implements HTTP's digest authentication scheme based on -RFC 2617. This enables the use of the digest authentication scheme instead -of the more insecure basic authentication scheme.") - (home-page "https://github.com/drbrain/net-http-digest_auth") - (license license:expat))) - -(define-public ruby-mail - (package - (name "ruby-mail") - (version "2.8.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "mail" version)) - (sha256 - (base32 "1bf9pysw1jfgynv692hhaycfxa8ckay1gjw5hz3madrbrynryfzc")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-mini-mime)) - (arguments - '(#:tests? #f)) ; no rakefile - (synopsis "Mail library for Ruby") - (description - "Mail is an internet library for Ruby that is designed to handle email -generation, parsing and sending. The purpose of this library is to provide -a single point of access to handle all email functions, including sending -and receiving emails. All network type actions are done through proxy -methods to @code{Net::SMTP}, @code{Net::POP3} etc. - -Mail has been designed with a very simple object oriented system that -really opens up the email messages you are parsing, if you know what you -are doing, you can fiddle with every last bit of your email directly.") - (home-page "https://github.com/mikel/mail") - (license license:expat))) - -(define-public ruby-net-protocol - (package - (name "ruby-net-protocol") - (version "0.2.1") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/ruby/net-protocol") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0niivmjx7bc6vsylc1ag17mw6mnvjxw02s7cin1f0422xyr8msq9")))) - (build-system ruby-build-system) - (propagated-inputs (list ruby-timeout)) - (synopsis "Abstract interface for Ruby network clients") - (description "This Ruby library provides an abstract interface for network -clients.") - (home-page "https://github.com/ruby/net-protocol") - (license (list license:bsd-2)))) - -(define-public ruby-email-reply-trimmer - (package - (name "ruby-email-reply-trimmer") - (version "0.1.13") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "email_reply_trimmer" version)) - (sha256 - (base32 - "1jgcxifm48xq5dz9k47q43pqm5bfnf14l62l3bqhmv8f6z8dw4ki")))) - (build-system ruby-build-system) - (synopsis "Trim replies from plain text email") - (description "EmailReplyTrimmer is a Ruby small library to trim replies -from plain text email.") - (home-page "https://github.com/discourse/email_reply_trimmer") - (license license:expat))) - -(define-public ruby-mathn - (package - (name "ruby-mathn") - (version "0.1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "mathn" version)) - (sha256 - (base32 - "1wn812llln9jzgybz2d7536q39z3gi99i6fi0j1dapcpzvhgrr0p")))) - (build-system ruby-build-system) - (native-inputs - (list bundler ruby-rake-compiler)) - (synopsis "Extends math operations for increased precision") - (description - "This gem makes mathematical operations more precise in Ruby and -integrates other mathematical standard libraries. Prior to Ruby 2.5, -@code{mathn} was part of the Ruby standard library.") - (home-page "https://github.com/ruby/mathn") - (license license:bsd-2))) - -(define-public ruby-code-statistics - (package - (name "ruby-code-statistics") - (version "0.2.13") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "code_statistics" version)) - (sha256 - (base32 - "07rdpsbwbmh4vp8nxyh308cj7am2pbrfhv9v5xr2d5gq8hnnsm93")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f)) ; Not all test code is included in gem. - (synopsis "Port of the rails 'rake stats' method") - (description - "This gem is a port of the rails 'rake stats' method so it can be made -more robust and work for non rails projects.") - (home-page "https://github.com/danmayer/code_statistics") - (license license:expat))) - -(define-public ruby-ruby2-keywords - (package - (name "ruby-ruby2-keywords") - (version "0.0.5") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/ruby/ruby2_keywords") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1jhqb152zfr2yrxj6j8rzakkwdkg5viggwnnqrrfxwwy63msdi97")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'delete-extraneous-rake-files - (lambda _ - (for-each delete-file '("rakelib/changelogs.rake" - "rakelib/epoch.rake" - "rakelib/version.rake")))) - (add-after 'extract-gemspec 'adjust-files - (lambda _ - (substitute* "ruby2_keywords.gemspec" - ;; This file is not present in the git checkout. - ((".*\"ChangeLog\",.*") ""))))))) - (synopsis "Shim library for Module#ruby2_keywords") - (description "Provides empty @code{Module#ruby2_keywords} method, for the -forward source-level compatibility against @command{ruby2.7} and -@command{ruby3}.") - (home-page "https://github.com/ruby/ruby2_keywords") - (license license:bsd-2))) - -(define-public ruby-rubypants - (package - (name "ruby-rubypants") - (version "0.6.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rubypants" version)) - (sha256 - (base32 - "0xpqkslan2wkyal2h9qhplkr5d4sdn7q6csigrhnljjpp8j4qfsh")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; need Codecov - (synopsis "Port of the smart-quotes library SmartyPants") - (description - "RubyPants is a Ruby port of the smart-quotes library SmartyPants. The -original SmartyPants is a web publishing plug-in for Movable Type, Blosxom, -and BBEdit that easily translates plain ASCII punctuation characters into -smart typographic punctuation HTML entities.") - (home-page "https://github.com/jmcnevin/rubypants") - (license license:bsd-2))) - -(define-public ruby-org-ruby - (package - (name "ruby-org-ruby") - (version "0.9.12") - (source (origin - (method url-fetch) - (uri (rubygems-uri "org-ruby" version)) - (sha256 - (base32 - "0x69s7aysfiwlcpd9hkvksfyld34d8kxr62adb59vjvh8hxfrjwk")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; no rakefile - (propagated-inputs - (list ruby-rubypants)) - (synopsis "Org-mode parser written in Ruby") - (description - "Org-ruby is an org-mode parser written in Ruby. The most significant -thing this library does today is convert org-mode files to HTML or Textile or -Markdown.") - (home-page "https://github.com/wallyqs/org-ruby") - (license license:expat))) - -(define-public ruby-rake - (package - (name "ruby-rake") - (version "13.0.6") - (source - (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/ruby/rake") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0c77xyl677s966f8yvk8yv7l31c1ffa1yl4kcwiram219h0s76in")))) - (build-system ruby-build-system) - (native-inputs - (list bundler)) - (synopsis "Rake is a Make-like program implemented in Ruby") - (description - "Rake is a Make-like program where tasks and dependencies are specified -in standard Ruby syntax.") - (home-page "https://github.com/ruby/rake") - (license license:expat))) - -(define-public ruby-rake-manifest - (package - (name "ruby-rake-manifest") - (version "0.2.3") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/mvz/rake-manifest") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "16k2yvg773c25kp2vhzhp01rhf53k0nhrcmpv34k1fridw90r2k8")))) - (build-system ruby-build-system) - (arguments - (list - #:test-target "default" - #:phases - #~(modify-phases %standard-phases - (delete 'check) ;moved after the install phase - (add-after 'install 'check - (assoc-ref %standard-phases 'check)) - (add-before 'check 'set-GEM_PATH - (lambda _ - (setenv "GEM_PATH" (string-append - (getenv "GEM_PATH") ":" - #$output "/lib/ruby/vendor_ruby"))))))) - (native-inputs (list ruby-rspec ruby-simplecov)) - (synopsis "Rake tasks to generate and check a manifest file") - (description "This package provides Rake tasks to generate and check a -manifest file.") - (home-page "https://github.com/mvz/rake-manifest") - (license license:expat))) - -(define-public ruby-sfl - (package - (name "ruby-sfl") - (version "2.3") - (source (origin - (method url-fetch) - (uri (rubygems-uri "sfl" version)) - (sha256 - (base32 - "1qm4hvhq9pszi9zs1cl9qgwx1n4wxq0af0hq9sbf6qihqd8rwwwr")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f ;; some tests fail, gem is a dummy for ruby >= 1.9 anyway - #:test-target "spec")) - (synopsis "Spawn for Ruby 1.8") - (description "This pure ruby library provides @code{spawn()} which is -almost perfectly compatible with ruby 1.9's.") - (home-page "https://github.com/ujihisa/spawn-for-legacy") - (license license:bsd-2))) - -(define-public ruby-childprocess - (package - (name "ruby-childprocess") - (version "4.1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "childprocess" version)) - (sha256 - (base32 - "1lvcp8bsd35g57f7wz4jigcw2sryzzwrpcgjwwf3chmjrjcww5in")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f ;; one failing test, even with fixes below - #:test-target "spec" - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch - (lambda _ - (substitute* "spec/spec_helper.rb" - (("#!/bin/sh\\\\n") (string-append "#!" (which "sh") "\\n")))))))) - (native-inputs - (list ruby-coveralls ruby-rspec)) - (synopsis "Control external programs running in the background, in Ruby") - (description "@code{childprocess} provides a gem to control external -programs running in the background, in Ruby.") - (home-page "https://github.com/enkessler/childprocess") - (license license:expat))) - -(define-public ruby-public-suffix - (package - (name "ruby-public-suffix") - (version "4.0.5") - (source (origin - (method url-fetch) - (uri (rubygems-uri "public_suffix" version)) - (sha256 - (base32 - "0vywld400fzi17cszwrchrzcqys4qm6sshbv73wy5mwcixmrgg7g")))) - (build-system ruby-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - ;; Remove the requirement on Rubocop, as it isn't useful to run, and - ;; including it as an input can lead to circular dependencies. - (add-after 'unpack 'remove-rubocop-from-Rakefile - (lambda _ - (substitute* "Rakefile" - (("require \"rubocop/rake\\_task\"") "") - (("RuboCop::RakeTask\\.new") ""))))))) - (native-inputs - (list bundler ruby-yard/minimal ruby-mocha ruby-minitest-reporters)) - (home-page "https://simonecarletti.com/code/publicsuffix-ruby/") - (synopsis "Domain name parser") - (description "The gem @code{public_suffix} is a domain name parser, -written in Ruby, and based on the @dfn{Public Suffix List}. A public suffix -is one under which Internet users can (or historically could) directly -register names. Some examples of public suffixes are @code{.com}, -@code{.co.uk} and @code{pvt.k12.ma.us}. The Public Suffix List is a list of -all known public suffixes.") - (license license:expat))) - -(define-public ruby-addressable - (package - (name "ruby-addressable") - (version "2.8.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "addressable" version)) - (sha256 - (base32 - "1ypdmpdn20hxp5vwxz3zc04r5xcwqc25qszdlg41h8ghdqbllwmw")))) - (build-system ruby-build-system) - (arguments - '(#:test-target "spec" - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'disable-bundler - (lambda _ - (substitute* "spec/spec_helper.rb" - (("require 'bundler/setup'") "")))) - (add-after 'unpack 'remove-unnecessary-dependencies-from-Gemfile - (lambda _ - (substitute* "Gemfile" - (("git: 'https://github.com/sporkmonger/rack-mount.git',") "") - ((".*launchy.*") "") - ((".*rake.*") "gem 'rake'\n") - ((".*redcarpet.*") "")))) - (add-before 'check 'delete-network-dependent-test - (lambda _ - (delete-file "spec/addressable/net_http_compat_spec.rb")))))) - (native-inputs - (list bundler - ruby-idn-ruby - ruby-rspec - ruby-rspec-its-minimal - ruby-simplecov - ruby-sporkmonger-rack-mount - ruby-yard/minimal)) - (propagated-inputs - (list ruby-public-suffix)) - (home-page "https://github.com/sporkmonger/addressable") - (synopsis "Alternative URI implementation") - (description "Addressable is a replacement for the URI implementation that -is part of Ruby's standard library. It more closely conforms to RFC 3986, -RFC 3987, and RFC 6570 (level 4), providing support for IRIs and URI templates.") - (license license:asl2.0))) - -(define-public ruby-colorize - (package - (name "ruby-colorize") - (version "0.8.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "colorize" version)) - (sha256 - (base32 - "133rqj85n400qk6g3dhf2bmfws34mak1wqihvh3bgy9jhajw580b")))) - (build-system ruby-build-system) - (arguments - '(#:phases (modify-phases %standard-phases - (add-before 'check 'remove-codeclimate-dependency - (lambda _ - (substitute* "test/test_colorize.rb" - ;; Do not hook the tests into the online CodeClimate - ;; service which is unnecessary for these tests. - (("require 'codeclimate-test-reporter'") - "") - (("CodeClimate.*") ""))))))) - (synopsis "Add color effects to the @code{String} class") - (description - "This package extends the @code{String} class and adds a -@code{ColorizedString} with methods to set text color, background color, -and text effects.") - (home-page "https://github.com/fazibear/colorize") - (license license:gpl2+))) - -(define-public ruby-colorator - (package - (name "ruby-colorator") - (version "1.1.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "colorator" version)) - (sha256 - (base32 - "0f7wvpam948cglrciyqd798gdc6z3cfijciavd0dfixgaypmvy72")))) - (build-system ruby-build-system) - (arguments - ;; No test target - `(#:tests? #f)) - (home-page "http://octopress.org/colorator/") - (synopsis "Terminal color library") - (description "Colorator is a Ruby gem that helps you colorize your text -for the terminal.") - (license license:expat))) - -(define-public ruby-command-line-reporter - (package - (name "ruby-command-line-reporter") - (version "4.0.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "command_line_reporter" version)) - (sha256 - (base32 - "1l0zxkh5n9dxfw46lpkg416ljpldlq1bgdhqh0d118dk338nz4ll")))) - (build-system ruby-build-system) - (arguments - ;; No Rakefile - `(#:tests? #f - #:phases - (modify-phases %standard-phases - (add-before 'build 'fix-dependencies - (lambda _ - (substitute* ".gemspec" - ;; colored is unmaintained - (("colored") "colorator") - ;; colorator version - (("= 1.2") "= 1.1"))))))) - (propagated-inputs (list ruby-colorator)) - (home-page "https://github.com/wbailey/command_line_reporter") - (synopsis "Report production while executing Ruby scripts") - (description "This gem provides a DSL that makes it easy to write reports -of various types in ruby. It eliminates the need to litter your source with -puts statements, instead providing a more readable, expressive interface to -your application.") - (license license:asl2.0))) - -(define-public ruby-command-line-reporter-3 - (package - (inherit ruby-command-line-reporter) - (version "3.3.6") - (source (origin - (method url-fetch) - (uri (rubygems-uri "command_line_reporter" version)) - (sha256 - (base32 - "1h39zqqxp3k4qk49ajpx0jps1vmvxgkh43mqkb6znk583bl0fv71")))))) - -(define-public ruby-kpeg - (package - (name "ruby-kpeg") - (version "1.3.3") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "kpeg" version)) - (sha256 - (base32 - "0jxddpyb23digcd8b1b02gn94057a7mw17680c3c8s3bcb5xqfnp")))) - (build-system ruby-build-system) - (native-inputs - (list ruby-hoe)) - (synopsis "PEG library for Ruby") - (description "KPeg is a simple PEG library for Ruby. It provides an API as -well as native grammar to build the grammar. KPeg supports direct left -recursion of rules via the -@uref{http://www.vpri.org/pdf/tr2008003_experimenting.pdf,OMeta memoization} -technique.") - (home-page "https://github.com/evanphx/kpeg") - (license license:expat))) - -(define-public ruby-rdoc - (package - (name "ruby-rdoc") - (version "6.7.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/ruby/rdoc") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0dy997zi7k17c2yjlq1y7zl9yaiym1f4jgfh84qqzhwl1qm6v41j")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-before 'build 'generate - ;; 'gem build' doesn't honor Rakefile dependencies (see: - ;; https://github.com/ruby/rdoc/issues/432#issuecomment-650808977). - (lambda _ - (invoke "rake" "generate")))))) - (native-inputs (list bundler ruby-kpeg ruby-racc ruby-rubocop - ruby-test-unit-ruby-core)) - (home-page "https://ruby.github.io/rdoc/") - (synopsis "HTML and command-line documentation utility") - (description "RDoc produces HTML and command-line documentation for Ruby -projects. RDoc includes the +rdoc+ and +ri+ tools for generating and displaying -documentation from the command-line.") - (license license:gpl2+))) - -(define-public ruby-sass-listen - (package - (name "ruby-sass-listen") - (version "4.0.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "sass-listen" version)) - (sha256 - (base32 - "0xw3q46cmahkgyldid5hwyiwacp590zj2vmswlll68ryvmvcp7df")))) - (build-system ruby-build-system) - (arguments - ;; No test target - `(#:tests? #f)) - (propagated-inputs - (list ruby-rb-fsevent ruby-rb-inotify)) - (home-page "https://github.com/sass/listen") - (synopsis "File modification notification library") - (description "The Listen gem listens to file modifications and notifies you -about the changes.") - (license license:expat))) - -(define-public ruby-terminfo - (let ((commit "f4a597d92dcc465e7b343f9afb8cd45607c8e969") - (revision "0")) - (package - (name "ruby-terminfo") - (version (git-version "0.2" revision commit)) - (source - (origin - (method git-fetch) - (uri - (git-reference - (url "https://github.com/genki/ruby-terminfo") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 "0b24sqf0jwj8m106nh35hjayw1kiyrpramb6vg7fnz32mqni6hdi")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (delete 'replace-git-ls-files) - (replace 'build - (lambda _ - (invoke "ruby" "extconf.rb") - (invoke "make"))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (for-each (lambda (f) - (invoke "ruby" "-Ilib:test" "-Ilib:." f)) - (find-files "test" "^test_.*\\.rb$"))))) - (replace 'install - (lambda _ - (invoke "make" "install" (string-append "prefix=" #$output))))))) - (inputs - (list ncurses)) - (native-inputs - (list ruby-rubygems-tasks ruby-rdoc)) - (home-page "http://www.a-k-r.org/ruby-terminfo/") - (synopsis "Terminfo binding for Ruby") - (description "Ruby-terminfo provides terminfo binding for Ruby.") - (license license:bsd-3)))) - -(define-public ruby-diffy - (package - (name "ruby-diffy") - (version "3.2.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "diffy" version)) - (sha256 - (base32 - "119imrkn01agwhx5raxhknsi331y5i4yda7r0ws0an6905ximzjg")))) - (build-system ruby-build-system) - (arguments - ;; No tests - `(#:tests? #f)) - (native-inputs - (list ruby-rspec)) - (home-page "https://github.com/samg/diffy") - (synopsis "Convenient diffing in ruby") - (description "Diffy provides a convenient way to generate a diff from two -strings or files.") - (license license:expat))) - -(define-public ruby-sass-spec - (package - (name "ruby-sass-spec") - (version "3.5.4") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/sass/sass-spec") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "1zsw66830w0xlc7kxz6fm4b5nyb44vdsdgm9mgy06s5aixx83pwr")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-command-line-reporter-3 - ruby-diffy)) - (arguments - (list - ;; This package contains tests for a sass implementation, and the to - ;; avoid any circular dependencies, the tests are not run here - #:tests? #f - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'patch-test - (lambda _ - (delete-file "spec/values/colors/alpha_hex-3.5/error") - (substitute* "spec/values/colors/alpha_hex-3.5/expected_output.css" - (("string") "color"))))))) - (home-page "https://github.com/sass/sass-spec") - (synopsis "Test suite for Sass") - (description "Sass Spec is a test suite for Sass. Test cases are all in -the @file{spec} directory.") - (license license:expat))) - -(define-public ruby-sass - (package - (name "ruby-sass") - (version "3.7.4") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/sass/ruby-sass") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 "03215h9jkni3l9w6lq28p8adaj3qzb47qgxd20l6kldjnm1a1yky")))) - (build-system ruby-build-system) - (arguments - (list #:test-target "test:ruby")) - (propagated-inputs - (list ruby-sass-listen)) - (native-inputs - (list ruby-sass-spec ruby-mathn ruby-cmath)) - (home-page "https://sass-lang.com/") - (synopsis "CSS extension language") - (description "Sass is a CSS extension language. It extends CSS with -features that don't exist yet like variables, nesting, mixins and inheritance.") - (license license:expat))) - -(define-public ruby-sassc - (package - (name "ruby-sassc") - (version "2.4.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "sassc" version)) - (sha256 - (base32 - "0gpqv48xhl8mb8qqhcifcp0pixn206a7imc07g48armklfqa4q2c")))) - (build-system ruby-build-system) - (arguments - '(#:modules ((guix build ruby-build-system) - (guix build utils) - (ice-9 textual-ports)) - #:phases - (modify-phases %standard-phases - ;; TODO: This would be better as a snippet, but the ruby-build-system - ;; doesn't seem to support that - (add-after 'unpack 'remove-libsass - (lambda _ - (delete-file-recursively "ext") - (with-atomic-file-replacement "sassc.gemspec" - (lambda (in out) - (let* ((gemspec (get-string-all in)) - (index (string-contains gemspec "libsass_dir"))) - (display (string-append - (string-take gemspec index) - "\nend\n") - out)))))) - (add-after 'unpack 'dont-check-the-libsass-version - (lambda _ - (substitute* "test/native_test.rb" - (("assert_equal.*Native\\.version") "")))) - (add-after 'unpack 'remove-git-from-gemspec - (lambda _ - (substitute* "sassc.gemspec" - (("`git ls-files -z`") "`find . -type f -print0 |sort -z`")))) - (add-after 'unpack 'remove-extensions-from-gemspec - (lambda _ - (substitute* "sassc.gemspec" - (("\\[\"ext/extconf.rb\"\\]") "[]")))) - (add-after 'unpack 'fix-Rakefile - (lambda _ - (substitute* "Rakefile" - (("test: 'compile:libsass'") ":test")))) - (add-after 'unpack 'remove-unnecessary-dependencies - (lambda _ - (substitute* "test/test_helper.rb" - (("require \"pry\"") "")))) - (add-before 'build 'patch-native.rb - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "lib/sassc/native.rb" - ((".*gem_root = spec.gem_dir") "") - (("ffi_lib .*\n") - (string-append - "ffi_lib '" (assoc-ref inputs "libsass") "/lib/libsass.so'"))))) - ;; The gemspec still references the libsass files, so just keep the - ;; one in the gem. - (delete 'extract-gemspec)))) - (propagated-inputs - (list ruby-ffi ruby-rake)) - (inputs - (list libsass)) - (native-inputs - (list bundler ruby-rake-compiler ruby-minitest-around - ruby-test-construct)) - (synopsis "Use libsss from Ruby") - (description - "This library provides Ruby q@acronym{FFI, Foreign Function Interface} -bindings to the libsass library. This enables rendering -@acronym{SASS,Syntactically awesome style sheets} from Ruby code.") - (home-page "https://github.com/sass/sassc-ruby") - (license license:expat))) - -(define-public ruby-jekyll-sass-converter - (package - (name "ruby-jekyll-sass-converter") - (version "2.1.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "jekyll-sass-converter" version)) - (sha256 - (base32 - "04ncr44wrilz26ayqwlg7379yjnkb29mvx4j04i62b7czmdrc9dv")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-sass)) - (arguments - ;; No rakefile - `(#:tests? #f)) - (home-page "https://github.com/jekyll/jekyll-sass-converter") - (synopsis "Sass converter for Jekyll") - (description "This gem provide built-in support for the Sass converter -in Jekyll.") - (license license:expat))) - -(define-public ruby-jekyll-watch - (package - (name "ruby-jekyll-watch") - (version "2.1.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "jekyll-watch" version)) - (sha256 - (base32 - "1s9ly83sp8albvgdff12xy2h4xd8lm6z2fah4lzmk2yvp85jzdzv")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-listen)) - (arguments - ;; No rakefile - `(#:tests? #f)) - (home-page "https://github.com/jekyll/jekyll-watch") - (synopsis "Jekyll auto-rebuild support") - (description "This gems add the @code{--watch} switch to the jekyll CLI -interface. It allows Jekyll to rebuild your site when a file changes.") - (license license:expat))) - -(define-public ruby-parallel - (package - (name "ruby-parallel") - (version "1.21.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/grosser/parallel") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1xqjcvl3gq3shvrqp8wc3fbqibzh4mf1yczq6np9gd79558dwj3w")))) - (build-system ruby-build-system) - (arguments - `(;; TODO 3 test failures - ;; rspec ./spec/parallel_spec.rb:190 # Parallel.in_processes does not - ;; open unnecessary pipes - ;; rspec './spec/parallel_spec.rb[1:9:7]' # Parallel.each works with - ;; SQLite in processes - ;; rspec './spec/parallel_spec.rb[1:9:16]' # Parallel.each works with - ;; SQLite in threads - #:tests? #f - #:test-target "rspec-rerun:spec" - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-Gemfile - (lambda _ - (substitute* "Gemfile" - (("gem 'rspec-legacy_formatters'") "") - (("gem 'activerecord.*$") "gem 'activerecord'\n")))) - (add-before 'check 'delete-Gemfile.lock - (lambda _ - ;; Bundler isn't being used for fetching dependencies, so - ;; delete the Gemfile.lock - (delete-file "Gemfile.lock"))) - (add-before 'build 'patch-gemspec - (lambda _ - (substitute* "parallel.gemspec" - (("git ls-files") "find"))))))) - (native-inputs - (list ruby-rspec - ruby-rspec-rerun - bundler - ruby-activerecord - ruby-progressbar - ruby-bump - procps - lsof - ruby-mysql2 - ruby-sqlite3 - ruby-i18n)) - (home-page "https://github.com/grosser/parallel") - (synopsis "Parallel processing in Ruby") - (description "Parallel allows you to run any code in parallel Processes -(to use all CPUs) or Threads(to speedup blocking operations). It is best -suited for map-reduce or e.g. parallel downloads/uploads.") - (license license:expat))) - -(define-public ruby-cabin - (package - (name "ruby-cabin") - (version "0.9.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "cabin" version)) - (sha256 - (base32 - "0b3b8j3iqnagjfn1261b9ncaac9g44zrx1kcg81yg4z9i513kici")))) - (build-system ruby-build-system) - (arguments (list #:tests? #f)) ;no Rakefile in released gem - (synopsis "Structured and contextual logging experiments in Ruby") - (description "This Ruby library provides an experimental logging system -that tries to make logging more flexible and more consumable than plain-text -logging.") - (home-page "https://github.com/jordansissel/ruby-cabin") - (license license:asl2.0))) - -(define-public ruby-capybara - (package - (name "ruby-capybara") - (version "3.38.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "capybara" version)) - (sha256 - (base32 - "123198zk2ak8mziwa5jc3ckgpmsg08zn064n3aywnqm9s1bwjv3v")))) - (build-system ruby-build-system) - (arguments - (list #:tests? #f ;sinatra is currently broken with rack 3 - #:phases - #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'remove-extraneous-requirements - (lambda _ - (substitute* "spec/spec_helper.rb" - ((".*require 'selenium_statistics'.*") "") - ((".*SeleniumStatistics.print_results.*") "")))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec" "spec"))))))) - (native-inputs - (list ruby-puma - ruby-rspec - ruby-selenium-webdriver - ruby-sinatra)) - (propagated-inputs - (list ruby-addressable - ruby-launchy - ruby-matrix - ruby-mini-mime - ruby-nokogiri - ruby-rack - ruby-rack-test - ruby-regexp-parser - ruby-xpath)) - (synopsis "Integration testing tool for rack-based web applications") - (description "Capybara is an integration testing tool for rack based web -applications. It simulates how a user would interact with a website.") - (home-page "https://github.com/teamcapybara/capybara") - (license license:expat))) - -(define-public ruby-cane - (package - (name "ruby-cane") - (version "3.0.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "cane" version)) - (sha256 - (base32 - "0yf5za3l7lhrqa3g56sah73wh33lbxy5y3cb7ij0a2bp1b4kwhih")))) - (build-system ruby-build-system) - (arguments `(#:tests? #f)); No rakefile - (home-page "https://github.com/square/cane") - (propagated-inputs - (list ruby-parallel)) - (synopsis "Code quality threshold checking") - (description "Cane fails your build if code quality thresholds are not met.") - (license license:asl2.0))) - -(define-public ruby-morecane - (package - (name "ruby-morecane") - (version "0.2.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "morecane" version)) - (sha256 - (base32 - "0w70vb8z5bdhvr21h660aa43m5948pv0bd27z7ngai2iwdvqd771")))) - (build-system ruby-build-system) - (home-page "https://github.com/yob/morecane") - (arguments `(#:tests? #f)); No rakefile - (propagated-inputs - (list ruby-parallel)) - (synopsis "Extra checks for cane") - (description "The cane gem provides a great framework for running quality -checks over your ruby project as part of continuous integration build. It -comes with a few checks out of the box, but also provides an API for loading -custom checks. This gem provides a set of additional checks.") - (license license:expat))) - -(define-public ruby-pdf-reader - (package - (name "ruby-pdf-reader") - (version "2.4.0") - (source (origin - (method git-fetch) ;no test in distributed gem archive - (uri (git-reference - (url "https://github.com/yob/pdf-reader") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1yh8yrlssf5ppnkvk4m78vmh5r5vqwdcd0gm3lqipw162llz0rai")))) - (build-system ruby-build-system) - (arguments `(#:test-target "spec" - #:phases (modify-phases %standard-phases - (add-after 'unpack 'do-not-use-bundler - (lambda _ - (substitute* "spec/spec_helper.rb" - ((".*[Bb]undler.*") ""))))))) - (native-inputs - (list ruby-rspec ruby-cane ruby-morecane)) - (propagated-inputs - (list ruby-afm ruby-ascii85 ruby-hashery ruby-rc4 ruby-ttfunk)) - (home-page "https://github.com/yob/pdf-reader") - (synopsis "PDF parser in Ruby") - (description "The PDF::Reader library implements a PDF parser conforming as -much as possible to the PDF specification from Adobe. It provides programmatic -access to the contents of a PDF file with a high degree of flexibility.") - (license license:gpl3+))) - -(define-public ruby-pdf-inspector - (let ((revision "1") - (commit "00ee4c92ff917118785ebec188e81effc968abeb")) - (package - (name "ruby-pdf-inspector") - (version (git-version "1.3.0" revision commit)) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/prawnpdf/pdf-inspector") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0h9w81ddd0gvkh5n2cvny9ddb5qiac1si0dhinkk0xxh5382qs0m")))) - (build-system ruby-build-system) - (arguments - `(#:test-target "spec" - #:phases (modify-phases %standard-phases - (add-before 'build 'drop-signing-key-requirement - (lambda _ - (substitute* "pdf-inspector.gemspec" - (("spec.signing_key =.*") - "spec.signing_key = nil")))) - (replace 'check - (lambda _ - (substitute* "pdf-inspector.gemspec" - ((".*rubocop.*") "") - ((".*yard.*") "")) - (invoke "rspec")))))) - (native-inputs - (list ruby-rspec)) - (propagated-inputs - (list ruby-pdf-reader)) - (home-page "https://github.com/prawnpdf/pdf-inspector") - (synopsis "Analysis classes for inspecting PDF output") - (description "This library provides a number of PDF::Reader based tools for -use in testing PDF output. Presently, the primary purpose of this tool is to -support the tests found in Prawn, a pure Ruby PDF generation library.") - (license %prawn-project-licenses)))) - -(define-public ruby-pdf-core - (package - (name "ruby-pdf-core") - (version "0.9.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "pdf-core" version)) - (sha256 - (base32 - "1fz0yj4zrlii2j08kaw11j769s373ayz8jrdhxwwjzmm28pqndjg")))) - (build-system ruby-build-system) - (arguments - ; No test target - `(#:tests? #f)) - (home-page "https://github.com/prawnpdf/pdf-core") - (synopsis "Low level PDF features for Prawn") - (description "This is an experimental gem that extracts low-level PDF -functionality from Prawn.") - (license license:gpl3+))) - -(define-public ruby-prawn-dev - (package - (name "ruby-prawn-dev") - (version "0.3.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "prawn-dev" version)) - (sha256 - (base32 - "1hbzzgm0nwc6h8pyv8h9xx068bf676rispxcz4a0sm8nykz54z4x")))) - (build-system ruby-build-system) - (arguments - (list - #:tests? #f ;no test suite - #:phases - #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'drop-rubocop-dependency - ;; Rubocop depends on Prawn. Remove it to avoid the - ;; dependency cycle when using this tool to build - ;; Prawn components. - (lambda _ - (substitute* "lib/prawn/dev/tasks.rb" - (("require 'rubocop/rake_task'") - "") - (("RuboCop::RakeTask.new") - "")) - (substitute* ".gemspec" - ((".*add.*dependency.*(rubocop|simplecov).*") - ""))))))) - (propagated-inputs (list ruby-rake ruby-rspec ruby-yard)) - (synopsis "Shared tools for Prawn projects development") - (description "Prawn-dev contains tools to aid the development of the -various Prawn projects.") - (home-page "https://prawnpdf.org/") - (license license:expat))) - -(define-public ruby-prawn - ;; There hasn't been a new release since 2017/03/17. - (package - (name "ruby-prawn") - (version "2.4.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/prawnpdf/prawn") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1h1gww12wcdscij0lnd21p9zcbwrwc3miini5ppannc2birmj9ja")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-before 'build 'drop-signing-key-requirement - (lambda _ - (substitute* "prawn.gemspec" - (("spec.signing_key =.*") - "spec.signing_key = nil")))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - ;; The Prawn manual test fails (see: - ;; https://github.com/prawnpdf/prawn/issues/1163), so exclude - ;; it. - (invoke "rspec" - "--exclude-pattern" "prawn_manual_spec.rb"))))))) - (propagated-inputs - (list ruby-matrix - ruby-pdf-core - ruby-ttfunk)) - (native-inputs - (list ruby-pdf-inspector - ruby-prawn-manual-builder - ruby-prawn-dev)) - (home-page "https://prawnpdf.org/api-docs/2.0/") - (synopsis "PDF generation for Ruby") - (description "Prawn is a pure Ruby PDF generation library.") - (license %prawn-project-licenses))) - -(define-public ruby-prawn-table - (package - (name "ruby-prawn-table") - (version "0.2.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "prawn-table" version)) - (sha256 - (base32 - "1nxd6qmxqwl850icp18wjh5k0s3amxcajdrkjyzpfgq0kvilcv9k")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-prawn ruby-pdf-inspector)) - (native-inputs - `(("bundler" ,bundler) - ("ruby-yard" ,ruby-yard) - ("ruby-mocha" ,ruby-mocha) - ("ruby-coderay" ,ruby-coderay) - ("ruby-prawn-manual-builder" ,ruby-prawn-manual-builder) - ("ruby-simplecov" ,ruby-simplecov) - ("ruby-rspec-2" ,ruby-rspec-2))) - (arguments - '(;; TODO: 1 test fails - ;; Failure/Error: pdf.page_count.should == 1 - ;; expected: 1 - ;; got: 2 (using ==) - ;; # ./spec/table_spec.rb:1308 - ;; - ;; 225 examples, 1 failure - #:tests? #f - #:phases - (modify-phases %standard-phases - (add-before 'check 'patch-gemspec - (lambda _ - (substitute* "prawn-table.gemspec" - ;; Loosen the requirement for pdf-inspector - (("~> 1\\.1\\.0") ">= 0") - ;; Loosen the requirement for pdf-reader - (("~> 1\\.2") ">= 0")))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (home-page "https://github.com/prawnpdf/prawn-table") - (synopsis "Tables support for Prawn") - (description "This gem provides tables support for Prawn.") - (license license:gpl3+))) - -(define-public ruby-kramdown - (package - (name "ruby-kramdown") - (version "2.3.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "kramdown" version)) - (sha256 - (base32 - "0jdbcjv4v7sj888bv3vc6d1dg4ackkh7ywlmn9ln2g9alk7kisar")))) - (build-system ruby-build-system) - (arguments `(#:tests? #f)); FIXME: some test failures - (native-inputs - (list ruby-prawn ruby-prawn-table)) - (home-page "https://kramdown.gettalong.org/") - (synopsis "Markdown parsing and converting library") - (description "Kramdown is a library for parsing and converting a superset -of Markdown. It is completely written in Ruby, supports standard Markdown -(with some minor modifications) and various extensions that have been made -popular by the PHP @code{Markdown Extra} package and @code{Maruku}.") - (license license:expat))) - -(define-public ruby-kramdown-parser-gfm - (package - (name "ruby-kramdown-parser-gfm") - (version "1.1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "kramdown-parser-gfm" version)) - (sha256 - (base32 "0a8pb3v951f4x7h968rqfsa19c8arz21zw1vaj42jza22rap8fgv")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f)) ;no rakefile - (propagated-inputs - (list ruby-kramdown)) - (synopsis "Kramdown parser for the GFM dialect of Markdown") - (description - "This is a parser for kramdown that converts Markdown documents in the -GFM dialect to HTML.") - (home-page "https://github.com/kramdown/parser-gfm") - (license license:expat))) - -(define-public ruby-http-parser.rb - (package - (name "ruby-http-parser.rb") - (version "0.6.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "http_parser.rb" version)) - (sha256 - (base32 - "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi")))) - (build-system ruby-build-system) - (arguments - ;; No tests - `(#:tests? #f)) - (native-inputs - (list ruby-rake-compiler ruby-rspec)) - (home-page "https://github.com/tmm1/http_parser.rb") - (synopsis "HTTP parser un Ruby") - (description "This gem is a simple callback-based HTTP request/response -parser for writing http servers, clients and proxies.") - (license license:expat))) - -(define-public ruby-excon - (package - (name "ruby-excon") - (version "0.109.0") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/excon/excon") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "199niqbpzj70k3n6ybg4vbcw3qm76kwic4nl9747l1n0v49aaj24")))) - (build-system ruby-build-system) - (arguments - (list - #:tests? #f ;; some tests require DNS - #:phases - #~(modify-phases %standard-phases - (replace 'replace-git-ls-files - (lambda _ - (substitute* "excon.gemspec" - (("`git ls-files -- data/. lib/.`") - "`find data lib -type f`")))) - (add-before 'check 'disable-server-spec-checks - (lambda _ ;; TODO: Remove this if ruby-unicorn is available. - ;; Some of the tests in this file require ruby-unicorn, which is - ;; not yet packaged for guix and would pull in a lot of other - ;; dependencies. - (delete-file "spec/excon/test/server_spec.rb")))))) - (native-inputs - (list - ruby-activesupport - ruby-eventmachine - ruby-json - ruby-open4 - ruby-puma - ruby-rspec - ruby-shindo - ruby-sinatra - ruby-webrick)) - (synopsis "Usable, fast, simple Ruby HTTP 1.1") - (description "Excon was designed to be simple, fast and performant. It -works great as a general HTTP(s) client and is particularly well suited to -usage in API clients.") - (home-page "https://github.com/excon/excon") - (license license:expat))) - -(define-public ruby-em-websocket - (package - (name "ruby-em-websocket") - (version "0.5.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "em-websocket" version)) - (sha256 - (base32 - "1bsw8vjz0z267j40nhbmrvfz7dvacq4p0pagvyp17jif6mj6v7n3")))) - (build-system ruby-build-system) - (arguments - ;; No tests - `(#:tests? #f)) - (propagated-inputs - (list ruby-eventmachine ruby-http-parser.rb)) - (native-inputs - (list bundler ruby-rspec)) - (home-page "https://github.com/igrigorik/em-websocket") - (synopsis "EventMachine based WebSocket server") - (description "Em-websocket is an EventMachine based WebSocket server -implementation.") - (license license:expat))) - -(define-public ruby-rouge - (package - (name "ruby-rouge") - (version "3.26.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rouge" version)) - (sha256 - (base32 - "197k0vskf72wxx0gzwld2jzg27bb7982xlvnzy9adlvkzp7nh8vf")))) - (build-system ruby-build-system) - (arguments `(#:tests? #f)); No rakefile - (home-page "http://rouge.jneen.net/") - (synopsis "Code highlighter") - (description "Rouge is a code highlighter written in Ruby. It supports more -than 100 languages and outputs HTML or ANSI 256-color text. Its HTML output -is compatible with stylesheets designed for pygments.") - (license (list - ;; rouge is licensed under expat - license:expat - ;; pygments is licensed under bsd-2 - license:bsd-2)))) - -(define-public ruby-hashie - (let ((commit "73510552ba580867e9882fe092568916cbcd810b") - (revision "0")) - (package - (name "ruby-hashie") - (version (git-version "5.0.0" revision commit)) - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/hashie/hashie") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "08rpx040h6vgx6ynk6w029f7z7c8aj2p4v135k2l1zxvnw617ddw")))) - (build-system ruby-build-system) - (arguments - (list #:test-target "spec" - #:phases #~(modify-phases %standard-phases - (add-after 'unpack 'disable-bundler - (lambda _ - (substitute* "Rakefile" - ((".*require 'bundler'.*") "") - ((".*Bundler.setup.*") "") - (("Bundler::GemHelper\\.install_tasks") "")))) - (add-after 'unpack 'disable-rubocop - (lambda _ - (substitute* "Rakefile" - (("require 'rubocop/rake_task'") "") - (("RuboCop::RakeTask.new") "")))) - (add-after 'unpack 'relax-requirements - (lambda _ - ;; Contains multiple extraneous dependencies. - (delete-file "Gemfile")))))) - (native-inputs (list ruby-json ruby-pry ruby-rspec ruby-rspec-pending-for)) - (home-page "https://github.com/hashie/hashie") - (synopsis "Extensions to Ruby Hashes") - (description "Hashie is a collection of classes and mixins that make Ruby -hashes more powerful.") - (license license:expat)))) - -(define-public ruby-heredoc-unindent - (package - (name "ruby-heredoc-unindent") - (version "1.2.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "heredoc_unindent" version)) - (sha256 - (base32 - "14ijr2fsjwhrkjkcaz81d5xnfa4vvgvcflrff83avqw9klm011yw")))) - (build-system ruby-build-system) - (native-inputs - (list ruby-hoe-3)) - (home-page "https://github.com/adrianomitre/heredoc_unindent") - (synopsis "Heredoc indentation cleaner") - (description "This gem removes common margin from indented strings, such -as the ones produced by indented heredocs. In other words, it strips out -leading whitespace chars at the beginning of each line, but only as much as -the line with the smallest margin. - -It is acknowledged that many strings defined by heredocs are just code and -fact is that most parsers are insensitive to indentation. If, however, the -strings are to be used otherwise, be it for printing or testing, the extra -indentation will probably be an issue and hence this gem.") - (license license:expat))) - -(define-public ruby-safe-yaml - (package - (name "ruby-safe-yaml") - (version "1.0.5") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/dtao/safe_yaml") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1a0wh7y3va2m7bjza95na2snw0vrdh9syz40mpjvjphbc4ph3pzg")))) - (build-system ruby-build-system) - (native-inputs - (list ruby-rspec ruby-hashie ruby-heredoc-unindent)) - (arguments - (list - ;; Tests are broken since the move to ruby@3. - ;; There's ongoing effort on the Jekyll dependent - ;; to remove this orphan dependency. - #:tests? #f ; broken since move to ruby@3 - #:test-target "spec" - #:phases - #~(modify-phases %standard-phases - (add-before 'check 'set-TZ - (lambda _ - ;; This test is dependent on the timezone - ;; spec/transform/to_date_spec.rb:35 - ;; # SafeYAML::Transform::ToDate converts times to the local - ;; timezone - (setenv "TZ" "UTC-11")))))) - (home-page "https://github.com/dtao/safe_yaml") - (synopsis "YAML parser") - (description "The SafeYAML gem provides an alternative implementation of -YAML.load suitable for accepting user input in Ruby applications.") - (license license:expat))) - -(define-public ruby-yaml-lint - ;; No tags for releases. - (let ((commit "d6a253f7d33234a9c24660d582cf7014e882c0c2") - (revision "0")) - (package - (name "ruby-yaml-lint") - (version (git-version "0.1.2" revision commit)) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/Pryz/yaml-lint") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 "0zk0jwzmcaaiyixjvkzdb54xhiqcnjkma72nkv0vm5csaphfdjkx")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (native-inputs - (list ruby-coveralls ruby-rspec ruby-simplecov)) - (synopsis "Simple YAML check tool") - (description - "@code{yaml-lint} will simply try to load the YAML file with the built-in -Ruby yaml library.") - (home-page "https://github.com/Pryz/yaml-lint") - (license license:expat)))) - -(define-public ruby-matrix - (package - (name "ruby-matrix") - (version "0.4.2") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/ruby/matrix") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1asxr0jzh39lk5f8a9wm5avykrcy0v2wgd1bl3cszjczh99xy5k2")))) - (build-system ruby-build-system) - (synopsis "@code{Matrix} and @code{Vector} classes implementation for Ruby") - (description "This Ruby library provides an implementation of the -@code{Matrix} and @code{Vector} classes. The @code{Matrix} class represents a -mathematical matrix. It provides methods for creating matrices, operating on -them arithmetically and algebraically, and determining their mathematical -properties (trace, rank, inverse, determinant, eigensystem, etc.). The -@code{Vector} class represents a mathematical vector, which is useful in its -own right, and also constitutes a row or column of a @code{Matrix}.") - (home-page "https://github.com/ruby/matrix") - (license license:bsd-2))) - -(define-public ruby-m - (package - (name "ruby-m") - (version "1.6.1") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/qrush/m") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1aycfc8l1bsln1y300fv75fknn4amjcvc4rm2kd8hb6cqivjq5rg")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'sanitize-dependencies - (lambda _ - (delete-file "Gemfile") - (delete-file "Gemfile.lock") - ;; Rocco is unmaintained as of 2023/01/08; avoid depending on - ;; it. - (substitute* "m.gemspec" - ;; The rdiscount and rocco dependencies are used for - ;; generating the documentation. - ((".*rdiscount.*") "") - ((".*rocco.*") "") - ((".*appraisal.*") "") - ((".*coveralls.*") "")) - (substitute* "Rakefile" - ;; ruby-appraisal is not packaged, and is used to test against - ;; various dependencies; circumvent its use. - ((".*require 'appraisal'.*") "") - ((".*require 'coveralls'.*") "") - (("appraisal [:graphic:]+ rake") - "rake") - (("Coveralls.push!") "")))) - (add-before 'replace-git-ls-files 'pre-replace-git-ls-files - (lambda _ - (substitute* "m.gemspec" - (("git ls-files -- bin/\\*") - "find bin -type f -not -regex '.*\\.gem$' | sort") - (("git ls-files -- \\{test,spec,features}/\\*") - "find test -type f -not -regex '.*\\.gem$' | sort")))) - (delete 'check) - (add-after 'install 'check - (lambda* (#:key tests? #:allow-other-keys) - (setenv "GEM_PATH" (string-append - (getenv "GEM_PATH") ":" - #$output "/lib/ruby/vendor_ruby")) - (when tests? - (invoke "rake" "test"))))))) - (native-inputs (list ruby-activesupport)) - (propagated-inputs (list ruby-method-source ruby-rake)) - (synopsis "Ruby test runner that can run tests by line number") - (description "@code{m} stands for metal, a better test/unit and -@code{minitest} test runner that can run tests by line number.") - (home-page "https://github.com/qrush/m") - (license license:expat))) - -(define-public ruby-mercenary - (package - (name "ruby-mercenary") - (version "0.4.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "mercenary" version)) - (sha256 - (base32 - "0f2i827w4lmsizrxixsrv2ssa3gk1b7lmqh8brk8ijmdb551wnmj")))) - (build-system ruby-build-system) - (arguments `(#:test-target "spec")) - (native-inputs - (list bundler)) - (home-page "https://github.com/jekyll/mercenary") - (synopsis "Command-line apps library in Ruby") - (description "Mercenary is a lightweight and flexible library for writing -command-line apps in Ruby.") - (license license:expat))) - -(define-public ruby-launchy - (package - (name "ruby-launchy") - (version "2.5.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "launchy" version)) - (sha256 - (base32 - "06r43899384das2bkbrpsdxsafyyqa94il7111053idfalb4984a")))) - (build-system ruby-build-system) - (native-inputs (list curl links ruby-simplecov)) - (propagated-inputs (list ruby-addressable)) - (synopsis "Ruby helper class for launching applications") - (description - "Launchy is helper class for launching applications in a fire and forget -manner. The aim of Launchy is to provide a common approach to launching -external applications from within Ruby programs.") - (home-page "https://github.com/copiousfreetime/launchy") - (license license:isc))) - -(define-public ruby-liquid - (package - (name "ruby-liquid") - (version "5.4.0") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/Shopify/liquid") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1qdnvd1f9zs6wyilcgxyh93wis7ikbpimjxfpbkpk2ngr1m2c8la")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (delete 'check) ;moved after the install phase - (add-after 'install 'check - (assoc-ref %standard-phases 'check)) - (add-before 'check 'set-GEM_PATH - (lambda _ - (setenv "GEM_PATH" (string-append - (getenv "GEM_PATH") ":" - #$output "/lib/ruby/vendor_ruby")))) - (add-before 'check 'delete-problematic-tests - (lambda _ - ;; The following test fails with 'Unknown tag' errors (see: - ;; https://github.com/Shopify/liquid/issues/1699). - (delete-file "test/integration/tags/inline_comment_test.rb")))))) - (native-inputs (list ruby-liquid-c-bootstrap ruby-rspec ruby-stackprof)) - (home-page "https://shopify.github.io/liquid/") - (synopsis "Template language") - (description "Liquid is a template language written in Ruby. It is used -to load dynamic content on storefronts.") - (license license:expat))) - -(define-public ruby-liquid-4 - (package - (inherit ruby-liquid) - (name "ruby-liquid") - (version "4.0.4") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/Shopify/liquid") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0cr321nd0zkbxirgdfmz37xx7j26zfnicjh585fi20vx60frry83")))) - (arguments (list #:tests? #f)))) ;avoid required an older ruby-liquid-c - -;;; This variant is purposefully incomplete, lacking ruby-liquid so that it -;;; can be used for ruby-liquid's test suite. -(define ruby-liquid-c-bootstrap - (package - (name "ruby-liquid-c-bootstrap") - (version "4.1.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "liquid-c" version)) - (sha256 - (base32 - "0jl37jz9hbfbhknryx4myxqx4n1f5dzyzmf1sapkcbw93xyrmkch")))) - (build-system ruby-build-system) - (arguments (list #:tests? #f)) - (native-inputs (list ruby-rake-compiler)) - (synopsis "Liquid performance extension in C") - (description "This package provides a Partial native implementation of the -liquid ruby gem in C that makes it operate about three times faster.") - (home-page "https://github.com/shopify/liquid-c") - (license license:expat))) - -(define-public ruby-liquid-c - (package/inherit ruby-liquid-c-bootstrap - (name "ruby-liquid-c") - (arguments - (list - ;; Only run the unit tests, because the test:integration target fails - ;; with "File does not exist: test_helper" (see: - ;; https://github.com/Shopify/liquid-c/issues/188). - #:test-target "test:unit" - #:phases - #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'relax-requirements - (lambda _ - (substitute* "Gemfile" - ;; Do not attempt to fetch a gem from git. - (("git_source\\(:github) do \\|repo_name\\|") - "if false") - ((", github: \"Shopify/liquid\", ref: \"master\"") - "") - ;; Remove extraneous dependencies. - ((".*byebug.*") "") - ((".*rubocop.*") "") - ;; Relax spy version specification. - (("gem \"spy\", \"0.4.1\"") - "gem \"spy\", \">= 0.4.1\""))))))) - (native-inputs - (list ruby-benchmark-ips - ruby-rake-compiler - ruby-ruby-memcheck - ruby-spy - ruby-stackprof)) - (propagated-inputs - (list ruby-liquid)))) - -(define-public ruby-localhost - (package - (name "ruby-localhost") - (version "1.1.10") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/socketry/localhost") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1yp70w15wpfk613ap5f4y15yx4n2qqwa67vqc2f4lv7npf3llcz0")))) - (build-system ruby-build-system) - (arguments - ;; XXX: The test suite requires sus-fixtures-async, which requires async, - ;; only available for Ruby 3.0. - (list #:tests? #f - #:phases - #~(modify-phases %standard-phases - (add-before 'build 'remove-missing-signing-key - (lambda _ - ;; Otherwise, the build fails with ENOENT. - (substitute* "localhost.gemspec" - ((".*spec.signing_key.*") ""))))))) - (synopsis "API for generating per-user self-signed root certificates") - (description "This package provides @code{localhost}, a Ruby library for -Managing a local certificate authority for self-signed, localhost development -servers.") - (home-page "https://github.com/socketry/localhost") - (license license:expat))) - -(define-public ruby-forwardable-extended - (package - (name "ruby-forwardable-extended") - (version "2.6.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "forwardable-extended" version)) - (sha256 - (base32 - "15zcqfxfvsnprwm8agia85x64vjzr2w0xn9vxfnxzgcv8s699v0v")))) - (build-system ruby-build-system) - (arguments `(#:tests? #f)); Cyclic dependency on luna-rspec-formatters - (home-page "https://github.com/envygeeks/forwardable-extended") - (synopsis "Delegation to hashes and instance variables in Forwardable") - (description "Forwardable Extended provides more @code{Forwardable} -methods for your source as @code{Forwardable::Extended}.") - (license license:expat))) - -(define-public ruby-pathutil - (package - (name "ruby-pathutil") - (version "0.16.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "pathutil" version)) - (sha256 - (base32 - "12fm93ljw9fbxmv2krki5k5wkvr7560qy8p4spvb9jiiaqv78fz4")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-forwardable-extended)) - (native-inputs - (list bundler ruby-rspec)) - ;; Fails with: cannot load such file -- - ;; /tmp/guix-build-ruby-pathutil-0.16.0.drv-0/gem/benchmark/support/task - (arguments `(#:tests? #f)) - (home-page "https://github.com/envygeeks/pathutil") - (synopsis "Extended implementation of Pathname") - (description "Pathutil tries to be a faster pure Ruby implementation of -Pathname.") - (license license:expat))) - -(define-public ruby-terminal-table - (package - (name "ruby-terminal-table") - (version "3.0.2") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/tj/terminal-table") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1c3f7ng3lxq962n8sbmlsvjx6srh5i801wzsyhxmfz2g880f5jps")))) - (arguments - '(#:phases - (modify-phases %standard-phases - (add-before 'check 'remove-unnecessary-dependencies - (lambda _ - (substitute* "terminal-table.gemspec" - (("s.add_runtime_dependency.*") "\n") - (("s.add_development_dependency.*") "\n")) - (substitute* "Gemfile" - ((".*tins.*") "\n")))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-unicode-display-width)) - (native-inputs - (list ruby-rspec ruby-term-ansicolor)) - (home-page "https://github.com/tj/terminal-table") - (synopsis "Simple, feature rich ASCII table generation library") - (description - "Terminal Table is a fast and simple, yet feature rich -table generator written in Ruby. It supports ASCII and -Unicode formatted tables.") - (license license:expat))) - -(define-public jekyll - (package - (name "jekyll") - (version "4.3.4") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/jekyll/jekyll") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0sz285x5ppbifrnixi9sdzv28kg4x3qbzds3qniiwh1ip9hi1yk4")))) - (build-system ruby-build-system) - (arguments - (list #:modules '((guix build ruby-build-system) - (guix build utils) - (ice-9 ftw) - (srfi srfi-26)) - ;; The cucumber acceptance suite is not run as it depends on an old - ;; version (5). - #:test-target "spec" - #:phases - #~(modify-phases %standard-phases - (add-before 'check 'disable-problematic-tests - ;; TODO: Package the missing test inputs. - (lambda _ - (with-directory-excursion "test" - ;; Requires 'jekyll-coffeescript'. - (delete-file "test_coffeescript.rb") - ;; Requires 'tomlrb'. - (delete-file "test_configuration.rb") - (substitute* "test_filters.rb" - ;; The sassify tests fail due to white space - ;; differences (see: - ;; https://github.com/jekyll/jekyll/issues/9322). - ((".*s?ssify with simple string.*" all) - (string-append all - " skip('fails on guix')\n"))) - ;; Requires kramdown-syntax-coderay. - (delete-file "test_kramdown.rb") - ;; Requires 'test-theme', usually made available from the - ;; local checkout via Bundler (not used here). - (delete-file "test_layout_reader.rb") - ;; Requires a large amount of un-packaged dependencies. - (delete-file "test_plugin_manager.rb") - ;; Requires 'classifier-reborn'. - (delete-file "test_related_posts.rb") - ;; This one causes a test failure similar to the ones for - ;; sassify above. - (delete-file "test_sass.rb") - ;; This would require running the tests via 'bundle - ;; exec', but the Gemfile contains too many (extraneous) - ;; dependencies. - (delete-file "test_site.rb") - ;; Delete the theme tests, as they require 'test-theme', - ;; usually made available from the local checkout via the - ;; Gemfile/bundler (not used here). - (for-each delete-file - (scandir - "." (cut string-prefix? "test_theme" <>))) - ;; This one also relies on 'test-theme'. - (delete-file "test_liquid_renderer.rb") - ;; This test assumes internet connectivity, negate it, as - ;; there's no Internet in the build container. - (substitute* "test_utils.rb" - (("assert Utils::Internet\\.connected\\?") - "refute Utils::Internet.connected?")) - ;; These tests fail non-deterministically (see: - ;; https://github.com/jekyll/jekyll/issues/9323). - (delete-file "test_new_command.rb") - (delete-file "test_collections.rb")))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - ;; Invoke the test scripts manually, as 'rake test' - ;; doesn't show any failure details, making debugging - ;; needlessly difficult. - (for-each (lambda (f) - (invoke "ruby" "-I" "test" f)) - (find-files "test" "^test_.*\\.rb$")))))))) - (native-inputs - (list bundler - ruby-httpclient - ruby-minitest-profile - ruby-minitest-reporters - ruby-nokogiri - ruby-rspec - ruby-rspec-mocks - ruby-shoulda - ruby-simplecov)) - (propagated-inputs - (list ruby-addressable - ruby-colorator - ruby-em-websocket - ruby-i18n - ruby-jekyll-sass-converter - ruby-jekyll-watch - ruby-kramdown-parser-gfm - ruby-liquid-4 - ruby-mercenary - ruby-pathutil - ruby-rouge - ruby-safe-yaml - ruby-sassc - ruby-terminal-table - ruby-webrick)) - (home-page "https://jekyllrb.com/") - (synopsis "Static site generator") - (description "Jekyll is a simple, blog aware, static site generator.") - (license license:expat))) - -(define-public ruby-jekyll-paginate-v2 - (package - (name "ruby-jekyll-paginate-v2") - (version "3.0.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "jekyll-paginate-v2" version)) - (sha256 - (base32 - "1qzlqhpiqz28624fp0ak76hfy7908w6kpx62v7z43aiwjv0yc6q0")))) - (build-system ruby-build-system) - (propagated-inputs - (list jekyll)) - (home-page "https://github.com/sverrirs/jekyll-paginate-v2") - (synopsis "Pagination Generator for Jekyll 3") - (description "The Pagination Generator forms the core of the pagination -logic in Jekyll. It calculates and generates the pagination pages.") - (license license:expat))) - -(define-public ruby-faraday-net-http - (package - (name "ruby-faraday-net-http") - (version "3.0.2") - (source (origin - (method url-fetch) - (uri (rubygems-uri "faraday-net_http" version)) - (sha256 - (base32 - "13byv3mp1gsjyv8k0ih4612y6vw5kqva6i03wcg4w2fqpsd950k8")))) - (build-system ruby-build-system) - ;; Do not run the test suite here as it would introduce a dependency cycle - ;; with ruby-faraday, which uses it as part of its test suite. - (arguments (list #:tests? #f)) - (synopsis "Faraday adapter for Net::HTTP") - (description "This gem is a Faraday adapter for the @code{Net::HTTP} -library. Faraday is an HTTP client library that provides a common interface -over many adapters.") - (home-page "https://github.com/lostisland/faraday-net_http") - (license license:expat))) - -(define-public ruby-faraday - (package - (name "ruby-faraday") - (version "2.7.4") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/lostisland/faraday") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0ya6jqa7ryr4i62mmzjjxzd8i8y0pyw0cbhifd758rs6lvkzmxa3")))) - (build-system ruby-build-system) - (arguments (list #:test-target "spec")) - (native-inputs - (list ruby-coveralls - ruby-pry - ruby-rack - ruby-rspec - ruby-simplecov - ruby-webmock)) - ;; Propagate faraday-net-http as this is the default adapter used, and - ;; many Ruby projects assumes it is available. - (propagated-inputs (list ruby-ruby2-keywords ruby-faraday-net-http)) - (synopsis "Ruby HTTP/REST API client library") - (description "Faraday is a HTTP/REST API client library which provides a -common interface over different adapters.") - (home-page "https://github.com/lostisland/faraday") - (license license:expat))) - -(define-public ruby-nio4r - (package - (name "ruby-nio4r") - (version "2.5.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "nio4r" version)) - (sha256 - (base32 - "0gnmvbryr521r135yz5bv8354m7xn6miiapfgpg1bnwsvxz8xj6c")))) - (build-system ruby-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'remove-unnecessary-dependencies - (lambda _ - (substitute* "spec/spec_helper.rb" - ;; Coveralls is for uploading test coverage information to an - ;; online service, and thus unnecessary for building the Guix - ;; package - (("require \"coveralls\"") "") - (("Coveralls\\.wear!") "") - ;; Remove rspec/retry as we are not retrying the tests - (("require \"rspec/retry\"") "") - (("config\\.display_try_failure_messages = true") "") - (("config\\.verbose_retry = true") "")))) - (add-before 'check 'compile - (lambda _ - (invoke "rake" "compile"))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (native-inputs - (list bundler ruby-rake-compiler ruby-rspec ruby-rubocop)) - (synopsis "New I/O for Ruby") - (description - "@code{nio} provides cross-platform asynchronous I/O primitives in Ruby -for scalable network clients and servers.") - (home-page "https://github.com/socketry/nio4r") - (license license:expat))) - -(define-public ruby-language-server-protocol - (package - (name "ruby-language-server-protocol") - (version "3.17.0.3") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/mtsmfm/language_server-protocol-ruby") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0f2g301fz99c6nkca39s9227brlycznv8a9r4b4i99rg25m91lc6")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'remove-unnecessary-dependencies - (lambda _ - (substitute* "Gemfile" - (("gem \"pry-byebug\"") "")))) - (replace 'replace-git-ls-files - (lambda _ - (substitute* "language_server-protocol.gemspec" - (("git ls-files -z([^`]*)" _ files) - (string-append "find " files - " -type f -not -regex '.*\\.gem$'" - " -print0 | sort -z")))))))) - (native-inputs - (list ruby-activesupport - ruby-benchmark-ips - ruby-m - ruby-minitest - ruby-minitest-power-assert)) - (synopsis "Language Server Protocol (LSP) development kit for Ruby") - (description "This package provides a Language Server Protocol (LSP) -development kit for Ruby.") - (home-page "https://github.com/mtsmfm/language_server-protocol-ruby") - (license license:expat))) - -(define-public ruby-spy - (package - (name "ruby-spy") - (version "1.0.5") - (source (origin - (method url-fetch) - (uri (rubygems-uri "spy" version)) - (sha256 - (base32 - "0g2mma8q17m26k5s864ndlvvqllhcivwg2wdigjvb7z06iw17gds")))) - (build-system ruby-build-system) - (arguments - (list #:phases #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'relax-requirements - (lambda _ - (substitute* "spy.gemspec" - ((".*pry-byebug.*") "")) - (substitute* "test/test_helper.rb" - ((".*pry-byebug.*") "")) - (substitute* "Gemfile" - ((".*redcarpet.*") "") - ((".*yard.*") ""))))))) - (native-inputs - (list ruby-coveralls - ruby-minitest-reporters - ruby-pry - ruby-rspec-core - ruby-rspec-expectations)) - (synopsis "Mocking library for Ruby") - (description "Spy is a mocking library. By default, it will raise an -error if you attempt to stub a method that doesn't exist or call the stubbed -method with the wrong arity.") - (home-page "https://github.com/ryanong/spy") - (license license:expat))) - -(define-public ruby-subprocess - (package - (name "ruby-subprocess") - (version "1.5.6") - (source (origin - (method url-fetch) - (uri (rubygems-uri "subprocess" version)) - (sha256 - (base32 - "0v49ahfx9b75qg42sl8a3l367g2vihc16g8z5f2raxpxjl1wh2s2")))) - (build-system ruby-build-system) - ;; Do not run the test suite, as there its test dependency ruby-sord would - ;; introduce a cycle with ruby-sorbet-runtime. - (arguments (list #:tests? #f)) - (native-inputs (list ruby-minitest ruby-pry)) - (synopsis "Ruby library to control and communicate with spawned processes") - (description "This Ruby library is controlling and communicating with -spawned processes. It is designed after Python's @code{subprocess} module.") - (home-page "https://github.com/stripe/subprocess") - (license license:expat))) - -(define-public ruby-sus - (package - (name "ruby-sus") - (version "0.20.3") - (source (origin - (method git-fetch) ;for gems.rb - (uri (git-reference - (url "https://github.com/ioquatix/sus") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0j4rkh9li79674h3lfkxlcdygscmb22l77i7hwhxl3gw103gkpdr")))) - (build-system ruby-build-system) - (arguments - (list #:phases - #~(modify-phases %standard-phases - (add-before 'build 'prune-gems.rb - (lambda _ - (substitute* "gems.rb" - (("gem \"bake-modernize\"") "") - (("gem \"bake-gem\"") "") - (("gem \"utopia-project\"") "")))) - (add-before 'build 'remove-missing-signing-key - (lambda _ - ;; Otherwise, the build fails with ENOENT. - (substitute* "sus.gemspec" - ((".*spec.signing_key.*") "")))) - (delete 'check) ;moved after install - (add-after 'install 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (setenv "CONSOLE_LEVEL" "debug") - (setenv "HOME" "/tmp") - ;; 'bundle exec' must be used to workaround a problem - ;; when using bake test and GEM_PATH (see: - ;; https://github.com/ioquatix/bake/issues/11). - (invoke "bundle" "exec" "bake" "test")))) - (add-before 'check 'set-paths - (lambda _ - (setenv "PATH" (string-append (getenv "PATH") ":" - #$output "/bin")) - (setenv "GEM_PATH" (string-append - (getenv "GEM_PATH") ":" - #$output "/lib/ruby/vendor_ruby"))))))) - (native-inputs (list ruby-bake-test ruby-bake-test-external ruby-covered)) - (synopsis "Fast and scalable test runner for Ruby") - (description "This package provides a fast and scalable test runner for Ruby.") - (home-page "https://github.com/ioquatix/sus") - (license license:expat))) - -(define-public ruby-syntax-tree - (package - (name "ruby-syntax-tree") - (version "6.1.1") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/ruby-syntax-tree/syntax_tree") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0356lgvqp22nkqlrgszf7myfdg4arclg278awh34zyby1cx6hb2k")))) - (build-system ruby-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - ;; The tests rely on the Gem being installed, so move the check - ;; phase after the install phase. - (delete 'check) - (add-after 'install 'check - (lambda* (#:key tests? #:allow-other-keys) - (setenv "GEM_PATH" (string-append - #$output "/lib/ruby/vendor_ruby:" - (getenv "GEM_PATH"))) - (when tests? - (invoke "rake" "test"))))))) - (native-inputs (list ruby-rubocop-ast ruby-simplecov)) - (propagated-inputs (list ruby-prettier-print)) - (synopsis "Fast Ruby parser and formatter") - (description "Syntax Tree is a suite of tools built on top of the internal -CRuby parser. It provides the ability to generate a syntax tree from source, -as well as the tools necessary to inspect and manipulate that syntax tree. It -can be used to build formatters, linters, language servers, and more.") - (home-page "https://github.com/ruby-syntax-tree/syntax_tree") - (license license:expat))) - -(define-public ruby-stringio - (package - (name "ruby-stringio") - (version "3.1.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/ruby/stringio") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1jgi2w5y0z0x9mfapr2pdlag4wvn03fpf5kbai8bscyh8nn79yka")))) - (build-system ruby-build-system) - (native-inputs (list ruby-rake-compiler ruby-test-unit-ruby-core)) - (synopsis "Pseudo `IO` class from and to `String`") - (description "Pseudo `IO` class from and to `String`.") - (home-page "https://github.com/ruby/stringio") - (license license:bsd-2))) - -(define-public ruby-stream - (package - (name "ruby-stream") - (version "0.5.5") - (source (origin - (method url-fetch) - (uri (rubygems-uri "stream" version)) - (sha256 - (base32 - "016m9v81vpj14d8g5ins91zc4pzl7vf5f1gxl7jhfsfy601k7cv2")))) - (build-system ruby-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - (add-before 'check 'remove-version-constraints - (lambda _ - (delete-file "Gemfile.lock")))))) - (native-inputs (list bundler ruby-stringio ruby-webrick ruby-yard)) - (synopsis "Interface for external iterators") - (description "Module Stream defines an interface for external iterators.") - (home-page "https://github.com/monora/stream") - (license license:bsd-2))) - -(define sorbet-version "0.5.10610.20230106174520-1fa668010") - -(define sorbet-monorepo - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/sorbet/sorbet") - (commit sorbet-version))) - (file-name (string-append "sorbet-" sorbet-version "-checkout")) - (sha256 - (base32 - "0f21dl06alxwn6xgdxyrkd58plmmsv04z2bcls9ld4cfzsrs5537")))) - -(define (make-sorbet-gem-source gem) - "Return the source of GEM, a sub-directory." - (computed-file - (string-append "ruby-sorbet-" gem "-" sorbet-version "-checkout") - (with-imported-modules (source-module-closure '((guix build utils))) - #~(begin - (use-modules (guix build utils)) - (copy-recursively (string-append #$sorbet-monorepo - "/gems/sorbet-" #$gem) - #$output))))) - -(define-public ruby-sorbet-runtime - (package - (name "ruby-sorbet-runtime") - (version sorbet-version) - (source (make-sorbet-gem-source "runtime")) - (build-system ruby-build-system) - ;; 25 out of 841 tests currently fail, seemingly due to invalid - ;; assumptions about file names in the build environment (see: - ;; https://github.com/sorbet/sorbet/issues/6650). - (arguments (list #:tests? #f)) - (native-inputs - (list ruby-minitest - ruby-mocha - ruby-rubocop - ruby-rubocop-performance - ruby-concurrent-ruby - ruby-pry - ruby-parser - ruby-subprocess)) - (synopsis "Runtime type checking component for Sorbet") - (description "Sorbet's runtime type checking component. Sorbet is a -powerful type checker for Ruby.") - (home-page "https://sorbet.org") - (license license:asl2.0))) - -(define-public ruby-mustache - (package - (name "ruby-mustache") - (version "1.1.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "mustache" version)) - (sha256 - (base32 "1l0p4wx15mi3wnamfv92ipkia4nsx8qi132c6g51jfdma3fiz2ch")))) - (build-system ruby-build-system) - (native-inputs - `(("ruby-simplecov" ,ruby-simplecov) - ("test-patch" - ,(search-patch "ruby-mustache-1.1.1-fix-race-condition-tests.patch")))) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-tests - (lambda* (#:key inputs #:allow-other-keys) - (invoke "patch" "-p1" "--batch" "-i" - (assoc-ref inputs "test-patch"))))))) - (synopsis "Framework-agnostic way to render logic-free views") - (description - "Mustache is a framework-agnostic way to render logic-free views. -Think of Mustache as a replacement for your views. Instead of views -consisting of ERB or HAML with random helpers and arbitrary logic, -your views are broken into two parts: a Ruby class and an HTML -template.") - (home-page "https://github.com/mustache/mustache") - (license license:expat))) - -(define-public ruby-mustermann - (package - (name "ruby-mustermann") - (version "3.0.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "mustermann" version)) - (sha256 - (base32 - "0rwbq20s2gdh8dljjsgj5s6wqqfmnbclhvv2c2608brv7jm6jdbd")))) - (build-system ruby-build-system) - (arguments - ;; No tests. - '(#:tests? #f)) - (synopsis "Library implementing patterns that behave like regular expressions") - (description "Given a string pattern, Mustermann will turn it into an -object that behaves like a regular expression and has comparable performance -characteristics.") - (home-page "https://github.com/sinatra/mustermann") - (license license:expat))) - -(define-public ruby-prettier-print - (package - (name "ruby-prettier-print") - (version "1.2.1") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/ruby-syntax-tree/prettier_print") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "00cg40jc0il1hpsrpsrqwhsxmx7day9lxp1ksrm08zxzsrz9ykqz")))) - (build-system ruby-build-system) - (native-inputs (list ruby-simplecov)) - (synopsis "Compatible and featureful implementation of @code{prettyprint}") - (description "This package provides a drop-in replacement for the -@code{prettyprint} gem, with more functionality.") - (home-page "https://github.com/ruby-syntax-tree/prettier_print") - (license license:expat))) - -(define-public ruby-html-proofer - (package - (name "ruby-html-proofer") - (version "5.0.3") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/gjtorikian/html-proofer") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "01ksss3ikppc45z2q33bx8bb9785bqlp1rdqascaqg9mhs392adk")))) - (build-system ruby-build-system) - (arguments - (list - ;; Tests require vcr, which is under the Hippocratic license, which is - ;; not a free software license (see: - ;; https://www.gnu.org/licenses/license-list.html#hippocratic). - #:tests? #f - #:phases - #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'relax-requirements - (lambda _ - (substitute* "html-proofer.gemspec" - (("required_ruby_version = \\[\">= 3.1\"") - "required_ruby_version = [\">= 2.6\"")))) - (replace 'replace-git-ls-files - (lambda _ - ;; The html-proofer.gemspec file contains 'all_files = %x(git - ;; ls-files -z).split("\x0")', but the original phase matches on - ;; `git ls-files -z`. - ;; TODO: Improve ruby-build-system patterns on core-updates. - (substitute* "html-proofer.gemspec" - (("git ls-files -z") - "find . -type f -not -regex '.*\\.gem$' -print0 \ -| sort -z | cut -zc3-"))))))) - (propagated-inputs - (list ruby-addressable - ruby-mercenary - ruby-nokogiri - ruby-parallel - ruby-rainbow - ruby-typhoeus - ruby-yell)) - (synopsis "Test your rendered HTML files to make sure they're accurate") - (description - "HTMLProofer is a set of tests to validate your HTML output. These -tests check if your image references are legitimate, if they have alt tags, -if your internal links are working, and so on. It's intended to be an -all-in-one checker for your output.") - (home-page "https://github.com/gjtorikian/html-proofer") - (license license:expat))) - -(define-public ruby-htmlentities - (package - (name "ruby-htmlentities") - (version "4.3.4") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "htmlentities" version)) - (sha256 - (base32 - "1nkklqsn8ir8wizzlakncfv42i32wc0w9hxp00hvdlgjr7376nhj")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda _ - (map (lambda (file) - (invoke "ruby" "-Itest" file)) - (find-files "./test" ".*_test\\.rb"))))))) - (synopsis "Encode and decode (X)HTML entities") - (description - "This package provides a module for encoding and decoding (X)HTML -entities.") - (home-page "https://github.com/threedaymonk/htmlentities") - (license license:expat))) - -;;; FIXME: Currently broken with rack 3, awaiting the merge for -;;; https://github.com/sinatra/sinatra/pull/1857 and a new release. -(define-public ruby-sinatra - (package - (name "ruby-sinatra") - (version "3.0.5") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "sinatra" version)) - (sha256 - (base32 - "1ryfja9yd3fq8n1p5yi3qnd0pjk7bkycmxxmbb1bj0axlr1pdv20")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-mustermann ruby-rack ruby-rack-protection ruby-tilt)) - (synopsis "DSL for quick web applications creation in Ruby") - (description - "Sinatra is a DSL for quickly creating web applications in Ruby with -minimal effort.") - (home-page "https://sinatrarb.com/") - (license license:expat))) - -(define-public ruby-timeout - (package - (name "ruby-timeout") - (version "0.4.3") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/ruby/timeout") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1mw2dwyp2j05fl2gmw8cj132kk145sbxj5i0whpxcnddlc8gw781")))) - (build-system ruby-build-system) - (native-inputs (list ruby-test-unit-ruby-core)) - (synopsis "Timeout library for Ruby") - (description "Timeout provides a way to auto-terminate a potentially -long-running operation if it hasn't finished in a fixed amount of time.") - (home-page "https://github.com/ruby/timeout") - (license (list license:bsd-2)))) - -(define-public ruby-thin - (package - (name "ruby-thin") - (version "1.7.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "thin" version)) - (sha256 - (base32 - "0nagbf9pwy1vg09k6j4xqhbjjzrg5dwzvkn4ffvlj76fsn6vv61f")))) - (build-system ruby-build-system) - (arguments - ;; No tests. - '(#:tests? #f)) - (propagated-inputs - (list ruby-daemons ruby-eventmachine ruby-rack)) - (synopsis "Thin and fast web server for Ruby") - (description "Thin is a Ruby web server that glues together 3 Ruby libraries: -@itemize -@item the Mongrel parser, -@item Event Machine, a network I/O library with high scalability, performance -and stability, -@item Rack, a minimal interface between webservers and Ruby frameworks. -@end itemize\n") - (home-page "https://github.com/macournoyer/thin") - (license license:ruby))) - -(define-public ruby-truthy - (package - (name "ruby-truthy") - (version "1.0.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "truthy" version)) - (sha256 - (base32 - "19silgd65j3qwfk5w891p9wcmzdmi9ddm2kg5zbvvqn2h9lkfzmd")))) - (build-system ruby-build-system) - (arguments (list #:phases #~(modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (substitute* "spec/spec_helper.rb" - (("require 'spec'") - "require 'rspec'")) - (invoke "rspec"))))))) - (native-inputs (list ruby-rspec)) - (synopsis "Object truthiness-related Ruby library") - (description "This library makes it easier to discover the truth values of -various Ruby objects.") - (home-page "https://github.com/ymendel/truthy") - (license license:expat))) - -(define-public ruby-skinny - (package - (name "ruby-skinny") - (version "0.2.4") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "skinny" version)) - (sha256 - (base32 - "1y3yvx88ylgz4d2s1wskjk5rkmrcr15q3ibzp1q88qwzr5y493a9")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f ; No included tests - #:phases - (modify-phases %standard-phases - (add-before 'build 'patch-gemspec - (lambda _ - (substitute* ".gemspec" - (("<eventmachine>.freeze, \\[\\\"~> 1.0.0\"") - "<eventmachine>, [\">= 1.0.0\"") - (("<thin>.freeze, \\[\\\"< 1.7\", ") "<thin>, ["))))))) - (propagated-inputs - (list ruby-eventmachine ruby-thin)) - (synopsis "Simple, upgradable WebSockets for Ruby Thin") - (description "Skinny is a simple, upgradable WebSockets for Ruby, using -the Thin library.") - (home-page "https://github.com/sj26/skinny") - (license license:expat))) - -(define-public ruby-sys-filesystem - (package - (name "ruby-sys-filesystem") - (version "1.3.4") - (source (origin - (method url-fetch) - (uri (rubygems-uri "sys-filesystem" version)) - (sha256 - (base32 - "0mizqnsiagagmracadr16s5na2ks2j3ih1w0f3gp4ssrda6szl01")))) - (build-system ruby-build-system) - (arguments - '(#:phases (modify-phases %standard-phases - (add-before 'check 'set-HOME - (lambda _ - ;; Some tests attempt to stat $HOME. Let them. - (setenv "HOME" "/tmp")))))) - (propagated-inputs - (list ruby-ffi)) - (native-inputs - (list ruby-mkmf-lite)) - (synopsis "Gather file system information") - (description - "The @code{sys-filesystem} library provides a cross-platform interface -for gathering file system information, such as disk space and mount points.") - (home-page "https://github.com/djberg96/sys-filesystem") - (license license:asl2.0))) - -(define-public mailcatcher - (package - (name "mailcatcher") - (version "0.7.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "mailcatcher" version)) - (sha256 - (base32 - "02w1ycyfv7x0sh9799lz7xa65p5qvl5z4pa8a7prb68h2zwkfq0n")))) - (build-system ruby-build-system) - (arguments - ;; Tests require web/assets which is not included in the output. We - ;; might be able to fix this by adding the Git repository to the GEM_PATH - ;; of the tests. See ruby-mysql2. - '(#:tests? #f - #:phases - (modify-phases %standard-phases - (add-before 'build 'patch-gemspec - (lambda _ - (substitute* ".gemspec" - (("<eventmachine>.freeze, \\[\\\"= 1.0.9.1") - "<eventmachine>, [\">= 1.0.9.1") - (("<rack>.freeze, \\[\\\"~> 1.5") "<rack>, [\">= 1.5") - (("<thin>.freeze, \\[\\\"~> 1.5.0") "<thin>, [\">= 1.5.0") - (("<sinatra>.freeze, \\[\\\"~> 1.2") "<sinatra>, [\">= 1.2")))) - (add-before 'build 'loosen-dependency-contraint - (lambda _ - (substitute* "lib/mail_catcher.rb" - (("\"eventmachine\", \"1.0.9.1\"") "\"eventmachine\", \">= 1.0.9.1\"") - (("\"rack\", \"~> 1.5\"") "\"rack\", \">= 1.5\"") - (("\"thin\", \"~> 1.5.0\"") "\"thin\", \">= 1.5.0\"") - (("\"sinatra\", \"~> 1.2\"") "\"sinatra\", \">= 1.2\""))))))) - (inputs - (list ruby-eventmachine - ruby-mail - ruby-rack - ruby-sinatra - ruby-skinny - ruby-sqlite3 - ruby-thin)) - (synopsis "SMTP server which catches messages to display them a browser") - (description - "MailCatcher runs a super simple SMTP server which catches any message -sent to it to display in a web interface. Run mailcatcher, set your favourite -app to deliver to smtp://127.0.0.1:1025 instead of your default SMTP server, -then check out http://127.0.0.1:1080 to see the mail.") - (home-page "https://mailcatcher.me") - (license license:expat))) - -(define-public ruby-backport - (package - (name "ruby-backport") - (version "1.1.2") - (source - (origin - ;; The gem does not include test code, so fetch from the Git repository. - (method git-fetch) - (uri (git-reference - (url "https://github.com/castwide/backport") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "18fpg1n7n2z02ykz9v1x1q0cqa2lvivf8ygka768s01q1r9wfwv2")))) - (build-system ruby-build-system) - (arguments - `(#:test-target "spec")) - (native-inputs - (list bundler ruby-rspec)) - (inputs - (list ruby-simplecov)) - (synopsis "Pure Ruby library for event-driven IO") - (description - "This package provides a pure Ruby library for event-driven IO.") - (home-page "https://github.com/castwide/backport") - (license license:expat))) - -(define-public ruby-json-schema - (package - (name "ruby-json-schema") - (version "2.8.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "json-schema" version)) - (sha256 - (base32 - "1yv5lfmr2nzd14af498xqd5p89f3g080q8wk0klr3vxgypsikkb5")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f ; no tests - #:phases - (modify-phases %standard-phases - (replace 'build - (lambda _ - (invoke "gem" "build" ".gemspec")))))) - (propagated-inputs - (list ruby-addressable)) - (synopsis "Ruby JSON Schema Validator") - (description "This library provides Ruby with an interface for validating -JSON objects against a JSON schema conforming to JSON Schema Draft 4. Legacy -support for JSON Schema Draft 3, JSON Schema Draft 2, and JSON Schema Draft 1 -is also included.") - (home-page "https://github.com/ruby-json-schema/json-schema") - (license license:expat))) - -(define-public swagger-diff - (package - (name "swagger-diff") - (version "2.0.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "swagger-diff" version)) - (sha256 - (base32 - "18kbrijkafs3vfsbaqz0cqfj7jrz3aj8xr4fgn5if63wlximybv2")))) - (build-system ruby-build-system) - (arguments - (list - #:test-target "spec" - #:phases - #~(modify-phases %standard-phases - ;; Don't run or require rubocop, the code linting tool, as this is a - ;; bit unnecessary. - (add-after 'unpack 'dont-run-rubocop - (lambda _ - (substitute* "Rakefile" - ((".*rubocop.*") "") - ((".*RuboCop.*") ""))))))) - (propagated-inputs - (list ruby-json-schema)) - (native-inputs - (list bundler ruby-rspec-core ruby-rspec-expectations)) - (synopsis - "Compare Open API Initiative specification files") - (description - "Swagger::Diff is a utility for comparing two different Open API -Initiative (OAI) specifications (formerly known as Swagger specifications). -It is intended to determine whether a newer API specification is -backwards-compatible with an older API specification.") - (home-page "https://github.com/civisanalytics/swagger-diff") - (license license:bsd-3))) - -(define-public ruby-reverse-markdown - (package - (name "ruby-reverse-markdown") - (version "1.1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "reverse_markdown" version)) - (sha256 - (base32 - "0w7y5n74daajvl9gixr91nh8670d7mkgspkk3ql71m8azq3nffbg")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-nokogiri)) - (native-inputs - (list bundler ruby-rspec ruby-kramdown ruby-simplecov)) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (synopsis "Convert HTML into Markdown") - (description - "This Ruby module allows you to map simple HTML back into -Markdown---e.g., if you want to import existing HTML data in your -application.") - (home-page "https://github.com/xijo/reverse_markdown") - (license license:wtfpl2))) - -(define-public ruby-solargraph - (package - (name "ruby-solargraph") - (version "0.40.3") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "solargraph" version)) - (sha256 - (base32 - "1gf049rm0yvw4r8r5yyi890idbfg8qh0dikqx5prvkh11srl73bz")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-backport - bundler - ruby-benchmark - ruby-e2mmap - ruby-jaro-winkler - ruby-kramdown - ruby-kramdown-parser-gfm - ruby-maruku - ruby-nokogiri - ruby-parser - ruby-reverse-markdown - ruby-rubocop - ruby-thor - ruby-tilt - ruby-yard)) - (native-inputs - (list ruby-rspec ruby-pry ruby-simplecov ruby-webmock)) - ;; FIXME: can't figure out how to run the tests properly: - - ;; An error occurred while loading spec_helper. - ;; Failure/Error: return gem_original_require(path) - ;; LoadError: - ;; cannot load such file -- spec_helper - (arguments - '(#:tests? #f - #:phases - (modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (synopsis - "IDE tools for code completion, inline documentation, and static analysis") - (description - "Solargraph provides a comprehensive suite of tools for Ruby -programming: intellisense, diagnostics, inline documentation, and type -checking.") - (home-page "https://solargraph.org/") - (license license:expat))) - -(define-public ruby-wayback-machine-downloader - (package - (name "ruby-wayback-machine-downloader") - (version "2.2.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri - "wayback_machine_downloader" - version)) - (sha256 - (base32 - "12kb1qmvmmsaihqab1prn6cmynkn6cgb4vf41mgv22wkcgv5wgk2")))) - (build-system ruby-build-system) - (arguments - '(#:tests? #f)) ; no tests - (synopsis "Download archived websites from the Wayback Machine") - (description - "Wayback Machine Downloader is a command line tool for downloading -websites from the Internet Archive's Wayback Machine (archive.org). -It allows fine grained control over what to download by specifying -which snapshots to consider and what files to include.") - (home-page - "https://github.com/hartator/wayback-machine-downloader") - (license license:expat))) - -(define-public ruby-zeitwerk - (package - (name "ruby-zeitwerk") - (version "2.7.1") - (source - (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/fxn/zeitwerk") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "19qmcdpbh4bl878zd1w19064yjkpb8sxaydcasqfa7p8cfg3hnsr")))) - (build-system ruby-build-system) - (native-inputs - (list ruby-minitest - ruby-minitest-focus - ruby-minitest-proveit - ruby-minitest-reporters - ruby-warning)) - (synopsis "Efficient and thread-safe code loader for Ruby") - (description - "Zeitwerk implements constant autoloading with Ruby semantics. Each gem -and application may have their own independent autoloader, with its own -configuration, inflector, and logger. Supports autoloading, reloading, and -eager loading.") - (home-page "https://github.com/fxn/zeitwerk") - (license license:expat))) - -(define-public ruby-warning - (package - (name "ruby-warning") - (version "1.5.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "warning" version)) - (sha256 - (base32 "0lwcf7fsz1sda1fdbqq1i4q9kzg4f5vwrzgfg1vpa1hcxagw84hg")))) - (build-system ruby-build-system) - (arguments '(#:tests? #f)) ; No tests bundled. - (synopsis "Custom processing for warnings") - (description - "This package adds custom processing for warnings for Ruby, including the -ability to ignore specific warning messages, ignore warnings in specific -files/directories, include backtraces with warnings, treat warnings as errors, -deduplicate warnings, and add custom handling for all warnings in specific -files/directories.") - (home-page "https://github.com/jeremyevans/ruby-warning") - (license license:expat))) - -(define-public ruby-wwtd - (package - (name "ruby-wwtd") - (version "1.4.1") - (home-page "https://github.com/grosser/wwtd") - (source (origin - (method git-fetch) - (uri (git-reference - (url home-page) - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0gw7vfnbb41cy67yw82zji3jkhfsgmzcgzaszm99ax77y18wclf2")) - (modules '((guix build utils))) - (snippet - '(begin - ;; Remove bundled library. - (delete-file "spec/rake-12.3.0.gem"))))) - (build-system ruby-build-system) - (arguments - '(;; XXX: Tests need multiple versions of ruby, wants to run - ;; `bundle install`, etc. - #:tests? #f - #:phases (modify-phases %standard-phases - (replace 'replace-git-ls-files - (lambda _ - (substitute* "wwtd.gemspec" - (("git ls-files lib/ bin/`") - "find lib/ bin/ -type f |sort`")))) - (add-before 'check 'remove-version-constraints - (lambda _ - (delete-file "Gemfile.lock"))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (if tests? - (invoke "rspec" "spec/") - (format #t "test suite not run~%"))))))) - (native-inputs - (list ruby-bump ruby-rspec)) - (synopsis "Run @file{.travis.yml} files locally") - (description - "WWTD is a @dfn{Travis Simulator} that lets you run test matrices -defined in @file{.travis.yml} on your local machine, using @code{rvm}, -@code{rbenv}, or @code{chruby} to test different versions of Ruby.") - (license license:expat))) - -(define-public ruby-rugged - ;; The last release is old and doesn't build anymore (see: - ;; https://github.com/libgit2/rugged/issues/951). - (let ((commit "6379f23cedd5f527cf6a5c229627e366b590a22d") - (revision "0")) - (package - (name "ruby-rugged") - (version (git-version "1.6.2" revision commit)) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/libgit2/rugged") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0yac7vm0l2jsdsxf2k7xbny4iyzsy8fhiy2g5sphhffp7xgynny8")))) - (build-system ruby-build-system) - (arguments - (list #:gem-flags - #~(list "--" "--use-system-libraries") - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'adjust-extconf.rb - (lambda _ - ;; Neither using --with-git2-dir=$prefix nor providing - ;; pkg-config allows locating the libgit2 prefix (see: - ;; https://github.com/libgit2/rugged/issues/955). - (substitute* "ext/rugged/extconf.rb" - (("LIBGIT2_DIR = File.join.*'vendor', 'libgit2'.*") - (format #f "LIBGIT2_DIR = ~s~%" - #$(this-package-input "libgit2")))))) - (delete 'check) ;moved after the install phase - (add-after 'install 'check - (assoc-ref %standard-phases 'check)) - (add-before 'check 'set-GEM_PATH - (lambda _ - (setenv "GEM_PATH" (string-append - (getenv "GEM_PATH") ":" - #$output "/lib/ruby/vendor_ruby")))) - (add-before 'check 'disable-problematic-tests - (lambda _ - (with-directory-excursion "test" - (for-each delete-file - ;; These tests require an actual libgit2 git - ;; repository checkout. - '("blame_test.rb" - "blob_test.rb" - "cherrypick_test.rb" - "config_test.rb" - "commit_test.rb" - "diff_test.rb" - "index_test.rb" - "merge_test.rb" - "note_test.rb" - "object_test.rb" - "patch_test.rb" - "rebase_test.rb" - "reference_test.rb" - "remote_test.rb" - "repo_apply_test.rb" - "repo_ignore_test.rb" - "repo_pack_test.rb" - "repo_reset_test.rb" - "repo_test.rb" - "revert_test.rb" - "settings_test.rb" - "status_test.rb" - "submodule_test.rb" - "tag_test.rb" - "tree_test.rb" - "walker_test.rb")) - (delete-file-recursively "online"))))))) - (native-inputs (list git-minimal/pinned ruby-rake-compiler)) - (inputs (list libgit2)) - (synopsis "Ruby bindings to the libgit2 linkable C Git library") - (description "Rugged is a library for accessing libgit2 in Ruby. It gives -you the speed and portability of libgit2 with the beauty of the Ruby -language.") - (home-page "https://www.rubydoc.info/gems/rugged") - (license license:expat)))) - -(define-public ruby-yell - (package - (name "ruby-yell") - (version "2.2.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "yell" version)) - (sha256 - (base32 - "1g16kcdhdfvczn7x81jiq6afg3bdxmb73skqjyjlkp5nqcy6y5hx")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda _ - (invoke "rake" "examples")))))) ; there is no test target. - (synopsis - "Extensible logging library for Ruby") - (description - "Yell is a comprehensive logging replacement for Ruby. It defines -multiple adapters, various log level combinations and message formatting -options.") - (home-page "https://github.com/rudionrails/yell") - (license license:expat))) - -(define-public ruby-e2mmap - (package - (name "ruby-e2mmap") - (version "0.1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "e2mmap" version)) - (sha256 - (base32 - "0n8gxjb63dck3vrmsdcqqll7xs7f3wk78mw8w0gdk9wp5nx6pvj5")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f)) ;; There is a rakefile but no tests - (synopsis - "Module for defining custom exceptions with specific messages") - (description - "Exception2MessageMapper (e2mmap) is a helper module for easily defining -exceptions with predefined messages.") - (home-page "https://github.com/ruby/e2mmap") - (license license:bsd-2))) - -(define-public ruby-benchmark - (package - (name "ruby-benchmark") - (version "0.4.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "benchmark" version)) - (sha256 - (base32 - "0jl71qcgamm96dzyqk695j24qszhcc7liw74qc83fpjljp2gh4hg")))) - (build-system ruby-build-system) - (synopsis "Performance benchmarking library") - (description "This package provides methods for benchmarking Ruby code, -giving detailed reports on the time taken for each task.") - (home-page "https://github.com/ruby/benchmark") - (license license:bsd-2))) - -(define-public ruby-jekyll-feed - (package - (name "ruby-jekyll-feed") - (version "0.15.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "jekyll-feed" version)) - (sha256 - (base32 - "1zxqkrnix0xiw98531h5ga6h69jhzlx2jh9qhvcl67p8nq3sgza9")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #false)) ;there are none - (propagated-inputs - (list jekyll)) - (synopsis - "Jekyll plugin to generate an Atom feed of your Jekyll posts") - (description - "This package provides a Jekyll plugin to generate an Atom feed -of your Jekyll posts.") - (home-page - "https://github.com/jekyll/jekyll-feed") - (license license:expat))) - -(define-public ruby-jekyll-sitemap - (package - (name "ruby-jekyll-sitemap") - (version "1.4.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "jekyll-sitemap" version)) - (sha256 - (base32 - "0622rwsn5i0m5xcyzdn86l68wgydqwji03lqixdfm1f1xdfqrq0d")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #false)) ;there are none - (propagated-inputs - (list jekyll)) - (synopsis - "Automatically generate a sitemap.xml for your Jekyll site") - (description - "This package provides a Jekyll plugin to silently generate -a sitemaps.org compliant sitemap for your Jekyll site.") - (home-page - "https://github.com/jekyll/jekyll-sitemap") - (license license:expat))) - -(define-public ruby-jekyll-seo-tag - (package - (name "ruby-jekyll-seo-tag") - (version "2.7.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "jekyll-seo-tag" version)) - (sha256 - (base32 - "0fsi75hymk2wswy216fs224p5ycrzjw1kshw1bsl5czhv42wr2w3")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #false)) - (propagated-inputs - (list jekyll)) - (synopsis - "Jekyll plugin to add metadata tags for search engines and social networks") - (description - "This package provides a Jekyll plugin to add metadata tags for search engines -and social networks to better index and display your site's content.") - (home-page - "https://github.com/jekyll/jekyll-seo-tag") - (license license:expat))) - -(define-public ruby-taskjuggler - (package - (name "ruby-taskjuggler") - (version "3.8.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "taskjuggler" version)) - (sha256 - (base32 - "16d5vgz54all8vl3haqy6j69plny3np4kc3wq7wy3xa3i0h7v60z")))) - (build-system ruby-build-system) - (native-inputs (list ruby-rspec tzdata-for-tests)) - (propagated-inputs - (list ruby-mail ruby-term-ansicolor)) - (arguments - '(#:phases (modify-phases %standard-phases - (replace 'replace-git-ls-files - (lambda _ - (substitute* "tasks/rdoc.rake" - (("`git ls-files -- lib`") - "`find lib/ -type f |sort`")))) - (add-before 'check 'tzdir-setup - (lambda* (#:key inputs #:allow-other-keys) - (setenv "TZDIR" - (string-append (assoc-ref inputs "tzdata") - "/share/zoneinfo")))) - (add-before 'check 'delete-test-BatchProcessor - ;; test_BatchProcessor fails with exception: - ;; run> terminated with exception (report_on_exception is true) - (lambda _ - (delete-file "test/test_BatchProcessor.rb")))))) - (synopsis - "Project management command line tool with a domain specific language") - (description - "TaskJuggler (tj3) is a project management tool for project planning and -tracking using a domain specific language; projects are plain text files -written using your favourite text editor. It includes reporting in HTML, CSV -or iCalendar format and an email based status tracking system to send and -receive time sheets from collaborators. - -It covers the complete spectrum of project management tasks from the first -idea to the completion of the project. It assists you during project scoping, -resource assignment, cost and revenue planning, risk and communication -management, status tracking and reporting.") - (home-page "https://taskjuggler.org") - (license license:gpl2))) - -(define-public ruby-cmath - (package - (name "ruby-cmath") - (version "1.0.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "cmath" version)) - (sha256 - (base32 - "1xkz6xyhpkjbdvpdib8450w62rls1mjryz0gzbbnadxkxn82nb8m")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #false)) - (native-inputs - (list bundler ruby-rake-compiler)) - (synopsis "Trigonometric functions for complex numbers") - (description - "This gem is a library that provides trigonometric and transcendental -functions for complex numbers. The functions in this module accept integers, -floating-point numbers or complex numbers as arguments.") - (home-page "https://github.com/ruby/cmath") - (license license:bsd-2))) - -(define-public ruby-sucker-punch - (package - (name "ruby-sucker-punch") - (version "3.1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "sucker_punch" version)) - (sha256 - (base32 "12by9vx8q6l4i56q62k1s1ymaxbpg4rny5zngj5i5h09kyh2yp4p")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'extract-gemspec 'less-strict-dependencies - (lambda _ - (substitute* "sucker_punch.gemspec" - (("1.0.0") "1.0"))))))) - (native-inputs - (list - ruby-pry)) - (propagated-inputs - (list - ruby-concurrent)) - (home-page "https://github.com/brandonhilkert/sucker_punch") - (synopsis "Asynchronous processing library for Ruby") - (description "Sucker Punch is a single-process Ruby asynchronous processing -library. It is perfect for asynchronous processes like emailing, data crunching -or social platform manipulation; and generally recommended for jobs that are -fast and non-mission critical like logs, emails, etc.") - (license license:expat))) - -(define-public ruby-countdownlatch - (package - (name "ruby-countdownlatch") - (version "1.0.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "countdownlatch" version)) - (sha256 - (base32 "1v6pbay6z07fp7yvnba1hmyacbicvmjndd8rn2h1b5rmpcb5s0j3")))) - (build-system ruby-build-system) - (home-page "https://github.com/benlangfeld/countdownlatch") - (synopsis "Thread synchronization aid Ruby") - (description "CountDownLatch is a synchronization aid that allows one or -more threads to wait until a set of operations being performed in other threads -completes.") - (license license:expat))) - -(define-public ruby-value-semantics - (package - (name "ruby-value-semantics") - (version "3.6.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "value_semantics" version)) - (sha256 - (base32 "1vdwai8wf6r1fkvdpyz1vzxm89q7ghjvb3pqpg2kvwibwzd99dnx")))) - (build-system ruby-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rspec"))))))) - (native-inputs - (list - ruby-rspec)) - (home-page "https://github.com/tomdalling/value_semantics") - (synopsis "Ruby gem for making value classes") - (description "ValueSemantics generates modules that provide conventional -value semantics for a given set of attributes. The behaviour is similar to an -immutable Struct class, plus extensible, lightweight validation and coercion.") - (license license:expat))) - -(define-public ruby-promise - (package - (name "ruby-promise") - (version "0.7.4") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "promise.rb" version)) - (sha256 - (base32 "0a819sikcqvhi8hck1y10d1nv2qkjvmmm553626fmrh51h2i089d")))) - (build-system ruby-build-system) - (arguments - `(#:test-target "spec" - #:phases - (modify-phases %standard-phases - (add-after 'extract-gemspec 'less-strict-dependencies - (lambda _ - (substitute* "Rakefile" - (("if Gem.ruby_version.*") "if false\n")) - (substitute* "spec/spec_helper.rb" - ((".*devtools/spec_helper.*") "\n"))))))) - (native-inputs - (list - ruby-rspec - ruby-rspec-its - ruby-awesome-print - ruby-fuubar)) - (home-page "https://github.com/lgierth/promise.rb") - (synopsis "Asynchronous operation library for Ruby") - (description "Promise is a Ruby implementation of the Promises/A+ -specification. It provides 100% mutation coverage, tested on MRI 1.9, 2.0, 2.1, -2.2, Rubinius, and JRuby.") - (license license:unlicense))) - -(define-public ruby-multicodecs - (package - (name "ruby-multicodecs") - (version "0.2.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "multicodecs" version)) - (sha256 - (base32 "0drq267di57l9zqw6zvqqimilz42rbc8z7392dwkk8wslq30s7v8")))) - (build-system ruby-build-system) - (home-page "https://github.com/SleeplessByte/ruby-multicodec") - (synopsis "Ruby implementation of multiformats/multicodec") - (description "Multicodecs is the ruby implementation of -multiformats/multicodec, a canonical table of of codecs used by various -multiformats.") - (license license:expat))) - -(define-public ruby-multihashes - (package - (name "ruby-multihashes") - (version "0.2.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "multihashes" version)) - (sha256 - (base32 "17wiyy3fiv8rpgdv9ca01yncsmaaf8yg15bg18wc7m9frss1vgqg")))) - (build-system ruby-build-system) - (propagated-inputs - (list - ruby-multicodecs)) - (home-page "https://github.com/multiformats/ruby-multihash") - (synopsis "Multihash implementation for Ruby") - (description "Multihashes provides a simple, low-level multihash -implementation for Ruby. A multihash is a digest with an embedded hash function -code") - (license license:expat))) - -(define-public ruby-lazy-object - (package - (name "ruby-lazy-object") - (version "0.0.3") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "lazy_object" version)) - (sha256 - (base32 "08px15lahc28ik9smvw1hgamf792gd6gq0s4k94yq1h7jq25wjn8")))) - (build-system ruby-build-system) - (arguments - `(#:test-target "spec")) - (home-page "https://github.com/HornsAndHooves/lazy_object") - (synopsis "Object wrapper that forwards all calls to the reference object") - (description "LazyObject is an object wrapper that forwards all calls to the -reference object. This object is not created until the first method dispatch.") - (license license:expat))) - -(define-public ruby-citrus - (package - (name "ruby-citrus") - (version "3.0.2") - (source - (origin - (method git-fetch) - ;; Download from GitHub because the rubygems version does not contain - ;; files needed for tests. - (uri (git-reference - (url "https://github.com/mjackson/citrus") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "197wrgqrddgm1xs3yvjvd8vkvil4h4mdrcp16jmd4b57rxrrr769")))) - (build-system ruby-build-system) - (home-page "https://mjackson.github.io/citrus/") - (synopsis "Parsing Expressions for Ruby") - (description "Citrus is a parsing library for Ruby that combines the -expressiveness of the language with the parsing expressions.") - (license license:expat))) - -(define-public ruby-cbor - (package - (name "ruby-cbor") - (version "0.5.9.6") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "cbor" version)) - (sha256 - (base32 "0511idr8xps9625nh3kxr68sdy6l3xy2kcz7r57g47fxb1v18jj3")))) - (build-system ruby-build-system) - (arguments - `(#:test-target "spec")) - (native-inputs - (list - ruby-rspec - ruby-rake-compiler - ruby-yard)) - (home-page "https://cbor.io/") - (synopsis "Concise Binary Object Representation") - (description "CBOR is a library for the -@acronym{CBOR, Concise Binary Object Representation} format, based on -Sadayuki Furuhashi's MessagePack library.") - (license license:asl2.0))) - -(define-public ruby-gem-release - (package - (name "ruby-gem-release") - (version "2.2.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "gem-release" version)) - (sha256 - (base32 "108rrfaiayi14zrqbb6z0cbwcxh8n15am5ry2a86v7c8c3niysq9")))) - (build-system ruby-build-system) - (arguments - ;; No rakefile - `(#:tests? #f)) - (home-page "https://github.com/svenfuchs/gem-release") - (synopsis "Ruby gem plugin for release management") - (description "GemRelease is a gem plugin that aims at making gem development -easier by automating repetitive work based on conventions, configuration, and -templates.") - (license license:expat))) - -(define-public ruby-base32 - (package - (name "ruby-base32") - (version "0.3.4") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "base32" version)) - (sha256 - (base32 "1fjs0l3c5g9qxwp43kcnhc45slx29yjb6m6jxbb2x1krgjmi166b")))) - (build-system ruby-build-system) - (native-inputs - (list - ruby-gem-release)) - (home-page "https://github.com/stesla/base32") - (synopsis "Ruby extension for base32 encoding and decoding") - (description "Base32 is a library which provides base32 decoding and -encoding.") - (license license:expat))) - -(define-public ruby-dhall - (package - (name "ruby-dhall") - (version "0.5.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "dhall" version)) - (sha256 - (base32 "09wcq8xc1ynld04r2f332bx8cn7rjc4afaq8hm1dr2fc35jlpn6m")))) - (build-system ruby-build-system) - (arguments - ;; No test in gem archive - `(#:tests? #f)) - (propagated-inputs - (list - ruby-base32 - ruby-cbor - ruby-citrus - ruby-lazy-object - ruby-multihashes - ruby-promise - ruby-value-semantics)) - (home-page "https://git.sr.ht/~singpolyma/dhall-ruby") - (synopsis "Ruby implementation of the Dhall configuration language") - (description "Dhall.rb is a Ruby implementation of the Dhall configuration -language. Dhall is a memory safe and non-Turing-complete configuration -language.") - (license license:gpl3+))) - -(define-public ruby-money - (package - (name "ruby-money") - (version "6.16.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "money" version)) - (sha256 - (base32 "0jkmsj5ymadik7bvl670bqwmvhsdyv7hjr8gq9z293hq35gnyiyg")))) - (build-system ruby-build-system) - (arguments - ;; No rakefile. - `(#:tests? #f)) - (propagated-inputs - (list - ruby-i18n)) - (home-page "https://rubymoney.github.io/money/") - (synopsis "Currency conversion library for Ruby") - (description "RubyMoney provides a library for dealing with money and -currency conversion. Its features are: -@itemize -@item -Provides a Money class which encapsulates all information about a certain -amount of money, such as its value and its currency. -@item -Provides a Money::Currency class which encapsulates all information about a -monetary unit. -@item -Represents monetary values as integers, in cents; so avoids floating point -rounding errors. -@item -Represents currency as Money::Currency instances providing a high level of -flexibility. -@item Provides APIs for exchanging money from one currency to another. -@end itemize") - (license license:expat))) - -(define-public ruby-monetize - (package - (name "ruby-monetize") - (version "1.11.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "monetize" version)) - (sha256 - (base32 "0cna2myxdbwfq0gn6k2hgrh368dq7wld3jklm96443ysykd0difn")))) - (build-system ruby-build-system) - (arguments - `(#:test-target "spec")) - (native-inputs - (list - ruby-rspec)) - (propagated-inputs - (list - ruby-money)) - (home-page "https://github.com/RubyMoney/monetize") - (synopsis "Convert various objects into Money objects") - (description "Monetize provides a library for converting various objects -into Money objects.") - (license license:expat))) - -(define-public ruby-money-open-exchange-rates - (package - (name "ruby-money-open-exchange-rates") - (version "1.4.0") - (source - (origin - (method git-fetch) - ;; Download from GitHub because the rubygems version does not contain - ;; Rakefile. - (uri (git-reference - (url "https://github.com/spk/money-open-exchange-rates") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "11xwqli8snr19k48yh8h77sal5vxd4snzq9gxg08v61f0574m3gw")))) - (build-system ruby-build-system) - (native-inputs - (list - ruby-minitest - ruby-mocha - ruby-monetize - ruby-rake - ruby-rubocop - ruby-timecop - ruby-webmock)) - (propagated-inputs - (list - ruby-money)) - (home-page "https://spk.github.io/money-open-exchange-rates/") - (synopsis "Money open exchange rates for Ruby") - (description "This package provides a gem that calculates the exchange rate -using published rates from open-exchange-rates. Compatible with the money gem.") - (license license:expat))) - -(define-public ruby-roda - (package - (name "ruby-roda") - (version "3.57.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "roda" version)) - (sha256 - (base32 "0nkfxnbcfnriywvx9kpamp850cwjmqv8ssajc95d0aiyjr4kdrfy")))) - (build-system ruby-build-system) - (arguments - ;; No rakefile - `(#:tests? #f)) - (propagated-inputs (list ruby-rack)) - (home-page "https://roda.jeremyevans.net") - (synopsis "Routing Tree Web Toolkit") - (description "Roda is a routing tree web toolkit, designed for building fast -and maintainable web applications in ruby.") - (license license:expat))) - -(define-public ruby-nori - (package - (name "ruby-nori") - (version "2.6.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "nori" version)) - (sha256 - (base32 "066wc774a2zp4vrq3k7k8p0fhv30ymqmxma1jj7yg5735zls8agn")))) - (build-system ruby-build-system) - (arguments - ;; Tests require too old version of rspec - `(#:tests? #f)) - (native-inputs - (list ruby-nokogiri - ruby-rake - ruby-rspec)) - (home-page "https://github.com/savonrb/nori") - (synopsis "XML to Hash translator") - (description "Nori is a simple XML parsing ripped from Crack which in-turn -ripped from Merb. It supports pluggable parsers and ships with both REXML and -Nokogiri implementations.") - (license license:expat))) - -;; This package is deprecated per upstream and should be phased out. -(define-public ruby-faraday-middleware - (package - (name "ruby-faraday-middleware") - (version "1.2.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "faraday_middleware" version)) - (sha256 - (base32 "1bw8mfh4yin2xk7138rg3fhb2p5g2dlmdma88k82psah9mbmvlfy")))) - (build-system ruby-build-system) - (arguments `(#:tests? #f)) - (propagated-inputs (list ruby-faraday)) - (home-page "https://github.com/lostisland/faraday_middleware") - (synopsis "Various middleware for Faraday") - (description "Faraday_Middleware is a collection of middleware for the -Faraday-based API wrappers.") - (license license:expat))) - -(define-public ruby-faraday-multipart - (package - (name "ruby-faraday-multipart") - (version "1.0.4") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/lostisland/faraday-multipart") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0ywxhff40a688n50lxrn4d8y096l8sbrwp1jfz4zd3kdiiygclka")))) - (build-system ruby-build-system) - (arguments (list #:test-target "spec")) - (native-inputs (list ruby-faraday ruby-multipart-parser ruby-rspec)) - (propagated-inputs (list ruby-multipart-post)) - (synopsis "Multipart-post requests extension for Faraday") - (description "This Ruby gem extends Faraday to perform multipart-post -requests.") - (home-page "https://github.com/lostisland/faraday-multipart") - (license license:expat))) - -(define-public ruby-bandwidth-iris - (package - (name "ruby-bandwidth-iris") - (version "7.0.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "ruby-bandwidth-iris" version)) - (sha256 - (base32 "131c4jhyvnrwbhizkks17fi9g85cwsq5f1p8zi408zyf63n7230d")))) - (build-system ruby-build-system) - (arguments - ;; XXX: Tests don't require helper for some reason, so all fail. - `(#:tests? #f)) - (native-inputs - (list ruby-rspec - ruby-yard)) - (propagated-inputs - (list ruby-activesupport - ruby-builder - ruby-faraday - ruby-faraday-middleware - ruby-nori)) - (home-page "https://github.com/Bandwidth/ruby-bandwidth-iris") - (synopsis "Gem for integrating to Bandwidth's Iris API") - (description "Bandwidth IRIS is a Ruby SDK for Bandwidth Phone Number -Dashboard. It is a Ruby Client library for IRIS / BBS API.") - (license license:expat))) - -(define-public ruby-securerandom - (package - (name "ruby-securerandom") - (version "0.4.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "securerandom" version)) - (sha256 - (base32 "1cd0iriqfsf1z91qg271sm88xjnfd92b832z49p1nd542ka96lfc")))) - (build-system ruby-build-system) - (arguments '(#:tests? #f)) ; No tests found. - (synopsis "Interface for secure random number generator") - (description "This package provides a Ruby interface for secure random -number generators.") - (home-page "https://github.com/ruby/securerandom") - (license (list license:bsd-2)))) - -(define-public ruby-selenium-webdriver - (package - (name "ruby-selenium-webdriver") - (version "4.22.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "selenium-webdriver" version)) - (sha256 - (base32 - "0rjxlivsh32xvjq78p1m1sr366aa04wms4hwb2r187ygrnmp0hv4")))) - (build-system ruby-build-system) - ;; FIXME: The gem release lacks test files, and the git checkout lacks - ;; JavaScript source that is generated using Bazel, which isn't available - ;; in Guix yet, so disable the test suite for now. - (arguments (list #:tests? #f)) - (propagated-inputs (list ruby-base64 - ruby-rexml - ruby-rubyzip - ruby-websocket)) - (synopsis "Selenium browser automation bindings for Ruby") - (description "Selenium implements the W3C WebDriver protocol to automate -popular browsers. It aims to mimic the behaviour of a real user as it -interacts with the application's HTML. It's primarily intended for web -application testing, but any web-based task can be automated. This package -provides the Ruby bindings of Selenium.") - (home-page "https://www.selenium.dev/") - (license license:asl2.0))) - -(define-public ruby-sentry-core - (package - (name "ruby-sentry-core") - (version "5.3.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "sentry-ruby-core" version)) - (sha256 - (base32 "141mrw8wghhsjvln9m6ld3hap3xc5v901jjiz007xywy25725hyd")))) - (build-system ruby-build-system) - (arguments - ;; No rakefile in gem. - `(#:tests? #f)) - (propagated-inputs - (list ruby-concurrent - ruby-faraday)) - (home-page "https://sentry.io/for/ruby/") - (synopsis "Client interface for the Sentry error logger") - (description "Sentry-Core provides a gem that provides a client -interface for the Sentry error logger.") - (license license:expat))) - -(define-public ruby-sentry - (package - (name "ruby-sentry") - (version "5.3.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "sentry-ruby" version)) - (sha256 - (base32 "0by9mvw8rklzpyx59vfija8h3ssfvxvf5nbqxfmygfy6lm1vdngz")))) - (build-system ruby-build-system) - (arguments - ;; No rakefile in gem - `(#:tests? #f)) - (propagated-inputs - (list ruby-concurrent - ruby-faraday - ruby-sentry-core)) - (home-page "https://sentry.io/for/ruby/") - (synopsis "Client interface for the Sentry error logger") - (description "Sentry provides a gem that provides a client -interface for the Sentry error logger.") - (license license:expat))) - -(define-public ruby-webrick - (package - (name "ruby-webrick") - (version "1.8.1") - (source (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/ruby/webrick") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1xb0mk3cghdir65nmj0mblprbf21blli7267b6yyvxclh307yp6s")))) - (build-system ruby-build-system) - (arguments - (list #:phases - #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'delete-problematic-tests - (lambda _ - ;; The httresponse tests fail for - ;; unknown reasons (see: - ;; https://github.com/ruby/webrick/issues/112). - (delete-file "test/webrick/test_httpresponse.rb")))))) - (home-page "https://github.com/ruby/webrick") - (synopsis "HTTP server toolkit") - (description "WEBrick is an HTTP server toolkit that can be configured as an -HTTPS server, a proxy server, and a virtual-host server.") - (license license:bsd-2))) - -(define-public ruby-websocket - (let ((commit "950e416a19a76c7e6a673a7e5baa6283476dbec1") - (revision "1")) - (package - (name "ruby-websocket") - (version (git-version "1.2.9" revision commit)) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/imanel/websocket-ruby") - (commit commit))) - (sha256 - (base32 - "1i6r0glpxy47zdf76aqgcpjgcgydla0733hfdhp628pmrinnkgwv")) - (file-name (git-file-name name version)))) - (build-system ruby-build-system) - (arguments (list #:test-target "spec" - #:phases #~(modify-phases %standard-phases - (add-after 'unpack 'disable-rubocop - (lambda _ - (substitute* "Rakefile" - (("require 'rubocop/rake_task'") "") - (("RuboCop::RakeTask.new") ""))))))) - (native-inputs - (list ruby-rspec - ruby-webrick)) - (synopsis "WebSocket protocol Ruby library") - (description "This package provides a Ruby library to handle the WebSocket -protocol.") - (home-page "https://github.com/imanel/websocket-ruby") - (license license:expat)))) - -(define-public ruby-braintree - (package - (name "ruby-braintree") - (version "4.12.0") - (source - (origin - (method git-fetch) ;for tests - (uri (git-reference - (url "https://github.com/braintree/braintree_ruby") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 "0gfgkymy3655drwgs42bj9ap9qib1l30sajxmypmp6s75m9w3gsh")))) - (build-system ruby-build-system) - (arguments - (list - #:test-target "test:unit" - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'disable-rubocop - (lambda _ - (substitute* "Rakefile" - (("sh \"rubocop\"") "")))) - (add-after 'unpack 'relax-requirements - (lambda _ - (substitute* "Gemfile" - (("gem \"pry\".*") "gem 'pry'\n") - (("gem \"rake\".*") "gem 'rake'\n") - (("gem \"libxml-ruby\", \"3.2.0\"") - "gem \"libxml-ruby\", \"~> 3.0.0\"") - (("gem \"rspec\", \"3.9.0\"") - "gem \"rspec\", \">= 3.9.0\"") - (("gem \"webrick\", \"~>1.7.0\"") - "gem \"webrick\", \">=1.7.0\"") - ((".*gem \"rubocop\".*") "") - ((".*gem \"rspec_junit_formatter\".*") ""))))))) - (native-inputs - (list ruby-libxml - ruby-pry - ruby-rake - ruby-rspec - ruby-webrick)) - (propagated-inputs - (list ruby-builder - ruby-rexml)) - (home-page "https://www.braintreepayments.com/") - (synopsis "Integration access to the Braintree Gateway") - (description "Braintree provides resources and tools for developers to -integrate Braintree's global payments platform.") - (license license:expat))) - -(define-public ruby-niceogiri - (package - (name "ruby-niceogiri") - (version "1.1.2") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "niceogiri" version)) - (sha256 - (base32 "1ha93211bc9cvh23s9w89zz7rq8irpf64ccd9arvg8v1sxg2798a")))) - (build-system ruby-build-system) - (arguments - `(#:test-target "spec" - #:phases - (modify-phases %standard-phases - (add-after 'extract-gemspec 'less-strict-dependencies - (lambda _ - (substitute* "niceogiri.gemspec" - (("2\\.7") "3.8") ;rspec - ((".*dependency.*bundler.*") "\n") - ((".*dependency.*guard-rspec.*") "\n"))))))) - (native-inputs - (list ruby-rspec - ruby-yard)) - (propagated-inputs (list ruby-nokogiri)) - (home-page "https://github.com/benlangfeld/Niceogiri") - (synopsis "Supplement for Nokogiri") - (description "Niceogiri provides wrappers and helpers for XML manipulation -using Nokogiri.") - (license license:expat))) - -(define-public ruby-blather - (package - (name "ruby-blather") - (version "2.0.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "blather" version)) - (sha256 - (base32 "05ry2x835fj4pzk61282pcz86n018cr39zbgwbi213md74i90s7c")))) - (build-system ruby-build-system) - (arguments - ;; XXX: Tests require too old version of rspec. - `(#:tests? #f)) - (native-inputs - (list ruby-countdownlatch - ruby-mocha - ruby-rb-fsevent - ruby-rspec - ruby-yard)) - (propagated-inputs - (list ruby-activesupport - ruby-eventmachine - ruby-niceogiri - ruby-nokogiri - ruby-sucker-punch)) - (home-page "https://github.com/adhearsion/blather") - (synopsis "XMPP Domain Specific Language for Ruby") - (description "Blather is a XMPP DSL for Ruby written on top of EventMachine -and Nokogiri.") - (license license:expat))) - -(define-public ruby-wapiti - (package - (name "ruby-wapiti") - (version "2.1.0") - ;; the gem archive lacks tests - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/inukshuk/wapiti-ruby") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1273dqvn6flq2qv9qbp104rgc7zp1gqx4096s0v0z5f0qnhzc7d6")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-builder - ruby-rexml)) - (native-inputs - (list ruby-pry - ruby-rake-compiler - ruby-rspec - ruby-simplecov)) - (arguments - (list - #:test-target "spec" - #:phases - #~(modify-phases %standard-phases - (add-after 'replace-git-ls-files 'replace-another-git-ls-files - (lambda args - (substitute* "wapiti.gemspec" - (("`git ls-files spec`") - "`find spec -type f | sort`")))) - (add-before 'build 'compile - (lambda args - (invoke "rake" "compile")))))) - (home-page "https://github.com/inukshuk/wapiti-ruby") - (synopsis "Wicked fast Conditional Random Fields for Ruby") - (description - "The Wapiti-Ruby gem provides a wicked fast linear-chain @acronym{CRF, -Conditional Random Fields} API for sequence segmentation and labelling. It is -based on the codebase of @url{https://wapiti.limsi.fr, Wapiti}.") - (license license:bsd-2))) - -(define-public ruby-namae - (package - (name "ruby-namae") - (version "1.1.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "namae" version)) - (sha256 - (base32 - "1j3nl1klkx3gymrdxfc1hlq4a8qlvhhl9aj5v1v08b9fz27sky0l")))) - (build-system ruby-build-system) - (native-inputs - (list ruby-cucumber - ruby-rspec - ruby-simplecov)) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'allow-newer-cucumber - (lambda args - (substitute* "Gemfile" - (("'cucumber', '[^']*'") - "'cucumber'")))) - (replace 'check - ;; Avoid 'rake' so we don't need jeweler. - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (apply invoke - "rspec" - (find-files "spec" "_spec\\.rb$")))))))) - (home-page "https://github.com/berkmancenter/namae") - (synopsis "Parser for human names") - (description - "Namae (名前) is a parser for human names. It recognizes personal names -of various cultural backgrounds and tries to split them into their component -parts (e.g., given and family names, honorifics etc.).") - (license (list license:bsd-2 license:agpl3+)))) - -(define-public ruby-latex-decode - (package - (name "ruby-latex-decode") - (version "0.4.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/inukshuk/latex-decode") - (commit (string-append "v" version)))) - (sha256 - (base32 - "1f5j67ayd04pjkmzvn0hk7cr8yqvn0gyg9ns6a0vhzj2gwna9ihy")) - (file-name (git-file-name name version)))) - (build-system ruby-build-system) - (native-inputs - (list ruby-cucumber - ruby-rspec)) - (arguments - (list - #:test-target "cucumber" - #:phases - #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'avoid-bundler - (lambda args - (substitute* "Rakefile" - (("require 'bundler" orig) - (string-append "# " orig " # patched for Guix")) - (("Cucumber::Rake::Task\\.new[(]:cucumber[)]" orig) - (string-append orig " do |c|\n" - " c.bundler = false # patched for Guix\n" - "end")) - (("Bundler\\.setup" orig) - (string-append "true # " orig " # patched for Guix"))) - (substitute* "cucumber.yml" - ;; thanks to avoiding bundler, we can't use this option - ((" --publish-quiet") - "")))) - (add-after 'replace-git-ls-files 'replace-another-git-ls-files - (lambda args - (substitute* "latex-decode.gemspec" - (("`git ls-files -- [{]test,spec,features[}]/\\*`") - "`find {test,spec,features} -type f | sort`"))))))) - (home-page "https://github.com/inukshuk/latex-decode") - (synopsis "Convert LaTeX to Unicode") - (description - "This package provides a gem to convert LaTeX input to Unicode. Its -original use was as an input filter for BibTeX-Ruby, but it can be used -independently to decode LaTeX. Many of the patterns used by this Ruby gem are -based on François Charette's equivalent Perl module @code{LaTeX::Decode}.") - (license license:gpl3+))) - -(define-public ruby-link-header - (package - (name "ruby-link-header") - (version "0.0.8") - (source (origin - (method url-fetch) - (uri (rubygems-uri "link_header" version)) - (sha256 - (base32 - "1yamrdq4rywmnpdhbygnkkl9fdy249fg5r851nrkkxr97gj5rihm")))) - (build-system ruby-build-system) - (home-page "https://github.com/asplake/link_header") - (synopsis "Parse and format HTTP @code{Link} headers") - (description - "This gem provides the classes @code{LinkHeader} and -@code{LinkHeader::Link}, which represent HTTP @code{Link} headers conforming -to RFC 5988. Objects can be constructed from and converted to text or a -JSON-friendly @code{Array} representation. They can also be used to generate -corresponding HTML @code{link} elements.") - (license license:expat))) - -(define-public ruby-lint-roller - (package - (name "ruby-lint-roller") - (version "1.1.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "lint_roller" version)) - (sha256 - (base32 "11yc0d84hsnlvx8cpk4cbj6a4dz9pk0r1k29p0n1fz9acddq831c")))) - (build-system ruby-build-system) - (arguments '(#:tests? #f)) ;Circular dependency on ruby-standard. - (native-inputs (list ruby-minitest)) - (synopsis "Specification for linter and formatter rulesets") - (description - "This package provides a plugin specification for Ruby linter and -formatter rulesets.") - (home-page "https://github.com/standardrb/lint_roller") - (license license:expat))) - -(define-public ruby-rdf - (package - (name "ruby-rdf") - (version "3.2.8") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rdf" version)) - (sha256 - (base32 - "1cj0k8ryd8hgbkgqb5swvy6fiygxny3y5bln0my5gv6dbfv3gm20")))) - (build-system ruby-build-system) - (propagated-inputs (list ruby-link-header)) - (arguments - (list #:tests? #f)) ;; tests have many cyclic dependencies - (home-page "https://ruby-rdf.github.io/") - (synopsis "Linked Data for Ruby") - (description - "This gem contains the core algorithms and classes used for doing basic -programming with @acronym{RDF, Resource Description Framework} data, -implemented in pure Ruby.") - (license license:unlicense))) - -(define-public ruby-rdf-vocab - (package - (name "ruby-rdf-vocab") - (version "3.2.1") - (source (origin - (method url-fetch) - (uri (rubygems-uri "rdf-vocab" version)) - (sha256 - (base32 - "1bqmp9rfjvd56ajjz68ij6jla1wjf1fqg7bi4dpnjrsmn4pwaq7l")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-rdf)) - (arguments - (list #:tests? #f)) ;; tests have many cyclic dependencies - (home-page "https://github.com/ruby-rdf/rdf-vocab") - (synopsis "Common RDF vocabularies") - (description - "This gem extends @code{ruby-rdf} with several common @acronym{RDF, -Resource Description Framework} vocabularies.") - (license license:unlicense))) - -(define-public ruby-rdiscount - (package - (name "ruby-rdiscount") - (version "2.2.7") - (source (origin - (method git-fetch) ;for the full test suite - (uri (git-reference - (url "https://github.com/davidfstr/rdiscount") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1lpfxq3gv0dgmnki9jgfnc8n9k4x9vyq9miqdxv6g4kp90qyfifc")))) - (build-system ruby-build-system) - (native-inputs (list perl)) - (synopsis "Discount Markdown Processor for Ruby") - (description "Discount is an implementation of John Gruber's Markdown -markup language in C. It implements all of the language described in the -markdown syntax document and passes the Markdown 1.0 test suite.") - (home-page "https://dafoster.net/projects/rdiscount/") - (license license:bsd-3))) - -(define-public ruby-bibtex-ruby - (package - (name "ruby-bibtex-ruby") - (version "6.0.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "bibtex-ruby" version)) - (sha256 - (base32 - "0vynqa8q9hwghw6sdljr304b5gh11nqzy5nwqqwxmgy7pqyf7qw5")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-latex-decode - ruby-rdf - ruby-rdf-vocab)) - (native-inputs - (list ruby-cucumber - ruby-minitest - ruby-yard)) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'avoid-bundler - (lambda args - (substitute* "Rakefile" - (("require 'bundler" orig) - (string-append "# " orig " # patched for Guix")) - (("Bundler\\.setup" orig) - (string-append "true # " orig " # patched for Guix")))))))) - (home-page "https://github.com/inukshuk/bibtex-ruby") - (synopsis "Rubyist's Swiss Army knife for all things BibTeX") - (description - "BibTeX-Ruby is the Rubyist's Swiss Army knife for all things BibTeX. -It includes a parser for all common BibTeX objects and a sophisticated name -parser that tokenizes correctly formatted names. BibTeX-Ruby recognizes -BibTeX string replacements, joins values containing multiple strings or -variables, supports cross-references, and decodes common LaTeX formatting -instructions to unicode. If you are in a hurry, it also allows for easy -export/conversion to formats such as YAML, JSON, CSL, and XML (BibTeXML).") - (license license:gpl3+))) - -(define-public ruby-unicode-scripts - (package - (name "ruby-unicode-scripts") - (version "1.8.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "unicode-scripts" version)) - (sha256 - (base32 - "0rl6mn908yryhrg8j3mmna54gnrid2nph2kym00lbz6jwdih2a1b")))) - (build-system ruby-build-system) - (native-inputs (list ruby-minitest)) - (arguments (list #:test-target "spec")) - (home-page "https://github.com/janlelis/unicode-scripts") - (synopsis "Unicode script classification library") - (description "This gem provides a simple interface for classifying Ruby -strings using the Unicode @code{Script} and @code{Script_Extensions} -properties.") - (license license:expat))) - -(define-public ruby-citeproc - (package - (name "ruby-citeproc") - (version "1.0.10") - (source (origin - (method url-fetch) - (uri (rubygems-uri "citeproc" version)) - (sha256 - (base32 - "13vl5sjmksk5a8kjcqnjxh7kn9gn1n4f9p1rvqfgsfhs54p0m6l2")))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-namae)) - (arguments - (list #:tests? #f)) ;; tests have a cyclic dependency - (home-page "https://github.com/inukshuk/citeproc") - (synopsis "Interface for Ruby citation processors") - (description - "CiteProc is a citation processor interface and citation data API based -on the @acronym{CSL, Citation Style Language} specifications. To actually -process citations, a dedicated processor engine is required: a pure Ruby -engine is available in the @code{citeproc-ruby} gem.") - (license (list license:agpl3+ license:bsd-2)))) - -(define-public ruby-ed25519 - (package - (name "ruby-ed25519") - (version "1.3.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/RubyCrypto/ed25519") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1jm5w2dyhyrndcx0d02v0gjbzl1abhbx2wkp3gxzwcndghmkz98r")))) - (build-system ruby-build-system) - (arguments - (list - #:test-target "spec" - #:phases - #~(modify-phases %standard-phases - (add-before 'build 'compile - (lambda _ - (invoke "rake" "compile"))) - (add-after 'unpack 'remove-unnecessary-dependencies - (lambda _ - ;; Coveralls relates to a network service, and RuboCop to code - ;; linting and both are unnecessary to run the tests - (substitute* "Gemfile" - ((".*coveralls.*") - "\n") - ((".*rubocop.*") - "\n")) - (substitute* "spec/spec_helper.rb" - (("require \"coveralls\"") - "") - (("Coveralls.wear!") - "")) - (substitute* "Rakefile" - (("require \"rubocop/rake_task\"") - "") - (("RuboCop::RakeTask.new") - ""))))))) - (native-inputs (list ruby-rake-compiler ruby-rspec)) - (synopsis - "Ruby binding to the Ed25519 elliptic curve public-key signature system") - (description - "This package provides a Ruby binding to the Ed25519 elliptic curve -public-key signature system described in -@url{https://www.ietf.org/rfc/rfc8032.txt, RFC 8032}.") - (home-page "https://github.com/RubyCrypto/ed25519") - (license license:expat))) - -(define-public ruby-edtf - (package - (name "ruby-edtf") - (version "3.1.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/inukshuk/edtf-ruby") - (commit (string-append "v" version)))) - (sha256 - (base32 - "18j8xq8zmrn41cs2gpd1i87agi9905asvnjqndky2cqb5zg3q14g")) - (snippet - ;; remove generated file - #~(delete-file "lib/edtf/parser.rb")) - (file-name (git-file-name name version)))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-activesupport)) - (native-inputs - (list ruby-cucumber - ruby-rspec)) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'avoid-bundler - (lambda args - (substitute* "Rakefile" - (("require 'bundler" orig) - (string-append "# " orig " # patched for Guix")) - (("bundle exec racc") - "racc") - (("Cucumber::Rake::Task\\.new[(]:cucumber[)]" orig) - (string-append orig " do |c|\n" - " c.bundler = false # patched for Guix\n" - "end")) - (("Bundler\\.setup" orig) - (string-append "true # " orig " # patched for Guix"))))) - (add-after 'avoid-bundler 'patch-cucumber-options - (lambda args - (substitute* "cucumber.yml" - ;; this option is not supported, at least in our configuration - ((" --publish-quiet") - "")))) - (add-before 'build 'compile - (lambda args - (invoke "rake" "racc"))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "rake"))))))) - (home-page "https://github.com/inukshuk/edtf-ruby") - (synopsis "Ruby implementation of Extended Date/Time Format") - (description - "EDTF-Ruby provides a parser and an API for the @acronym{EDTF, Extended -Date/Time Format} standard, implemented as an extension to Ruby's @code{Date} -class.") - (license license:bsd-2))) - -(define-public ruby-gli - (package - (name "ruby-gli") - (version "2.21.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/davetron5000/gli") - (commit (string-append "v" version)))) - (sha256 - (base32 - "09b1r9hlx4dy2yq036nk7hc2nbswhia6q3na9v11z94yibc8mgja")) - (file-name (git-file-name name version)))) - (build-system ruby-build-system) - (native-inputs - (list ruby-minitest - ruby-rainbow - ruby-rdoc - ruby-sdoc)) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'patch-gemspec-version - (lambda args - (substitute* "gli.gemspec" - ;; this trick fails in our build environment - (("require File\\.join[(]\\[" orig) - (string-append "# patched for Guix # " orig)) - (("s\\.version = GLI::VERSION") - #$(string-append "s.version = '" - (package-version this-package) - "' # patched for Guix"))))) - (add-after 'replace-git-ls-files 'replace-another-git-ls-files - (lambda args - (substitute* "gli.gemspec" - (("`git ls-files -- [{]test,spec,features[}]/\\*`") - "`find {test,spec,features} -type f | sort`")))) - (add-after 'replace-another-git-ls-files 'fix-rubyopt - (lambda args - (substitute* "Rakefile" - (("ENV\\[\"RUBYOPT\"]") - "(ENV['RUBYOPT'] || '')"))))))) - (home-page "https://davetron5000.github.io/gli/") - (synopsis "Git-Like Interface command-line parser") - (description - "GLI allows you to create command-line applications in Ruby with Git-Like -Interfaces: that is, they take subcommands in the style of @command{git} and -@command{gem}. GLI uses a simple domain-specific language, but retains all -the power of the built-in @code{OptionParser}.") - (license license:asl2.0))) - -(define-public ruby-anystyle-data - (package - (name "ruby-anystyle-data") - (version "1.3.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/inukshuk/anystyle-data") - (commit (string-append "v" version)))) - (sha256 - (base32 - "1jh880310m3gjdrk4m8rwwnsf0824zkf26clpr8p64sac2fyy907")) - (snippet - ;; remove pre-built file - #~(delete-file "lib/anystyle/data/dict.txt.gz")) - (patches - (search-patches "ruby-anystyle-data-immutable-install.patch")) - (file-name (git-file-name name version)))) - (build-system ruby-build-system) - (arguments - (list - #:tests? #f ;; there are none - #:modules - `((guix build ruby-build-system) - (guix build utils) - (srfi srfi-26)) - #:phases - #~(modify-phases %standard-phases - (add-after 'replace-git-ls-files 'replace-another-git-ls-files - (lambda args - (substitute* "anystyle-data.gemspec" - (("`git ls-files lib README\\.md LICENSE`\\.split[(][^)]*[)]") - (string-append - "[" - (string-join - (map (cut string-append "\"" <> "\"") - `("README.md" - "LICENSE" - "lib/anystyle/data.rb" - "lib/anystyle/data/dict.txt.gz" - "lib/anystyle/data/setup.rb" - "lib/anystyle/data/version.rb")) - ", ") - "]"))))) - (add-before 'build 'compile-dict - (lambda args - (invoke "rake" "compile")))))) - (home-page "https://anystyle.io") - (synopsis "AnyStyle parser dictionary data") - (description - "This gem provides parser dictionary data for AnyStyle.") - (license license:bsd-2))) - -(define-public ruby-anystyle - (package - (name "ruby-anystyle") - (version "1.4.2") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/inukshuk/anystyle") - (commit (string-append "v" version)))) - (sha256 - (base32 - "0xhy7wj8v7iahikck6vxbdpncaz5w2gb11b32kmvg5ckgi2kz23p")) - (snippet - ;; There is an optional dependency on - ;; <https://github.com/feedbackmine/language_detector>, which - ;; seems like it was intended to be free software, but - ;; doesn't have a clear license statement. Maybe someone can - ;; do more sleuthing, or else find a replacement? See also - ;; <https://github.com/inukshuk/anystyle/issues/186>. For - ;; now, patch it out, but leave a pointer to follow up. - #~(begin - (use-modules (guix build utils)) - (substitute* "Gemfile" - (("gem 'language_detector', github: '[^']*'" orig) - (string-append "# " orig " # unclear license"))) - (substitute* "spec/anystyle/parser_spec.rb" - (("language: 'en'," orig) - (string-append "# " orig " # no lanugage_detector"))))) - (patches - (search-patches - "ruby-anystyle-fix-dictionary-populate.patch")) - (file-name (git-file-name name version)))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-anystyle-data - ruby-bibtex-ruby - ruby-namae - ruby-wapiti)) - (native-inputs - (list ruby-byebug - ruby-citeproc - ruby-edtf - ruby-gdbm - ruby-rspec - ruby-unicode-scripts)) - (arguments - (list - #:test-target "spec" - #:phases - #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'avoid-bundler - (lambda args - (substitute* "Rakefile" - (("require 'bundler" orig) - (string-append "# " orig " # patched for Guix")) - (("Bundler\\.setup" orig) - (string-append "true # " orig " # patched for Guix"))))) - (add-after 'replace-git-ls-files 'replace-another-git-ls-files - (lambda args - (substitute* "anystyle.gemspec" - (("`git ls-files spec`") - "`find spec -type f | sort`")))) - (add-after 'wrap 'populate-dictionaries - (lambda args - ;; We must initialize these files here, or they will never be - ;; usable with the default settings. A more flexible approach - ;; might use something like `Gem.find_files()` or - ;; XDG_DATA_DIRS. - (with-output-to-file "initialize-dictionaries.rb" - (lambda () - (display "\ -require 'anystyle/dictionary' # must come before 'anystyle/data' -require 'anystyle/data' -[:marshal, :gdbm].each do |adapter| - AnyStyle::Dictionary.create({adapter: adapter}).open().close() -end -"))) - (let* ((old-gems (getenv "GEM_PATH")) - (new-gems (string-append #$output - "/lib/ruby/vendor_ruby:" - old-gems))) - (dynamic-wind - (lambda () - (setenv "GEM_PATH" new-gems)) - (lambda () - (invoke "ruby" "initialize-dictionaries.rb")) - (lambda () - (setenv "GEM_PATH" old-gems))))))))) - (home-page "https://anystyle.io") - (synopsis "Fast and smart citation reference parsing (Ruby library)") - (description - "AnyStyle is a very fast and smart parser for academic reference lists -and bibliographies. AnyStyle uses powerful machine learning heuristics based -on Conditional Random Fields and aims to make it easy to train the model with -data that is relevant to your parsing needs. - -This package provides the Ruby module @code{AnyStyle}. AnyStyle can also be -used via the @command{anystyle} command-line utility or a web application, -though the later has not yet been packaged for Guix.") - (license license:bsd-2))) - -(define-public anystyle - (package - (name "anystyle") - (version "1.4.5") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/inukshuk/anystyle-cli") - (commit (string-append "v" version)))) - (sha256 - (base32 - "10jx830mx9vh7rsz87ndvz8w5b5azd9s231vwyb0dqxs921v6qwy")) - (file-name (git-file-name name version)))) - (build-system ruby-build-system) - (propagated-inputs - (list ruby-anystyle - ruby-bibtex-ruby - ruby-gli)) - (native-inputs - (list ruby-gdbm - txt2man)) - (arguments - (list - #:modules - `((guix build ruby-build-system) - (ice-9 popen) - (srfi srfi-1) - (guix build utils)) - #:phases - #~(modify-phases %standard-phases - (add-after 'extract-gemspec 'less-strict-dependencies - (lambda args - (substitute* "anystyle-cli.gemspec" - (("'bibtex-ruby', '[^']*'") - "'bibtex-ruby'")))) - (add-before 'build 'change-default-dictionary-adapter - (lambda args - ;; Since we always have gdbm available, using it will give a - ;; faster startup time, which is particularly worth-while for - ;; a command-line tool. - (substitute* "bin/anystyle" - (("default_value: 'ruby',") - "default_value: 'gdbm', # patched for Guix")))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - ;; There are no tests, but let's use this opportunity to do a - ;; basic test of our own that things run ok. It works especially - ;; well to test this here since we know the 'ruby-anystile' - ;; package is in its final, immutable installed form. - (when tests? - (let ((common - `("require 'anystyle'" - ,(string-append - "pp AnyStyle.parse 'Derrida, J. (1967). L’écriture" - " et la différence (1 éd.). Paris: Éditions du" - " Seuil.'")))) - (for-each - (lambda (lines) - (apply invoke "ruby" - (fold-right (lambda (line lst) - (cons* "-e" line lst)) - '() - lines))) - `(,common - ("require 'anystyle/dictionary'" - "AnyStyle::Dictionary.defaults[:adapter] = :gdbm" - ,@common))))))) - (add-after 'wrap 'check-cli - (lambda* (#:key tests? outputs #:allow-other-keys) - (when tests? - (with-output-to-file "check-cli.in" - (lambda () - (for-each - display - '("Derrida, J. (1967). L’écriture et la différence " - "(1 éd.). Paris: Éditions du Seuil.\n")))) - (invoke (search-input-file outputs "/bin/anystyle") - "parse" - "check-cli.in")))) - (add-after 'wrap 'generate-man-page - ;; generating a man page also tests that the command actually runs - (lambda args - (define (run-with-output-file file command . args) - (format (current-output-port) - "running: ~s\nwith output to: ~s\n" - (cons command args) - file) - (unless (zero? - (with-output-to-file file - (lambda () - (status:exit-val - (close-pipe - (apply open-pipe* OPEN_WRITE command args)))))) - (error "command failed"))) - (let ((anystyle (string-append #$output "/bin/anystyle"))) - (run-with-output-file "intro.txt" - anystyle "--help") - (for-each (lambda (cmd) - (let ((file (string-append cmd ".txt"))) - (run-with-output-file file - anystyle cmd "--help") - ;; indent headings to create subsections - (substitute* file - (("^[A-Z]" orig) - (string-append " " orig))) - ;; generate a section heading - (call-with-output-file - (string-append "section-" file) - (lambda (out) - (format out "\n\n~a COMMAND\n\n" - (string-upcase cmd)))))) - '("check" "find" "parse" "train")) - (substitute* `("intro.txt" - "check.txt" "find.txt" "parse.txt" "train.txt") - ;; format "tag list" for txt2man" - ((" - ") - " ") - ;; restore formatting of the "name" sections - (("(anystyle|check|find|parse|train) ([A-Z])" _ cmd post) - (string-append cmd " - " post))) - (run-with-output-file "anystyle.txt" - "cat" - "intro.txt" - "section-check.txt" "check.txt" - "section-find.txt" "find.txt" - "section-parse.txt" "parse.txt" - "section-train.txt" "train.txt") - (run-with-output-file - "anystyle.1" - "txt2man" - "-v" "General Commands Manual" "-t" "anystyle" "-s" "1" - "-r" #$(string-append "anystyle-cli " - (package-version this-package)) - "-B" "check" "-B" "find" "-B" "parse" "-B" "train" - "anystyle.txt") - (install-file "anystyle.1" - (string-append #$output "/share/man/man1")))))))) - (home-page "https://anystyle.io") - (synopsis "Fast and smart citation reference parsing") - (description - "AnyStyle is a very fast and smart parser for academic reference lists -and bibliographies. AnyStyle uses powerful machine learning heuristics based -on Conditional Random Fields and aims to make it easy to train the model with -data that is relevant to your parsing needs. - -This package provides the @command{anystyle} command-line utility. AnyStyle -can also be used as a Ruby library or as a web application, though the later -has not yet been packaged for Guix.") - (license license:bsd-2) - (properties `((upstream-name . "anystyle-cli"))))) - -(define-public ruby-google-protobuf - (package - (name "ruby-google-protobuf") - (version "3.25.3") - (source (origin - (method url-fetch) - (uri (rubygems-uri "google-protobuf" version)) - (sha256 - (base32 - "1mnxzcq8kmyfb9bkzqnp019d1hx1vprip3yzdkkha6b3qz5rgg9r")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f)) ;; has no tests - (native-inputs (list ruby-rake)) - (synopsis "Protocol Buffers are Google's data interchange format") - (description "This library contains the Ruby extension that implements -Protocol Buffers functionality in Ruby. - -The Ruby extension makes use of generated Ruby code that defines message and -enum types in a Ruby DSL. You may write definitions in this DSL directly, but -we recommend using protoc's Ruby generation support with @code{.proto} files. -The build process in this directory only installs the extension; you need to -install @code{protoc} (in package ruby-grpc-tools) as well to have Ruby code -generation functionality.") - (home-page "https://protobuf.dev") - (license license:bsd-3))) - -(define-public ruby-googleapis-common-protos-types - (package - (name "ruby-googleapis-common-protos-types") - (version "1.13.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "googleapis-common-protos-types" version)) - (sha256 - (base32 - "1zrxnv9s2q39f2nh32x7nbfi8lpwzmmn3ji4adglg8dlfr1xrz16")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f)) ;; has no tests - (propagated-inputs (list ruby-google-protobuf)) - (synopsis "Common protocol buffer types used by Google APIs") - (description "Common protocol buffer types used by Google APIs") - (home-page "https://github.com/googleapis/common-protos-ruby") - (license license:asl2.0))) - -(define-public ruby-grpc - (package - (name "ruby-grpc") - (version "1.62.0") - (source (origin - (method url-fetch) - (uri (rubygems-uri "grpc" version)) - (sha256 - (base32 - "03z8yq0z228g6xxxq6s2mmslpv6psrdmi30dpmhysr4px16d897n")))) - (build-system ruby-build-system) - (arguments - `(#:tests? #f)) ;; has no tests - ;; TODO remove third-party sources (zlib, upb, utf8-range, re2, c-ares, - ;; boringssl-with-bazel, address_sorting, abseil-cpp), see Makefile - (propagated-inputs (list ruby-google-protobuf - ruby-googleapis-common-protos-types)) - (synopsis "GRPC system in Ruby") - (description "GRPC is a high performance, open-source universal RPC -framework. This package provides a ruby interface for it.") - (home-page "https://github.com/grpc/grpc/tree/master/src/ruby") - (license license:asl2.0))) - ;;; ;;; Avoid adding new packages to the end of this file. To reduce the chances ;;; of a merge conflict, place them above by existing packages with similar |