summaryrefslogtreecommitdiff
path: root/gnu/packages
diff options
context:
space:
mode:
authorNicolas Graves <ngraves@ngraves.fr>2025-06-05 03:13:25 +0200
committerAndreas Enge <andreas@enge.fr>2025-06-20 20:40:02 +0200
commit01ad0cf43ea778e59e8fd7ed3cf03d809d920639 (patch)
tree69446c1788b8e9cb203148b5a7f19dd8f7cd9136 /gnu/packages
parent6fe1237ce6b437732d936546048dc256f34b32ad (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')
-rw-r--r--gnu/packages/admin.scm2
-rw-r--r--gnu/packages/backup.scm6
-rw-r--r--gnu/packages/bioinformatics.scm2
-rw-r--r--gnu/packages/ccache.scm6
-rw-r--r--gnu/packages/cluster.scm6
-rw-r--r--gnu/packages/compton.scm6
-rw-r--r--gnu/packages/cryptsetup.scm6
-rw-r--r--gnu/packages/databases.scm2
-rw-r--r--gnu/packages/emacs-xyz.scm2
-rw-r--r--gnu/packages/engineering.scm4
-rw-r--r--gnu/packages/games.scm8
-rw-r--r--gnu/packages/gnome-xyz.scm2
-rw-r--r--gnu/packages/gnome.scm2
-rw-r--r--gnu/packages/groff.scm2
-rw-r--r--gnu/packages/irc.scm3
-rw-r--r--gnu/packages/kde-systemtools.scm1
-rw-r--r--gnu/packages/libffi.scm3
-rw-r--r--gnu/packages/mail.scm2
-rw-r--r--gnu/packages/maths.scm3
-rw-r--r--gnu/packages/mpd.scm2
-rw-r--r--gnu/packages/ntp.scm8
-rw-r--r--gnu/packages/package-management.scm3
-rw-r--r--gnu/packages/password-utils.scm9
-rw-r--r--gnu/packages/plotutils.scm3
-rw-r--r--gnu/packages/protobuf.scm3
-rw-r--r--gnu/packages/radio.scm10
-rw-r--r--gnu/packages/rails.scm2
-rw-r--r--gnu/packages/ruby-check.scm1157
-rw-r--r--gnu/packages/ruby-xyz.scm16764
-rw-r--r--gnu/packages/ruby.scm17767
-rw-r--r--gnu/packages/shellutils.scm2
-rw-r--r--gnu/packages/statistics.scm3
-rw-r--r--gnu/packages/syndication.scm6
-rw-r--r--gnu/packages/task-management.scm4
-rw-r--r--gnu/packages/tex.scm1
-rw-r--r--gnu/packages/text-editors.scm1
-rw-r--r--gnu/packages/version-control.scm6
-rw-r--r--gnu/packages/virtualization.scm2
38 files changed, 18004 insertions, 17817 deletions
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 4e3b1da8823..5baaa4a9222 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -197,6 +197,8 @@
197 #:use-module (gnu packages qt) 197 #:use-module (gnu packages qt)
198 #:use-module (gnu packages readline) 198 #:use-module (gnu packages readline)
199 #:use-module (gnu packages ruby) 199 #:use-module (gnu packages ruby)
200 #:use-module (gnu packages ruby-check)
201 #:use-module (gnu packages ruby-xyz)
200 #:use-module (gnu packages selinux) 202 #:use-module (gnu packages selinux)
201 #:use-module (gnu packages serialization) 203 #:use-module (gnu packages serialization)
202 #:use-module (gnu packages sqlite) 204 #:use-module (gnu packages sqlite)
diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm
index 4a0d5226bd4..db80915c281 100644
--- a/gnu/packages/backup.scm
+++ b/gnu/packages/backup.scm
@@ -102,7 +102,7 @@
102 #:use-module (gnu packages python-xyz) 102 #:use-module (gnu packages python-xyz)
103 #:use-module (gnu packages qt) 103 #:use-module (gnu packages qt)
104 #:use-module (gnu packages rsync) 104 #:use-module (gnu packages rsync)
105 #:use-module (gnu packages ruby) 105 #:use-module (gnu packages ruby-check)
106 #:use-module (gnu packages serialization) 106 #:use-module (gnu packages serialization)
107 #:use-module (gnu packages ssh) 107 #:use-module (gnu packages ssh)
108 #:use-module (gnu packages time) 108 #:use-module (gnu packages time)
@@ -1222,8 +1222,8 @@ interactive mode.")
1222 "bin/mbuffer" 1222 "bin/mbuffer"
1223 "bin/ssh"))))))))) 1223 "bin/ssh")))))))))
1224 (native-inputs 1224 (native-inputs
1225 (if (supported-package? ruby-asciidoctor) 1225 (if (supported-package? ruby-asciidoctor/minimal)
1226 (list ruby-asciidoctor) 1226 (list ruby-asciidoctor/minimal)
1227 '())) 1227 '()))
1228 (inputs (list bash-minimal 1228 (inputs (list bash-minimal
1229 btrfs-progs 1229 btrfs-progs
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index a119a13a6f1..4e289baeed1 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -159,6 +159,8 @@
159 #:use-module (gnu packages rpc) 159 #:use-module (gnu packages rpc)
160 #:use-module (gnu packages rsync) 160 #:use-module (gnu packages rsync)
161 #:use-module (gnu packages ruby) 161 #:use-module (gnu packages ruby)
162 #:use-module (gnu packages ruby-check)
163 #:use-module (gnu packages ruby-xyz)
162 #:use-module (gnu packages serialization) 164 #:use-module (gnu packages serialization)
163 #:use-module (gnu packages shells) 165 #:use-module (gnu packages shells)
164 #:use-module (gnu packages skribilo) 166 #:use-module (gnu packages skribilo)
diff --git a/gnu/packages/ccache.scm b/gnu/packages/ccache.scm
index a1af25df2bf..bc7c6bfb6c2 100644
--- a/gnu/packages/ccache.scm
+++ b/gnu/packages/ccache.scm
@@ -30,7 +30,7 @@
30 #:use-module (gnu packages base) 30 #:use-module (gnu packages base)
31 #:use-module (gnu packages compression) 31 #:use-module (gnu packages compression)
32 #:use-module (gnu packages perl) 32 #:use-module (gnu packages perl)
33 #:use-module (gnu packages ruby)) 33 #:use-module (gnu packages ruby-check))
34 34
35(define-public ccache 35(define-public ccache
36 (package 36 (package
@@ -64,8 +64,8 @@
64 (setenv "HOME" (getenv "TMPDIR"))))))) 64 (setenv "HOME" (getenv "TMPDIR")))))))
65 (native-inputs 65 (native-inputs
66 (append (list perl which) 66 (append (list perl which)
67 (if (supported-package? ruby-asciidoctor) 67 (if (supported-package? ruby-asciidoctor/minimal)
68 (list ruby-asciidoctor) 68 (list ruby-asciidoctor/minimal)
69 '()))) 69 '())))
70 (inputs (list zlib `(,zstd "lib"))) 70 (inputs (list zlib `(,zstd "lib")))
71 (home-page "https://ccache.dev/") 71 (home-page "https://ccache.dev/")
diff --git a/gnu/packages/cluster.scm b/gnu/packages/cluster.scm
index 6d5ea0c3b26..866cfdce5b7 100644
--- a/gnu/packages/cluster.scm
+++ b/gnu/packages/cluster.scm
@@ -37,7 +37,7 @@
37 #:use-module (gnu packages libevent) 37 #:use-module (gnu packages libevent)
38 #:use-module (gnu packages linux) 38 #:use-module (gnu packages linux)
39 #:use-module (gnu packages pkg-config) 39 #:use-module (gnu packages pkg-config)
40 #:use-module (gnu packages ruby) 40 #:use-module (gnu packages ruby-check)
41 #:use-module (gnu packages sphinx) 41 #:use-module (gnu packages sphinx)
42 #:use-module (gnu packages sqlite) 42 #:use-module (gnu packages sqlite)
43 #:use-module (gnu packages texinfo) 43 #:use-module (gnu packages texinfo)
@@ -135,12 +135,12 @@
135 eudev ;just to satisfy a configure check 135 eudev ;just to satisfy a configure check
136 flex) 136 flex)
137 ;; For the documentation. 137 ;; For the documentation.
138 (if (supported-package? ruby-asciidoctor) 138 (if (supported-package? ruby-asciidoctor/minimal)
139 (list docbook-xml 139 (list docbook-xml
140 docbook-xml-4.4 ;used by documentation/ra2refentry.xsl 140 docbook-xml-4.4 ;used by documentation/ra2refentry.xsl
141 docbook-xsl 141 docbook-xsl
142 libxslt ;for xsltproc 142 libxslt ;for xsltproc
143 ruby-asciidoctor) 143 ruby-asciidoctor/minimal)
144 '()))) 144 '())))
145 (home-page "https://www.linbit.com/drbd/") 145 (home-page "https://www.linbit.com/drbd/")
146 (synopsis "Replicate block devices between machines") 146 (synopsis "Replicate block devices between machines")
diff --git a/gnu/packages/compton.scm b/gnu/packages/compton.scm
index 6e8dd5442e8..1d20cf3b274 100644
--- a/gnu/packages/compton.scm
+++ b/gnu/packages/compton.scm
@@ -43,7 +43,7 @@
43 #:use-module (gnu packages xdisorg) 43 #:use-module (gnu packages xdisorg)
44 #:use-module (gnu packages xml) 44 #:use-module (gnu packages xml)
45 #:use-module (gnu packages xorg) 45 #:use-module (gnu packages xorg)
46 #:use-module (gnu packages ruby)) 46 #:use-module (gnu packages ruby-check))
47 47
48(define-public compton 48(define-public compton
49 (let ((upstream-version "0.1_beta2")) 49 (let ((upstream-version "0.1_beta2"))
@@ -146,8 +146,8 @@ performance).
146 (native-inputs 146 (native-inputs
147 (append 147 (append
148 (list pkg-config xorgproto) 148 (list pkg-config xorgproto)
149 (if (supported-package? ruby-asciidoctor) 149 (if (supported-package? ruby-asciidoctor/minimal)
150 (list ruby-asciidoctor) 150 (list ruby-asciidoctor/minimal)
151 '()))) 151 '())))
152 (arguments 152 (arguments
153 (list #:build-type "release" 153 (list #:build-type "release"
diff --git a/gnu/packages/cryptsetup.scm b/gnu/packages/cryptsetup.scm
index 44f9c779845..d2f537681dd 100644
--- a/gnu/packages/cryptsetup.scm
+++ b/gnu/packages/cryptsetup.scm
@@ -32,7 +32,7 @@
32 #:use-module (gnu packages pkg-config) 32 #:use-module (gnu packages pkg-config)
33 #:use-module (gnu packages popt) 33 #:use-module (gnu packages popt)
34 #:use-module (gnu packages linux) 34 #:use-module (gnu packages linux)
35 #:use-module (gnu packages ruby) 35 #:use-module (gnu packages ruby-check)
36 #:use-module (gnu packages web)) 36 #:use-module (gnu packages web))
37 37
38(define-public cryptsetup 38(define-public cryptsetup
@@ -71,8 +71,8 @@
71 (assoc-ref %build-inputs "libgcrypt")))))) 71 (assoc-ref %build-inputs "libgcrypt"))))))
72 (native-inputs 72 (native-inputs
73 (append (list pkg-config) 73 (append (list pkg-config)
74 (if (supported-package? ruby-asciidoctor) 74 (if (supported-package? ruby-asciidoctor/minimal)
75 (list ruby-asciidoctor) 75 (list ruby-asciidoctor/minimal)
76 '()))) 76 '())))
77 (inputs 77 (inputs
78 (list argon2 78 (list argon2
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index a423210435d..99fd787a491 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -162,6 +162,8 @@
162 #:use-module (gnu packages regex) 162 #:use-module (gnu packages regex)
163 #:use-module (gnu packages rpc) 163 #:use-module (gnu packages rpc)
164 #:use-module (gnu packages ruby) 164 #:use-module (gnu packages ruby)
165 #:use-module (gnu packages ruby-check)
166 #:use-module (gnu packages ruby-xyz)
165 #:use-module (gnu packages serialization) 167 #:use-module (gnu packages serialization)
166 #:use-module (gnu packages sphinx) 168 #:use-module (gnu packages sphinx)
167 #:use-module (gnu packages ssh) 169 #:use-module (gnu packages ssh)
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 6dec8af804d..3f163426322 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -272,6 +272,8 @@
272 #:use-module (gnu packages pdf) 272 #:use-module (gnu packages pdf)
273 #:use-module (gnu packages racket) 273 #:use-module (gnu packages racket)
274 #:use-module (gnu packages ruby) 274 #:use-module (gnu packages ruby)
275 #:use-module (gnu packages ruby-check)
276 #:use-module (gnu packages ruby-xyz)
275 #:use-module (gnu packages rust) 277 #:use-module (gnu packages rust)
276 #:use-module (gnu packages rust-apps) 278 #:use-module (gnu packages rust-apps)
277 #:use-module (gnu packages scheme) 279 #:use-module (gnu packages scheme)
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index b42360517a4..0a1d3cdf642 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -161,7 +161,7 @@
161 #:use-module (gnu packages python-xyz) 161 #:use-module (gnu packages python-xyz)
162 #:use-module (gnu packages qt) 162 #:use-module (gnu packages qt)
163 #:use-module (gnu packages readline) 163 #:use-module (gnu packages readline)
164 #:use-module (gnu packages ruby) 164 #:use-module (gnu packages ruby-check)
165 #:use-module (gnu packages sagemath) 165 #:use-module (gnu packages sagemath)
166 #:use-module (gnu packages serialization) 166 #:use-module (gnu packages serialization)
167 #:use-module (gnu packages sqlite) 167 #:use-module (gnu packages sqlite)
@@ -1409,7 +1409,7 @@ electrical diagrams), gerbview (viewing Gerber files) and others.")
1409 perl-unicode-linebreak 1409 perl-unicode-linebreak
1410 perl-yaml-tiny 1410 perl-yaml-tiny
1411 po4a 1411 po4a
1412 ruby-asciidoctor 1412 ruby-asciidoctor/minimal
1413 source-highlight)) 1413 source-highlight))
1414 (home-page "https://kicad.org") 1414 (home-page "https://kicad.org")
1415 (synopsis "KiCad official documentation") 1415 (synopsis "KiCad official documentation")
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index a2e1241056d..a782d52111b 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -218,7 +218,7 @@
218 #:use-module (gnu packages python-xyz) 218 #:use-module (gnu packages python-xyz)
219 #:use-module (gnu packages qt) 219 #:use-module (gnu packages qt)
220 #:use-module (gnu packages readline) 220 #:use-module (gnu packages readline)
221 #:use-module (gnu packages ruby) 221 #:use-module (gnu packages ruby-check)
222 #:use-module (gnu packages shells) 222 #:use-module (gnu packages shells)
223 #:use-module (gnu packages sdl) 223 #:use-module (gnu packages sdl)
224 #:use-module (gnu packages serialization) 224 #:use-module (gnu packages serialization)
@@ -6469,7 +6469,7 @@ in-window at 640x480 resolution or fullscreen.")
6469 "iV_DrawTextRotated(\"Press ESC to exit.\", " 6469 "iV_DrawTextRotated(\"Press ESC to exit.\", "
6470 "100, 100, 0.0f, font_regular);")))))))) 6470 "100, 100, 0.0f, font_regular);"))))))))
6471 (native-inputs (list asciidoc 6471 (native-inputs (list asciidoc
6472 ruby-asciidoctor 6472 ruby-asciidoctor/minimal
6473 gettext-minimal 6473 gettext-minimal
6474 pkg-config 6474 pkg-config
6475 unzip 6475 unzip
@@ -8299,8 +8299,8 @@ at their peak of economic growth and military prowess.
8299 python-pylint 8299 python-pylint
8300 python-pyyaml 8300 python-pyyaml
8301 python-wrapper) 8301 python-wrapper)
8302 (if (supported-package? ruby-asciidoctor) 8302 (if (supported-package? ruby-asciidoctor/minimal)
8303 (list ruby-asciidoctor) 8303 (list ruby-asciidoctor/minimal)
8304 '()))) 8304 '())))
8305 (home-page "https://gitlab.com/esr/open-adventure") 8305 (home-page "https://gitlab.com/esr/open-adventure")
8306 (synopsis "Colossal Cave Adventure") 8306 (synopsis "Colossal Cave Adventure")
diff --git a/gnu/packages/gnome-xyz.scm b/gnu/packages/gnome-xyz.scm
index 34c61fe343a..8d53e895590 100644
--- a/gnu/packages/gnome-xyz.scm
+++ b/gnu/packages/gnome-xyz.scm
@@ -83,7 +83,7 @@
83 #:use-module (gnu packages ssh) 83 #:use-module (gnu packages ssh)
84 #:use-module (gnu packages textutils) 84 #:use-module (gnu packages textutils)
85 #:use-module (gnu packages tls) 85 #:use-module (gnu packages tls)
86 #:use-module (gnu packages ruby) 86 #:use-module (gnu packages ruby-xyz)
87 #:use-module (gnu packages web) 87 #:use-module (gnu packages web)
88 #:use-module (gnu packages xml) 88 #:use-module (gnu packages xml)
89 #:use-module (gnu packages xorg)) 89 #:use-module (gnu packages xorg))
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index c63e1ff29e0..da70b9017af 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -211,7 +211,7 @@
211 #:use-module (gnu packages rdesktop) 211 #:use-module (gnu packages rdesktop)
212 #:use-module (gnu packages rdf) 212 #:use-module (gnu packages rdf)
213 #:use-module (gnu packages readline) 213 #:use-module (gnu packages readline)
214 #:use-module (gnu packages ruby) 214 #:use-module (gnu packages ruby-xyz)
215 #:use-module (gnu packages rust) 215 #:use-module (gnu packages rust)
216 #:use-module (gnu packages samba) 216 #:use-module (gnu packages samba)
217 #:use-module (gnu packages scanner) 217 #:use-module (gnu packages scanner)
diff --git a/gnu/packages/groff.scm b/gnu/packages/groff.scm
index d4e1bc21276..5434c308880 100644
--- a/gnu/packages/groff.scm
+++ b/gnu/packages/groff.scm
@@ -35,7 +35,7 @@
35 #:use-module (guix gexp) 35 #:use-module (guix gexp)
36 #:use-module (gnu packages) 36 #:use-module (gnu packages)
37 #:use-module (gnu packages bash) 37 #:use-module (gnu packages bash)
38 #:use-module (gnu packages ruby) 38 #:use-module (gnu packages ruby-xyz)
39 #:use-module (gnu packages bison) 39 #:use-module (gnu packages bison)
40 #:use-module (gnu packages flex) 40 #:use-module (gnu packages flex)
41 #:use-module (gnu packages ghostscript) 41 #:use-module (gnu packages ghostscript)
diff --git a/gnu/packages/irc.scm b/gnu/packages/irc.scm
index 1ab72a36364..79039c6c589 100644
--- a/gnu/packages/irc.scm
+++ b/gnu/packages/irc.scm
@@ -103,6 +103,7 @@
103 #:use-module (gnu packages python-xyz) 103 #:use-module (gnu packages python-xyz)
104 #:use-module (gnu packages regex) 104 #:use-module (gnu packages regex)
105 #:use-module (gnu packages ruby) 105 #:use-module (gnu packages ruby)
106 #:use-module (gnu packages ruby-check)
106 #:use-module (gnu packages sphinx) 107 #:use-module (gnu packages sphinx)
107 #:use-module (gnu packages sqlite) 108 #:use-module (gnu packages sqlite)
108 #:use-module (gnu packages qt) 109 #:use-module (gnu packages qt)
@@ -389,7 +390,7 @@ Conferencing} and @acronym{ICB, Internet Citizen's Band}.")
389 (native-inputs 390 (native-inputs
390 (append (list gettext-minimal pkg-config) 391 (append (list gettext-minimal pkg-config)
391 (if (target-x86?) 392 (if (target-x86?)
392 (list ruby-asciidoctor) 393 (list ruby-asciidoctor/minimal)
393 '()))) 394 '())))
394 (inputs 395 (inputs
395 (list aspell 396 (list aspell
diff --git a/gnu/packages/kde-systemtools.scm b/gnu/packages/kde-systemtools.scm
index 4923854a7c7..905cde50811 100644
--- a/gnu/packages/kde-systemtools.scm
+++ b/gnu/packages/kde-systemtools.scm
@@ -38,6 +38,7 @@
38 #:use-module (gnu packages qt) 38 #:use-module (gnu packages qt)
39 #:use-module (gnu packages glib) 39 #:use-module (gnu packages glib)
40 #:use-module (gnu packages ruby) 40 #:use-module (gnu packages ruby)
41 #:use-module (gnu packages ruby-xyz)
41 #:use-module (gnu packages search) 42 #:use-module (gnu packages search)
42 #:use-module (gnu packages vnc) 43 #:use-module (gnu packages vnc)
43 #:use-module (gnu packages perl) 44 #:use-module (gnu packages perl)
diff --git a/gnu/packages/libffi.scm b/gnu/packages/libffi.scm
index 5ac092da1cc..b1e8cd53336 100644
--- a/gnu/packages/libffi.scm
+++ b/gnu/packages/libffi.scm
@@ -39,7 +39,8 @@
39 #:use-module (gnu packages python) 39 #:use-module (gnu packages python)
40 #:use-module (gnu packages python-build) 40 #:use-module (gnu packages python-build)
41 #:use-module (gnu packages python-xyz) 41 #:use-module (gnu packages python-xyz)
42 #:use-module (gnu packages ruby) 42 #:use-module (gnu packages ruby-check)
43 #:use-module (gnu packages ruby-xyz)
43 #:use-module (gnu packages sphinx) 44 #:use-module (gnu packages sphinx)
44 #:use-module (guix build-system gnu) 45 #:use-module (guix build-system gnu)
45 #:use-module (guix build-system pyproject) 46 #:use-module (guix build-system pyproject)
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 30825ad0e21..614d686c599 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -169,6 +169,8 @@
169 #:use-module (gnu packages readline) 169 #:use-module (gnu packages readline)
170 #:use-module (gnu packages regex) 170 #:use-module (gnu packages regex)
171 #:use-module (gnu packages ruby) 171 #:use-module (gnu packages ruby)
172 #:use-module (gnu packages ruby-check)
173 #:use-module (gnu packages ruby-xyz)
172 #:use-module (gnu packages rust-apps) 174 #:use-module (gnu packages rust-apps)
173 #:use-module (gnu packages samba) 175 #:use-module (gnu packages samba)
174 #:use-module (gnu packages screen) 176 #:use-module (gnu packages screen)
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 4de8ddd77d2..20df070d336 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -184,7 +184,8 @@
184 #:use-module (gnu packages python-xyz) 184 #:use-module (gnu packages python-xyz)
185 #:use-module (gnu packages qt) 185 #:use-module (gnu packages qt)
186 #:use-module (gnu packages readline) 186 #:use-module (gnu packages readline)
187 #:use-module (gnu packages ruby) 187 #:use-module (gnu packages ruby-check)
188 #:use-module (gnu packages ruby-xyz)
188 #:use-module (gnu packages tbb) 189 #:use-module (gnu packages tbb)
189 #:use-module (gnu packages scheme) 190 #:use-module (gnu packages scheme)
190 #:use-module (gnu packages serialization) 191 #:use-module (gnu packages serialization)
diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm
index 4afd2dd8f56..ceee854ebfa 100644
--- a/gnu/packages/mpd.scm
+++ b/gnu/packages/mpd.scm
@@ -58,7 +58,7 @@
58 #:use-module (gnu packages libusb) 58 #:use-module (gnu packages libusb)
59 #:use-module (gnu packages lua) 59 #:use-module (gnu packages lua)
60 #:use-module (gnu packages readline) 60 #:use-module (gnu packages readline)
61 #:use-module (gnu packages ruby) 61 #:use-module (gnu packages ruby-xyz)
62 #:use-module (gnu packages check) 62 #:use-module (gnu packages check)
63 #:use-module (gnu packages compression) 63 #:use-module (gnu packages compression)
64 #:use-module (gnu packages curl) 64 #:use-module (gnu packages curl)
diff --git a/gnu/packages/ntp.scm b/gnu/packages/ntp.scm
index 64ecb8a8f19..88661061648 100644
--- a/gnu/packages/ntp.scm
+++ b/gnu/packages/ntp.scm
@@ -42,7 +42,7 @@
42 #:use-module (gnu packages python) 42 #:use-module (gnu packages python)
43 #:use-module (gnu packages python-xyz) 43 #:use-module (gnu packages python-xyz)
44 #:use-module (gnu packages readline) 44 #:use-module (gnu packages readline)
45 #:use-module (gnu packages ruby) 45 #:use-module (gnu packages ruby-check)
46 #:use-module (gnu packages time) 46 #:use-module (gnu packages time)
47 #:use-module (gnu packages tls) 47 #:use-module (gnu packages tls)
48 #:use-module (guix build-system gnu) 48 #:use-module (guix build-system gnu)
@@ -110,8 +110,8 @@
110 (native-inputs 110 (native-inputs
111 (append (list bison 111 (append (list bison
112 pkg-config) 112 pkg-config)
113 (if (supported-package? ruby-asciidoctor) 113 (if (supported-package? ruby-asciidoctor/minimal)
114 (list ruby-asciidoctor) 114 (list ruby-asciidoctor/minimal)
115 '()))) 115 '())))
116 (inputs 116 (inputs
117 (list gnutls libcap libseccomp nettle)) 117 (list gnutls libcap libseccomp nettle))
@@ -213,7 +213,7 @@ computers over a network.")
213 pkg-config 213 pkg-config
214 pps-tools 214 pps-tools
215 python-waf 215 python-waf
216 ruby-asciidoctor)) 216 ruby-asciidoctor/minimal))
217 (inputs (cons* gpsd openssl 217 (inputs (cons* gpsd openssl
218 ;; Build with POSIX capabilities and syscall filtering 218 ;; Build with POSIX capabilities and syscall filtering
219 ;; support on GNU/Linux, for extra security features. 219 ;; support on GNU/Linux, for extra security features.
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 67a8f743f6d..14214646814 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -109,7 +109,8 @@
109 #:use-module (gnu packages python-check) 109 #:use-module (gnu packages python-check)
110 #:use-module (gnu packages python-web) 110 #:use-module (gnu packages python-web)
111 #:use-module (gnu packages python-xyz) 111 #:use-module (gnu packages python-xyz)
112 #:use-module (gnu packages ruby) 112 #:use-module (gnu packages ruby-check)
113 #:use-module (gnu packages ruby-xyz)
113 #:use-module (gnu packages serialization) 114 #:use-module (gnu packages serialization)
114 #:use-module (gnu packages sqlite) 115 #:use-module (gnu packages sqlite)
115 #:use-module (gnu packages ssh) 116 #:use-module (gnu packages ssh)
diff --git a/gnu/packages/password-utils.scm b/gnu/packages/password-utils.scm
index c0c0f551063..2f2e7a8a18f 100644
--- a/gnu/packages/password-utils.scm
+++ b/gnu/packages/password-utils.scm
@@ -121,6 +121,7 @@
121 #:use-module (gnu packages rdesktop) 121 #:use-module (gnu packages rdesktop)
122 #:use-module (gnu packages readline) 122 #:use-module (gnu packages readline)
123 #:use-module (gnu packages ruby) 123 #:use-module (gnu packages ruby)
124 #:use-module (gnu packages ruby-check)
124 #:use-module (gnu packages security-token) 125 #:use-module (gnu packages security-token)
125 #:use-module (gnu packages suckless) 126 #:use-module (gnu packages suckless)
126 #:use-module (gnu packages tcl) 127 #:use-module (gnu packages tcl)
@@ -247,7 +248,8 @@ human.")
247 (list "-DWITH_XC_ALL=YES" 248 (list "-DWITH_XC_ALL=YES"
248 "-DWITH_XC_UPDATECHECK=NO") 249 "-DWITH_XC_UPDATECHECK=NO")
249 #$(if (member (%current-system) 250 #$(if (member (%current-system)
250 (package-transitive-supported-systems ruby-asciidoctor)) 251 (package-transitive-supported-systems
252 ruby-asciidoctor/minimal))
251 #~'() 253 #~'()
252 #~(list "-DWITH_XC_DOCS=NO"))) 254 #~(list "-DWITH_XC_DOCS=NO")))
253 #:phases 255 #:phases
@@ -288,8 +290,9 @@ human.")
288 (append 290 (append
289 (list qttools-5) 291 (list qttools-5)
290 (if (member (%current-system) 292 (if (member (%current-system)
291 (package-transitive-supported-systems ruby-asciidoctor)) 293 (package-transitive-supported-systems
292 (list ruby-asciidoctor) 294 ruby-asciidoctor/minimal))
295 (list ruby-asciidoctor/minimal)
293 '()))) 296 '())))
294 (inputs 297 (inputs
295 (list argon2 298 (list argon2
diff --git a/gnu/packages/plotutils.scm b/gnu/packages/plotutils.scm
index feec60ca42d..fd63e6952cb 100644
--- a/gnu/packages/plotutils.scm
+++ b/gnu/packages/plotutils.scm
@@ -56,7 +56,8 @@
56 #:use-module (gnu packages python-xyz) 56 #:use-module (gnu packages python-xyz)
57 #:use-module (gnu packages qt) 57 #:use-module (gnu packages qt)
58 #:use-module (gnu packages readline) 58 #:use-module (gnu packages readline)
59 #:use-module (gnu packages ruby) 59 #:use-module (gnu packages ruby-check)
60 #:use-module (gnu packages ruby-xyz)
60 #:use-module (gnu packages statistics) 61 #:use-module (gnu packages statistics)
61 #:use-module (gnu packages tex) 62 #:use-module (gnu packages tex)
62 #:use-module (gnu packages texinfo) 63 #:use-module (gnu packages texinfo)
diff --git a/gnu/packages/protobuf.scm b/gnu/packages/protobuf.scm
index 1dabaeec346..6ac17d37339 100644
--- a/gnu/packages/protobuf.scm
+++ b/gnu/packages/protobuf.scm
@@ -51,7 +51,8 @@
51 #:use-module (gnu packages python-xyz) 51 #:use-module (gnu packages python-xyz)
52 #:use-module (gnu packages rpc) 52 #:use-module (gnu packages rpc)
53 #:use-module (gnu packages rails) 53 #:use-module (gnu packages rails)
54 #:use-module (gnu packages ruby) 54 #:use-module (gnu packages ruby-check)
55 #:use-module (gnu packages ruby-xyz)
55 #:use-module (srfi srfi-1)) 56 #:use-module (srfi srfi-1))
56 57
57(define-public fstrm 58(define-public fstrm
diff --git a/gnu/packages/radio.scm b/gnu/packages/radio.scm
index 25f9d53fedc..7402895249d 100644
--- a/gnu/packages/radio.scm
+++ b/gnu/packages/radio.scm
@@ -104,7 +104,7 @@
104 #:use-module (gnu packages python-xyz) 104 #:use-module (gnu packages python-xyz)
105 #:use-module (gnu packages qt) 105 #:use-module (gnu packages qt)
106 #:use-module (gnu packages readline) 106 #:use-module (gnu packages readline)
107 #:use-module (gnu packages ruby) 107 #:use-module (gnu packages ruby-check)
108 #:use-module (gnu packages sdl) 108 #:use-module (gnu packages sdl)
109 #:use-module (gnu packages serialization) 109 #:use-module (gnu packages serialization)
110 #:use-module (gnu packages sphinx) 110 #:use-module (gnu packages sphinx)
@@ -1774,8 +1774,8 @@ instances over the network, and general QSO and DXpedition logging.")
1774 gfortran 1774 gfortran
1775 pkg-config 1775 pkg-config
1776 qttools-5) 1776 qttools-5)
1777 (if (supported-package? ruby-asciidoctor) 1777 (if (supported-package? ruby-asciidoctor/minimal)
1778 (list ruby-asciidoctor) 1778 (list ruby-asciidoctor/minimal)
1779 '()))) 1779 '())))
1780 (inputs 1780 (inputs
1781 (list boost 1781 (list boost
@@ -1812,8 +1812,8 @@ weak-signal conditions.")
1812 (build-system qt-build-system) 1812 (build-system qt-build-system)
1813 (native-inputs 1813 (native-inputs
1814 (append (list asciidoc gfortran pkg-config qttools-5) 1814 (append (list asciidoc gfortran pkg-config qttools-5)
1815 (if (supported-package? ruby-asciidoctor) 1815 (if (supported-package? ruby-asciidoctor/minimal)
1816 (list ruby-asciidoctor) 1816 (list ruby-asciidoctor/minimal)
1817 '()))) 1817 '())))
1818 (inputs 1818 (inputs
1819 (list 1819 (list
diff --git a/gnu/packages/rails.scm b/gnu/packages/rails.scm
index 2045be03f0f..2a7aa36f824 100644
--- a/gnu/packages/rails.scm
+++ b/gnu/packages/rails.scm
@@ -32,6 +32,8 @@
32 #:use-module (gnu packages databases) 32 #:use-module (gnu packages databases)
33 #:use-module (gnu packages node) 33 #:use-module (gnu packages node)
34 #:use-module (gnu packages ruby) 34 #:use-module (gnu packages ruby)
35 #:use-module (gnu packages ruby-check)
36 #:use-module (gnu packages ruby-xyz)
35 #:use-module (gnu packages sqlite) 37 #:use-module (gnu packages sqlite)
36 #:use-module (gnu packages version-control) 38 #:use-module (gnu packages version-control)
37 #:use-module (guix build-system ruby)) 39 #:use-module (guix build-system ruby))
diff --git a/gnu/packages/ruby-check.scm b/gnu/packages/ruby-check.scm
index bb42267b129..5db07ff240a 100644
--- a/gnu/packages/ruby-check.scm
+++ b/gnu/packages/ruby-check.scm
@@ -1,4 +1,37 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2015-2018 Ben Woodcroft <donttrustben@gmail.com>
3;;; Copyright © 2015 David Thompson <davet@gnu.org>
4;;; Copyright © 2015 Pjotr Prins <pjotr.guix@thebird.nl>
5;;; Copyright © 2015, 2019 Ricardo Wurmus <rekado@elephly.net>
6;;; Copyright © 2016 Muriithi Frederick Muriuki <fredmanglis@gmail.com>
7;;; Copyright © 2017-2020, 2023 Christopher Baines <mail@cbaines.net>
8;;; Copyright © 2017, 2021 Efraim Flashner <efraim@flashner.co.il>
9;;; Copyright © 2017 nikita <nikita@n0.is>
10;;; Copyright © 2018 Danny Milosavljevic <dannym@scratchpost.org>
11;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
12;;; Copyright © 2019 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
13;;; Copyright © 2019 Brian Leung <bkleung89@gmail.com>
14;;; Copyright © 2019 Collin J. Doering <collin@rekahsoft.ca>
15;;; Copyright © 2019 Jelle Licht <jlicht@fsfe.org>
16;;; Copyright © 2019 Mikhail Kirillov <w96k.ru@gmail.com>
17;;; Copyright © 2020 Holger Peters <holger.peters@posteo.de>
18;;; Copyright © 2020, 2021, 2022 Marius Bakke <marius@gnu.org>
19;;; Copyright © 2020, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
20;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
21;;; Copyright © 2021 EuAndreh <eu@euandre.org>
22;;; Copyright © 2021 Giacomo Leidi <goodoldpaul@autistici.org>
23;;; Copyright © 2021 Ludovic Courtès <ludo@gnu.org>
24;;; Copyright © 2021 Mathieu Othacehe <othacehe@gnu.org>
25;;; Copyright © 2022, 2024 Danny Milosavljevic <dannym@scratchpost.org>
26;;; Copyright © 2022 Maxime Devos <maximedevos@telenet.be>
27;;; Copyright © 2022 Philip McGrath <philip@philipmcgrath.com>
28;;; Copyright © 2022 Stephen Paul Weber <singpolyma@singpolyma.net>
29;;; Copyright © 2022 Taiju HIGASHI <higashi@taiju.info>
30;;; Copyright © 2022 Tom Fitzhenry <tom@tom-fitzhenry.me.uk>
31;;; Copyright © 2023 gemmaro <gemmaro.dev@gmail.com>
32;;; Copyright © 2023 Hartmut Goebel <h.goebel@crazy-compilers.com>
33;;; Copyright © 2023 Yovan Naumovski <yovan@gorski.stream>
34;;; Copyright © 2025 Nicolas Graves <ngraves@ngraves.fr>
2;;; 35;;;
3;;; This file is part of GNU Guix. 36;;; This file is part of GNU Guix.
4;;; 37;;;
@@ -18,10 +51,13 @@
18(define-module (gnu packages ruby-check) 51(define-module (gnu packages ruby-check)
19 #:use-module ((guix licenses) #:prefix license:) 52 #:use-module ((guix licenses) #:prefix license:)
20 #:use-module (guix build-system ruby) 53 #:use-module (guix build-system ruby)
54 #:use-module (guix download)
21 #:use-module (guix gexp) 55 #:use-module (guix gexp)
22 #:use-module (guix git-download) 56 #:use-module (guix git-download)
23 #:use-module (guix packages) 57 #:use-module (guix packages)
24 #:use-module (gnu packages)) 58 #:use-module (guix utils)
59 #:use-module (gnu packages)
60 #:use-module (gnu packages ruby))
25 61
26;;; Commentary: 62;;; Commentary:
27;;; 63;;;
@@ -30,6 +66,1125 @@
30;;; Code: 66;;; Code:
31 67
32 68
69;; Bundler is yet another source of circular dependencies, so we must disable
70;; its test suite as well.
71(define-public bundler
72 (package
73 (name "bundler")
74 (version "2.4.18")
75 (source (origin
76 (method url-fetch)
77 (uri (rubygems-uri "bundler" version))
78 (sha256
79 (base32
80 "03ppd60cbwzlrhsidi7frj826ssmxzwd954ikjk7966l45qx5xxn"))))
81 (build-system ruby-build-system)
82 (arguments
83 '(#:tests? #f)) ; avoid dependency cycles
84 (synopsis "Ruby gem bundler")
85 (description "Bundler automatically downloads and installs a list of gems
86specified in a \"Gemfile\", as well as their dependencies.")
87 (home-page "https://bundler.io/")
88 (license license:expat)))
89
90(define-public ruby-asciidoctor/minimal
91 (hidden-package
92 (package
93 (name "ruby-asciidoctor")
94 (version "2.0.20")
95 (source
96 (origin
97 (method git-fetch) ;the gem release lacks a Rakefile
98 (uri (git-reference
99 (url "https://github.com/asciidoctor/asciidoctor")
100 (commit (string-append "v" version))))
101 (file-name (git-file-name name version))
102 (sha256
103 (base32
104 "19qvilhwa9plg80ppspn5ys0ybl8qfyaicqbl9w316hk5ldwi1jq"))))
105 (build-system ruby-build-system)
106 (arguments (list #:tests? #f))
107 (synopsis "Converter from AsciiDoc content to other formats")
108 (description "Asciidoctor is a text processor and publishing toolchain for
109converting AsciiDoc content to HTML5, DocBook 5, PDF, and other formats.")
110 (home-page "https://asciidoctor.org")
111 (license license:expat))))
112
113(define-public ruby-builder
114 (package
115 (name "ruby-builder")
116 (version "3.2.4")
117 (source (origin
118 (method url-fetch)
119 (uri (rubygems-uri "builder" version))
120 (sha256
121 (base32
122 "045wzckxpwcqzrjr353cxnyaxgf0qg22jh00dcx7z38cys5g1jlr"))))
123 (build-system ruby-build-system)
124 (arguments
125 (list
126 #:phases
127 #~(modify-phases %standard-phases
128 (add-after 'unpack 'patch
129 (lambda _
130 (substitute* "rakelib/tags.rake"
131 (("File\\.exists\\?") "File.exist?"))
132
133 ;; TODO This test is broken
134 ;; https://github.com/tenderlove/builder/issues/13
135 (substitute* "test/test_blankslate.rb"
136 (("test_late_included_module_in_kernel_is_ok")
137 "test_late_included_module_in_kernel_is_ok
138 skip(\"test expected to fail\")
139"))
140 (substitute* "rakelib/tags.rake"
141 (("RVM_GEMDIR = .*") "RVM_GEMDIR = 'no-rvm-please'\n")))))))
142 (synopsis "Ruby library to create structured data")
143 (description "Builder provides a number of builder objects that make it
144easy to create structured data. Currently the following builder objects are
145supported: XML Markup and XML Events.")
146 (home-page "https://github.com/tenderlove/builder")
147 (license license:expat)))
148
149(define-public ruby-cucumber-ci-environment
150 (package
151 (name "ruby-cucumber-ci-environment")
152 (version "9.1.0")
153 (source (origin
154 (method url-fetch)
155 (uri (rubygems-uri "cucumber-ci-environment" version))
156 (sha256
157 (base32
158 "1nmn2hfrjlbazgcryr3hwvsa5v4csfbjqxb4q7wbjhaxl9xxn0k7"))))
159 (build-system ruby-build-system)
160 (arguments (list #:phases #~(modify-phases %standard-phases
161 (replace 'check
162 (lambda* (#:key tests? #:allow-other-keys)
163 (when tests?
164 (invoke "rspec")))))))
165 (native-inputs (list ruby-rspec))
166 (synopsis "Detect CI Environment from environment variables")
167 (description "This is a Ruby utility library for Cucumber that detects a
168CI environment from environment variables.")
169 (home-page "https://github.com/cucumber/ci-environment")
170 (license license:expat)))
171
172(define-public ruby-cucumber-compatibility-kit
173 (package
174 (name "ruby-cucumber-compatibility-kit")
175 (version "11.2.0")
176 (source (origin
177 (method url-fetch)
178 (uri (rubygems-uri "cucumber-compatibility-kit" version))
179 (sha256
180 (base32
181 "17c8zx0yn68rcpfbw4nb1gzvh9fzpwsi1y0qivb99ahdlgzcdp8q"))))
182 (build-system ruby-build-system)
183 (arguments (list #:phases #~(modify-phases %standard-phases
184 (replace 'check
185 (lambda* (#:key tests? #:allow-other-keys)
186 (when tests?
187 (invoke "rspec")))))))
188 (propagated-inputs (list ruby-cucumber-messages ruby-rake ruby-rspec))
189 (synopsis "Cucumber compatibility verification utility")
190 (description "The Cucumber Compatibility Kit (CCK) aims to validate a
191Cucumber implementation's support for the Cucumber Messages protocol.")
192 (home-page "https://github.com/cucumber/compatibility-kit")
193 (license license:expat)))
194
195;;; Variant package to break a cycle with ruby-cucumber-messages.
196(define ruby-cucumber-compatibility-kit-bootstrap
197 (package/inherit ruby-cucumber-compatibility-kit
198 (arguments (list #:tests? #f))
199 (propagated-inputs (modify-inputs (package-propagated-inputs
200 ruby-cucumber-compatibility-kit)
201 (delete "ruby-cucumber-messages")))))
202
203(define-public ruby-cucumber-core
204 (package
205 (name "ruby-cucumber-core")
206 (version "11.1.0")
207 (source
208 (origin
209 (method git-fetch)
210 (uri (git-reference
211 (url "https://github.com/cucumber/cucumber-ruby-core")
212 (commit (string-append "v" version))))
213 (file-name (git-file-name name version))
214 (sha256
215 (base32
216 "0lf2inlam0951djc2qz81x0nkffmw2dpj44iadw1fw31m7r8wqvh"))))
217 (build-system ruby-build-system)
218 (arguments (list #:test-target "spec"
219 #:phases
220 #~(modify-phases %standard-phases
221 (add-after 'extract-gemspec 'relax-version-requirements
222 (lambda _
223 (substitute* "cucumber-core.gemspec"
224 (("'cucumber-tag-expressions',.*")
225 "'cucumber-tag-expressions', '>=4.1.0'\n")))))))
226 (native-inputs
227 (list ruby-rspec
228 ruby-rubocop/minimal
229 ruby-simplecov
230 ruby-unindent))
231 (propagated-inputs
232 (list ruby-cucumber-gherkin
233 ruby-cucumber-messages
234 ruby-cucumber-tag-expressions))
235 (synopsis "Core library for the Cucumber BDD app")
236 (description "Cucumber is a tool for running automated tests
237written in plain language. Because they're written in plain language,
238they can be read by anyone on your team. Because they can be read by
239anyone, you can use them to help improve communication, collaboration
240and trust on your team.")
241 (home-page "https://cucumber.io/")
242 (license license:expat)))
243
244(define-public ruby-cucumber-expressions
245 (package
246 (name "ruby-cucumber-expressions")
247 (version "16.1.2")
248 (source
249 (origin
250 (method git-fetch)
251 (uri (git-reference
252 (url "https://github.com/cucumber/cucumber-expressions")
253 (commit (string-append "v" version))))
254 (file-name (git-file-name name version))
255 (sha256
256 (base32
257 "1dhq88k9x2x8svam5bc7rrcd166fqymda8wxryqkbkffhnzla0id"))))
258 (build-system ruby-build-system)
259 (arguments
260 (list #:test-target "spec"
261 #:phases #~(modify-phases %standard-phases
262 (add-after 'unpack 'chdir
263 (lambda _
264 (chdir "ruby"))))))
265 (native-inputs (list ruby-rspec ruby-simplecov))
266 (synopsis "Simpler alternative to Regular Expressions")
267 (description "Cucumber Expressions offer similar functionality to Regular
268Expressions, with a syntax that is easier to read and write. Cucumber
269Expressions are extensible with parameter types.")
270 (home-page "https://github.com/cucumber/cucumber-expressions/")
271 (license license:expat)))
272
273(define-public ruby-cucumber-gherkin
274 (package
275 (name "ruby-cucumber-gherkin")
276 (version "26.1.0")
277 (source (origin
278 (method git-fetch)
279 (uri (git-reference
280 (url "https://github.com/cucumber/gherkin")
281 (commit (string-append "v" version))))
282 (file-name (git-file-name name version))
283 (sha256
284 (base32
285 "1rsannfcg5rqh5a3d3paw10kf6mmqjrgbq3k235px4swbyqysmgn"))))
286 (build-system ruby-build-system)
287 (arguments (list #:test-target "spec"
288 #:phases #~(modify-phases %standard-phases
289 (add-after 'unpack 'chdir
290 (lambda _
291 (chdir "ruby"))))))
292 (native-inputs (list ruby-rspec))
293 (propagated-inputs (list ruby-cucumber-messages))
294 (synopsis "Gherkin parser for Ruby")
295 (description "Gherkin is a parser and compiler for the Gherkin language.
296It is intended be used by all Cucumber implementations to parse
297@file{.feature} files.")
298 (home-page "https://github.com/cucumber/gherkin")
299 (license license:expat)))
300
301(define-public ruby-cucumber-html-formatter
302 (package
303 (name "ruby-cucumber-html-formatter")
304 (version "20.2.1")
305 (source
306 (origin
307 (method url-fetch)
308 (uri (rubygems-uri "cucumber-html-formatter" version))
309 (sha256
310 (base32
311 "0c7r9mfmph4c6yzc7y3dkr92rhwvpyksr0mdhpqp67xmmr8z1br4"))))
312 (build-system ruby-build-system)
313 (arguments
314 (list #:phases #~(modify-phases %standard-phases
315 (add-after 'extract-gemspec 'relax-requirements
316 (lambda _
317 (substitute* ".gemspec"
318 (("~> 18.0") "~> 21.0")))) ;cucumber-messages
319 (replace 'check
320 (lambda* (#:key tests? #:allow-other-keys)
321 (when tests?
322 (invoke "rspec")))))))
323 (native-inputs (list ruby-cucumber-compatibility-kit ruby-rspec))
324 (propagated-inputs (list ruby-cucumber-messages))
325 (synopsis "HTML formatter for Cucumber")
326 (description "Cucumber HTML Formatter produces a HTML report for Cucumber
327runs. It is built on top of cucumber-react and works with any Cucumber
328implementation with a protocol buffer formatter that outputs Cucumber
329messages.")
330 (home-page "https://github.com/cucumber/html-formatter")
331 (license license:expat)))
332
333(define-public ruby-cucumber-messages
334 (package
335 (name "ruby-cucumber-messages")
336 (version "21.0.1")
337 (source (origin
338 (method url-fetch)
339 (uri (rubygems-uri "cucumber-messages" version))
340 (sha256
341 (base32
342 "0482a63y7my0arn2bv208g401dq8525f0gwhnwaa11mhv6ph0q5i"))))
343 (build-system ruby-build-system)
344 (arguments
345 (list #:phases
346 #~(modify-phases %standard-phases
347 ;; The test suite requires the gem to be installed, so move it
348 ;; after the install phase.
349 (delete 'check)
350 (add-after 'install 'check
351 (lambda* (#:key tests? #:allow-other-keys)
352 (setenv "GEM_PATH" (string-append
353 (getenv "GEM_PATH") ":"
354 #$output "/lib/ruby/vendor_ruby"))
355 (when tests?
356 (invoke "rspec")))))))
357 (native-inputs
358 (list ruby-cucumber-compatibility-kit-bootstrap ruby-rspec))
359 (home-page "https://github.com/cucumber/messages/")
360 (synopsis "Cucumber Messages for Ruby (Protocol Buffers)")
361 (description "Cucumber Messages for Ruby is a library which allows
362serialization and deserialization of the protocol buffer messages used in
363Cucumber.")
364 (license license:expat)))
365
366(define-public ruby-cucumber-tag-expressions
367 (package
368 (name "ruby-cucumber-tag-expressions")
369 (version "5.0.1")
370 (source
371 (origin
372 (method git-fetch)
373 (uri (git-reference
374 (url "https://github.com/cucumber/tag-expressions")
375 (commit (string-append "v" version))))
376 (file-name (git-file-name name version))
377 (sha256
378 (base32
379 "1ziq30szn8m5y29hsdpx4dn1a8sy29h01nvcldm8nr1mx4b7dj1w"))))
380 (build-system ruby-build-system)
381 (arguments
382 (list #:test-target "spec"
383 #:phases #~(modify-phases %standard-phases
384 (add-after 'unpack 'chdir
385 (lambda _
386 (chdir "ruby"))))))
387 (native-inputs (list ruby-rspec))
388 (synopsis "Cucumber tag expressions for Ruby")
389 (description "Cucumber tag expression parser for Ruby. A tag expression
390is an infix boolean expression used by Cucumber.")
391 (home-page "https://github.com/cucumber/tag-expressions")
392 (license license:expat)))
393
394(define-public ruby-cucumber-wire
395 (package
396 (name "ruby-cucumber-wire")
397 (version "6.2.1")
398 (source
399 (origin
400 (method url-fetch)
401 (uri (rubygems-uri "cucumber-wire" version))
402 (sha256
403 (base32
404 "1pmydrh9lcckj7p0cn67jw7msxdkgr9zir86cs19h3mf2zlcv7b9"))))
405 (build-system ruby-build-system)
406 (arguments
407 (list #:tests? #f)) ;tests use cucumber, causing a cycle
408 (propagated-inputs
409 (list ruby-cucumber-core ruby-cucumber-expressions
410 ruby-cucumber-messages))
411 (synopsis "Cucumber wire protocol plugin")
412 (description "Cucumber's wire protocol allows step definitions to be
413implemented and invoked on any platform.")
414 (home-page "https://github.com/cucumber/cucumber-ruby-wire")
415 (license license:expat)))
416
417(define-public ruby-diff-lcs
418 (package
419 (name "ruby-diff-lcs")
420 (version "1.3")
421 (source (origin
422 (method url-fetch)
423 (uri (rubygems-uri "diff-lcs" version))
424 (sha256
425 (base32
426 "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza"))))
427 (build-system ruby-build-system)
428 (arguments
429 '(#:tests? #f)) ; avoid dependency cycles
430 (synopsis "Compute the difference between two Enumerable sequences")
431 (description "Diff::LCS computes the difference between two Enumerable
432sequences using the McIlroy-Hunt longest common subsequence (LCS) algorithm.
433It includes utilities to create a simple HTML diff output format and a
434standard diff-like tool.")
435 (home-page "https://github.com/halostatue/diff-lcs")
436 (license license:expat)))
437
438(define-public ruby-docile
439 (package
440 (name "ruby-docile")
441 (version "1.1.5")
442 (source
443 (origin
444 (method url-fetch)
445 (uri (rubygems-uri "docile" version))
446 (sha256
447 (base32
448 "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx"))))
449 (build-system ruby-build-system)
450 (arguments
451 '(#:tests? #f)) ; needs github-markup, among others
452 (synopsis "Ruby EDSL helper library")
453 (description "Docile is a Ruby library that provides an interface for
454creating embedded domain specific languages (EDSLs) that manipulate existing
455Ruby classes.")
456 (home-page "https://ms-ati.github.io/docile/")
457 (license license:expat)))
458
459(define-public ruby-fivemat
460 (package
461 (name "ruby-fivemat")
462 (version "1.3.7")
463 (source
464 (origin
465 (method url-fetch)
466 (uri (rubygems-uri "fivemat" version))
467 (sha256
468 (base32
469 "0pzlycasvwmg4bbx7plllpqnhd9zlmmff8l2w3yii86nrm2nvf9n"))))
470 (build-system ruby-build-system)
471 (arguments
472 `(#:tests? #f)) ; no tests
473 (synopsis "Each test file given its own line of dots")
474 (description
475 "Fivemat is a MiniTest/RSpec/Cucumber formatter that gives each test file
476its own line of dots during testing. It aims to provide test output that is
477neither too verbose nor too minimal.")
478 (home-page "https://github.com/tpope/fivemat")
479 (license license:expat)))
480
481(define-public ruby-given-core
482 (package
483 (name "ruby-given-core")
484 (version "3.8.2")
485 (source
486 (origin
487 (method url-fetch)
488 (uri (rubygems-uri "given_core" version))
489 (sha256
490 (base32
491 "0w1pyhgb2am7c267s8v06dpd9qhmsk2x4hfr2aq8l8lh49ma227s"))))
492 (build-system ruby-build-system)
493 (arguments '(#:tests? #f)) ;no test suite for the core package
494 (propagated-inputs
495 (list ruby-sorcerer))
496 (synopsis "Core abstractions used by rspec-given and minitest-given")
497 (description "Given_core is the basic functionality behind rspec-given and
498minitest-given, extensions that allow the use of Given/When/Then terminology
499when defining specifications.")
500 (home-page "https://github.com/rspec-given/rspec-given")
501 (license license:expat)))
502
503(define-public ruby-hoe
504 (package
505 (name "ruby-hoe")
506 (version "4.2.2")
507 (source (origin
508 (method url-fetch)
509 (uri (rubygems-uri "hoe" version))
510 (sha256
511 (base32
512 "1rhj1zs02mpdw6f4fh3mpfmj0p5pfar7rfxm758pk7l931mm8pyn"))))
513 (build-system ruby-build-system)
514 (arguments
515 (list
516 ;; Circular dependency with minitest
517 #:tests? #f))
518 (synopsis "Ruby project management helper")
519 (description
520 "Hoe is a rake/rubygems helper for project Rakefiles. It helps manage,
521maintain, and release projects and includes a dynamic plug-in system allowing
522for easy extensibility. Hoe ships with plug-ins for all the usual project
523tasks including rdoc generation, testing, packaging, deployment, and
524announcement.")
525 (home-page "https://www.zenspider.com/projects/hoe.html")
526 (license license:expat)))
527
528(define-public ruby-hoe-3
529 (package
530 (inherit ruby-hoe)
531 (version "3.26.0")
532 (source (origin
533 (method url-fetch)
534 (uri (rubygems-uri "hoe" version))
535 (sha256
536 (base32
537 "02vmphnfzna1dbb1l5nczcvlvvsg4flr26bdhmvdyf447bpswa63"))))))
538
539(define-public ruby-json
540 (package
541 (name "ruby-json")
542 (version "2.1.0")
543 (source
544 (origin
545 (method url-fetch)
546 (uri (rubygems-uri "json" version))
547 (sha256
548 (base32
549 "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp"))))
550 (build-system ruby-build-system)
551 (arguments '(#:tests? #f)) ; dependency cycle with sdoc
552 (synopsis "JSON library for Ruby")
553 (description "This Ruby library provides a JSON implementation written as
554a native C extension.")
555 (home-page "http://json-jruby.rubyforge.org/")
556 (license (list license:ruby license:gpl2)))) ; GPL2 only
557
558(define-public ruby-mime-types
559 (package
560 (name "ruby-mime-types")
561 (version "3.4.1")
562 (source
563 (origin
564 (method url-fetch)
565 (uri (rubygems-uri "mime-types" version))
566 (sha256
567 (base32
568 "0ipw892jbksbxxcrlx9g5ljq60qx47pm24ywgfbyjskbcl78pkvb"))))
569 (build-system ruby-build-system)
570 (propagated-inputs
571 (list ruby-mime-types-data))
572 (native-inputs
573 (list ruby-hoe
574 ruby-fivemat
575 ruby-minitest-focus
576 ruby-minitest-bonus-assertions
577 ruby-minitest-hooks))
578 (synopsis "Library and registry for MIME content type definitions")
579 (description "The mime-types library provides a library and registry for
580information about Multipurpose Internet Mail Extensions (MIME) content type
581definitions. It can be used to determine defined filename extensions for MIME
582types, or to use filename extensions to look up the likely MIME type
583definitions.")
584 (home-page "https://github.com/mime-types/ruby-mime-types")
585 (license license:expat)))
586
587(define-public ruby-mime-types-data
588 (package
589 (name "ruby-mime-types-data")
590 (version "3.2016.0521")
591 (source
592 (origin
593 (method url-fetch)
594 (uri (rubygems-uri "mime-types-data" version))
595 (sha256
596 (base32
597 "04my3746hwa4yvbx1ranhfaqkgf6vavi1kyijjnw8w3dy37vqhkm"))))
598 (build-system ruby-build-system)
599 (native-inputs
600 (list ruby-hoe))
601 (synopsis "Registry for information about MIME media type definitions")
602 (description
603 "@code{mime-types-data} provides a registry for information about
604Multipurpose Internet Mail Extensions (MIME) media type definitions. It can
605be used with the Ruby mime-types library or other software to determine
606defined filename extensions for MIME types, or to use filename extensions to
607look up the likely MIME type definitions.")
608 (home-page "https://github.com/mime-types/mime-types-data/")
609 (license license:expat)))
610
611(define-public ruby-mini-portile
612 (package
613 (name "ruby-mini-portile")
614 (version "0.6.2")
615 (source
616 (origin
617 (method url-fetch)
618 (uri (rubygems-uri "mini_portile" version))
619 (sha256
620 (base32
621 "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w"))))
622 (build-system ruby-build-system)
623 (arguments
624 '(#:tests? #f)) ; tests require network access
625 (synopsis "Ports system for Ruby developers")
626 (description "Mini-portile is a port/recipe system for Ruby developers.
627It provides a standard way to compile against specific versions of libraries
628to reproduce user environments.")
629 (home-page "https://github.com/flavorjones/mini_portile")
630 (license license:expat)))
631
632(define-public ruby-mini-portile-2
633 (package
634 (inherit ruby-mini-portile)
635 (version "2.8.2")
636 (source (origin
637 (method url-fetch)
638 (uri (rubygems-uri "mini_portile2" version))
639 (sha256
640 (base32
641 "0z7f38iq37h376n9xbl4gajdrnwzq284c9v1py4imw3gri2d5cj6"))))))
642
643(define-public ruby-minitest
644 (package
645 (name "ruby-minitest")
646 (version "5.18.1")
647 (source (origin
648 (method url-fetch)
649 (uri (rubygems-uri "minitest" version))
650 (sha256
651 (base32
652 "1kg9wh7jlc9zsr3hkhpzkbn0ynf4np5ap9m2d8xdrb8shy0y6pmb"))))
653 (build-system ruby-build-system)
654 (native-inputs (list ruby-hoe))
655 (home-page "https://github.com/minitest/minitest")
656 (synopsis "Small test suite library for Ruby")
657 (description "Minitest provides a complete suite of Ruby testing
658facilities supporting TDD, BDD, mocking, and benchmarking.")
659 (license license:expat)))
660
661(define-public ruby-minitest-bonus-assertions
662 (package
663 (name "ruby-minitest-bonus-assertions")
664 (version "3.0")
665 (source
666 (origin
667 (method url-fetch)
668 (uri (rubygems-uri "minitest-bonus-assertions" version))
669 (sha256
670 (base32
671 "1hbq9jk904xkz868yha1bqcm6azm7kmjsll2k4pn2nrcib508h2a"))))
672 (build-system ruby-build-system)
673 (arguments
674 (list
675 #:tests? #f ; Test suite has bitrotted.
676 #:phases
677 #~(modify-phases %standard-phases
678 (add-before 'check 'clean-dependencies
679 (lambda _
680 ;; Remove unneeded require statement that would entail another
681 ;; dependency.
682 (substitute* "test/minitest_config.rb"
683 (("require 'minitest/bisect'") "")))))))
684 (native-inputs
685 (list ruby-hoe
686 ruby-minitest-focus
687 ruby-minitest-moar))
688 (synopsis "Bonus assertions for @code{Minitest}")
689 (description
690 "Minitest bonus assertions provides extra MiniTest assertions. For
691instance, it provides @code{assert_true}, @code{assert_false} and
692@code{assert_set_equal}.")
693 (home-page "https://github.com/halostatue/minitest-bonus-assertions")
694 (license license:expat)))
695
696(define-public ruby-minitest-focus
697 (package
698 (name "ruby-minitest-focus")
699 (version "1.3.1")
700 (source
701 (origin
702 (method url-fetch)
703 (uri (rubygems-uri "minitest-focus" version))
704 (sha256
705 (base32
706 "13kd2dkd9akfb99ziqndz9mir5iynyfyj2l45mcibab6mq5k8g67"))))
707 (build-system ruby-build-system)
708 (propagated-inputs
709 (list ruby-minitest))
710 (native-inputs
711 (list ruby-hoe))
712 (synopsis "Allows a few specific tests to be focused on")
713 (description
714 "@code{minitest-focus} gives the ability focus on a few tests with ease
715without having to use command-line arguments. It introduces a @code{focus}
716class method for use in testing classes, specifying that the next defined test
717is to be run.")
718 (home-page "https://github.com/seattlerb/minitest-focus")
719 (license license:expat)))
720
721(define-public ruby-minitest-hooks
722 (package
723 (name "ruby-minitest-hooks")
724 (version "1.5.2")
725 (source
726 (origin
727 (method url-fetch)
728 (uri (rubygems-uri "minitest-hooks" version))
729 (sha256
730 (base32 "11jb31dl5kbpyl3kgxql0p7da9066r2aqw54y5q6cni9nmld3zf5"))))
731 (build-system ruby-build-system)
732 (arguments
733 '(#:tests? #f)) ; No tests bundled.
734 (native-inputs
735 (list ruby-sequel ;ruby-sqlite3
736 ))
737 (synopsis "Hooks for the minitest framework")
738 (description
739 "Minitest-hooks adds @code{around}, @code{before_all}, @code{after_all},
740@code{around_all} hooks for Minitest. This allows, for instance, running each
741suite of specs inside a database transaction, running each spec inside its own
742savepoint inside that transaction. This can significantly speed up testing
743for specs that share expensive database setup code.")
744 (home-page "https://github.com/jeremyevans/minitest-hooks")
745 (license license:expat)))
746
747(define-public ruby-minitest-moar
748 (package
749 (name "ruby-minitest-moar")
750 (version "0.0.4")
751 (source
752 (origin
753 (method url-fetch)
754 (uri (rubygems-uri "minitest-moar" version))
755 (sha256
756 (base32
757 "0nb83blrsab92gcy6nfpw39njys7zisia8pw4igzzfzfl51cis0x"))))
758 (build-system ruby-build-system)
759 (arguments
760 `(#:phases
761 (modify-phases %standard-phases
762 (add-before 'check 'clean-dependencies
763 (lambda _
764 ;; Remove all gems defined in the Gemfile because these are not
765 ;; truly needed.
766 (substitute* "Gemfile"
767 (("gem .*") ""))
768 ;; Remove byebug as not needed to run tests.
769 (substitute* "test/test_helper.rb"
770 (("require 'byebug'") "")))))))
771 (native-inputs
772 (list bundler ruby-minitest))
773 (synopsis "Extra features and changes to MiniTest")
774 (description "@code{MiniTest Moar} add some additional features and
775changes some default behaviours in MiniTest. For instance, Moar replaces the
776MiniTest @code{Object#stub} with a global @code{stub} method.")
777 (home-page "https://github.com/dockyard/minitest-moar")
778 (license license:expat)))
779
780(define-public ruby-multi-test
781 (package
782 (name "ruby-multi-test")
783 (version "0.1.2")
784 (source
785 (origin
786 (method url-fetch)
787 (uri (rubygems-uri "multi_test" version))
788 (sha256
789 (base32
790 "1sx356q81plr67hg16jfwz9hcqvnk03bd9n75pmdw8pfxjfy1yxd"))))
791 (build-system ruby-build-system)
792 (arguments
793 '(;; Tests require different sets of specific gem versions to be available,
794 ;; and there is no gemfile that specifies the newest versions of
795 ;; dependencies to be tested.
796 #:tests? #f))
797 (synopsis
798 "Interface to testing libraries loaded into a running Ruby process")
799 (description
800 "@code{multi_test} provides a uniform interface onto whatever testing
801libraries that have been loaded into a running Ruby process to help control
802rogue test/unit/autorun requires.")
803 (home-page "https://github.com/cucumber/multi_test")
804 (license license:expat)))
805
806(define-public ruby-rake
807 (package
808 (name "ruby-rake")
809 (version "13.0.6")
810 (source
811 (origin
812 (method git-fetch) ;for tests
813 (uri (git-reference
814 (url "https://github.com/ruby/rake")
815 (commit (string-append "v" version))))
816 (file-name (git-file-name name version))
817 (sha256
818 (base32
819 "0c77xyl677s966f8yvk8yv7l31c1ffa1yl4kcwiram219h0s76in"))))
820 (build-system ruby-build-system)
821 (native-inputs
822 (list bundler))
823 (synopsis "Rake is a Make-like program implemented in Ruby")
824 (description
825 "Rake is a Make-like program where tasks and dependencies are specified
826in standard Ruby syntax.")
827 (home-page "https://github.com/ruby/rake")
828 (license license:expat)))
829
830(define-public ruby-rake-compiler
831 (package
832 (name "ruby-rake-compiler")
833 (version "1.2.9")
834 (source (origin
835 (method url-fetch)
836 (uri (rubygems-uri "rake-compiler" version))
837 (sha256
838 (base32
839 "01rnl94p1sr84xkbnh66db42qsndykbfx2z2fggxyxx9vnji6cjs"))))
840 (build-system ruby-build-system)
841 (arguments
842 '(#:tests? #f)) ; needs cucumber
843 (synopsis "Building and packaging helper for Ruby native extensions")
844 (description "Rake-compiler provides a framework for building and
845packaging native C and Java extensions in Ruby.")
846 (home-page "https://github.com/rake-compiler/rake-compiler")
847 (license license:expat)))
848
849(define-public ruby-rake-compiler-dock
850 (package
851 (name "ruby-rake-compiler-dock")
852 (version "1.3.0")
853 (source (origin
854 (method url-fetch)
855 (uri (rubygems-uri "rake-compiler-dock" version))
856 (sha256
857 (base32
858 "0yr5f72irvhmnk12q7bbr4qw0xwy7diqkbcvb4lygjbg7rvk3k8k"))))
859 (build-system ruby-build-system)
860 (arguments (list #:tests? #f)) ;test suite requires docker
861 (synopsis "Cross compiler environment for building Ruby gems")
862 (description "The code{rake-compiler-dock} gem provides a cross compiler
863environment for building gems on a variety of platforms (GNU/Linux, JRuby,
864Windows and Mac).")
865 (home-page "https://github.com/rake-compiler/rake-compiler-dock")
866 (license license:expat)))
867
868(define-public ruby-rubocop/minimal
869 (hidden-package
870 (package
871 (name "ruby-rubocop")
872 (version "1.68.0")
873 (source
874 (origin
875 (method git-fetch) ;no tests in distributed gem
876 (uri (git-reference
877 (url "https://github.com/rubocop/rubocop")
878 (commit (string-append "v" version))))
879 (file-name (git-file-name name version))
880 (sha256
881 (base32 "0pfsrgkg2dhb6a2rknciqskgxgmb9kf48rvbkhay9n8n6m712v2w"))))
882 (build-system ruby-build-system)
883 (arguments
884 (list #:tests? #f
885 #:phases
886 #~(modify-phases %standard-phases
887 (add-after 'unpack 'remove-runtime-dependencies
888 (lambda _
889 (substitute* "rubocop.gemspec"
890 (("s\\.add_dependency.*") "")))))))
891 (synopsis "Ruby code style checking tool")
892 (description
893 "@code{rubocop} is a Ruby code style checking tool. It aims to enforce
894the community-driven Ruby Style Guide.")
895 (home-page "https://github.com/rubocop/rubocop")
896 (license license:expat))))
897
898(define-public ruby-rspec
899 (package
900 (name "ruby-rspec")
901 (version "3.13.0")
902 (source (origin
903 (method url-fetch)
904 (uri (rubygems-uri "rspec" version))
905 (sha256
906 (base32
907 "14xrp8vq6i9zx37vh0yp4h9m0anx9paw200l1r5ad9fmq559346l"))))
908 (build-system ruby-build-system)
909 (arguments
910 '(#:tests? #f)) ; avoid dependency cycles
911 (propagated-inputs
912 (list ruby-rspec-core ruby-rspec-expectations ruby-rspec-mocks))
913 (synopsis "Behavior-driven development framework for Ruby")
914 (description "RSpec is a behavior-driven development (BDD) framework for
915Ruby. This meta-package includes the RSpec test runner, along with the
916expectations and mocks frameworks.")
917 (home-page "https://rspec.info/")
918 (license license:expat)))
919
920(define-public ruby-rspec-2
921 (package (inherit ruby-rspec)
922 (version "2.14.1")
923 (source (origin
924 (method url-fetch)
925 (uri (rubygems-uri "rspec" version))
926 (sha256
927 (base32
928 "134y4wzk1prninb5a0bhxgm30kqfzl8dg06af4js5ylnhv2wd7sg"))))
929 (propagated-inputs
930 (list ruby-rspec-core-2 ruby-rspec-mocks-2 ruby-rspec-expectations-2))))
931
932(define-public ruby-rspec-core
933 (package
934 (name "ruby-rspec-core")
935 (version "3.13.2")
936 (source (origin
937 (method url-fetch)
938 (uri (rubygems-uri "rspec-core" version))
939 (sha256
940 (base32
941 "001kazj244cb6fbkmh7ap74csbr78717qaskqzqpir1q8xpdmywl"))))
942 (build-system ruby-build-system)
943 (arguments
944 '(#:tests? #f)) ; avoid dependency cycles
945 (propagated-inputs
946 (list ruby-rspec-support))
947 (synopsis "RSpec core library")
948 (description "Rspec-core provides the RSpec test runner and example
949groups.")
950 (home-page "https://github.com/rspec/rspec-core")
951 (license license:expat)))
952
953(define-public ruby-rspec-core-2
954 (package (inherit ruby-rspec-core)
955 (version "2.14.8")
956 (source (origin
957 (method url-fetch)
958 (uri (rubygems-uri "rspec-core" version))
959 (sha256
960 (base32
961 "0psjy5kdlz3ph39br0m01w65i1ikagnqlg39f8p65jh5q7dz8hwc"))))
962 (arguments
963 (cons*
964 #:phases
965 #~(modify-phases %standard-phases
966 (add-after 'unpack 'patch
967 (lambda _
968 (substitute* "lib/rspec/core/ruby_project.rb"
969 (("File\\.exists\\?") "File.exist?")))))
970 (package-arguments ruby-rspec-core)))
971 (propagated-inputs `())))
972
973(define-public ruby-rspec-expectations
974 (package
975 (name "ruby-rspec-expectations")
976 (version "3.13.3")
977 (source (origin
978 (method url-fetch)
979 (uri (rubygems-uri "rspec-expectations" version))
980 (sha256
981 (base32
982 "0n3cyrhsa75x5wwvskrrqk56jbjgdi2q1zx0irllf0chkgsmlsqf"))))
983 (build-system ruby-build-system)
984 (arguments
985 '(#:tests? #f)) ; avoid dependency cycles
986 (propagated-inputs
987 (list ruby-diff-lcs ruby-rspec-support))
988 (synopsis "RSpec expectations library")
989 (description "Rspec-expectations provides a simple API to express expected
990outcomes of a code example.")
991 (home-page "https://github.com/rspec/rspec-expectations")
992 (license license:expat)))
993
994(define-public ruby-rspec-expectations-2
995 (package (inherit ruby-rspec-expectations)
996 (version "2.14.5")
997 (source (origin
998 (method url-fetch)
999 (uri (rubygems-uri "rspec-expectations" version))
1000 (sha256
1001 (base32
1002 "1ni8kw8kjv76jvwjzi4jba00k3qzj9f8wd94vm6inz0jz3gwjqf9"))))
1003 (propagated-inputs
1004 (list ruby-diff-lcs))))
1005
1006(define-public ruby-rspec-mocks
1007 (package
1008 (name "ruby-rspec-mocks")
1009 (version "3.13.2")
1010 (source (origin
1011 (method url-fetch)
1012 (uri (rubygems-uri "rspec-mocks" version))
1013 (sha256
1014 (base32
1015 "1vxxkb2sf2b36d8ca2nq84kjf85fz4x7wqcvb8r6a5hfxxfk69r3"))))
1016 (build-system ruby-build-system)
1017 (arguments
1018 '(#:tests? #f)) ; avoid dependency cycles
1019 (propagated-inputs
1020 (list ruby-diff-lcs ruby-rspec-support))
1021 (synopsis "RSpec stubbing and mocking library")
1022 (description "Rspec-mocks provides RSpec's \"test double\" framework, with
1023support for stubbing and mocking.")
1024 (home-page "https://github.com/rspec/rspec-mocks")
1025 (license license:expat)))
1026
1027(define-public ruby-rspec-mocks-2
1028 (package (inherit ruby-rspec-mocks)
1029 (version "2.14.6")
1030 (source (origin
1031 (method url-fetch)
1032 (uri (rubygems-uri "rspec-mocks" version))
1033 (sha256
1034 (base32
1035 "1fwsmijd6w6cmqyh4ky2nq89jrpzh56hzmndx9wgkmdgfhfakv30"))))
1036 (propagated-inputs
1037 (list ruby-diff-lcs))))
1038
1039;; RSpec is the dominant testing library for Ruby projects. Even RSpec's
1040;; dependencies use RSpec for their test suites! To avoid these circular
1041;; dependencies, we disable tests for all of the RSpec-related packages.
1042(define-public ruby-rspec-support
1043 (package
1044 (name "ruby-rspec-support")
1045 (version "3.13.2")
1046 (source (origin
1047 (method url-fetch)
1048 (uri (rubygems-uri "rspec-support" version))
1049 (sha256
1050 (base32
1051 "1v6v6xvxcpkrrsrv7v1xgf7sl0d71vcfz1cnrjflpf6r7x3a58yf"))))
1052 (build-system ruby-build-system)
1053 (arguments
1054 '(#:tests? #f)) ; avoid dependency cycles
1055 (synopsis "RSpec support library")
1056 (description "Support utilities for RSpec gems.")
1057 (home-page "https://github.com/rspec/rspec-support")
1058 (license license:expat)))
1059
1060(define-public ruby-sequel
1061 (package
1062 (name "ruby-sequel")
1063 (version "5.47.0")
1064 (source
1065 (origin
1066 (method url-fetch)
1067 (uri (rubygems-uri "sequel" version))
1068 (sha256
1069 (base32
1070 "03pmhj4kc3ga75wy397l57bvd18jxxmrk3qsznjw93b993qgvj3z"))))
1071 (build-system ruby-build-system)
1072 (arguments
1073 '(#:tests? #f)) ; Avoid dependency loop with ruby-minitest-hooks.
1074 (synopsis "Database toolkit for Ruby")
1075 (description "Sequel provides thread safety, connection pooling and a
1076concise DSL for constructing SQL queries and table schemas. It includes a
1077comprehensive ORM layer for mapping records to Ruby objects and handling
1078associated records.")
1079 (home-page "https://sequel.jeremyevans.net")
1080 (license license:expat)))
1081
1082(define-public ruby-simplecov-json-formatter
1083 (package
1084 (name "ruby-simplecov-json-formatter")
1085 (version "0.1.4")
1086 (source (origin
1087 (method url-fetch)
1088 (uri (rubygems-uri "simplecov_json_formatter" version))
1089 (sha256
1090 (base32
1091 "0a5l0733hj7sk51j81ykfmlk2vd5vaijlq9d5fn165yyx3xii52j"))))
1092 (build-system ruby-build-system)
1093 ;; The test suite is disabled because it requires simplecov, which
1094 ;; requires this, introducing a dependency cycle.
1095 (arguments (list #:tests? #f))
1096 (synopsis "JSON formatter for SimpleCov")
1097 (description "This package provides a JSON formatter for SimpleCov, the
1098Ruby code coverage tool.")
1099 (home-page
1100 "https://github.com/codeclimate-community/simplecov_json_formatter")
1101 (license license:expat)))
1102
1103(define-public ruby-simplecov
1104 (package
1105 (name "ruby-simplecov")
1106 (version "0.22.0")
1107 (source (origin
1108 (method url-fetch)
1109 (uri (rubygems-uri "simplecov" version))
1110 (sha256
1111 (base32
1112 "198kcbrjxhhzca19yrdcd6jjj9sb51aaic3b0sc3pwjghg3j49py"))))
1113 (build-system ruby-build-system)
1114 ;; Simplecov depends on rubocop for code style checking at build time.
1115 ;; Rubocop needs simplecov at build time.
1116 (arguments `(#:tests? #f))
1117 (propagated-inputs
1118 (list ruby-json
1119 ruby-docile
1120 ruby-simplecov-html
1121 ruby-simplecov-json-formatter))
1122 (synopsis "Code coverage framework for Ruby")
1123 (description "SimpleCov is a code coverage framework for Ruby with a
1124powerful configuration library and automatic merging of coverage across test
1125suites.")
1126 (home-page "https://github.com/simplecov-ruby/simplecov")
1127 (license license:expat)))
1128
1129(define-public ruby-simplecov-html
1130 (package
1131 (name "ruby-simplecov-html")
1132 (version "0.12.3")
1133 (source (origin
1134 (method url-fetch)
1135 (uri (rubygems-uri "simplecov-html" version))
1136 (sha256
1137 (base32
1138 "0yx01bxa8pbf9ip4hagqkp5m0mqfnwnw2xk8kjraiywz4lrss6jb"))))
1139 (build-system ruby-build-system)
1140 (arguments `(#:tests? #f)) ; there are no tests
1141 (native-inputs
1142 (list bundler))
1143 (synopsis "Default HTML formatter for SimpleCov code coverage tool")
1144 (description "This package provides the default HTML formatter for
1145the SimpleCov code coverage tool for Ruby version 1.9 and above.")
1146 (home-page "https://github.com/simplecov-ruby/simplecov-html")
1147 (license license:expat)))
1148
1149(define-public ruby-sorcerer
1150 (package
1151 (name "ruby-sorcerer")
1152 (version "2.0.1")
1153 (source
1154 (origin
1155 (method url-fetch)
1156 (uri (rubygems-uri "sorcerer" version))
1157 (sha256
1158 (base32
1159 "0d32ha9pp9slpmsm027pkdpbr9vc5jn2m8rl6hwwx6a87m8cr58h"))))
1160 (build-system ruby-build-system)
1161 (synopsis "Ripper-style abstract syntax tree to Ruby source generator")
1162 (description "Sorcerer generates Ruby code from a Ripper-like abstract
1163syntax tree (i.e. S-Expressions). Sorcerer is targeted mainly at small
1164snippets of Ruby code, expressible in a single line. Longer examples may be
1165re-sourced, but they will be rendered in a single-line format.")
1166 (home-page "https://github.com/rspec-given/sorcerer")
1167 (license license:expat)))
1168
1169(define-public ruby-unindent
1170 (package
1171 (name "ruby-unindent")
1172 (version "1.0")
1173 (source
1174 (origin
1175 (method url-fetch)
1176 (uri (rubygems-uri "unindent" version))
1177 (sha256
1178 (base32
1179 "1wqh3rzv8589yzibigminxx3qpmj2nqj28f90xy1sczk1pijmcrd"))))
1180 (build-system ruby-build-system)
1181 (synopsis "Ruby method to unindent strings")
1182 (description "This module provides a @code{String#unindent} Ruby method to
1183unindent strings, which can be useful to unindent multiline strings embedded
1184in already-indented code.")
1185 (home-page "https://github.com/mynyml/unindent")
1186 (license license:expat)))
1187
33;;; 1188;;;
34;;; Avoid adding new packages to the end of this file. To reduce the chances 1189;;; Avoid adding new packages to the end of this file. To reduce the chances
35;;; of a merge conflict, place them above in alphabetic order. 1190;;; of a merge conflict, place them above in alphabetic order.
diff --git a/gnu/packages/ruby-xyz.scm b/gnu/packages/ruby-xyz.scm
index 688bf334590..fb073cc40ba 100644
--- a/gnu/packages/ruby-xyz.scm
+++ b/gnu/packages/ruby-xyz.scm
@@ -1,4 +1,41 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014, 2015 Pjotr Prins <pjotr.guix@thebird.nl>
3;;; Copyright © 2014-2017, 2021-2022, 2024 Ludovic Courtès <ludo@gnu.org>
4;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
5;;; Copyright © 2014, 2015 David Thompson <davet@gnu.org>
6;;; Copyright © 2015, 2019 Ricardo Wurmus <rekado@elephly.net>
7;;; Copyright © 2015, 2016, 2017 Ben Woodcroft <donttrustben@gmail.com>
8;;; Copyright © 2017 Nikita <nikita@n0.is>
9;;; Copyright © 2017, 2019-2022 Marius Bakke <marius@gnu.org>
10;;; Copyright © 2017-2025 Efraim Flashner <efraim@flashner.co.il>
11;;; Copyright © 2017, 2018, 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
12;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
13;;; Copyright © 2017, 2018, 2019 Christopher Baines <mail@cbaines.net>
14;;; Copyright © 2018 Vasile Dumitrascu <va511e@yahoo.com>
15;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
16;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
17;;; Copyright © 2019 Mikhail Kirillov <w96k.ru@gmail.com>
18;;; Copyright © 2019 Jelle Licht <jlicht@fsfe.org>
19;;; Copyright © 2019 Brian Leung <bkleung89@gmail.com>
20;;; Copyright © 2019 Collin J. Doering <collin@rekahsoft.ca>
21;;; Copyright © 2019 Diego N. Barbato <dnbarbato@posteo.de>
22;;; Copyright © 2019 Brett Gilio <brettg@posteo.de>
23;;; Copyright © 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
24;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
25;;; Copyright © 2020 Holgr Peters <holger.peters@posteo.de>
26;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org>
27;;; Copyright © 2021 EuAndreh <eu@euandre.org>
28;;; Copyright © 2020 Tomás Ortín Fernández <tomasortin@mailbox.org>
29;;; Copyright © 2021 Giovanni Biscuolo <g@xelera.eu>
30;;; Copyright © 2022 Philip McGrath <philip@philipmcgrath.com>
31;;; Copyright © 2022-2025 Remco van 't Veer <remco@remworks.net>
32;;; Copyright © 2022 Taiju HIGASHI <higashi@taiju.info>
33;;; Copyright © 2023 Yovan Naumovski <yovan@gorski.stream>
34;;; Copyright © 2023, 2024 gemmaro <gemmaro.dev@gmail.com>
35;;; Copyright © 2023, 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
36;;; Copyright © 2023, 2024 Zheng Junjie <873216071@qq.com>
37;;; Copyright © 2023, 2024 Hartmut Goebel <h.goebel@crazy-compilers.com>
38;;; Copyright © 2025 Nicolas Graves <ngraves@ngraves.fr>
2;;; 39;;;
3;;; This file is part of GNU Guix. 40;;; This file is part of GNU Guix.
4;;; 41;;;
@@ -18,19 +55,16730 @@
18(define-module (gnu packages ruby-xyz) 55(define-module (gnu packages ruby-xyz)
19 #:use-module ((guix licenses) #:prefix license:) 56 #:use-module ((guix licenses) #:prefix license:)
20 #:use-module (guix build-system ruby) 57 #:use-module (guix build-system ruby)
58 #:use-module (guix deprecation)
59 #:use-module (guix download)
21 #:use-module (guix gexp) 60 #:use-module (guix gexp)
22 #:use-module (guix git-download) 61 #:use-module (guix git-download)
23 #:use-module (guix packages) 62 #:use-module (guix packages)
24 #:use-module (gnu packages)) 63 #:use-module (guix modules)
64 #:use-module (guix utils)
65 #:use-module (gnu packages)
66 #:use-module (gnu packages)
67 #:use-module (gnu packages base)
68 #:use-module (gnu packages bison)
69 #:use-module (gnu packages c)
70 #:use-module (gnu packages check)
71 #:use-module (gnu packages compression)
72 #:use-module (gnu packages crypto)
73 #:use-module (gnu packages curl)
74 #:use-module (gnu packages databases)
75 #:use-module (gnu packages dbm)
76 #:use-module (gnu packages freedesktop)
77 #:use-module (gnu packages rails)
78 #:use-module (gnu packages readline)
79 #:use-module (gnu packages autotools)
80 #:use-module (gnu packages graphviz)
81 #:use-module (gnu packages haskell-xyz)
82 #:use-module (gnu packages java)
83 #:use-module (gnu packages libffi)
84 #:use-module (gnu packages libidn)
85 #:use-module (gnu packages linux)
86 #:use-module (gnu packages lsof)
87 #:use-module (gnu packages man)
88 #:use-module (gnu packages maths)
89 #:use-module (gnu packages ncurses)
90 #:use-module (gnu packages networking)
91 #:use-module (gnu packages node)
92 #:use-module (gnu packages perl)
93 #:use-module (gnu packages pkg-config)
94 #:use-module (gnu packages protobuf)
95 #:use-module (gnu packages python)
96 #:use-module (gnu packages python-xyz)
97 #:use-module (gnu packages ragel)
98 #:use-module (gnu packages rsync)
99 #:use-module (gnu packages sqlite)
100 #:use-module (gnu packages tls)
101 #:use-module (gnu packages valgrind)
102 #:use-module (gnu packages version-control)
103 #:use-module (gnu packages virtualization)
104 #:use-module (gnu packages web-browsers)
105 #:use-module (gnu packages serialization)
106 #:use-module (gnu packages xml)
107 #:use-module (gnu packages web)
108 #:use-module (gnu packages ruby)
109 #:use-module (gnu packages ruby-check))
25 110
26;;; Commentary: 111(define %prawn-project-licenses
27;;; 112 ;; This set of licenses applies to most (all?) components of the Prawn
28;;; Please: Try to add new module packages in alphabetic order. 113 ;; project (it is triple licensed).
29;;; 114 (list license:ruby
30;;; Code: 115 license:gpl2+
31 116 license:gpl3+))
117
118(define-public ruby-commander
119 (package
120 (name "ruby-commander")
121 (version "4.6.0")
122 (source
123 (origin
124 (method url-fetch)
125 (uri (rubygems-uri "commander" version))
126 (sha256
127 (base32
128 "1n8k547hqq9hvbyqbx2qi08g0bky20bbjca1df8cqq5frhzxq7bx"))))
129 (build-system ruby-build-system)
130 (arguments
131 (list
132 #:test-target "spec"
133 #:phases
134 #~(modify-phases %standard-phases
135 ;; Don't run or require rubocop, the code linting tool, as this is a
136 ;; bit unnecessary.
137 (add-after 'unpack 'dont-run-rubocop
138 (lambda _
139 (substitute* "Rakefile"
140 ((".*rubocop.*") "")
141 ((".*RuboCop.*") "")))))))
142 (propagated-inputs
143 (list ruby-highline))
144 (native-inputs
145 (list bundler ruby-rspec-core ruby-rspec-expectations
146 ruby-rspec-mocks ruby-simplecov))
147 (home-page "https://github.com/commander-rb/commander")
148 (synopsis "Library for building Ruby command-line executables")
149 (description
150 "Commander aims to be a complete solution for Ruby command-line
151executables. Commander bridges the gap between other terminal related
152libraries (OptionParser, HighLine), while providing many new features, and an
153elegant API.")
154 (license license:expat)))
155
156(define-public ruby-highline
157 (package
158 (name "ruby-highline")
159 (version "2.0.1")
160 (source
161 (origin
162 (method url-fetch)
163 (uri (rubygems-uri "highline" version))
164 (sha256
165 (base32
166 "0gr6pckj2jayxw1gdgh9193j5jag5zrrqqlrnl4jvcwpyd3sn2zc"))))
167 (build-system ruby-build-system)
168 (arguments
169 `(#:tests? #f)) ;; TODO: NameError: uninitialized constant SPEC
170 (native-inputs
171 (list bundler ruby-code-statistics))
172 (synopsis
173 "HighLine helps you build command-line interfaces")
174 (description
175 "HighLine provides a high-level IO library that provides validation,
176type conversion, and more for command-line interfaces. HighLine also includes
177a menu system for providing multiple options to the user.")
178 (home-page "https://github.com/JEG2/highline")
179 (license (list license:gpl2 license:ruby))))
180
181(define-public ruby-hoe
182 (package
183 (name "ruby-hoe")
184 (version "4.2.2")
185 (source (origin
186 (method url-fetch)
187 (uri (rubygems-uri "hoe" version))
188 (sha256
189 (base32
190 "1rhj1zs02mpdw6f4fh3mpfmj0p5pfar7rfxm758pk7l931mm8pyn"))))
191 (build-system ruby-build-system)
192 (arguments
193 (list
194 ;; Circular dependency with minitest
195 #:tests? #f))
196 (synopsis "Ruby project management helper")
197 (description
198 "Hoe is a rake/rubygems helper for project Rakefiles. It helps manage,
199maintain, and release projects and includes a dynamic plug-in system allowing
200for easy extensibility. Hoe ships with plug-ins for all the usual project
201tasks including rdoc generation, testing, packaging, deployment, and
202announcement.")
203 (home-page "https://www.zenspider.com/projects/hoe.html")
204 (license license:expat)))
205
206(define-public ruby-hoe-3
207 (package
208 (inherit ruby-hoe)
209 (version "3.26.0")
210 (source (origin
211 (method url-fetch)
212 (uri (rubygems-uri "hoe" version))
213 (sha256
214 (base32
215 "02vmphnfzna1dbb1l5nczcvlvvsg4flr26bdhmvdyf447bpswa63"))))))
216
217(define-public ruby-rsync
218 (package
219 (name "ruby-rsync")
220 (version "1.0.9")
221 (source
222 (origin
223 (method url-fetch)
224 (uri (rubygems-uri "rsync" version))
225 (sha256
226 (base32
227 "0p8b27q1gvxilqfq2528xpwglzcm2myikkjxpqk7mwbwg9r6knxv"))))
228 (build-system ruby-build-system)
229 (arguments
230 '(#:test-target "spec"
231 #:phases
232 (modify-phases %standard-phases
233 (add-after 'unpack 'remove-coveralls-requirement
234 (lambda _
235 (substitute* "spec/spec_helper.rb"
236 (("require 'coveralls'") "")
237 (("Coveralls.wear!") "")))))))
238 (native-inputs
239 (list bundler rsync ruby-rspec-core ruby-rspec-expectations
240 ruby-rspec-mocks))
241 (home-page "https://github.com/jbussdieker/ruby-rsync")
242 (synopsis "Ruby wrapper around rsync")
243 (description
244 "Ruby Rsync is a Ruby library that can synchronize files between remote
245hosts by wrapping the @file{rsync} binary.")
246 (license license:expat)))
247
248(define-public ruby-i18n
249 (package
250 (name "ruby-i18n")
251 (version "1.13.0")
252 (source (origin
253 (method url-fetch)
254 (uri (rubygems-uri "i18n" version))
255 (sha256
256 (base32
257 "1yk33slipi3i1kydzrrchbi7cgisaxym6pgwlzx7ir8vjk6wl90x"))))
258 (build-system ruby-build-system)
259 (arguments
260 '(#:tests? #f)) ; no tests
261 (propagated-inputs `(("concurrent-ruby" ,ruby-concurrent)))
262 (synopsis "Internationalization library for Ruby")
263 (description "Ruby i18n is an internationalization and localization
264solution for Ruby programs. It features translation and localization,
265interpolation of values to translations, pluralization, customizable
266transliteration to ASCII, flexible defaults, bulk lookup, lambdas as
267translation data, custom key/scope separator, custom exception handlers, and
268an extensible architecture with a swappable backend.")
269 (home-page "https://github.com/ruby-i18n/i18n")
270 (license license:expat)))
271
272(define-public ruby-ice-nine
273 (package
274 (name "ruby-ice-nine")
275 (version "0.11.2")
276 (source
277 (origin
278 (method url-fetch)
279 (uri (rubygems-uri "ice_nine" version))
280 (sha256
281 (base32 "1nv35qg1rps9fsis28hz2cq2fx1i96795f91q4nmkm934xynll2x"))))
282 (build-system ruby-build-system)
283 (arguments
284 (list #:tests? #f)) ;Dependency on convoluted unpackaged ruby-devtools.
285 (synopsis "Deep Freeze Ruby Objects")
286 (description
287 "This package provides a function to deep freeze Ruby objects.")
288 (home-page "https://github.com/dkubb/ice_nine")
289 (license license:expat)))
290
291(define-public ruby-io-console
292 (package
293 (name "ruby-io-console")
294 (version "0.6.0")
295 (source (origin
296 (method git-fetch) ;for tests
297 (uri (git-reference
298 (url "https://github.com/ruby/io-console/")
299 (commit (string-append "v" version))))
300 (file-name (git-file-name name version))
301 (sha256
302 (base32
303 "0gwxrp29b6awkid1sf85sbh529mnq6hb86m8c2443cm6nc4vr8qb"))))
304 (build-system ruby-build-system)
305 (arguments
306 (list #:phases #~(modify-phases %standard-phases
307 (add-after 'unpack 'delete-rakelib-files
308 (lambda _
309 ;; These depend on git and other extraneous
310 ;; dependencies, and are loaded by rake.
311 (delete-file-recursively "rakelib"))))))
312 (native-inputs (list ruby-rake-compiler))
313 (synopsis "Console capabilities library for IO instances")
314 (description "IO.console adds console capabilities to Ruby IO instances.")
315 (home-page "https://github.com/ruby/io-console")
316 (license license:bsd-2)))
317
318(define-public ruby-irb
319 (package
320 (name "ruby-irb")
321 (version "1.6.3")
322 (source (origin
323 (method url-fetch)
324 (uri (rubygems-uri "irb" version))
325 (sha256
326 (base32
327 "1h9s07n5v3z029v18924ws9vdkdc80n6llp9ccx77yg1krv2g0f3"))))
328 (build-system ruby-build-system)
329 ;; XXX: Disable the test suite, as it requires debug, which requires this
330 ;; package (dependency cycle).
331 (arguments (list #:tests? #f))
332 (propagated-inputs (list ruby-reline))
333 (synopsis "Ruby command-line tool for REPL (Read Eval Print Loop)")
334 (description "IRB is an interactive Ruby command-line tool for REPL (Read
335Eval Print Loop).")
336 (home-page "https://github.com/ruby/irb")
337 (license license:bsd-2)))
338
339(define-public ruby-irb-1.1.1
340 (package
341 (inherit ruby-irb)
342 (version "1.1.1")
343 (source (origin
344 (method url-fetch)
345 (uri (rubygems-uri "irb" version))
346 (sha256
347 (base32
348 "0h605w798s2bg9wg681ynvvzgdz1yy69gh387bl0khw9ll7wkn8v"))))))
349
350(define-public ruby-iruby
351 (package
352 (name "ruby-iruby")
353 (version "0.3")
354 (source
355 (origin
356 (method url-fetch)
357 (uri (rubygems-uri "iruby" version))
358 (sha256
359 (base32
360 "1wdf2c0x8y6cya0n3y0p3p7b1sxkb2fdavdn2k58rf4rs37s7rzn"))))
361 (build-system ruby-build-system)
362 (arguments
363 ;; TODO: Tests currently fail.
364 ;;
365 ;; Finished in 1.764405s, 1.1335 runs/s, 5.1009 assertions/s.
366 ;;
367 ;; 1) Failure:
368 ;; IntegrationTest#test_interaction [/tmp/guix-build-ruby-iruby-0.3.drv-0/gem/test/integration_test.rb:25]:
369 ;; In [ expected
370 ;;
371 ;; 2 runs, 9 assertions, 1 failures, 0 errors, 0 skips
372 '(#:tests? #f
373 #:phases
374 (modify-phases %standard-phases
375 (add-after 'unpack 'patch-ipython
376 (lambda* (#:key inputs #:allow-other-keys)
377 (substitute* "lib/iruby/command.rb"
378 (("version = `")
379 (string-append
380 "version = `"
381 (assoc-ref inputs "python-ipython")
382 "/bin/"))
383 (("Kernel\\.exec\\('")
384 (string-append
385 "Kernel.exec('"
386 (assoc-ref inputs "python-ipython")
387 "/bin/"))))))))
388 (inputs
389 (list python-ipython))
390 (propagated-inputs
391 (list ruby-bond
392 ruby-data_uri
393 ruby-mimemagic
394 ruby-multi-json
395 ruby-cztop
396 ;; Optional inputs
397 ruby-pry))
398 (synopsis "Ruby kernel for Jupyter/IPython")
399 (description
400 "This package provides a Ruby kernel for Jupyter/IPython frontends (e.g.
401notebook).")
402 (home-page "https://github.com/SciRuby/iruby")
403 (license license:expat)))
404
405(define-public ruby-date
406 (package
407 (name "ruby-date")
408 (version "3.3.3")
409 (source (origin
410 (method git-fetch)
411 (uri (git-reference
412 (url "https://github.com/ruby/date")
413 (commit (string-append "v" version))))
414 (file-name (git-file-name name version))
415 (sha256
416 (base32
417 "1jiqjnaap1jk1r8z37iicnzqha1rhc713qmcir17f4vnz8ac8v75"))))
418 (build-system ruby-build-system)
419 (arguments (list #:test-target "default"))
420 (native-inputs (list ruby-rake-compiler))
421 (synopsis "Ruby @code{Object} subclass with date comparison capability")
422 (description "This package provides a subclass of @code{Object} that
423includes the @code{Comparable} module for handling dates.")
424 (home-page "https://github.com/ruby/date")
425 (license license:bsd-2)))
426
427(define-public ruby-time
428 (package
429 (name "ruby-time")
430 (version "0.3.0")
431 (source (origin
432 (method git-fetch) ; for tests
433 (uri (git-reference
434 (url "https://github.com/ruby/time")
435 (commit (string-append "v" version))))
436 (file-name (git-file-name name version))
437 (sha256
438 (base32
439 "0jd6df2lxd60wcxyaf37j8v3nnfn952d5xhg6aap9zlcdmkk4g2n"))))
440 (build-system ruby-build-system)
441 (propagated-inputs (list ruby-date))
442 (native-inputs (list ruby-test-unit-ruby-core))
443 (synopsis
444 "Extends the Time class with methods for parsing and conversion")
445 (description
446 "When this gem is @code{require}d, it extends the Time class with with
447additional methods for parsing and converting Times.")
448 (home-page "https://github.com/ruby/time")
449 (license license:bsd-2)))
450
451(define-public ruby-sorted-set
452 (package
453 (name "ruby-sorted-set")
454 (version "1.0.3")
455 (source (origin
456 (method url-fetch)
457 (uri (rubygems-uri "sorted_set" version))
458 (sha256
459 (base32
460 "0brpwv68d7m9qbf5js4bg8bmg4v7h4ghz312jv9cnnccdvp8nasg"))))
461 (build-system ruby-build-system)
462 (propagated-inputs
463 (list ruby-rbtree ruby-set))
464 (synopsis
465 "Ruby Set variant whose elements are sorted in ascending order")
466 (description
467 "This package implements a variant of Set whose elements are sorted in
468ascending order")
469 (home-page "https://github.com/knu/sorted_set")
470 (license license:bsd-2)))
471
472(define-public ruby-rspec-given
473 (package
474 (name "ruby-rspec-given")
475 (version "3.8.2")
476 (source
477 (origin
478 (method url-fetch)
479 (uri (rubygems-uri "rspec-given" version))
480 (sha256
481 (base32
482 "0xzzxjjzwrsp84p12sd6ab3jbm9kh7sbnqpxgc9mlfq3s3ll0fdj"))))
483 (build-system ruby-build-system)
484 (arguments
485 `(#:test-target "rs"
486 #:phases
487 (modify-phases %standard-phases
488 (add-after 'unpack 'fix-rakefile
489 (lambda _
490 (substitute* '("Rakefile" "rakelib/gemspec.rake")
491 (("require '\\./lib/given/.*") "")
492 (("Given::VERSION") (format #f "~s" ,version))
493 ;; Fix the error: "cannot load such file -- example_helper"
494 (("sh \"rspec")
495 "sh \"rspec -Ilib:examples"))))
496 (add-after 'extract-gemspec 'delete-failing-tests
497 ;; See: https://github.com/jimweirich/rspec-given/issues/57.
498 (lambda _
499 (substitute* ".gemspec"
500 (("\"spec/lib/given/natural_assertion_spec.rb\".freeze, ")
501 "")
502 (("\"examples/integration/failing_messages_spec.rb\".freeze, ")
503 ""))
504 (delete-file "spec/lib/given/natural_assertion_spec.rb")
505 (delete-file "examples/integration/failing_messages_spec.rb"))))))
506 (native-inputs
507 (list ruby-rspec ruby-minitest))
508 (propagated-inputs
509 (list ruby-given-core ruby-rspec))
510 (synopsis "Given/When/Then for RSpec and Minitest")
511 (description "Given is an RSpec extension that allows the use of
512Given/When/Then terminology when defining specifications, in a way similar to
513the Cucumber Gherkin language.")
514 (home-page "https://github.com/rspec-given/rspec-given")
515 (license license:expat)))
516
517(define-public ruby-rspec-its
518 (package
519 (name "ruby-rspec-its")
520 (version "1.3.0")
521 (source
522 (origin
523 (method git-fetch)
524 (uri (git-reference
525 (url "https://github.com/rspec/rspec-its")
526 (commit (string-append "v" version))))
527 (file-name (git-file-name name version))
528 (sha256
529 (base32
530 "02mlsc9d4d1cjj5vahi8v3q8hyn9fyiv8nnlidhgfh186qp20g1p"))))
531 (build-system ruby-build-system)
532 (arguments
533 `(#:test-target "spec"
534 #:phases
535 (modify-phases %standard-phases
536 (add-after 'unpack 'dont-install-gems-from-gemfile
537 (lambda _
538 (substitute* "Gemfile"
539 (("rspec rspec-core rspec-expectations rspec-mocks rspec-support")
540 ""))))
541 (add-before 'build 'loosen-ffi-requirement
542 (lambda _
543 ;; Accept any version of ruby-ffi.
544 (substitute* "Gemfile"
545 ((" gem 'ffi', '~> 1\\.9\\.25'")
546 " gem 'ffi'"))))
547 (add-before 'build 'remove-unnecessary-dependency-versions-from-gemfile
548 (lambda _
549 (substitute* "rspec-its.gemspec"
550 (("rake.*") "rake'\n")
551 (("spec.add_development_dependency 'cucumber'.*")
552 "spec.add_development_dependency 'cucumber'\n")
553 (("bundler.*") "bundler'\n")
554 (("\"aruba.*") "'aruba'\n")))))))
555 (propagated-inputs
556 (list ruby-rspec-core ruby-rspec-expectations))
557 (native-inputs
558 (list bundler ruby-cucumber ruby-ffi ruby-aruba))
559 (synopsis "RSpec extension that provides the @code{its} method")
560 (description
561 "RSpec::Its provides the its method as a short-hand to specify the expected
562value of an attribute. For example, one can use @code{its(:size)\\{should
563eq(1)\\}}.")
564 (home-page "https://github.com/rspec/rspec-its")
565 (license license:expat)))
566
567;;; This variant is used to break a cycle with ruby-protobuf.
568(define-public ruby-rspec-its-minimal
569 (hidden-package
570 (package
571 (inherit ruby-rspec-its)
572 (arguments
573 (substitute-keyword-arguments (package-arguments ruby-rspec-its)
574 ((#:tests? _ #f) #f)))
575 (native-inputs '()))))
576
577(define-public ruby-rspec-block-is-expected
578 (package
579 (name "ruby-rspec-block-is-expected")
580 (version "1.0.5")
581 (source (origin
582 (method git-fetch) ;for tests
583 (uri (git-reference
584 (url "https://github.com/pboling/rspec-block_is_expected")
585 (commit (string-append "v" version))))
586 (file-name (git-file-name name version))
587 (sha256
588 (base32
589 "1zi5z12lkw3fiwgr7g61845wj73asr2vzw4zsjv45klnnfspwass"))))
590 (build-system ruby-build-system)
591 (arguments
592 (list #:phases #~(modify-phases %standard-phases
593 (add-after 'unpack 'relax-requirements
594 (lambda _
595 (substitute* "Rakefile"
596 (("require 'rubocop/rake_task'") "")
597 (("RuboCop::RakeTask.new") ""))
598 ;; Contains extraneous requirements not actually
599 ;; needed for the test suite.
600 (delete-file "Gemfile")))
601 (add-before 'build 'drop-signing-key-requirement
602 (lambda _
603 (substitute* "rspec-block_is_expected.gemspec"
604 (("spec.signing_key =.*")
605 "spec.signing_key = nil")))))))
606 (native-inputs (list ruby-rspec-pending-for ruby-rspec-expectations))
607 (propagated-inputs (list ruby-rspec-core))
608 (synopsis "Simplify testing of blocks in RSpec")
609 (description "This RSpec plugin allows you to use @code{block_is_expected}
610similarly to how you would use @code{is_expected} if a block was wrapping the
611subject.")
612 (home-page "https://github.com/pboling/rspec-block_is_expected")
613 (license license:expat)))
614
615(define-public ruby-rspec-pending-for
616 (package
617 (name "ruby-rspec-pending-for")
618 (version "0.1.16")
619 (source (origin
620 (method git-fetch) ;for tests
621 (uri (git-reference
622 (url "https://github.com/pboling/rspec-pending_for")
623 (commit (string-append "v" version))))
624 (file-name (git-file-name name version))
625 (sha256
626 (base32
627 "107l560vm0kx25w5iy5rsk9ly8dxzr81b31284j514f4hkd0qv3m"))))
628 (build-system ruby-build-system)
629 (native-inputs (list ruby-rspec ruby-simplecov))
630 (propagated-inputs (list ruby-rspec-core ruby-ruby-engine
631 ruby-ruby-version))
632 (synopsis "Skip RSpec tests for specific Ruby engines or versions")
633 (description "This RSpec plugin makes it easy to mark test cases as
634pending or skipped for a specific Ruby engine (e.g. MRI or JRuby) or version
635combinations.")
636 (home-page "https://github.com/pboling/rspec-pending_for")
637 (license license:expat)))
638
639(define-public ruby-rspec-rerun
640 (package
641 (name "ruby-rspec-rerun")
642 (version "1.1.0")
643 (source
644 (origin
645 (method url-fetch)
646 (uri (rubygems-uri "rspec-rerun" version))
647 (sha256
648 (base32
649 "1gy7znkcaqhpccfnk2nvaqbsvgxy3q57cmjwkl9fi1zabaq5lbkj"))))
650 (build-system ruby-build-system)
651 (arguments
652 '(;; No included tests
653 #:tests? #f))
654 (propagated-inputs (list ruby-rspec))
655 (synopsis "Track failed RSpec tests to re-run them")
656 (description
657 "This package provides an automated way to track, and then re-run failed
658RSpec tests.")
659 (home-page "https://github.com/dblock/rspec-rerun")
660 (license license:expat)))
661
662(define-public ruby-rspec-stubbed-env
663 ;; There is no release nor tag (see:
664 ;; https://github.com/pboling/rspec-stubbed_env/issues/7).
665 (let ((revision "0")
666 (commit "9d767dec77a6d130f6ad83c48a00a5c81b14b9fa"))
667 (package
668 (name "ruby-rspec-stubbed-env")
669 (version (git-version "1.0.0" revision commit))
670 (source (origin
671 (method git-fetch)
672 (uri (git-reference
673 (url "https://github.com/pboling/rspec-stubbed_env")
674 (commit commit)))
675 (file-name (git-file-name name version))
676 (sha256
677 (base32
678 "1dy4m04h613dp0s59rknjd6h4lqs1h17mffc5kd8kh046mk8nr1p"))))
679 (build-system ruby-build-system)
680 (arguments
681 (list #:test-target "spec"
682 #:phases #~(modify-phases %standard-phases
683 (add-after 'unpack 'streamline-requirements
684 (lambda _
685 ;; Remove extraneous development dependencies.
686 (substitute* "rspec-stubbed_env.gemspec"
687 ((".*bundler.*") "")
688 ((".*rubocop.*") "")))))))
689 (native-inputs (list ruby-simplecov))
690 (propagated-inputs (list ruby-rspec))
691 (synopsis "RSpec plugin to stub environment variables")
692 (description
693 "This RSpec plugin can be used to stub environment variables in a scoped
694context for testing.")
695 (home-page "https://github.com/pboling/rspec-stubbed_env")
696 (license license:expat))))
697
698(define-public ruby-rspec-wait
699 (package
700 (name "ruby-rspec-wait")
701 (version "0.0.9")
702 (source
703 (origin
704 (method url-fetch)
705 (uri (rubygems-uri "rspec-wait" version))
706 (sha256
707 (base32
708 "0gvj1bp5ccx001dyvcgk2j49s5sl6vs9fdaqqb08z3bd1554hsww"))))
709 (build-system ruby-build-system)
710 (arguments
711 '(#:phases
712 (modify-phases %standard-phases
713 (replace 'check
714 (lambda _
715 (invoke "rake" "spec"))))))
716 (native-inputs
717 (list bundler))
718 (propagated-inputs
719 (list ruby-rspec))
720 (home-page "https://github.com/laserlemon/rspec-wait")
721 (synopsis "Wait for conditions in RSpec")
722 (description
723 "RSpec::Wait strives to make it easier to test asynchronous or slow
724interactions.")
725 (license license:expat)))
726
727(define-public ruby-rspec-debug
728 (package
729 (name "ruby-rspec-debug")
730 (version "0.2.0")
731 (source (origin
732 (method git-fetch) ;for tests
733 (uri (git-reference
734 (url "https://github.com/ko1/rspec-debug")
735 (commit (string-append "v" version))))
736 (file-name (git-file-name name version))
737 (sha256
738 (base32
739 "125p1zxjznkk765nyqvkksw8x1nbm7xk4sjc1wza2fyp5hvyiddn"))))
740 (build-system ruby-build-system)
741 (arguments
742 (list #:test-target "spec"
743 #:phases #~(modify-phases %standard-phases
744 (add-after 'extract-gemspec 'relax-dependencies
745 (lambda _
746 (substitute* "Gemfile"
747 (("~>") ">=")))))))
748 (native-inputs (list ruby-rspec))
749 (propagated-inputs (list ruby-debug))
750 (synopsis "Invoke Ruby debugger when spec fails")
751 (description "This package can be used to have the execution stopped for
752inspection in the Ruby debugger upon encountering a failure. To use it, set
753the @env{RSPEC_DEBUG} environment variable to @samp{true} then invoke the
754@command{rspec} command as usual.")
755 (home-page "https://github.com/ko1/rspec-debug")
756 (license license:expat)))
757
758(define-public ruby-specinfra
759 (package
760 (name "ruby-specinfra")
761 (version "2.88.1")
762 (source (origin
763 (method url-fetch)
764 (uri (rubygems-uri "specinfra" version))
765 (sha256
766 (base32
767 "07lap3sknncffpq9jw1x1mn9c5xxd058wxs5vnyz1y0lawdjfnsf"))))
768 (build-system ruby-build-system)
769 (propagated-inputs (list ruby-net-scp ruby-net-ssh ruby-net-telnet
770 ruby-sfl))
771 (arguments
772 (list
773 #:test-target "spec"
774 #:phases
775 #~(modify-phases %standard-phases
776 (add-after 'extract-gemspec 'relax-dependencies
777 (lambda _
778 (substitute* "specinfra.gemspec"
779 (("%q<net-telnet>.freeze, \\[.*\\]")
780 "%q<net-telnet>.freeze, [\">= 0\"]")))))))
781 (synopsis "Common layer for serverspec and itamae")
782 (description "This Gem provides a common layer for serverspec and
783itamae.")
784 (home-page "https://github.com/mizzy/specinfra")
785 (license license:expat)))
786
787(define-public ruby-serverspec
788 (package
789 (name "ruby-serverspec")
790 (version "2.42.3")
791 (source (origin
792 (method url-fetch)
793 (uri (rubygems-uri "serverspec" version))
794 (sha256
795 (base32
796 "0kfaqrqynly8n3dy5qrbjvx4lx6mk9a5vynwb7xwqj8bixm0mab4"))))
797 (build-system ruby-build-system)
798 (propagated-inputs (list ruby-multi-json ruby-rspec ruby-rspec-its
799 ruby-specinfra))
800 (arguments
801 (list #:test-target "spec"))
802 (synopsis
803 "RSpec tests for servers configured by Puppet, Chef, Itamae, etc")
804 (description
805 "With Serverspec, you can write RSpec tests for checking your servers are
806configured correctly.
807
808Serverspec tests your servers’ actual state by executing command locally, via
809SSH, via WinRM, via Docker API and so on. So you don’t need to install any
810agent softwares on your servers and can use any configuration management
811tools, Puppet, Ansible, CFEngine, Itamae and so on.
812
813But the true aim of Serverspec is to help refactoring infrastructure code.")
814 (home-page "https://serverspec.org/")
815 (license license:expat)))
816
817(define-public ruby-base64
818 (package
819 (name "ruby-base64")
820 (version "0.2.0")
821 (source
822 (origin
823 (method url-fetch)
824 (uri (rubygems-uri "base64" version))
825 (sha256
826 (base32 "01qml0yilb9basf7is2614skjp8384h2pycfx86cr8023arfj98g"))))
827 (build-system ruby-build-system)
828 (arguments '(#:tests? #f)) ; No tests bundled.
829 (synopsis "Base64 encoding/decoding in Ruby")
830 (description
831 "This package provides support for encoding and decoding binary data
832using a Base64 representation.")
833 (home-page "https://github.com/ruby/base64")
834 (license (list license:bsd-2))))
835
836(define-public ruby-bump
837 (package
838 (name "ruby-bump")
839 (version "0.7.0")
840 (source
841 (origin
842 (method url-fetch)
843 (uri (rubygems-uri "bump" version))
844 (sha256
845 (base32
846 "1xinbr9rzh6cj75x24niwgqcnbhdxc68a8bc41lk8xv6fd906fym"))))
847 (build-system ruby-build-system)
848 (arguments
849 '(;; No included tests
850 #:tests? #f))
851 (synopsis "Tool for working with Rubygems")
852 (description
853 "Bump provides commands to manage Rubygem versioning, updating to the
854next patch version for example.")
855 (home-page "https://github.com/gregorym/bump")
856 (license license:expat)))
857
858(define-public ruby-rjb
859 (package
860 (name "ruby-rjb")
861 (version "1.6.7")
862 (source (origin
863 (method url-fetch)
864 (uri (rubygems-uri "rjb" version))
865 (sha256
866 (base32
867 "0ck802bm8cklhmqsgzhsa0y8lg80qy52dp3m8rlld3zc5gv1rsb9"))))
868 (build-system ruby-build-system)
869 (arguments
870 (list
871 #:tests? #f ; no rakefile
872 #:phases
873 #~(modify-phases %standard-phases
874 (add-before 'build 'set-java-home
875 (lambda* (#:key inputs #:allow-other-keys)
876 (setenv "JAVA_HOME" (assoc-ref inputs "jdk")))))))
877 (native-inputs
878 `(("jdk" ,icedtea "jdk")))
879 (synopsis "Ruby-to-Java bridge using the Java Native Interface")
880 (description "RJB is a bridge program that connects Ruby and Java via the
881Java Native Interface.")
882 (home-page "https://www.artonx.org/collabo/backyard/?RubyJavaBridge")
883 (license license:lgpl2.1+)))
884
885(define-public ruby-log4r
886 (package
887 (name "ruby-log4r")
888 (version "1.1.10")
889 (source
890 (origin
891 (method url-fetch)
892 (uri (rubygems-uri "log4r" version))
893 (sha256
894 (base32
895 "0ri90q0frfmigkirqv5ihyrj59xm8pq5zcmf156cbdv4r4l2jicv"))))
896 (build-system ruby-build-system)
897 (arguments
898 '(#:tests? #f)) ; no Rakefile in gem
899 (synopsis "Flexible logging library for Ruby")
900 (description "Comprehensive and flexible logging library written
901in Ruby for use in Ruby programs. It features a hierarchical logging
902system of any number of levels, custom level names, logger
903inheritance, multiple output destinations per log event, execution
904tracing, custom formatting, thread safteyness, XML and YAML
905configuration, and more.")
906 (home-page "http://log4r.rubyforge.org/")
907 (license license:bsd-3)))
908
909(define-public ruby-atoulme-antwrap
910 (package
911 (name "ruby-atoulme-antwrap")
912 (version "0.7.5")
913 (source (origin
914 (method url-fetch)
915 (uri (rubygems-uri "atoulme-Antwrap" version))
916 (sha256
917 (base32
918 "05s3iw44lqa81f8nfy5f0xjj808600h82zb9bsh46b9kcq2w2kmz"))))
919 (build-system ruby-build-system)
920 ;; Test data required for most of the tests are not included.
921 (arguments `(#:tests? #f))
922 (native-inputs
923 (list ruby-hoe))
924 (inputs
925 (list ruby-rjb))
926 (synopsis "Ruby wrapper for the Ant build tool")
927 (description "Antwrap is a Ruby module that wraps the Apache Ant build
928tool. Antwrap can be used to invoke Ant tasks from a Ruby or a JRuby
929script.")
930 (home-page "http://rubyforge.org/projects/antwrap/")
931 (license license:expat)))
932
933(define-public ruby-atoulme-saikuro
934 (package
935 (name "ruby-atoulme-saikuro")
936 (version "1.2.1")
937 (source (origin
938 (method url-fetch)
939 (uri (rubygems-uri "atoulme-Saikuro" version))
940 (sha256
941 (base32
942 "0kvd2nsxffbza61d3q4j94wrbnbv50r1zy3a7q26f6k706fw1f19"))))
943 (build-system ruby-build-system)
944 (arguments
945 (list
946 #:phases
947 #~(modify-phases %standard-phases
948 (add-after 'unpack 'fix-module-resolution
949 (lambda _
950 (substitute* "lib/saikuro.rb"
951 ;; irb 1.2.0 or later doesn't have RubyToken
952 (("require 'irb/ruby-lex'")
953 "require 'rubygems'\ngem 'irb', '=1.1.1'\nrequire 'irb/ruby-lex'"))))
954 (delete 'check)
955 (add-after 'install 'check
956 (lambda* (#:key outputs #:allow-other-keys)
957 (let* ((out (assoc-ref outputs "out"))
958 (saikuro (string-append out "/bin/saikuro")))
959 (setenv "GEM_PATH" (string-append
960 (getenv "GEM_PATH") ":"
961 #$output "/lib/ruby/vendor_ruby"))
962 (invoke saikuro "--cyclo" "--token" "--input_directory" "tests")))))))
963 (propagated-inputs (list ruby-irb-1.1.1
964 ruby-e2mmap)) ;required by rubygems
965 (synopsis "Cyclomatic complexity analyzer")
966 (description "Saikuro is a Ruby cyclomatic complexity analyzer. When
967given Ruby source code Saikuro will generate a report listing the cyclomatic
968complexity of each method found. In addition, Saikuro counts the number of
969lines per method and can generate a listing of the number of tokens on each
970line of code.")
971 (home-page "http://www.github.com/atoulme/Saikuro")
972 ;; File headers contain the BSD-3 license and the README.rdoc says that
973 ;; "Saikuro uses the BSD license", but the LICENSE file contains the text
974 ;; of the Expat license.
975 (license license:bsd-3)))
976
977(define-public ruby-awesome-print
978 (package
979 (name "ruby-awesome-print")
980 (version "1.9.2")
981 (source
982 (origin
983 (method url-fetch)
984 (uri (rubygems-uri "awesome_print" version))
985 (sha256
986 (base32
987 "0vkq6c8y2jvaw03ynds5vjzl1v9wg608cimkd3bidzxc0jvk56z9"))))
988 (build-system ruby-build-system)
989 (arguments
990 (list
991 #:phases
992 #~(modify-phases %standard-phases
993 (replace 'check
994 (lambda _
995 ;; Remove failing test.
996 (for-each delete-file
997 '("spec/ext/nokogiri_spec.rb"
998 "spec/colors_spec.rb"
999 "spec/formats_spec.rb"
1000 "spec/methods_spec.rb"
1001 "spec/misc_spec.rb"
1002 "spec/objects_spec.rb"))
1003 (invoke "rspec" "-c" "spec"))))))
1004 (native-inputs
1005 (list ruby-nokogiri ruby-rspec ruby-simplecov))
1006 (synopsis "Pretty print Ruby objects to visualize their structure")
1007 (description
1008 "Ruby dubugging companion: pretty print Ruby objects to visualize their
1009structure. Supports custom object formatting via plugins.")
1010 (home-page "https://github.com/awesome-print/awesome_print")
1011 (license license:expat)))
1012
1013(define-public ruby-pandoc-ruby
1014 (package
1015 (name "ruby-pandoc-ruby")
1016 (version "2.1.4")
1017 (source
1018 (origin
1019 (method git-fetch) ;the gem lacks many test files
1020 (uri (git-reference
1021 (url "https://github.com/xwmx/pandoc-ruby")
1022 (commit version)))
1023 (file-name (git-file-name name version))
1024 (sha256
1025 (base32
1026 "03a11clhycyn0jhc7g9davpqd83sn60jqwjy1y145ag9sq6sp935"))))
1027 (build-system ruby-build-system)
1028 (arguments
1029 `(#:tests? #f ; Disable tests since they depend on pandoc behavior
1030 ; and there are no upstream releases.
1031 #:phases
1032 (modify-phases %standard-phases
1033 (add-after 'unpack 'patch-pandoc-path
1034 (lambda* (#:key inputs #:allow-other-keys)
1035 (let ((pandoc (search-input-file inputs "/bin/pandoc")))
1036 (substitute* "lib/pandoc-ruby.rb"
1037 (("@@pandoc_path = 'pandoc'")
1038 (format #f "@@pandoc_path = '~a'" pandoc)))
1039 (substitute* "test/test_pandoc_ruby.rb"
1040 (("('|\")pandoc" _ quote)
1041 (string-append quote pandoc))
1042 (("\\^pandoc")
1043 ".*pandoc")))))
1044 (add-after 'unpack 'adjust-tests
1045 ;; The tests expect filenames with spaces. Because they don't have
1046 ;; spaces the quotes around the output are dropped automatically.
1047 (lambda _
1048 (substitute* "test/test_pandoc_ruby.rb"
1049 (("\\\\\"#\\{file\\.path\\}\\\\\"") "#{file.path}"))))
1050 (add-after 'extract-gemspec 'remove-Gemfile.lock
1051 (lambda _
1052 (delete-file "Gemfile.lock")
1053 (substitute* "pandoc-ruby.gemspec"
1054 (("Gemfile\\.lock") "")))))))
1055 (native-inputs
1056 (list ruby-mocha))
1057 (inputs
1058 (list pandoc))
1059 (synopsis "Ruby wrapper for Pandoc")
1060 (description "PandocRuby is a wrapper for Pandoc, a Haskell library with
1061command line tools for converting one markup format to another. Pandoc can
1062convert documents from a variety of formats including markdown,
1063reStructuredText, textile, HTML, DocBook, LaTeX, and MediaWiki markup to a
1064variety of other formats, including markdown, reStructuredText, HTML, LaTeX,
1065ConTeXt, PDF, RTF, DocBook XML, OpenDocument XML, ODT, GNU Texinfo, MediaWiki
1066markup, groff man pages, HTML slide shows, EPUB, Microsoft Word docx, and
1067more.")
1068 (home-page "https://github.com/xwmx/pandoc-ruby")
1069 (license license:expat)))
1070
1071(define-public ruby-patron
1072 (package
1073 (name "ruby-patron")
1074 (version "0.13.3")
1075 (source
1076 (origin
1077 (method url-fetch)
1078 (uri (rubygems-uri "patron" version))
1079 (sha256
1080 (base32
1081 "0523gddx88zql2mq6655k60gy2ac8vybpzkcf90lmd9nx7wl3fi9"))))
1082 (build-system ruby-build-system)
1083 (inputs
1084 (list curl))
1085 (arguments
1086 `(#:tests? #f)) ; no included tests
1087 (synopsis "Ruby HTTP client library based on @code{libcurl}")
1088 (description
1089 "Patron is a Ruby HTTP client library based on @code{libcurl}. It does
1090not try to expose the full power (read complexity) of @code{libcurl} but
1091instead tries to provide a sane API while taking advantage of @code{libcurl}
1092under the hood.")
1093 (home-page "https://github.com/toland/patron")
1094 (license license:expat)))
1095
1096(define-public ruby-slim
1097 (package
1098 (name "ruby-slim")
1099 (version "5.2.1")
1100 (source
1101 (origin
1102 (method url-fetch)
1103 (uri (rubygems-uri "slim" version))
1104 (sha256
1105 (base32
1106 "1rqk7jn66wgx50b18ndhbppjq55rbcwgqg1rbhnhxwiggvzisdbj"))))
1107 (build-system ruby-build-system)
1108 (arguments
1109 `(#:phases
1110 (modify-phases %standard-phases
1111 ;; See: https://github.com/slim-template/slim/issues/857 and
1112 ;; https://github.com/slim-template/slim/issues/858.
1113 (add-after 'unpack 'skip-broken-tests
1114 (lambda _
1115 (substitute* "test/core/test_embedded_engines.rb"
1116 (("def test_render_with_markdown")
1117 "def skipped_test_render_with_markdown"))
1118 (substitute* "test/translator/test_translator.rb"
1119 (("raise (\"Missing test for.*)" _ tail)
1120 (string-append "print " tail)))))
1121 ;; See: https://salsa.debian.org/ruby-team/ruby-slim/-/commit/
1122 ;; 824862bd99d1675bc699d8fc71ba965a785c1f44.
1123 (add-after 'unpack 'prevent-bundler-interference
1124 (lambda _
1125 (substitute* "Rakefile"
1126 (("require 'bundler/setup'") "nil")
1127 (("Bundler::GemHelper\\.install_tasks") "nil")))))))
1128 (native-inputs
1129 (list ruby-rack-test ruby-rspec-core ruby-sinatra))
1130 (propagated-inputs
1131 (list ruby-temple ruby-tilt))
1132 (synopsis "Minimalist template language for Ruby")
1133 (description "Slim is a template language for Ruby that aims to reduce the
1134syntax to the minimum while remaining clear.")
1135 (home-page "http://slim-lang.com/")
1136 (license license:expat)))
1137
1138(define-public ruby-asciidoctor
1139 (package
1140 (name "ruby-asciidoctor")
1141 (version "2.0.20")
1142 (source
1143 (origin
1144 (method git-fetch) ;the gem release lacks a Rakefile
1145 (uri (git-reference
1146 (url "https://github.com/asciidoctor/asciidoctor")
1147 (commit (string-append "v" version))))
1148 (file-name (git-file-name name version))
1149 (sha256
1150 (base32
1151 "19qvilhwa9plg80ppspn5ys0ybl8qfyaicqbl9w316hk5ldwi1jq"))))
1152 (build-system ruby-build-system)
1153 (arguments
1154 (list
1155 #:test-target "test:all"
1156 #:phases
1157 #~(modify-phases %standard-phases
1158 (add-after 'extract-gemspec 'strip-version-requirements
1159 (lambda _
1160 (delete-file "Gemfile")
1161 (substitute* "asciidoctor.gemspec"
1162 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
1163 (string-append stripped "\n")))))
1164 (add-after 'install 'install-man-page
1165 (lambda* (#:key outputs #:allow-other-keys)
1166 (install-file (search-input-file
1167 outputs (string-append "lib/ruby/vendor_ruby/"
1168 "gems/asciidoctor-"
1169 #$version
1170 "/man/asciidoctor.1"))
1171 (string-append #$output "/share/man/man1")))))))
1172 (native-inputs
1173 (list ruby-asciimath
1174 ruby-coderay
1175 ruby-cucumber
1176 ruby-erubis
1177 ruby-haml
1178 ruby-minitest
1179 ruby-nokogiri
1180 ruby-open-uri-cached
1181 ruby-rouge
1182 ruby-rspec-expectations
1183 ruby-simplecov
1184 ruby-slim
1185 ruby-tilt
1186 ruby-erubi))
1187 (synopsis "Converter from AsciiDoc content to other formats")
1188 (description "Asciidoctor is a text processor and publishing toolchain for
1189converting AsciiDoc content to HTML5, DocBook 5, PDF, and other formats.")
1190 (home-page "https://asciidoctor.org")
1191 (license license:expat)))
1192
1193(define-public ruby-asciidoctor-multipage
1194 (package
1195 (name "ruby-asciidoctor-multipage")
1196 (version "0.0.16")
1197 (source (origin
1198 (method git-fetch)
1199 (uri (git-reference
1200 (url "https://github.com/owenh000/asciidoctor-multipage")
1201 (commit (string-append "v" version))))
1202 (file-name (git-file-name name version))
1203 (sha256
1204 (base32
1205 "0rnz7qxdw5qbi3qjplihhk468kv690njdi06yllgylc75k62ar1p"))))
1206 (propagated-inputs (list ruby-asciidoctor ruby-slim))
1207 (build-system ruby-build-system)
1208 (arguments
1209 `(#:phases (modify-phases %standard-phases
1210 (add-after 'extract-gemspec 'strip-version-requirements
1211 (lambda _
1212 (delete-file "Gemfile")
1213 (substitute* "asciidoctor-multipage.gemspec"
1214 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
1215 (string-append stripped "\n"))))))))
1216 (synopsis
1217 "Asciidoctor extension for generating HTML output using multiple pages")
1218 (description
1219 "Asciidoctor generates single-page documents. This extension
1220splits documents up into multiple HTML pages according to their headings, with
1221configurable levels.")
1222 (license license:expat)
1223 (home-page "https://github.com/owenh000/asciidoctor-multipage")))
1224
1225(define-public ruby-prawn-icon
1226 (package
1227 (name "ruby-prawn-icon")
1228 (version "3.1.0")
1229 (source
1230 (origin
1231 (method url-fetch)
1232 (uri (rubygems-uri "prawn-icon" version))
1233 (sha256
1234 (base32
1235 "049k42bqy4iq9hddf7jah83b6qr8ka63w1d63illh1mf4f4dihdk"))))
1236 (build-system ruby-build-system)
1237 (arguments
1238 `(#:test-target "spec"
1239 #:phases (modify-phases %standard-phases
1240 (add-after 'unpack 'remove-unnecessary-dependencies
1241 (lambda _
1242 (substitute* '("Rakefile" "spec/spec_helper.rb")
1243 ((".*[Bb]undler.*") "")
1244 (("^require 'rubocop.*") "")
1245 (("^RuboCop.*") "")))))))
1246 (native-inputs
1247 (list ruby-pdf-inspector ruby-pdf-reader ruby-rspec ruby-simplecov))
1248 (propagated-inputs
1249 (list ruby-prawn))
1250 (synopsis "Icon fonts for use with the Prawn PDF toolkit")
1251 (description "@code{Prawn::Icon} provides various icon fonts including
1252FontAwesome, PaymentFont and Foundation Icons for use with the Prawn PDF
1253toolkit.")
1254 (home-page "https://github.com/jessedoyle/prawn-icon/")
1255 (license %prawn-project-licenses)))
1256
1257(define-public ruby-css-parser
1258 (package
1259 (name "ruby-css-parser")
1260 (version "1.7.1")
1261 (source
1262 (origin
1263 (method url-fetch)
1264 (uri (rubygems-uri "css_parser" version))
1265 (sha256
1266 (base32
1267 "04c4dl8cm5rjr50k9qa6yl9r05fk9zcb1zxh0y0cdahxlsgcydfw"))))
1268 (build-system ruby-build-system)
1269 (arguments `(#:tests? #f)) ;gem doesn't ship with test suite
1270 (propagated-inputs
1271 (list ruby-addressable))
1272 (synopsis "Ruby Cascading Style Sheets (CSS) parser")
1273 (description "This package allows loading, parsing and cascading Cascading
1274Style Sheets (CSS) rule sets in Ruby.")
1275 (home-page "https://github.com/premailer/css_parser")
1276 (license license:expat)))
1277
1278(define-public ruby-prism
1279 (package
1280 (name "ruby-prism")
1281 (version "1.3.0")
1282 (source (origin
1283 (method git-fetch)
1284 (uri (git-reference
1285 (url "https://github.com/ruby/prism.git")
1286 (commit (string-append "v" version))))
1287 (file-name (git-file-name name version))
1288 (sha256
1289 (base32
1290 "03bs2gbackc3c3k4p979l2p9v215jb1m5h7b44n6yzh18kaimc85"))))
1291 (build-system ruby-build-system)
1292 (arguments
1293 `(#:phases
1294 (modify-phases %standard-phases
1295 (replace 'build
1296 (lambda _
1297 (setenv "CC" ,(cc-for-target))
1298 (invoke "rake" "compile")))
1299 (replace 'install
1300 (lambda* (#:key outputs #:allow-other-keys)
1301 (setenv "GEM_HOME" (string-append (assoc-ref outputs "out")
1302 "/lib/ruby/vendor_ruby"))
1303 (invoke "rake" "install")
1304 ;; Make build reproducible.
1305 (for-each delete-file
1306 (find-files (string-append (assoc-ref outputs "out")
1307 "/lib/ruby/vendor_ruby")
1308 "gem_make.out$")))))))
1309 (native-inputs
1310 (list ruby-rake ruby-rake-compiler))
1311 (synopsis "Parser for Ruby source code")
1312 (description "This package provides a parser for Ruby source code,
1313written in C.")
1314 (home-page "https://ruby.github.io/prism/")
1315 (license license:expat)))
1316
1317(define-public ruby-prawn-svg
1318 (package
1319 (name "ruby-prawn-svg")
1320 (version "0.36.0")
1321 (source
1322 (origin
1323 (method url-fetch)
1324 (uri (rubygems-uri "prawn-svg" version))
1325 (sha256
1326 (base32 "008p1p334h3019x5w5bqvwgmly3g5n08s63va1261nwyvfb955jv"))))
1327 (build-system ruby-build-system)
1328 (arguments
1329 (list #:test-target "spec"
1330 #:phases
1331 #~(modify-phases %standard-phases
1332 (add-after 'unpack 'do-not-use-bundler
1333 (lambda _
1334 (substitute* "spec/spec_helper.rb"
1335 ((".*[Bb]undler.*") ""))))
1336 (replace 'check
1337 (lambda* (#:key tests? #:allow-other-keys)
1338 (when tests?
1339 ;; This test fails due to the recent rspec 3.12 used
1340 ;; (see: https://github.com/mogest/prawn-svg/issues/151).
1341 (delete-file "spec/prawn/svg/interface_spec.rb")
1342 (invoke "rspec" "-Ilib" "-rprawn-svg")))))))
1343 (native-inputs (list ruby-rspec))
1344 (propagated-inputs (list ruby-css-parser ruby-matrix ruby-prawn ruby-rexml))
1345 (synopsis "SVG renderer for the Prawn PDF library")
1346 (description "This library allows rendering Scalable Vector Graphics (SVG)
1347graphics directly into a Portable Document Format (PDF) document using the
1348Prawn module.")
1349 (home-page "https://github.com/mogest/prawn-svg")
1350 (license license:expat)))
1351
1352(define-public ruby-prawn-templates
1353 (package
1354 (name "ruby-prawn-templates")
1355 (version "0.1.2")
1356 (source
1357 (origin
1358 (method git-fetch)
1359 (uri (git-reference
1360 (url "https://github.com/prawnpdf/prawn-templates")
1361 (commit version)))
1362 (file-name (git-file-name name version))
1363 (sha256
1364 (base32
1365 "0wll54wxxwixpwazfn4ffbqvqbfrl01cfsv8y11vnlzy7isx5xvl"))))
1366 (build-system ruby-build-system)
1367 (arguments
1368 `(#:phases (modify-phases %standard-phases
1369 (add-after 'unpack 'do-not-use-bundler
1370 (lambda _
1371 (substitute* "spec/spec_helper.rb"
1372 ((".*[Bb]undler.*") ""))))
1373 (replace 'check
1374 (lambda* (#:key tests? #:allow-other-keys)
1375 (when tests?
1376 (invoke "rspec")))))))
1377 (native-inputs
1378 (list ruby-pdf-inspector ruby-rspec))
1379 (propagated-inputs
1380 (list ruby-pdf-reader ruby-prawn))
1381 (synopsis "Prawn extension to include or combine PDF documents")
1382 (description "This @strong{unmaintained} package provides a Prawn
1383extension that allows including other Portable Document Format (PDF) documents
1384as background or combining several PDF documents into one. This functionality
1385used to be part of Prawn itself, but was extracted from Prawn 0.15.0 because
1386of its many longstanding issues.")
1387 (home-page "https://github.com/prawnpdf/prawn-templates")
1388 (license %prawn-project-licenses)))
1389
1390(define-public ruby-polyglot
1391 (package
1392 (name "ruby-polyglot")
1393 (version "0.3.5")
1394 (source
1395 (origin
1396 (method url-fetch)
1397 (uri (rubygems-uri "polyglot" version))
1398 (sha256
1399 (base32
1400 "1bqnxwyip623d8pr29rg6m8r0hdg08fpr2yb74f46rn1wgsnxmjr"))))
1401 (build-system ruby-build-system)
1402 (arguments `(#:tests? #f)) ;no test suite
1403 (synopsis "Augment @code{require} to load non-Ruby file types")
1404 (description "The Polyglot library allows a Ruby module to register a
1405loader for the file type associated with a filename extension, and it augments
1406@code{require} to find and load matching files.")
1407 (home-page "https://github.com/cjheath/polyglot")
1408 (license license:expat)))
1409
1410(define-public ruby-treetop
1411 (package
1412 (name "ruby-treetop")
1413 (version "1.6.12")
1414 (source
1415 (origin
1416 (method git-fetch) ;no test suite in distributed gem
1417 (uri (git-reference
1418 (url "https://github.com/cjheath/treetop")
1419 (commit (string-append "v" version))))
1420 (file-name (git-file-name name version))
1421 (sha256
1422 (base32
1423 "0cgs6f9z0a9dq5fc03710zsch4gmh1771wq36mq81qsql4x9vksf"))))
1424 (build-system ruby-build-system)
1425 (arguments
1426 `(#:test-target "spec"))
1427 (native-inputs
1428 (list ruby-activesupport ruby-rr ruby-rspec))
1429 (propagated-inputs
1430 (list ruby-polyglot))
1431 (synopsis "Ruby-based parsing DSL based on parsing expression grammars")
1432 (description "This package provides a Ruby-based Parsing Expression
1433Grammar (PEG) parser generator Domain Specific Language (DSL).")
1434 (home-page "https://github.com/cjheath/treetop")
1435 (license license:expat)))
1436
1437(define-public ruby-typhoeus
1438 (package
1439 (name "ruby-typhoeus")
1440 (version "1.4.0")
1441 (source
1442 (origin
1443 (method url-fetch)
1444 (uri (rubygems-uri "typhoeus" version))
1445 (sha256
1446 (base32
1447 "1m22yrkmbj81rzhlny81j427qdvz57yk5wbcf3km0nf3bl6qiygz"))))
1448 (build-system ruby-build-system)
1449 (arguments
1450 `(#:tests? #f)) ; no included tests
1451 (propagated-inputs
1452 (list ruby-ethon))
1453 (synopsis "@code{libcurl} wrapper in Ruby")
1454 (description
1455 "Like a modern code version of the mythical beast with 100 serpent heads,
1456Typhoeus runs HTTP requests in parallel while cleanly encapsulating handling
1457logic.")
1458 (home-page "https://github.com/typhoeus/typhoeus")
1459 (license license:expat)))
1460
1461;;; A minimal variant used to build ruby-rubocop itself.
1462(define ruby-rubocop-capybara-minimal
1463 (package
1464 (name "ruby-rubocop-capybara")
1465 (version "2.21.0")
1466 (source (origin
1467 (method git-fetch) ;for tests
1468 (uri (git-reference
1469 (url "https://github.com/rubocop/rubocop-capybara")
1470 (commit (string-append "v" version))))
1471 (file-name (git-file-name name version))
1472 (sha256
1473 (base32
1474 "19r2s782r9ch2g1lxgrvk22d9qqkxi69brza16bfwp2rl2064qnc"))))
1475 (build-system ruby-build-system)
1476 (arguments (list #:tests? #f))
1477 (synopsis "Capybara plugin for RuboCop")
1478 (description "This package provides a RuboCop plugin that can be used for
1479code style checking of Capybara test files (RSpec, Cucumber, Minitest).")
1480 (home-page "https://github.com/rubocop/rubocop-capybara")
1481 (license license:expat)))
1482
1483(define-public ruby-rubocop-capybara
1484 (package
1485 (inherit ruby-rubocop-capybara-minimal)
1486 (arguments
1487 (list #:test-target "spec"
1488 #:phases #~(modify-phases %standard-phases
1489 (add-after 'unpack 'relax-requirements
1490 (lambda _
1491 (substitute* "Gemfile"
1492 (("gem 'rubocop-rspec', '~> 2.16.0'")
1493 "gem 'rubocop-rspec', '>= 2.16.0'")
1494 (("gem 'danger'.*") "")))))))
1495 (native-inputs
1496 (list ruby-bump
1497 ruby-rack
1498 ruby-rake
1499 ruby-rspec
1500 ruby-rubocop
1501 ruby-rubocop-performance-minimal
1502 ruby-rubocop-rake-minimal
1503 ruby-rubocop-rspec-minimal
1504 ruby-simplecov
1505 ruby-yard))))
1506
1507(define-public ruby-rubocop-factory-bot
1508 (package
1509 (name "ruby-rubocop-factory-bot")
1510 (version "2.26.1")
1511 (source
1512 (origin
1513 (method url-fetch)
1514 (uri (rubygems-uri "rubocop-factory_bot" version))
1515 (sha256
1516 (base32 "1aljadsjx7affcarzbhz7pydpy6fgqb8hl951y0cmrffxpa3rqcd"))))
1517 (build-system ruby-build-system)
1518 (arguments '(#:tests? #f)) ; No tests bundled.
1519 (synopsis "Code style checking for factory_bot files")
1520 (description
1521 "This package provides a plugin for the @code{RuboCop} code style
1522enforcing & linting tool for @code{factory_bot} files.")
1523 (home-page "https://github.com/rubocop/rubocop-factory_bot")
1524 (license license:expat)))
1525
1526;;; A minimal variant used to build ruby-rubocop itself.
1527(define ruby-rubocop-rake-minimal
1528 (package
1529 (name "ruby-rubocop-rake")
1530 (version "0.6.0")
1531 (source (origin
1532 (method git-fetch) ;for tests
1533 (uri (git-reference
1534 (url "https://github.com/rubocop/rubocop-rake")
1535 (commit (string-append "v" version))))
1536 (file-name (git-file-name name version))
1537 (sha256
1538 (base32
1539 "1r53szwglikbir1fvpz4i51p915khrrkl6rp61zcx3dcrclkr3ld"))))
1540 (build-system ruby-build-system)
1541 (arguments (list #:tests? #f)) ;avoid extra dependencies
1542 (synopsis "RuboCop plugin for Rake")
1543 (description "This package provides a RuboCop plugin for Rake.")
1544 (home-page "https://github.com/rubocop/rubocop-rake")
1545 (license license:expat)))
1546
1547(define-public ruby-rubocop-rake
1548 (package
1549 (inherit ruby-rubocop-rake-minimal)
1550 (arguments
1551 (list #:test-target "spec"))
1552 (native-inputs
1553 (list ruby-rake
1554 ruby-rspec
1555 ruby-rubocop
1556 ruby-rubocop-rspec))
1557 (propagated-inputs
1558 (list ruby-rubocop))))
1559
1560;;; A minimal variant used to build ruby-rubocop itself.
1561(define ruby-rubocop-rspec-minimal
1562 (package
1563 (name "ruby-rubocop-rspec")
1564 (version "2.26.0")
1565 (source
1566 (origin
1567 (method git-fetch)
1568 (uri (git-reference
1569 (url "https://github.com/rubocop/rubocop-rspec")
1570 (commit (string-append "v" version))))
1571 (file-name (git-file-name name version))
1572 (sha256
1573 (base32
1574 "1w9whadx60kv4vlbnk77b5yyhhfcg717r9cr334zqznqr1bqr8mh"))))
1575 (build-system ruby-build-system)
1576 (arguments
1577 (list #:tests? #f ;avoid extra dependencies
1578 #:phases
1579 #~(modify-phases %standard-phases
1580 (add-after 'unpack 'relax-requirements
1581 (lambda _
1582 (substitute* "Gemfile"
1583 (("gem 'danger'.*") "")))))))
1584 (propagated-inputs (list ruby-rubocop-factory-bot))
1585 (synopsis "Code style checking for RSpec files")
1586 (description "This package provides a plugin for the RuboCop code style
1587enforcing & linting tool.")
1588 (home-page "https://github.com/rubocop/rubocop-rspec")
1589 (license license:expat)))
1590
1591(define-public ruby-rubocop-rspec
1592 (package
1593 (inherit ruby-rubocop-rspec-minimal)
1594 (arguments
1595 (substitute-keyword-arguments
1596 (package-arguments ruby-rubocop-rspec-minimal)
1597 ((#:tests? _ #f) #t)
1598 ((#:test-target _ "test") "spec")))
1599 (native-inputs
1600 (list ruby-bump
1601 ruby-rack
1602 ruby-rspec
1603 ruby-rubocop-performance-minimal
1604 ruby-rubocop-rake-minimal
1605 ruby-simplecov
1606 ruby-yard))
1607 (propagated-inputs
1608 (list ruby-rubocop
1609 ruby-rubocop-ast
1610 ruby-rubocop-capybara
1611 ruby-rubocop-factory-bot))))
1612
1613(define-public ruby-rubocop-packaging
1614 (package
1615 (name "ruby-rubocop-packaging")
1616 (version "0.5.2")
1617 (source
1618 (origin
1619 (method git-fetch)
1620 (uri (git-reference
1621 (url "https://github.com/utkarsh2102/rubocop-packaging")
1622 (commit (string-append "v" version))))
1623 (file-name (git-file-name name version))
1624 (sha256
1625 (base32
1626 "08jsfp42z0aj32002z2hz8vkmza0jvnrqk9rk2v0xb8qdxkgbx3l"))))
1627 (build-system ruby-build-system)
1628 (arguments
1629 (list #:test-target "spec"
1630 #:phases
1631 #~(modify-phases %standard-phases
1632 (add-after 'unpack 'skip-problematic-tests
1633 (lambda _
1634 ;; Tests are actually running fine, except for a prefix.
1635 ;; This doesn't impair functionality, ignored for now.
1636 (delete-file
1637 "spec/rubocop/cop/packaging/gemspec_git_spec.rb"))))))
1638 (propagated-inputs
1639 (list ruby-rubocop))
1640 (native-inputs
1641 (list ruby-rspec
1642 ruby-yard
1643 ruby-bump))
1644 (synopsis
1645 "Collection of RuboCop checks for downstream compatibility issues")
1646 (description
1647 "This package provides a collection of RuboCop cops to check for
1648downstream compatibility issues in the Ruby code.")
1649 (home-page "https://github.com/utkarsh2102/rubocop-packaging")
1650 (license license:expat)))
1651
1652(define-public ruby-rubocop-performance
1653 (package
1654 (name "ruby-rubocop-performance")
1655 (version "1.23.1")
1656 (source
1657 (origin
1658 (method git-fetch)
1659 (uri (git-reference
1660 (url "https://github.com/rubocop/rubocop-performance")
1661 (commit (string-append "v" version))))
1662 (file-name (git-file-name name version))
1663 (sha256
1664 (base32
1665 "0d1p6pgrcnj58q1g0np5j4vbk7wavj31b4bapi5p4gckqlnc7xjd"))))
1666 (build-system ruby-build-system)
1667 (arguments
1668 `(#:tests? #f ; tests require a git checkout of rubocop's source code.
1669 #:phases
1670 (modify-phases %standard-phases
1671 (replace 'replace-git-ls-files
1672 (lambda _
1673 (substitute* "rubocop-performance.gemspec"
1674 (("`git ls-files -z config lib LICENSE.txt README.md`")
1675 "`find config lib LICENSE.txt README.md \
1676-type f -print0 |sort -z`"))))
1677 (add-before 'check 'set-HOME
1678 (lambda _
1679 (setenv "HOME" "/tmp"))))))
1680 (propagated-inputs
1681 (list ruby-rubocop ruby-rubocop-ast))
1682 (native-inputs
1683 (list ruby-bump ruby-yard))
1684 (synopsis "Performance optimizations checkers for Ruby code")
1685 (description "This package provides a collection of RuboCop cops to check
1686for performance optimizations in Ruby code.")
1687 (home-page "https://docs.rubocop.org/rubocop-performance/")
1688 (license license:expat)))
1689
1690(define-public ruby-rubocop-performance-minimal
1691 (hidden-package
1692 (package
1693 (inherit ruby-rubocop-performance)
1694 (arguments
1695 (substitute-keyword-arguments (package-arguments ruby-rubocop-performance)
1696 ((#:tests? _ #f) #f)))
1697 (propagated-inputs '())
1698 (native-inputs '()))))
1699
1700(define-public ruby-stud
1701 (package
1702 (name "ruby-stud")
1703 (version "0.0.23")
1704 (source (origin
1705 (method url-fetch)
1706 (uri (rubygems-uri "stud" version))
1707 (sha256
1708 (base32
1709 "0qpb57cbpm9rwgsygqxifca0zma87drnlacv49cqs2n5iyi6z8kb"))))
1710 (build-system ruby-build-system)
1711 (native-inputs (list ruby-rspec))
1712 (arguments
1713 (list #:phases #~(modify-phases %standard-phases
1714 ;; No Rakefile is included, so run rspec directly.
1715 (replace 'check
1716 (lambda* (#:key tests? #:allow-other-keys)
1717 (when tests?
1718 (invoke "rspec")))))))
1719 (synopsis "Retries, worker supervision, resource pools and more for Ruby")
1720 (description "The Stud Ruby library adds a few things missing from the
1721standard Ruby library such as:
1722@table @code
1723@item {Stud::Try}
1724Retry on failure, with back-off, where failure is any exception.
1725@item {Stud::Pool}
1726Generic resource pools.
1727@item {Stud::Task}
1728Tasks (threads that can return values, exceptions, etc.)
1729@item {Stud.interval}
1730Interval execution (do X every N seconds).
1731@item {Stud::Buffer}
1732Batch and flush behavior.
1733@end itemize")
1734 (home-page "https://github.com/jordansissel/ruby-stud")
1735 (license license:asl2.0)))
1736
1737(define-public ruby-standard-custom
1738 (package
1739 (name "ruby-standard-custom")
1740 (version "1.0.2")
1741 (source
1742 (origin
1743 (method url-fetch)
1744 (uri (rubygems-uri "standard-custom" version))
1745 (sha256
1746 (base32 "0av55ai0nv23z5mhrwj1clmxpgyngk7vk6rh58d4y1ws2y2dqjj2"))))
1747 (build-system ruby-build-system)
1748 (arguments '(#:tests? #f)) ;Circular dependency on ruby-standard.
1749 (propagated-inputs (list ruby-lint-roller ruby-rubocop))
1750 (synopsis "Plugin of custom cops for Standard Ruby")
1751 (description
1752 "This package provides a implementations of custom cops that are bundled
1753as defaults in Standard Ruby.")
1754 (home-page "https://github.com/standardrb/standard-custom")
1755 (license license:expat)))
1756
1757(define-public ruby-standard-performance
1758 (package
1759 (name "ruby-standard-performance")
1760 (version "1.6.0")
1761 (source
1762 (origin
1763 (method url-fetch)
1764 (uri (rubygems-uri "standard-performance" version))
1765 (sha256
1766 (base32 "1x298w3wmq8cavbsg903wc3arxp3xh2x8263brvy128436m732rd"))))
1767 (build-system ruby-build-system)
1768 (arguments '(#:tests? #f)) ;Circular dependency on ruby-standard.
1769 (propagated-inputs (list ruby-lint-roller ruby-rubocop-performance))
1770 (synopsis "Standard Ruby Plugin for rubocop-performance")
1771 (description
1772 "This package is a Standard Ruby Plugin providing configuration for
1773@code{rubocop-performance}.")
1774 (home-page "https://github.com/standardrb/standard-performance")
1775 (license license:expat)))
1776
1777(define-public ruby-standard
1778 (package
1779 (name "ruby-standard")
1780 (version "1.37.0")
1781 (source
1782 (origin
1783 (method git-fetch) ;no test suite in distributed gem
1784 (uri (git-reference
1785 (url "https://github.com/testdouble/standard")
1786 (commit (string-append "v" version))))
1787 (file-name (git-file-name name version))
1788 (sha256
1789 (base32 "0gm9fn6fz41aya34xz7kzda8xxs7h98n7cjx66qbcy2w0qhs40wc"))))
1790 (build-system ruby-build-system)
1791 (arguments
1792 (list
1793 #:phases
1794 #~(modify-phases %standard-phases
1795 (add-after 'unpack 'set-HOME
1796 (lambda _
1797 ;; Some tests fail otherwise.
1798 (setenv "HOME" "/tmp")))
1799 (add-after 'unpack 'relax-requirements
1800 (lambda _
1801 (substitute* "standard.gemspec"
1802 (("\"rubocop\", \".*\"")
1803 (string-append
1804 "\"rubocop\", \"~> "
1805 #$(package-version
1806 (this-package-input "ruby-rubocop"))
1807 "\""))
1808 (("\"rubocop-performance\", \".*\"")
1809 (string-append
1810 "\"rubocop-performance\", \"~> "
1811 #$(package-version
1812 (this-package-input "ruby-rubocop-performance"))
1813 "\"")))))
1814 (add-after 'unpack 'delete-problematic-tests
1815 ;; These tests fail for unknown reasons (see:
1816 ;; https://github.com/testdouble/standard/issues/532).
1817 (lambda _
1818 (delete-file "test/standard_test.rb")
1819 (substitute* "test/standard/base_test.rb"
1820 ((".*test_configures_all_rubocop_cops.*" all)
1821 (string-append all
1822 " skip('fails on guix')\n"))))))))
1823 (native-inputs
1824 (list ruby-simplecov))
1825 (propagated-inputs
1826 (list ruby-language-server-protocol
1827 ruby-lint-roller
1828 ruby-rubocop
1829 ruby-rubocop-performance
1830 ruby-standard-custom
1831 ruby-standard-performance))
1832 (synopsis "Ruby Style Guide, with linter & automatic code fixer")
1833 (description "Standard is a port of StandardJS. Like StandardJS, it aims
1834to save time in the following ways:
1835@itemize
1836@item No configuration.
1837@item Automatically format code.
1838@item Catch style issues and programmer errors early.
1839@end itemize")
1840 (home-page "https://github.com/testdouble/standard")
1841 (license license:expat)))
1842
1843(define-public ruby-chunky-png
1844 (package
1845 (name "ruby-chunky-png")
1846 (version "1.4.0")
1847 (source
1848 (origin
1849 (method git-fetch)
1850 (uri (git-reference
1851 (url "https://github.com/wvanbergen/chunky_png")
1852 (commit (string-append "v" version))))
1853 (file-name (git-file-name name version))
1854 (sha256
1855 (base32 "05qwj72dy2fcy0n2jnf3bfriybfj36m7s6pv9xash6295dbcp901"))))
1856 (build-system ruby-build-system)
1857 (arguments
1858 (list
1859 #:ruby ruby-3.1
1860 #:test-target "spec"
1861 #:phases
1862 #~(modify-phases %standard-phases
1863 (add-after 'unpack 'disable-bundler
1864 (lambda _
1865 (substitute* (find-files "." "\\.rb$")
1866 (("require.*bundler/setup.*") "")))))))
1867 (native-inputs
1868 (list bundler ruby-rspec ruby-standard ruby-yard))
1869 (synopsis "Ruby library to handle PNG images")
1870 (description "ChunkyPNG is a pure Ruby library that can read and write
1871Portable Network Graphics (PNG) images without depending on an external image
1872library. It tries to be memory efficient and reasonably fast. It has
1873features such as:
1874@itemize
1875@item
1876Decoding support for any image that the PNG standard allows. This includes all
1877standard color modes, all bit depths, all transparency, and interlacing and
1878filtering options.
1879@item
1880Encoding support for images of all color modes (true color, grayscale, and
1881indexed) and transparency for all these color modes. The best color mode is
1882chosen automatically, based on the amount of used colors.
1883@item Read/write access to the image's pixels.
1884@item Read/write access to all image metadata that is stored in chunks.
1885@item
1886Memory efficiency: @code{fixnum} are used, i.e. 4 or 8 bytes of memory per
1887pixel, depending on the hardware).
1888@item
1889Performance: ChunkyPNG is reasonably fast for Ruby standards, by only using
1890integer math and a highly optimized saving routine.
1891@item Interoperability with RMagick.
1892@end itemize
1893
1894ChunkyPNG is vulnerable to decompression bombs and can run out of memory when
1895loading a specifically crafted PNG file. This is hard to fix in pure Ruby.
1896Deal with untrusted images in a separate process, e.g., by using @code{fork}
1897or a background processing library.")
1898 (home-page "https://github.com/wvanbergen/chunky_png/wiki")
1899 (license license:expat)))
1900
1901(define-public ruby-text-hyphen
1902 (package
1903 (name "ruby-text-hyphen")
1904 (version "1.5.0")
1905 (source
1906 (origin
1907 (method url-fetch)
1908 (uri (rubygems-uri "text-hyphen" version))
1909 (sha256
1910 (base32
1911 "01js0wxz84cc5hzxgqbcqnsa0y6crhdi6plmgkzyfm55p0rlajn4"))))
1912 (build-system ruby-build-system)
1913 (native-inputs
1914 (list ruby-hoe))
1915 (synopsis "Ruby library to hyphenate words in various languages")
1916 (description "Text::Hyphen is a Ruby library to hyphenate words in various
1917languages using Ruby-fied versions of TeX hyphenation patterns. It will
1918properly hyphenate various words according to the rules of the language the
1919word is written in. The algorithm is based on that of the TeX typesetting
1920system by Donald E. Knuth.")
1921 (home-page "https://github.com/halostatue/text-hyphen")
1922 ;; The whole is licensed under the Expat license, but parts use various
1923 ;; versions of the LaTeX Project Public License.
1924 (license license:expat)))
1925
1926(define-public ruby-open-uri-cached
1927 (package
1928 (name "ruby-open-uri-cached")
1929 (version "1.0.0")
1930 (source
1931 (origin
1932 (method url-fetch)
1933 (uri (rubygems-uri "open-uri-cached" version))
1934 (sha256
1935 (base32
1936 "03v0if3jlvbclnd6jgjk94fbhf0h2fq1wxr0mbx7018sxzm0biwr"))))
1937 (build-system ruby-build-system)
1938 (arguments
1939 `(#:tests? #f)) ;no test suite
1940 (synopsis "OpenURI with transparent disk caching")
1941 (description "OpenURI with transparent disk caching, which is
1942useful to avoid making excessive queries, for example when scraping
1943web pages.")
1944 (home-page "https://github.com/tigris/open-uri-cached")
1945 (license license:expat)))
1946
1947(define-public ruby-asciidoctor-pdf
1948 (package
1949 (name "ruby-asciidoctor-pdf")
1950 (version "2.3.19")
1951 (source
1952 (origin
1953 (method git-fetch) ;no test suite in the distributed gem
1954 (uri (git-reference
1955 (url "https://github.com/asciidoctor/asciidoctor-pdf")
1956 (commit (string-append "v" version))))
1957 (file-name (git-file-name name version))
1958 (sha256
1959 (base32
1960 "1l8my8jj4aww2yad80n6f7hs76lq5gicld8dy014pw90pk3x43mp"))
1961 (patches
1962 (search-patches
1963 "ruby-asciidoctor-pdf-support-prawn-svg-0_36.patch"))))
1964 (build-system ruby-build-system)
1965 (arguments
1966 (list
1967 #:test-target "spec"
1968 #:phases
1969 #~(modify-phases %standard-phases
1970 ;; The tests rely on the Gem being installed, so move the check
1971 ;; phase after the install phase.
1972 (delete 'check)
1973 (add-after 'install 'check
1974 (lambda* (#:key tests? #:allow-other-keys)
1975 (setenv "GEM_PATH" (string-append
1976 (getenv "GEM_PATH") ":"
1977 #$output "/lib/ruby/vendor_ruby"))
1978 (when tests?
1979 (invoke "rspec" "-t" "~visual" "-t" "~cli"
1980 "-t" "~network")))))))
1981 (native-inputs
1982 (list ruby-chunky-png
1983 ruby-coderay
1984 ruby-pdf-inspector
1985 ruby-rouge
1986 ruby-rspec))
1987 (propagated-inputs
1988 (list ruby-asciidoctor
1989 ruby-concurrent
1990 ruby-prawn
1991 ruby-prawn-icon
1992 ruby-prawn-svg
1993 ruby-prawn-table
1994 ruby-prawn-templates
1995 ruby-text-hyphen
1996 ruby-treetop
1997 ruby-ttfunk))
1998 (synopsis"AsciiDoc to Portable Document Format (PDF)} converter")
1999 (description "Asciidoctor PDF is an extension for Asciidoctor that
2000converts AsciiDoc documents to Portable Document Format (PDF) using the Prawn
2001PDF library. It has features such as:
2002@itemize
2003@item Direct AsciiDoc to PDF conversion
2004@item Configuration-driven theme (style and layout)
2005@item Scalable Vector Graphics (SVG) support
2006@item PDF document outline (i.e., bookmarks)
2007@item Table of contents page(s)
2008@item Document metadata (title, authors, subject, keywords, etc.)
2009@item Internal cross reference links
2010@item Syntax highlighting with Rouge, Pygments, or CodeRay
2011@item Page numbering
2012@item Customizable running content (header and footer)
2013@item
2014“Keep together” blocks (i.e., page breaks avoided in certain block content)
2015@item Orphaned section titles avoided
2016@item Autofit verbatim blocks (as permitted by base_font_size_min setting)
2017@item Table border settings honored
2018@item Font-based icons
2019@item Custom TrueType (TTF) fonts
2020@item Double-sided printing mode (margins alternate on recto and verso pages)
2021@end itemize")
2022 (home-page "https://asciidoctor.org/docs/asciidoctor-pdf")
2023 (license license:expat)))
2024
2025(define-public ruby-ast
2026 (package
2027 (name "ruby-ast")
2028 (version "2.4.2")
2029 (source
2030 (origin
2031 (method git-fetch) ;no test included in gem from v2.4.1
2032 (uri (git-reference
2033 (url "https://github.com/whitequark/ast")
2034 (commit (string-append "v" version))))
2035 (file-name (git-file-name name version))
2036 (sha256
2037 (base32
2038 "0vm94yml8rknr7z034vg6s3fpx6lml2prz9fn3hr67cx0143bb4h"))))
2039 (build-system ruby-build-system)
2040 (arguments
2041 '(#:phases
2042 (modify-phases %standard-phases
2043 (add-after 'unpack 'remove-coveralls-requirement
2044 (lambda _
2045 (substitute* "test/helper.rb"
2046 (("require 'coveralls'") "")
2047 (("Coveralls::SimpleCov::Formatter") ""))))
2048 (add-after 'extract-gemspec 'remove-unnecessary-requirements
2049 (lambda* (#:key inputs #:allow-other-keys)
2050 (substitute* "ast.gemspec"
2051 ((".*coveralls.*") "\n")
2052 (("%q<rest-client>.*") "%q<rest-client>.freeze, [\">= 0\"])\n")
2053 (("%q<mime-types>.*") "%q<mime-types>.freeze, [\">= 0\"])\n")
2054 (("%q<rake>.*") "%q<rake>.freeze, [\">= 0\"])\n")
2055 (("12\\.3") "13.0")))))))
2056 (native-inputs
2057 (list bundler
2058 ruby-bacon
2059 ruby-bacon-colored-output
2060 ruby-json-pure
2061 ruby-kramdown
2062 ruby-mime-types
2063 ruby-racc
2064 ruby-rest-client
2065 ruby-simplecov
2066 ruby-yard))
2067 (synopsis "Library for working with Abstract Syntax Trees")
2068 (description
2069 "@code{ast} is a Ruby library for working with Abstract Syntax Trees.
2070It does this through immutable data structures.")
2071 (home-page "https://whitequark.github.io/ast/")
2072 (license license:expat)))
2073
2074(define-public ruby-sporkmonger-rack-mount
2075 ;; Testing the addressable gem requires a newer commit than that released, so
2076 ;; use an up to date version.
2077 (let ((revision "1")
2078 (commit "076aa2c47d9a4c081f1e9bcb56a826a9e72bd5c3"))
2079 (package
2080 (name "ruby-sporkmonger-rack-mount")
2081 (version (git-version "0.8.3" revision commit))
2082 (source (origin
2083 (method git-fetch)
2084 (uri (git-reference
2085 (url "https://github.com/sporkmonger/rack-mount")
2086 (commit commit)))
2087 (file-name (git-file-name name version))
2088 (sha256
2089 (base32
2090 "1scx273g3xd93424x9lxc4zyvcp2niknbw5mkz6wkivpf7xsyxdq"))))
2091 (build-system ruby-build-system)
2092 (arguments
2093 ;; Tests currently fail so disable them.
2094 ;; https://github.com/sporkmonger/rack-mount/pull/1
2095 `(#:tests? #f))
2096 (propagated-inputs (list ruby-rack))
2097 (synopsis "Stackable dynamic tree based Rack router")
2098 (description
2099 "@code{Rack::Mount} supports Rack's @code{X-Cascade} convention to
2100continue trying routes if the response returns pass. This allows multiple
2101routes to be nested or stacked on top of each other.")
2102 (home-page "https://github.com/sporkmonger/rack-mount")
2103 (license license:expat))))
2104
2105(define-public ruby-ci-reporter
2106 (package
2107 (name "ruby-ci-reporter")
2108 (version "2.1.0")
2109 (source (origin
2110 (method url-fetch)
2111 (uri (rubygems-uri "ci_reporter" version))
2112 (sha256
2113 (base32
2114 "0qcafasmjjr8a5gzr4k92ncm6h2943skwllhjzwz8spawdwc7dla"))))
2115 (build-system ruby-build-system)
2116 (arguments
2117 `(#:test-target "rspec"))
2118 (propagated-inputs
2119 (list ruby-builder ruby-rexml))
2120 (native-inputs
2121 (list bundler ruby-rspec))
2122 (synopsis "Generate XML reports of runs test")
2123 (description
2124 "@code{CI::Reporter} is an add-on to Ruby testing frameworks that allows
2125you to generate XML reports of your test runs. The resulting files can be
2126read by a continuous integration system that understands Ant's JUnit report
2127format.")
2128 (home-page "https://github.com/nicksieger/ci_reporter")
2129 (license license:expat)))
2130
2131(define-public ruby-console
2132 (package
2133 (name "ruby-console")
2134 (version "1.16.2")
2135 (source (origin
2136 (method url-fetch)
2137 (uri (rubygems-uri "console" version))
2138 (sha256
2139 (base32
2140 "0y1bv3kd1l9p0k5n3anvvjxdrcq113pyngz2g29i9mvdgbbx7kq2"))))
2141 (build-system ruby-build-system)
2142 ;; XXX: Disable test suite to avoid dependency cycles with ruby-samovar.
2143 (arguments (list #:tests? #f))
2144 (propagated-inputs (list ruby-fiber-local))
2145 (synopsis "Console logging library for Ruby")
2146 (description "This gem provides beautiful console logging for Ruby
2147applications. It implements fast, buffered log output and has the following
2148features:
2149@itemize
2150@item Thread safe global logger with per-fiber context
2151@item Carry along context with nested loggers
2152@item Enable/disable log levels per class
2153@item Detailed logging of exceptions
2154@item Beautiful logging to the terminal or structured logging using JSON.
2155@end itemize")
2156 (home-page "https://github.com/socketry/console")
2157 (license license:expat)))
2158
2159(define-public ruby-contracts
2160 (package
2161 (name "ruby-contracts")
2162 (version "0.17.2")
2163 (source
2164 (origin
2165 (method url-fetch)
2166 (uri (rubygems-uri "contracts" version))
2167 (sha256
2168 (base32
2169 "1sclvlwnlxfaj1595xd0rn3x3w0ljic3vqgnx6476lr7x8xbpbiv"))))
2170 (build-system ruby-build-system)
2171 (arguments
2172 (list
2173 #:test-target "spec"
2174 #:phases
2175 #~(modify-phases %standard-phases
2176 ;; Don't run or require rubocop, the code linting tool, as this is a
2177 ;; bit unnecessary.
2178 (add-after 'unpack 'dont-run-rubocop
2179 (lambda _
2180 (substitute* "Rakefile"
2181 ((".*rubocop.*") "")
2182 ((".*RuboCop.*") "")))))))
2183 (native-inputs
2184 (list ruby-rspec))
2185 (synopsis "Method contracts for Ruby")
2186 (description
2187 "This library provides contracts for Ruby. A contract describes the
2188correct inputs and output for a method, and will raise an error if a incorrect
2189value is found.")
2190 (home-page "https://github.com/egonSchiele/contracts.ruby")
2191 (license license:bsd-2)))
2192
2193(define-public ruby-crack
2194 (package
2195 (name "ruby-crack")
2196 (version "0.4.5")
2197 (source
2198 (origin
2199 (method url-fetch)
2200 (uri (rubygems-uri "crack" version))
2201 (sha256
2202 (base32
2203 "1cr1kfpw3vkhysvkk3wg7c54m75kd68mbm9rs5azdjdq57xid13r"))))
2204 (build-system ruby-build-system)
2205 (arguments
2206 `(#:phases
2207 (modify-phases %standard-phases
2208 (replace 'check
2209 (lambda* (#:key tests? #:allow-other-keys)
2210 (when tests?
2211 (for-each (lambda (file)
2212 (display file)(display "\n")
2213 (invoke "ruby" "-Ilib" "-Itest" "-rrubygems" file))
2214 (find-files "test" ".*rb$"))))))))
2215 (synopsis "Simple JSON and XML parsing for Ruby")
2216 (description
2217 "@code{crack} provides really simple JSON and XML parsing, extracted from
2218code in Merb and Rails.")
2219 (home-page "https://github.com/jnunemaker/crack")
2220 (license license:expat)))
2221
2222(define-public ruby-clamp
2223 (package
2224 (name "ruby-clamp")
2225 (version "1.3.2")
2226 (source (origin
2227 (method url-fetch)
2228 (uri (rubygems-uri "clamp" version))
2229 (sha256
2230 (base32
2231 "08m0syh06bhx8dqn560ivjg96l5cs5s3l9jh2szsnlcdcyl9jsjg"))))
2232 (build-system ruby-build-system)
2233 (arguments
2234 (list #:test-target "spec"
2235 #:phases #~(modify-phases %standard-phases
2236 (add-after 'unpack 'do-not-require-rubocop
2237 (lambda _
2238 (substitute* "Rakefile"
2239 (("require \"rubocop/rake_task\"")
2240 "")
2241 (("RuboCop::RakeTask.new")
2242 "")))))))
2243 (native-inputs (list ruby-rspec))
2244 (synopsis "Command-line parsing library for Ruby")
2245 (description "Clamp provides an object-model for command-line utilities.
2246It handles parsing of command-line options, and generation of usage help.")
2247 (home-page "https://github.com/mdub/clamp")
2248 (license license:expat)))
2249
2250(define-public ruby-cliver
2251 (package
2252 (name "ruby-cliver")
2253 (version "0.3.2")
2254 (source
2255 (origin
2256 (method url-fetch)
2257 (uri (rubygems-uri "cliver" version))
2258 (sha256
2259 (base32
2260 "096f4rj7virwvqxhkavy0v55rax10r4jqf8cymbvn4n631948xc7"))))
2261 (build-system ruby-build-system)
2262 (arguments
2263 '(#:phases
2264 (modify-phases %standard-phases
2265 ;; Avoid a incompatibility between rspec@2 and rake. Using rspec@3
2266 ;; would be nice, but the tests look to be incompatible:
2267 ;;
2268 ;; NoMethodError: undefined method `last_comment'
2269 (replace 'check
2270 (lambda* (#:key tests? #:allow-other-keys)
2271 (when tests?
2272 (invoke "rspec")))))))
2273 (native-inputs
2274 (list bundler ruby-rspec-2))
2275 (synopsis "Assertions for command-line dependencies in Ruby")
2276 (description
2277 "@code{cliver} provides a way to detect missing command-line
2278dependencies, including versions.")
2279 (home-page "https://github.com/yaauie/cliver")
2280 (license license:expat)))
2281
2282(define-public ruby-czmq-ffi-gen
2283 (package
2284 (name "ruby-czmq-ffi-gen")
2285 (version "0.13.0")
2286 (source
2287 (origin
2288 (method url-fetch)
2289 (uri (rubygems-uri "czmq-ffi-gen" version))
2290 (sha256
2291 (base32
2292 "1yf719dmf4mwks1hqdsy6i5kzfvlsha69sfnhb2fr2cgk2snbys3"))))
2293 (build-system ruby-build-system)
2294 (arguments
2295 '(#:tests? #f ;; Tests are not included in the release on rubygems.org
2296 #:phases
2297 (modify-phases %standard-phases
2298 (add-after 'unpack 'patch-lib_dirs
2299 (lambda* (#:key inputs #:allow-other-keys)
2300 (substitute* "lib/czmq-ffi-gen/czmq/ffi.rb"
2301 (("lib\\_dirs = \\[.*\\]")
2302 (string-append "lib_dirs = ['"
2303 (assoc-ref inputs "czmq") "/lib"
2304 "']")))
2305 (substitute* "lib/czmq-ffi-gen/libzmq.rb"
2306 (("lib\\_dirs = \\[.*\\]")
2307 (string-append "lib_dirs = ['"
2308 (assoc-ref inputs "zeromq") "/lib"
2309 "']"))))))))
2310 (inputs
2311 (list zeromq czmq))
2312 (propagated-inputs (list ruby-ffi))
2313 (synopsis "Low-level Ruby bindings for CZMQ (generated using zproject)")
2314 (description
2315 "These Ruby bindings are not intended to be directly used, but rather
2316used by higher level bindings like those provided by CZTop.")
2317 (home-page
2318 "https://github.com/paddor/czmq-ffi-gen")
2319 (license license:isc)))
2320
2321(define-public ruby-cztop
2322 (package
2323 (name "ruby-cztop")
2324 (version "0.12.2")
2325 (source
2326 (origin
2327 (method url-fetch)
2328 (uri (rubygems-uri "cztop" version))
2329 (sha256
2330 (base32
2331 "0yqbpaiw5d7f271d73lyrsh8xpx6n4zi6xqwfgi00dacxrq3s3fa"))))
2332 (build-system ruby-build-system)
2333 (arguments
2334 '(#:test-target "spec"
2335 #:phases
2336 (modify-phases %standard-phases
2337 (add-after 'unpack 'patch-lib_paths
2338 (lambda* (#:key inputs #:allow-other-keys)
2339 (substitute* "lib/cztop/poller/zmq.rb"
2340 (("lib\\_paths = \\[.*\\]")
2341 (string-append "lib_paths = ['"
2342 (assoc-ref inputs "zeromq") "/lib"
2343 "']"))))))))
2344 (native-inputs
2345 (list bundler ruby-rspec))
2346 (inputs
2347 (list zeromq))
2348 (propagated-inputs
2349 (list ruby-czmq-ffi-gen))
2350 (synopsis "CZMQ Ruby bindings")
2351 (description
2352 "CZMQ Ruby bindings, based on the generated low-level FFI bindings of
2353CZMQ. The focus of of CZTop is on being easy to use and providing first class
2354support for security mechanisms.")
2355 (home-page "https://github.com/paddor/cztop")
2356 (license license:isc)))
2357
2358(define-public ruby-saikuro-treemap
2359 (package
2360 (name "ruby-saikuro-treemap")
2361 (version "0.2.0")
2362 (source (origin
2363 (method url-fetch)
2364 (uri (rubygems-uri "saikuro_treemap" version))
2365 (sha256
2366 (base32
2367 "0w70nmh43mwfbpq20iindl61siqqr8acmf7p3m7n5ipd61c24950"))))
2368 (build-system ruby-build-system)
2369 ;; Some of the tests fail because the generated JSON has keys in a
2370 ;; different order. This is a problem with the test suite rather than any
2371 ;; of the involved libraries.
2372 (arguments `(#:tests? #f))
2373 (propagated-inputs
2374 (list ruby-json-pure ruby-atoulme-saikuro))
2375 (synopsis "Generate complexity treemap based on saikuro analysis")
2376 (description
2377 "This gem generates a treemap showing the complexity of Ruby code on
2378which it is run. It uses Saikuro under the covers to analyze Ruby code
2379complexity.")
2380 (home-page "https://github.com/ThoughtWorksStudios/saikuro_treemap")
2381 (license license:expat)))
2382
2383(define-public ruby-oauth2
2384 (package
2385 (name "ruby-oauth2")
2386 (version "2.0.9")
2387 (source (origin
2388 (method git-fetch) ;for tests
2389 (uri (git-reference
2390 (url "https://gitlab.com/oauth-xx/oauth2")
2391 (commit (string-append "v" version))))
2392 (file-name (git-file-name name version))
2393 (sha256
2394 (base32
2395 "191j1f4gjw8wij1jy2fvddgi8cv1mm0ki7v0b0795clix1avnj29"))))
2396 (build-system ruby-build-system)
2397 (arguments
2398 (list #:modules '((guix build ruby-build-system)
2399 (guix build utils)
2400 (ice-9 regex)
2401 (ice-9 textual-ports))
2402 #:phases
2403 #~(modify-phases %standard-phases
2404 (add-after 'unpack 'relax-requirements
2405 (lambda _
2406 (substitute* "Gemfile"
2407 (("^linting = .*")
2408 "linting = false\n")
2409 (("^coverage = .*")
2410 "coverage = false\n")
2411 (("^debug = .*")
2412 "debug = false\n"))
2413 (substitute* "spec/spec_helper.rb"
2414 (("^RUN_COVERAGE = .*")
2415 "RUN_COVERAGE = false\n")
2416 (("^ALL_FORMATTERS = .*")
2417 "ALL_FORMATTERS = false\n"))))
2418 (add-after 'unpack 'skip-problematic-test
2419 (lambda _
2420 ;; XXX: substitute* can't match 2 lines.
2421 (with-atomic-file-replacement
2422 "spec/oauth2/client_spec.rb"
2423 (lambda (in out)
2424 (let* ((pattern "\
2425 context 'when parse: :xml but response is JSON' do\n\
2426 it 'returns a configured AccessToken' do\n")
2427 (content (get-string-all in))
2428 (matched (string-match pattern content)))
2429 (if matched
2430 (format out "~a skip('fails on guix')~%~a"
2431 (string-take content (match:end matched))
2432 (string-drop content (match:end matched)))
2433 (display content out))))))))))
2434 (native-inputs
2435 (list bundler
2436 ruby-addressable
2437 ruby-backports
2438 ruby-rexml
2439 ruby-rspec-block-is-expected
2440 ruby-rspec-pending-for
2441 ruby-rspec-stubbed-env
2442 ruby-silent-stream))
2443 (propagated-inputs
2444 (list ruby-faraday
2445 ruby-jwt
2446 ruby-multi-xml
2447 ruby-rack
2448 ruby-snaky-hash
2449 ruby-version-gem))
2450 (synopsis "Ruby wrapper for the OAuth 2.0")
2451 (description
2452 "This package provides a Ruby wrapper for the OAuth 2.0 protocol built
2453with a similar style to the original OAuth spec.")
2454 (home-page "https://github.com/oauth-xx/oauth2")
2455 (license license:expat)))
2456
2457(define-public ruby-omniauth
2458 (package
2459 (name "ruby-omniauth")
2460 (version "2.1.1")
2461 (source (origin
2462 (method git-fetch) ;for tests
2463 (uri (git-reference
2464 (url "https://github.com/omniauth/omniauth")
2465 (commit (string-append "v" version))))
2466 (file-name (git-file-name name version))
2467 (sha256
2468 (base32
2469 "1mm7a4ll7ymamrbsl63yi6i34qpwmh2nh5a9kj961gja1iz2gyd1"))))
2470 (build-system ruby-build-system)
2471 (arguments
2472 (list #:phases
2473 #~(modify-phases %standard-phases
2474 (add-after 'unpack 'relax-requirements
2475 (lambda _
2476 (substitute* "spec/helper.rb"
2477 ;; This condition is used to require coveralls and
2478 ;; simplecov; override it to avoid these extraneous
2479 ;; requirements.
2480 (("RUBY_VERSION >= '1.9'")
2481 "false")
2482 (("require 'rack/freeze'") "")))))))
2483 (native-inputs (list ruby-rspec))
2484 (propagated-inputs (list ruby-hashie ruby-rack ruby-rack-test
2485 ruby-rack-protection))
2486 (synopsis "Generalized Rack framework for multiple-provider authentication")
2487 (description
2488 "This package provides a generalized Rack framework for multiple-provider
2489authentication.")
2490 (home-page "https://github.com/omniauth/omniauth")
2491 (license license:expat)))
2492
2493(define-public ruby-omniauth-oauth2
2494 (package
2495 (name "ruby-omniauth-oauth2")
2496 (version "1.8.0")
2497 (source
2498 (origin
2499 (method url-fetch)
2500 (uri (rubygems-uri "omniauth-oauth2" version))
2501 (sha256
2502 (base32
2503 "0y4y122xm8zgrxn5nnzwg6w39dnjss8pcq2ppbpx9qn7kiayky5j"))))
2504 (build-system ruby-build-system)
2505 (arguments
2506 (list #:phases
2507 #~(modify-phases %standard-phases
2508 (add-after 'unpack 'relax-requirements
2509 (lambda _
2510 (substitute* "spec/helper.rb"
2511 ;; This condition is used to require coveralls and
2512 ;; simplecov; override it to avoid these extraneous
2513 ;; requirements.
2514 (("RUBY_VERSION >= \"1.9\"")
2515 "false")))))))
2516 (propagated-inputs (list ruby-oauth2 ruby-omniauth))
2517 (native-inputs (list ruby-rspec ruby-rack-test ruby-webmock))
2518 (synopsis "Abstract OAuth2 strategy for OmniAuth")
2519 (description
2520 "This library provides a generic OAuth2 strategy for OmniAuth. It
2521doesn't provide a way to gather user information, so should be used as a
2522building block for authentication strategies.")
2523 (home-page "https://github.com/omniauth/omniauth-oauth2")
2524 (license license:expat)))
2525
2526(define-public ruby-open4
2527 (package
2528 (name "ruby-open4")
2529 (version "1.3.4")
2530 (source
2531 (origin
2532 (method url-fetch)
2533 (uri (rubygems-uri "open4" version))
2534 (sha256
2535 (base32
2536 "1cgls3f9dlrpil846q0w7h66vsc33jqn84nql4gcqkk221rh7px1"))))
2537 (build-system ruby-build-system)
2538 (arguments
2539 '(#:phases
2540 (modify-phases %standard-phases
2541 (add-after 'unpack 'patch
2542 (lambda _
2543 (substitute* "rakefile"
2544 ;; Update the Rakefile so it works
2545 (("-rubygems") "-rrubygems")
2546 (("Config") "RbConfig"))))
2547 (add-before 'check 'set-LIB
2548 (lambda _
2549 ;; This is used in the rakefile when running the tests
2550 (setenv "LIB" "open4"))))))
2551 (synopsis "Open child processes from Ruby and manage them easily")
2552 (description
2553 "@code{Open4} is a Ruby library to run child processes and manage their
2554input and output.")
2555 (home-page "https://github.com/ahoward/open4")
2556 (license license:ruby)))
2557
2558(define-public ruby-options
2559 (package
2560 (name "ruby-options")
2561 (version "2.3.2")
2562 (source
2563 (origin
2564 (method url-fetch)
2565 (uri (rubygems-uri "options" version))
2566 (sha256
2567 (base32
2568 "1s650nwnabx66w584m1cyw82icyym6hv5kzfsbp38cinkr5klh9j"))))
2569 (build-system ruby-build-system)
2570 (arguments
2571 '(#:tests? #f ;; TODO: NameError: uninitialized constant Config
2572 #:phases
2573 (modify-phases %standard-phases
2574 (add-before 'check 'set-LIB
2575 (lambda _
2576 ;; This is used in the Rakefile, and setting it avoids an issue
2577 ;; with running the tests.
2578 (setenv "LIB" "options"))))))
2579 (synopsis "Ruby library to parse options from *args cleanly")
2580 (description
2581 "The @code{options} library helps with parsing keyword options in Ruby
2582functions.")
2583 (home-page "https://github.com/ahoward/options")
2584 (license license:ruby)))
2585
2586(define-public ruby-erubi
2587 (package
2588 (name "ruby-erubi")
2589 (version "1.11.0")
2590 (source
2591 (origin
2592 (method git-fetch)
2593 (uri (git-reference
2594 (url "https://github.com/jeremyevans/erubi")
2595 (commit version)))
2596 (file-name (git-file-name name version))
2597 (sha256
2598 (base32 "0y4qskz260fjwbnjps5z5yygjwgh6ds0f97lfa9gsmh6zqa1lvvx"))))
2599 (build-system ruby-build-system)
2600 (arguments
2601 (list #:test-target "spec"))
2602 (native-inputs (list ruby-minitest
2603 ruby-minitest-global-expectations))
2604 (synopsis "ERB template engine for Ruby")
2605 (description
2606 "Erubi is a ERB template engine for Ruby. It is a simplified fork of
2607Erubis")
2608 (home-page "https://github.com/jeremyevans/erubi")
2609 (license license:expat)))
2610
2611(define-public ruby-erubis
2612 (package
2613 (name "ruby-erubis")
2614 (version "2.7.0")
2615 (source
2616 (origin
2617 (method url-fetch)
2618 (uri (rubygems-uri "erubis" version))
2619 (sha256
2620 (base32
2621 "1fj827xqjs91yqsydf0zmfyw9p4l2jz5yikg3mppz6d7fi8kyrb3"))))
2622 (build-system ruby-build-system)
2623 (arguments
2624 '(#:tests? #f)) ; tests do not run properly with Ruby 2.0
2625 (synopsis "Implementation of embedded Ruby (eRuby)")
2626 (description
2627 "Erubis is a fast implementation of embedded Ruby (eRuby) with several
2628features such as multi-language support, auto escaping, auto trimming spaces
2629around @code{<% %>}, a changeable embedded pattern, and Ruby on Rails
2630support.")
2631 (home-page "http://www.kuwata-lab.com/erubis/")
2632 (license license:expat)))
2633
2634(define-public ruby-ethon
2635 (package
2636 (name "ruby-ethon")
2637 (version "0.12.0")
2638 (source
2639 (origin
2640 (method url-fetch)
2641 (uri (rubygems-uri "ethon" version))
2642 (sha256
2643 (base32
2644 "0gggrgkcq839mamx7a8jbnp2h7x2ykfn34ixwskwb0lzx2ak17g9"))))
2645 (build-system ruby-build-system)
2646 (arguments
2647 (list
2648 #:tests? #f ; no included tests
2649 #:phases
2650 #~(modify-phases %standard-phases
2651 (add-after 'unpack 'libcurl-use-absolute-reference
2652 (lambda* (#:key inputs #:allow-other-keys)
2653 (substitute* "lib/ethon/curls/settings.rb"
2654 (("libcurl', 'libcurl\\.so\\.4")
2655 (search-input-file inputs "/lib/libcurl.so"))))))))
2656 (inputs
2657 (list curl))
2658 (propagated-inputs
2659 (list ruby-ffi))
2660 (synopsis "Very lightweight @code{libcurl} wrapper")
2661 (description
2662 "Ethon is a very basic @code{libcurl} wrapper using ffi.")
2663 (home-page "https://github.com/typhoeus/ethon")
2664 (license license:expat)))
2665
2666(define-public ruby-execjs
2667 (package
2668 (name "ruby-execjs")
2669 (version "2.7.0")
2670 (source
2671 (origin
2672 ;; fetch from github as the gem does not contain testing code
2673 (method git-fetch)
2674 (uri (git-reference
2675 (url "https://github.com/rails/execjs")
2676 (commit (string-append "v" version))))
2677 (file-name (git-file-name name version))
2678 (sha256
2679 (base32
2680 "0c0vd2mmqq3ar4plbwi2wsbr31vn4h45i19r5km66skydnnbp1y6"))))
2681 (build-system ruby-build-system)
2682 (native-inputs
2683 (list bundler
2684 ;; The test suite tests all the available backends. Currently, this just
2685 ;; means the node backend.
2686 ;;
2687 ;; PASSED: test:node
2688 ;; SKIPPED: test:duktape, ;; test:javascriptcore, test:jscript,
2689 ;; test:miniracer, test:rubyracer, ;; test:rubyrhino, test:v8
2690 node-lts))
2691 (synopsis "Run JavaScript code from Ruby")
2692 (description
2693 "ExecJS lets you run JavaScript code from Ruby. It automatically picks a
2694runtime to evaluate your JavaScript program, then returns the result to you as
2695a Ruby object.")
2696 (home-page "https://github.com/rails/execjs")
2697 (license license:expat)))
2698
2699(define-public ruby-fakefs
2700 (package
2701 (name "ruby-fakefs")
2702 (version "2.8.0")
2703 (home-page "https://github.com/fakefs/fakefs")
2704 (source (origin
2705 ;; The Rubygems release does not contain tests.
2706 (method git-fetch)
2707 (uri (git-reference
2708 (url home-page)
2709 (commit (string-append "v" version))))
2710 (file-name (git-file-name name version))
2711 (sha256
2712 (base32
2713 "0a3vq6cllml279j77hxipmbln31pjw6di3zdgpzqvhqgazv55v10"))))
2714 (build-system ruby-build-system)
2715 (arguments
2716 '(#:phases (modify-phases %standard-phases
2717 (replace 'replace-git-ls-files
2718 (lambda _
2719 (substitute* "fakefs.gemspec"
2720 (("`git ls-files lib README.md LICENSE`")
2721 "`find lib README.md LICENSE -type f | sort`"))))
2722 (add-before 'check 'remove-version-constraints
2723 (lambda _
2724 ;; Drop hard version requirements for test dependencies.
2725 (substitute* "fakefs.gemspec"
2726 (("(.*add_development_dependency .*), .*" _ dep)
2727 (string-append dep "\n"))))))))
2728 (native-inputs
2729 (list ruby-bump ruby-maxitest ruby-pry ruby-rubocop ruby-rspec))
2730 (synopsis "Fake file system for Ruby")
2731 (description
2732 "This package provides a fake file system for use in test suites. It
2733avoids the need for manually creating temporary directories, or dealing
2734with platform intricacies in @code{File} and @code{FileUtils}.")
2735 (license license:expat)))
2736
2737(define-public ruby-orderedhash
2738 (package
2739 (name "ruby-orderedhash")
2740 (version "0.0.6")
2741 (source (origin
2742 (method url-fetch)
2743 (uri (rubygems-uri "orderedhash" version))
2744 (sha256
2745 (base32
2746 "0fryy7f9jbpx33jq5m402yqj01zcg563k9fsxlqbhmq638p4bzd7"))))
2747 (build-system ruby-build-system)
2748 (arguments
2749 '(#:tests? #f)) ; no test suite
2750 (synopsis "Ruby library providing an order-preserving hash")
2751 (description "Orderedhash is a Ruby library providing a hash
2752implementation that preserves the order of items and features some array-like
2753extensions.")
2754 (home-page "http://codeforpeople.com/lib/ruby/orderedhash/")
2755 (license license:public-domain)))
2756
2757(define-public ruby-libxml
2758 (package
2759 (name "ruby-libxml")
2760 (version "3.0.0")
2761 (source
2762 (origin
2763 (method url-fetch)
2764 (uri (rubygems-uri "libxml-ruby" version))
2765 (sha256
2766 (base32
2767 "0xy8wmjwjcnv36zi042678ncjzpxvy351ccbv7mzkns2n3kxfp54"))))
2768 (build-system ruby-build-system)
2769 (inputs
2770 (list zlib libxml2))
2771 (arguments
2772 '(#:tests? #f ; test suite hangs for unknown reason
2773 #:gem-flags
2774 (list "--no-document" ; TODO: Re-enable when documentation
2775 ; generation works
2776 "--"
2777 (string-append "--with-xml2-include="
2778 (assoc-ref %build-inputs "libxml2")
2779 "/include/libxml2" ))))
2780 (synopsis "Ruby bindings for GNOME Libxml2")
2781 (description "The Libxml-Ruby project provides Ruby language bindings for
2782the GNOME Libxml2 XML toolkit.")
2783 (home-page "https://xml4r.github.com/libxml-ruby")
2784 (license license:expat)))
2785
2786(define-public ruby-lino
2787 (package
2788 (name "ruby-lino")
2789 (version "3.1.0")
2790 (source
2791 (origin
2792 (method url-fetch)
2793 (uri (rubygems-uri "lino" version))
2794 (sha256
2795 (base32
2796 "1zq9dza040fgjvr9imh7z2lgxrcyc5ac100rqimsnsf9bpfz3fsm"))))
2797 (build-system ruby-build-system)
2798 (arguments
2799 '(#:tests? #f)) ; No included tests
2800 (propagated-inputs
2801 (list ruby-hamster ruby-open4))
2802 (synopsis "Build and execute commands in Ruby")
2803 (description
2804 "@code{Lino} provides an interface to run external commands. It provides
2805an interface to add options as well as managing the standard input, output and
2806error streams.")
2807 (home-page "https://github.com/tobyclemson/lino")
2808 (license license:expat)))
2809
2810(define-public ruby-x25519
2811 (package
2812 (name "ruby-x25519")
2813 (version "1.0.10")
2814 (source (origin
2815 (method git-fetch)
2816 (uri (git-reference
2817 (url "https://github.com/RubyCrypto/x25519")
2818 (commit (string-append "v" version))))
2819 (file-name (git-file-name name version))
2820 (sha256
2821 (base32
2822 "1g0311ly32f6hfn4q5fvkbjbl2bhv1l9fx6s0kglxfsrwq51926y"))
2823 (patches
2824 (search-patches
2825 "ruby-x25519-automatic-fallback-non-x86_64.patch"))))
2826 (build-system ruby-build-system)
2827 (arguments
2828 (list #:test-target "spec"
2829 #:phases #~(modify-phases %standard-phases
2830 (add-after 'unpack 'remove-unnecessary-dependencies
2831 (lambda _
2832 (substitute* "Gemfile"
2833 ((".*rubocop.*")
2834 ""))
2835 (substitute* "Rakefile"
2836 (("require \"rubocop/rake_task\"")
2837 "")
2838 (("RuboCop::RakeTask.new")
2839 ""))))
2840 (add-before 'build 'compile
2841 (lambda _
2842 (invoke "rake" "compile"))))))
2843 (native-inputs (list ruby-rake-compiler ruby-rspec))
2844 (synopsis "Cryptography library for Ruby providing the X25519
2845Diffie-Hellman function")
2846 (description
2847 "The x25519 gem is an efficient public key cryptography library for
2848Ruby providing key exchange/agreement via the X25519 (as known as
2849Curve25519) Elliptic Curve Diffie-Hellman function as described in
2850@url{https://www.ietf.org/rfc/rfc7748.txt, RFC 7748}.")
2851 (home-page "https://github.com/RubyCrypto/x25519")
2852 (license license:bsd-3)))
2853
2854(define-public ruby-xml-simple
2855 (package
2856 (name "ruby-xml-simple")
2857 (version "1.1.5")
2858 (source (origin
2859 (method url-fetch)
2860 (uri (rubygems-uri "xml-simple" version))
2861 (sha256
2862 (base32
2863 "0xlqplda3fix5pcykzsyzwgnbamb3qrqkgbrhhfz2a2fxhrkvhw8"))))
2864 (build-system ruby-build-system)
2865 (arguments
2866 '(#:tests? #f)) ; no test suite
2867 (synopsis "Simple Ruby library for XML processing")
2868 (description "This library provides a simple API for XML processing in
2869Ruby.")
2870 (home-page "https://github.com/maik/xml-simple")
2871 (license license:ruby)))
2872
2873(define-public ruby-xpath
2874 (package
2875 (name "ruby-xpath")
2876 (version "3.2.0")
2877 (source (origin
2878 (method url-fetch)
2879 (uri (rubygems-uri "xpath" version))
2880 (sha256
2881 (base32
2882 "0bh8lk9hvlpn7vmi6h4hkcwjzvs2y0cmkk3yjjdr8fxvj6fsgzbd"))))
2883 (build-system ruby-build-system)
2884 (arguments (list #:phases #~(modify-phases %standard-phases
2885 (replace 'check
2886 (lambda* (#:key tests? #:allow-other-keys)
2887 (when tests?
2888 (invoke "rspec" "spec" )))))))
2889 (native-inputs (list ruby-pry ruby-rspec))
2890 (propagated-inputs (list ruby-nokogiri))
2891 (synopsis "Ruby DSL for generating XPath expressions")
2892 (description "XPath is a Ruby domain-specific language (DSL) for
2893generating XPath expressions.")
2894 (home-page "https://github.com/teamcapybara/xpath")
2895 (license license:expat)))
2896
2897(define-public ruby-thor
2898 (package
2899 (name "ruby-thor")
2900 (version "1.2.2")
2901 (source (origin
2902 ;; Pull from git because the gem has no tests.
2903 (method git-fetch)
2904 (uri (git-reference
2905 (url "https://github.com/rails/thor")
2906 (commit (string-append "v" version))))
2907 (file-name (git-file-name name version))
2908 (sha256
2909 (base32
2910 "1k3z2mlhaig5ycapjxwybb19z7ca0q1876i6csfmv2j0hf1hnc0z"))))
2911 (build-system ruby-build-system)
2912 (arguments
2913 (list
2914 #:phases
2915 #~(modify-phases %standard-phases
2916 (add-after 'unpack 'remove-coveralls-dependency
2917 (lambda _
2918 ;; Do not hook the test suite into the online coveralls service.
2919 (substitute* "Gemfile"
2920 ((".*coveralls.*") ""))
2921 (substitute* "spec/helper.rb"
2922 (("require \"coveralls\"") "")
2923 (("Coveralls::SimpleCov::Formatter") ""))))
2924 (add-after 'unpack 'disable-problematic-tests
2925 (lambda _
2926 ;; These tests attempt to check the git repository for
2927 ;; tabs vs spaces, double vs single quotes, etc, and
2928 ;; depend on the git checkout.
2929 (delete-file "spec/quality_spec.rb")
2930 (substitute* "spec/parser/options_spec.rb"
2931 ;; This test fails for unknown reasons (see:
2932 ;; https://github.com/rails/thor/issues/814).
2933 (("it \"raises an error for unknown switches" all)
2934 (string-append "x" all)))))
2935 (replace 'check
2936 (lambda* (#:key tests? #:allow-other-keys)
2937 (when tests?
2938 (invoke "rspec" "spec" )))))))
2939 (native-inputs (list ruby-rspec ruby-simplecov ruby-webmock))
2940 (synopsis "Ruby toolkit for building command-line interfaces")
2941 (description "Thor is a toolkit for building powerful command-line
2942interfaces.")
2943 (home-page "http://whatisthor.com/")
2944 (license license:expat)))
2945
2946(define-public ruby-lumberjack
2947 (package
2948 (name "ruby-lumberjack")
2949 (version "1.0.13")
2950 (source (origin
2951 (method url-fetch)
2952 (uri (rubygems-uri "lumberjack" version))
2953 (sha256
2954 (base32
2955 "06im7gcg42x77yhz2w5da2ly9xz0n0c36y5ks7xs53v0l9g0vf5n"))))
2956 (build-system ruby-build-system)
2957 (native-inputs
2958 (list ruby-rspec ruby-timecop))
2959 (synopsis "Logging utility library for Ruby")
2960 (description "Lumberjack is a simple logging utility that can be a drop in
2961replacement for Logger or ActiveSupport::BufferedLogger. It provides support
2962for automatically rolling log files even with multiple processes writing the
2963same log file.")
2964 (home-page "https://github.com/bdurand/lumberjack")
2965 (license license:expat)))
2966
2967(define-public ruby-rbnacl
2968 (package
2969 (name "ruby-rbnacl")
2970 (version "7.1.1")
2971 (source (origin
2972 (method url-fetch)
2973 (uri (rubygems-uri "rbnacl" version))
2974 (sha256
2975 (base32
2976 "0y8yzianlkc9w6sbqy8iy8l0yym0y6x7p5rjflkfixq76fqmhvzk"))))
2977 (build-system ruby-build-system)
2978 (arguments
2979 (list
2980 #:phases
2981 #~(modify-phases %standard-phases
2982 (add-after 'unpack 'remove-unnecessary-dependencies
2983 (lambda _
2984 ;; Coveralls relates to a network service, and Rubocop to code
2985 ;; linting and both are unnecessary to run the tests
2986 (substitute* "Gemfile"
2987 ((".*rubocop.*")
2988 "\n")
2989 ((".*guard-rspec.*")
2990 "\n")
2991 ((".*coveralls.*")
2992 "\n"))
2993 (substitute* "spec/spec_helper.rb"
2994 (("require \"coveralls\"")
2995 "")
2996 (("Coveralls.wear!")
2997 ""))))
2998 (add-after 'unpack 'use-libsodium-from-store
2999 (lambda* (#:key inputs #:allow-other-keys)
3000 (substitute* '("lib/rbnacl/init.rb"
3001 "lib/rbnacl/sodium.rb")
3002 (("ffi_lib \\[.+\\]")
3003 (string-append "ffi_lib [\""
3004 (assoc-ref inputs "libsodium")
3005 "/lib/libsodium.so" "\"]")))))
3006 ;; Run Rspec directly to avoid the Rubocop dependency in the
3007 ;; Rakefile
3008 (replace 'check
3009 (lambda* (#:key tests? #:allow-other-keys)
3010 (when tests?
3011 (invoke "rspec")))))))
3012 (propagated-inputs (list ruby-ffi))
3013 (inputs (list libsodium))
3014 (native-inputs (list bundler ruby-rspec))
3015 (synopsis "Ruby FFI binding to libsodium")
3016 (description
3017 "This package provides Ruby FFI bindings to the Networking and
3018Cryptography (NaCl) library, also known as libsodium. This provides a
3019high-level toolkit for building cryptographic systems and protocols.")
3020 (home-page "https://github.com/RubyCrypto/rbnacl")
3021 (license license:expat)))
3022
3023(define-public ruby-rbtree
3024 (package
3025 (name "ruby-rbtree")
3026 (version "0.4.6")
3027 (source (origin
3028 (method url-fetch)
3029 (uri (rubygems-uri "rbtree" version))
3030 (sha256
3031 (base32
3032 "1z0h1x7fpkzxamnvbw1nry64qd6n0nqkwprfair29z94kd3a9vhl"))))
3033 (build-system ruby-build-system)
3034 (arguments
3035 (list
3036 #:phases
3037 #~(modify-phases %standard-phases
3038 (add-before 'build 'extconf
3039 (lambda _
3040 (invoke "ruby" "extconf.rb")
3041 (invoke "make" "install" (string-append "prefix=" #$output))))
3042 (replace 'check
3043 (lambda* (#:key tests? #:allow-other-keys)
3044 (when tests?
3045 (invoke "ruby" "-I." "test.rb")))))))
3046 (synopsis "Ruby implementation of a sorted associative collection")
3047 (description
3048 "This package provides a RBTree is a sorted associative collection that
3049is implemented with a Red-Black Tree. It maps keys to values like a Hash, but
3050maintains its elements in ascending key order. The interface is the almost
3051identical to that of Hash.")
3052 (home-page "http://rbtree.rubyforge.org/")
3053 (license license:expat)))
3054
3055(define-public ruby-rgl
3056 (package
3057 (name "ruby-rgl")
3058 (version "0.6.6")
3059 (source (origin
3060 (method url-fetch)
3061 (uri (rubygems-uri "rgl" version))
3062 (sha256
3063 (base32
3064 "0dji1k9knrf8cxm5psd3pgd9i8f7cfq182jwjpi1pwxw15axf496"))))
3065 (build-system ruby-build-system)
3066 (arguments
3067 (list
3068 #:phases
3069 #~(modify-phases %standard-phases
3070 (add-after 'unpack 'remove-unnecessary-dependencies
3071 (lambda _
3072 (substitute* "Gemfile"
3073 ;; Caring about coverage is a not a packager's task but a
3074 ;; developer's
3075 ;;(("gem \"simplecov\"") "")
3076 ;; CodeClimate is an online service, and is unnecessary for
3077 ;; running the tests
3078 (("gem \"codeclimate-test-reporter\", .*") "\n")))))))
3079 (native-inputs (list ruby-test-unit ruby-simplecov ruby-yard graphviz-minimal))
3080 (propagated-inputs (list ruby-pairing-heap ruby-rexml ruby-stream))
3081 (synopsis "Framework for graph data structures and algorithms")
3082 (description "RGL is a framework for graph data structures and algorithms.
3083The design of the library is much influenced by the Boost Graph Library (BGL)
3084which is written in C++.")
3085 (home-page "https://github.com/monora/rgl")
3086 (license license:bsd-2)))
3087
3088(define-public ruby-hkdf
3089 (package
3090 (name "ruby-hkdf")
3091 (version "1.0.0")
3092 (source
3093 (origin
3094 (method git-fetch)
3095 (uri (git-reference
3096 (url "https://github.com/jtdowney/hkdf")
3097 (commit (string-append "v" version))))
3098 (file-name (git-file-name name version))
3099 (sha256
3100 (base32
3101 "1xqwdmxfnhagivwgb5v9ilwpb4jxlsqwj7pnj43d65zzg5m8p9r5"))))
3102 (build-system ruby-build-system)
3103 (arguments
3104 `(#:test-target "default"))
3105 (native-inputs
3106 (list ruby-rspec))
3107 (synopsis "HMAC-based Key Derivation Function")
3108 (description
3109 "This package provides a Ruby implementation of RFC5869: @acronym{HKDF,
3110HMAC-based Extract-and-Expand Key Derivation Function}. The goal of HKDF is to
3111take some source key material and generate suitable cryptographic keys from it.")
3112 (home-page "https://github.com/jtdowney/hkdf")
3113 (license license:expat)))
3114
3115(define-public ruby-nenv
3116 (package
3117 (name "ruby-nenv")
3118 (version "0.3.0")
3119 (source (origin
3120 (method url-fetch)
3121 (uri (rubygems-uri "nenv" version))
3122 (sha256
3123 (base32
3124 "0r97jzknll9bhd8yyg2bngnnkj8rjhal667n7d32h8h7ny7nvpnr"))))
3125 (build-system ruby-build-system)
3126 (arguments
3127 `(#:tests? #f)) ; no tests included
3128 (native-inputs
3129 (list ruby-rspec bundler))
3130 (synopsis "Ruby interface for modifying the environment")
3131 (description "Nenv provides a convenient wrapper for Ruby's ENV to modify
3132and inspect the environment.")
3133 (home-page "https://github.com/e2/nenv")
3134 (license license:expat)))
3135
3136(define-public ruby-ptools
3137 (package
3138 (name "ruby-ptools")
3139 (version "1.5.0")
3140 (source (origin
3141 (method url-fetch)
3142 (uri (rubygems-uri "ptools" version))
3143 (sha256
3144 (base32
3145 "0damllbshkxycrwjv80sz78h76dw7r9z54d17mb5cbha1daq9q2d"))))
3146 (build-system ruby-build-system)
3147 (arguments
3148 (list
3149 #:test-target "spec:all"
3150 #:phases
3151 #~(modify-phases %standard-phases
3152 (add-after 'unpack 'patch
3153 (lambda _
3154 (substitute* "Rakefile"
3155 ;; Don't require rubocop
3156 (("require 'rubocop/rake_task'") "")
3157 (("RuboCop::RakeTask.new") "")
3158 ;; Do not attempt to sign the gem.
3159 (("spec\\.signing_key = .*") ""))
3160
3161 (substitute* "spec/binary_spec.rb"
3162 (("/bin/ls") (which "ls"))
3163 (("/bin/cat") (which "cat"))
3164 (("/bin/chmod") (which "chmod"))
3165 (("/bin/df") (which "df"))))))))
3166 (native-inputs
3167 (list ruby-rspec))
3168 (synopsis "Extra methods for Ruby's @code{File} class")
3169 (description
3170 "The @dfn{ptools} (power tools) library extends Ruby's core @code{File}
3171class with many additional methods modelled after common POSIX tools, such as
3172@code{File.which} for finding executables, @code{File.tail} to print the last
3173lines of a file, @code{File.wc} to count words, and so on.")
3174 (home-page "https://github.com/djberg96/ptools")
3175 (license license:artistic2.0)))
3176
3177(define-public ruby-permutation
3178 (package
3179 (name "ruby-permutation")
3180 (version "0.1.8")
3181 (source (origin
3182 (method url-fetch)
3183 (uri (rubygems-uri "permutation" version))
3184 (sha256
3185 (base32
3186 "13crwk2vfbzv99czva7881027dbcnidihmvx2jc58z2vm3bp9sl8"))))
3187 (build-system ruby-build-system)
3188 (arguments
3189 `(#:phases
3190 (modify-phases %standard-phases
3191 (add-after 'unpack 'fix-rakefile
3192 (lambda _
3193 (substitute* "Rakefile"
3194 (("require 'rake/gempackagetask'")
3195 "require 'rubygems/package_task'")
3196 (("include Config") ""))))
3197 (replace 'check
3198 (lambda _
3199 (invoke "ruby" "-Ilib" "test/test.rb"))))))
3200 (synopsis "Library to perform operations with sequence permutations")
3201 (description "This package provides a Ruby library to perform different
3202operations with permutations of sequences, such as strings and arrays.")
3203 (home-page "https://flori.github.io/permutation")
3204 (license license:gpl2))) ; GPL 2 only
3205
3206(define-public ruby-shellany
3207 (package
3208 (name "ruby-shellany")
3209 (version "0.0.1")
3210 (source (origin
3211 (method url-fetch)
3212 (uri (rubygems-uri "shellany" version))
3213 (sha256
3214 (base32
3215 "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf"))))
3216 (build-system ruby-build-system)
3217 (arguments
3218 `(#:test-target "default"
3219 #:phases
3220 (modify-phases %standard-phases
3221 (add-after 'unpack 'fix-version-test
3222 (lambda _
3223 (substitute* "spec/shellany_spec.rb"
3224 (("^RSpec") "require \"shellany\"\nRSpec")))))))
3225 (native-inputs
3226 (list ruby-rspec ruby-nenv bundler))
3227 (synopsis "Capture command output")
3228 (description "Shellany is a Ruby library providing functions to capture
3229the output produced by running shell commands.")
3230 (home-page "https://rubygems.org/gems/shellany")
3231 (license license:expat)))
3232
3233(define-public ruby-notiffany
3234 (package
3235 (name "ruby-notiffany")
3236 (version "0.1.3")
3237 (source (origin
3238 (method url-fetch)
3239 (uri (rubygems-uri "notiffany" version))
3240 (sha256
3241 (base32
3242 "0f47h3bmg1apr4x51szqfv3rh2vq58z3grh4w02cp3bzbdh6jxnk"))))
3243 (build-system ruby-build-system)
3244 ;; Tests are not included in the gem.
3245 (arguments `(#:tests? #f))
3246 (propagated-inputs
3247 (list ruby-shellany ruby-nenv))
3248 (native-inputs
3249 (list bundler))
3250 (synopsis "Wrapper library for notification libraries")
3251 (description "Notiffany is a Ruby wrapper library for notification
3252libraries such as Libnotify.")
3253 (home-page "https://github.com/guard/notiffany")
3254 (license license:expat)))
3255
3256(define-public ruby-forking-test-runner
3257 (package
3258 (name "ruby-forking-test-runner")
3259 (version "1.6.0")
3260 (home-page "https://github.com/grosser/forking_test_runner")
3261 (source (origin
3262 (method git-fetch)
3263 (uri (git-reference (url home-page)
3264 (commit (string-append "v" version))))
3265 (file-name (git-file-name name version))
3266 (sha256
3267 (base32
3268 "1mrglzkj2nrgisccf2f30zbfmcs0awv1g3lw994b2az90fl39x8m"))))
3269 (build-system ruby-build-system)
3270 (arguments
3271 '(#:test-target "spec"
3272 ;; FIXME: ActiveRecord depends on sqlite3 1.3.6, but Guix has
3273 ;; 1.4.1, which in turn breaks the tests that use ActiveRecord.
3274 #:tests? #f
3275 #:phases (modify-phases %standard-phases
3276 (replace 'replace-git-ls-files
3277 (lambda _
3278 (substitute* "forking_test_runner.gemspec"
3279 (("`git ls-files lib/ bin/ MIT-LICENSE`")
3280 "`find lib/ bin/ MIT-LICENSE -type f | sort`"))))
3281 (add-before 'check 'remove-version-constraints
3282 (lambda _
3283 ;; Ignore hard coded version constraints for the tests.
3284 (delete-file "Gemfile.lock")))
3285 (add-before 'check 'set-HOME
3286 (lambda _
3287 ;; Many tests invoke Bundler, and fails when Bundler
3288 ;; warns that /homeless-shelter does not exist.
3289 (setenv "HOME" "/tmp"))))))
3290 (native-inputs
3291 (list ruby-activerecord ruby-bump ruby-rspec ruby-sqlite3 ruby-wwtd))
3292 (propagated-inputs
3293 (list ruby-parallel-tests))
3294 (synopsis "Run every test in a fork")
3295 (description
3296 "This package is a wrapper around @code{parallel_tests} that runs every
3297test in a fork to avoid pollution and get clean output per test.")
3298 (license license:expat)))
3299
3300(define-public ruby-formatador
3301 (package
3302 (name "ruby-formatador")
3303 (version "0.2.5")
3304 (source (origin
3305 (method url-fetch)
3306 (uri (rubygems-uri "formatador" version))
3307 (sha256
3308 (base32
3309 "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0"))))
3310 (build-system ruby-build-system)
3311 ;; Circular dependency: Tests require ruby-shindo, which requires
3312 ;; ruby-formatador at runtime.
3313 (arguments `(#:tests? #f))
3314 (synopsis "Ruby library to format text on stdout")
3315 (description "Formatador is a Ruby library to format text printed to the
3316standard output stream.")
3317 (home-page "https://github.com/geemus/formatador")
3318 (license license:expat)))
3319
3320(define-public ruby-fuubar
3321 (package
3322 (name "ruby-fuubar")
3323 (version "2.3.2")
3324 (source
3325 (origin
3326 ;; Fetch from the git repository, as the gem package doesn't include
3327 ;; the tests.
3328 (method git-fetch)
3329 (uri (git-reference
3330 (url "https://github.com/thekompanee/fuubar")
3331 (commit (string-append "releases/v" version))))
3332 (file-name (git-file-name name version))
3333 (sha256
3334 (base32
3335 "0jm1x2xp13csbnadixaikj7mlkp5yk4byx51npm56zi13izp7259"))))
3336 (build-system ruby-build-system)
3337 (arguments
3338 '(;; TODO: Some tests fail, unsure why.
3339 ;; 21 examples, 7 failures
3340 #:tests? #f
3341 #:phases
3342 (modify-phases %standard-phases
3343 (add-before 'build 'delete-certificate
3344 (lambda _
3345 ;; Remove 's.cert_chain' as we do not build with a private key
3346 (substitute* "fuubar.gemspec"
3347 ((".*cert_chain.*") "")
3348 ((".*signing_key.*") ""))))
3349 (replace 'check
3350 (lambda* (#:key tests? #:allow-other-keys)
3351 (when tests?
3352 (invoke "rspec")))))))
3353 (native-inputs
3354 (list bundler))
3355 (propagated-inputs
3356 (list ruby-rspec-core ruby-progressbar))
3357 (synopsis "Fuubar is an RSpec formatter that uses a progress bar")
3358 (description
3359 "Fuubar is an RSpec formatter that uses a progress bar instead of a
3360string of letters and dots as feedback. It also stops on the first test
3361failure.")
3362 (home-page "https://github.com/thekompanee/fuubar")
3363 (license license:expat)))
3364
3365(define-public ruby-haml
3366 (package
3367 (name "ruby-haml")
3368 (version "5.0.4")
3369 (source
3370 (origin
3371 (method url-fetch)
3372 (uri (rubygems-uri "haml" version))
3373 (sha256
3374 (base32
3375 "1q0a9fvqh8kn6wm97fcks6qzbjd400bv8bx748w8v87m7p4klhac"))))
3376 (build-system ruby-build-system)
3377 (arguments
3378 '(#:tests? #f)) ; No included tests
3379 (propagated-inputs
3380 (list ruby-tilt ruby-temple))
3381 (synopsis "Haml is a Ruby library to generate HTML documents")
3382 (description
3383 "@acronym{Haml, HTML Abstraction Markup Language} is a layer on top of
3384HTML or XML that is designed to express the structure of documents using
3385indentation rather than closing tags. It was originally envisioned as a
3386plugin for Ruby on Rails, but it can function as a stand-alone templating
3387engine.")
3388 (home-page "https://haml.info/")
3389 (license license:expat)))
3390
3391(define-public ruby-hamster
3392 (package
3393 (name "ruby-hamster")
3394 (version "3.0.0")
3395 (source
3396 (origin
3397 (method url-fetch)
3398 (uri (rubygems-uri "hamster" version))
3399 (sha256
3400 (base32
3401 "1n1lsh96vnyc1pnzyd30f9prcsclmvmkdb3nm5aahnyizyiy6lar"))))
3402 (build-system ruby-build-system)
3403 (arguments
3404 (list
3405 ;; Only supports Ruby 2 currently
3406 #:ruby ruby-2.7
3407 #:phases
3408 #~(modify-phases %standard-phases
3409 (add-after 'unpack 'remove-unnecessary-dependencies
3410 (lambda _
3411 ;; pry is a debugging tool, and is unnecessary when running the
3412 ;; tests
3413 (substitute* "spec/lib/hamster/vector/insert_spec.rb"
3414 (("require 'pry'") ""))
3415 (substitute* "spec/spec_helper.rb"
3416 (("require \"pry\"") "")
3417 ;; CodeClimate is an online service, and is unnecessary for
3418 ;; running the tests
3419 (("require \"codeclimate-test-reporter\"") "")
3420 (("CodeClimate.*\n") ""))))
3421 ;; No Rakefile is included, so run rspec directly.
3422 (replace 'check
3423 (lambda* (#:key tests? #:allow-other-keys)
3424 (when tests?
3425 (invoke "ruby" (which "rspec"))))))))
3426 (propagated-inputs
3427 (list ruby-concurrent))
3428 (native-inputs
3429 (list ruby-rspec))
3430 (synopsis "Efficient, immutable, thread-safe collection classes for Ruby")
3431 (description
3432 "Hamster provides 6 persistent data structures: @code{Hash}, @code{Vector},
3433@code{Set}, @code{SortedSet}, @code{List}, and @code{Deque} (which works as an
3434immutable queue or stack).")
3435 (home-page "https://github.com/hamstergem/hamster")
3436 (license license:expat)))
3437
3438(define-public ruby-hashdiff
3439 (package
3440 (name "ruby-hashdiff")
3441 (version "1.0.1")
3442 (source
3443 (origin
3444 (method url-fetch)
3445 (uri (rubygems-uri "hashdiff" version))
3446 (sha256
3447 (base32
3448 "1nynpl0xbj0nphqx1qlmyggq58ms1phf5i03hk64wcc0a17x1m1c"))))
3449 (build-system ruby-build-system)
3450 (arguments
3451 '(#:phases
3452 (modify-phases %standard-phases
3453 ;; Run tests directly via rspec to avoid depending on rubocop.
3454 (replace 'check
3455 (lambda* (#:key tests? #:allow-other-keys)
3456 (when tests?
3457 (invoke "rspec")))))))
3458 (native-inputs
3459 (list bundler ruby-rspec-2))
3460 (synopsis "HashDiff computes the smallest difference between two hashes")
3461 (description
3462 "HashDiff is a Ruby library to compute the smallest difference between
3463two hashes.")
3464 (home-page "https://github.com/liufengyun/hashdiff")
3465 (license license:expat)))
3466
3467(define-public ruby-hydra-minimal
3468 ;; No releases yet.
3469 (let ((commit "a4cab705a8a281e4356cb6a05a1946443ad9d53b")
3470 (revision "1"))
3471 (package
3472 (name "ruby-hydra-minimal")
3473 (version (git-version "0.0.0" revision commit))
3474 (home-page "https://github.com/hyphenation/hydra")
3475 (source (origin
3476 (method git-fetch)
3477 (uri (git-reference (url home-page) (commit commit)))
3478 (file-name (git-file-name name version))
3479 ;; byebug is a non-essential debugging utility that brings in
3480 ;; many dependencies.
3481 (patches (search-patches "ruby-hydra-minimal-no-byebug.patch"))
3482 (sha256
3483 (base32
3484 "1swzab7i4cqk1bck7p5m3bh526jh0v6m9qq720r3270zbjc8x8z3"))))
3485 (build-system ruby-build-system)
3486 (arguments
3487 ;; Avoid rspec dependency.
3488 '(#:tests? #f))
3489 (synopsis "Ruby hyphenation patterns")
3490 (description
3491 "ruby-hydra-minimal is a Ruby library for working with hyphenation patterns.
3492It is a low-dependency variant of ruby-hydra.")
3493 (license license:expat))))
3494
3495;; Pinned variant for use by texlive
3496(define-public ruby-hydra-minimal/pinned
3497 (let ((commit "5abfa378743756ae4d9306cc134bcc482f5c9525")
3498 (revision "0"))
3499 (hidden-package
3500 (package
3501 (inherit ruby-hydra-minimal)
3502 (version (git-version "0.0" revision commit))
3503 (source (origin
3504 (method git-fetch)
3505 (uri (git-reference
3506 (url "https://github.com/hyphenation/hydra")
3507 (commit commit)))
3508 (file-name (git-file-name "ruby-hydra-minimal" version))
3509 ;; byebug is a non-essential debugging utility that brings in
3510 ;; many dependencies.
3511 (patches (search-patches "ruby-hydra-minimal-no-byebug.patch"))
3512 (sha256
3513 (base32
3514 "1cik398l2765y3d9sdhjzki3303hkry58ac6jlkiy7iy62nm529f"))))
3515 (arguments
3516 (list
3517 #:tests? #f
3518 #:ruby ruby-2.7))))))
3519
3520(define-public ruby-hydra
3521 (package
3522 (inherit ruby-hydra-minimal)
3523 (name "ruby-hydra")
3524 (arguments
3525 (list
3526 #:phases
3527 #~(modify-phases %standard-phases
3528 (add-after 'unpack 'make-files-writable
3529 (lambda _
3530 (for-each make-file-writable (find-files "."))))
3531 (replace 'check
3532 (lambda* (#:key tests? #:allow-other-keys)
3533 (when tests?
3534 (invoke "rspec")))))))
3535 (native-inputs
3536 (list ruby-rspec))
3537 (description
3538 "ruby-hydra is a Ruby library for working with hyphenation patterns.")))
3539
3540(define-public ruby-shindo
3541 (package
3542 (name "ruby-shindo")
3543 (version "0.3.11")
3544 (source (origin
3545 (method url-fetch)
3546 (uri (rubygems-uri "shindo" version))
3547 (sha256
3548 (base32
3549 "1wccg3a4g3agfyszipkdnbcgsazcfwdbz1gv51q8m17m9plvpzdp"))))
3550 (build-system ruby-build-system)
3551 (arguments
3552 (list
3553 #:test-target "tests"
3554 #:phases
3555 #~(modify-phases %standard-phases
3556 (add-after 'unpack 'fix-tests
3557 (lambda _
3558 (substitute* "tests/tests_helper.rb"
3559 (("-rrubygems") ""))))
3560 ;; Move the 'check phase to after 'install, to use installed shindo.
3561 (delete 'check)
3562 (add-after 'install 'configure-tests
3563 (lambda* (#:key tests? #:allow-other-keys)
3564 (when tests?
3565 (setenv "GEM_PATH"
3566 (string-append
3567 (getenv "GEM_PATH") ":"
3568 #$output "/lib/ruby/vendor_ruby"))
3569 (setenv "PATH"
3570 (string-append
3571 (getenv "PATH") ":" #$output "/bin")))))
3572 (add-after 'configure-tests 'check
3573 (assoc-ref %standard-phases 'check)))))
3574 (propagated-inputs
3575 (list ruby-formatador))
3576 (synopsis "Simple depth first Ruby testing")
3577 (description "Shindo is a simple depth first testing library for Ruby.")
3578 (home-page "https://github.com/geemus/shindo")
3579 (license license:expat)))
3580
3581(define-public ruby-rubygems-tasks
3582 (package
3583 (name "ruby-rubygems-tasks")
3584 (version "0.2.5")
3585 (source (origin
3586 (method url-fetch)
3587 (uri (rubygems-uri "rubygems-tasks" version))
3588 (sha256
3589 (base32
3590 "1x3sz3n2dlknd3v7w1mrq6f0ag6pwzhjvg7z29p75w3p42ma1gbx"))))
3591 (build-system ruby-build-system)
3592 ;; Tests need Internet access.
3593 (arguments `(#:tests? #f))
3594 (synopsis "Rake tasks for managing and releasing Ruby Gems")
3595 (description "Rubygems-task provides Rake tasks for managing and releasing
3596Ruby Gems.")
3597 (home-page "https://github.com/postmodern/rubygems-tasks")
3598 (license license:expat)))
3599
3600(define-public ruby-rubyzip
3601 (package
3602 (name "ruby-rubyzip")
3603 (version "2.3.2")
3604 (source (origin
3605 (method git-fetch)
3606 (uri (git-reference
3607 (url "https://github.com/rubyzip/rubyzip")
3608 (commit (string-append "v" version))))
3609 (file-name (git-file-name name version))
3610 (sha256
3611 (base32
3612 "03p8c990n6c1r4g64w0vv7z2iaswisl07l2f1lbh1s78cvmlmfxx"))))
3613 (build-system ruby-build-system)
3614 (arguments
3615 '(#:phases
3616 (modify-phases %standard-phases
3617 (add-after 'unpack 'disable-rubocop
3618 (lambda _
3619 (substitute* "Rakefile"
3620 (("require 'rubocop/rake_task'") "")
3621 (("RuboCop::RakeTask.new") ""))))
3622 (add-before 'check 'patch-tests
3623 (lambda* (#:key inputs #:allow-other-keys)
3624 (substitute* "test/gentestfiles.rb"
3625 (("/usr/bin/zip") (which "zip")))))
3626 (add-after 'patch-source-shebangs 'unpatch-some-source-shebangs
3627 (lambda _
3628 ;; The tests compare zipped files with data test files; since the
3629 ;; zip files do not have their shebangs patched, the data files
3630 ;; compared with their extracted version must also be left
3631 ;; un-patched.
3632 (substitute* (find-files "test/data" "\\.(txt|rb)$")
3633 (((which "ruby"))
3634 "/usr/bin/env ruby")))))))
3635 (native-inputs
3636 (list bundler ruby-simplecov zip unzip))
3637 (synopsis "Ruby module is for reading and writing zip files")
3638 (description
3639 "The rubyzip module provides ways to read from and create zip files.")
3640 (home-page "https://github.com/rubyzip/rubyzip")
3641 (license license:bsd-2)))
3642
3643(define-public ruby-silent-stream
3644 (package
3645 (name "ruby-silent-stream")
3646 (version "1.0.6")
3647 (source (origin
3648 (method url-fetch)
3649 (uri (rubygems-uri "silent_stream" version))
3650 (sha256
3651 (base32
3652 "10381fpvjzfjvhgfyv700607fpa29firgf52w5w5536m4fh6x63m"))))
3653 (build-system ruby-build-system)
3654 (synopsis "ActiveSupport stream silencing without ActiveSupport")
3655 (description "SilentStream is an extraction of some parts of
3656ActiveSupport's Kernel Reporting Core Extensions around silencing IO
3657streams.")
3658 (home-page "https://github.com/pboling/silent_stream")
3659 (license license:expat)))
3660
3661(define-public ruby-simplecov-lcov
3662 (package
3663 (name "ruby-simplecov-lcov")
3664 (version "0.8.0")
3665 (source (origin
3666 (method url-fetch)
3667 (uri (rubygems-uri "simplecov-lcov" version))
3668 (sha256
3669 (base32
3670 "1h8kswnshgb9zidvc88f4zjy4gflgz3854sx9wrw8ppgnwfg6581"))))
3671 (build-system ruby-build-system)
3672 ;; The test suite fails half of its tests; it seems to rely on older
3673 ;; versions of simplecov, rspec, possibly others (see:
3674 ;; https://github.com/fortissimo1997/simplecov-lcov/issues/29).
3675 (arguments (list #:tests? #f
3676 #:test-target "spec"))
3677 (native-inputs
3678 (list ruby-activesupport
3679 ruby-coveralls
3680 ruby-rspec
3681 ruby-simplecov))
3682 (synopsis "SimpleCov formatter to generate a lcov style coverage")
3683 (description "This package provides a SimpleCov formatter to generate a
3684lcov-style coverage report.")
3685 (home-page "https://github.com/fortissimo1997/simplecov-lcov")
3686 (license license:expat)))
3687
3688(define-public ruby-snaky-hash
3689 (package
3690 (name "ruby-snaky-hash")
3691 (version "2.0.1")
3692 (source (origin
3693 (method git-fetch)
3694 (uri (git-reference ;for tests
3695 (url "https://gitlab.com/oauth-xx/snaky_hash")
3696 (commit (string-append "v" version))))
3697 (file-name (git-file-name name version))
3698 (sha256
3699 (base32
3700 "0zmixxzi2g2d75zii65bq037j4g67p25l6aqddbmmwizspsp5az6"))))
3701 (build-system ruby-build-system)
3702 (arguments
3703 (list #:phases #~(modify-phases %standard-phases
3704 (add-after 'unpack 'relax-requirements
3705 (lambda _
3706 (substitute* "Gemfile"
3707 (("^linting = .*")
3708 "linting = false\n")
3709 (("^coverage = .*")
3710 "coverage = false\n")
3711 (("^debug = .*")
3712 "debug = false\n"))
3713 (substitute* "spec/spec_helper.rb"
3714 (("^RUN_COVERAGE = .*")
3715 "RUN_COVERAGE = false\n")
3716 (("^ALL_FORMATTERS = .*")
3717 "ALL_FORMATTERS = false\n"))))
3718 (add-before 'build 'drop-signing-key-requirement
3719 (lambda _
3720 (substitute* "snaky_hash.gemspec"
3721 (("spec.signing_key =.*")
3722 "spec.signing_key = nil")))))))
3723 (native-inputs (list ruby-rspec ruby-rspec-block-is-expected))
3724 (propagated-inputs (list ruby-hashie ruby-version-gem))
3725 (synopsis "Hash keys and look-ups normalization Ruby library")
3726 (description "The SnakyHash Ruby library provides classes for normalizing
3727hash keys and look-ups, and a pseudo-object interface.")
3728 (home-page "https://gitlab.com/oauth-xx/snaky_hash")
3729 (license license:expat)))
3730
3731(define-public ruby-useragent
3732 (package
3733 (name "ruby-useragent")
3734 (version "0.16.10")
3735 (source (origin
3736 (method url-fetch)
3737 (uri (rubygems-uri "useragent" version))
3738 (sha256
3739 (base32
3740 "1fv5kvq494swy0p17h9qya9r50w15xsi9zmvhzb8gh55kq6ki50p"))))
3741 (build-system ruby-build-system)
3742 (arguments
3743 '(#:tests? #f)) ; no test suite
3744 (synopsis "HTTP user agent parser for Ruby")
3745 (description "UserAgent is a Ruby library that parses and compares HTTP
3746User Agents.")
3747 (home-page "https://github.com/gshutler/useragent")
3748 (license license:expat)))
3749
3750(define-public ruby-backports
3751 (package
3752 (name "ruby-backports")
3753 (version "3.11.4")
3754 (source
3755 (origin
3756 (method url-fetch)
3757 (uri (rubygems-uri "backports" version))
3758 (sha256
3759 (base32
3760 "1hshjxww2h7s0dk57njrygq4zpp0nlqrjfya7zwm27iq3rhc3y8g"))))
3761 (build-system ruby-build-system)
3762 (arguments
3763 '(;; TODO: This should be default, but there is one test failure
3764 #:test-target "all_spec"))
3765 (native-inputs
3766 (list ruby-mspec ruby-activesupport))
3767 (synopsis "Backports of the features in newer Ruby versions")
3768 (description
3769 "Backports enables more compatibility across Ruby versions by providing
3770backports of some features.")
3771 (home-page "https://github.com/marcandre/backports")
3772 (license license:expat)))
3773
3774(define-public ruby-bacon
3775 (package
3776 (name "ruby-bacon")
3777 (version "1.2.0")
3778 (source (origin
3779 (method url-fetch)
3780 (uri (rubygems-uri "bacon" version))
3781 (sha256
3782 (base32
3783 "1f06gdj77bmwzc1k5iragl1595hbn67yc7sqvs56ca8plrr2vmai"))))
3784 (build-system ruby-build-system)
3785 (synopsis "Small RSpec clone")
3786 (description "Bacon is a small RSpec clone providing all essential
3787features.")
3788 (home-page "https://github.com/chneukirchen/bacon")
3789 (license license:expat)))
3790
3791(define-public ruby-bacon-bits
3792 (package
3793 (name "ruby-bacon-bits")
3794 (version "0.1.0")
3795 (source
3796 (origin
3797 (method url-fetch)
3798 (uri (rubygems-uri "bacon-bits" version))
3799 (sha256
3800 (base32
3801 "1ghpj8ja94lhi8rgi872hqk4fd2amz2k7g9znd64z5dj7v6l0dmx"))))
3802 (build-system ruby-build-system)
3803 (arguments
3804 ;; No tests
3805 '(#:tests? #f))
3806 (propagated-inputs (list ruby-bacon))
3807 (synopsis "Extensions to Bacon, for disabling tests, before and after
3808blocks and more")
3809 (description
3810 "This extends the bacon testing framework with useful extensions to
3811disable tests, have before and after blocks that run once and more.")
3812 (home-page "https://github.com/cldwalker/bacon-bits")
3813 (license license:expat)))
3814
3815(define-public ruby-bacon-colored-output
3816 (package
3817 (name "ruby-bacon-colored-output")
3818 (version "1.1.1")
3819 (source
3820 (origin
3821 (method url-fetch)
3822 (uri (rubygems-uri "bacon-colored_output" version))
3823 (sha256
3824 (base32
3825 "1znyh3vkfdlmf19p3k4zip88ibym41dn5g4p4n5hmks2iznb7qpx"))))
3826 (build-system ruby-build-system)
3827 (arguments
3828 '(;; No included tests
3829 #:tests? #f))
3830 (propagated-inputs
3831 (list ruby-bacon))
3832 (synopsis "Colored output for Bacon test framework")
3833 (description
3834 "This package adds color through ANSI escape codes to Bacon test
3835output.")
3836 (home-page "https://github.com/whitequark/bacon-colored_output")
3837 (license license:expat)))
3838
3839(define-public ruby-bake
3840 (package
3841 (name "ruby-bake")
3842 (version "0.18.2")
3843 (source (origin
3844 (method git-fetch) ;for tests
3845 (uri (git-reference
3846 (url "https://github.com/ioquatix/bake")
3847 (commit (string-append "v" version))))
3848 (file-name (git-file-name name version))
3849 (sha256
3850 (base32
3851 "19yi1fxzz9n580gig3p3j6nxbgcfcassa6b0q07jkqrzxdqn7xhn"))))
3852 (build-system ruby-build-system)
3853 (arguments
3854 (list #:phases
3855 #~(modify-phases %standard-phases
3856 (add-after 'unpack 'sanitize-dependencies
3857 (lambda _
3858 ;; These dependencies are not needed to build and run tests
3859 ;; and contain circular dependencies.
3860 (substitute* "gems.rb"
3861 ((".*'bake-modernize'.*") "")
3862 ((".*'bake-gem'.*") "")
3863 ((".*'bake-github-pages'.*") "")
3864 ((".*'utopia-project'.*") ""))))
3865 (add-before 'build 'drop-signing-key-requirement
3866 (lambda _
3867 (substitute* "bake.gemspec"
3868 (("spec.signing_key =.*")
3869 "spec.signing_key = nil"))))
3870 (replace 'check
3871 (lambda* (#:key tests? #:allow-other-keys)
3872 (when tests?
3873 (invoke "rspec")))))))
3874 (native-inputs (list ruby-covered ruby-rspec))
3875 (propagated-inputs (list ruby-samovar))
3876 (synopsis "Replacement for rake with a simpler syntax")
3877 (description "Bake is a task execution tool, inspired by Rake, but
3878codifying many of the use cases which are typically implemented in an ad-hoc
3879manner.")
3880 (home-page "https://github.com/ioquatix/bake")
3881 (license license:expat)))
3882
3883(define-public ruby-bake-test
3884 (package
3885 (name "ruby-bake-test")
3886 (version "0.2.0")
3887 (source (origin
3888 (method url-fetch)
3889 (uri (rubygems-uri "bake-test" version))
3890 (sha256
3891 (base32
3892 "1p6kfpncj0s4zyynrrq6c735jvh0dnwyv7kfqym4rpyka4f85qdp"))))
3893 (build-system ruby-build-system)
3894 ;; XXX: Disable the test suite to avoid a circular dependency with
3895 ;; ruby-sus.
3896 (arguments (list #:tests? #f))
3897 (propagated-inputs (list ruby-bake))
3898 (synopsis "Test suite automatic runner for Ruby")
3899 (description "@command{bake-test} automatically discovers how to run local
3900test suites for Ruby projects. It supports @command{rspec}, @command{sus}, as
3901well as @samp{rake}.")
3902 (home-page "https://github.com/ioquatix/bake-test")
3903 (license license:expat)))
3904
3905(define-public ruby-bake-test-external
3906 (package
3907 (name "ruby-bake-test-external")
3908 (version "0.3.2")
3909 (source (origin
3910 (method url-fetch)
3911 (uri (rubygems-uri "bake-test-external" version))
3912 (sha256
3913 (base32
3914 "0749xc7jkz1c5gsq1giwhrqy6s6xqm48bdvs414372881wki2jmh"))))
3915 (build-system ruby-build-system)
3916 ;; The test suite relies on git and network access to clone external
3917 ;; repositories.
3918 (arguments (list #:tests? #f))
3919 (propagated-inputs (list ruby-bake))
3920 (synopsis "Continuous integration extension for Bake")
3921 (description "Bake Test External adds a @samp{test:external} action to the
3922@command{bake} command to run the test suites of dependent projects to check
3923for breakage.")
3924 (home-page "https://github.com/ioquatix/bake-test-external")
3925 (license license:expat)))
3926
3927(define-public ruby-connection-pool
3928 (package
3929 (name "ruby-connection-pool")
3930 (version "2.4.1")
3931 (source (origin
3932 (method git-fetch)
3933 (uri (git-reference
3934 (url "https://github.com/mperham/connection_pool")
3935 (commit (string-append "v" version))))
3936 (file-name (git-file-name name version))
3937 (sha256
3938 (base32
3939 "1iijshb1n9xl5knvpzzx0vqlw7v7mskiw1cpfj1cmdmssavyhsx5"))))
3940 (build-system ruby-build-system)
3941 (arguments
3942 (list
3943 #:phases
3944 #~(modify-phases %standard-phases
3945 (add-after 'unpack 'patch
3946 (lambda _
3947 (substitute* "Rakefile"
3948 (("require \"standard/rake\"") "")
3949 ((":\"standard:fix\",") "")))))))
3950 (native-inputs
3951 (list bundler))
3952 (synopsis "Generic connection pool for Ruby")
3953 (description "Connection_pool provides a generic connection pooling
3954interface for Ruby programs.")
3955 (home-page "https://github.com/mperham/connection_pool")
3956 (license license:expat)))
3957
3958(define-public ruby-fast-gettext
3959 (package
3960 (name "ruby-fast-gettext")
3961 (version "4.1.0")
3962 (home-page "https://github.com/grosser/fast_gettext")
3963 (source (origin
3964 (method git-fetch)
3965 (uri (git-reference (url home-page)
3966 (commit (string-append "v" version))))
3967 (file-name (git-file-name name version))
3968 (sha256
3969 (base32
3970 "04p9s0r67xgvckab9ydb3fbnrc7g20p5c05z2zsacynlkp9x5jp9"))))
3971 (build-system ruby-build-system)
3972 (arguments
3973 (list
3974 #:test-target "spec"
3975 #:phases
3976 #~(modify-phases %standard-phases
3977 (add-before 'check 'remove-version-constraints
3978 (lambda _
3979 (delete-file "Gemfile.lock"))))))
3980 (native-inputs
3981 (list ;; For tests.
3982 ruby-activerecord
3983 ruby-activesupport
3984 ruby-bump
3985 ruby-forking-test-runner
3986 ruby-i18n
3987 ruby-rubocop
3988 ruby-rubocop-packaging
3989 ruby-rspec
3990 ruby-single-cov
3991 ruby-sqlite3
3992 ruby-wwtd))
3993 (synopsis "Fast implementation of @code{GetText}")
3994 (description
3995 "This package provides an alternative implementation of the Ruby
3996@code{GetText} library that is approximately 12x faster yet thread safe.")
3997 ;; Some parts are covered by the Ruby license, see file headers.
3998 (license (list license:expat license:ruby))))
3999
4000(define-public ruby-fiber-local
4001 (package
4002 (name "ruby-fiber-local")
4003 (version "1.0.0")
4004 (source (origin
4005 (method git-fetch)
4006 (uri (git-reference
4007 (url "https://github.com/socketry/fiber-local")
4008 (commit (string-append "v" version))))
4009 (file-name (git-file-name name version))
4010 (sha256
4011 (base32
4012 "0pp5b81h0lysdnphgprkixh1az0fkrgir5sbcp0mm8arxf3f8m90"))))
4013 (build-system ruby-build-system)
4014 (arguments
4015 (list #:phases
4016 #~(modify-phases %standard-phases
4017 (add-after 'extract-gemspec 'sanitize-dependencies
4018 (lambda _
4019 ;; This pulls in extraneous maintenance dependencies.
4020 (delete-file "gems.rb")
4021 ;; Depending on ruby-covered would introduce a dependency
4022 ;; cycle with it.
4023 (substitute* '("fiber-local.gemspec" "spec/spec_helper.rb")
4024 ((".*covered.*") ""))))
4025 (replace 'check
4026 (lambda* (#:key tests? #:allow-other-keys)
4027 (when tests?
4028 (invoke "rspec")))))))
4029 (native-inputs (list ruby-rspec))
4030 (synopsis "Ruby module to simplify fiber-local state management")
4031 (description "This package provides a class-level mixin to make managing
4032fiber-local state easy. It provides easy access to a fiber-local state from a
4033fiber, and defaults to a shared thread-local state.")
4034 (home-page "https://github.com/socketry/fiber-local")
4035 (license license:expat)))
4036
4037(define-public ruby-flores
4038 (let ((commit "92fded00b04b1e3d308edb7440d7b7ab2c89ab5e")
4039 (revision "0"))
4040 (package
4041 (name "ruby-flores")
4042 (version (git-version "0.0.8" revision commit))
4043 (source
4044 (origin
4045 (method git-fetch)
4046 (uri (git-reference
4047 (url "https://github.com/jordansissel/ruby-flores")
4048 (commit commit)))
4049 (sha256
4050 (base32 "0jvnw0jli2zzxklfk751vfbi4acf9lijppk67346j3b2qxqi8xms"))
4051 (patches
4052 (search-patches "ruby-flores-fix-deprecations.patch"))))
4053 (build-system ruby-build-system)
4054 (arguments
4055 (list #:phases
4056 #~(modify-phases %standard-phases
4057 (add-after 'unpack 'fix-gemspec
4058 (lambda _
4059 (substitute* "flores.gemspec"
4060 ;; Since this is not a git repository, do not call 'git'.
4061 (("git ls-files") "find . -type f |sort"))))
4062 (replace 'check
4063 (lambda* (#:key tests? #:allow-other-keys)
4064 (when tests?
4065 (invoke "ruby" (which "rspec"))))))))
4066 (native-inputs (list ruby-rspec ruby-simplecov))
4067 (synopsis "Fuzzing, randomization, and stress testing library")
4068 (description "Flores is a fuzzing, randomization, and stress library to
4069help tests uncover more bugs.")
4070 (home-page "https://github.com/jordansissel/ruby-flores")
4071 (license license:asl2.0))))
4072
4073(define-public ruby-ipaddr
4074 (package
4075 (name "ruby-ipaddr")
4076 (version "1.2.6")
4077 (source (origin
4078 (method git-fetch) ;for tests
4079 (uri (git-reference
4080 (url "https://github.com/ruby/ipaddr")
4081 (commit (string-append "v" version))))
4082 (file-name (git-file-name name version))
4083 (sha256
4084 (base32
4085 "0h3z8i1fa8s4gx48322fflhpkzghd4bmd9109hglsgdkic7b0dyp"))))
4086 (build-system ruby-build-system)
4087 (native-inputs (list ruby-test-unit-ruby-core))
4088 (synopsis "Manipulate IP addresses")
4089 (description "This package provides a set of methods to manipulate an IP
4090address. Both IPv4 and IPv6 are supported.")
4091 (home-page "https://github.com/ruby/ipaddr")
4092 (license license:bsd-2)))
4093
4094(define-public ruby-fake-ftp
4095 (package
4096 (name "ruby-fake-ftp")
4097 (version "0.3.0")
4098 (source (origin
4099 (method url-fetch)
4100 (uri (rubygems-uri "fake_ftp" version))
4101 (sha256
4102 (base32
4103 "1zl9q9m4x7lz9890g0h1qqj7hcxnwzpjfnfbxadjblps7b5054q4"))))
4104 (build-system ruby-build-system)
4105 (native-inputs (list ruby-rspec ruby-rubocop ruby-simplecov))
4106 (arguments
4107 '(#:test-target "spec"))
4108 (synopsis "Fake FTP server for use with ruby tests")
4109 (description "This package allows you to test FTP implementations in ruby.
4110It is a minimal single-client FTP server that can be bound to any arbitrary
4111port on localhost.")
4112 (home-page "https://rubygems.org/gems/fake_ftp")
4113 (license license:expat)))
4114
4115(define-public ruby-net-telnet
4116 (package
4117 (name "ruby-net-telnet")
4118 (version "0.2.0")
4119 (source (origin
4120 (method url-fetch)
4121 (uri (rubygems-uri "net-telnet" version))
4122 (sha256
4123 (base32
4124 "16nkxc79nqm7fd6w1fba4kb98vpgwnyfnlwxarpdcgywz300fc15"))))
4125 (build-system ruby-build-system)
4126 (synopsis "Telnet client functionality")
4127 (description "This package provides telnet client functionality.")
4128 (home-page "https://github.com/ruby/net-telnet")
4129 (license license:bsd-2)))
4130
4131(define-public ruby-net-ftp
4132 (package
4133 (name "ruby-net-ftp")
4134 (version "0.3.4")
4135 (source (origin
4136 (method git-fetch) ;for tests
4137 (uri (git-reference
4138 (url "https://github.com/ruby/net-ftp")
4139 (commit (string-append "v" version))))
4140 (file-name (git-file-name name version))
4141 (sha256
4142 (base32
4143 "11b1sw7c4c7xrhn5li5m0wylw42hp52jp6pqacyb43hkw1m5zr36"))))
4144 (build-system ruby-build-system)
4145 (propagated-inputs (list ruby-net-protocol ruby-time))
4146 (synopsis "File Transfer Protocol client library")
4147 (description "This class implements the File Transfer Protocol. If you
4148have used a command-line FTP program, and are familiar with the commands, you
4149will be able to use this class easily. Some extra features are included to
4150take advantage of Ruby's style and strengths.")
4151 (home-page "https://github.com/ruby/net-ftp")
4152 (license license:bsd-2)))
4153
4154(define-public ruby-net-http-persistent
4155 (package
4156 (name "ruby-net-http-persistent")
4157 (version "4.0.2")
4158 (source (origin
4159 (method url-fetch)
4160 (uri (rubygems-uri "net-http-persistent" version))
4161 (sha256
4162 (base32
4163 "0i1as2lgnw7b4jid0gw5glv5hnxz36nmfsbr9rmxbcap72ijgy03"))))
4164 (build-system ruby-build-system)
4165 (native-inputs
4166 (list ruby-connection-pool
4167 ruby-hoe
4168 ruby-rake-manifest))
4169 (synopsis "Persistent HTTP connection manager")
4170 (description "Net::HTTP::Persistent manages persistent HTTP connections
4171using Net::HTTP, supporting reconnection and retry according to RFC 2616.")
4172 (home-page "https://github.com/drbrain/net-http-persistent")
4173 (license license:expat)))
4174
4175(define-public ruby-net-imap
4176 (package
4177 (name "ruby-net-imap")
4178 (version "0.3.4")
4179 (source (origin
4180 (method git-fetch) ;for tests
4181 (uri (git-reference
4182 (url "https://github.com/ruby/net-imap")
4183 (commit (string-append "v" version))))
4184 (file-name (git-file-name name version))
4185 (sha256
4186 (base32
4187 "0nx49i1n9q1wpancqaac2srrpb8mb43mc8wryyqyhpgki2grwyxw"))))
4188 (build-system ruby-build-system)
4189 (arguments
4190 ;; The test suite appears to rely on RFCs it tries fetching from the
4191 ;; network (see: https://github.com/ruby/net-imap/issues/136).
4192 (list #:tests? #f
4193 #:phases
4194 #~(modify-phases %standard-phases
4195 (add-before 'replace-git-ls-files 'adjust-for-git-ls-files
4196 (lambda _
4197 ;; Adjust the git ls-files invocation so that it matches
4198 ;; the expected pattern.
4199 (substitute* "net-imap.gemspec"
4200 (("`git ls-files -z 2>/dev/null`")
4201 "`git ls-files -z`")))))))
4202 (propagated-inputs (list ruby-date ruby-net-protocol))
4203 (synopsis "Ruby client api for Internet Message Access Protocol")
4204 (description "@code{Net::IMAP} implements Internet Message Access
4205Protocol (IMAP) client functionality. The protocol is described in
4206@url{https://tools.ietf.org/html/rfc3501, IMAP}.")
4207 (home-page "https://github.com/ruby/net-imap")
4208 (license license:bsd-2)))
4209
4210(define-public ruby-net-pop
4211 (package
4212 (name "ruby-net-pop")
4213 (version "0.1.2")
4214 (source (origin
4215 (method git-fetch)
4216 (uri (git-reference
4217 (url "https://github.com/ruby/net-pop")
4218 (commit (string-append "v" version))))
4219 (file-name (git-file-name name version))
4220 (sha256
4221 (base32
4222 "05vz6a56va2rbr7ld78gdzwy1j5mzs98cz82ax5aqa83pzzk6jld"))))
4223 (build-system ruby-build-system)
4224 (propagated-inputs (list ruby-net-protocol))
4225 (synopsis "Ruby client library for POP3")
4226 (description "This library provides functionality for retrieving email via
4227POP3, the Post Office Protocol version 3, as specified by
4228@url{http://www.ietf.org/rfc/rfc1939.txt, RFC1939}.")
4229 (home-page "https://github.com/ruby/net-pop")
4230 (license license:bsd-2)))
4231
4232(define-public ruby-net-smtp
4233 (package
4234 (name "ruby-net-smtp")
4235 (version "0.3.3")
4236 (source (origin
4237 (method git-fetch) ;for tests
4238 (uri (git-reference
4239 (url "https://github.com/ruby/net-smtp")
4240 (commit (string-append "v" version))))
4241 (file-name (git-file-name name version))
4242 (sha256
4243 (base32
4244 "0ca2wh45xvc09rv6v6sz3vbnkzrjzk5c4l6dk50zk4dwxvghma8r"))))
4245 (build-system ruby-build-system)
4246 (arguments
4247 (list
4248 #:phases
4249 #~(modify-phases %standard-phases
4250 (add-before 'check 'regenerate-certificate
4251 ;; On version 0.5.0 a Makefile was introduced to regenerated
4252 ;; the certificates, and instead of calling openssl directory
4253 ;; we could do (with-directory-excursion "test/net/fixtures"
4254 ;; (invoke "make" "regen_certs"). However the certificate is
4255 ;; expired versions before 0.5.0 as well.
4256 (lambda _
4257 (with-directory-excursion "test/net/fixtures"
4258 (invoke
4259 "openssl" "req" "-new" "-key" "server.key" "-out"
4260 "server.csr" "-subj"
4261 "/C=JP/ST=Shimane/O=Ruby Core Team/OU=Ruby Test/CN=localhost")
4262 (invoke "openssl" "req" "-new" "-x509" "-days" "3650"
4263 "-key" "server.key" "-out" "cacert.pem" "-subj"
4264 (string-append
4265 "/C=JP/ST=Shimane/L=Matz-e city/O=Ruby "
4266 "Core Team/CN=Ruby Test "
4267 "CA/emailAddress=security@ruby-lang.org"))
4268 (invoke "openssl" "x509" "-days" "3650" "-CA" "cacert.pem"
4269 "-CAkey" "server.key" "-set_serial" "00" "-in"
4270 "server.csr" "-req" "-out" "server.crt")))))))
4271 (native-inputs (list openssl))
4272 (propagated-inputs (list ruby-net-protocol))
4273 (synopsis "Simple Mail Transfer Protocol client library for Ruby")
4274 (description "This library provides functionality to send Internet mail
4275via SMTP, the Simple Mail Transfer Protocol. The SMTP protocol specification
4276is known as @url{http://www.ietf.org/rfc/rfc2821.txt, RFC2821}.")
4277 (home-page "https://github.com/ruby/net-smtp")
4278 (license license:bsd-2)))
4279
4280(define-public ruby-pleaserun
4281 (package
4282 (name "ruby-pleaserun")
4283 (version "0.0.32")
4284 (source (origin
4285 (method url-fetch)
4286 (uri (rubygems-uri "pleaserun" version))
4287 (sha256
4288 (base32
4289 "1aykf0l8327bqkkf5xd9jcglsib973zpy37cfnlf4j0vp0cdpn2d"))))
4290 (build-system ruby-build-system)
4291 (arguments
4292 (list #:phases
4293 #~(modify-phases %standard-phases
4294 (add-after 'extract-gemspec 'relax-requirements
4295 (lambda _
4296 (substitute* "pleaserun.gemspec"
4297 ;; Mustache is pinned at 0.99.8, for portability with
4298 ;; older Rubies.
4299 (("dependency\\(%q<mustache>.freeze.*")
4300 "dependency(%q<mustache>.freeze)\n"))))
4301 (replace 'check
4302 (lambda* (#:key tests? #:allow-other-keys)
4303 (when tests?
4304 ;; The cli_spec.rb test fails non-deterministically with
4305 ;; a Errno::EISDIR error (see:
4306 ;; https://github.com/jordansissel/pleaserun/issues/155)
4307 (invoke "rspec" "--exclude-pattern"
4308 "spec/pleaserun/cli_spec.rb")))))))
4309 (native-inputs (list ruby-flores ruby-rspec))
4310 (propagated-inputs (list ruby-cabin
4311 ruby-clamp
4312 ruby-dotenv
4313 ruby-insist
4314 ruby-mustache
4315 ruby-stud))
4316 (synopsis "Init scripts and service definitions generation tool")
4317 (description "Pleaserun is a tool to generate startup scripts and service
4318definitions. It targets service managers such as systemd, Upstart, launchd,
4319sysv init, and runit.")
4320 (home-page "https://github.com/jordansissel/pleaserun")
4321 (license license:asl2.0)))
4322
4323(define-public ruby-power-assert
4324 (package
4325 (name "ruby-power-assert")
4326 (version "1.1.5")
4327 (source (origin
4328 (method url-fetch)
4329 (uri (rubygems-uri "power_assert" version))
4330 (sha256
4331 (base32
4332 "1dii0wkfa0jm8sk9b20zl1z4980dmrjh0zqnii058485pp3ws10s"))))
4333 (build-system ruby-build-system)
4334 (arguments
4335 '(#:tests? #f)) ; No included tests
4336 (native-inputs
4337 (list bundler))
4338 (synopsis "Assert library with descriptive assertion messages")
4339 (description "Power-assert is an assertion library providing descriptive
4340assertion messages for tests.")
4341 (home-page "https://github.com/k-tsj/power_assert")
4342 (license (list license:bsd-2 license:ruby))))
4343
4344(define-public ruby-powerpack
4345 (package
4346 (name "ruby-powerpack")
4347 (version "0.1.3")
4348 (source
4349 (origin
4350 (method url-fetch)
4351 (uri (rubygems-uri "powerpack" version))
4352 (sha256
4353 (base32
4354 "1f71axvlhnxja0k17qqxdi4qh5ck807hqg4i3j6cgy8fgzmyg7rg"))))
4355 (build-system ruby-build-system)
4356 (arguments
4357 (list #:test-target "spec"))
4358 (native-inputs
4359 (list bundler ruby-rspec ruby-yard))
4360 (synopsis "Useful extensions to core Ruby classes")
4361 (description
4362 "This package provides a few useful extensions to core Ruby classes,
4363including @code{Array}, @code{Enumerable}, @code{Hash}, @code{Numeric}, and
4364@code{String}.")
4365 (home-page "https://github.com/bbatsov/powerpack")
4366 (license license:expat)))
4367
4368(define-public ruby-locale
4369 (package
4370 (name "ruby-locale")
4371 (version "2.1.2")
4372 (source (origin
4373 (method url-fetch)
4374 (uri (rubygems-uri "locale" version))
4375 (sha256
4376 (base32
4377 "1sls9bq4krx0fmnzmlbn64dw23c4d6pz46ynjzrn9k8zyassdd0x"))))
4378 (build-system ruby-build-system)
4379 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
4380 ;; which needs ruby-gettext, which needs ruby-locale. To break the
4381 ;; dependency cycle we disable tests.
4382 (arguments `(#:tests? #f))
4383 (native-inputs
4384 (list bundler ruby-yard/minimal))
4385 (synopsis "Ruby library providing basic localization APIs")
4386 (description
4387 "Ruby-Locale is the pure ruby library which provides basic APIs for
4388localization.")
4389 (home-page "https://github.com/ruby-gettext/locale")
4390 (license (list license:lgpl3+ license:ruby))))
4391
4392(define-public ruby-temple
4393 (package
4394 (name "ruby-temple")
4395 (version "0.10.0")
4396 (source (origin
4397 (method git-fetch) ;for tests
4398 (uri (git-reference
4399 (url "https://github.com/judofyr/temple")
4400 (commit (string-append "v" version))))
4401 (file-name (git-file-name name version))
4402 (sha256
4403 (base32
4404 "0rr9fnlcgj9nm3b6hzzjsvcw8x3y7z48j7slk7xxff2mh8s7y3y0"))))
4405 (build-system ruby-build-system)
4406 (arguments
4407 (list #:phases
4408 #~(modify-phases %standard-phases
4409 (add-after 'replace-git-ls-files 'replace-more-git-ls-files
4410 (lambda _
4411 (substitute* "temple.gemspec"
4412 ;; There no longer are test, spec or features
4413 ;; directories.
4414 ((".*`git ls-files -- \\{test,spec,features}/\\*`.*")
4415 "")
4416 ;; There isn't any bin directory either.
4417 ((".*`git ls-files -- bin/\\*`.*")
4418 ""))))
4419 (replace 'check
4420 (lambda* (#:key tests? #:allow-other-keys)
4421 (when tests?
4422 (invoke "rspec")))))))
4423 (native-inputs (list ruby-bacon ruby-erubi ruby-rspec ruby-tilt))
4424 (synopsis "Template compilation framework in Ruby")
4425 (description "Temple is an abstraction and framework for compiling
4426templates to pure Ruby.")
4427 (home-page "https://github.com/judofyr/temple")
4428 (license license:expat)))
4429
4430(define-public ruby-text
4431 (package
4432 (name "ruby-text")
4433 (version "1.3.1")
4434 (source (origin
4435 (method url-fetch)
4436 (uri (rubygems-uri "text" version))
4437 (sha256
4438 (base32
4439 "1x6kkmsr49y3rnrin91rv8mpc3dhrf3ql08kbccw8yffq61brfrg"))))
4440 (build-system ruby-build-system)
4441 (synopsis "Collection of text algorithms for Ruby")
4442 (description
4443 "This package provides a collection of text algorithms: Levenshtein,
4444Soundex, Metaphone, Double Metaphone, Porter Stemming.")
4445 (home-page "https://github.com/threedaymonk/text")
4446 (license license:expat)))
4447
4448(define-public ruby-gdbm
4449 (package
4450 (name "ruby-gdbm")
4451 (version "2.1.0")
4452 (source
4453 (origin
4454 (method url-fetch)
4455 (uri (rubygems-uri "gdbm" version))
4456 (sha256
4457 (base32 "0xxygf50b2fvy8lcn2vip27vq32p607d3lwd1diplvkajijq8q8b"))))
4458 (build-system ruby-build-system)
4459 (arguments '(#:tests? #f)) ; No bundled tests.
4460 (inputs (list gdbm))
4461 (synopsis "Ruby extension for GNU dbm")
4462 (description "This package provides a Ruby extension for GNU dbm.")
4463 (home-page "https://github.com/ruby/gdbm")
4464 (license license:bsd-2)))
4465
4466(define-public ruby-gettext
4467 (package
4468 (name "ruby-gettext")
4469 (version "3.4.4")
4470 (source (origin
4471 (method url-fetch)
4472 (uri (rubygems-uri "gettext" version))
4473 (sha256
4474 (base32
4475 "11hlxkk2yr9wjwd3nf8kgmsjcd8wf35yqlxi9wpvrgmvrk9n9a2k"))))
4476 (build-system ruby-build-system)
4477 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
4478 ;; which needs ruby-gettext. To break the dependency cycle we disable
4479 ;; tests.
4480 (arguments `(#:tests? #f))
4481 (propagated-inputs
4482 (list ruby-locale ruby-text ruby-erubi))
4483 (native-inputs
4484 (list bundler ruby-yard/minimal))
4485 (synopsis "GNU gettext-like program for Ruby")
4486 (description
4487 "Gettext is a GNU gettext-like program for Ruby. The catalog
4488file (po-file) used is the same as that used by GNU gettext, allowing you to
4489use GNU gettext tools for maintenance.")
4490 (home-page "https://ruby-gettext.github.com/")
4491 (license (list license:lgpl3+ license:ruby))))
4492
4493(define-public ruby-packnga
4494 (package
4495 (name "ruby-packnga")
4496 (version "1.0.4")
4497 (source (origin
4498 (method url-fetch)
4499 (uri (rubygems-uri "packnga" version))
4500 (sha256
4501 (base32
4502 "1vv2j0i43s4xid2km5hgrrxqlqpwgq8nlm8kaxfg2531c1vwfsd4"))))
4503 (build-system ruby-build-system)
4504 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga.
4505 ;; To break the dependency cycle we disable tests.
4506 (arguments `(#:tests? #f))
4507 (propagated-inputs
4508 (list ruby-gettext ruby-yard))
4509 (native-inputs
4510 (list bundler))
4511 (synopsis "Utility library to package internationalized libraries")
4512 (description
4513 "Packnga is a library to translate to many languages using YARD.")
4514 (home-page "https://ranguba.org/packnga/")
4515 (license license:lgpl2.0+)))
4516
4517(define-public ruby-test-construct
4518 (package
4519 (name "ruby-test-construct")
4520 (version "2.0.2")
4521 (source
4522 (origin
4523 (method url-fetch)
4524 (uri (rubygems-uri "test_construct" version))
4525 (sha256
4526 (base32
4527 "17q7rw92l7r4zh6rkvzrn4dyl8p8p77217vaa1wf7nsv8k5541vy"))))
4528 (build-system ruby-build-system)
4529 (native-inputs
4530 (list bundler ruby-mocha-1 ruby-rspec))
4531 (synopsis "Creates temporary files and directories for testing")
4532 (description
4533 "TestConstruct is a @acronym{DSL, Domain Specific Language} for creating
4534temporary files and directories during tests.")
4535 (home-page "https://github.com/bhb/test_construct")
4536 (license license:expat)))
4537
4538(define-public ruby-test-unit
4539 (package
4540 (name "ruby-test-unit")
4541 (version "3.6.0")
4542 (source (origin
4543 (method git-fetch) ;for tests
4544 (uri (git-reference
4545 (url "https://github.com/test-unit/test-unit")
4546 (commit version)))
4547 (file-name (git-file-name name version))
4548 (sha256
4549 (base32
4550 "0w1m432q3y5v9lkak8yyxadak3z17bsp6afni97i4zjdgfz7niz2"))))
4551 (build-system ruby-build-system)
4552 (propagated-inputs
4553 (list ruby-power-assert))
4554 (native-inputs
4555 (list bundler ruby-packnga ruby-yard))
4556 (synopsis "Unit testing framework for Ruby")
4557 (description "@code{Test::Unit} is unit testing framework for Ruby, based
4558on xUnit principles. These were originally designed by Kent Beck, creator of
4559extreme programming software development methodology, for Smalltalk's SUnit.
4560It allows writing tests, checking results and automated testing in Ruby.")
4561 (home-page "https://test-unit.github.io/")
4562 (license (list license:psfl license:ruby))))
4563
4564(define-public ruby-test-unit/minimal
4565 (hidden-package
4566 (package
4567 (inherit ruby-test-unit)
4568 (arguments
4569 (ensure-keyword-arguments
4570 (package-arguments ruby-test-unit)
4571 (list #:tests? #f)))
4572 (native-inputs '()))))
4573
4574(define-public ruby-test-unit-ruby-core
4575 (package
4576 (name "ruby-test-unit-ruby-core")
4577 (version "1.0.5")
4578 (source
4579 (origin
4580 (method url-fetch)
4581 (uri (rubygems-uri "test-unit-ruby-core" version))
4582 (sha256
4583 (base32 "1i7fa4hlj6xiqvjaikagwrmiyc21jzyswvd4grjbfqysziwsxygc"))))
4584 (build-system ruby-build-system)
4585 (arguments
4586 (list #:tests? #f)) ; contains no tests
4587 (synopsis "Additional test assertions for Ruby standard libraries")
4588 (description "This package provides additional test assertions for Ruby
4589standard libraries.")
4590 (home-page "https://github.com/ruby/test-unit-ruby-core")
4591 (license license:ruby)))
4592
4593(define-public ruby-mapping
4594 (package
4595 (name "ruby-mapping")
4596 (version "1.1.1")
4597 (source (origin
4598 (method git-fetch) ;for tests
4599 (uri (git-reference
4600 (url "https://github.com/ioquatix/mapping")
4601 (commit (string-append "v" version))))
4602 (file-name (git-file-name name version))
4603 (sha256
4604 (base32
4605 "0yhmqp8mprjqf9m7wzc4hhi50qbfax86r89w852csns0ijaffjjs"))))
4606 (build-system ruby-build-system)
4607 (arguments
4608 (list
4609 #:test-target "spec"
4610 #:phases
4611 #~(modify-phases %standard-phases
4612 (add-after 'unpack 'patch
4613 (lambda _
4614 (substitute* "spec/mapping/model_spec.rb"
4615 ;; From https://github.com/ioquatix/mapping/pull/2
4616 (("offset:") "offset =")))))))
4617 (native-inputs (list ruby-rspec))
4618 (synopsis "Map model objects based on their class to a given output model")
4619 (description "The @code{mapping} gem maps model objects based on their
4620class to a given output model. It is useful for versioning external
4621interfaces (e.g. JSON APIs) or processing structured data from one format to
4622another.")
4623 (home-page "https://github.com/ioquatix/mapping")
4624 (license license:expat)))
4625
4626(define-public ruby-markaby
4627 (package
4628 (name "ruby-markaby")
4629 (version "0.9.0")
4630 (source
4631 (origin
4632 (method url-fetch)
4633 (uri (rubygems-uri "markaby" version))
4634 (sha256
4635 (base32
4636 "1j4jc31ycydbkh5h3q6zwidzpavg3g5mbb5lqyaczd3jrq78rd7i"))))
4637 (build-system ruby-build-system)
4638 (arguments
4639 (list
4640 #:phases
4641 #~(modify-phases %standard-phases
4642 ;; Run rspec manually without using the Rakefile, as the versions of
4643 ;; Rake and RSpec 2 are incompatible:
4644 ;;
4645 ;; NoMethodError: undefined method `last_comment'
4646 (replace 'check
4647 (lambda* (#:key tests? #:allow-other-keys)
4648 ;; Skip some broken tests, this should be redundant with the
4649 ;; next release
4650 (delete-file "spec/markaby/markaby_test_unit_spec.rb")
4651 (substitute* "spec/markaby/markaby_spec.rb"
4652 (("generated.should == str")
4653 "# Test broken: generated.should == str"))
4654
4655 (when tests?
4656 (invoke "rspec")))))))
4657 (propagated-inputs
4658 (list ruby-builder))
4659 (native-inputs
4660 (list bundler ruby-rspec-2))
4661 (synopsis "Write HTML pages in pure Ruby")
4662 (description
4663 "Markaby allows writing HTML packages in pure Ruby. This is similar to
4664the functionality provided by @acronym{ERB, Embedded Ruby}, but without the
4665mixture of HTML and additional ERB syntax.")
4666 (home-page "https://markaby.github.io/")
4667 (license license:expat)))
4668
4669(define-public ruby-maruku
4670 (package
4671 (name "ruby-maruku")
4672 (version "0.7.3")
4673 (source
4674 (origin
4675 (method url-fetch)
4676 (uri (rubygems-uri "maruku" version))
4677 (sha256
4678 (base32
4679 "1r7bxpgnx2hp3g12bjrmdrpv663dfqxsdp0af69kjhxmaxpia56x"))))
4680 (build-system ruby-build-system)
4681 (arguments
4682 '(;; TODO: 3 tests seem to fail due to HTML encoding issues
4683 #:tests? #f
4684 #:phases
4685 (modify-phases %standard-phases
4686 (replace 'check
4687 (lambda* (#:key tests? #:allow-other-keys)
4688 (when tests?
4689 (invoke "rspec")))))))
4690 (native-inputs
4691 (list ruby-rspec ruby-simplecov ruby-nokogiri-diff))
4692 (synopsis "Markdown interpreter in Ruby")
4693 (description
4694 "Maruku is a Markdown interpreter in Ruby. It can export Markdown to
4695HTML, and PDF through LaTeX.")
4696 (home-page "https://github.com/bhollis/maruku")
4697 (license license:expat)))
4698
4699(define-public ruby-metaclass
4700 (package
4701 (name "ruby-metaclass")
4702 (version "0.0.4")
4703 (source (origin
4704 (method url-fetch)
4705 (uri (rubygems-uri "metaclass" version))
4706 (sha256
4707 (base32
4708 "0hp99y2b1nh0nr8pc398n3f8lakgci6pkrg4bf2b2211j1f6hsc5"))))
4709 (build-system ruby-build-system)
4710 (arguments
4711 `(#:phases
4712 (modify-phases %standard-phases
4713 (add-after 'unpack 'add-test-unit-to-search-path
4714 (lambda* (#:key inputs #:allow-other-keys)
4715 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
4716 (substitute* "Rakefile"
4717 (("t\\.libs << \"test\"" line)
4718 (string-append line "; t.libs << \""
4719 test-unit "/lib/ruby/vendor_ruby"
4720 "/gems/test-unit-"
4721 ,(package-version ruby-test-unit)
4722 "/lib\"")))))))))
4723 (native-inputs
4724 (list bundler ruby-test-unit/minimal))
4725 (synopsis "Ruby library adding metaclass method to all objects")
4726 (description
4727 "Metaclass is a Ruby library adding a @code{metaclass} method to all Ruby
4728objects.")
4729 (home-page "https://github.com/floehopper/metaclass")
4730 (license license:expat)))
4731
4732(define-public ruby-mkmf-lite
4733 (package
4734 (name "ruby-mkmf-lite")
4735 (version "0.5.2")
4736 (source (origin
4737 (method url-fetch)
4738 (uri (rubygems-uri "mkmf-lite" version))
4739 (sha256
4740 (base32
4741 "0rqa5kzswhqkj7r9mqrqz4mjd2vdxsblgybb52gj3mwr1gwvl4c5"))))
4742 (build-system ruby-build-system)
4743 (arguments
4744 (list
4745 #:phases
4746 #~(modify-phases %standard-phases
4747 ;; Avoid rubocop dependency
4748 (replace 'check
4749 (lambda* (#:key tests? #:allow-other-keys)
4750 (when tests?
4751 (invoke "rspec")))))))
4752 (propagated-inputs
4753 (list ruby-ptools))
4754 (native-inputs
4755 (list ruby-rspec))
4756 (synopsis "Lightweight alternative to @code{mkmf}")
4757 (description
4758 "@code{mkmf-lite} is a light version of Ruby's @code{mkmf.rb} designed
4759for use as a library. It does not create packages, builds, or log files of
4760any kind. Instead, it provides mixin methods that you can use in FFI or tests
4761to check for the presence of header files, constants, and so on.")
4762 (home-page "https://github.com/djberg96/mkmf-lite")
4763 (license license:asl2.0)))
4764
4765(define-public ruby-msgpack
4766 (package
4767 (name "ruby-msgpack")
4768 (version "1.7.5")
4769 (source (origin
4770 (method git-fetch) ;for tests
4771 (uri (git-reference
4772 (url "https://github.com/msgpack/msgpack-ruby")
4773 (commit (string-append "v" version))))
4774 (file-name (git-file-name name version))
4775 (sha256
4776 (base32
4777 "0d759pjgxgrxw18kmk81yv9brc141b4d8gszlp4vdnpvwvb96nln"))))
4778 (build-system ruby-build-system)
4779 (arguments (list #:test-target "spec"))
4780 (native-inputs
4781 (list ruby-rake-compiler
4782 ruby-ruby-memcheck
4783 ruby-rspec
4784 ruby-yard))
4785 (synopsis "Efficient object serialization library for Ruby")
4786 (description "MessagePack is a binary-based efficient object serialization
4787library. It enables to exchange structured objects between many languages
4788like JSON. Unlike JSON, it is very fast and small.")
4789 (home-page "https://msgpack.org/")
4790 (license license:asl2.0)))
4791
4792(define-public ruby-mspec
4793 (package
4794 (name "ruby-mspec")
4795 (version "1.9.1")
4796 (source
4797 (origin
4798 (method url-fetch)
4799 (uri (rubygems-uri "mspec" version))
4800 (sha256
4801 (base32
4802 "0wmyh2n40m4srwdx9z6h6g6p46k02pzyhcsja3hqcw5h5b0hfmhd"))))
4803 (build-system ruby-build-system)
4804 (arguments
4805 '(;; TODO: 3 test failures
4806 ;; ./spec/mocks/mock_spec.rb:82
4807 ;; ./spec/utils/name_map_spec.rb:151
4808 ;; ./spec/utils/name_map_spec.rb:155
4809 #:tests? #f
4810 #:phases
4811 (modify-phases %standard-phases
4812 (add-after 'extract-gemspec 'change-dependency-constraints
4813 (lambda _
4814 (substitute* "mspec.gemspec"
4815 (("rake.*") "rake>)\n")
4816 (("rspec.*") "rspec>)\n"))))
4817 (replace 'check
4818 (lambda* (#:key tests? #:allow-other-keys)
4819 (when tests?
4820 (invoke "rspec" "spec")))))))
4821 (native-inputs
4822 (list bundler ruby-rake ruby-rspec))
4823 (synopsis "MSpec is a specialized framework for RubySpec")
4824 (description
4825 "MSpec is a specialized framework that is syntax-compatible with RSpec 2
4826for basic features. MSpec contains additional features that assist in writing
4827specs for Ruby implementations in ruby/spec.")
4828 (home-page "http://rubyspec.org")
4829 (license license:expat)))
4830
4831(define-public ruby-mysql2
4832 (package
4833 (name "ruby-mysql2")
4834 (version "0.5.2")
4835 (source
4836 (origin
4837 (method git-fetch)
4838 (uri (git-reference
4839 (url "https://github.com/brianmario/mysql2")
4840 (commit version)))
4841 (file-name (git-file-name name version))
4842 (sha256
4843 (base32
4844 "11lvfgc2rmvkm52jp0nbi6pvhk06klznghr7llldfw8basl9n5wv"))))
4845 (build-system ruby-build-system)
4846 (arguments
4847 '(;; TODO: Tests require a running MySQL/MariaDB service
4848 #:tests? #f
4849 #:phases
4850 (modify-phases %standard-phases
4851 (replace 'replace-git-ls-files
4852 (lambda _
4853 (substitute* "mysql2.gemspec"
4854 (("git ls-files .*`") "find . -type f |sort`"))))
4855 (add-before 'install 'set-MAKEFLAGS
4856 (lambda* (#:key outputs #:allow-other-keys)
4857 (setenv "MAKEFLAGS"
4858 (string-append
4859 "V=1 "
4860 "prefix=" (assoc-ref outputs "out")))))
4861 ;; Move the 'check phase to after 'install, as then you can test
4862 ;; using the installed mysql2 gem in the store.
4863 (delete 'check)
4864 (add-after 'install 'check
4865 (lambda* (#:key outputs tests? #:allow-other-keys)
4866 (setenv "GEM_PATH"
4867 (string-append
4868 (getenv "GEM_PATH")
4869 ":"
4870 (assoc-ref outputs "out") "/lib/ruby/vendor_ruby"))
4871 (when tests?
4872 (invoke "rspec")))))))
4873 (inputs
4874 `(("mariadb-dev" ,mariadb "dev")
4875 ("zlib" ,zlib)))
4876 (native-inputs
4877 (list ruby-rspec ruby-rake-compiler))
4878 (synopsis "MySQL library for Ruby, binding to libmysql")
4879 (description
4880 "This package provides a simple, fast MySQL library for Ruby, binding to
4881libmysql.")
4882 (home-page "https://github.com/brianmario/mysql2")
4883 (license license:expat)))
4884
4885(define-public ruby-blankslate
4886 (package
4887 (name "ruby-blankslate")
4888 (version "3.1.3")
4889 (source (origin
4890 (method url-fetch)
4891 (uri (rubygems-uri "blankslate" version))
4892 (sha256
4893 (base32
4894 "0fwkb4d1j9gc7vdwn2nxvwgy2g5wlag4c4bp7bl85jvq0kgp6cyx"))))
4895 (build-system ruby-build-system)
4896 (arguments
4897 `(#:phases
4898 (modify-phases %standard-phases
4899 (replace 'check
4900 (lambda _ (invoke "rspec" "spec/"))))))
4901 (native-inputs
4902 (list bundler ruby-rspec))
4903 (synopsis "Abstract base class with no predefined methods")
4904 (description
4905 "BlankSlate provides an abstract base class with no predefined
4906methods (except for @code{__send__} and @code{__id__}). BlankSlate is useful
4907as a base class when writing classes that depend upon
4908@code{method_missing} (e.g. dynamic proxies).")
4909 (home-page "https://github.com/masover/blankslate")
4910 (license license:expat)))
4911
4912(define-public ruby-bond
4913 (package
4914 (name "ruby-bond")
4915 (version "0.5.1")
4916 (source
4917 (origin
4918 (method url-fetch)
4919 (uri (rubygems-uri "bond" version))
4920 (sha256
4921 (base32
4922 "1r19ifc4skyl2gxnifrxa5jvbbay9fb2in79ppgv02b6n4bhsw90"))))
4923 (build-system ruby-build-system)
4924 (arguments
4925 ;; The test suite fails (see:
4926 ;; https://github.com/cldwalker/bond/issues/46).
4927 `(#:tests? #f))
4928 (native-inputs
4929 (list ruby-bacon ruby-bacon-bits ruby-mocha-on-bacon))
4930 (synopsis "Bond can provide custom autocompletion for arguments, methods
4931and more")
4932 (description
4933 "Bond can autocomplete argument(s) to methods, uniquely completing per
4934module, per method and per argument. Bond provides a configuration system and
4935a DSL for creating custom completions and completion rules. Bond can also
4936load completions that ship with gems. Bond is able to offer more than irb's
4937completion since it uses the full line of input when completing as opposed to
4938irb's last-word approach.")
4939 (home-page "http://tagaholic.me/bond/")
4940 (license license:expat)))
4941
4942(define-public ruby-idn-ruby
4943 (package
4944 (name "ruby-idn-ruby")
4945 (version "0.1.0")
4946 (source
4947 (origin
4948 (method url-fetch)
4949 (uri (rubygems-uri "idn-ruby" version))
4950 (sha256
4951 (base32
4952 "07vblcyk3g72sbq12xz7xj28snpxnh3sbcnxy8bglqbfqqhvmawr"))))
4953 (build-system ruby-build-system)
4954 (arguments
4955 '(#:phases
4956 (modify-phases %standard-phases
4957 (delete 'check)
4958 (add-after 'install 'check
4959 (lambda* (#:key tests? outputs #:allow-other-keys)
4960 (when tests?
4961 (let* ((gem-file (cadr (find-files "." "\\.gem")))
4962 (name-and-version (basename gem-file ".gem")))
4963 (apply invoke
4964 "ruby" "--verbose"
4965 (string-append "-I"
4966 (assoc-ref outputs "out")
4967 "/lib/ruby/vendor_ruby/gems/"
4968 name-and-version
4969 "/lib")
4970 (find-files "./test" ".*\\.rb")))))))))
4971 (inputs
4972 (list libidn))
4973 (synopsis "Ruby Bindings for the GNU LibIDN library")
4974 (description
4975 "Ruby Bindings for the GNU LibIDN library, an implementation of the
4976Stringprep, Punycode and IDNA specifications. These are used to encode and
4977decode internationalized domain + names according to the IDNA2003
4978specifications.
4979
4980Included are the most important parts of the Stringprep, Punycode and IDNA
4981APIs like performing Stringprep processings, encoding to and decoding from
4982Punycode strings and converting entire domain names to and from the ACE
4983encoded form.")
4984 (home-page "https://github.com/deepfryed/idn-ruby")
4985 (license license:asl2.0)))
4986
4987(define-public ruby-insist
4988 (package
4989 (name "ruby-insist")
4990 (version "1.0.0")
4991 (source (origin
4992 (method url-fetch)
4993 (uri (rubygems-uri "insist" version))
4994 (sha256
4995 (base32
4996 "0bw3bdwns14mapbgb8cbjmr0amvwz8y72gyclq04xp43wpp5jrvg"))))
4997 (build-system ruby-build-system)
4998 (arguments (list #:phases #~(modify-phases %standard-phases
4999 (replace 'check
5000 (lambda* (#:key tests? #:allow-other-keys)
5001 (when tests?
5002 (invoke "ruby" "test/testing.rb")))))))
5003 (synopsis "Testing tool for Ruby")
5004 (description "This package provides a simple block-driven assertion
5005library for both testing and for production code that attempts to make test
5006definitions more readable.")
5007 (home-page "https://github.com/jordansissel/ruby-insist/")
5008 (license license:asl2.0)))
5009
5010(define-public ruby-introspection
5011 (package
5012 (name "ruby-introspection")
5013 (version "0.0.4")
5014 (source (origin
5015 (method url-fetch)
5016 (uri (rubygems-uri "introspection" version))
5017 (sha256
5018 (base32
5019 "1y2nbijkc0zlfmn9ss6588ilarq2kbn2i7w7pwwsli66dj84zgca"))))
5020 (build-system ruby-build-system)
5021 (propagated-inputs
5022 (list ruby-metaclass))
5023 (native-inputs
5024 (list bundler
5025 ruby-blankslate))
5026 (synopsis "Dynamic inspection of the method hierarchy on a Ruby object")
5027 (description
5028 "Introspection provides tools to inspect the hierarchy of method
5029definitions on a Ruby object.")
5030 (home-page "https://github.com/floehopper/introspection")
5031 (license license:expat)))
5032
5033(define-public ruby-redcarpet
5034 (package
5035 (name "ruby-redcarpet")
5036 (version "3.5.0")
5037 (source (origin
5038 (method url-fetch)
5039 (uri (rubygems-uri "redcarpet" version))
5040 (sha256
5041 (base32
5042 "0skcyx1h8b5ms0rp2zm3ql6g322b8c1adnkwkqyv7z3kypb4bm7k"))))
5043 (build-system ruby-build-system)
5044 (arguments
5045 `(#:phases
5046 (modify-phases %standard-phases
5047 ;; The gem archive does not include the conformance tests.
5048 (add-after 'unpack 'disable-conformance-tests
5049 (lambda _
5050 (substitute* "Rakefile"
5051 (("task :test => %w\\[test:unit test:conformance\\]")
5052 "task :test => %w[test:unit]")))))))
5053 (native-inputs
5054 (list bundler ruby-test-unit ruby-rake-compiler))
5055 (synopsis "Extensible Markdown to (X)HTML converter")
5056 (description
5057 "Redcarpet is an extensible Ruby library for Markdown processing and
5058conversion to (X)HTML.")
5059 (home-page "https://github.com/vmg/redcarpet")
5060 (license license:expat)))
5061
5062(define-public ruby-reline
5063 (package
5064 (name "ruby-reline")
5065 (version "0.3.3")
5066 (source (origin
5067 (method git-fetch) ;for tests
5068 (uri (git-reference
5069 (url "https://github.com/ruby/reline")
5070 (commit (string-append "v" version))))
5071 (file-name (git-file-name name version))
5072 (sha256
5073 (base32
5074 "1papa4f4prjml9qk6yydi4k5a4zgbzmxmbhd8fz9kfg1i34s35cw"))))
5075 (build-system ruby-build-system)
5076 (propagated-inputs (list ruby-io-console))
5077 (synopsis "GNU Readline or Editline implementation in Ruby")
5078 (description "Reline is a pure Ruby alternative GNU Readline or Editline
5079implementation.")
5080 (home-page "https://github.com/ruby/reline")
5081 (license (list license:bsd-2 license:ruby)))) ;dual license
5082
5083(define-public ruby-rerun
5084 (package
5085 (name "ruby-rerun")
5086 (version "0.13.0")
5087 (source
5088 (origin
5089 (method url-fetch)
5090 (uri (rubygems-uri "rerun" version))
5091 (sha256
5092 (base32
5093 "1cskvxk8z8vmfail8na7hj91hs0qnvds9nydj04zi3dbddgnbmvz"))))
5094 (build-system ruby-build-system)
5095 (arguments
5096 '(#:tests? #f)) ; No included tests
5097 (propagated-inputs
5098 (list ruby-listen))
5099 (synopsis "Run a process, and restart when some monitored files change")
5100 (description
5101 "Rerun is a tool to launch programs, then monitor the file system, and
5102restart the program when any of the monitored files change. It's written in
5103Ruby, but can be used for all programs.")
5104 (home-page "https://github.com/alexch/rerun/")
5105 (license license:expat)))
5106
5107(define-public ruby-maxitest
5108 (package
5109 (name "ruby-maxitest")
5110 (version "5.1.0")
5111 (home-page "https://github.com/grosser/maxitest")
5112 (source (origin
5113 ;; Pull from git because the gem does not contain tests.
5114 (method git-fetch)
5115 (uri (git-reference
5116 (url home-page)
5117 (commit (string-append "v" version))))
5118 (file-name (git-file-name name version))
5119 (sha256
5120 (base32
5121 "0qj410krfm497ggmf71xpnabbb6814y0585by4nlzyjvg9hpgg3m"))))
5122 (build-system ruby-build-system)
5123 (arguments
5124 (list
5125 #:test-target "default"
5126 #:phases
5127 #~(modify-phases %standard-phases
5128 (replace 'replace-git-ls-files
5129 (lambda _
5130 (substitute* "maxitest.gemspec"
5131 (("`git ls-files lib/ bin/ MIT-LICENSE Readme.md`")
5132 "`find lib/ bin/ MIT-LICENSE Readme.md -type f | sort`"))))
5133 (add-before 'check 'remove-version-constraints
5134 (lambda _
5135 ;; Don't use specific versions of dependencies, instead
5136 ;; take whatever is available in Guix.
5137 (delete-file "Gemfile.lock")))
5138 (add-before 'check 'add-mtest-on-PATH
5139 (lambda _
5140 ;; Tests use 'mtest' which is not automatically added on
5141 ;; PATH.
5142 (setenv "PATH" (string-append (getcwd) "/bin:"
5143 (getenv "PATH"))))))))
5144 (native-inputs
5145 (list procps
5146 ruby-bump
5147 ruby-rspec
5148 ruby-wwtd))
5149 (propagated-inputs
5150 (list ruby-minitest))
5151 (synopsis "Minitest with extra features")
5152 (description
5153 "Maxitest is a wrapper around Minitest with extra functionality such
5154as timeouts, an @command{mtest} executable that can run tests by line
5155number, support for interrupted tests, better backtraces, and more.")
5156 (license license:expat)))
5157
5158(define-public ruby-mocha
5159 (package
5160 (name "ruby-mocha")
5161 (version "2.0.4")
5162 (source (origin
5163 (method url-fetch)
5164 (uri (rubygems-uri "mocha" version))
5165 (sha256
5166 (base32
5167 "18xn9gm9yypavy9yck71fplan19hy5697mwd1rwzz7vizh3ip7bd"))))
5168 (build-system ruby-build-system)
5169 (arguments
5170 (list
5171 #:phases
5172 #~(modify-phases %standard-phases
5173 (add-before 'check 'remove-rubocop-dependency
5174 (lambda _
5175 ;; Disable dependency on Rubocop, which is just a linter,
5176 ;; and would introduce a circular dependency.
5177 (substitute* "Gemfile"
5178 ((".*rubocop.*") "")))))))
5179 (propagated-inputs
5180 (list ruby-ruby2-keywords))
5181 (native-inputs
5182 (list ruby-psych-3
5183 ruby-introspection))
5184 (synopsis "Mocking and stubbing library for Ruby")
5185 (description
5186 "Mocha is a mocking and stubbing library with JMock/SchMock syntax, which
5187allows mocking and stubbing of methods on real (non-mock) classes.")
5188 (home-page "https://mocha.jamesmead.org/")
5189 ;; Mocha can be used with either license at the users choice.
5190 (license (list license:expat license:ruby))))
5191
5192(define-public ruby-mocha-1
5193 (package
5194 (inherit ruby-mocha)
5195 (version "1.13.0")
5196 (source (origin
5197 (method url-fetch)
5198 (uri (rubygems-uri "mocha" version))
5199 (sha256
5200 (base32
5201 "15s53ggsykk69kxqvs4416s8yxdhz6caggva55n8sjgy4ixzwp10"))))
5202 (arguments
5203 '(#:tests? #f))))
5204
5205(define-public ruby-mocha-on-bacon
5206 (package
5207 (name "ruby-mocha-on-bacon")
5208 (version "0.2.3")
5209 (source
5210 (origin
5211 (method url-fetch)
5212 (uri (rubygems-uri "mocha-on-bacon" version))
5213 (sha256
5214 (base32
5215 "1h49b33rq889hn8x3wp9byczl91va16jh1w4d2wyy4yj23icdrcp"))))
5216 (build-system ruby-build-system)
5217 (arguments
5218 ;; rubygems.org release missing tests
5219 '(#:tests? #f))
5220 (propagated-inputs (list ruby-mocha))
5221 (synopsis "Mocha adapter for Bacon")
5222 (description
5223 "This package provides a Mocha adapter for Bacon, allowing you to use the
5224Mocha stubbing and mocking library with Bacon, a small RSpec clone.")
5225 (home-page
5226 "https://github.com/alloy/mocha-on-bacon")
5227 (license license:expat)))
5228
5229(define-public ruby-net-ssh
5230 (package
5231 (name "ruby-net-ssh")
5232 (version "7.1.0")
5233 (source (origin
5234 (method git-fetch) ;for tests
5235 (uri (git-reference
5236 (url "https://github.com/net-ssh/net-ssh")
5237 (commit (string-append "v" version))))
5238 (file-name (git-file-name name version))
5239 (sha256
5240 (base32
5241 "1dkbyzpl31jygnnva5sa754vk42q1fih4qz5ipqw5gqiafrrlb91"))))
5242 (build-system ruby-build-system)
5243 (native-inputs
5244 (list bundler
5245 ruby-bcrypt-pbkdf
5246 ruby-ed25519
5247 ruby-mocha
5248 ruby-rbnacl
5249 ruby-test-unit
5250 ruby-x25519))
5251 (synopsis "Ruby implementation of the SSH2 client protocol")
5252 (description "@code{Net::SSH} is a pure-Ruby implementation of the SSH2
5253client protocol. It allows you to write programs that invoke and interact
5254with processes on remote servers, via SSH2.")
5255 (home-page "https://github.com/net-ssh/net-ssh")
5256 (license license:expat)))
5257
5258(define-public ruby-net-scp
5259 (package
5260 (name "ruby-net-scp")
5261 (version "4.0.1.rc3")
5262 (source
5263 (origin
5264 (method git-fetch)
5265 (uri (git-reference
5266 (url "https://github.com/net-ssh/net-scp")
5267 (commit (string-append "v" version))))
5268 (file-name (git-file-name name version))
5269 (sha256
5270 (base32 "136mb8idxdkxkadx827027nyxcsvvv2wivz5dnjqy8g6ic0h9dzn"))))
5271 (build-system ruby-build-system)
5272 (native-inputs
5273 (list bundler ruby-test-unit ruby-mocha-1))
5274 (propagated-inputs
5275 (list ruby-net-ssh))
5276 (synopsis "Pure-Ruby SCP client library")
5277 (description "@code{Net::SCP} is a pure-Ruby implementation of the SCP
5278client protocol.")
5279 (home-page "https://github.com/net-ssh/net-scp")
5280 (license license:expat)))
5281
5282(define-public ruby-net-sftp
5283 (package
5284 (name "ruby-net-sftp")
5285 (version "4.0.0")
5286 (source (origin
5287 (method url-fetch)
5288 (uri (rubygems-uri "net-sftp" version))
5289 (sha256
5290 (base32
5291 "0r33aa2d61hv1psm0l0mm6ik3ycsnq8symv7h84kpyf2b7493fv5"))))
5292 (build-system ruby-build-system)
5293 (propagated-inputs (list ruby-net-ssh))
5294 (synopsis "Pure Ruby implementation of the SFTP client protocol")
5295 (description
5296 "@code{Net::SFTP} is a pure Ruby implementation of the SFTP
5297protocol (specifically, versions 1 through 6 of the SFTP protocol). Note that
5298this is the “Secure File Transfer Protocol”, typically run over an SSH
5299connection, and has nothing to do with the FTP protocol.")
5300 (home-page "https://github.com/net-ssh/net-sftp")
5301 (license license:expat)))
5302
5303(define-public ruby-minima
5304 (package
5305 (name "ruby-minima")
5306 (version "2.5.1")
5307 (source (origin
5308 (method url-fetch)
5309 (uri (rubygems-uri "minima" version))
5310 (sha256
5311 (base32
5312 "1gk7jmriiswda1ykjzpsw9cpiya4m9n0yrh0h6xnrc8zcfy543jj"))))
5313 (arguments
5314 (list #:phases #~(modify-phases %standard-phases
5315 (replace 'check
5316 (lambda* (#:key tests? #:allow-other-keys)
5317 (when tests?
5318 (invoke "jekyll" "build"))
5319 ;; Without the following, an attempt to remove
5320 ;; minima-<version>.gem is made during installation,
5321 ;; which will fail.
5322 (delete-file #$(string-append "_site/minima-"
5323 version ".gem")))))))
5324 (build-system ruby-build-system)
5325 (propagated-inputs (list jekyll ruby-jekyll-feed ruby-jekyll-seo-tag))
5326 (synopsis "Beautiful, minimal theme for Jekyll")
5327 (description
5328 "Minima is a one-size-fits-all Jekyll theme for writers. It's Jekyll's
5329default (and first) theme. It's what you get when you run @code{jekyll new}.")
5330 (home-page "https://github.com/jekyll/minima")
5331 (license license:expat)))
5332
5333(define-public ruby-minitest-around
5334 (package
5335 (name "ruby-minitest-around")
5336 (version "0.5.0")
5337 (source
5338 (origin
5339 (method url-fetch)
5340 (uri (rubygems-uri "minitest-around" version))
5341 (sha256
5342 (base32
5343 "15ywnqx0719jl9c25yqfshmwcir57i5f4hr1ra9v9vay9ylcwndr"))))
5344 (build-system ruby-build-system)
5345 (arguments
5346 '(#:phases
5347 (modify-phases %standard-phases
5348 (add-after 'extract-gemspec 'remove-unnecessary-dependency-versions
5349 (lambda _
5350 (substitute* "minitest-around.gemspec"
5351 (("%q<cucumber>.*") "%q<cucumber>, [\">= 0\"])\n")))))))
5352 (propagated-inputs
5353 (list ruby-minitest))
5354 (native-inputs
5355 (list bundler ruby-cucumber ruby-bump ruby-test-construct))
5356 (synopsis "Run code around tests in Minitest")
5357 (description
5358 "This library provides a way to run code around tests in Minitest,
5359written using either the unit test or spec style.")
5360 (home-page "https://github.com/splattael/minitest-around")
5361 (license license:expat)))
5362
5363(define-public ruby-minitest-retry
5364 (package
5365 (name "ruby-minitest-retry")
5366 (version "0.2.2")
5367 (source (origin
5368 (method url-fetch)
5369 (uri (rubygems-uri "minitest-retry" version))
5370 (sha256
5371 (base32
5372 "1c1zq0b1a9y0hbqphq4ybijnjldlis1g6kyhx92q2ynnqfmzhfga"))))
5373 (build-system ruby-build-system)
5374 (propagated-inputs (list ruby-minitest))
5375 (synopsis "Minitest extension to re-run failing tests")
5376 (description "This package provides the @code{Minitest::Retry} class,
5377which extends Minitest to allow retrying tests when they fail.")
5378 (home-page "https://github.com/y-yagi/minitest-retry")
5379 (license license:expat)))
5380
5381(define-public ruby-minitest-sprint
5382 (package
5383 (name "ruby-minitest-sprint")
5384 (version "1.1.0")
5385 (source (origin
5386 (method url-fetch)
5387 (uri (rubygems-uri "minitest-sprint" version))
5388 (sha256
5389 (base32
5390 "179d6pj56l9xzm46fqsqj10mzjkr1f9fv4cxa8wvchs97hqz33w1"))))
5391 (build-system ruby-build-system)
5392 (native-inputs
5393 (list ruby-hoe ruby-minitest))
5394 (synopsis "Fast test suite runner for minitest")
5395 (description "Minitest-sprint is a test runner for minitest that makes it
5396easier to re-run individual failing tests.")
5397 (home-page "https://github.com/seattlerb/minitest-sprint")
5398 (license license:expat)))
5399
5400(define-public ruby-minitest-stub-const
5401 (package
5402 (name "ruby-minitest-stub-const")
5403 (version "0.6") ;for Rakefile
5404 (source (origin
5405 (method git-fetch)
5406 (uri (git-reference
5407 (url "https://github.com/adammck/minitest-stub-const")
5408 (commit (string-append "v" version))))
5409 (file-name (git-file-name name version))
5410 (sha256
5411 (base32
5412 "0cz4r9fxplx94c7wakx0998n2gv7l21prn8pfpw6z2c33k3g2xar"))))
5413 (build-system ruby-build-system)
5414 (synopsis "Stub constants for the duration of a block in MiniTest")
5415 (description "This package provides a MiniTest extension to stub constants
5416for the duration of a block in MiniTest.")
5417 (home-page "https://github.com/adammck/minitest-stub-const")
5418 (license license:expat)))
5419
5420(define-public ruby-minitest-bacon
5421 (package
5422 (name "ruby-minitest-bacon")
5423 (version "1.0.3")
5424 (source (origin
5425 (method url-fetch)
5426 (uri (rubygems-uri "minitest-bacon" version))
5427 (sha256
5428 (base32
5429 "0zhdwcl6bgha61qiyfvr7zs7ywaxc33wmj9xhxl8jdmpdvifvfaj"))))
5430 (build-system ruby-build-system)
5431 (native-inputs
5432 (list ruby-hoe))
5433 (inputs
5434 (list ruby-minitest))
5435 (synopsis "Bacon compatibility library for minitest")
5436 (description "Minitest-bacon extends minitest with bacon-like
5437functionality, making it easier to migrate test suites from bacon to minitest.")
5438 (home-page "https://github.com/seattlerb/minitest-bacon")
5439 (license license:expat)))
5440
5441(define-public ruby-minitest-power-assert
5442 (package
5443 (name "ruby-minitest-power-assert")
5444 (version "0.3.1")
5445 (source (origin
5446 (method url-fetch)
5447 (uri (rubygems-uri "minitest-power_assert" version))
5448 (sha256
5449 (base32
5450 "1dazl6nbxjvvmi5jamrsygkz396s29b7cd841ni6qy4izk8jd9b7"))))
5451 (build-system ruby-build-system)
5452 (propagated-inputs (list ruby-minitest ruby-power-assert))
5453 (synopsis "Power Assert implementation for Minitest")
5454 (description "This gem provides a Power Assert implementation for
5455Minitest. It is inspired by the @code{test-unit-power_assert} gem.")
5456 (home-page "https://github.com/hsbt/minitest-power_assert")
5457 (license license:bsd-2)))
5458
5459(define-public ruby-minitest-profile
5460 (package
5461 (name "ruby-minitest-profile")
5462 (version "0.0.2")
5463 (source (origin
5464 (method url-fetch)
5465 (uri (rubygems-uri "minitest-profile" version))
5466 (sha256
5467 (base32
5468 "13h4nwbq6yv7hsaa7dpj90lry4rc5qqnpzvm9n2s57mm2xi31xfa"))))
5469 (build-system ruby-build-system)
5470 (synopsis "Display the slowest tests in a MiniTest suite")
5471 (description "This package provides a MiniTest plugin for displaying the
5472slowest tests in a minitest suite.")
5473 (home-page "https://github.com/nmeans/minitest-profile")
5474 (license license:expat)))
5475
5476(define-public ruby-minitest-proveit
5477 (package
5478 (name "ruby-minitest-proveit")
5479 (version "1.0.0")
5480 (source (origin
5481 (method url-fetch)
5482 (uri (rubygems-uri "minitest-proveit" version))
5483 (sha256
5484 (base32
5485 "0k1hpr8lgkgygfivgcsnnib7xjlf9ribgpn7yidvb4q0l0q2yfmr"))))
5486 (build-system ruby-build-system)
5487 (native-inputs (list ruby-hoe))
5488 (propagated-inputs (list ruby-minitest))
5489 (synopsis "Assertion-based tests extension for MiniTest")
5490 (description "The @code{minitest-proveit} MiniTest extension ensures all
5491tests to prove success (via at least one assertion) rather than rely on the
5492absence of failure.")
5493 (home-page "https://github.com/seattlerb/minitest-proveit")
5494 (license license:expat)))
5495
5496(define-public ruby-minitest-reporters
5497 (package
5498 (name "ruby-minitest-reporters")
5499 (version "1.3.6")
5500 (source
5501 (origin
5502 (method url-fetch)
5503 (uri (rubygems-uri "minitest-reporters" version))
5504 (sha256
5505 (base32
5506 "1a3das80rwgys5rj48i5ly144nvszyqyi748bk9bss74jblcf5ay"))))
5507 (build-system ruby-build-system)
5508 (arguments
5509 '(#:phases
5510 (modify-phases %standard-phases
5511 ;; Remove the requirement on Rubocop, as it isn't useful to run, and
5512 ;; including it as an input can lead to circular dependencies.
5513 (add-after 'unpack 'remove-rubocop-from-Rakefile
5514 (lambda _
5515 (substitute* "Rakefile"
5516 (("require 'rubocop/rake\\_task'") "")
5517 (("RuboCop::RakeTask\\.new\\(:rubocop\\)") "[].each"))))
5518 (add-after 'extract-gemspec 'remove-rubocop-from-gemspec
5519 (lambda _
5520 (substitute* "minitest-reporters.gemspec"
5521 ((".*%q<rubocop>.*") "\n")))))))
5522 (propagated-inputs
5523 (list ruby-ansi ruby-builder ruby-minitest ruby-progressbar))
5524 (native-inputs
5525 (list bundler ruby-maruku))
5526 (synopsis "Enhanced reporting for Minitest tests")
5527 (description
5528 "@code{minitest/reporters} provides a custom Minitest runner to improve
5529how the test state is reported. A number of different reporters are
5530available, including a spec reporter, progress bar reporter, a HTML
5531reporter.")
5532 (home-page "https://github.com/kern/minitest-reporters")
5533 (license license:expat)))
5534
5535(define-public ruby-minitest-rg
5536 (package
5537 (name "ruby-minitest-rg")
5538 (version "5.2.0")
5539 (source
5540 (origin
5541 (method url-fetch)
5542 (uri (rubygems-uri "minitest-rg" version))
5543 (sha256
5544 (base32
5545 "0sq509ax1x62rd0w10b0hcydcxyk5bxxr3fwrgxv02r8drq2r354"))))
5546 (build-system ruby-build-system)
5547 (arguments
5548 ;; Some tests fail even outside Guix, so disable tests.
5549 ;; https://github.com/blowmage/minitest-rg/issues/12
5550 ;; https://github.com/blowmage/minitest-rg/pull/13
5551 `(#:tests? #f))
5552 (propagated-inputs
5553 (list ruby-minitest))
5554 (synopsis "Coloured output for Minitest")
5555 (description
5556 "@code{minitest-rg} changes the colour of the output from Minitest.")
5557 (home-page "https://blowmage.com/minitest-rg/")
5558 (license license:expat)))
5559
5560(define-public ruby-minitest-global-expectations
5561 (package
5562 (name "ruby-minitest-global-expectations")
5563 (version "1.0.1")
5564 (source
5565 (origin
5566 (method url-fetch)
5567 (uri (rubygems-uri "minitest-global_expectations"
5568 version))
5569 (sha256
5570 (base32
5571 "1pp3k2608spj4kvqy2y16hs18an917g6vwgvphrfhjviac83090x"))))
5572 (build-system ruby-build-system)
5573 (propagated-inputs
5574 (list ruby-minitest))
5575 (synopsis "Adjust minitest behaviour for calling expectation methods")
5576 (description
5577 "Minitest-global_expectations allows continued use of expectation methods
5578on all objects. Calling expectation methods on all objects was deprecated in
5579minitest 5.12, and is planned to be removed from minitest 6.")
5580 (home-page "https://github.com/jeremyevans/minitest-global_expectations")
5581 (license license:expat)))
5582
5583(define-public ruby-daemons
5584 (package
5585 (name "ruby-daemons")
5586 (version "1.2.5")
5587 (source (origin
5588 (method url-fetch)
5589 (uri (rubygems-uri "daemons" version))
5590 (sha256
5591 (base32
5592 "15smbsg0gxb7nf0nrlnplc68y0cdy13dm6fviavpmw7c630sring"))))
5593 (build-system ruby-build-system)
5594 (arguments
5595 `(#:tests? #f)) ; no test suite
5596 (synopsis "Daemonize Ruby programs")
5597 (description "Daemons provides a way to wrap existing Ruby scripts to be
5598run as a daemon and to be controlled by simple start/stop/restart commands.")
5599 (home-page "https://github.com/thuehlinger/daemons")
5600 (license license:expat)))
5601
5602(define-public ruby-dalli
5603 (package
5604 (name "ruby-dalli")
5605 (version "3.2.4")
5606 (source (origin
5607 (method git-fetch) ;for tests
5608 (uri (git-reference
5609 (url "https://github.com/petergoldstein/dalli")
5610 (commit (string-append "v" version))))
5611 (file-name (git-file-name name version))
5612 (sha256
5613 (base32
5614 "1hhqqv1j3zd2y0vr6maaabsflrvkf1x0i6z8n725mhqydp3f9gwp"))))
5615 (build-system ruby-build-system)
5616 ;; Disable tests to avoid a dependency cycle with ruby-activesupport,
5617 ;; through ruby-ruby-prof.
5618 (arguments (list #:tests? #f))
5619 (synopsis "High performance memcached client for Ruby")
5620 (description "Dalli is a high performance pure Ruby client for accessing
5621memcached servers. Dalli supports:
5622
5623@itemize
5624@item Simple and complex memcached configurations
5625@item Fail-over between memcached instances
5626@item Fine-grained control of data serialization and compression
5627@item Thread-safe operation
5628@item SSL/TLS connections to memcached
5629@item SASL authentication.
5630@end itemize
5631
5632The name is a variant of Salvador Dali for his famous painting The Persistence
5633of Memory.")
5634 (home-page "https://github.com/petergoldstein/dalli")
5635 (license license:expat)))
5636
5637(define-public ruby-data_uri
5638 (package
5639 (name "ruby-data_uri")
5640 (version "0.1.0")
5641 (source
5642 (origin
5643 (method url-fetch)
5644 (uri (rubygems-uri "data_uri" version))
5645 (sha256
5646 (base32
5647 "0fzkxgdxrlbfl4537y3n9mjxbm28kir639gcw3x47ffchwsgdcky"))))
5648 (build-system ruby-build-system)
5649 (synopsis "URI class for parsing data URIs")
5650 (description
5651 "Data @acronym{URI, universal resource identifier}s allow resources to be
5652embedded inside a URI. The URI::Data class provides support for parsing these
5653URIs using the normal URI.parse method.")
5654 (home-page "https://github.com/dball/data_uri")
5655 (license license:expat)))
5656
5657(define-public ruby-debug
5658 (package
5659 (name "ruby-debug")
5660 (version "1.7.2")
5661 (source (origin
5662 (method url-fetch)
5663 (uri (rubygems-uri "debug" version))
5664 (sha256
5665 (base32
5666 "0x59508j69w9p275gabysv521n210pd3n060gqfgsiqjms1h0ldf"))))
5667 (build-system ruby-build-system)
5668 (arguments (list #:test-target "test_all"))
5669 (propagated-inputs (list ruby-irb ruby-reline))
5670 (synopsis "Debugging functionality for Ruby")
5671 (description "Debugging functionality for Ruby. This is completely
5672rewritten debug.rb which was contained by the ancient Ruby versions. It is
5673included with Ruby itself, but this package is made available so that the
5674latest version can be made available independently from Ruby.")
5675 (home-page "https://github.com/ruby/debug")
5676 (license license:bsd-2)))
5677
5678(define-public ruby-deep-merge
5679 (package
5680 (name "ruby-deep-merge")
5681 (version "1.2.1")
5682 (home-page "https://github.com/danielsdeleo/deep_merge")
5683 ;; The Rubygem source does not contain the gemspec required for tests.
5684 (source (origin
5685 (method git-fetch)
5686 (uri (git-reference (url home-page) (commit version)))
5687 (file-name (git-file-name name version))
5688 (sha256
5689 (base32
5690 "0c9rk23ilhc0n4489y6lda2wzphpzh6ish6fahlbpjhxn82wb931"))))
5691 (build-system ruby-build-system)
5692 (native-inputs
5693 (list ruby-minitest))
5694 (synopsis "Recursively merge hashes")
5695 (description
5696 "Deep Merge is a set of utility functions for @code{Hash}. It permits
5697you to merge elements inside a hash together recursively.")
5698 (license license:expat)))
5699
5700(define-public ruby-delayed-job
5701 (package
5702 (name "ruby-delayed-job")
5703 (version "4.1.11")
5704 (source (origin
5705 (method url-fetch)
5706 (uri (rubygems-uri "delayed_job" version))
5707 (sha256
5708 (base32
5709 "0s2xg72ljg4cwmr05zi67vcyz8zib46gvvf7rmrdhsyq387m2qcq"))))
5710 (build-system ruby-build-system)
5711 (arguments
5712 (list #:phases
5713 #~(modify-phases %standard-phases
5714 (add-after 'unpack 'disable-bundler
5715 (lambda _
5716 (substitute* "Rakefile"
5717 (("require 'bundler/setup'") "")
5718 (("Bundler::GemHelper\\.install_tasks") ""))))
5719 (add-after 'unpack 'disable-rubocop
5720 (lambda _
5721 (substitute* "Rakefile"
5722 (("require 'rubocop/rake_task'") "")
5723 (("RuboCop::RakeTask.new") ""))))
5724 (add-after 'extract-gemspec 'remove-dependency-on-actionmailer
5725 (lambda _
5726 (substitute* "spec/helper.rb"
5727 (("require 'action_mailer'") ""))
5728 (substitute* "delayed_job.gemspec"
5729 (("\"spec/performable_mailer_spec.rb\".freeze, ") ""))
5730 (delete-file "spec/performable_mailer_spec.rb"))))))
5731 (native-inputs
5732 (list ruby-activerecord
5733 ruby-rspec
5734 ruby-simplecov
5735 ruby-simplecov-lcov
5736 ruby-zeitwerk
5737 ruby-mini-portile-2))
5738 (propagated-inputs
5739 (list ruby-activesupport))
5740 (synopsis "Asynchronous background tasks execution library")
5741 (description "Delayed_job (or DJ) encapsulates the common pattern of
5742asynchronously executing longer tasks in the background. It is a direct
5743extraction from Shopify where the job table is responsible for a multitude of
5744core tasks.")
5745 (home-page "https://github.com/collectiveidea/delayed_job")
5746 (license license:expat)))
5747
5748(define-public ruby-git
5749 (package
5750 (name "ruby-git")
5751 (version "1.3.0")
5752 (source (origin
5753 (method url-fetch)
5754 (uri (rubygems-uri "git" version))
5755 (sha256
5756 (base32
5757 "1waikaggw7a1d24nw0sh8fd419gbf7awh000qhsf411valycj6q3"))))
5758 (build-system ruby-build-system)
5759 (arguments
5760 `(#:tests? #f ; no tests
5761 #:phases (modify-phases %standard-phases
5762 (add-after 'install 'patch-git-binary
5763 (lambda* (#:key inputs outputs #:allow-other-keys)
5764 ;; Make the default git binary an absolute path to the
5765 ;; store.
5766 (let ((git (search-input-file inputs "/bin/git"))
5767 (config (string-append
5768 (assoc-ref outputs "out")
5769 "/lib/ruby/vendor_ruby/gems/git-"
5770 ,version "/lib/git/config.rb")))
5771 (substitute* (list config)
5772 (("'git'")
5773 (string-append "'" git "'")))))))))
5774 (inputs
5775 (list git))
5776 (synopsis "Ruby wrappers for Git")
5777 (description "Ruby/Git is a Ruby library that can be used to create, read
5778and manipulate Git repositories by wrapping system calls to the git binary.")
5779 (home-page "https://github.com/schacon/ruby-git")
5780 (license license:expat)))
5781
5782(define-public ruby-hocon
5783 (package
5784 (name "ruby-hocon")
5785 (version "1.4.0")
5786 (home-page "https://github.com/puppetlabs/ruby-hocon")
5787 (source (origin
5788 (method git-fetch)
5789 (uri (git-reference (url home-page) (commit version)))
5790 (file-name (git-file-name name version))
5791 (sha256
5792 (base32
5793 "04wgv0pwrghawnl6qp346z59fvp9v37jymq8p0lsrzxa6nvrykmk"))))
5794 (build-system ruby-build-system)
5795 (arguments
5796 (list
5797 #:phases
5798 #~(modify-phases %standard-phases
5799 (replace 'check
5800 (lambda* (#:key tests? #:allow-other-keys)
5801 (if tests?
5802 (invoke "rspec")
5803 (format #t "test suite not run~%")))))))
5804 (native-inputs
5805 (list bundler ruby-rspec))
5806 (synopsis "HOCON config library")
5807 (description
5808 "This package provides Ruby support for the @acronym{HOCON,
5809Human-Optimized Config Object Notation} configuration file format. It
5810supports parsing and modifying HOCON and JSON files, and rendering parsed
5811objects back to a @code{String}.")
5812 (license license:asl2.0)))
5813
5814(define-public ruby-slop
5815 (package
5816 (name "ruby-slop")
5817 (version "4.10.1")
5818 (source (origin
5819 (method url-fetch)
5820 (uri (rubygems-uri "slop" version))
5821 (sha256
5822 (base32
5823 "1iyrjskgxyn8i1679qwkzns85p909aq77cgx2m4fs5ygzysj4hw4"))))
5824 (build-system ruby-build-system)
5825 (synopsis "Ruby command line option parser")
5826 (description "Slop provides a Ruby domain specific language for gathering
5827options and parsing command line flags.")
5828 (home-page "https://github.com/leejarvis/slop")
5829 (license license:expat)))
5830
5831(define-public ruby-slop-3
5832 (package (inherit ruby-slop)
5833 (version "3.6.0")
5834 (source (origin
5835 (method url-fetch)
5836 (uri (rubygems-uri "slop" version))
5837 (sha256
5838 (base32
5839 "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n"))))))
5840
5841(define-public ruby-multi-xml
5842 (package
5843 (name "ruby-multi-xml")
5844 (version "0.6.0")
5845 (source
5846 (origin
5847 (method url-fetch)
5848 (uri (rubygems-uri "multi_xml" version))
5849 (sha256
5850 (base32
5851 "0lmd4f401mvravi1i1yq7b2qjjli0yq7dfc4p1nj5nwajp7r6hyj"))))
5852 (build-system ruby-build-system)
5853 (arguments
5854 '(#:tests? #f)) ; No included tests
5855 (synopsis "Swappable XML backends for Ruby")
5856 (description
5857 "@code{MultiXml} provides swappable XML backends utilizing either LibXML,
5858Nokogiri, Ox, or REXML.")
5859 (home-page "https://github.com/sferik/multi_xml")
5860 (license license:expat)))
5861
5862(define-public ruby-multipart-parser
5863 (package
5864 (name "ruby-multipart-parser")
5865 (version "0.1.1")
5866 (source (origin
5867 (method url-fetch)
5868 (uri (rubygems-uri "multipart-parser" version))
5869 (sha256
5870 (base32
5871 "0xb4p475yrfm883h9kn80a021myn17dvs50wpa1djzcmlq7p0882"))))
5872 (build-system ruby-build-system)
5873 (arguments
5874 (list
5875 #:phases #~(modify-phases %standard-phases
5876 (add-after 'unpack 'skip-failing-test
5877 ;; One test fails for unknown reasons (see:
5878 ;; https://github.com/danabr/multipart-parser/issues/7).
5879 (lambda _
5880 (substitute* "test/multipart_parser/reader_test.rb"
5881 (("def test_long" all)
5882 (string-append all "\n return true"))))))))
5883 (synopsis "Parser for multipart MIME messages")
5884 (description "@code{multipart-parser} is a simple parser for multipart
5885MIME messages, written in Ruby, based on felixge/node-formidable's parser. It
5886has the following characteristics:
5887@itemize
5888@item Pure Ruby
5889@item Event-driven API
5890@item Only supports one level of multipart parsing
5891@item Does not perform I/O
5892@item Does not depend on any other library.
5893@end itemize")
5894 (home-page "https://github.com/danabr/multipart-parser")
5895 (license license:expat)))
5896
5897(define-public ruby-multipart-post
5898 (package
5899 (name "ruby-multipart-post")
5900 (version "2.0.0")
5901 (source (origin
5902 (method url-fetch)
5903 (uri (rubygems-uri "multipart-post" version))
5904 (sha256
5905 (base32
5906 "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x"))))
5907 (build-system ruby-build-system)
5908 (native-inputs
5909 (list bundler))
5910 (synopsis "Multipart POST library for Ruby")
5911 (description "Multipart-Post Adds multipart POST capability to Ruby's
5912net/http library.")
5913 (home-page "https://github.com/nicksieger/multipart-post")
5914 (license license:expat)))
5915
5916(define-public ruby-multi-json
5917 (package
5918 (name "ruby-multi-json")
5919 (version "1.15.0")
5920 (source
5921 (origin
5922 (method git-fetch)
5923 ;; Tests are not distributed at rubygems.org so download from GitHub
5924 ;; instead.
5925 (uri (git-reference
5926 (url "https://github.com/intridea/multi_json")
5927 (commit (string-append "v" version))))
5928 (file-name (git-file-name name version))
5929 (sha256
5930 (base32
5931 "0mkdvy6i00yyksjvnv6znh7wf89j9506qzzjq6bsbmbkyqrszp4d"))))
5932 (build-system ruby-build-system)
5933 (arguments
5934 (list
5935 ;; TODO Tests don't currently work with Ruby 3
5936 #:tests? #f
5937 #:phases
5938 #~(modify-phases %standard-phases
5939 (add-before 'check 'pre-check
5940 (lambda _
5941 ;; As seen in the .travis.yml file.
5942 (setenv "SKIP_ADAPTERS" "gson,jr_jackson,nsjsonserialization"))))))
5943 (native-inputs
5944 (list ruby-rspec ruby-json-pure ruby-oj ruby-yajl-ruby))
5945 (synopsis "Common interface to multiple JSON libraries for Ruby")
5946 (description
5947 "This package provides a common interface to multiple JSON libraries,
5948including Oj, Yajl, the JSON gem (with C-extensions), the pure-Ruby JSON gem,
5949NSJSONSerialization, gson.rb, JrJackson, and OkJson.")
5950 (home-page "https://github.com/intridea/multi_json")
5951 (license license:expat)))
5952
5953(define-public ruby-arr-pm
5954 (package
5955 (name "ruby-arr-pm")
5956 (version "0.0.12")
5957 (source (origin
5958 (method url-fetch)
5959 (uri (rubygems-uri "arr-pm" version))
5960 (sha256
5961 (base32
5962 "0fddw0vwdrr7v3a0lfqbmnd664j48a9psrjd3wh3k4i3flplizzx"))))
5963 (build-system ruby-build-system)
5964 (arguments
5965 (list #:phases
5966 #~(modify-phases %standard-phases
5967 (replace 'check
5968 (lambda* (#:key tests? #:allow-other-keys)
5969 (when tests?
5970 (invoke "rspec")))))))
5971 (native-inputs (list ruby-flores ruby-insist ruby-rspec ruby-stud))
5972 (synopsis "RPM reader/writer library written in Ruby")
5973 (description "This library allows reading and writing RPM packages. It is
5974used by the @command{fpm} tool. It is written in pure Ruby because
5975@code{librpm} is not available on all systems and requires many
5976dependencies.")
5977 (home-page "https://github.com/jordansissel/ruby-arr-pm")
5978 (license license:asl2.0)))
5979
5980(define-public ruby-arel
5981 (package
5982 (name "ruby-arel")
5983 (version "9.0.0")
5984 (source (origin
5985 (method url-fetch)
5986 (uri (rubygems-uri "arel" version))
5987 (sha256
5988 (base32
5989 "1jk7wlmkr61f6g36w9s2sn46nmdg6wn2jfssrhbhirv5x9n95nk0"))))
5990 (build-system ruby-build-system)
5991 (arguments '(#:tests? #f)) ; no tests
5992 (home-page "https://github.com/rails/arel")
5993 (synopsis "SQL AST manager for Ruby")
5994 (description "Arel is an SQL @dfn{Abstract Syntax Tree} (AST) manager for
5995Ruby. It simplifies the generation of complex SQL queries and adapts to
5996various relational database implementations.")
5997 (license license:expat)))
5998
5999(define-public ruby-minitar
6000 ;; We package from the GitHub source to fix the security issue reported at
6001 ;; https://github.com/halostatue/minitar/issues/16.
6002 (let ((commit "e25205ecbb6277ae8a3df1e6a306d7ed4458b6e4"))
6003 (package
6004 (name "ruby-minitar")
6005 (version (string-append "0.5.4-1." (string-take commit 8)))
6006 (source
6007 (origin
6008 (method git-fetch)
6009 (uri (git-reference
6010 (url "https://github.com/halostatue/minitar")
6011 (commit commit)))
6012 (file-name (string-append name "-" version "-checkout"))
6013 (sha256
6014 (base32
6015 "1iywfx07jgjqcmixzkxk9zdwfmij1fyg1z2jlwzj15cj7s99qlfv"))))
6016 (build-system ruby-build-system)
6017 (arguments
6018 '(#:tests? #f)) ; missing a gemspec
6019 (synopsis "Ruby library and utility for handling tar archives")
6020 (description
6021 "Archive::Tar::Minitar is a pure-Ruby library and command-line utility
6022that provides the ability to deal with POSIX tar archive files.")
6023 (home-page "http://www.github.com/atoulme/minitar")
6024 (license (list license:gpl2+ license:ruby)))))
6025
6026(define-public ruby-nokogiri
6027 (package
6028 (name "ruby-nokogiri")
6029 (version "1.15.2")
6030 (source (origin
6031 (method git-fetch)
6032 (uri (git-reference
6033 (url "https://github.com/sparklemotion/nokogiri")
6034 (commit "a6ad20b3edc8f020043ccfe5d9ec6ae9af103720")))
6035 (file-name (git-file-name name version))
6036 (sha256
6037 (base32
6038 "1n0vlg6v58jw3qzgyihz1dh5fvp4js1qgdh75j0kn47nvyiw3jxj"))
6039 (patches (search-patches "ruby-nokogiri.patch"))))
6040 (build-system ruby-build-system)
6041 (arguments
6042 (list #:gem-flags #~(list "--" "--use-system-libraries"
6043 (string-append "--with-xml2-include="
6044 #$(this-package-input "libxml2")
6045 "/include/libxml2"))
6046 #:phases #~(modify-phases %standard-phases
6047 (add-after 'install 'delete-mkmf.log
6048 (lambda _
6049 ;; Rubygems installs build log files that embed volatile file
6050 ;; names (see:
6051 ;; https://github.com/rubygems/rubygems/issues/6259).
6052 (for-each delete-file
6053 (find-files #$output "^mkmf\\.log$"))))
6054 (delete 'check)
6055 (add-after 'install 'check
6056 (lambda* (#:key tests? #:allow-other-keys)
6057 (setenv "GEM_PATH" (string-append
6058 (getenv "GEM_PATH") ":"
6059 #$output "/lib/ruby/vendor_ruby"))
6060 (when tests?
6061 (for-each (lambda (file)
6062 (invoke "ruby" "-Itest" file))
6063 (find-files "test" "^test_.*\\.rb"))))))))
6064 (native-inputs (list ruby-hoe ruby-rubyzip))
6065 (inputs (list zlib libxml2 libxslt))
6066 (propagated-inputs (list ruby-mini-portile-2 ruby-pkg-config))
6067 (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
6068 (description "Nokogiri (鋸) parses and searches XML/HTML, and features
6069both CSS3 selector and XPath 1.0 support.")
6070 (home-page "https://nokogiri.org/")
6071 (license license:expat)))
6072
6073(define-public ruby-method-source
6074 (package
6075 (name "ruby-method-source")
6076 (version "1.0.0")
6077 (source
6078 (origin
6079 (method url-fetch)
6080 (uri (rubygems-uri "method_source" version))
6081 (sha256
6082 (base32
6083 "1pnyh44qycnf9mzi1j6fywd5fkskv3x7nmsqrrws0rjn5dd4ayfp"))))
6084 (build-system ruby-build-system)
6085 (arguments
6086 `(#:test-target "spec"
6087 #:phases
6088 (modify-phases %standard-phases
6089 (add-after 'unpack 'remove-git-ls-files
6090 (lambda* (#:key outputs #:allow-other-keys)
6091 (substitute* "Rakefile"
6092 (("git ls-files") "find . -type f")))))))
6093 (native-inputs
6094 (list ruby-rspec))
6095 (synopsis "Retrieve the source code for Ruby methods")
6096 (description "Method_source retrieves the source code for Ruby methods.
6097Additionally, it can extract source code from Proc and Lambda objects or just
6098extract comments.")
6099 (home-page "https://github.com/banister/method_source")
6100 (license license:expat)))
6101
6102(define-public ruby-coderay
6103 (package
6104 (name "ruby-coderay")
6105 (version "1.1.2")
6106 (source
6107 (origin
6108 (method url-fetch)
6109 (uri (rubygems-uri "coderay" version))
6110 (sha256
6111 (base32
6112 "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y"))))
6113 (build-system ruby-build-system)
6114 (arguments
6115 '(#:tests? #f)) ; missing test files
6116 (synopsis "Ruby syntax highlighting library")
6117 (description "Coderay is a Ruby library that provides syntax highlighting
6118for select languages.")
6119 (home-page "http://coderay.rubychan.de")
6120 (license license:expat)))
6121
6122(define-public ruby-cuke-modeler
6123 (package
6124 (name "ruby-cuke-modeler")
6125 (version "3.20.1")
6126 (source (origin
6127 (method git-fetch)
6128 (uri (git-reference
6129 (url "https://github.com/enkessler/cuke_modeler")
6130 (commit (string-append "v" version))))
6131 (file-name (git-file-name name version))
6132 (sha256
6133 (base32
6134 "0xbnx1blxm4kfhfwfh58n2ja40p2kfw8hbbz60dlzvghz25vcwy6"))))
6135 (build-system ruby-build-system)
6136 (arguments
6137 (list #:test-target "default"
6138 #:phases
6139 #~(modify-phases %standard-phases
6140 (add-after 'unpack 'improve-reproducibility
6141 (lambda _
6142 (substitute*
6143 "testing/rspec/spec/unit/cuke_modeler_unit_spec.rb"
6144 (("#\\{Time.now.year\\}") ""))))
6145 (add-after 'unpack 'relax-requirements
6146 (lambda _
6147 (substitute* "Gemfile"
6148 ;; Cucumber appears pinned to an older version for no
6149 ;; particular reason (see:
6150 ;; https://github.com/enkessler/cuke_modeler/issues/14).
6151 (("'cucumber', '2.2.0'")
6152 "'cucumber', '>= 2.2.0'")
6153 (("^gherkin_major_version_used = .*")
6154 (string-append
6155 "gherkin_major_version_used = "
6156 #$(car
6157 (string-split
6158 (package-version
6159 (this-package-input "ruby-cucumber-gherkin")) #\.))
6160 "\n")))
6161 ;; Disable Bundler.
6162 (substitute* "bin/console"
6163 (("require 'bundler/setup'") ""))
6164 (substitute* "rakefiles/testing_tasks.rb"
6165 (("'bundle', 'exec', ") ""))
6166 ;; Remove extraneous dependencies.
6167 (substitute* "cuke_modeler.gemspec"
6168 ((".*bundler.*") "")
6169 ((".*rubocop.*") "")
6170 ((".*yard.*") ""))
6171 (substitute* "Rakefile"
6172 (("Rainbow.enabled = true") "")
6173 (("require_relative 'rakefiles/documentation_tasks'") "")
6174 (("require_relative 'rakefiles/other_tasks'") "")
6175 (("require_relative 'rakefiles/release_tasks'") "")))))))
6176 (native-inputs
6177 (list ruby-childprocess
6178 ruby-cucumber
6179 ruby-rainbow
6180 ruby-rspec
6181 ruby-simplecov
6182 ruby-simplecov-lcov))
6183 (propagated-inputs (list ruby-cucumber-gherkin))
6184 (synopsis "Gherkin test suite analysis tool")
6185 (description "CukeModeler facilitates modeling a test suite that is
6186written in Gherkin (e.g. Cucumber, SpecFlow, Lettuce, etc.). It does this by
6187providing an abstraction layer on top of the Abstract Syntax Tree (AST) that
6188the @code{cucumber-gherkin} generates when parsing features, as well as
6189providing models for feature files and directories in order to be able to have
6190a fully traversable model tree of a test suite's structure. These models can
6191then be analyzed or manipulated more easily than the underlying AST layer.")
6192 (home-page "https://github.com/enkessler/cuke_modeler")
6193 (license license:expat)))
6194
6195(define-public ruby-parallel-tests
6196 (package
6197 (name "ruby-parallel-tests")
6198 (version "4.9.0")
6199 (home-page "https://github.com/grosser/parallel_tests")
6200 (source (origin
6201 (method git-fetch)
6202 (uri (git-reference
6203 (url home-page)
6204 (commit (string-append "v" version))))
6205 (file-name (string-append name version))
6206 (sha256
6207 (base32
6208 "0ljb17i1bvlr0y1avwishcrg60h48bj6iwgkp8yrck08wcs7b338"))))
6209 (build-system ruby-build-system)
6210 (arguments
6211 '(#:test-target "spec" ;avoid rubocop dependency
6212 #:phases (modify-phases %standard-phases
6213 (add-after 'patch-source-shebangs 'patch-shell-invocations
6214 (lambda _
6215 (substitute* '("lib/parallel_tests/tasks.rb"
6216 "spec/parallel_tests/tasks_spec.rb")
6217 (("/bin/sh") (which "sh"))
6218 (("/bin/bash") (which "bash")))))
6219 (add-before 'check 'relax-requirements
6220 (lambda _
6221 ;; Remove hard coded version constraints, instead just
6222 ;; use whatever versions are available in Guix.
6223 (delete-file "Gemfile.lock")
6224 (substitute* "Gemfile"
6225 (("'minitest',.*")
6226 "'minitest'\n")
6227 (("'cucumber',.*")
6228 "'cucumber'\n")
6229 ;; Do not depend on a git-fetched spinach version.
6230 (("gem 'spinach',.*")
6231 "gem 'spinach'\n")
6232 ((".*rubocop.*") ""))))
6233 (add-before 'check 'disable-rails-test
6234 (lambda _
6235 ;; XXX: This test attempts to download and run the test
6236 ;; suites of multiple Rails versions(!) directly.
6237 (delete-file "spec/rails_spec.rb")))
6238 (add-before 'check 'disable-problematic-tests
6239 (lambda _
6240 ;; This test fails, probably because of the newer
6241 ;; Cucumber version used here.
6242 (delete-file "spec/parallel_tests/cucumber/\
6243failure_logger_spec.rb") ))
6244 (add-before 'check 'set-HOME
6245 (lambda _
6246 ;; Some tests check the output of Bundler, and fail when
6247 ;; Bundler warns that /homeless-shelter does not exist.
6248 (setenv "HOME" "/tmp"))))))
6249 (native-inputs
6250 (list ruby-bump
6251 ruby-cucumber
6252 ruby-cuke-modeler
6253 ruby-minitest
6254 ruby-rake
6255 ruby-rspec
6256 ruby-spinach))
6257 (propagated-inputs
6258 (list ruby-parallel))
6259 (synopsis "Run tests in parallel")
6260 (description
6261 "This package can speed up @code{Test::Unit}, @code{RSpec},
6262@code{Cucumber}, and @code{Spinach} tests by running them concurrently
6263across multiple CPU cores.")
6264 (license license:expat)))
6265
6266(define-public ruby-parser
6267 (package
6268 (name "ruby-parser")
6269 (version "3.3.7.0")
6270 (source
6271 (origin
6272 (method url-fetch)
6273 (uri (rubygems-uri "parser" version))
6274 (sha256
6275 (base32
6276 "16qi2qhpszm842awxghmsp64yvvawafq96w5jw98irz3f4bh2jbl"))))
6277 (build-system ruby-build-system)
6278 (arguments '(#:tests? #f)) ; tests not included in gem
6279 (native-inputs (list bundler ruby-cliver ruby-simplecov))
6280 (inputs (list ragel))
6281 (propagated-inputs (list ruby-ast ruby-racc))
6282 (synopsis "Ruby parser written in pure Ruby")
6283 (description
6284 "This package provides a Ruby parser written in pure Ruby.")
6285 (home-page "https://github.com/whitequark/parser")
6286 (license license:expat)))
6287
6288(define-public ruby-set
6289 (package
6290 (name "ruby-set")
6291 (version "1.0.3")
6292 (source (origin
6293 (method url-fetch)
6294 (uri (rubygems-uri "set" version))
6295 (sha256
6296 (base32
6297 "07kc057nrkddrybqmlbmgf9x7nsmbc3ni6gy1z6xjx5b838vlj33"))))
6298 (build-system ruby-build-system)
6299 (synopsis
6300 "Ruby class to deal with collections of unordered, unique values")
6301 (description
6302 "This package provides a class to deal with collections of unordered,
6303unique values")
6304 (home-page "https://github.com/ruby/set")
6305 (license license:bsd-2)))
6306
6307(define-public ruby-sexp-processor
6308 (package
6309 (name "ruby-sexp-processor")
6310 (version "4.17.0")
6311 (source
6312 (origin
6313 (method url-fetch)
6314 (uri (rubygems-uri "sexp_processor" version))
6315 (sha256
6316 (base32
6317 "0vzz9mhg4kkdqf179pm30i204h7iskanxrk53j0csf0qrrs4iajd"))))
6318 (build-system ruby-build-system)
6319 (native-inputs
6320 (list ruby-hoe
6321 ruby-minitest
6322 ruby-minitest-proveit))
6323 (synopsis "ParseTree fork which includes generic S-exp processing tools")
6324 (description "The sexp_processor package is derived from ParseTree, but
6325contrary to ParseTree, it includes all the generic S-exp processing tools.
6326Amongst the included tools are @code{Sexp}, @code{SexpProcessor} and
6327@code{Environment}")
6328 (home-page "https://github.com/seattlerb/sexp_processor")
6329 (license license:expat)))
6330
6331(define-public ruby-ruby-parser
6332 (package
6333 (name "ruby-ruby-parser")
6334 (version "3.20.2")
6335 (source
6336 (origin
6337 (method url-fetch)
6338 (uri (rubygems-uri "ruby_parser" version))
6339 (sha256
6340 (base32
6341 "0q851n8654wkjrq8jawq8vi5yhr1y9vpyr2vj7cnn3sa4ikg6d3z"))))
6342 (build-system ruby-build-system)
6343 (arguments
6344 (list
6345 #:phases
6346 #~(modify-phases %standard-phases
6347 (add-after 'unpack 'patch
6348 (lambda _
6349 (substitute* "Rakefile"
6350 (("`which bison`")
6351 (string-append "\"" (which "bison") "\""))
6352 (("which unifdef")
6353 (which "unifdef"))))))))
6354 (native-inputs
6355 (list ruby-hoe
6356 ruby-racc
6357 unifdef
6358 bison
6359 ruby-minitest))
6360 (propagated-inputs
6361 (list ruby-sexp-processor))
6362 (home-page "https://github.com/seattlerb/ruby_parser/")
6363 (synopsis "Ruby parser written in pure Ruby")
6364 (description "The ruby_parser (RP) package provides a Ruby parser written
6365in pure Ruby. It outputs S-expressions which can be manipulated and converted
6366back to Ruby via the @code{ruby2ruby} library.")
6367 (license license:expat)))
6368
6369(define-public ruby-ruby-version
6370 (package
6371 (name "ruby-ruby-version")
6372 (version "1.0.2")
6373 (source (origin
6374 (method url-fetch)
6375 (uri (rubygems-uri "ruby_version" version))
6376 (sha256
6377 (base32
6378 "0lvc7bd5ps3w2vq2wb02i0pi3vfcx2rnckx2ix4rjym1qf52kb2j"))))
6379 (build-system ruby-build-system)
6380 (arguments
6381 (list #:phases
6382 #~(modify-phases %standard-phases
6383 (add-after 'extract-gemspec 'delete-gem-files
6384 ;; There are some pre-built files in the source, and
6385 ;; registered in the .gemspec (see:
6386 ;; https://github.com/janlelis/ruby_version/issues/1).
6387 (lambda _
6388 (delete-file-recursively "pkg")
6389 (substitute* "ruby_version.gemspec"
6390 (("\"pkg/ruby_version-1.0.0.gem\".freeze, ")
6391 "")
6392 (("\"pkg/ruby_version-1.0.1.gem\".freeze, ")
6393 ""))))
6394 (add-after 'extract-gemspec 'relax-requirements
6395 (lambda _
6396 (delete-file "Gemfile.lock")
6397 (substitute* "ruby_version.gemspec"
6398 (("\"Gemfile.lock\".freeze, ") "")
6399 ;; Allow a newers versions of development dependencies.
6400 (("~>") ">=")))))))
6401 (native-inputs (list ruby-rdoc ruby-rubygems-tasks ruby-rspec))
6402 (synopsis "Ruby class for checking the Ruby version")
6403 (description "This package provides a @code{RubyVersion} class which
6404offers a convenient Domain Specific Language (DSL) for checking for the right
6405Ruby version.")
6406 (home-page "https://github.com/janlelis/ruby_version")
6407 (license license:expat)))
6408
6409(define-public ruby-prawn-manual-builder
6410 (package
6411 (name "ruby-prawn-manual-builder")
6412 (version "0.3.1")
6413 (source
6414 (origin
6415 (method url-fetch)
6416 (uri (rubygems-uri "prawn-manual_builder" version))
6417 (sha256
6418 (base32 "1vlg5w7wq43g2hgpgra2nrcxj1kb4ayqliz4gmja2rhs037j2vzs"))))
6419 (build-system ruby-build-system)
6420 (arguments
6421 '(#:tests? #f ; no included tests
6422 #:phases
6423 (modify-phases %standard-phases
6424 (add-after 'extract-gemspec 'patch-gemspec
6425 (lambda _
6426 (substitute* ".gemspec"
6427 ;; Loosen the requirement for pdf-inspector
6428 (("~> 1\\.0\\.7") ">= 0")))))))
6429 (propagated-inputs
6430 (list ruby-coderay))
6431 (synopsis "Tool for writing manuals for Prawn and Prawn accessories")
6432 (description
6433 "This package provides a tool for writing manuals for Prawn and Prawn
6434accessories")
6435 (home-page "https://github.com/prawnpdf/prawn-manual_builder")
6436 (license %prawn-project-licenses)))
6437
6438(define-public ruby-progress_bar
6439 (package
6440 (name "ruby-progress_bar")
6441 (version "1.1.0")
6442 (source
6443 (origin
6444 (method url-fetch)
6445 (uri (rubygems-uri "progress_bar" version))
6446 (sha256
6447 (base32
6448 "1qc40mr6p1z9a3vlpnsg1zfgk1qswviql2a31y63wpv3vr6b5f48"))))
6449 (build-system ruby-build-system)
6450 (arguments
6451 '(#:test-target "spec"))
6452 (propagated-inputs
6453 (list ruby-highline ruby-options))
6454 (native-inputs
6455 (list bundler ruby-rspec ruby-timecop))
6456 (synopsis
6457 "Ruby library for displaying progress bars")
6458 (description
6459 "ProgressBar is a simple library for displaying progress bars. The
6460maximum value is configurable, and additional information can be displayed
6461like the percentage completion, estimated time remaining, elapsed time and
6462rate.")
6463 (home-page "https://github.com/paul/progress_bar")
6464 (license license:wtfpl2)))
6465
6466(define-public ruby-progressbar
6467 (package
6468 (name "ruby-progressbar")
6469 (version "1.10.1")
6470 (source
6471 (origin
6472 (method url-fetch)
6473 (uri (rubygems-uri "ruby-progressbar" version))
6474 (sha256
6475 (base32 "1k77i0d4wsn23ggdd2msrcwfy0i376cglfqypkk2q77r2l3408zf"))))
6476 (build-system ruby-build-system)
6477 (arguments
6478 '(;; TODO: There looks to be a circular dependency with ruby-fuubar.
6479 #:tests? #f))
6480 (synopsis "Text progress bar library for Ruby")
6481 (description
6482 "Ruby/ProgressBar is an flexible text progress bar library for Ruby.
6483The output can be customized with a formatting system.")
6484 (home-page "https://github.com/jfelchner/ruby-progressbar")
6485 (license license:expat)))
6486
6487(define-public ruby-latest-ruby
6488 (package
6489 (name "ruby-latest-ruby")
6490 (version "3.1.0")
6491 (source (origin
6492 (method url-fetch)
6493 (uri (rubygems-uri "latest_ruby" version))
6494 (sha256
6495 (base32
6496 "15rqwgxzpnkzdiz8m02jra0zq5sx0fiz61vkfrj1ls6slqfhnzqg"))))
6497 (build-system ruby-build-system)
6498 (arguments
6499 '(#:tests? #f)) ; No Rakefile
6500 (synopsis "Answers the question of what the latest Ruby version is")
6501 (description "Knows about MRI, Rubinius, JRuby, MagLev and MacRuby.")
6502 (home-page "https://github.com/kyrylo/latest_ruby")
6503 (license license:zlib)))
6504
6505(define-public ruby-pry
6506 (package
6507 (name "ruby-pry")
6508 (version "0.14.2")
6509 (source
6510 (origin
6511 (method url-fetch)
6512 (uri (rubygems-uri "pry" version))
6513 (sha256
6514 (base32
6515 "0k9kqkd9nps1w1r1rb7wjr31hqzkka2bhi8b518x78dcxppm9zn4"))))
6516 (build-system ruby-build-system)
6517 (arguments
6518 '(#:tests? #f)) ; no tests
6519 (propagated-inputs
6520 (list ruby-coderay ruby-method-source))
6521 (synopsis "Ruby REPL")
6522 (description "Pry is an IRB alternative and runtime developer console for
6523Ruby. It features syntax highlighting, a plugin architecture, runtime
6524invocation, and source and documentation browsing.")
6525 (home-page "https://cobaltbluemedia.com/pryrepl/")
6526 (license license:expat)))
6527
6528(define-public ruby-pry-doc
6529 (package
6530 (name "ruby-pry-doc")
6531 (version "1.4.0")
6532 (source (origin
6533 (method url-fetch)
6534 (uri (rubygems-uri "pry-doc" version))
6535 (sha256
6536 (base32
6537 "1pp43n69p6bjvc640wgcz295w1q2v9awcqgbwcqn082dbvq5xvnx"))))
6538 (build-system ruby-build-system)
6539 (propagated-inputs (list ruby-pry ruby-yard))
6540 (native-inputs (list ruby-latest-ruby ruby-rspec ruby-rake)) ;for tests
6541 (synopsis "Provides YARD and extended documentation support for Pry")
6542 (description
6543 "Pry Doc is a Pry REPL plugin. It provides extended documentation
6544support for the REPL by means of improving the @code{show-doc} and
6545@code{show-source} commands. With help of the plugin the commands are
6546be able to display the source code and the docs of Ruby methods and
6547classes implemented in C.")
6548 (home-page "https://github.com/pry/pry-doc")
6549 (license license:expat)))
6550
6551(define-public ruby-single-cov
6552 (package
6553 (name "ruby-single-cov")
6554 (version "1.9.1")
6555 (home-page "https://github.com/grosser/single_cov")
6556 (source (origin
6557 (method git-fetch)
6558 (uri (git-reference (url home-page)
6559 (commit (string-append "v" version))))
6560 (file-name (git-file-name name version))
6561 (sha256
6562 (base32
6563 "1w4k81f2mdg620m6pwkrqayddnz9mr8qx0myqn33mw8k6imfip05"))))
6564 (build-system ruby-build-system)
6565 (arguments
6566 '(#:test-target "spec" ;to avoid rubocop requirement
6567 #:phases (modify-phases %standard-phases
6568 (replace 'replace-git-ls-files
6569 (lambda _
6570 (substitute* "single_cov.gemspec"
6571 (("`git ls-files lib/ bin/ MIT-LICENSE`")
6572 ;; There no longer appear to be a 'bin'
6573 ;; sub-directory.
6574 "`find lib/ MIT-LICENSE -type f | sort`"))))
6575 (add-before 'check 'remove-version-constraints
6576 (lambda _
6577 (delete-file "Gemfile.lock")))
6578 (add-before 'check 'relax-requirements
6579 (lambda _
6580 ;; Remove extraneous requirements.
6581 (substitute* "Rakefile"
6582 ((".*require.*bump.*") ""))
6583 (substitute* "Gemfile"
6584 ((".*gem \"bump\".*") "")
6585 ((".*gem \"rubocop\".*") ""))))
6586 (add-before 'check 'disable-failing-test
6587 (lambda _
6588 ;; XXX: This test copies assets from minitest, but can
6589 ;; not cope with the files being read-only. Just skip
6590 ;; it for now.
6591 (substitute* "specs/single_cov_spec.rb"
6592 (("it \"complains when coverage is bad\"")
6593 "xit \"complains when coverage is bad\"")))))))
6594 (native-inputs (list ruby-minitest ruby-rspec ruby-simplecov))
6595 (synopsis "Code coverage reporting tool")
6596 (description
6597 "This package provides actionable code coverage reports for Ruby
6598projects. It has very little overhead and can be easily integrated with
6599development tools to catch coverage problems early.")
6600 (license license:expat)))
6601
6602(define-public ruby-oedipus-lex
6603 (package
6604 (name "ruby-oedipus-lex")
6605 (version "2.6.1")
6606 (source
6607 (origin
6608 (method url-fetch)
6609 (uri (rubygems-uri "oedipus_lex" version))
6610 (sha256
6611 (base32
6612 "06l4d3l75vhdcmnavnkzr7bd39rb0njxhkbmwrw6ni64z2hlj7w7"))))
6613 (build-system ruby-build-system)
6614 (native-inputs
6615 (list ruby-hoe
6616 ruby-minitest))
6617 (synopsis "Ruby lexer")
6618 (description
6619 "Oedipus Lex is a lexer generator in the same family as Rexical and Rex.
6620It is based primarily on generating code much like you would a hand-written
6621lexer. It uses StrScanner within a multi-level case statement. As such,
6622Oedipus matches on the first match, not the longest.")
6623 (home-page "https://github.com/seattlerb/oedipus_lex")
6624 (license license:expat)))
6625
6626(define-public ruby-guard
6627 (package
6628 (name "ruby-guard")
6629 (version "2.13.0")
6630 (source (origin
6631 (method git-fetch)
6632 ;; The gem does not include a Rakefile, nor does it contain a
6633 ;; gemspec file, nor does it come with the tests. This is why
6634 ;; we fetch the tarball from Github.
6635 (uri (git-reference
6636 (url "https://github.com/guard/guard")
6637 (commit (string-append "v" version))))
6638 (file-name (git-file-name name version))
6639 (sha256
6640 (base32
6641 "16pxcszr0g2jnl3090didxh1d8z5m2mly14m3w4rspb8fmclsnjs"))))
6642 (build-system ruby-build-system)
6643 (arguments
6644 `(#:tests? #f ; tests require cucumber
6645 #:phases
6646 (modify-phases %standard-phases
6647 (add-after 'unpack 'remove-git-ls-files
6648 (lambda* (#:key outputs #:allow-other-keys)
6649 (substitute* "guard.gemspec"
6650 (("git ls-files -z") "find . -type f -print0"))))
6651 (replace 'build
6652 (lambda _
6653 (invoke "gem" "build" "guard.gemspec"))))))
6654 (propagated-inputs
6655 (list ruby-formatador
6656 ruby-listen
6657 ruby-lumberjack
6658 ruby-nenv
6659 ruby-notiffany
6660 ruby-pry
6661 ruby-shellany
6662 ruby-thor))
6663 (native-inputs
6664 (list bundler ruby-rspec))
6665 (synopsis "Tool to handle events on file system modifications")
6666 (description
6667 "Guard is a command line tool to easily handle events on file system
6668modifications. Guard automates various tasks by running custom rules whenever
6669file or directories are modified.")
6670 (home-page "https://guardgem.org/")
6671 (license license:expat)))
6672
6673(define-public ruby-spinach
6674 (package
6675 (name "ruby-spinach")
6676 (version "0.12.0")
6677 (home-page "https://github.com/codegram/spinach")
6678 (source (origin
6679 (method url-fetch)
6680 (uri (rubygems-uri "spinach" version))
6681 (sha256
6682 (base32
6683 "1v9nvpvlgjx698dc4q2p1l45sxm5fjjzfxayrkyzb9nv0q0xfjsp"))))
6684 (build-system ruby-build-system)
6685 (arguments
6686 ;; FIXME: Disable tests altogether because they depend on 'capybara'
6687 ;; which in turn depends on many other unpackaged gems. Enable once
6688 ;; capybara is available.
6689 '(#:tests? #f))
6690 (propagated-inputs
6691 (list ruby-colorize ruby-gherkin-ruby))
6692 (synopsis "Gherkin-based BDD framework")
6693 (description
6694 "Spinach is a high-level @acronym{BDD, Behavior-driven development}
6695framework that leverages the expressive @code{Gherkin} language to help you
6696define executable specifications of your code.")
6697 (license license:expat)))
6698
6699(define-public ruby-timers
6700 (package
6701 (name "ruby-timers")
6702 (version "4.3.5")
6703 (source (origin
6704 (method git-fetch)
6705 (uri (git-reference
6706 (url "https://github.com/socketry/timers")
6707 (commit (string-append "v" version))))
6708 (file-name (git-file-name name version))
6709 (sha256
6710 (base32
6711 "1vvahlhk6i1xks1bsha6s64pjjxhagmzvvf1q9h6z3lpcba43rpx"))))
6712 (build-system ruby-build-system)
6713 (arguments
6714 (list #:phases
6715 #~(modify-phases %standard-phases
6716 (add-before 'build 'prune-gems.rb
6717 (lambda _
6718 (substitute* "gems.rb"
6719 ;; These are only required for maintenance.
6720 ((".*gem \"bake-modernize\".*") "")
6721 ((".*gem \"bake-gem\".*") "")
6722 ;; Not actually required by the tests.
6723 ((".*gem 'benchmark-ips'.*") "")
6724 ((".*gem \"ruby-prof\".*") ""))))
6725 (add-before 'build 'remove-missing-signing-key
6726 (lambda _
6727 ;; Otherwise, the build fails with ENOENT.
6728 (substitute* "timers.gemspec"
6729 ((".*spec.signing_key.*") ""))))
6730 (replace 'check
6731 (lambda* (#:key tests? #:allow-other-keys)
6732 (when tests?
6733 (invoke "bake" "test")))))))
6734 (native-inputs
6735 (list ruby-covered
6736 ruby-bake-test
6737 ruby-bake-test-external
6738 ruby-sus))
6739 (synopsis "Collection of Ruby timer classes")
6740 (description "Timers offers a collections of one-shot and periodic timers,
6741intended for use with event loops such as async.")
6742 (home-page "https://github.com/socketry/timers")
6743 (license license:expat)))
6744
6745(define-public ruby-tilt
6746 (package
6747 (name "ruby-tilt")
6748 (version "2.2.0")
6749 (source
6750 (origin
6751 (method git-fetch) ;the distributed gem lacks tests
6752 (uri (git-reference
6753 (url "https://github.com/jeremyevans/tilt")
6754 (commit (string-append "v" version))))
6755 (file-name (git-file-name name version))
6756 (sha256
6757 (base32 "056zm4vzx9xjwl7zgmb17hzb91qx5cvzk60wvsxchfybvl03gn5d"))))
6758 (build-system ruby-build-system)
6759 (arguments
6760 (list
6761 #:phases
6762 #~(modify-phases %standard-phases
6763 (add-before 'check 'set-SASS_IMPLEMENTATION
6764 (lambda _
6765 (setenv "SASS_IMPLEMENTATION" "sassc"))))))
6766 (propagated-inputs
6767 (list ruby-pandoc-ruby ruby-sassc))
6768 (native-inputs
6769 (list bundler ruby-yard ruby-builder ruby-erubis ruby-markaby))
6770 (synopsis "Generic interface to multiple Ruby template engines")
6771 (description
6772 "Tilt is a thin interface over a number of different Ruby template
6773engines in an attempt to make their usage as generic as possible.")
6774 (home-page "https://github.com/rtomayko/tilt/")
6775 (license license:expat)))
6776
6777(define-public ruby-thread-safe
6778 (package
6779 (name "ruby-thread-safe")
6780 (version "0.3.6")
6781 (source
6782 (origin
6783 (method url-fetch)
6784 (uri (rubygems-uri "thread_safe" version))
6785 (sha256
6786 (base32
6787 "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy"))))
6788 (build-system ruby-build-system)
6789 (arguments
6790 '(#:tests? #f)) ; needs simplecov, among others
6791 (synopsis "Thread-safe utilities for Ruby")
6792 (description "The thread_safe library provides thread-safe collections and
6793utilities for Ruby.")
6794 (home-page "https://github.com/ruby-concurrency/thread_safe")
6795 (license license:asl2.0)))
6796
6797(define-public ruby-tzinfo
6798 (package
6799 (name "ruby-tzinfo")
6800 (version "2.0.6")
6801 (source
6802 (origin
6803 (method git-fetch)
6804 (uri (git-reference
6805 ;; Pull from git because the gem has no tests.
6806 (url "https://github.com/tzinfo/tzinfo")
6807 (commit (string-append "v" version))))
6808 (file-name (git-file-name name version))
6809 (sha256
6810 (base32
6811 "1n1gzjqwwnx209h8d054miva0y7x17db2ahy7jav5r25ibhh7rgm"))))
6812 (build-system ruby-build-system)
6813 (arguments
6814 (list
6815 #:phases
6816 #~(modify-phases %standard-phases
6817 (add-after 'unpack 'skip-safe-tests
6818 (lambda _
6819 (substitute* "test/test_utils.rb"
6820 (("def safe_test\\(options = \\{\\}\\)")
6821 "def safe_test(options = {})
6822 skip('The Guix build environment has an unsafe load path')"))))
6823 (add-before 'check 'pre-check
6824 (lambda _
6825 (setenv "HOME" (getcwd))
6826 (substitute* "Gemfile"
6827 (("simplecov.*") "simplecov'\n"))))
6828 (replace 'check
6829 (lambda* (#:key tests? test-target #:allow-other-keys)
6830 (when tests?
6831 (invoke "bundler" "exec" "rake" test-target)))))))
6832 (propagated-inputs
6833 (list ruby-concurrent))
6834 (native-inputs
6835 (list ruby-simplecov))
6836 (synopsis "Time zone library for Ruby")
6837 (description "TZInfo is a Ruby library that provides daylight savings
6838aware transformations between times in different time zones.")
6839 (home-page "https://tzinfo.github.io")
6840 (license license:expat)))
6841
6842(define-public ruby-tzinfo-data
6843 (package
6844 (name "ruby-tzinfo-data")
6845 (version "1.2023.3")
6846 (source
6847 (origin
6848 (method git-fetch)
6849 ;; Download from GitHub because the rubygems version does not contain
6850 ;; Rakefile or tests.
6851 (uri (git-reference
6852 (url "https://github.com/tzinfo/tzinfo-data")
6853 (commit (string-append "v" version))))
6854 (file-name (git-file-name name version))
6855 (sha256
6856 (base32
6857 "1v3fpfmw485lsc9bfqfcasb9j25g9ywfpmmk648l2vdsh7nipilf"))))
6858 (build-system ruby-build-system)
6859 (arguments
6860 (list
6861 #:phases
6862 #~(modify-phases %standard-phases
6863 (add-after 'unpack 'patch-source
6864 (lambda* (#:key inputs #:allow-other-keys)
6865 (substitute* "Rakefile"
6866 (("URI\\.parse\\(url\\)\\.open")
6867 "URI.open(url)")
6868 (("https://data.iana.org/time-zones/releases")
6869 (assoc-ref inputs "tzdata")))))
6870 (add-before 'check 'pre-check
6871 (lambda _
6872 (setenv "HOME" (getcwd))
6873 (substitute* "Rakefile"
6874 ;; Don't need gpg, and it may break after a time.
6875 (("gpg ") "echo ")
6876 ((" sh\\(\\\"make -C" text)
6877 (string-append " sh(\"sed -i 's@/bin/sh@sh@' #{tzdb_combined_path}/Makefile \")\n"
6878 " sh(\"sed -i 's@cc=@cc?=@' #{tzdb_combined_path}/Makefile \")\n" text)))
6879 (setenv "cc" #$(cc-for-target)))))))
6880 (propagated-inputs
6881 (list ruby-tzinfo))
6882 (native-inputs
6883 `(("tzdata"
6884 ,(file-union "tzdata-for-ruby-tzdata-info"
6885 `(("tzdata2023c.tar.gz"
6886 ,(origin
6887 (method url-fetch)
6888 (uri "https://data.iana.org/time-zones/releases/tzdata2023c.tar.gz")
6889 (sha256
6890 (base32
6891 "0p4nvp5bdxxdqh269nvvcfrpycbbfwm31al5whwbpsaa3dfhnl9z"))))
6892 ("tzdata2023c.tar.gz.asc"
6893 ,(origin
6894 (method url-fetch)
6895 (uri "https://data.iana.org/time-zones/releases/tzdata2023c.tar.gz.asc")
6896 (sha256
6897 (base32
6898 "0mrmhczs5qnj1zp6gh4pg6fm0iblr2jmzy0fgh9slinwxmn7pv6m"))))
6899 ("tzcode2023c.tar.gz"
6900 ,(origin
6901 (method url-fetch)
6902 (uri "https://data.iana.org/time-zones/releases/tzcode2023c.tar.gz")
6903 (sha256
6904 (base32
6905 "1rqln88ki0jagi372nqyn7bs03rf2l33081sy2835mwsn4mpzla6"))))
6906 ("tzcode2023c.tar.gz.asc"
6907 ,(origin
6908 (method url-fetch)
6909 (uri "https://data.iana.org/time-zones/releases/tzcode2023c.tar.gz.asc")
6910 (sha256
6911 (base32
6912 "0jbx8xjv75qfh7bxa2xmrf97r37057y89rhmrq1gz8s6b8qlzb2i")))))))))
6913 (synopsis "Data from the IANA Time Zone database")
6914 (description
6915 "This library provides @code{TZInfo::Data}, which contains data from the
6916IANA Time Zone database packaged as Ruby modules for use with @code{TZInfo}.")
6917 (home-page "https://tzinfo.github.io")
6918 (license license:expat)))
6919
6920(define-public ruby-rb-inotify
6921 (package
6922 (name "ruby-rb-inotify")
6923 (version "0.10.1")
6924 (source
6925 (origin
6926 (method url-fetch)
6927 (uri (rubygems-uri "rb-inotify" version))
6928 (sha256
6929 (base32
6930 "1jm76h8f8hji38z3ggf4bzi8vps6p7sagxn3ab57qc0xyga64005"))))
6931 (build-system ruby-build-system)
6932 (arguments
6933 (list
6934 #:tests? #f ; there are no tests
6935 #:phases
6936 #~(modify-phases %standard-phases
6937 ;; Building the gemspec with rake is not working here since it is
6938 ;; generated with Jeweler. It is also unnecessary because the
6939 ;; existing gemspec does not use any development tools to generate a
6940 ;; list of files.
6941 (replace 'build
6942 (lambda _
6943 (invoke "gem" "build" "rb-inotify.gemspec"))))))
6944 (propagated-inputs
6945 (list ruby-ffi))
6946 (native-inputs
6947 (list ruby-yard))
6948 (synopsis "Ruby wrapper for Linux's inotify")
6949 (description "rb-inotify is a simple wrapper over the @code{inotify} Linux
6950kernel subsystem for monitoring changes to files and directories.")
6951 (home-page "https://github.com/nex3/rb-inotify")
6952 (license license:expat)))
6953
6954(define-public ruby-pry-editline
6955 (package
6956 (name "ruby-pry-editline")
6957 (version "1.1.2")
6958 (source (origin
6959 (method url-fetch)
6960 (uri (rubygems-uri "pry-editline" version))
6961 (sha256
6962 (base32
6963 "1pjxyvdxvw41xw3yyl18pwzix8hbvn6lgics7qcfhjfsf1zs8x1z"))))
6964 (build-system ruby-build-system)
6965 (arguments `(#:tests? #f)) ; no tests included
6966 (native-inputs
6967 (list bundler))
6968 (synopsis "Open the current REPL line in an editor")
6969 (description
6970 "This gem provides a plugin for the Ruby REPL to enable opening the
6971current line in an external editor.")
6972 (home-page "https://github.com/tpope/pry-editline")
6973 (license license:expat)))
6974
6975(define-public ruby-sdoc
6976 (package
6977 (name "ruby-sdoc")
6978 (version "1.1.0")
6979 (source (origin
6980 (method url-fetch)
6981 (uri (rubygems-uri "sdoc" version))
6982 (sha256
6983 (base32
6984 "1am73dldx1fqlw2xny5vyk00pgkisg6bvs0pa8jjd7c19drjczrd"))))
6985 (build-system ruby-build-system)
6986 (arguments
6987 `(#:phases
6988 (modify-phases %standard-phases
6989 (add-before 'check 'set-rubylib-and-patch-gemfile
6990 (lambda _
6991 (setenv "RUBYLIB" "lib")
6992 (substitute* "sdoc.gemspec"
6993 (("s.add_runtime_dependency.*") "\n")
6994 (("s.add_dependency.*") "\n"))
6995 (substitute* "Gemfile"
6996 (("gem \"rake\".*")
6997 "gem 'rake'\ngem 'rdoc'\ngem 'json'\n")))))))
6998 (propagated-inputs
6999 (list ruby-json))
7000 (native-inputs
7001 (list bundler ruby-minitest ruby-hoe))
7002 (synopsis "Generate searchable RDoc documentation")
7003 (description
7004 "SDoc is an RDoc documentation generator to build searchable HTML
7005documentation for Ruby code.")
7006 (home-page "https://github.com/voloko/sdoc")
7007 (license license:expat)))
7008
7009(define-public ruby-tins
7010 (package
7011 (name "ruby-tins")
7012 (version "1.29.1")
7013 (source (origin
7014 (method url-fetch)
7015 (uri (rubygems-uri "tins" version))
7016 (sha256
7017 (base32
7018 "0nzp88y19rqlcizp1nw8m44fvfxs9g3bhjpscz44dwfawfrmr0cb"))))
7019 (build-system ruby-build-system)
7020 ;; This gem needs gem-hadar at development time, but gem-hadar needs tins
7021 ;; at runtime. To avoid the dependency on gem-hadar we disable rebuilding
7022 ;; the gemspec.
7023 (arguments
7024 `(#:tests? #f ; there are no tests
7025 #:phases
7026 (modify-phases %standard-phases
7027 (replace 'build
7028 (lambda _
7029 ;; "lib/spruz" is a symlink. Leaving it in the gemspec file
7030 ;; causes an error.
7031 (substitute* "tins.gemspec"
7032 (("\"lib/spruz\", ") ""))
7033 (invoke "gem" "build" "tins.gemspec"))))))
7034 (propagated-inputs
7035 (list ruby-sync))
7036 (synopsis "Assorted tools for Ruby")
7037 (description "Tins is a Ruby library providing assorted tools.")
7038 (home-page "https://github.com/flori/tins")
7039 (license license:expat)))
7040
7041(define-public ruby-gemtext
7042 (package
7043 (name "ruby-gemtext")
7044 (version "1.0.3")
7045 (source
7046 (origin
7047 (method url-fetch)
7048 (uri (rubygems-uri "gemtext" version))
7049 (sha256
7050 (base32 "1z559f5z0zvwnqgnny0zf4mppiary020ljxwpw3bdxi2hr9aj3gp"))))
7051 (build-system ruby-build-system)
7052 (synopsis "Gemtext parser for Ruby")
7053 (description
7054 "This package is a Ruby parser library for Gemtext (hypertext format
7055which is intended to serve as the native response format of the Gemini
7056file transfer protocol) and produces a document object of various
7057nodes.")
7058 (home-page "https://github.com/exastencil/gemtext")
7059 (license license:expat)))
7060
7061(define-public ruby-gem-hadar
7062 (package
7063 (name "ruby-gem-hadar")
7064 (version "1.11.0")
7065 (source (origin
7066 (method url-fetch)
7067 (uri (rubygems-uri "gem_hadar" version))
7068 (sha256
7069 (base32
7070 "160abb3l4n3gkhd86f22n981bhqxkbf5ym6fhsk796pix6696pd5"))))
7071 (build-system ruby-build-system)
7072 ;; This gem needs itself at development time. We disable rebuilding of the
7073 ;; gemspec to avoid this loop.
7074 (arguments
7075 `(#:tests? #f ; there are no tests
7076 #:phases
7077 (modify-phases %standard-phases
7078 (replace 'build
7079 (lambda _
7080 (invoke "gem" "build" "gem_hadar.gemspec"))))))
7081 (propagated-inputs
7082 (list git-minimal/pinned ruby-tins ruby-yard))
7083 (synopsis "Library for the development of Ruby gems")
7084 (description
7085 "This library contains some useful functionality to support the
7086development of Ruby gems.")
7087 (home-page "https://github.com/flori/gem_hadar")
7088 (license license:expat)))
7089
7090(define-public ruby-term-ansicolor
7091 (package
7092 (name "ruby-term-ansicolor")
7093 (version "1.7.1")
7094 (source (origin
7095 (method url-fetch)
7096 (uri (rubygems-uri "term-ansicolor" version))
7097 (sha256
7098 (base32
7099 "1xq5kci9215skdh27npyd3y55p812v4qb4x2hv3xsjvwqzz9ycwj"))))
7100 (build-system ruby-build-system)
7101 ;; Rebuilding the gemspec seems to require git, even though this is not a
7102 ;; git repository, so we just build the gem from the existing gemspec.
7103 (arguments
7104 (list
7105 #:phases
7106 #~(modify-phases %standard-phases
7107 (add-after 'unpack 'fix-test
7108 (lambda -
7109 (substitute* "tests/hsl_triple_test.rb"
7110 (("0\\\\\\.0%")
7111 "0\\.?0?%"))))
7112 (replace 'build
7113 (lambda _
7114 (invoke "gem" "build" "term-ansicolor.gemspec"))))))
7115 (propagated-inputs
7116 (list ruby-tins))
7117 (native-inputs
7118 (list ruby-gem-hadar))
7119 (synopsis "Ruby library to control the attributes of terminal output")
7120 (description
7121 "This Ruby library uses ANSI escape sequences to control the attributes
7122of terminal output.")
7123 (home-page "https://flori.github.io/term-ansicolor/")
7124 ;; There is no mention of the "or later" clause.
7125 (license license:gpl2)))
7126
7127(define-public ruby-immutable-struct
7128 (let ((commit "bb67ad8fa2117e8031c3f4333b4c25c8bcd3afff")
7129 (revision "0"))
7130 (package
7131 (name "ruby-immutable-struct")
7132 (version (git-version "2.4.1" revision commit))
7133 (source
7134 (origin
7135 (method git-fetch)
7136 (uri (git-reference
7137 (url "https://github.com/stitchfix/immutable-struct")
7138 (commit commit)))
7139 (file-name (git-file-name name version))
7140 (sha256
7141 (base32
7142 "0vsr2spypjf0i7ppg2a0gj3mjj5k3dyqsx224cbsxw51p6cc11c1"))))
7143 (build-system ruby-build-system)
7144 (arguments
7145 (list
7146 #:phases
7147 #~(modify-phases %standard-phases
7148 (replace 'check
7149 (lambda* (#:key tests? #:allow-other-keys)
7150 (when tests?
7151 (invoke "ruby" (which "rspec"))))))))
7152 (native-inputs
7153 (list ruby-rspec))
7154 (synopsis "Ruby library for creating immutable struct classes")
7155 (description
7156 "This package provides a library to help create value objects without
7157the pain of Ruby's Struct (or its setters).")
7158 (home-page "https://stitchfix.github.io/immutable-struct/")
7159 (license license:expat))))
7160
7161(define-public ruby-faker
7162 (package
7163 (name "ruby-faker")
7164 (version "3.2.0")
7165 (source
7166 (origin
7167 (method git-fetch)
7168 (uri (git-reference
7169 (url "https://github.com/faker-ruby/faker")
7170 (commit (string-append "v" version))))
7171 (file-name (git-file-name name version))
7172 (sha256
7173 (base32
7174 "1wwdwh5qwaxnd9dl6732mj6b953l5r32r4936pj5680963iagq59"))))
7175 (build-system ruby-build-system)
7176 (arguments
7177 (list
7178 #:phases
7179 #~(modify-phases %standard-phases
7180 (add-after 'unpack 'remove-rubocop-from-rakefile
7181 (lambda _
7182 (substitute* "Rakefile"
7183 (("require 'rubocop/rake_task'") "")
7184 (("RuboCop::RakeTask\\.new") "")))))))
7185 (native-inputs (list ruby-yard ruby-simplecov ruby-timecop))
7186 (propagated-inputs (list ruby-i18n))
7187 (synopsis "Library for generating fake data")
7188 (description "Faker is a port of Data::Faker from Perl. It is used to
7189easily generate fake data: names, addresses, phone numbers, etc.")
7190 (home-page "https://github.com/faker-ruby/faker")
7191 (license license:expat)))
7192
7193(define-public ruby-terraform
7194 (package
7195 (name "ruby-terraform")
7196 (version "1.7.0")
7197 (source
7198 (origin
7199 (method git-fetch)
7200 (uri (git-reference
7201 (url "https://github.com/infrablocks/ruby_terraform")
7202 (commit (string-append "v" version))))
7203 (file-name (git-file-name name version))
7204 (sha256
7205 (base32
7206 "18d1qkf2rbbvc2f0dxni85i2l2g8zn5kzh0v8zr1b86r1wjy6rvd"))))
7207 (build-system ruby-build-system)
7208 (arguments
7209 (list
7210 #:test-target "spec"
7211 #:phases
7212 #~(modify-phases %standard-phases
7213 (add-after 'unpack 'disable-bundler
7214 (lambda _
7215 (substitute* "spec/spec_helper.rb"
7216 (("require 'bundler/setup'") ""))))
7217 (add-before 'check 'disable-falinig-tests
7218 (lambda _
7219 (substitute* "spec/ruby_terraform/commands/plan_spec.rb"
7220 (("it 'logs an error raised when running the command'")
7221 "xit 'logs an error raised when running the command'")
7222 (("it 'raises execution error when an error occurs running the command'")
7223 "xit 'raises execution error when an error occurs running the command'"))))
7224 (replace 'check
7225 (lambda* (#:key tests? #:allow-other-keys)
7226 (when tests?
7227 (invoke "rspec")))))))
7228 (native-inputs
7229 (list ruby-rspec
7230 ruby-faker
7231 ruby-simplecov))
7232 (propagated-inputs
7233 (list ruby-lino ruby-immutable-struct))
7234 (synopsis "Ruby wrapper around the Terraform command line interface")
7235 (description
7236 "This package provides a Ruby wrapper around the Terraform command line
7237interface so that Terraform can be more easily invoked from Ruby code.")
7238 (home-page "https://github.com/infrablocks/ruby_terraform")
7239 (license license:expat)))
7240
7241(define-public ruby-pstree
7242 (package
7243 (name "ruby-pstree")
7244 (version "0.3.0")
7245 (source (origin
7246 (method url-fetch)
7247 (uri (rubygems-uri "pstree" version))
7248 (sha256
7249 (base32
7250 "0ld3ng37y92kv9vqnachw1l3n07hsc8hrnjs9d840liw0mysf1vp"))))
7251 (build-system ruby-build-system)
7252 (native-inputs
7253 (list ruby-gem-hadar bundler))
7254 (synopsis "Create a process tree data structure")
7255 (description
7256 "This library uses the output of the @code{ps} command to create a
7257process tree data structure for the current host.")
7258 (home-page "https://github.com/flori/pstree")
7259 ;; There is no mention of the "or later" clause.
7260 (license license:gpl2)))
7261
7262(define-public ruby-psych
7263 (package
7264 (name "ruby-psych")
7265 (version "5.1.0")
7266 (source (origin
7267 (method git-fetch) ;for tests
7268 (uri (git-reference
7269 (url "https://github.com/ruby/psych")
7270 (commit (string-append "v" version))))
7271 (file-name (git-file-name name version))
7272 (sha256
7273 (base32
7274 "0m3668y79jcv2h9p7w74awwdyz13rpfr24w4nzh3iz96kxwssz83"))))
7275 (build-system ruby-build-system)
7276 (inputs
7277 (list libyaml))
7278 (native-inputs
7279 (list ruby-rake-compiler))
7280 (synopsis "Ruby YAML parser and emitter")
7281 (description
7282 "Psych is a YAML parser and emitter. Psych leverages libyaml for its
7283YAML parsing and emitting capabilities. In addition to wrapping libyaml,
7284Psych also knows how to serialize and de-serialize most Ruby objects to and
7285from the YAML format.")
7286 (home-page "https://github.com/ruby/psych")
7287 (license license:expat)))
7288
7289(define-public ruby-psych-3
7290 (package
7291 (inherit ruby-psych)
7292 (version "3.3.4")
7293 (source (origin
7294 (method git-fetch) ;for tests
7295 (uri (git-reference
7296 (url "https://github.com/ruby/psych")
7297 (commit (string-append "v" version))))
7298 (file-name (git-file-name "ruby-psych" version))
7299 (sha256
7300 (base32
7301 "11f7bxbhaj5697izap7hfbiln6lfk5cks78a498mkyhs2ylhl0fc"))))
7302 (arguments
7303 (list
7304 #:phases
7305 #~(modify-phases %standard-phases
7306 (replace 'check
7307 (lambda* (#:key tests? #:allow-other-keys)
7308 (when tests?
7309 (invoke "bundle" "exec" "rake" "default")))))))))
7310
7311(define-public ruby-utils
7312 (package
7313 (name "ruby-utils")
7314 (version "0.9.0")
7315 (source (origin
7316 (method url-fetch)
7317 (uri (rubygems-uri "utils" version))
7318 (sha256
7319 (base32
7320 "196zhgcygrnx09bb9mh22qas03rl9avzx8qs0wnxznpin4pffwcl"))))
7321 (build-system ruby-build-system)
7322 (propagated-inputs
7323 (list ruby-tins ruby-term-ansicolor ruby-pstree ruby-pry-editline))
7324 (native-inputs
7325 (list ruby-gem-hadar bundler))
7326 (synopsis "Command line tools for working with Ruby")
7327 (description
7328 "This package provides assorted command line tools that may be useful
7329when working with Ruby code.")
7330 (home-page "https://github.com/flori/utils")
7331 ;; There is no mention of the "or later" clause.
7332 (license license:gpl2)))
7333
7334(define-public ruby-jaro-winkler
7335 (package
7336 (name "ruby-jaro-winkler")
7337 (version "1.5.4")
7338 (source
7339 (origin
7340 (method url-fetch)
7341 (uri (rubygems-uri "jaro_winkler" version))
7342 (sha256
7343 (base32 "1y8l6k34svmdyqxya3iahpwbpvmn3fswhwsvrz0nk1wyb8yfihsh"))))
7344 (build-system ruby-build-system)
7345 (arguments
7346 '(#:tests? #f)) ; no included tests
7347 (synopsis "Ruby implementation of Jaro-Winkler distance algorithm")
7348 (description
7349 "@code{jaro_winkler} is an implementation of Jaro-Winkler distance
7350algorithm. It is written as a C extension and will fallback to a pure Ruby
7351implementation on platforms where this is unsupported.")
7352 (home-page "https://github.com/tonytonyjan/jaro_winkler")
7353 (license license:expat)))
7354
7355(define-public ruby-json-pure
7356 (package
7357 (name "ruby-json-pure")
7358 (version "2.6.3")
7359 (source
7360 (origin
7361 ;; For tests
7362 (method git-fetch)
7363 (uri (git-reference
7364 (url "https://github.com/flori/json.git")
7365 (commit (string-append "v" version))))
7366 (file-name (git-file-name name version))
7367 (sha256
7368 (base32
7369 "0551269c98a07m6bl594syh5vknrm3c636a4dxis9jpsb7vf7lfx"))))
7370 (build-system ruby-build-system)
7371 (arguments
7372 (list
7373 #:phases
7374 #~(modify-phases %standard-phases
7375 (add-after 'unpack 'fix-rakefile
7376 (lambda _
7377 (substitute* "Rakefile"
7378 ;; Since this is not a git repository, do not call 'git'.
7379 (("`git ls-files`") "`find . -type f |sort`")))))))
7380 (native-inputs
7381 (list bundler ragel ruby-simplecov ruby-test-unit which))
7382 (synopsis "JSON implementation in pure Ruby")
7383 (description
7384 "This package provides a JSON implementation written in pure Ruby.")
7385 (home-page "https://flori.github.io/json/")
7386 (license license:ruby)))
7387
7388(define-public ruby-jwt
7389 (package
7390 (name "ruby-jwt")
7391 (version "2.7.1")
7392 (source
7393 (origin
7394 ;; For tests
7395 (method git-fetch)
7396 (uri (git-reference
7397 (url "https://github.com/jwt/ruby-jwt")
7398 (commit (string-append "v" version))))
7399 (file-name (git-file-name name version))
7400 (sha256
7401 (base32
7402 "12ss6knfis6a6a41qndalnlvq3yykhpg6igzll8qyssnnwi9zdw7"))))
7403 (build-system ruby-build-system)
7404 (arguments
7405 (list
7406 #:test-target "test"
7407 #:phases
7408 #~(modify-phases %standard-phases
7409 (add-after 'unpack 'remove-unnecessary-dependencies
7410 (lambda _
7411 (substitute* "ruby-jwt.gemspec"
7412 (("spec\\.add_development_dependency 'appraisal'") "")
7413 (("spec\\.add_development_dependency 'simplecov'") ""))
7414 (substitute* "Gemfile"
7415 (("gem 'rubocop'.*") ""))
7416 (substitute* "Rakefile"
7417 (("require 'rubocop/rake_task'") "")
7418 (("RuboCop::RakeTask\\.new\\(:rubocop\\)") ""))
7419 (substitute* "spec/spec_helper.rb"
7420 (("require 'simplecov.*") "\n")
7421 ;; Use [].each to disable running the SimpleCov configuration
7422 ;; block
7423 (("SimpleCov\\.configure") "[].each")
7424 (("require 'codeclimate-test-reporter'") "")
7425 (("require 'codacy-coverage'") "")
7426 (("Codacy::Reporter\\.start") "")))))))
7427 (native-inputs
7428 (list bundler ruby-rspec ruby-rbnacl))
7429 (synopsis "Ruby implementation of the JSON Web Token standard")
7430 (description
7431 "This package provides a pure Ruby implementation of the RFC 7519 OAuth
7432@acronym{JWT, JSON Web Token} standard.")
7433 (home-page "https://github.com/jwt/ruby-jwt")
7434 (license license:expat)))
7435
7436;; Even though this package only provides bindings for a Mac OSX API it is
7437;; required by "ruby-listen" at runtime.
7438(define-public ruby-rb-fsevent
7439 (package
7440 (name "ruby-rb-fsevent")
7441 (version "0.10.3")
7442 (source (origin
7443 (method url-fetch)
7444 (uri (rubygems-uri "rb-fsevent" version))
7445 (sha256
7446 (base32
7447 "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8"))))
7448 (build-system ruby-build-system)
7449 ;; Tests need "guard-rspec", which needs "guard". However, "guard" needs
7450 ;; "listen", which needs "rb-fsevent" at runtime.
7451 (arguments `(#:tests? #f))
7452 (synopsis "FSEvents API with signals catching")
7453 (description
7454 "This library provides Ruby bindings for the Mac OSX FSEvents API.")
7455 (home-page "https://rubygems.org/gems/rb-fsevent")
7456 (license license:expat)))
7457
7458(define-public ruby-listen
7459 (package
7460 (name "ruby-listen")
7461 (version "3.8.0")
7462 (source
7463 (origin
7464 ;; The gem does not include a Rakefile, so fetch from the Git
7465 ;; repository.
7466 (method git-fetch)
7467 (uri (git-reference
7468 (url "https://github.com/guard/listen")
7469 (commit (string-append "v" version))))
7470 (file-name (git-file-name name version))
7471 (sha256
7472 (base32
7473 "1skkglml094dw1xr4742in1rwwa84ld0mz4nkw6qa8pwhx48x2n5"))))
7474 (build-system ruby-build-system)
7475 (arguments
7476 (list
7477 #:test-target "spec"
7478 #:phases
7479 #~(modify-phases %standard-phases
7480 (add-after 'unpack 'fix-files-in-gemspec
7481 (lambda _
7482 (substitute* "listen.gemspec"
7483 (("`git ls-files -z`")
7484 "`find . -type f -printf '%P\\\\0' |sort -z`"))))
7485 (add-before 'check 'remove-unnecessary-dependencies'
7486 (lambda _
7487 (substitute* "Rakefile"
7488 ;; Rubocop is for code linting, and is unnecessary for running
7489 ;; the tests.
7490 ((".*rubocop.*") "")))))))
7491 (native-inputs
7492 (list bundler ruby-rspec))
7493 (inputs
7494 (list ;; ruby-thor is used for the command line interface, and is referenced
7495 ;; in the wrapper, and therefore just needs to be an input.
7496 ruby-thor))
7497 (propagated-inputs
7498 (list ruby-rb-fsevent ruby-rb-inotify))
7499 (synopsis "Listen to file modifications")
7500 (description "The Listen gem listens to file modifications and notifies
7501you about the changes.")
7502 (home-page "https://github.com/guard/listen")
7503 (license license:expat)))
7504
7505(define-public ruby-loofah
7506 (package
7507 (name "ruby-loofah")
7508 (version "2.21.3")
7509 (home-page "https://github.com/flavorjones/loofah")
7510 (source
7511 (origin
7512 ;; Build from git because the gem lacks tests.
7513 (method git-fetch)
7514 (uri (git-reference (url home-page)
7515 (commit (string-append "v" version))))
7516 (file-name (git-file-name name version))
7517 (sha256
7518 (base32
7519 "1lh7cf56y1b0h090ahphvz7grq581phsamdl0rq59y0q9bqwrhg0"))))
7520 (build-system ruby-build-system)
7521 (native-inputs
7522 (list ruby-hoe ruby-hoe-markdown ruby-rr))
7523 (propagated-inputs
7524 (list ruby-nokogiri ruby-crass))
7525 (synopsis "Ruby library for manipulating and transforming HTML/XML")
7526 (description
7527 "Loofah is a general library for manipulating and transforming HTML/XML
7528documents and fragments. It's built on top of Nokogiri and libxml2.")
7529 (license license:expat)))
7530
7531(define-public ruby-crass
7532 (package
7533 (name "ruby-crass")
7534 (version "1.0.6")
7535 (home-page "https://github.com/rgrove/crass")
7536 (source (origin
7537 ;; The gem does not contain tests, so pull from git.
7538 (method git-fetch)
7539 (uri (git-reference
7540 (url home-page)
7541 (commit (string-append "v" version))))
7542 (file-name (git-file-name name version))
7543 (sha256
7544 (base32
7545 "1gbsb81psgb6xhnwpx4s409jc0mk0gijh039sy5xyi8jpaaadp40"))))
7546 (build-system ruby-build-system)
7547 (synopsis "Pure Ruby CSS parser")
7548 (description
7549 "Crass is a pure Ruby CSS parser based on the CSS Syntax Level 3 spec.")
7550 (license license:expat)))
7551
7552;;; The ruby-nokogumbo package has been absorbed into ruby-nokogiri.
7553(define-public ruby-nokogumbo
7554 (deprecated-package "ruby-nokogumbo" ruby-nokogiri))
7555
7556(define-public ruby-samovar
7557 (package
7558 (name "ruby-samovar")
7559 (version "2.1.4")
7560 (source (origin
7561 (method git-fetch) ;for tests
7562 (uri (git-reference
7563 (url "https://github.com/ioquatix/samovar")
7564 (commit (string-append "v" version))))
7565 (file-name (git-file-name name version))
7566 (sha256
7567 (base32
7568 "05pc5xlbv44anx0sfqssh0xhxg297bvl5slsl7k1vnka4k5fhax6"))))
7569 (build-system ruby-build-system)
7570 (native-inputs (list ruby-covered ruby-rspec))
7571 (propagated-inputs (list ruby-console ruby-mapping))
7572 (synopsis "Flexible option parser for Ruby")
7573 (description "Samovar is a modern framework for building command-line
7574tools and applications. It provides a declarative class-based DSL for
7575building command-line parsers that include automatic documentation generation.
7576It helps you keep your functionality clean and isolated where possible.")
7577 (home-page "https://github.com/ioquatix/samovar")
7578 (license license:expat)))
7579
7580(define-public ruby-sanitize
7581 (package
7582 (name "ruby-sanitize")
7583 (version "6.0.0")
7584 (home-page "https://github.com/rgrove/sanitize")
7585 (source (origin
7586 (method git-fetch)
7587 ;; The gem does not include the Rakefile, so we download the
7588 ;; source from Github.
7589 (uri (git-reference
7590 (url home-page)
7591 (commit (string-append "v" version))))
7592 (file-name (git-file-name name version))
7593 (sha256
7594 (base32
7595 "0p1a28vx95vscy9xzzyyddzgb9496x42a5i2ka39cpxbl5f3gkl0"))))
7596 (build-system ruby-build-system)
7597 (propagated-inputs (list ruby-crass ruby-nokogiri))
7598 (native-inputs (list ruby-minitest))
7599 (synopsis "Whitelist-based HTML and CSS sanitizer")
7600 (description
7601 "Sanitize is a whitelist-based HTML and CSS sanitizer. Given a list of
7602acceptable elements, attributes, and CSS properties, Sanitize will remove all
7603unacceptable HTML and/or CSS from a string.")
7604 (license license:expat)))
7605
7606(define-public ruby-sync
7607 (package
7608 (name "ruby-sync")
7609 (version "0.5.0")
7610 (source
7611 (origin
7612 (method url-fetch)
7613 (uri (rubygems-uri "sync" version))
7614 (sha256
7615 (base32
7616 "1z9qlq4icyiv3hz1znvsq1wz2ccqjb1zwd6gkvnwg6n50z65d0v6"))))
7617 (build-system ruby-build-system)
7618 (synopsis "Ruby module with a two-phase lock and counter")
7619 (description "This package provides a Ruby module that provides a two-phase
7620lock with a counter.")
7621 (home-page "https://github.com/ruby/sync")
7622 (license license:bsd-2)))
7623
7624(define-public ruby-oj
7625 (package
7626 (name "ruby-oj")
7627 (version "3.13.9")
7628 (source
7629 (origin
7630 (method git-fetch)
7631 ;; Version on rubygems.org does not contain Rakefile, so download from
7632 ;; GitHub instead.
7633 (uri (git-reference
7634 (url "https://github.com/ohler55/oj")
7635 (commit (string-append "v" version))))
7636 (file-name (git-file-name name version))
7637 (sha256
7638 (base32
7639 "0a24zd28y58nyhjxgrpn2k9p72vzj3zbmdrcsbhwbdycj7nn9fpd"))))
7640 (build-system ruby-build-system)
7641 (arguments
7642 '(#:test-target "test_all"
7643 #:phases
7644 (modify-phases %standard-phases
7645 (add-before 'check 'disable-bundler
7646 (lambda _
7647 (substitute* "Rakefile"
7648 (("Bundler\\.with_clean_env") "1.times")
7649 (("bundle exec ") "")))))))
7650 (native-inputs
7651 (list bundler ruby-rspec ruby-rake-compiler))
7652 (synopsis "JSON parser for Ruby optimized for speed")
7653 (description
7654 "Oj is a JSON parser and generator for Ruby, where the encoding and
7655decoding of JSON is implemented as a C extension to Ruby.")
7656 (home-page "https://www.ohler.com/oj/")
7657 (license (list license:expat ; Ruby code
7658 license:bsd-3)))) ; extension code
7659
7660(define-public ruby-ox
7661 (package
7662 (name "ruby-ox")
7663 (version "2.6.0")
7664 (source
7665 (origin
7666 (method url-fetch)
7667 (uri (rubygems-uri "ox" version))
7668 (sha256
7669 (base32
7670 "0fmk62b1h2i79dfzjj8wmf8qid1rv5nhwfc17l489ywnga91xl83"))))
7671 (build-system ruby-build-system)
7672 (arguments
7673 '(#:tests? #f)) ; no tests
7674 (synopsis "Optimized XML library for Ruby")
7675 (description
7676 "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
7677written as a native C extension. It was designed to be an alternative to
7678Nokogiri and other Ruby XML parsers for generic XML parsing and as an
7679alternative to Marshal for Object serialization.")
7680 (home-page "https://www.ohler.com/ox")
7681 (license license:expat)))
7682
7683(define-public ruby-redcloth
7684 (package
7685 (name "ruby-redcloth")
7686 (version "4.3.2")
7687 (source (origin
7688 (method url-fetch)
7689 (uri (rubygems-uri "RedCloth" version))
7690 (sha256
7691 (base32
7692 "0m9dv7ya9q93r8x1pg2gi15rxlbck8m178j1fz7r5v6wr1avrrqy"))))
7693 (build-system ruby-build-system)
7694 (arguments
7695 `(#:tests? #f ; no tests
7696 #:phases
7697 (modify-phases %standard-phases
7698 ;; Redcloth has complicated rake tasks to build various versions for
7699 ;; multiple targets using RVM. We don't want this so we just use the
7700 ;; existing gemspec.
7701 (replace 'build
7702 (lambda _
7703 (invoke "gem" "build" "redcloth.gemspec"))))))
7704 (native-inputs
7705 `(("bundler" ,bundler)
7706 ("ruby-diff-lcs" ,ruby-diff-lcs)
7707 ("ruby-rspec-2" ,ruby-rspec-2)))
7708 (synopsis "Textile markup language parser for Ruby")
7709 (description
7710 "RedCloth is a Ruby parser for the Textile markup language.")
7711 (home-page "http://redcloth.org")
7712 (license license:expat)))
7713
7714(define-public ruby-pg
7715 (let ((commit "378b7a35c12292625460ef2f33373de7114bf255")
7716 (revision "0"))
7717 (package
7718 (name "ruby-pg")
7719 (version (git-version "1.5.9" revision commit))
7720 (home-page "https://github.com/ged/ruby-pg")
7721 (source
7722 (origin
7723 (method git-fetch)
7724 (uri (git-reference
7725 (url home-page)
7726 (commit commit)))
7727 (file-name (git-file-name name version))
7728 (sha256
7729 (base32 "1aq6kakyghgbb4yykxxl9ziaaa7jbdbyc7vz6avyxhlby1jkj0m8"))
7730 (patches
7731 (search-patches "ruby-pg-fix-connect-timeout.patch"))))
7732 (build-system ruby-build-system)
7733 (arguments
7734 (list
7735 #:test-target "spec"
7736 #:phases
7737 #~(modify-phases %standard-phases
7738 (add-before 'build 'compile
7739 (lambda _
7740 (invoke "rake" "compile")))
7741 ;; Some tests rely on postgresql_lib_path.rb, but it is not
7742 ;; available until the gem is installed. Run tests after
7743 ;; installing to work around it.
7744 (delete 'check)
7745 (add-after 'install 'check
7746 (lambda* (#:key tests? #:allow-other-keys)
7747 (let ((new-gem (string-append #$output
7748 "/lib/ruby/vendor_ruby")))
7749 (setenv "GEM_PATH"
7750 (string-append (getenv "GEM_PATH") ":" new-gem))
7751 (when tests?
7752 (invoke "rspec"))))))))
7753 (native-inputs (list ruby-rake-compiler ruby-hoe ruby-rspec))
7754 (inputs (list postgresql))
7755 (synopsis "Ruby interface to PostgreSQL")
7756 (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
7757with PostgreSQL 9.3 and later.")
7758 (license license:ruby))))
7759
7760(define-public ruby-byebug
7761 (package
7762 (name "ruby-byebug")
7763 (version "11.1.3")
7764 (source
7765 (origin
7766 (method git-fetch)
7767 (uri (git-reference
7768 (url "https://github.com/deivid-rodriguez/byebug")
7769 (commit (string-append "v" version))))
7770 (file-name (git-file-name name version))
7771 (sha256
7772 (base32
7773 "0vyy3k2s7dcndngj6m8kxhs1vxc2c93dw8b3yyand3srsg9ffpij"))
7774 (modules '((guix build utils)))
7775 (snippet
7776 '(begin
7777 ;; Remove wrappers that try to setup a bundle environment.
7778 (with-directory-excursion "bin"
7779 (for-each delete-file '("bundle" "rake" "rubocop"))
7780 ;; ruby-minitest doesn't come with a launcher, so fix the one
7781 ;; provided.
7782 (substitute* "minitest"
7783 (("load File\\.expand_path\\(\"bundle\".*") "")
7784 (("require \"bundler/setup\".*") "")))))))
7785 (build-system ruby-build-system)
7786 (arguments
7787 (list
7788 #:phases
7789 #~(modify-phases %standard-phases
7790 (add-after 'unpack 'sanitize-dependencies
7791 (lambda _
7792 (substitute* "Rakefile"
7793 ((".*chandler/tasks.*") ""))))
7794 (add-after 'unpack 'skip-tmp-path-sensitive-test
7795 (lambda _
7796 (substitute* "test/commands/where_test.rb"
7797 (("unless /cygwin\\|mswin\\|mingw\\|darwin/.*")
7798 "unless true\n"))))
7799 (add-before 'build 'compile
7800 (lambda _
7801 (invoke "rake" "compile")))
7802 (add-before 'check 'patch-tests
7803 (lambda _
7804 ;; srand': no implicit conversion of nil into Integer (TypeError)
7805 (delete-file "test/minitest_runner_test.rb")
7806 ;; Expects 5, gets 162. From a file containing ~10 lines.
7807 (substitute* "test/commands/finish_test.rb"
7808 (("test_finish_inside_autoloaded_files")
7809 "finish_inside_autoloaded_files"))))
7810 (add-before 'check 'set-home
7811 (lambda _
7812 (setenv "HOME" (getcwd)))))))
7813 (native-inputs
7814 (list bundler
7815 ruby-minitest
7816 ruby-pry
7817 ruby-rake-compiler
7818 ruby-rubocop
7819 ruby-yard))
7820 (synopsis "Debugger for Ruby 2")
7821 (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
7822TracePoint C API for execution control and the Debug Inspector C API for call
7823stack navigation. The core component provides support that front-ends can
7824build on. It provides breakpoint handling and bindings for stack frames among
7825other things and it comes with a command line interface.")
7826 (home-page "https://github.com/deivid-rodriguez/byebug")
7827 (license license:bsd-2)))
7828
7829(define-public ruby-netrc
7830 (package
7831 (name "ruby-netrc")
7832 (version "0.11.0")
7833 (source (origin
7834 (method url-fetch)
7835 (uri (rubygems-uri "netrc" version))
7836 (sha256
7837 (base32
7838 "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y"))))
7839 (build-system ruby-build-system)
7840 (arguments
7841 `(#:phases
7842 (modify-phases %standard-phases
7843 (replace 'check
7844 ;; There is no Rakefile and minitest can only run one file at once,
7845 ;; so we have to iterate over all test files.
7846 (lambda _
7847 (for-each (lambda (file)
7848 (invoke "ruby" "-Itest" file))
7849 (find-files "./test" "test_.*\\.rb"))))
7850 (add-before 'check 'patch-tests-for-newer-ruby
7851 (lambda _
7852 (substitute* "test/test_netrc.rb"
7853 (("Dir.pwd, '.netrc'") "Netrc.home_path, '.netrc'")))))))
7854 (native-inputs
7855 (list ruby-minitest))
7856 (synopsis "Library to read and update netrc files")
7857 (description
7858 "This library can read and update netrc files, preserving formatting
7859including comments and whitespace.")
7860 (home-page "https://github.com/geemus/netrc")
7861 (license license:expat)))
7862
7863(define-public ruby-unf-ext
7864 (package
7865 (name "ruby-unf-ext")
7866 (version "0.0.8.2")
7867 (source (origin
7868 (method url-fetch)
7869 (uri (rubygems-uri "unf_ext" version))
7870 (sha256
7871 (base32
7872 "1yj2nz2l101vr1x9w2k83a0fag1xgnmjwp8w8rw4ik2rwcz65fch"))))
7873 (build-system ruby-build-system)
7874 (arguments
7875 `(#:phases
7876 (modify-phases %standard-phases
7877 (add-after 'build 'build-ext
7878 (lambda _ (invoke "rake" "compile:unf_ext")))
7879 (add-before 'check 'lose-rake-compiler-dock-dependency
7880 (lambda _
7881 ;; rake-compiler-dock is listed in the gemspec, but only
7882 ;; required when cross-compiling.
7883 (substitute* "unf_ext.gemspec"
7884 ((".*rake-compiler-dock.*") "")))))))
7885 (native-inputs
7886 (list bundler ruby-rake-compiler ruby-test-unit))
7887 (synopsis "Unicode normalization form support library")
7888 (description
7889 "This package provides unicode normalization form support for Ruby.")
7890 (home-page "https://github.com/knu/ruby-unf_ext")
7891 (license license:expat)))
7892
7893(define-public ruby-tdiff
7894 ;; Use a newer than released snapshot so that rspec-2 is not required.
7895 (let ((commit "b662a6048f08abc45c1a834e5f34dd1c662935e2"))
7896 (package
7897 (name "ruby-tdiff")
7898 (version (string-append "0.3.3-1." (string-take commit 8)))
7899 (source (origin
7900 (method git-fetch)
7901 (uri (git-reference
7902 (url "https://github.com/postmodern/tdiff")
7903 (commit commit)))
7904 (file-name (string-append name "-" version "-checkout"))
7905 (sha256
7906 (base32
7907 "0n3gq8rx49f7ln6zqlshqfg2mgqyy30rsdjlnki5mv307ykc7ad4"))))
7908 (build-system ruby-build-system)
7909 (native-inputs
7910 (list ruby-rspec ruby-yard/minimal ruby-rubygems-tasks))
7911 (synopsis "Calculate the differences between two tree-like structures")
7912 (description
7913 "This library provides functions to calculate the differences between two
7914tree-like structures. It is similar to Ruby's built-in @code{TSort} module.")
7915 (home-page "https://github.com/postmodern/tdiff")
7916 (license license:expat))))
7917
7918(define-public ruby-nokogiri-diff
7919 ;; Use a newer than released snapshot so that rspec-2 is not required.
7920 (let ((commit "a38491e4d8709b7406f2cae11a50226d927d06f5"))
7921 (package
7922 (name "ruby-nokogiri-diff")
7923 (version (string-append "0.2.0-1." (string-take commit 8)))
7924 (source (origin
7925 (method git-fetch)
7926 (uri (git-reference
7927 (url "https://github.com/postmodern/nokogiri-diff")
7928 (commit commit)))
7929 (file-name (string-append name "-" version "-checkout"))
7930 (sha256
7931 (base32
7932 "1ah2sfjh9n1p0ln2wkqzfl448ml7j4zfy6dhp1qgzq2m41php6rf"))))
7933 (build-system ruby-build-system)
7934 (propagated-inputs
7935 (list ruby-tdiff
7936 ruby-nokogiri))
7937 (native-inputs
7938 (list ruby-rspec ruby-yard/minimal ruby-rubygems-tasks))
7939 (synopsis "Calculate the differences between two XML/HTML documents")
7940 (description
7941 "@code{Nokogiri::Diff} adds the ability to calculate the
7942differences (added or removed nodes) between two XML/HTML documents.")
7943 (home-page "https://github.com/postmodern/nokogiri-diff")
7944 (license license:expat))))
7945
7946(define-public ruby-racc
7947 (package
7948 (name "ruby-racc")
7949 (version "1.5.2")
7950 (source
7951 (origin
7952 (method url-fetch)
7953 (uri (rubygems-uri "racc" version))
7954 (sha256
7955 (base32
7956 "178k7r0xn689spviqzhvazzvxfq6fyjldxb3ywjbgipbfi4s8j1g"))))
7957 (build-system ruby-build-system)
7958 (arguments
7959 `(#:tests? #f)) ; Fails while parsing test instructions.
7960 (native-inputs
7961 (list ruby-hoe ruby-rake-compiler))
7962 (synopsis "LALR(1) parser generator for Ruby")
7963 (description
7964 "Racc is a LALR(1) parser generator. It is written in Ruby itself, and
7965generates Ruby program.")
7966 (home-page "https://i.loveruby.net/en/projects/racc/")
7967 (license (list
7968 ;; Generally licensed under the LGPL2.1, and some files also
7969 ;; available under the same license as Ruby.
7970 license:lgpl2.1
7971 license:ruby))))
7972
7973(define-public ruby-rack
7974 (package
7975 (name "ruby-rack")
7976 ;; Do not upgrade to version 3, as Rails doesn't support it yet.
7977 (version "2.2.7")
7978 (source
7979 (origin
7980 (method git-fetch) ;for tests
7981 (uri (git-reference
7982 (url "https://github.com/rack/rack")
7983 (commit (string-append "v" version))))
7984 (file-name (git-file-name name version))
7985 (sha256
7986 (base32
7987 "02r41fr61x0jfhraizc6bsgs40p8mlpvnzix71zwmcvibg384ify"))))
7988 (build-system ruby-build-system)
7989 (arguments
7990 (list
7991 #:phases
7992 #~(modify-phases %standard-phases
7993 (add-before 'check 'fix-tests
7994 (lambda _
7995 ;; This test fails in the build environment (and passes outside
7996 ;; of it).
7997 (substitute* "test/spec_files.rb"
7998 (("res.body.must_equal expected_body") ""))
7999 ;; A few of the tests use the length of a file on disk for
8000 ;; Content-Length and Content-Range headers. However, this file
8001 ;; has a shebang in it which an earlier phase patches, growing
8002 ;; the file size from 193 to 239 bytes when the store prefix is
8003 ;; "/gnu/store".
8004 (let ((size-diff (- (string-length (which "ruby"))
8005 (string-length "/usr/bin/env ruby"))))
8006 (substitute* '("test/spec_files.rb")
8007 (("208" bytes)
8008 (number->string (+ (string->number bytes) size-diff)))
8009 (("bytes(.)22-33" all delimiter)
8010 (string-append "bytes"
8011 delimiter
8012 (number->string (+ 22 size-diff))
8013 "-"
8014 (number->string (+ 33 size-diff)))))))))))
8015 (native-inputs
8016 (list ruby-minitest
8017 ruby-minitest-global-expectations
8018 ruby-webrick))
8019 (synopsis "Unified web application interface for Ruby")
8020 (description "Rack provides a minimal, modular and adaptable interface for
8021developing web applications in Ruby. By wrapping HTTP requests and responses,
8022it unifies the API for web servers, web frameworks, and software in between
8023into a single method call.")
8024 (home-page "https://github.com/rack/rack")
8025 (license license:expat)))
8026
8027(define-public ruby-rack-next
8028 (package
8029 (inherit ruby-rack)
8030 (name "ruby-rack")
8031 (version "3.0.7")
8032 (source (origin
8033 (method git-fetch) ;for tests
8034 (uri (git-reference
8035 (url "https://github.com/rack/rack")
8036 (commit (string-append "v" version))))
8037 (file-name (git-file-name name version))
8038 (sha256
8039 (base32
8040 "0msf14655nfcq1kgmib6932lgzm9nw3nb0m3c7nh6nj4sx30yxfr"))))
8041 (arguments '())))
8042
8043(define-public ruby-rackup
8044 (package
8045 (name "ruby-rackup")
8046 (version "2.1.0")
8047 (source (origin
8048 (method git-fetch)
8049 (uri (git-reference
8050 (url "https://github.com/rack/rackup")
8051 (commit (string-append "v" version))))
8052 (file-name (git-file-name name version))
8053 (sha256
8054 (base32
8055 "19b7sy700zjwaw7x47qpxvhnnz5hrp5bhrxfyljgagrli824dajy"))))
8056 (build-system ruby-build-system)
8057 (native-inputs (list ruby-minitest-global-expectations))
8058 (inputs (list ruby-rack-next ruby-webrick))
8059 (synopsis "Command line interface (CLI) for running for Rack applications")
8060 (description "This package provides a command line interface for running
8061for Rack applications.")
8062 (home-page "https://github.com/rack/rackup")
8063 (license license:expat)))
8064
8065(define-public ruby-rackup-1
8066 (package
8067 (inherit ruby-rackup)
8068 (name "ruby-rackup")
8069 (version "1.0.1")
8070 (source (origin
8071 (method git-fetch)
8072 (uri (git-reference
8073 (url "https://github.com/rack/rackup")
8074 (commit (string-append "v" version))))
8075 (file-name (git-file-name name version))
8076 (sha256
8077 (base32
8078 "1xdfxsz7jx2gwfq212y9mca6q0i5s7kyqbfcscy1315awg57ynyp"))))))
8079
8080(define-public ruby-rack-cache
8081 (package
8082 (name "ruby-rack-cache")
8083 (version "1.13.0")
8084 (source (origin
8085 (method url-fetch)
8086 (uri (rubygems-uri "rack-cache" version))
8087 (sha256
8088 (base32
8089 "1cqpax628h2mhnsjfg91c3klxwx2pkvaj061cisb0saqa99b0jgm"))))
8090 (build-system ruby-build-system)
8091 (arguments
8092 (list
8093 ;; The test suite depends on ruby-memcached, which is not available in
8094 ;; Guix and bundles a very dated copy of memcached (undesirable).
8095 #:tests? #f))
8096 (propagated-inputs (list ruby-rack))
8097 (synopsis "Component to enable HTTP caching for Rack-based applications")
8098 (description "Rack::Cache is suitable as a drop-in component to enable
8099HTTP caching for Rack-based applications that produce freshness (Expires,
8100Cache-Control) and/or validation (Last-Modified, ETag) information.")
8101 (home-page "https://github.com/rtomayko/rack-cache")
8102 (license license:expat)))
8103
8104(define-public ruby-rack-test
8105 (package
8106 (name "ruby-rack-test")
8107 (version "2.1.0")
8108 (source
8109 (origin
8110 (method url-fetch)
8111 (uri (rubygems-uri "rack-test" version))
8112 (sha256
8113 (base32
8114 "1ysx29gk9k14a14zsp5a8czys140wacvp91fja8xcja0j1hzqq8c"))))
8115 (build-system ruby-build-system)
8116 (arguments
8117 ;; Disable tests because of circular dependencies: requires sinatra,
8118 ;; which requires rack-protection, which requires rack-test. Instead
8119 ;; simply require the library.
8120 `(#:phases
8121 (modify-phases %standard-phases
8122 (replace 'check
8123 (lambda* (#:key tests? #:allow-other-keys)
8124 (when tests?
8125 (invoke "ruby" "-Ilib" "-r" "rack/test")))))))
8126 (propagated-inputs
8127 (list ruby-rack))
8128 (synopsis "Testing API for Rack applications")
8129 (description
8130 "Rack::Test is a small, simple testing API for Rack applications. It can
8131be used on its own or as a reusable starting point for Web frameworks and
8132testing libraries to build on.")
8133 (home-page "https://github.com/rack/rack-test")
8134 (license license:expat)))
8135
8136(define-public ruby-rack-session
8137 (package
8138 (name "ruby-rack-session")
8139 ;; Stay on version 1 until all the rack users such as Rails can use rack 3
8140 ;; (rack-session 2 requires rack 3).
8141 (version "1.0.1")
8142 (source (origin
8143 (method git-fetch) ;for tests
8144 (uri (git-reference
8145 (url "https://github.com/rack/rack-session")
8146 (commit (string-append "v" version))))
8147 (file-name (git-file-name name version))
8148 (sha256
8149 (base32
8150 "0rv955wd7ckp5jgy5c229wmajh48jpcy8s0iv5i8ma61wf7qw0i1"))))
8151 (build-system ruby-build-system)
8152 (native-inputs
8153 (list ruby-minitest-global-expectations
8154 ruby-minitest-sprint))
8155 (propagated-inputs
8156 (list ruby-rack))
8157 (synopsis "Session management for Rack")
8158 (description "This package provides a session management implementation
8159for Rack.")
8160 (home-page "https://github.com/rack/rack-session")
8161 (license license:expat)))
8162
8163(define-public ruby-rack-protection
8164 (package
8165 (name "ruby-rack-protection")
8166 (version "3.0.5")
8167 (source
8168 (origin
8169 (method url-fetch)
8170 (uri (rubygems-uri "rack-protection" version))
8171 (sha256
8172 (base32
8173 "1a12m1mv8dc0g90fs1myvis8vsgr427k1arg1q4a9qlfw6fqyhis"))))
8174 (build-system ruby-build-system)
8175 (arguments
8176 '(;; Tests missing from the gem.
8177 #:tests? #f))
8178 (propagated-inputs
8179 (list ruby-rack))
8180 (native-inputs
8181 (list bundler ruby-rspec-2 ruby-rack-test))
8182 (synopsis "Rack middleware that protects against typical web attacks")
8183 (description "Rack middleware that can be used to protect against typical
8184web attacks. It can protect all Rack apps, including Rails. For instance, it
8185protects against cross site request forgery, cross site scripting,
8186clickjacking, directory traversal, session hijacking and IP spoofing.")
8187 (home-page "https://github.com/sinatra/sinatra/tree/master/rack-protection")
8188 (license license:expat)))
8189
8190(define-public ruby-rainbow
8191 (package
8192 (name "ruby-rainbow")
8193 (version "3.0.0")
8194 (source
8195 (origin
8196 (method url-fetch)
8197 (uri (rubygems-uri "rainbow" version))
8198 (sha256
8199 (base32
8200 "0bb2fpjspydr6x0s8pn1pqkzmxszvkfapv0p4627mywl7ky4zkhk"))))
8201 (build-system ruby-build-system)
8202 (arguments
8203 '(#:phases
8204 (modify-phases %standard-phases
8205 ;; Run rspec directly, to avoid requiring Rubocop which is used from
8206 ;; the Rakefile.
8207 (replace 'check
8208 (lambda* (#:key tests? #:allow-other-keys)
8209 (when tests?
8210 (invoke "rspec")))))))
8211 (native-inputs
8212 (list bundler ruby-rspec))
8213 (synopsis "Colorize printed text on ANSI terminals")
8214 (description
8215 "@code{rainbow} provides a string presenter object to colorize strings by
8216wrapping them in ANSI escape codes.")
8217 (home-page "https://github.com/sickill/rainbow")
8218 (license license:expat)))
8219
8220(define-public ruby-rr
8221 (package
8222 (name "ruby-rr")
8223 (version "1.2.1")
8224 (source
8225 (origin
8226 (method url-fetch)
8227 (uri (rubygems-uri "rr" version))
8228 (sha256
8229 (base32
8230 "1n9g78ba4c2zzmz8cdb97c38h1xm0clircag00vbcxwqs4dq0ymp"))))
8231 (build-system ruby-build-system)
8232 (arguments
8233 '(#:tests? #f)) ; test files not included
8234 (native-inputs
8235 (list bundler ruby-rspec))
8236 (synopsis "Ruby test double framework")
8237 (description
8238 "RR is a test double framework that features a rich selection of double
8239techniques and a terse syntax.")
8240 (home-page "https://rr.github.io/rr/")
8241 (license license:expat)))
8242
8243(define-public ruby-rest-client
8244 (package
8245 (name "ruby-rest-client")
8246 (version "2.1.0")
8247 (source
8248 (origin
8249 (method url-fetch)
8250 (uri (rubygems-uri "rest-client" version))
8251 (sha256
8252 (base32
8253 "1qs74yzl58agzx9dgjhcpgmzfn61fqkk33k1js2y5yhlvc5l19im"))))
8254 (build-system ruby-build-system)
8255 (arguments
8256 (list
8257 ;; TODO Some tests are currently broken
8258 #:tests? #f
8259 #:phases
8260 #~(modify-phases %standard-phases
8261 (add-before 'check 'remove-unnecessary-development-dependencies
8262 (lambda _
8263 (substitute* "rest-client.gemspec"
8264 ;; Remove rubocop as it's unused. Rubocop also indirectly
8265 ;; depends on this package through ruby-parser and ruby-ast so
8266 ;; this avoids a dependency loop.
8267 ((".*rubocop.*") "\n")
8268 ;; Remove pry as it's unused, it's a debugging tool
8269 ((".*pry.*") "\n")
8270 ;; Remove an unnecessarily strict rdoc dependency
8271 ((".*rdoc.*") "\n"))))
8272 (add-before 'check 'delete-network-dependent-tests
8273 (lambda _
8274 (delete-file "spec/integration/request_spec.rb")
8275 (delete-file "spec/integration/httpbin_spec.rb")))
8276 (replace 'check
8277 (lambda* (#:key tests? #:allow-other-keys)
8278 (when tests?
8279 (invoke "rspec")))))))
8280 (propagated-inputs
8281 (list ruby-http-accept-1
8282 ruby-http-cookie
8283 ruby-mime-types
8284 ruby-netrc))
8285 (native-inputs
8286 (list bundler
8287 ruby-webmock-2
8288 ruby-rspec))
8289 (synopsis "Simple HTTP and REST client for Ruby")
8290 (description
8291 "@code{rest-client} provides a simple HTTP and REST client for Ruby,
8292inspired by the Sinatra microframework style of specifying actions:
8293@code{get}, @code{put}, @code{post}, @code{delete}.")
8294 (home-page "https://github.com/rest-client/rest-client")
8295 (license license:expat)))
8296
8297(define-public ruby-rubocop-ast
8298 (package
8299 (name "ruby-rubocop-ast")
8300 (version "1.37.0")
8301 (source
8302 (origin
8303 (method git-fetch) ;no test suite in distributed gem
8304 (uri (git-reference
8305 (url "https://github.com/rubocop/rubocop-ast")
8306 (commit (string-append "v" version))))
8307 (file-name (git-file-name name version))
8308 (sha256
8309 (base32
8310 "1ww1vxcx6qaih4g68mrbq4xlgrqbv8w7cqxdaz629sazpw2hkycs"))))
8311 (build-system ruby-build-system)
8312 (arguments
8313 `(#:test-target "spec"
8314 #:phases (modify-phases %standard-phases
8315 (add-after 'unpack 'relax-dependencies
8316 (lambda _
8317 (substitute* "Gemfile"
8318 (("gem 'simplecov', '~> 0.10', '< 0.18'")
8319 "gem 'simplecov', '~> 0.10'"))))
8320 (add-before 'build 'generate-lexer
8321 (lambda _
8322 (setenv "RUBOCOP_VERSION" "none")
8323 (invoke "rake" "generate")))
8324 (replace 'replace-git-ls-files
8325 (lambda _
8326 (substitute* "rubocop-ast.gemspec"
8327 (("`git ls-files(.*)`" _ files)
8328 (format #f "`find ~a -type f| sort`" files))))))))
8329 (native-inputs
8330 (list ruby-bump
8331 ruby-oedipus-lex
8332 ruby-prism
8333 ruby-racc
8334 ruby-rake
8335 ruby-rspec
8336 ruby-simplecov))
8337 (propagated-inputs
8338 (list ruby-parser))
8339 (synopsis "RuboCop's AST extensions and NodePattern functionality")
8340 (description "Rubocop::AST extends @code{ruby-parser} with classes used
8341by RuboCop to deal with Ruby's Abstract Syntax Tree (AST), in particular:
8342@itemize
8343@item @code{RuboCop::AST::Node}
8344@item @code{RuboCop::AST::NodePattern}
8345@end itemize")
8346 (home-page "https://rubocop.org/")
8347 (license license:expat)))
8348
8349(define-public ruby-rexml
8350 (package
8351 (name "ruby-rexml")
8352 (version "3.2.5")
8353 (source
8354 (origin
8355 (method git-fetch) ;no tests in distributed gem
8356 (uri (git-reference
8357 (url "https://github.com/ruby/rexml")
8358 (commit (string-append "v" version))))
8359 (file-name (git-file-name name version))
8360 (sha256
8361 (base32 "13n6vaa80drqic2wri4q6k22qzvsn683vp5s8c9dllil6x04kn0x"))))
8362 (build-system ruby-build-system)
8363 (synopsis "XML toolkit for Ruby")
8364 (description "Inspired by Electric XML library for Java, REXML aims to be
8365easy-to-use API, small and fast. It supports both tree and stream document
8366parsing.")
8367 (home-page "https://github.com/ruby/rexml")
8368 (license license:bsd-2)))
8369
8370(define-public ruby-character-set
8371 (package
8372 (name "ruby-character-set")
8373 (version "1.4.0")
8374 (source
8375 (origin
8376 (method url-fetch)
8377 (uri (rubygems-uri "character_set" version))
8378 (sha256
8379 (base32
8380 "0affq9n77vwy897ri2zhmfinfagf37hcwwimrccy1bcxan9mj3h3"))))
8381 (build-system ruby-build-system)
8382 (arguments '(#:tests? #f)) ;avoid a cycle with ruby-regexp-parser
8383 (synopsis "Ruby library to manipulate Unicode")
8384 (description "CharacterSet is a C-extended Ruby library to work with sets
8385of Unicode code points. It can read and write these sets in various formats
8386and implements the @code{stdlib} @code{Set} interface for them. It also
8387offers an alternate paradigm of @code{String} processing which grants much
8388better performance than @code{Regexp} and @code{String} methods from the
8389@code{stdlib} where applicable. Many parts can be used independently, e.g.:
8390@itemize
8391@item @code{CharacterSet::Character}
8392@item @code{CharacterSet::Parser}
8393@item @code{CharacterSet::Writer}
8394@item @code{RangeCompressor}
8395@end itemize")
8396 (home-page "https://github.com/jaynetics/character_set")
8397 (license license:expat)))
8398
8399(define-public ruby-range-compressor
8400 (package
8401 (name "ruby-range-compressor")
8402 (version "1.2.0")
8403 (source
8404 (origin
8405 (method git-fetch)
8406 (uri (git-reference
8407 (url "https://github.com/janosch-x/range_compressor")
8408 (commit (string-append "v" version))))
8409 (file-name (git-file-name name version))
8410 (sha256
8411 (base32
8412 "1zmc44si5ac2h7r1x4f1j8z5yr6wz528c7dssh0g70fmczs3pfga"))))
8413 (build-system ruby-build-system)
8414 (arguments
8415 (list
8416 #:test-target "spec"
8417 #:phases
8418 #~(modify-phases %standard-phases
8419 (add-after 'extract-gemspec 'strip-version-requirements
8420 (lambda _
8421 (substitute* "range_compressor.gemspec"
8422 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
8423 (string-append stripped "\n"))))))))
8424 (native-inputs
8425 (list ruby-rspec
8426 ruby-sorted-set))
8427 (synopsis "Simple arrays of objects to arrays of ranges compressor")
8428 (description "RangeCompresses is a tiny library that allows compressing
8429arrays of objects into arrays of ranges. For example, it can turn the
8430following: @code{[1, 2, 3, 4, 6, 8, 9, 10]} into @code{[1..4, 6..6, 8..10]}.")
8431 (home-page "https://github.com/janosch-x/range_compressor")
8432 (license license:expat)))
8433
8434(define-public ruby-regexp-property-values
8435 (let ((commit "03007a66c912949a7130b973cc0eca109c20811f")
8436 (revision "1"))
8437 (package
8438 (name "ruby-regexp-property-values")
8439 (version (git-version "1.0.0" revision commit))
8440 (source
8441 (origin
8442 (method git-fetch)
8443 (uri (git-reference ;no test suite in distributed gem
8444 (url "https://github.com/jaynetics/regexp_property_values")
8445 (commit commit)))
8446 (file-name (git-file-name name version))
8447 (sha256
8448 (base32
8449 "1zsax784p16zdkf60lyq9z924zvsafhx9ckxx9srsgkyiqrifi1s"))))
8450 (build-system ruby-build-system)
8451 (arguments
8452 '(#:test-target "default"))
8453 (native-inputs
8454 (list ruby-character-set ruby-rake ruby-rake-compiler
8455 ruby-range-compressor ruby-rspec))
8456 (synopsis "Inspect Ruby's regex engine property values")
8457 (description "This small library lets you see which property values are
8458supported by the regular expression engine of the Ruby version you are running
8459and can directly read out their code point ranges. In other words, it
8460determines all supported values for @code{\\p{value}} expressions and what
8461they match.")
8462 (home-page "https://github.com/jaynetics/regexp_property_values")
8463 (license license:expat))))
8464
8465(define-public ruby-regexp-parser
8466 (package
8467 (name "ruby-regexp-parser")
8468 (version "2.6.0")
8469 (source
8470 (origin
8471 (method git-fetch) ;bin/test missing from gem
8472 (uri (git-reference
8473 (url "https://github.com/ammar/regexp_parser")
8474 (commit (string-append "v" version))))
8475 (file-name (git-file-name name version))
8476 (sha256
8477 (base32
8478 "07dx96gjvpa07dsdnzpwhhwc7qpxakjgws7d7wbnkbs20fyvx55x"))))
8479 (build-system ruby-build-system)
8480 (arguments
8481 '(#:test-target "default"
8482 #:phases (modify-phases %standard-phases
8483 (add-before 'build 'compile-scanner.rb
8484 (lambda _
8485 (invoke "rake" "build")
8486 ;; XXX: This is needed otherwise the install
8487 ;; phase fails to delete the installed cached
8488 ;; gem file.
8489 (delete-file-recursively "pkg"))))))
8490 (native-inputs
8491 (list ragel ruby-ice-nine ruby-regexp-property-values ruby-rspec))
8492 (synopsis "Regular expression parser library for Ruby")
8493 (description "A Ruby gem for tokenizing, parsing, and transforming regular
8494expressions. It comprises the following components:
8495@itemize
8496@item A scanner/tokenizer based on Ragel,
8497@item A lexer that produces a stream of token objects,
8498@item A parser that produces a tree of Expression objects.
8499@end itemize")
8500 (home-page "https://github.com/ammar/regexp_parser")
8501 (license license:expat)))
8502
8503(define-public ruby-test-queue
8504 (package
8505 (name "ruby-test-queue")
8506 (version "0.4.2")
8507 (source
8508 (origin
8509 (method url-fetch)
8510 (uri (rubygems-uri "test-queue" version))
8511 (sha256
8512 (base32
8513 "0hvm3n1qrqxqilhqk4rjivw3gcrd08zz1i6am9qzg1ppjxv6f36f"))))
8514 (build-system ruby-build-system)
8515 (arguments
8516 '(#:phases
8517 (modify-phases %standard-phases
8518 (replace 'check
8519 (lambda* (#:key tests? #:allow-other-keys)
8520 (when tests?
8521 (invoke "rspec")))))))
8522 (native-inputs
8523 (list ruby-rspec))
8524 (synopsis "Minitest/RSpec parallel test runner for CI environments")
8525 (description "The test-queue module is a parallel test runner,
8526built using a centralized queue to ensure optimal distribution of
8527tests between workers. It is specifically optimized for Continuous
8528Integration (CI) environments: build statistics from each run are
8529stored locally and used to sort the queue at the beginning of the next
8530run.")
8531 (home-page "https://github.com/tmm1/test-queue")
8532 (license license:expat)))
8533
8534(define-public ruby-rubocop
8535 (package
8536 (name "ruby-rubocop")
8537 ;; XXX: Also update ruby-rubocop/minimal in ruby-build.scm.
8538 (version "1.68.0")
8539 (source
8540 (origin
8541 (method git-fetch) ;no tests in distributed gem
8542 (uri (git-reference
8543 (url "https://github.com/rubocop/rubocop")
8544 (commit (string-append "v" version))))
8545 (file-name (git-file-name name version))
8546 (sha256
8547 (base32
8548 "0pfsrgkg2dhb6a2rknciqskgxgmb9kf48rvbkhay9n8n6m712v2w"))))
8549 (build-system ruby-build-system)
8550 (arguments
8551 `(#:test-target "default"
8552 ;; TODO: Figure out why test hangs.
8553 #:tests? ,(not (or (%current-target-system)
8554 (target-riscv64?)))
8555 #:phases
8556 (modify-phases %standard-phases
8557 (add-before 'check 'set-home
8558 (lambda _
8559 (setenv "HOME" (getcwd))))
8560 ;; Rubocop depends on itself for tests, directly and indirectly. By
8561 ;; regenerating the TODO list we test rubocop against itself and
8562 ;; forgo adjusting the test suite to our environment each release.
8563 (replace 'check
8564 (lambda* (#:key tests? #:allow-other-keys)
8565 (when tests?
8566 (make-file-writable ".rubocop_todo.yml")
8567 (invoke "./exe/rubocop" "--auto-gen-config")))))))
8568 (native-inputs
8569 (list ruby-pry
8570 ruby-rake
8571 ruby-rspec
8572 ruby-rubocop-ast
8573 ruby-rubocop-capybara-minimal
8574 ruby-rubocop-factory-bot
8575 ruby-rubocop/minimal
8576 ruby-rubocop-performance-minimal
8577 ruby-rubocop-rake-minimal
8578 ruby-rubocop-rspec-minimal
8579 ruby-simplecov
8580 ruby-stackprof
8581 ruby-test-queue
8582 ruby-webmock
8583 ruby-yard))
8584 (propagated-inputs
8585 (list ruby-json
8586 ruby-language-server-protocol
8587 ruby-parallel
8588 ruby-parser
8589 ruby-progressbar
8590 ruby-rainbow
8591 ruby-regexp-parser
8592 ruby-rexml
8593 ruby-rubocop-ast
8594 ruby-unicode-display-width))
8595 (synopsis "Ruby code style checking tool")
8596 (description
8597 "@code{rubocop} is a Ruby code style checking tool. It aims to enforce
8598the community-driven Ruby Style Guide.")
8599 (home-page "https://github.com/rubocop/rubocop")
8600 (license license:expat)))
8601
8602(define-public ruby-contest
8603 (package
8604 (name "ruby-contest")
8605 (version "0.1.3")
8606 (source
8607 (origin
8608 (method url-fetch)
8609 (uri (rubygems-uri "contest" version))
8610 (sha256
8611 (base32
8612 "1p9f2292b7b0fbrcjswvj9v01z7ig5ig52328wyqcabgb553qsdf"))))
8613 (build-system ruby-build-system)
8614 (synopsis "Write declarative tests using nested contexts")
8615 (description
8616 "Contest allows writing declarative @code{Test::Unit} tests using nested
8617contexts without performance penalties.")
8618 (home-page "https://github.com/citrusbyte/contest")
8619 (license license:expat)))
8620
8621(define-public ruby-creole
8622 (package
8623 (name "ruby-creole")
8624 (version "0.5.0")
8625 (source
8626 (origin
8627 (method url-fetch)
8628 (uri (rubygems-uri "creole" version))
8629 (sha256
8630 (base32
8631 "00rcscz16idp6dx0dk5yi5i0fz593i3r6anbn5bg2q07v3i025wm"))))
8632 (build-system ruby-build-system)
8633 (native-inputs
8634 (list ruby-bacon))
8635 (synopsis "Creole markup language converter")
8636 (description
8637 "Creole is a lightweight markup language and this library for converting
8638creole to @code{HTML}.")
8639 (home-page "https://github.com/minad/creole")
8640 (license license:ruby)))
8641
8642(define-public ruby-middleware
8643 (package
8644 (name "ruby-middleware")
8645 (version "0.1.0")
8646 (source
8647 (origin
8648 (method url-fetch)
8649 (uri (rubygems-uri "middleware" version))
8650 (sha256
8651 (base32
8652 "0703nkf2v371wqr41c04x5qid7ww45cxqv3hnlg07if3b3xrm9xl"))))
8653 (build-system ruby-build-system)
8654 (arguments '(#:tests? #f)) ;no test suite
8655 (synopsis "Implementation of a middleware abstraction for Ruby")
8656 (description "Middleware is a generalized implementation of a middleware
8657abstraction for Ruby.")
8658 (home-page "https://github.com/mitchellh/middleware")
8659 (license license:expat)))
8660
8661(define-public ruby-benchmark-ips
8662 (package
8663 (name "ruby-benchmark-ips")
8664 (version "2.12.0")
8665 (source
8666 (origin
8667 (method git-fetch) ;no tests in distributed gem
8668 (uri (git-reference
8669 (url "https://github.com/evanphx/benchmark-ips")
8670 (commit (string-append "v" version))))
8671 (file-name (git-file-name name version))
8672 (sha256
8673 (base32
8674 "19pa2a1lgjzrxcz6vxwfiq5qq337vr15bbbpc2mfwzljdlx5059s"))))
8675 (build-system ruby-build-system)
8676 (arguments
8677 (list
8678 #:phases
8679 #~(modify-phases %standard-phases
8680 (add-after 'unpack 'patch
8681 (lambda _
8682 (substitute* "Gemfile"
8683 (("gem 'rake'.*")
8684 "gem 'rake'"))
8685 (substitute* "benchmark-ips.gemspec"
8686 (("git ls-files -- examples lib")
8687 "find examples lib -type f | sort")))))))
8688 (native-inputs
8689 (list ruby-hoe))
8690 (synopsis "Iterations per second enhancement for the Ruby Benchmark module")
8691 (description "Benchmark-ips enhances the Ruby Benchmark module with the
8692iterations per second count. For short snippets of code, it can automatically
8693figure out how many times to run the code to get interesting data.")
8694 (home-page "https://github.com/evanphx/benchmark-ips")
8695 (license license:expat)))
8696
8697(define-public ruby-ffi-rzmq-core
8698 (package
8699 (name "ruby-ffi-rzmq-core")
8700 (version "1.0.7")
8701 (source
8702 (origin
8703 (method url-fetch)
8704 (uri (rubygems-uri "ffi-rzmq-core" version))
8705 (sha256
8706 (base32
8707 "0amkbvljpjfnv0jpdmz71p1i3mqbhyrnhamjn566w0c01xd64hb5"))))
8708 (build-system ruby-build-system)
8709 (arguments
8710 `(#:phases
8711 (modify-phases %standard-phases
8712 (add-after 'unpack 'patch-libzmq-search-path
8713 (lambda* (#:key inputs #:allow-other-keys)
8714 (let ((zeromq (assoc-ref inputs "zeromq")))
8715 (substitute* "lib/ffi-rzmq-core/libzmq.rb"
8716 (("/usr/local/lib")
8717 (string-append zeromq "/lib"))))))
8718 (replace 'check
8719 (lambda _
8720 (invoke "rspec"))))))
8721 (native-inputs
8722 (list ruby-rspec))
8723 (inputs
8724 (list zeromq))
8725 (propagated-inputs (list ruby-ffi))
8726 (synopsis "Low-level Ruby FFI wrapper for the ZeroMQ networking library")
8727 (description "This library only provides the FFI wrapper for the ZeroMQ
8728networking library. It can be used to implement a Ruby API for the ZeroMQ
8729library.")
8730 (home-page "https://github.com/chuckremes/ffi-rzmq-core")
8731 (license license:expat)))
8732
8733(define-public ruby-ffi-rzmq
8734 (package
8735 (name "ruby-ffi-rzmq")
8736 (version "2.0.7")
8737 (source
8738 (origin
8739 (method url-fetch)
8740 (uri (rubygems-uri "ffi-rzmq" version))
8741 (sha256
8742 (base32
8743 "14a5kxfnf8l3ngyk8hgmk30z07aj1324ll8i48z67ps6pz2kpsrg"))))
8744 (build-system ruby-build-system)
8745 (arguments '(#:phases (modify-phases %standard-phases
8746 (replace 'check
8747 (lambda* (#:key tests? #:allow-other-keys)
8748 (when tests?
8749 (invoke "rspec")))))))
8750 (native-inputs
8751 (list ruby-rspec))
8752 (propagated-inputs
8753 (list ruby-ffi-rzmq-core))
8754 (synopsis "High-level Ruby wrapper for the ZeroMQ networking library")
8755 (description "This library provides a high-level API that wraps the ZeroMQ
8756networking library using the Ruby foreign function interface (FFI). It is a
8757pure Ruby wrapper, hence is compatible with any Ruby runtime that has support
8758for FFI.")
8759 (home-page "https://github.com/chuckremes/ffi-rzmq")
8760 (license license:expat)))
8761
8762(define-public ruby-sawyer
8763 (package
8764 (name "ruby-sawyer")
8765 (version "0.9.2")
8766 (source
8767 (origin
8768 (method url-fetch)
8769 (uri (rubygems-uri "sawyer" version))
8770 (sha256
8771 (base32
8772 "1jks1qjbmqm8f9kvwa81vqj39avaj9wdnzc531xm29a55bb74fps"))))
8773 (build-system ruby-build-system)
8774 (propagated-inputs
8775 (list ruby-addressable ruby-faraday))
8776 (synopsis "Experimental hypermedia agent for Ruby")
8777 (description "Sawyer is an experimental hypermedia agent for Ruby built on
8778top of Faraday.")
8779 (home-page "https://github.com/lostisland/sawyer")
8780 (license license:expat)))
8781
8782(define-public ruby-octokit
8783 (package
8784 (name "ruby-octokit")
8785 (version "6.1.1")
8786 (source (origin
8787 (method git-fetch)
8788 (uri (git-reference
8789 (url "https://github.com/octokit/octokit.rb")
8790 (commit (string-append "v" version))))
8791 (file-name (git-file-name name version))
8792 (sha256
8793 (base32
8794 "02bcmh0b0v80cis1l80lhzxw8adb69xkz6qgg4m7qcmj3y5arwmk"))))
8795 (build-system ruby-build-system)
8796 (arguments
8797 (list
8798 #:phases
8799 #~(modify-phases %standard-phases
8800 (add-after 'unpack 'remove-unnecessary-dependencies
8801 (lambda _
8802 (substitute* "spec/spec_helper.rb"
8803 (("require 'pry-byebug'") "")))))))
8804 (native-inputs
8805 (list ruby-faraday-multipart
8806 ruby-jwt
8807 ruby-mime-types
8808 ruby-multi-json
8809 ruby-netrc
8810 ruby-rbnacl
8811 ruby-rspec
8812 ruby-simplecov
8813 ruby-webmock
8814 ruby-vcr-expat))
8815 (propagated-inputs (list ruby-faraday ruby-sawyer))
8816 (synopsis "Ruby toolkit for the GitHub API")
8817 (description "Octokit wraps the GitHub API in a flat API client that
8818follows Ruby conventions and requires little knowledge of REST.")
8819 (home-page "https://github.com/octokit/octokit.rb")
8820 (license license:expat)))
8821
8822(define-public ruby-hashicorp-checkpoint
8823 (package
8824 (name "ruby-hashicorp-checkpoint")
8825 (version "0.1.5")
8826 (source (origin
8827 (method url-fetch)
8828 (uri (rubygems-uri "hashicorp-checkpoint" version))
8829 (sha256
8830 (base32
8831 "1z6mwzvd7p2wqhmk07dwrhvm0ncgqm7pxn0pr2k025rwsspp9bsd"))))
8832 (build-system ruby-build-system)
8833 (arguments
8834 (list #:tests? #f)) ;; no need to test, useless outside HashiCorp anyway
8835 (synopsis "Internal HashiCorp service to check version information")
8836 (description "This package is probably useless outside of internal
8837HashiCorp use. It is open source for disclosure and because HashiCorp's open
8838source projects must be able to link to it.")
8839 (home-page "https://github.com/hashicorp/ruby-checkpoint")
8840 (license license:mpl2.0)))
8841
8842(define-public ruby-vagrant-cloud
8843 (package
8844 (name "ruby-vagrant-cloud")
8845 (version "3.1.1")
8846 (source (origin
8847 (method git-fetch)
8848 (uri (git-reference
8849 (url "https://github.com/hashicorp/vagrant_cloud")
8850 (commit (string-append "v" version))))
8851 (file-name (git-file-name name version))
8852 (sha256
8853 (base32
8854 "0bnjd8b86lrgj5ar1l7pg5if95bv0sxa75mz7x2ikqyz6q8rmjb3"))))
8855 (build-system ruby-build-system)
8856 (arguments
8857 `(#:test-target "spec"))
8858 (native-inputs (list ruby-rspec ruby-webmock))
8859 (propagated-inputs (list ruby-excon ruby-log4r ruby-rexml))
8860 (synopsis "Vagrant Cloud API library")
8861 (description "This library provides the functionality to create, modify,
8862and delete boxes, versions, and providers on HashiCorp's Vagrant Cloud.")
8863 (home-page "https://github.com/hashicorp/vagrant_cloud")
8864 (license license:asl2.0)))
8865
8866(define-public ruby-libvirt
8867 (package
8868 (name "ruby-libvirt")
8869 (version "0.8.2")
8870 (source (origin
8871 (method url-fetch)
8872 (uri (rubygems-uri "ruby-libvirt" version))
8873 (sha256
8874 (base32
8875 "0v6vj5vs9v01zr00bflqpfczhwcyc6jdf8k2dqn42lq6d87si77d"))))
8876 (build-system ruby-build-system)
8877 (arguments
8878 (list
8879 #:tests? #f)) ; tests require access to libvirt socket
8880 (native-inputs (list pkg-config))
8881 (inputs (list libvirt))
8882 (synopsis "Ruby bindings for libvirt")
8883 (description "This package provides Ruby language binding for libvirt's
8884native C API.")
8885 (home-page "https://ruby.libvirt.org/")
8886 (license license:lgpl2.1+)))
8887
8888(define-public ruby-fog-core
8889 (package
8890 (name "ruby-fog-core")
8891 (version "2.4.0")
8892 (source (origin
8893 (method git-fetch) ; for tests
8894 (uri (git-reference
8895 (url "https://github.com/fog/fog-core")
8896 (commit (string-append "v" version))))
8897 (file-name (git-file-name name version))
8898 (sha256
8899 (base32
8900 "184vpi81az7raz98652m7d98ikabdl9di37dgal0adr76q57j03c"))))
8901 (build-system ruby-build-system)
8902 (arguments
8903 (list
8904 #:phases
8905 #~(modify-phases %standard-phases
8906 (add-before 'check 'set-home
8907 (lambda _
8908 (setenv "HOME" "/tmp"))))))
8909 (native-inputs (list ruby-minitest-stub-const))
8910 (propagated-inputs (list ruby-builder ruby-excon ruby-formatador
8911 ruby-mime-types))
8912 (synopsis "Shared classes and tests for fog providers and services")
8913 (description "@code{fog} is a Ruby cloud services library. This package
8914provides shared classes and tests for @code{fog} providers and services.")
8915 (home-page "https://github.com/fog/fog-core")
8916 (license license:expat)))
8917
8918(define-public ruby-fog-json
8919 (package
8920 (name "ruby-fog-json")
8921 (version "1.2.0")
8922 (source (origin
8923 (method git-fetch) ; for tests
8924 (uri (git-reference
8925 (url "https://github.com/fog/fog-json")
8926 (commit (string-append "v" version))))
8927 (file-name (git-file-name name version))
8928 (sha256
8929 (base32
8930 "0f4hbmhy22b1gbkzd3pnj5xvljp6bl7inc2y4fxh29nrmcn4pgb0"))))
8931 (build-system ruby-build-system)
8932 (native-inputs (list ruby-minitest))
8933 (propagated-inputs (list ruby-fog-core ruby-multi-json))
8934 (synopsis "JSON parsing tools used by @code{fog} providers")
8935 (description "This package containse the JSON parsing tools shared between
8936a number of providers in the @code{fog} gem. @code{fog} is a Ruby cloud
8937services library.")
8938 (home-page "https://github.com/fog/fog-json")
8939 (license license:expat)))
8940
8941(define-public ruby-fog-xml
8942 (package
8943 (name "ruby-fog-xml")
8944 (version "0.1.5")
8945 (source (origin
8946 (method git-fetch) ; for tests
8947 (uri (git-reference
8948 (url "https://github.com/fog/fog-xml")
8949 (commit (string-append "v" version))))
8950 (file-name (git-file-name name version))
8951 (sha256
8952 (base32
8953 "1v896k9j44axhgvwjvk1j0amy27a9fm6ynv656fxqa1m2wib6dzh"))))
8954 (build-system ruby-build-system)
8955 (arguments
8956 (list
8957 #:phases
8958 #~(modify-phases %standard-phases
8959 ;; Run tests via bundler so rake picks up the minitest gem from
8960 ;; native-inputs, not the one installed otherwise. This is required
8961 ;; since turn@0.9.7 needs minitest@4 and can not be upgraded to
8962 ;; minitest@5.
8963 (replace 'check
8964 (lambda* (#:key tests? #:allow-other-keys)
8965 (when tests?
8966 (invoke "bundle" "exec" "rake")))))))
8967 (native-inputs (list ruby-minitest ruby-pry ruby-coveralls))
8968 (propagated-inputs (list ruby-fog-core ruby-nokogiri))
8969 (synopsis "XML parsing tools used by @code{fog} providers")
8970 (description "This package containse the XML parsing tools shared between
8971a number of providers in the @code{fog} gem. @code{fog} is a Ruby cloud
8972services library.")
8973 (home-page "https://github.com/fog/fog-xml")
8974 (license license:expat)))
8975
8976(define-public ruby-fog-libvirt
8977 (package
8978 (name "ruby-fog-libvirt")
8979 (version "0.12.0")
8980 (source (origin
8981 (method git-fetch) ; for tests
8982 (uri (git-reference
8983 (url "https://github.com/fog/fog-libvirt")
8984 (commit (string-append "v" version))))
8985 (file-name (git-file-name name version))
8986 (sha256
8987 (base32
8988 "0b1qafb0l24anmr8fviwhp9vj14g0fic0mkg9n1i11h68zhqkj2v"))))
8989 (build-system ruby-build-system)
8990 (native-inputs (list ruby-minitest-stub-const ruby-mocha ruby-net-ssh
8991 ruby-netrc ruby-octokit ruby-pry ruby-rubocop
8992 ruby-shindo ruby-simplecov ruby-yard ))
8993 (propagated-inputs (list ruby-fog-core ruby-fog-json ruby-fog-xml
8994 ruby-json ruby-libvirt))
8995 (synopsis "Ruby libvirt provider, either standalone or as a module for
8996@code{fog}")
8997 (description "This library can be used as a module for @code{fog} or as
8998standalone libvirt provider. @code{fog} is a Ruby cloud services library.")
8999 (home-page "https://github.com/fog/fog-libvirt")
9000 (license license:expat)))
9001
9002(define-public ruby-pry-byebug
9003 (package
9004 (name "ruby-pry-byebug")
9005 (version "3.10.1")
9006 (source
9007 (origin
9008 (method git-fetch)
9009 (uri (git-reference
9010 (url "https://github.com/deivid-rodriguez/pry-byebug")
9011 (commit (string-append "v" version))))
9012 (file-name (git-file-name name version))
9013 (sha256
9014 (base32
9015 "0z8rhvmr9qmlbk8c8h6jbig5qd5xbdg9qihvx3g0cv1whqzbfikq"))))
9016 (build-system ruby-build-system)
9017 (arguments
9018 `(#:phases (modify-phases %standard-phases
9019 (add-after 'unpack 'sanitize-dependencies
9020 (lambda _
9021 (substitute* "Rakefile"
9022 ((".*chandler/tasks.*") ""))))
9023 (add-before 'check 'set-home
9024 (lambda _
9025 (setenv "HOME" (getcwd)))))))
9026 (native-inputs (list ruby-rubocop ruby-simplecov))
9027 (propagated-inputs (list ruby-byebug ruby-pry))
9028 (synopsis "Step-by-step debugging and stack navigation in Pry")
9029 (description "This package adds step-by-step debugging and stack
9030navigation capabilities to @code{pry}, using @code{byebug}.")
9031 (home-page "https://github.com/deivid-rodriguez/pry-byebug")
9032 (license license:expat)))
9033
9034(define-public ruby-stackprof
9035 (package
9036 (name "ruby-stackprof")
9037 (version "0.2.27")
9038 (source
9039 (origin
9040 (method url-fetch)
9041 (uri (rubygems-uri "stackprof" version))
9042 (sha256
9043 (base32 "03788mbipmihq2w7rznzvv0ks0s9z1321k1jyr6ffln8as3d5xmg"))))
9044 (build-system ruby-build-system)
9045 (arguments
9046 (list
9047 #:phases
9048 #~(modify-phases %standard-phases
9049 (add-before 'check 'patch-gemspec
9050 (lambda _
9051 (substitute* "stackprof.gemspec"
9052 (("rake-compiler.*")
9053 "rake-compiler>.freeze, [\"> 0.9\"])\n")
9054 (("mocha.*")
9055 "mocha>.freeze, [\"> 0.14\"])\n"))))
9056 (add-before 'check 'skip-dubious-test
9057 (lambda _
9058 (substitute* "test/test_stackprof.rb"
9059 ;; This unreliable test can fail with "Expected 0 to be >= 1."
9060 (("def test_(cputime)" _ name)
9061 (string-append "def skip_" name))
9062 ;; This test often fails
9063 (("def test_gc") "def skip_test_gc")
9064 ;; This test is known to fail on 32-bit systems.
9065 ;; /gnu/store/...-stackprof-0.2.27.gem
9066 (("def test_raw") "def skip_test_raw"))))
9067 (add-before 'check 'build-tests
9068 (lambda _
9069 (invoke "rake" "compile")))
9070 (replace 'check
9071 (lambda* (#:key tests? #:allow-other-keys)
9072 (when tests?
9073 (invoke "bundle" "exec" "rake" "default")))))))
9074 (native-inputs
9075 (list bundler ruby-mocha-1 ruby-rake-compiler))
9076 (synopsis "Sampling profiler for Ruby code")
9077 (description
9078 "@code{stackprof} is a fast sampling profiler for Ruby code, with cpu,
9079wallclock and object allocation samplers.")
9080 (home-page "https://github.com/tmm1/stackprof")
9081 (license license:expat)))
9082
9083(define-public ruby-bindex
9084 (package
9085 (name "ruby-bindex")
9086 (version "0.8.1")
9087 (source
9088 (origin
9089 (method url-fetch)
9090 (uri (rubygems-uri "bindex" version))
9091 (sha256
9092 (base32 "0zmirr3m02p52bzq4xgksq4pn8j641rx5d4czk68pv9rqnfwq7kv"))))
9093 (build-system ruby-build-system)
9094 (arguments
9095 (list #:test-target "default"
9096 #:phases
9097 #~(modify-phases %standard-phases
9098 (add-after 'unpack 'avoid-bundler
9099 (lambda _
9100 (substitute* "Rakefile"
9101 (("^Bundler::.*") "")))))))
9102 (native-inputs (list bundler ruby-rake-compiler))
9103 (synopsis "Bindings for Ruby exceptions")
9104 (description
9105 "This package provides bindings for any kind of Ruby exceptions.")
9106 (home-page "https://github.com/gsamokovarov/bindex")
9107 (license license:expat)))
9108
9109(define-public ruby-binding-of-caller
9110 (package
9111 (name "ruby-binding-of-caller")
9112 (version "0.8.0")
9113 (source
9114 (origin
9115 (method url-fetch)
9116 (uri (rubygems-uri "binding_of_caller" version))
9117 (sha256
9118 (base32
9119 "05syqlks7463zsy1jdfbbdravdhj9hpj5pv2m74blqpv8bq4vv5g"))))
9120 (build-system ruby-build-system)
9121 ;; Attempting to run the test suite fails with a rake deprecation error
9122 ;; (see: https://github.com/banister/binding_of_caller/issues/76).
9123 (arguments '(#:tests? #f))
9124 (propagated-inputs
9125 (list ruby-debug-inspector))
9126 (synopsis "Retrieve the binding of a method's caller")
9127 (description "The @code{binding_of_caller} module provides the
9128@code{Binding#of_caller} method. It allows accessing bindings from upper
9129frames in the call stack and can evaluate code in that context.")
9130 (home-page "https://github.com/banister/binding_of_caller")
9131 (license license:expat)))
9132
9133(define-public ruby-pry-stack-explorer
9134 (package
9135 (name "ruby-pry-stack-explorer")
9136 (version "0.5.1")
9137 (source
9138 (origin
9139 (method url-fetch)
9140 (uri (rubygems-uri "pry-stack_explorer" version))
9141 (sha256
9142 (base32
9143 "157rd2n9pfvcmmicm0xkq8z4p6famaj13syrpra6b4032qpb1wn0"))))
9144 (build-system ruby-build-system)
9145 (arguments '(#:tests? #f)) ;no test suite in gem release
9146 (propagated-inputs
9147 (list ruby-binding-of-caller ruby-pry))
9148 (synopsis "Call-stack navigation plugin for the Pry REPL")
9149 (description "@code{pry-stack_explorer} is a plugin for the Pry REPL that
9150add support to navigate the call-stack.")
9151 (home-page "https://github.com/pry/pry-stack_explorer")
9152 (license license:expat)))
9153
9154(define-public ruby-varint
9155 (package
9156 (name "ruby-varint")
9157 (version "0.1.1")
9158 (source
9159 (origin
9160 (method url-fetch)
9161 (uri (rubygems-uri "varint" version))
9162 (sha256
9163 (base32
9164 "1y0l2qc64cwsyv76ygg9bbjnk86riz2kq73kmn87gdrlmpiyrdac"))))
9165 (build-system ruby-build-system)
9166 (arguments '(#:tests? #f)) ;no test suite
9167 (synopsis "Variable length integers (varint) C extension for Ruby")
9168 (description "This package provides a small C extension to speed up
9169variable length integers (varint) in Ruby Protocol Buffers.")
9170 (home-page "https://github.com/liquidm/varint")
9171 (license license:bsd-3)))
9172
9173(define-public ruby-version-gem
9174 (package
9175 (name "ruby-version-gem")
9176 (version "1.1.3")
9177 (source (origin
9178 (method git-fetch) ;for tests
9179 (uri (git-reference
9180 (url "https://gitlab.com/oauth-xx/version_gem")
9181 (commit (string-append "v" version))))
9182 (file-name (git-file-name name version))
9183 (sha256
9184 (base32
9185 "1wazx2jr9vx5wm48fy8bccvfwhg7y2s8shfw9q81dhb4yvwk6gbf"))))
9186 (build-system ruby-build-system)
9187 (arguments
9188 (list
9189 #:phases
9190 #~(modify-phases %standard-phases
9191 (add-after 'unpack 'relax-requirements
9192 (lambda _
9193 (substitute* "Gemfile"
9194 (("^linting = .*")
9195 "linting = false\n")
9196 (("^coverage = .*")
9197 "coverage = false\n")
9198 (("^debug = .*")
9199 "debug = false\n"))
9200 (substitute* "spec/spec_helper.rb"
9201 (("^RUN_COVERAGE = .*")
9202 "RUN_COVERAGE = false\n")
9203 (("^ALL_FORMATTERS = .*")
9204 "ALL_FORMATTERS = false\n"))))
9205 (add-before 'build 'drop-signing-key-requirement
9206 (lambda _
9207 (substitute* "version_gem.gemspec"
9208 (("spec.signing_key =.*")
9209 "spec.signing_key = nil")))))))
9210 (native-inputs (list ruby-rspec ruby-rspec-block-is-expected))
9211 (synopsis "Improved @code{Version} module for Ruby")
9212 (description "VersionGem aims to provide introspection of a @code{Version}
9213module based on a @code{Version::VERSION} constant string wile not interfering
9214with gemspec parsing where the @code{VERSION} string is traditionally used.")
9215 (home-page "https://gitlab.com/oauth-xx/version_gem")
9216 (license license:expat)))
9217
9218;;; Note: Do NOT update to a newer version; this is the last commit that is
9219;;; still licensed as free software, the project having switched to the
9220;;; Hippocratic license afterward (see:
9221;;; https://github.com/vcr/vcr/issues/959).
9222(define-public ruby-vcr-expat
9223 (let ((revision "0")
9224 (commit-dont-touch "842b2bf89099dc91f2c643d0d85d1abd54eb7e85")) ;
9225 (package
9226 (name "ruby-vcr-expat")
9227 (version (git-version "5.0.0" revision commit-dont-touch))
9228 (source (origin
9229 (method git-fetch)
9230 (uri (git-reference
9231 (url "https://github.com/vcr/vcr")
9232 (commit commit-dont-touch)))
9233 (file-name (git-file-name name version))
9234 (sha256
9235 (base32
9236 "02mzifd2655kjh35bbry01n66jjcjrsw6ncqlybfkjcaqrw2zalv"))))
9237 (build-system ruby-build-system)
9238 (arguments (list #:tests? #f)) ;avoid all dependencies
9239 (home-page "https://github.com/vcr/vcr")
9240 (synopsis "HTTP interaction recorder [old version]")
9241 (description "Record your test suite's HTTP interactions and replay them
9242during future test runs for fast, deterministic, accurate tests. This is an
9243older version of VCR that is free software under the Expat license. The
9244project later switched to the Hippocratic license, which is non-free.
9245@emph{Do not use it in new free software projects}.")
9246 (license license:expat))))
9247
9248(define-public ruby-ruby-prof
9249 (package
9250 (name "ruby-ruby-prof")
9251 (version "1.4.5")
9252 (source
9253 (origin
9254 (method url-fetch)
9255 (uri (rubygems-uri "ruby-prof" version))
9256 (sha256
9257 (base32
9258 "09n13bzm1p956z318xx1v7ikqdp2i971v7p3kwf3170axz368ccy"))))
9259 (build-system ruby-build-system)
9260 (arguments
9261 ;; FIXME: Investigate why the tests fail on i686-linux.
9262 `(#:tests? ,(not (or (%current-target-system)
9263 (target-x86-32?)))
9264 #:phases
9265 (modify-phases %standard-phases
9266 ;; The LineNumbersTest test fails non-deterministically (see:
9267 ;; https://github.com/ruby-prof/ruby-prof/issues/276).
9268 (add-after 'extract-gemspec 'delete-flaky-test
9269 (lambda _
9270 (delete-file "test/line_number_test.rb")
9271 (substitute* "ruby-prof.gemspec"
9272 (("\"test/line_number_test\\.rb\"\\.freeze, ") ""))))
9273 (add-before 'check 'compile
9274 (lambda _
9275 (invoke "rake" "compile"))))))
9276 (native-inputs (list bundler ruby-minitest ruby-rake-compiler ruby-rdoc))
9277 (synopsis "Fast code profiler for Ruby")
9278 (description "RubyProf is a fast code profiler for Ruby. Its features
9279include:
9280@table @asis
9281@item Speed
9282Being a C extension, it is many times faster than the standard Ruby profiler.
9283@item Measurement Modes
9284It can measure program wall time, process time, object allocations and memory
9285usage.
9286@item Reports
9287A variety of text and cross-referenced HTML reports can be generated.
9288@item Threads
9289Profiling multiple threads simultaneously is supported.
9290@end table")
9291 (home-page "https://github.com/ruby-prof/ruby-prof")
9292 (license license:bsd-2)))
9293
9294(define-public ruby-ruby-memcheck
9295 (package
9296 (name "ruby-ruby-memcheck")
9297 (version "1.3.2")
9298 (source (origin
9299 (method git-fetch)
9300 (uri (git-reference
9301 (url "https://github.com/Shopify/ruby_memcheck")
9302 (commit version)))
9303 (file-name (git-file-name name version))
9304 (sha256
9305 (base32
9306 "0fj4j4d062sw2kx2qlj877gjbj1xbb691njr8x9nbah6615idlni"))))
9307 (build-system ruby-build-system)
9308 (arguments
9309 (list
9310 ;; The tests seem to fail on 32bit x86
9311 #:tests? (not (or (target-x86-32?)
9312 (%current-target-system)))
9313 #:phases
9314 #~(modify-phases %standard-phases
9315 (add-after 'unpack 'patch-valgrind-path
9316 (lambda* (#:key inputs #:allow-other-keys)
9317 (substitute* "lib/ruby_memcheck/configuration.rb"
9318 (("DEFAULT_VALGRIND = \"valgrind\"")
9319 (format #f "DEFAULT_VALGRIND = ~s"
9320 (search-input-file inputs "bin/valgrind"))))))
9321 (add-before 'replace-git-ls-files 'standardize-git-ls-files
9322 (lambda _
9323 (substitute* "ruby_memcheck.gemspec"
9324 (("%x\\(git ls-files -z)")
9325 "`git ls-files -z`")))))))
9326 (native-inputs (list ruby-rake-compiler ruby-rspec))
9327 (inputs (list valgrind/pinned))
9328 (propagated-inputs (list ruby-nokogiri))
9329 (synopsis "Valgrind memcheck tool for Ruby")
9330 (description "The @code{ruby_memcheck} gem provides a sane way to use
9331Valgrind's memcheck on your native extension gem, that filters out all the
9332false positives caused by Ruby not freeing all of the memory it allocates
9333during shutdown.")
9334 (home-page "https://github.com/Shopify/ruby_memcheck")
9335 (license license:expat)))
9336
9337(define-public ruby-memory-profiler
9338 (package
9339 (name "ruby-memory-profiler")
9340 (version "1.0.1")
9341 (source
9342 (origin
9343 (method git-fetch)
9344 (uri (git-reference
9345 (url "https://github.com/SamSaffron/memory_profiler")
9346 (commit (string-append "v" version))))
9347 (file-name (git-file-name name version))
9348 (sha256
9349 (base32
9350 "1z1x0rymfv45gh1y3s46w5pga5y8cvgn228jiwlnhc8hin3zig84"))))
9351 (build-system ruby-build-system)
9352 (synopsis "Memory profiling routines for Ruby")
9353 (description
9354 "This package provides memory profiling routines for Ruby.")
9355 (home-page "https://github.com/SamSaffron/memory_profiler")
9356 (license license:expat)))
9357
9358(define-public ruby-gherkin-ruby
9359 (package
9360 (name "ruby-gherkin-ruby")
9361 (version "0.3.2")
9362 (home-page "https://github.com/codegram/gherkin-ruby")
9363 (source (origin
9364 (method url-fetch)
9365 (uri (rubygems-uri "gherkin-ruby" version))
9366 (sha256
9367 (base32
9368 "18ay7yiibf4sl9n94k7mbi4k5zj2igl4j71qcmkswv69znyx0sn1"))))
9369 (build-system ruby-build-system)
9370 (synopsis "Pure Ruby Gherkin parser")
9371 (description
9372 "Gherkin-ruby is a Gherkin parser written in pure Ruby and less than
9373200 lines of code.")
9374 ;; XXX: No license information anywhere but Readme.md.
9375 (license license:expat)))
9376
9377(define-public ruby-aruba
9378 (package
9379 (name "ruby-aruba")
9380 (version "2.1.0")
9381 (source (origin
9382 (method git-fetch)
9383 (uri (git-reference
9384 (url "https://github.com/cucumber/aruba")
9385 (commit (string-append "v" version))))
9386 (file-name (git-file-name name version))
9387 (sha256
9388 (base32
9389 "1mmlgqhi6yww3z34hmrrnha2rygkv6kx0q962z31dqxjkcv23yfd"))))
9390 (build-system ruby-build-system)
9391 (arguments
9392 (list
9393 ;; XXX: Only run the "spec" target and not the "cucumber" one, as it is
9394 ;; slow and has multiple unexplained test failures.
9395 #:test-target "spec"
9396 #:phases
9397 #~(modify-phases %standard-phases
9398 (add-after 'unpack 'patch-paths
9399 (lambda _
9400 ;; This test file relies on a dynamically generated script;
9401 ;; patch its #!/bin/bash shebang.
9402 (substitute* "spec/aruba/api/commands_spec.rb"
9403 (("/bin/bash")
9404 (which "bash")))))
9405 (add-before 'check 'relax-requirements
9406 ;; Many development requirements are not actually needed.
9407 (lambda _
9408 (substitute* "aruba.gemspec"
9409 (("\\[\">= 0.18.0\", \"< 0.22.0\"]") ;simplecov
9410 "\">= 0.18.0\"")
9411 ((".*appraisal.*") "")
9412 ((".*pry.*") "")
9413 ((".*kramdown.*") "")
9414 ((".*rubocop.*") "")
9415 ((".*yard-junk.*") ""))
9416 (substitute* "Rakefile"
9417 ((".*require \"rubocop/rake_task\".*") "")
9418 ((".*require \"yard-junk/rake\".*") "")
9419 ((".*RuboCop::RakeTask.new.*") "")
9420 ((".*YardJunk::Rake.define_task.*") ""))))
9421 ;; The tests rely on the Gem being installed, so move the check
9422 ;; phase after the install phase.
9423 (delete 'check)
9424 (add-after 'install 'check
9425 (assoc-ref %standard-phases 'check))
9426 (add-before 'check 'set-GEM_PATH
9427 (lambda _
9428 (setenv "GEM_PATH" (string-append
9429 (getenv "GEM_PATH") ":"
9430 #$output "/lib/ruby/vendor_ruby"))))
9431 (add-before 'check 'set-home
9432 (lambda _
9433 (setenv "HOME" "/tmp"))))))
9434 (native-inputs
9435 (list ruby-rake-manifest
9436 ruby-rspec
9437 ruby-simplecov))
9438 (propagated-inputs
9439 (list bundler
9440 ruby-childprocess
9441 ruby-contracts
9442 ruby-cucumber
9443 ruby-rspec-expectations
9444 ruby-thor))
9445 (synopsis "Test command-line applications with Cucumber, RSpec or Minitest")
9446 (description
9447 "Aruba is an extension for Cucumber, RSpec and Minitest for testing
9448command-line applications. It supports applications written in any
9449language.")
9450 (home-page "https://github.com/cucumber/aruba")
9451 (license license:expat)))
9452
9453(define-public ruby-sys-uname
9454 (package
9455 (name "ruby-sys-uname")
9456 (version "1.2.1")
9457 (source
9458 (origin
9459 (method url-fetch)
9460 (uri (rubygems-uri "sys-uname" version))
9461 (sha256
9462 (base32
9463 "00p3wwvkdbg6pl38bchaagncv3i4fq4y0ks470imwykjanpy2ic0"))))
9464 (build-system ruby-build-system)
9465 (arguments
9466 `(#:test-target "spec"))
9467 (propagated-inputs (list ruby-ffi))
9468 (native-inputs (list ruby-rspec))
9469 (synopsis "Ruby interface for gathering system information")
9470 (description "The sys-uname library provides an interface for gathering
9471information about your current platform. It allows retrieving information
9472such as the OS name, OS version, system name, etc.")
9473 (home-page "https://github.com/djberg96/sys-uname")
9474 (license license:asl2.0)))
9475
9476(define-public ruby-cucumber
9477 (package
9478 (name "ruby-cucumber")
9479 (version "8.0.0")
9480 (source
9481 (origin
9482 (method git-fetch)
9483 (uri (git-reference
9484 (url "https://github.com/cucumber/cucumber-ruby")
9485 (commit (string-append "v" version))))
9486 (file-name (git-file-name name version))
9487 (sha256
9488 (base32
9489 "1dz880fdz6rfbh1nwwcq21v65byik46jnf9gppnrqf3p5k61i55r"))))
9490 (build-system ruby-build-system)
9491 (arguments
9492 (list #:test-target "spec"
9493 #:phases
9494 #~(modify-phases %standard-phases
9495 (add-after 'unpack 'disable-rubocop
9496 ;; Remove extraneous Lint checks.
9497 (lambda _
9498 (substitute* "Rakefile"
9499 (("require 'rubocop/rake_task'")
9500 "")
9501 (("RuboCop::RakeTask.new")
9502 ""))))
9503 (add-after 'extract-gemspec 'strip-version-requirements
9504 (lambda _
9505 (delete-file "Gemfile") ;do not use Bundler
9506 (substitute* "cucumber.gemspec"
9507 ;; The dependency specifications are often trailing
9508 ;; behind and appear stricter than necessary, since the
9509 ;; test suite passes with the newer component versions.
9510 (("(.*add_.*dependency '[_A-Za-z0-9-]+')(.*)"
9511 _ stripped rest)
9512 (string-append stripped " # " rest "\n")))))
9513 (add-before 'check 'set-home
9514 (lambda _
9515 (setenv "HOME" (getcwd)))))))
9516 (propagated-inputs
9517 (list ruby-builder
9518 ruby-cucumber-ci-environment
9519 ruby-cucumber-core
9520 ruby-cucumber-gherkin
9521 ruby-cucumber-html-formatter
9522 ruby-cucumber-messages
9523 ruby-cucumber-wire
9524 ruby-diff-lcs
9525 ruby-mime-types
9526 ruby-multi-test
9527 ruby-sys-uname))
9528 (native-inputs
9529 (list ruby-cucumber-compatibility-kit
9530 ruby-nokogiri
9531 ruby-pry
9532 ruby-webrick
9533 ruby-rspec))
9534 (synopsis "Describe automated tests in plain language")
9535 (description "Cucumber is a tool for running automated tests written in
9536plain language. It's designed to support a Behaviour Driven Development (BDD)
9537software development workflow.")
9538 (home-page "https://cucumber.io/")
9539 (license license:expat)))
9540
9541(define ruby-cucumber-without-tests
9542 (package (inherit ruby-cucumber)
9543 (arguments
9544 '(#:tests? #f))
9545 (native-inputs
9546 '())))
9547
9548(define-public ruby-covered
9549 (package
9550 (name "ruby-covered")
9551 (version "0.20.2")
9552 (source (origin
9553 (method url-fetch)
9554 (uri (rubygems-uri "covered" version))
9555 (sha256
9556 (base32
9557 "04fpj493jn23ah5fq93956a5h2xj3z0hrckvc26fxcfsg5pbwypa"))))
9558 (build-system ruby-build-system)
9559 (arguments
9560 ;; XXX: The test suite is disabled to avoid dependency cycles with
9561 ;; ruby-samovar, through ruby-bake.
9562 (list #:tests? #f
9563 #:phases
9564 #~(modify-phases %standard-phases
9565 (add-after 'extract-gemspec 'relax-requirements
9566 (lambda _
9567 (substitute* ".gemspec"
9568 (("\">= 3.2\"")
9569 "\">= 2.7\"")))))))
9570 (propagated-inputs (list ruby-console ruby-msgpack))
9571 (synopsis "Modern approach to code coverage in Ruby")
9572 (description "Covered uses modern Ruby features to generate comprehensive
9573coverage, including support for templates which are compiled into Ruby. It
9574has the following features:
9575@itemize
9576@item
9577Incremental coverage -- if you run your full test suite, and the run a subset,
9578it will still report the correct coverage - so you can incrementally work on
9579improving coverage.
9580@item
9581Integration with RSpec, Minitest, Travis & Coveralls - no need to configure
9582anything - out of the box support for these platforms.
9583@item
9584It supports coverage of views -- templates compiled to Ruby code can be
9585tracked for coverage reporting.
9586@end itemize")
9587 (home-page "https://github.com/ioquatix/covered")
9588 (license license:expat)))
9589
9590(define-public ruby-coveralls
9591 (package
9592 (name "ruby-coveralls")
9593 (version "0.8.23")
9594 (source
9595 (origin
9596 (method url-fetch)
9597 (uri (rubygems-uri "coveralls" version))
9598 (sha256
9599 (base32
9600 "1mv4fn5lfxhy7bc2f1lpnc5yp9mvv97az77j4r7jgrxcqwn8fqxc"))))
9601 (build-system ruby-build-system)
9602 (arguments
9603 (list #:test-target "default"
9604 #:phases #~(modify-phases %standard-phases
9605 (add-after 'extract-gemspec 'disable-problematic-tests
9606 (lambda _
9607 (substitute* "spec/coveralls/coveralls_spec.rb"
9608 ;; This test fails for unknown reasons (perhaps
9609 ;; networking); skip it.
9610 (("it \"sends existing test results\"" all)
9611 (string-append "x" all)))
9612 ;; 3 simplecov tests fail, perhaps due to using a
9613 ;; newer simplecov version.
9614 (delete-file "spec/coveralls/simplecov_spec.rb")
9615 (substitute* "coveralls-ruby.gemspec"
9616 (("\"spec/coveralls/simplecov_spec.rb\".freeze, ")
9617 ""))))
9618 (add-after 'extract-gemspec 'relax-requirements
9619 (lambda _
9620 (substitute* "coveralls-ruby.gemspec"
9621 (("%q<simplecov>.freeze, \\[\"~> 0.16.1\"]")
9622 "%q<simplecov>.freeze")))))))
9623 (native-inputs
9624 (list git-minimal/pinned
9625 ruby-pry
9626 ruby-rspec
9627 ruby-truthy
9628 ruby-vcr-expat
9629 ruby-webmock))
9630 (propagated-inputs
9631 (list ruby-json
9632 ruby-term-ansicolor
9633 ruby-thor
9634 ruby-tins
9635 ruby-simplecov))
9636 (synopsis "Ruby implementation of the Coveralls API")
9637 (description "This package provides a Ruby implementation of the Coveralls
9638API.")
9639 (home-page "https://coveralls.io")
9640 (license license:expat)))
9641
9642(define-public ruby-skiptrace
9643 (package
9644 (name "ruby-skiptrace")
9645 (version "0.8.1")
9646 (source
9647 (origin
9648 (method url-fetch)
9649 (uri (rubygems-uri "skiptrace" version))
9650 (sha256
9651 (base32
9652 "1qpjy6pqd8hx4w7bai64jsr10mwbpnnb65wcbssyqcnalimi1s12"))))
9653 (build-system ruby-build-system)
9654 (arguments
9655 (list
9656 #:phases
9657 #~(modify-phases %standard-phases
9658 (add-after 'unpack 'remove-git-from-gemspec
9659 (lambda _
9660 (substitute* "skiptrace.gemspec"
9661 (("`git ls-files -z`") "`find . -type f -print0 |sort -z`"))))
9662 (replace 'check
9663 (lambda* (#:key tests? #:allow-other-keys)
9664 (when tests?
9665 (invoke "bundle" "exec" "rake" "default")))))))
9666 (native-inputs
9667 (list bundler ruby-rake-compiler))
9668 (synopsis "Provides access for bindings relating to Ruby exceptions")
9669 (description
9670 "@code{skiptrace} provides a way to access the bindings that relate to
9671exceptions in Ruby, providing more information about the context in which the
9672exception occurred.")
9673 (home-page "https://github.com/gsamokovarov/skiptrace")
9674 (license license:expat)))
9675
9676(define-public ruby-bio-logger
9677 (package
9678 (name "ruby-bio-logger")
9679 (version "1.0.1")
9680 (source
9681 (origin
9682 (method url-fetch)
9683 (uri (rubygems-uri "bio-logger" version))
9684 (sha256
9685 (base32
9686 "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
9687 (build-system ruby-build-system)
9688 (arguments
9689 `(#:tests? #f)) ; rake errors, missing shoulda
9690 (propagated-inputs
9691 (list ruby-log4r))
9692 (synopsis "Log4r wrapper for Ruby")
9693 (description "Bio-logger is a wrapper around Log4r adding extra logging
9694features such as filtering and fine grained logging.")
9695 (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
9696 (license license:expat)))
9697
9698(define-public ruby-yajl-ruby
9699 (package
9700 (name "ruby-yajl-ruby")
9701 (version "1.4.3")
9702 (source
9703 (origin
9704 (method url-fetch)
9705 (uri (rubygems-uri "yajl-ruby" version))
9706 (sha256
9707 (base32
9708 "1lni4jbyrlph7sz8y49q84pb0sbj82lgwvnjnsiv01xf26f4v5wc"))))
9709 (build-system ruby-build-system)
9710 (arguments
9711 (list
9712 #:test-target "spec"
9713 #:phases
9714 #~(modify-phases %standard-phases
9715 (add-before 'check 'patch-test-to-update-load-path
9716 (lambda _
9717 (substitute* "spec/parsing/large_number_spec.rb"
9718 (("require \"yajl\"")
9719 "$LOAD_PATH << 'lib'; require 'yajl'")))))))
9720 (native-inputs
9721 (list ruby-rake-compiler ruby-rspec))
9722 (synopsis "Streaming JSON parsing and encoding library for Ruby")
9723 (description
9724 "Ruby C bindings to the Yajl JSON stream-based parser library. The API
9725is compatible with the JSON gem, so yajl-ruby can act as a drop in
9726replacement.
9727
9728A modified copy of yajl is used, and included in the package.")
9729 (home-page "https://github.com/brianmario/yajl-ruby")
9730 (license (list license:expat ; Ruby code, yajl_ext.c and yajl_ext.h
9731 license:bsd-3)))) ; Included, modified copy of yajl
9732
9733(define-public ruby-yard
9734 (package
9735 (name "ruby-yard")
9736 (version "0.9.34")
9737 (source
9738 (origin
9739 (method git-fetch)
9740 ;; Tests do not pass if we build from the distributed gem.
9741 (uri (git-reference
9742 (url "https://github.com/lsegal/yard")
9743 (commit (string-append "v" version))))
9744 (file-name (git-file-name name version))
9745 (sha256
9746 (base32
9747 "10jq0hyzyy0d6l63jxld32g36fhrclkb3rwnyp47igcik73kbagb"))))
9748 (build-system ruby-build-system)
9749 (arguments
9750 (list
9751 #:test-target "default"
9752 #:phases
9753 #~(modify-phases %standard-phases
9754 (add-after 'unpack 'do-not-set-date-in-gemspec
9755 ;; Fix a reproducibility issue (see:
9756 ;; https://github.com/lsegal/yard/issues/1343).
9757 (lambda _
9758 (substitute* "yard.gemspec"
9759 ((".*s\\.date.*") ""))))
9760 (add-before 'check 'prepare-for-tests
9761 (lambda* (#:key tests? #:allow-other-keys)
9762 (when tests?
9763 (substitute* "Rakefile"
9764 ((".*[Ss]amus.*") ""))
9765 ;; Delete the Gemfile to avoid errors relating to it.
9766 (delete-file "Gemfile")
9767 ;; $HOME needs to be set to somewhere writeable for tests to
9768 ;; run.
9769 (setenv "HOME" "/tmp")
9770 ;; This test fails
9771 ;; #<File (class)> received :open with unexpected arguments
9772 ;; expected: ("gem1.gem", "rb")
9773 ;; got: ("/gnu/store/.../lib/ruby/vendor_ruby/specifications/asciidoctor-2.0.18.gemspec", "r:UTF-8:-")
9774 (substitute* "spec/cli/diff_spec.rb"
9775 (("it \"searches for .gem file")
9776 "xit \"searches for .gem file"))))))))
9777 (native-inputs
9778 (list ruby-rspec
9779 ruby-rack
9780 ruby-redcloth
9781 ruby-webrick
9782 ruby-asciidoctor/minimal))
9783 (synopsis "Documentation generation tool for Ruby")
9784 (description "YARD is a documentation generation tool for the Ruby
9785programming language. It enables the user to generate consistent, usable
9786documentation that can be exported to a number of formats very easily, and
9787also supports extending for custom Ruby constructs such as custom class level
9788definitions.")
9789 (home-page "https://yardoc.org")
9790 (license license:expat)))
9791
9792(define-public ruby-yard/minimal
9793 (hidden-package
9794 (package
9795 (inherit ruby-yard)
9796 (arguments
9797 (ensure-keyword-arguments
9798 (package-arguments ruby-yard)
9799 (list #:tests? #f)))
9800 (native-inputs '()))))
9801
9802(define-public ruby-spectroscope
9803 (package
9804 (name "ruby-spectroscope")
9805 (version "0.1.0")
9806 (source
9807 (origin
9808 (method url-fetch)
9809 (uri (rubygems-uri "spectroscope" version))
9810 (sha256
9811 (base32
9812 "0iiid9sm110qhx0i1zkds710cvsnmhd308wbqa7slkzbq2akrb3y"))))
9813 (build-system ruby-build-system)
9814 (arguments
9815 `(#:phases
9816 (modify-phases %standard-phases
9817 (replace 'check
9818 (lambda _
9819 (with-output-to-file ".test"
9820 (lambda _
9821 (display
9822 "\
9823require 'ae/should'
9824require 'rspec'
9825
9826include RSpec
9827
9828Test.run :default do |run|
9829 run.files << 'spec/*_spec.rb'
9830end")))
9831 (invoke "ruby" "-Ilib" "-rrubytest" ".test"))))))
9832 (native-inputs
9833 (list ruby-ae ruby-rspec))
9834 (propagated-inputs
9835 (list ruby-rubytest))
9836 (synopsis "Behavior-Driven Development (BDD) framework built on RubyTest")
9837 (description "Spectroscope is a Behavior-Driven Development (BDD)
9838framework built on RubyTest, designed to emulate RSpec in most respects. It
9839is assertion framework independent so any number of assertion systems can be
9840used, such as Assay or AE.")
9841 (home-page "http://rubyworks.github.com/spectroscope/")
9842 (license license:bsd-2)))
9843
9844(define-public ruby-tomparse
9845 (package
9846 (name "ruby-tomparse")
9847 (version "0.4.2")
9848 (source
9849 (origin
9850 (method url-fetch)
9851 (uri (rubygems-uri "tomparse" version))
9852 (sha256
9853 (base32
9854 "06xakk41f1kgj6j1ahkwn4r6cvidixvm4phhlrvmwb7c3pr8ygc8"))))
9855 (build-system ruby-build-system)
9856 ;; TODO: Tests require citron and rulebow, not yet packaged.
9857 (arguments '(#:tests? #f))
9858 (synopsis "TomDoc parser for Ruby")
9859 (description "TomParse is a TomDoc parser for Ruby. It takes a code
9860comment as input and parses it into a convenient object-oriented structure in
9861accordance with the TomDoc standard. See
9862@url{https://github.com/mojombo/tomdoc, TomDoc} for more information about the
9863TomDoc format.")
9864 (home-page "http://rubyworks.github.com/tomparse/")
9865 (license license:bsd-2)))
9866
9867(define-public ruby-yard-tomdoc
9868 (package
9869 (name "ruby-yard-tomdoc")
9870 (version "0.7.1")
9871 (source
9872 (origin
9873 (method url-fetch)
9874 (uri (rubygems-uri "yard-tomdoc" version))
9875 (sha256
9876 (base32
9877 "1725gs8b8klpwhrvnf2wwp7dw3zxs9vz2la983l2d8c4r4fn1j2z"))))
9878 (build-system ruby-build-system)
9879 (arguments
9880 `(#:phases (modify-phases %standard-phases
9881 (replace 'check
9882 (lambda _
9883 (invoke "rubytest" "-Ilib" "-Itest" "test/"))))))
9884 (native-inputs
9885 (list ruby-rubytest-cli ruby-spectroscope ruby-ae))
9886 (propagated-inputs
9887 (list ruby-tomparse ruby-yard))
9888 (synopsis "TomDoc syntax for YARD")
9889 (description "This module adds support for the TomDoc documentation format
9890to YARD, a documentation generation tool for Ruby.")
9891 (home-page "http://rubyworks.github.com/yard-tomdoc/")
9892 (license license:expat)))
9893
9894(define-public ruby-clap
9895 (package
9896 (name "ruby-clap")
9897 (version "1.0.0")
9898 (source (origin
9899 (method url-fetch)
9900 (uri (rubygems-uri "clap" version))
9901 (sha256
9902 (base32
9903 "190m05k3pca72c1h8k0fnvby15m303zi0lpb9c478ad19wqawa5q"))))
9904 (build-system ruby-build-system)
9905 ;; Clap needs cutest for running tests, but cutest needs clap.
9906 (arguments `(#:tests? #f))
9907 (synopsis "Command line argument parsing for simple applications")
9908 (description
9909 "Clap provides command line argument parsing features. It covers the
9910simple case of executing code based on the flags or parameters passed.")
9911 (home-page "https://github.com/djanowski/cutest")
9912 (license license:expat)))
9913
9914(define-public ruby-cutest
9915 (package
9916 (name "ruby-cutest")
9917 (version "1.2.2")
9918 (source (origin
9919 (method url-fetch)
9920 (uri (rubygems-uri "cutest" version))
9921 (sha256
9922 (base32
9923 "1mldhjn62g53vx4gq2qdqg2lgjvyrqxa8d0khf8347bbfgi16d32"))))
9924 (build-system ruby-build-system)
9925 (propagated-inputs
9926 (list ruby-clap))
9927 (synopsis "Run tests in separate processes")
9928 (description
9929 "Cutest runs tests in separate processes to avoid shared state.")
9930 (home-page "https://github.com/djanowski/cutest")
9931 (license license:expat)))
9932
9933(define-public ruby-pygmentize
9934 (package
9935 (name "ruby-pygmentize")
9936 (version "0.0.3")
9937 (source (origin
9938 (method url-fetch)
9939 (uri (rubygems-uri "pygmentize" version))
9940 (sha256
9941 (base32
9942 "1pxryhkiwvsz6xzda3bvqwz5z8ggzl1cdglf8qbcf4bb7akirdpb"))))
9943 (build-system ruby-build-system)
9944 (arguments
9945 `(#:phases
9946 (modify-phases %standard-phases
9947 (add-after 'unpack 'fix-pygmentize-path
9948 (lambda _
9949 (substitute* "lib/pygmentize.rb"
9950 (("\"/usr/bin/env python.*")
9951 (string-append "\"" (which "pygmentize") "\"\n")))))
9952 (add-after 'build 'do-not-use-vendor-directory
9953 (lambda _
9954 ;; Remove bundled pygments sources
9955 ;; FIXME: ruby-build-system does not support snippets.
9956 (delete-file-recursively "vendor")
9957 (substitute* "pygmentize.gemspec"
9958 (("\"vendor/\\*\\*/\\*\",") "")))))))
9959 (inputs
9960 `(("pygments" ,python-pygments)))
9961 (native-inputs
9962 (list ruby-cutest ruby-nokogiri))
9963 (synopsis "Thin Ruby wrapper around pygmentize")
9964 (description
9965 "Pygmentize provides a simple way to call pygmentize from within a Ruby
9966application.")
9967 (home-page "https://github.com/djanowski/pygmentize")
9968 (license license:expat)))
9969
9970(define-public ruby-event-emitter
9971 (package
9972 (name "ruby-event-emitter")
9973 (version "0.2.6")
9974 (source (origin
9975 (method url-fetch)
9976 (uri (rubygems-uri "event_emitter" version))
9977 (sha256
9978 (base32
9979 "148k9qv8102l3m6klc24dwip79f9y4bjr5z19dckd7ffbjyrf9n7"))))
9980 (build-system ruby-build-system)
9981 (arguments
9982 (list #:phases #~(modify-phases %standard-phases
9983 (add-after 'extract-gemspec 'relax-requirements
9984 (lambda _
9985 (substitute* "event_emitter.gemspec"
9986 (("~> 1.15") ">= 1.15")))))))
9987 (synopsis "Ruby port of EventEmitter from Node.js")
9988 (description
9989 "This package provides a Ruby port of EventEmitter from Node.js.")
9990 (home-page "https://shokai.github.io/event_emitter/")
9991 (license license:expat)))
9992
9993(define-public ruby-eventmachine
9994 (package
9995 (name "ruby-eventmachine")
9996 (version "1.2.7")
9997 (source
9998 (origin
9999 (method url-fetch)
10000 (uri (rubygems-uri "eventmachine" version))
10001 (sha256
10002 (base32
10003 "0wh9aqb0skz80fhfn66lbpr4f86ya2z5rx6gm5xlfhd05bj1ch4r"))))
10004 (build-system ruby-build-system)
10005 (arguments
10006 '(#:tests? #f)) ; test suite tries to connect to google.com
10007 (inputs
10008 (list openssl))
10009 (native-inputs
10010 (list ruby-rake-compiler))
10011 (synopsis "Single-threaded network event framework for Ruby")
10012 (description
10013 "EventMachine implements a single-threaded engine for arbitrary network
10014communications. EventMachine wraps all interactions with sockets, allowing
10015programs to concentrate on the implementation of network protocols. It can be
10016used to create both network servers and clients.")
10017 ;; The ‘official’ rubyeventmachine.com domain is now registrar-squatted.
10018 (home-page "https://github.com/eventmachine/eventmachine")
10019 (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT
10020
10021(define-public ruby-ruby-engine
10022 (package
10023 (name "ruby-ruby-engine")
10024 (version "2.0.0")
10025 (source
10026 (origin
10027 (method url-fetch)
10028 (uri (rubygems-uri "ruby_engine" version))
10029 (sha256
10030 (base32
10031 "0wqdcv8gxybp1y7kjhh18g3r9dczacs62d4ahcvyhz32bih8c9fm"))))
10032 (build-system ruby-build-system)
10033 (arguments
10034 `(#:phases
10035 (modify-phases %standard-phases
10036 (add-after 'extract-gemspec 'clean-up
10037 (lambda _
10038 (delete-file "Gemfile.lock")
10039 (substitute* "ruby_engine.gemspec"
10040 ;; Remove unnecessary imports that would entail further
10041 ;; dependencies.
10042 ((".*<rdoc.*") "")
10043 ((".*<rubygems-tasks.*") "")
10044 ;; Remove extraneous .gem file
10045 (("\"pkg/ruby_engine-[0-9.]+\\.gem\".freeze, ") "")
10046 (("\"Gemfile.lock\".freeze, ") "")
10047 ;; Soften rake dependency
10048 (("%q<rake>.freeze, \\[\"~> 10.0\"\\]")
10049 "%q<rake>.freeze, [\">= 10.0\"]")
10050 ;; Soften the rspec dependency
10051 (("%q<rspec>.freeze, \\[\"~> 2.4\"\\]")
10052 "%q<rspec>.freeze, [\">= 2.4\"]"))
10053 (substitute* "Rakefile"
10054 (("require 'rubygems/tasks'") "")
10055 (("Gem::Tasks.new") ""))
10056 ;; Remove extraneous .gem file that otherwise gets installed.
10057 (delete-file-recursively "pkg"))))))
10058 (native-inputs
10059 (list bundler ruby-rake ruby-rspec))
10060 (synopsis "Simplifies checking for Ruby implementation")
10061 (description
10062 "@code{ruby_engine} provides an RubyEngine class that can be used to
10063check which implementation of Ruby is in use. It can provide the interpreter
10064name and provides query methods such as @code{RubyEngine.mri?}.")
10065 (home-page "https://github.com/janlelis/ruby_engine")
10066 (license license:expat)))
10067
10068(define-public ruby-mimemagic
10069 (package
10070 (name "ruby-mimemagic")
10071 (version "0.3.3")
10072 (source
10073 (origin
10074 (method url-fetch)
10075 (uri (rubygems-uri "mimemagic" version))
10076 (sha256
10077 (base32 "04cp5sfbh1qx82yqxn0q75c7hlcx8y1dr5g3kyzwm4mx6wi2gifw"))))
10078 (build-system ruby-build-system)
10079 (arguments
10080 '(#:phases
10081 (modify-phases %standard-phases
10082 ;; This phase breaks the tests, as it patches some of the test data.
10083 (delete 'patch-source-shebangs))))
10084 (native-inputs
10085 (list ruby-bacon))
10086 (synopsis "Ruby library for MIME detection by extension or content")
10087 (description
10088 "@acronym{MIME, Multipurpose Internet Mail Extensions} detection by
10089extension or content, using the freedesktop.org.xml shared-mime-info
10090database.")
10091 (home-page "https://github.com/minad/mimemagic")
10092 (license license:expat)))
10093
10094(define-public ruby-mini-mime
10095 (package
10096 (name "ruby-mini-mime")
10097 (version "1.1.2")
10098 (source
10099 (origin
10100 (method url-fetch)
10101 (uri (rubygems-uri "mini_mime" version))
10102 (sha256
10103 (base32
10104 "0lbim375gw2dk6383qirz13hgdmxlan0vc5da2l072j3qw6fqjm5"))))
10105 (build-system ruby-build-system)
10106 (synopsis "Lightweight mime type lookup toy")
10107 (description "This package provides a lightweight mime type lookup toy.")
10108 (home-page "https://github.com/discourse/mini_mime")
10109 (license license:expat)))
10110
10111(define-public ruby-fileutils
10112 (package
10113 (name "ruby-fileutils")
10114 (version "1.7.0")
10115 (source (origin
10116 (method git-fetch) ;for tests
10117 (uri (git-reference
10118 (url "https://github.com/ruby/fileutils")
10119 (commit (string-append "v" version))))
10120 (file-name (git-file-name name version))
10121 (sha256
10122 (base32
10123 "0m68gaqclnc2wflilmrnr19kky2gr6fjf6k3yq02sf9scs281kid"))))
10124 (build-system ruby-build-system)
10125 (arguments
10126 (list
10127 #:phases
10128 #~(modify-phases %standard-phases
10129 (add-before 'check 'disable-problematic-tests
10130 (lambda _
10131 (substitute* "test/fileutils/test_fileutils.rb"
10132 ;; The 'test_chown' tests depends on /etc/groups, which
10133 ;; doesn't exist in the build environment.
10134 (("def test_chown.*" all)
10135 (string-append all " return true\n"))
10136 ;; The 'test_cp_r_dev' expects a RuntimeError to be raised
10137 ;; when copying a char device to a directory, but this is not
10138 ;; triggered in the build environment, for reasons unknown.
10139 (("def test_cp_r_dev.*" all)
10140 (string-append all " return true\n"))))))))
10141 (synopsis "Ruby utility library to manipulate files")
10142 (description "The FileUtils Ruby library includes Several file utility
10143methods for copying, moving, removing, etc.")
10144 (home-page "https://github.com/ruby/fileutils")
10145 (license license:bsd-2)))
10146
10147(define-public ruby-sqlite3
10148 (package
10149 (name "ruby-sqlite3")
10150 (version "2.5.0")
10151 (source
10152 (origin
10153 (method git-fetch) ;for tests
10154 (uri (git-reference
10155 (url "https://github.com/sparklemotion/sqlite3-ruby")
10156 (commit (string-append "v" version))))
10157 (file-name (git-file-name name version))
10158 (sha256
10159 (base32
10160 "1fanv7bv5lszd5g752yy8nmpjhrl9gqwbbkbis2xbh83y96f2zfm"))))
10161 (build-system ruby-build-system)
10162 (arguments
10163 (list
10164 #:gem-flags #~(list "--" "--enable-system-libraries")
10165 #:modules '((guix build ruby-build-system)
10166 (guix build utils)
10167 (ice-9 rdelim)
10168 (ice-9 textual-ports))
10169 #:phases
10170 #~(modify-phases %standard-phases
10171 (add-after 'unpack 'relax-requirements
10172 (lambda _
10173 ;; Don't try to format C code, remove rubocop-rake.
10174 (delete-file "rakelib/format.rake")
10175 ;; Don't try to run valgrind-like memory tests.
10176 ;; This cuts all lines after Minitest::TestTask.create
10177 (with-atomic-file-replacement
10178 "rakelib/test.rake"
10179 (lambda (in out)
10180 (let loop ()
10181 (let ((line (read-line in)))
10182 (cond
10183 ((eof-object? line) #f)
10184 ((string-prefix? "Minitest::TestTask.create" line) #f)
10185 (else
10186 (format out "~a~%" line)
10187 (loop)))))))))
10188 (delete 'check)
10189 (add-after 'install 'check
10190 (lambda* (#:key tests? #:allow-other-keys)
10191 (when tests?
10192 (setenv "GEM_PATH"
10193 (string-append (getenv "GEM_PATH") ":"
10194 #$output "/lib/ruby/vendor_ruby"))
10195 (invoke "rake" "test")))))))
10196 (propagated-inputs
10197 (list ruby-mini-portile-2))
10198 (inputs
10199 (list sqlite))
10200 (native-inputs
10201 (list ruby-hoe
10202 ruby-rake-compiler
10203 ruby-rake-compiler-dock))
10204 (synopsis "Interface with SQLite3 databases")
10205 (description
10206 "This module allows Ruby programs to interface with the SQLite3 database
10207engine.")
10208 (home-page
10209 "https://github.com/sparklemotion/sqlite3-ruby")
10210 (license license:bsd-3)))
10211
10212(define-public ruby-sqlite3-1.4
10213 (package/inherit ruby-sqlite3
10214 (name "ruby-sqlite3")
10215 (version "1.4.4")
10216 (source
10217 (origin
10218 (method git-fetch) ;for tests
10219 (uri (git-reference
10220 (url "https://github.com/sparklemotion/sqlite3-ruby")
10221 (commit (string-append "v" version))))
10222 (file-name (git-file-name name version))
10223 (sha256
10224 (base32
10225 "0ngirjbai3f5ki2sf6m4gxbbrjpr3b35bz5nrz1cifyw1jk6a6sr"))))
10226 (arguments
10227 (substitute-keyword-arguments (package-arguments ruby-sqlite3)
10228 ((#:tests? #t #t) #f)
10229 ((#:phases phases #~%standard-phases)
10230 #~(modify-phases #$phases
10231 (delete 'relax-requirements)
10232 (add-after 'unpack 'fix-version
10233 (lambda _
10234 (substitute* "sqlite3.gemspec"
10235 (("s\\.version = .*")
10236 (format #f "s.version = ~s~%" #$version)))))))))))
10237
10238(define-public ruby-shoulda-context
10239 (package
10240 (name "ruby-shoulda-context")
10241 (version "2.0.0")
10242 (source
10243 (origin
10244 (method url-fetch)
10245 (uri (rubygems-uri "shoulda-context" version))
10246 (sha256
10247 (base32
10248 "0d1clcp92jv8756h09kbc55qiqncn666alx0s83za06q5hs4bpvs"))))
10249 (build-system ruby-build-system)
10250 (arguments
10251 `(#:phases
10252 (modify-phases %standard-phases
10253 (replace 'check
10254 (lambda* (#:key tests? #:allow-other-keys)
10255 (when tests?
10256 ;; Do not run tests to avoid circular dependence with rails.
10257 ;; Instead just import the library to test.
10258 (invoke "ruby" "-Ilib" "-r" "shoulda-context")))))))
10259 (synopsis "Test::Unit context framework extracted from Shoulda")
10260 (description
10261 "@code{shoulda-context} is the context framework extracted from Shoulda.
10262Instead of writing Ruby methods with lots_of_underscores, shoulda-context adds
10263context, setup, and should blocks combine to produce natural test method
10264names.")
10265 (home-page "https://github.com/thoughtbot/shoulda-context")
10266 (license license:expat)))
10267
10268(define-public ruby-shoulda-matchers
10269 (package
10270 (name "ruby-shoulda-matchers")
10271 (version "5.3.0")
10272 (source
10273 (origin
10274 (method url-fetch)
10275 (uri (rubygems-uri "shoulda-matchers" version))
10276 (sha256
10277 (base32
10278 "11igjgh16dl5pwqizdmclzlzpv7mbmnh8fx7m9b5kfsjhwxqdfpn"))))
10279 (build-system ruby-build-system)
10280 (arguments
10281 `(#:phases
10282 (modify-phases %standard-phases
10283 (replace 'check
10284 (lambda* (#:key tests? #:allow-other-keys)
10285 (when tests?
10286 ;; Do not run tests to avoid circular dependence with rails. Instead
10287 ;; just import the library to test.
10288 (invoke "ruby" "-Ilib" "-r" "shoulda-matchers")))))))
10289 (propagated-inputs
10290 (list ruby-activesupport))
10291 (synopsis "Collection of testing matchers extracted from Shoulda")
10292 (description
10293 "Shoulda Matchers provides RSpec- and Minitest-compatible one-liners that
10294test common Rails functionality. These tests would otherwise be much longer,
10295more complex, and error-prone.")
10296 (home-page "https://github.com/thoughtbot/shoulda-matchers")
10297 (license license:expat)))
10298
10299(define-public ruby-shoulda
10300 (package
10301 (name "ruby-shoulda")
10302 (version "4.0.0")
10303 (source
10304 (origin
10305 (method url-fetch)
10306 (uri (rubygems-uri "shoulda" version))
10307 (sha256
10308 (base32
10309 "02lww34kn1g6lidp4rx4rs6bqvirrzxlfw1y2wm11aif8f622xz6"))))
10310 (build-system ruby-build-system)
10311 (arguments
10312 `(#:phases
10313 (modify-phases %standard-phases
10314 (replace 'check
10315 (lambda* (#:key tests? #:allow-other-keys)
10316 (when tests?
10317 ;; Don't run tests to avoid circular dependence with rails.
10318 ;; Instead just import the library to test.
10319 (invoke "ruby" "-Ilib" "-r" "shoulda"))))
10320 (add-after 'extract-gemspec 'relax-requirements
10321 (lambda _
10322 (substitute* "shoulda.gemspec"
10323 ;; An older version of shoulda-matchers (4.0) is used, out of
10324 ;; little maintenance rather than because of an real
10325 ;; incompatibility (see:
10326 ;; https://github.com/thoughtbot/shoulda/issues/275).
10327 ((", \\[\"~> 4.0\"]") "")))))))
10328 (propagated-inputs
10329 (list ruby-shoulda-context ruby-shoulda-matchers))
10330 (synopsis "Context framework and matchers for testing")
10331 (description
10332 "@code{shoulda} is a meta-package combining @code{shoulda-context} and
10333@code{shoulda-matchers} providing tools for writing tests.")
10334 (home-page "https://github.com/thoughtbot/shoulda")
10335 (license license:expat)))
10336
10337(define-public ruby-unf
10338 (package
10339 (name "ruby-unf")
10340 (version "0.1.4")
10341 (source
10342 (origin
10343 (method url-fetch)
10344 (uri (rubygems-uri "unf" version))
10345 (sha256
10346 (base32
10347 "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9"))))
10348 (build-system ruby-build-system)
10349 (arguments
10350 `(#:phases
10351 (modify-phases %standard-phases
10352 (add-before 'check 'add-dependency-to-bundler
10353 (lambda _
10354 ;; test-unit is required but not provided by the bundler
10355 ;; environment. This is fixed in the upstream repository but fix
10356 ;; has not been released.
10357 (substitute* "Gemfile"
10358 (("^gemspec") "gem 'test-unit'\ngemspec")))))))
10359 (propagated-inputs
10360 (list ruby-unf-ext))
10361 (native-inputs
10362 (list ruby-shoulda bundler ruby-test-unit))
10363 (synopsis "Unicode Normalization Form support to Ruby and JRuby")
10364 (description
10365 "@code{ruby-unf} is a wrapper library to bring Unicode Normalization Form
10366support to both Ruby and JRuby. It uses @code{unf_ext} on CRuby and
10367@code{java.text.Normalizer} on JRuby.")
10368 (home-page "https://github.com/knu/ruby-unf")
10369 (license license:bsd-2)))
10370
10371(define-public ruby-warden
10372 (package
10373 (name "ruby-warden")
10374 (version "1.2.8")
10375 (source
10376 (origin
10377 (method url-fetch)
10378 (uri (rubygems-uri "warden" version))
10379 (sha256
10380 (base32
10381 "1fr9n9i9r82xb6i61fdw4xgc7zjv7fsdrr4k0njchy87iw9fl454"))))
10382 (build-system ruby-build-system)
10383 (arguments
10384 '(#:tests? #f)) ; No included tests
10385 (propagated-inputs
10386 (list ruby-rack))
10387 (synopsis "Rack middleware providing authentication")
10388 (description
10389 "Warden is a Rack-based middleware that provides a mechanism for
10390authentication in Ruby web applications.")
10391 (home-page "https://github.com/wardencommunity/warden")
10392 (license license:expat)))
10393
10394(define-public ruby-warden-oauth2
10395 (package
10396 (name "ruby-warden-oauth2")
10397 (version "0.0.1")
10398 (source
10399 (origin
10400 (method url-fetch)
10401 (uri (rubygems-uri "warden-oauth2" version))
10402 (sha256
10403 (base32
10404 "1z9154lvzrnnfjbjkmirh4n811nygp6pm2fa6ikr7y1ysa4zv3cz"))))
10405 (build-system ruby-build-system)
10406 (arguments
10407 '(#:test-target "spec"
10408 #:phases
10409 (modify-phases %standard-phases
10410 (add-after 'unpack 'remove-unnecessary-dependencies
10411 (lambda _
10412 (substitute* "Gemfile"
10413 ;; All of these gems relate to development, and are unnecessary
10414 ;; when running the tests
10415 (("gem 'guard-bundler'") "")
10416 (("gem 'guard'") "")
10417 (("gem 'guard-rspec'") "")
10418 (("gem 'rb-fsevent'") "")
10419 (("gem 'pry'") "")
10420 (("gem 'growl'") ""))))
10421 ;; The test suite doesn't work with rspec@2, and this is incompatible
10422 ;; with the current version of Rake, so invoke Rspec directly
10423 (replace 'check
10424 (lambda* (#:key tests? #:allow-other-keys)
10425 (when tests?
10426 (invoke "bundle" "exec" "rspec")))))))
10427 (propagated-inputs
10428 (list ruby-warden))
10429 (native-inputs
10430 (list bundler ruby-rspec-2 ruby-rack-test))
10431 (synopsis "OAuth 2.0 strategies for Warden")
10432 (description
10433 "This library extends Warden to support OAuth 2.0 authorized API
10434requests.")
10435 (home-page "https://github.com/opperator/warden-oauth2")
10436 (license license:expat)))
10437
10438(define-public ruby-webmock
10439 (package
10440 (name "ruby-webmock")
10441 (version "3.11.2")
10442 (source
10443 (origin
10444 (method url-fetch)
10445 (uri (rubygems-uri "webmock" version))
10446 (sha256
10447 (base32
10448 "1hdlbvfw316lkz251qnfk79drmaay7l51kidvicz41nhvw12xz8v"))))
10449 (build-system ruby-build-system)
10450 (native-inputs
10451 (list bundler ruby-rspec))
10452 (propagated-inputs
10453 (list ruby-addressable ruby-crack ruby-hashdiff))
10454 (synopsis "Allows stubbing and setting expectations on HTTP requests")
10455 (description
10456 "WebMock allows stubbing HTTP requests and setting expectations on HTTP
10457requests. This is useful when testing software.")
10458 (home-page "https://github.com/bblimke/webmock")
10459 (license license:expat)))
10460
10461(define-public ruby-webmock-2
10462 (package
10463 (inherit ruby-webmock)
10464 (name "ruby-webmock")
10465 (version "2.3.2")
10466 (source
10467 (origin
10468 (method url-fetch)
10469 (uri (rubygems-uri "webmock" version))
10470 (sha256
10471 (base32
10472 "04hkcqsmbfnp8g237pisnc834vpgildklicbjbyikqg0bg1rwcy5"))))))
10473
10474(define-public ruby-unicode-display-width
10475 (package
10476 (name "ruby-unicode-display-width")
10477 (version "2.4.2")
10478 (source
10479 (origin
10480 (method url-fetch)
10481 (uri (rubygems-uri "unicode-display_width" version))
10482 (sha256
10483 (base32
10484 "1gi82k102q7bkmfi7ggn9ciypn897ylln1jk9q67kjhr39fj043a"))))
10485 (build-system ruby-build-system)
10486 (arguments
10487 '(;; Test data not included.
10488 #:tests? #f))
10489 (synopsis "Determine the monospace display width of Ruby strings")
10490 (description
10491 "@code{Unicode::DisplayWidth} is a Ruby library which can determine the
10492display width of strings in Ruby.")
10493 (home-page "https://github.com/janlelis/unicode-display_width")
10494 (license license:expat)))
10495
10496;; There is another gem called 'ruby-version' so we use an underscore in this
10497;; name
10498(define-public ruby_version
10499 (package
10500 (name "ruby_version")
10501 (version "1.0.2")
10502 (source
10503 (origin
10504 (method url-fetch)
10505 (uri (rubygems-uri "ruby_version" version))
10506 (sha256
10507 (base32
10508 "0lvc7bd5ps3w2vq2wb02i0pi3vfcx2rnckx2ix4rjym1qf52kb2j"))))
10509 (build-system ruby-build-system)
10510 (arguments
10511 `(#:phases
10512 (modify-phases %standard-phases
10513 (add-before 'check 'fix-dependencies
10514 (lambda _
10515 ;; Remove the Gemfile.lock, as we want to use Guix packages at
10516 ;; whatever versions.
10517 (delete-file "Gemfile.lock")
10518 ;; Remove the included gem files as they unnecessary.
10519 (delete-file-recursively "pkg/")
10520 ;; Accept any version of rake, rdoc and rspec
10521 (substitute* "ruby_version.gemspec"
10522 (("%q<rake.*") "%q<rake>)\n")
10523 (("%q<rdoc.*") "%q<rdoc>)\n")
10524 (("%q<rspec.*") "%q<rspec>)\n"))
10525 ;; Do not use bundler.
10526 (substitute* "Rakefile"
10527 (("Bundler\\.setup.*") "nil\n")))))))
10528 (native-inputs
10529 (list ruby-rdoc ruby-rspec ruby-rubygems-tasks))
10530 (synopsis "Ruby library to help check the Ruby version")
10531 (description "@code{ruby_version} provides a @code{RubyVersion} module to simplify
10532checking for the right Ruby version in software.")
10533 (home-page "https://github.com/janlelis/ruby_version")
10534 (license license:expat)))
10535
10536(define-public ruby-websocket-client-simple
10537 (package
10538 (name "ruby-websocket-client-simple")
10539 (version "0.6.1")
10540 (source (origin
10541 (method url-fetch)
10542 (uri (rubygems-uri "websocket-client-simple" version))
10543 (sha256
10544 (base32
10545 "1ypl4xvlh5c99zbn20sifv7gv04zi20ly464vsgikfrpn5f37bid"))))
10546 (build-system ruby-build-system)
10547 (arguments (list #:test-target "default"))
10548 (native-inputs (list ruby-eventmachine ruby-websocket-eventmachine-server))
10549 (propagated-inputs (list ruby-event-emitter ruby-websocket))
10550 (synopsis "Simple WebSocket client for Ruby")
10551 (description "This package provides a simple WebSocket client for Ruby.")
10552 (home-page "https://github.com/ruby-jp/websocket-client-simple")
10553 (license license:expat)))
10554
10555(define-public ruby-websocket-eventmachine-base
10556 (package
10557 (name "ruby-websocket-eventmachine-base")
10558 (version "1.2.0")
10559 (source (origin
10560 (method url-fetch)
10561 (uri (rubygems-uri "websocket-eventmachine-base" version))
10562 (sha256
10563 (base32
10564 "0wiz61mcwgs3k21cdr5l9b4jpg29gl6mflfampww2v525yc3hr1r"))))
10565 (build-system ruby-build-system)
10566 (arguments
10567 (list #:tests? #f)) ;no test suite
10568 (propagated-inputs (list ruby-eventmachine ruby-websocket
10569 ruby-websocket-native))
10570 (synopsis "WebSocket base for Ruby client and server")
10571 (description "This package provides a WebSocket base for a Ruby client and
10572server.")
10573 (home-page "https://github.com/imanel/websocket-eventmachine-base")
10574 (license license:expat)))
10575
10576(define-public ruby-websocket-eventmachine-server
10577 (package
10578 (name "ruby-websocket-eventmachine-server")
10579 (version "1.0.1")
10580 (source (origin
10581 (method url-fetch)
10582 (uri (rubygems-uri "websocket-eventmachine-server" version))
10583 (sha256
10584 (base32
10585 "0iqpzc8s028nck1flqaj784gvyn64wy1h3svpa4y2847wklg8sms"))))
10586 (build-system ruby-build-system)
10587 ;; TODO: The test suite requires Autobahn, not yet packaged in Guix.
10588 (arguments (list #:tests? #f))
10589 (propagated-inputs (list ruby-websocket-eventmachine-base))
10590 (synopsis "WebSocket server for Ruby")
10591 (description "This package provides a WebSocket server for Ruby.")
10592 (home-page "https://github.com/imanel/websocket-eventmachine-server")
10593 (license license:expat)))
10594
10595(define-public ruby-websocket-native
10596 (package
10597 (name "ruby-websocket-native")
10598 (version "1.0.0")
10599 (source (origin
10600 (method url-fetch)
10601 (uri (rubygems-uri "websocket-native" version))
10602 (sha256
10603 (base32
10604 "1kgvd3gyzh7hk0ddzn85jrs4csxm54qnvla95ldyn6rzgfbjchdn"))))
10605 (build-system ruby-build-system)
10606 (arguments
10607 (list #:test-target "spec"
10608 #:phases #~(modify-phases %standard-phases
10609 (add-before 'check 'disable-problematic-tests
10610 (lambda _
10611 (substitute* "spec/websocket_spec.rb"
10612 (("it \"should have mask_native defined\"" all)
10613 (string-append "x" all)))))
10614 (add-after 'build 'compile
10615 (lambda _
10616 (invoke "rake" "compile"))))))
10617 (native-inputs (list ruby-rake-compiler ruby-rspec))
10618 (synopsis "Native Ruby extension for the WebSocket gem")
10619 (description "This package provides a native extension that can increase
10620performance by about 25% compared to the pure Ruby WebSocket implementation.")
10621 (home-page "https://github.com/imanel/websocket-ruby-native")
10622 (license license:expat)))
10623
10624(define-public ruby-websocket-driver
10625 (package
10626 (name "ruby-websocket-driver")
10627 (version "0.7.1")
10628 (source
10629 (origin
10630 (method url-fetch)
10631 (uri (rubygems-uri "websocket-driver" version))
10632 (sha256
10633 (base32 "1bxamwqldmy98hxs5pqby3andws14hl36ch78g0s81gaz9b91nj2"))))
10634 (build-system ruby-build-system)
10635 (arguments
10636 '(#:tests? #f)) ; no included tests
10637 (propagated-inputs
10638 (list ruby-websocket-extensions))
10639 (synopsis "WebSocket protocol handler with pluggable I/O")
10640 (description
10641 "@code{websocket-driver} provides a complete implementation of the
10642WebSocket protocols that can be hooked up to any TCP library")
10643 (home-page "https://github.com/faye/websocket-driver-ruby")
10644 (license license:expat)))
10645
10646(define-public ruby-websocket-extensions
10647 (package
10648 (name "ruby-websocket-extensions")
10649 (version "0.1.3")
10650 (source
10651 (origin
10652 (method url-fetch)
10653 (uri (rubygems-uri "websocket-extensions" version))
10654 (sha256
10655 (base32
10656 "034sdr7fd34yag5l6y156rkbhiqgmy395m231dwhlpcswhs6d270"))))
10657 (build-system ruby-build-system)
10658 (arguments
10659 '(;; No included tests
10660 #:tests? #f))
10661 (synopsis "Generic extension manager for WebSocket connections")
10662 (description
10663 "@code{websocket-extensions} provides a container for registering
10664extension plugins.")
10665 (home-page "https://github.com/faye/websocket-extensions-ruby")
10666 (license license:expat)))
10667
10668(define-public ruby-domain-name
10669 (package
10670 (name "ruby-domain-name")
10671 (version "0.5.20190701")
10672 (source
10673 (origin
10674 (method url-fetch)
10675 (uri (rubygems-uri "domain_name" version))
10676 (sha256
10677 (base32 "0lcqjsmixjp52bnlgzh4lg9ppsk52x9hpwdjd53k8jnbah2602h0"))))
10678 (build-system ruby-build-system)
10679 (arguments
10680 `(#:phases
10681 (modify-phases %standard-phases
10682 (add-before 'check 'fix-versions
10683 (lambda _
10684 ;; Fix NameError that appears to already be fixed upstream.
10685 (substitute* "Rakefile"
10686 (("DomainName::VERSION")
10687 "Bundler::GemHelper.gemspec.version"))
10688 ;; Loosen unnecessarily strict test-unit version specification.
10689 (substitute* "domain_name.gemspec"
10690 (("<test-unit>.freeze, \\[\\\"~> 2.5.5") "<test-unit>, [\">0"))
10691 #t)))))
10692 (propagated-inputs
10693 (list ruby-unf))
10694 (native-inputs
10695 (list ruby-shoulda bundler ruby-test-unit))
10696 (synopsis "Domain name manipulation library")
10697 (description
10698 "@code{domain_name} is a Domain name manipulation library. It parses a
10699domain name ready for extracting the registered domain and TLD (Top Level
10700Domain). It can also be used for cookie domain validation based on the Public
10701Suffix List.")
10702 (home-page "https://github.com/knu/ruby-domain_name")
10703 (license license:bsd-2)))
10704
10705(define-public ruby-dotenv
10706 (package
10707 (name "ruby-dotenv")
10708 (version "3.1.7")
10709 (source (origin
10710 (method git-fetch) ;for the tests
10711 (uri (git-reference
10712 (url "https://github.com/bkeepers/dotenv")
10713 (commit (string-append "v" version))))
10714 (file-name (git-file-name name version))
10715 (sha256
10716 (base32
10717 "19j0acy12si537hwi4q54q8n5ycmlvfd2ik5y6r7jir6ww06l8yx"))))
10718 (build-system ruby-build-system)
10719 (arguments
10720 (list
10721 #:test-target "spec"
10722 #:phases
10723 #~(modify-phases %standard-phases
10724 (add-after 'unpack 'do-not-build-dotenv-rails
10725 (lambda _
10726 ;; The repository includes the definitions of two packages,
10727 ;; 'dotenv' and 'dotenv-rails'. Since we want to package them
10728 ;; separately, remove the dotenv-rails and associated Rake
10729 ;; tasks.
10730 (delete-file "dotenv-rails.gemspec")
10731 (delete-file "spec/dotenv/rails_spec.rb")
10732 (delete-file "spec/dotenv/log_subscriber_spec.rb")
10733 (substitute* "spec/spec_helper.rb"
10734 (("require \"dotenv\"" all)
10735 (string-append "require \"pathname\"\n" all)))
10736 (substitute* "Rakefile"
10737 (("DotenvRailsGemHelper.install_tasks name: \"dotenv-rails\"")
10738 "")
10739 ((", \"dotenv-rails:.*\"")
10740 ""))))
10741 (replace 'replace-git-ls-files
10742 (lambda _
10743 (substitute* "dotenv.gemspec"
10744 (("`git ls-files (README.md LICENSE lib bin) \\| ([^`]*`)"
10745 all files command)
10746 (string-append
10747 "`find " files " -type f | sort | " command))))))))
10748 (native-inputs (list ruby-standard ruby-rspec))
10749 (synopsis "Ruby library for setting environment variables")
10750 (description "Dotenv is a Ruby library for setting environment variables
10751defined in a @file{.env} file.")
10752 (home-page "https://github.com/bkeepers/dotenv")
10753 (license license:expat)))
10754
10755(define-public ruby-dotenv-rails
10756 (package
10757 (inherit ruby-dotenv)
10758 (name "ruby-dotenv-rails")
10759 (arguments
10760 (substitute-keyword-arguments (package-arguments ruby-dotenv)
10761 ((#:phases phases '%standard-phases)
10762 #~(modify-phases #$phases
10763 (delete 'do-not-build-dotenv-rails)
10764 (add-after 'unpack 'delete-Gemfile
10765 (lambda _
10766 ;; It defines extraneous dependencies; remove it.
10767 (delete-file "Gemfile")))
10768 (add-after 'unpack 'remove-extraneous-gemspec
10769 (lambda _
10770 (delete-file "dotenv.gemspec")
10771 (substitute* "Gemfile"
10772 ((".*\"dotenv\".*") ""))
10773 (substitute* "Rakefile"
10774 ;; Remove the dotenv-related Rake tasks.
10775 (("Bundler::GemHelper.install_tasks name: \"dotenv\"")
10776 "")
10777 (("\"dotenv:[^\"]*\", ")
10778 ""))))
10779 (replace 'replace-git-ls-files
10780 (lambda _
10781 (substitute* "dotenv-rails.gemspec"
10782 (("`git ls-files lib \\| grep rails`")
10783 "`find lib -type f | sort | grep rails`"))))))))
10784 (native-inputs (list ruby-rspec ruby-spring ruby-standard))
10785 (propagated-inputs (list ruby-dotenv ruby-railties))
10786 (synopsis "Ruby library for setting environment variables in Rails project")
10787 (description "Dotenv is a Ruby library for setting environment variables
10788defined in a @file{.env} file. This is the Rails variant, adapted for use
10789with Ruby on Rails projects.")))
10790
10791(define-public ruby-http-accept
10792 (package
10793 (name "ruby-http-accept")
10794 (version "2.2.0")
10795 (source (origin
10796 (method git-fetch) ;for the tests
10797 (uri (git-reference
10798 (url "https://github.com/socketry/http-accept")
10799 (commit (string-append "v" version))))
10800 (file-name (git-file-name name version))
10801 (sha256
10802 (base32
10803 "1d69cy12hqbcqrhw4dibvdq5pqklxsa59kih6pzl479nxq79rgs7"))))
10804 (build-system ruby-build-system)
10805 (arguments
10806 (list
10807 #:phases
10808 #~(modify-phases %standard-phases
10809 (add-after 'unpack 'remove-missing-key-directive
10810 ;; This seem to be a common problem in Ruby projects (see:
10811 ;; https://github.com/prawnpdf/ttfunk/issues/99).
10812 (lambda _
10813 (substitute* "http-accept.gemspec"
10814 ((".*spec.signing_key.*") ""))))
10815 (replace 'check
10816 (lambda* (#:key tests? #:allow-other-keys)
10817 (when tests?
10818 (invoke "rspec")))))))
10819 (native-inputs
10820 (list ruby-rspec
10821 ruby-covered))
10822 (synopsis "Parse Accept and Accept-Language HTTP headers")
10823 (description
10824 "This package provides a set of parsers for Accept and Accept-Language
10825HTTP headers.")
10826 (home-page "https://github.com/socketry/http-accept")
10827 (license license:expat)))
10828
10829(define-public ruby-http-accept-1
10830 (package
10831 (inherit ruby-http-accept)
10832 (version "1.7.0")
10833 (source (origin
10834 (method git-fetch) ;for the tests
10835 (uri (git-reference
10836 (url "https://github.com/ioquatix/http-accept")
10837 (commit (string-append "v" version))))
10838 (file-name (git-file-name "ruby-http-accept" version))
10839 (sha256
10840 (base32
10841 "1hnqmqpa135s3xgcvv30qzqm8zp88my1aj05m72d2q9cvc31g92z"))))))
10842
10843(define-public ruby-http-cookie
10844 (package
10845 (name "ruby-http-cookie")
10846 (version "1.0.5")
10847 (source
10848 (origin
10849 (method url-fetch)
10850 (uri (rubygems-uri "http-cookie" version))
10851 (sha256
10852 (base32
10853 "13rilvlv8kwbzqfb644qp6hrbsj82cbqmnzcvqip1p6vqx36sxbk"))))
10854 (build-system ruby-build-system)
10855 (arguments
10856 (list
10857 #:phases
10858 #~(modify-phases %standard-phases
10859 (add-before 'check 'add-dependency-to-bundler
10860 (lambda _
10861 ;; Fix NameError
10862 (substitute* "Rakefile"
10863 (("HTTP::Cookie::VERSION")
10864 "Bundler::GemHelper.gemspec.version")))))))
10865 (propagated-inputs
10866 (list ruby-domain-name))
10867 (native-inputs
10868 (list ruby-simplecov
10869 bundler
10870 ruby-sqlite3
10871 ruby-test-unit))
10872 (synopsis "Handle HTTP Cookies based on RFC 6265")
10873 (description
10874 "@code{HTTP::Cookie} is a Ruby library to handle HTTP Cookies based on
10875RFC 6265. It has been designed with security, standards compliance and
10876compatibility in mind, to behave just the same as today's major web browsers.
10877It has built-in support for the legacy @code{cookies.txt} and
10878@code{cookies.sqlite} formats of Mozilla Firefox.")
10879 (home-page "https://github.com/sparklemotion/http-cookie")
10880 (license license:expat)))
10881
10882(define-public ruby-httpclient
10883 (package
10884 (name "ruby-httpclient")
10885 (version "2.8.3")
10886 (source
10887 (origin
10888 (method url-fetch)
10889 (uri (rubygems-uri "httpclient" version))
10890 (sha256
10891 (base32
10892 "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99"))))
10893 (build-system ruby-build-system)
10894 (arguments
10895 '(;; TODO: Some tests currently fail
10896 ;; ------
10897 ;; 211 tests, 729 assertions, 13 failures, 4 errors, 0 pendings,
10898 ;; 2 omissions, 0 notifications
10899 ;; 91.866% passed
10900 ;; ------
10901 ;; 6.49 tests/s, 22.41 assertions/s
10902 #:tests? #f
10903 #:phases
10904 (modify-phases %standard-phases
10905 (replace 'check
10906 (lambda* (#:key tests? #:allow-other-keys)
10907 (if tests?
10908 (invoke "ruby"
10909 "-Ilib"
10910 "test/runner.rb")))))))
10911 (native-inputs
10912 (list ruby-rack))
10913 (synopsis
10914 "Make HTTP requests with support for HTTPS, Cookies, authentication and more")
10915 (description
10916 "The @code{httpclient} ruby library provides functionality related to
10917HTTP. Compared to the @code{net/http} library, @code{httpclient} also provides
10918Cookie, multithreading and authentication (digest, NTLM) support.
10919
10920Also provided is a @command{httpclient} command, which can perform HTTP
10921requests either using arguments or with an interactive prompt.")
10922 (home-page "https://github.com/nahi/httpclient")
10923 (license license:ruby)))
10924
10925(define-public ruby-ansi
10926 (package
10927 (name "ruby-ansi")
10928 (version "1.5.0")
10929 (source
10930 (origin
10931 (method git-fetch)
10932 ;; Fetch from GitHub as the gem does not contain testing code.
10933 (uri (git-reference
10934 (url "https://github.com/rubyworks/ansi")
10935 (commit version)))
10936 (file-name (git-file-name name version))
10937 (sha256
10938 (base32
10939 "1wsz7xxwl3vkh277jb7fd7akqnqqgbvalxzpjwniiqk8ghfprbi5"))))
10940 (build-system ruby-build-system)
10941 (arguments
10942 `(#:phases
10943 (modify-phases %standard-phases
10944 ;; Disable testing to break the cycle ansi, ae, ansi, as well as the
10945 ;; cycle ansi, qed, ansi. Instead simply test that the library can
10946 ;; be require'd.
10947 (replace 'check
10948 (lambda _
10949 (invoke "ruby" "-Ilib" "-r" "ansi")))
10950 (add-before 'validate-runpath 'replace-broken-symlink
10951 (lambda* (#:key outputs #:allow-other-keys)
10952 (let* ((out (assoc-ref outputs "out"))
10953 (file (string-append
10954 out "/lib/ruby/vendor_ruby/gems/ansi-"
10955 ,version "/lib/ansi.yml")))
10956 ;; XXX: This symlink is broken since ruby 2.4.
10957 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
10958 (delete-file file)
10959 (symlink "../.index" file)))))))
10960 (synopsis "ANSI escape code related libraries")
10961 (description
10962 "This package is a collection of ANSI escape code related libraries
10963enabling ANSI colorization and stylization of console output. Included in the
10964library are the @code{Code} module, which defines ANSI codes as constants and
10965methods, a @code{Mixin} module for including color methods, a @code{Logger}, a
10966@code{ProgressBar}, and a @code{String} subclass. The library also includes a
10967@code{Terminal} module which provides information about the current output
10968device.")
10969 (home-page "https://rubyworks.github.io/ansi/")
10970 (license license:bsd-2)))
10971
10972(define-public ruby-systemu
10973 (package
10974 (name "ruby-systemu")
10975 (version "2.6.5")
10976 (source
10977 (origin
10978 (method url-fetch)
10979 (uri (rubygems-uri "systemu" version))
10980 (sha256
10981 (base32
10982 "0gmkbakhfci5wnmbfx5i54f25j9zsvbw858yg3jjhfs5n4ad1xq1"))))
10983 (build-system ruby-build-system)
10984 (arguments
10985 `(#:phases
10986 (modify-phases %standard-phases
10987 (add-before 'check 'set-version
10988 (lambda _
10989 (setenv "VERSION" ,version))))))
10990 (synopsis "Capture of stdout/stderr and handling of child processes")
10991 (description
10992 "Systemu can be used on any platform to return status, stdout, and stderr
10993of any command. Unlike other methods like @code{open3} and @code{popen4}
10994there is no danger of full pipes or threading issues hanging your process or
10995subprocess.")
10996 (home-page "https://github.com/ahoward/systemu")
10997 (license license:ruby)))
10998
10999(define-public ruby-bcrypt
11000 (package
11001 (name "ruby-bcrypt")
11002 (version "3.1.20")
11003 ;; FIXME: Unbundle the bcrypt library used.
11004 (source
11005 (origin
11006 (method git-fetch)
11007 (uri (git-reference
11008 (url "https://github.com/bcrypt-ruby/bcrypt-ruby")
11009 (commit (string-append "v" version))))
11010 (file-name (git-file-name name version))
11011 (sha256
11012 (base32 "0q6h8kmjb34hg6qjv31v374n3cavv00drsfyzv6nybdwipgyg62i"))))
11013 (build-system ruby-build-system)
11014 (arguments (list #:test-target "default")) ;compile + spec
11015 (native-inputs (list ruby-rake-compiler ruby-rspec))
11016 (synopsis "Ruby bcrypt wrapper")
11017 (description "This Ruby library provides a simple wrapper to bcrypt, a
11018secure hash algorithm for hashing passwords.")
11019 (home-page "https://github.com/bcrypt-ruby/bcrypt-ruby")
11020 (license license:expat)))
11021
11022(define-public ruby-bcrypt-pbkdf
11023 (package
11024 (name "ruby-bcrypt-pbkdf")
11025 (version "1.1.0")
11026 (source (origin
11027 (method url-fetch)
11028 (uri (rubygems-uri "bcrypt_pbkdf" version))
11029 (sha256
11030 (base32
11031 "0ndamfaivnkhc6hy0yqyk2gkwr6f3bz6216lh74hsiiyk3axz445"))))
11032 (build-system ruby-build-system)
11033 (arguments
11034 (list #:phases #~(modify-phases %standard-phases
11035 (add-before 'build 'compile
11036 (lambda _
11037 (invoke "rake" "compile"))))))
11038 (native-inputs (list ruby-minitest ruby-rake-compiler
11039 ruby-rake-compiler-dock ruby-rdoc))
11040 (synopsis "Reading password encrypted Ed25519 keys in Ruby")
11041 (description
11042 "This gem implements @samp{bcrypt_pbkdf}, which is a variant of
11043PBKDF2 (Password-Based Key Derivation Function 2) with bcrypt-based
11044pseudorandom function. This is currently used by @samp{net-ssh} to
11045read password encrypted Ed25519 keys.")
11046 (home-page "https://github.com/net-ssh/bcrypt_pbkdf-ruby")
11047 (license license:expat)))
11048
11049(define-public ruby-bio-commandeer
11050 (package
11051 (name "ruby-bio-commandeer")
11052 (version "0.4.0")
11053 (source
11054 (origin
11055 (method url-fetch)
11056 (uri (rubygems-uri "bio-commandeer" version))
11057 (sha256
11058 (base32
11059 "0khpfw1yl5l3d2m8nxpkk32ybc4c3pa5hic3agd160jdfjjjnlni"))))
11060 (build-system ruby-build-system)
11061 (arguments
11062 `(#:phases
11063 (modify-phases %standard-phases
11064 (replace 'check
11065 ;; Run test without calling 'rake' so that jeweler is
11066 ;; not required as an input.
11067 (lambda _
11068 (invoke "rspec" "spec/bio-commandeer_spec.rb"))))))
11069 (propagated-inputs
11070 (list ruby-bio-logger ruby-systemu))
11071 (native-inputs
11072 (list bundler ruby-rspec))
11073 (synopsis "Simplified running of shell commands from within Ruby")
11074 (description
11075 "Bio-commandeer provides an opinionated method of running shell commands
11076from within Ruby. The advantage of bio-commandeer over other methods of
11077running external commands is that when something goes wrong, messages printed
11078to the @code{STDOUT} and @code{STDERR} streams are reported, giving extra
11079detail to ease debugging.")
11080 (home-page "https://github.com/wwood/bioruby-commandeer")
11081 (license license:expat)))
11082
11083(define-public ruby-rubytest
11084 (package
11085 (name "ruby-rubytest")
11086 (version "0.8.1")
11087 (source
11088 (origin
11089 (method url-fetch)
11090 (uri (rubygems-uri "rubytest" version))
11091 (sha256
11092 (base32
11093 "19jydsdnkl81i9dhdcr4dc34j0ilm68ff2ngnka1hi38xiw4p5qz"))))
11094 (build-system ruby-build-system)
11095 (arguments
11096 ;; Disable regular testing to break the cycle rubytest, qed, brass,
11097 ;; rubytest, as well as the cycle rubytest, qed, ansi, rubytest. Instead
11098 ;; simply test that the library can be require'd.
11099 `(#:phases
11100 (modify-phases %standard-phases
11101 (replace 'check
11102 (lambda _
11103 (invoke "ruby" "-Ilib" "-r" "rubytest"))))))
11104 (propagated-inputs
11105 (list ruby-ansi))
11106 (synopsis "Universal test harness for Ruby")
11107 (description
11108 "Rubytest is a testing meta-framework for Ruby. It can handle any
11109compliant test framework and can run tests from multiple frameworks in a
11110single pass.")
11111 (home-page "https://rubyworks.github.io/rubytest")
11112 (license license:bsd-2)))
11113
11114(define-public ruby-brass
11115 (package
11116 (name "ruby-brass")
11117 (version "1.2.1")
11118 (source
11119 (origin
11120 (method url-fetch)
11121 (uri (rubygems-uri "brass" version))
11122 (sha256
11123 (base32
11124 "154lp8rp1vmg60ri1j4cb8hqlw37z7bn575h899v8hzxwi11sxka"))))
11125 (build-system ruby-build-system)
11126 (arguments
11127 ;; Disable tests to break the cycle brass, lemon, ae, qed, brass.
11128 ;; Instead simply test that the library can be require'd.
11129 `(#:phases
11130 (modify-phases %standard-phases
11131 (replace 'check
11132 (lambda* (#:key tests? #:allow-other-keys)
11133 (when tests?
11134 (invoke "ruby" "-Ilib" "-r" "brass")))))))
11135 (synopsis "Basic foundational assertions framework")
11136 (description
11137 "BRASS (Bare-Metal Ruby Assertion System Standard) is a basic
11138foundational assertions framework for other assertion and test frameworks to
11139make use of.")
11140 (home-page "https://rubyworks.github.io/brass")
11141 (license license:bsd-2)))
11142
11143(define-public ruby-qed
11144 (package
11145 (name "ruby-qed")
11146 (version "2.9.2")
11147 (source
11148 (origin
11149 (method url-fetch)
11150 (uri (rubygems-uri "qed" version))
11151 (sha256
11152 (base32
11153 "03h4lmlxpcya8j7s2cnyscqlx8v3xl1xgsw5y1wk1scxcgz2vbmr"))))
11154 (build-system ruby-build-system)
11155 (arguments
11156 `(#:phases
11157 (modify-phases %standard-phases
11158 (replace 'check
11159 (lambda* (#:key tests? #:allow-other-keys)
11160 (when tests?
11161 (invoke "ruby" "-Ilib" "bin/qed")))))))
11162 (native-inputs
11163 (list ruby-ae-bootstrap))
11164 (propagated-inputs
11165 (list ruby-ansi ruby-brass))
11166 (synopsis "Test framework utilizing literate programming techniques")
11167 (description
11168 "@dfn{Quality Ensured Demonstrations} (QED) is a test framework for
11169@dfn{Test Driven Development} (TDD) and @dfn{Behaviour Driven
11170Development} (BDD) utilizing Literate Programming techniques. QED sits
11171somewhere between lower-level testing tools like @code{Test::Unit} and
11172requirement specifications systems like Cucumber.")
11173 (home-page "https://rubyworks.github.io/qed")
11174 (license license:bsd-2)))
11175
11176(define-public ruby-que
11177 (package
11178 (name "ruby-que")
11179 (version "1.0.0.beta3")
11180 (source
11181 (origin
11182 (method url-fetch)
11183 (uri (rubygems-uri "que" version))
11184 (sha256
11185 (base32
11186 "0gr9pb814d4qj3ds98g6cjrdk7wv0yg8aqbm7c1lmgl87jkg8q04"))))
11187 (build-system ruby-build-system)
11188 (arguments
11189 '(#:tests? #f)) ; No included tests
11190 (synopsis "Job queue using PostgreSQL written in Ruby")
11191 (description
11192 "This package provides a job queue that uses PostgreSQL for storing jobs
11193and locking between worker processes.")
11194 (home-page "https://github.com/chanks/que")
11195 (license license:expat)))
11196
11197(define-public ruby-queue-classic
11198 (package
11199 (name "ruby-queue-classic")
11200 (version "4.0.0")
11201 (source (origin
11202 (method url-fetch)
11203 (uri (rubygems-uri "queue_classic" version))
11204 (sha256
11205 (base32
11206 "0npyhajf2fc80apkw9s2kj0n254w5lcl4xpjidg5d5w1fb19abh6"))))
11207 (build-system ruby-build-system)
11208 (arguments (list #:tests? #f)) ;tests require a postgresql server
11209 (native-inputs (list ruby-activerecord ruby-minitest-reporters))
11210 (propagated-inputs (list ruby-pg))
11211 (synopsis "Queuing library for Ruby")
11212 (description "@code{queue_classic} is a queuing library for Ruby
11213applications (Rails, Sinatra, etc.) @code{queue_classic} features
11214asynchronous job polling, database maintained locks and has a single
11215dependency, @code{pg}.")
11216 (home-page "https://github.com/QueueClassic/queue_classic")
11217 (license license:expat)))
11218
11219(define-public ruby-pairing-heap
11220 (package
11221 (name "ruby-pairing-heap")
11222 (version "3.1.0")
11223 (source (origin
11224 (method url-fetch)
11225 (uri (rubygems-uri "pairing_heap" version))
11226 (sha256
11227 (base32
11228 "059kqpw53cancnp0bp7y1s74y1955riw33w3lqfbnms4b4mdh5zj"))))
11229 (build-system ruby-build-system)
11230 (arguments
11231 (list
11232 #:phases
11233 #~(modify-phases %standard-phases
11234 (add-after 'unpack 'patch
11235 (lambda _
11236 (substitute* "Rakefile"
11237 (("require \"standard/rake\"") "")
11238 ((":\"standard:fix\",") "")))))))
11239 (synopsis "Priority queue in pure Ruby")
11240 (description "This package provides a performant priority queue in pure
11241ruby with support for changing priority using pairing heap data structure")
11242 (home-page "https://github.com/mhib/pairing_heap")
11243 (license license:expat)))
11244
11245(define-public ruby-ae
11246 (package
11247 (name "ruby-ae")
11248 (version "1.8.2")
11249 (source
11250 (origin
11251 (method git-fetch)
11252 ;; Fetch from github so tests are included.
11253 (uri (git-reference
11254 (url "https://github.com/rubyworks/ae")
11255 (commit version)))
11256 (file-name (git-file-name name version))
11257 (sha256
11258 (base32
11259 "11299jj5ma8mi7b4majkyjy70y6zlqpgl8aql1c5lvfjavlpwmlp"))))
11260 (build-system ruby-build-system)
11261 (arguments
11262 `(#:phases
11263 (modify-phases %standard-phases
11264 (replace 'check
11265 (lambda* (#:key tests? #:allow-other-keys)
11266 (when tests?
11267 (invoke "qed"))))
11268 (add-before 'validate-runpath 'replace-broken-symlink
11269 (lambda* (#:key outputs #:allow-other-keys)
11270 (let* ((out (assoc-ref outputs "out"))
11271 (file (string-append
11272 out "/lib/ruby/vendor_ruby/gems/ae-"
11273 ,version "/lib/ae.yml")))
11274 ;; XXX: This symlink is broken since ruby 2.4.
11275 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
11276 (delete-file file)
11277 (symlink "../.index" file)))))))
11278 (propagated-inputs
11279 (list ruby-ansi))
11280 (native-inputs
11281 (list ruby-qed))
11282 (synopsis "Assertions library")
11283 (description
11284 "Assertive Expressive (AE) is an assertions library specifically designed
11285for reuse by other test frameworks.")
11286 (home-page "https://rubyworks.github.io/ae/")
11287 (license license:bsd-2)))
11288
11289(define-public ruby-ae-bootstrap
11290 (hidden-package
11291 (package/inherit ruby-ae
11292 (arguments
11293 (substitute-keyword-arguments
11294 (package-arguments ruby-ae)
11295 ((#:tests? _ #t) #f)))
11296 (native-inputs '()))))
11297
11298(define-public ruby-lemon
11299 (package
11300 (name "ruby-lemon")
11301 (version "0.9.1")
11302 (source
11303 (origin
11304 (method url-fetch)
11305 (uri (rubygems-uri "lemon" version))
11306 (sha256
11307 (base32
11308 "0gqhpgjavgpvx23rqpfqcv3d5bs8gc7lr9yvj8kxgp7mfbdc2jcm"))))
11309 (build-system ruby-build-system)
11310 (arguments
11311 `(#:phases
11312 (modify-phases %standard-phases
11313 (replace 'check (lambda _ (invoke "qed"))))))
11314 (propagated-inputs
11315 (list ruby-ae ruby-ansi ruby-rubytest))
11316 (native-inputs
11317 (list ruby-qed))
11318 (synopsis "Test framework correlating code structure and test unit")
11319 (description
11320 "Lemon is a unit testing framework that enforces highly formal
11321case-to-class and unit-to-method test construction. This enforcement can help
11322focus concern on individual units of behavior.")
11323 (home-page "https://rubyworks.github.io/lemon")
11324 (license license:bsd-2)))
11325
11326(define-public ruby-rubytest-cli
11327 (package
11328 (name "ruby-rubytest-cli")
11329 (version "0.2.0")
11330 (source
11331 (origin
11332 (method url-fetch)
11333 (uri (rubygems-uri "rubytest-cli" version))
11334 (sha256
11335 (base32
11336 "0n7hv4k1ba4fm3i98c6ydbsqhkxgbp52mhi70ba1x3mqzfvk438p"))))
11337 (build-system ruby-build-system)
11338 (arguments
11339 `(#:tests? #f)) ; no tests
11340 (propagated-inputs
11341 (list ruby-ansi ruby-rubytest))
11342 (synopsis "Command-line interface for rubytest")
11343 (description
11344 "Rubytest CLI is a command-line interface for running tests for
11345Rubytest-based test frameworks. It provides the @code{rubytest} executable.")
11346 (home-page "https://rubyworks.github.io/rubytest-cli")
11347 (license license:bsd-2)))
11348
11349(define-public ruby-hashery
11350 (package
11351 (name "ruby-hashery")
11352 (version "2.1.2")
11353 (source
11354 (origin
11355 (method url-fetch)
11356 (uri (rubygems-uri "hashery" version))
11357 (sha256
11358 (base32
11359 "0qj8815bf7q6q7llm5rzdz279gzmpqmqqicxnzv066a020iwqffj"))))
11360 (build-system ruby-build-system)
11361 (arguments
11362 `(#:phases
11363 (modify-phases %standard-phases
11364 (replace 'check
11365 (lambda _
11366 (invoke "qed")
11367 (invoke "rubytest" "-Ilib" "-Itest" "test/"))))))
11368 (native-inputs
11369 (list ruby-rubytest-cli ruby-qed ruby-lemon))
11370 (synopsis "Hash-like classes with extra features")
11371 (description
11372 "The Hashery is a tight collection of @code{Hash}-like classes.
11373Included are the auto-sorting @code{Dictionary} class, the efficient
11374@code{LRUHash}, the flexible @code{OpenHash} and the convenient
11375@code{KeyHash}. Nearly every class is a subclass of the @code{CRUDHash} which
11376defines a CRUD (Create, Read, Update and Delete) model on top of Ruby's
11377standard @code{Hash} making it possible to subclass and augment to fit any
11378specific use case.")
11379 (home-page "https://rubyworks.github.io/hashery")
11380 (license license:bsd-2)))
11381
11382(define-public ruby-rc4
11383 (package
11384 (name "ruby-rc4")
11385 (version "0.1.5")
11386 (source
11387 (origin
11388 (method url-fetch)
11389 (uri (rubygems-uri "ruby-rc4" version))
11390 (sha256
11391 (base32
11392 "00vci475258mmbvsdqkmqadlwn6gj9m01sp7b5a3zd90knil1k00"))))
11393 (build-system ruby-build-system)
11394 (arguments
11395 `(#:phases
11396 (modify-phases %standard-phases
11397 (replace 'check
11398 (lambda _
11399 (invoke "rspec" "spec/rc4_spec.rb"))))))
11400 (native-inputs
11401 (list ruby-rspec-2))
11402 (synopsis "Implementation of the RC4 algorithm")
11403 (description
11404 "RubyRC4 is a pure Ruby implementation of the RC4 algorithm.")
11405 (home-page "https://github.com/caiges/Ruby-RC4")
11406 (license license:expat)))
11407
11408(define-public ruby-afm
11409 (package
11410 (name "ruby-afm")
11411 (version "0.2.2")
11412 (source
11413 (origin
11414 (method url-fetch)
11415 (uri (rubygems-uri "afm" version))
11416 (sha256
11417 (base32
11418 "06kj9hgd0z8pj27bxp2diwqh6fv7qhwwm17z64rhdc4sfn76jgn8"))))
11419 (build-system ruby-build-system)
11420 (native-inputs
11421 (list bundler))
11422 (synopsis "Read Adobe Font Metrics (afm) files")
11423 (description
11424 "This library provides methods to read @dfn{Adobe Font Metrics} (afm)
11425files and use the data therein.")
11426 (home-page "https://github.com/halfbyte/afm")
11427 (license license:expat)))
11428
11429(define-public ruby-ascii85
11430 (package
11431 (name "ruby-ascii85")
11432 (version "1.0.3")
11433 (source
11434 (origin
11435 (method url-fetch)
11436 (uri (rubygems-uri "Ascii85" version))
11437 (sha256
11438 (base32
11439 "0658m37jjjn6drzqg1gk4p6c205mgp7g1jh2d00n4ngghgmz5qvs"))))
11440 (build-system ruby-build-system)
11441 (native-inputs
11442 (list bundler))
11443 (synopsis "Encode and decode Ascii85 binary-to-text encoding")
11444 (description
11445 "This library provides methods to encode and decode Ascii85
11446binary-to-text encoding. The main modern use of Ascii85 is in PostScript and
11447@dfn{Portable Document Format} (PDF) file formats.")
11448 (home-page "https://github.com/datawraith/ascii85gem")
11449 (license license:expat)))
11450
11451(define-public ruby-ttfunk
11452 (package
11453 (name "ruby-ttfunk")
11454 (version "1.7.0")
11455 (source
11456 (origin
11457 (method git-fetch)
11458 ;; Fetch from github as the gem does not contain testing code.
11459 (uri (git-reference
11460 (url "https://github.com/prawnpdf/ttfunk")
11461 (commit version)))
11462 (file-name (git-file-name name version))
11463 (sha256
11464 (base32
11465 "1jyxn928mpyb1sikjd93s3v8fmh33232pq41ziaph513j7am6fi5"))))
11466 (build-system ruby-build-system)
11467 (arguments
11468 (list #:test-target "spec" ;avoid the rubocop target
11469 #:phases
11470 #~(modify-phases %standard-phases
11471 (add-after 'unpack 'remove-missing-key-directive
11472 ;; This seem to be a common problem in Ruby projects (see:
11473 ;; https://github.com/prawnpdf/ttfunk/issues/99).
11474 (lambda _
11475 (substitute* "ttfunk.gemspec"
11476 ((".*spec.signing_key.*") "")))))))
11477 (native-inputs (list ruby-prawn-dev))
11478 (synopsis "Font metrics parser for the Prawn PDF generator")
11479 (description
11480 "TTFunk is a TrueType font parser written in pure Ruby. It is used as
11481part of the Prawn PDF generator.")
11482 (home-page "https://github.com/prawnpdf/ttfunk")
11483 ;; From the README: "Matz's terms for Ruby, GPLv2, or GPLv3. See LICENSE
11484 ;; for details."
11485 (license %prawn-project-licenses)))
11486
11487(define-public ruby-puma
11488 (package
11489 (name "ruby-puma")
11490 (version "6.6.0")
11491 (source
11492 (origin
11493 (method git-fetch) ;for tests
11494 (uri (git-reference
11495 (url "https://github.com/puma/puma")
11496 (commit (string-append "v" version))))
11497 (file-name (git-file-name name version))
11498 (sha256
11499 (base32
11500 "1pdd7s403pi4y75s1sb4jkghhmm2w9zcqifj7z7yx4z0qfs7lvzv"))))
11501 (build-system ruby-build-system)
11502 (arguments
11503 (list
11504 #:phases
11505 #~(modify-phases %standard-phases
11506 (add-after 'unpack 'patch-Gemfile
11507 (lambda _
11508 (substitute* "Gemfile"
11509 (("gem \"rake-compiler\".*")
11510 "gem 'rake-compiler'\n"))))
11511 (add-after 'unpack 'disable-rubocop
11512 (lambda _
11513 (setenv "PUMA_NO_RUBOCOP" "1")))
11514 (add-after 'unpack 'use-rack-2
11515 (lambda _
11516 (setenv "PUMA_CI_RACK" "rack2")
11517 (setenv "PUMA_CI_RACK_2" "1")))
11518 (add-before 'build 'increase-resource-limits
11519 (lambda _
11520 ;; The test suite requires a higher number of open files. Try
11521 ;; increasing the soft resource limit of max open files to 2048,
11522 ;; or equal to the hard limit, whichever is lower.
11523 (call-with-values (lambda () (getrlimit 'nofile))
11524 (lambda (soft hard)
11525 (when (and soft (< soft 2048))
11526 (if hard
11527 (setrlimit 'nofile (min hard 2048) hard)
11528 (setrlimit 'nofile 2048 #f))
11529 (format
11530 #t "increased maximum number of open files from ~d to ~d~%"
11531 soft (if hard (min hard 2048) 2048)))))))
11532 (add-before 'build 'fix-gemspec
11533 (lambda _
11534 (substitute* "puma.gemspec"
11535 (("`git ls-files -- bin docs ext lib tools`")
11536 "`find bin docs ext lib tools -type f |sort`"))))
11537 (delete 'check) ;moved after install
11538 (add-after 'install 'check
11539 (lambda* (#:key tests? #:allow-other-keys)
11540 (when tests?
11541 (invoke "bundle" "exec" "rake" "test"))))
11542 (add-after 'install 'delete-mkmf.log
11543 (lambda _
11544 ;; Rubygems installs build log files that embed volatile file
11545 ;; names (see:
11546 ;; https://github.com/rubygems/rubygems/issues/6259).
11547 (for-each delete-file (find-files #$output "^mkmf\\.log$"))))
11548 (add-before 'check 'disable-problematic-tests
11549 (lambda _
11550 (let-syntax ((skip-tests
11551 (syntax-rules ()
11552 ((_ file test ...)
11553 (substitute* file
11554 (((string-append "def " test ".*") all)
11555 (string-append
11556 all " skip('fails on guix')\n")) ...)))))
11557 ;; The test failures were reported at:
11558 ;; https://github.com/puma/puma/issues/3093, but appear to be
11559 ;; caused by the Guix build container, perhaps the lack of
11560 ;; zombie process reaping (see:
11561 ;; https://issues.guix.gnu.org/30948).
11562 ;; All the tests in the 'test_worker_gem_independence.rb'
11563 ;; module fail with "Expected false to be truthy.".
11564 (delete-file "test/test_worker_gem_independence.rb")
11565 (skip-tests "test/test_integration_ssl_session.rb"
11566 ;; The TLS 1.2 test fails for unknown reasons.
11567 "test_off_tls1_2")
11568 (skip-tests "test/test_integration_cluster.rb"
11569 "test_fork_worker_on_refork"
11570 "test_hot_restart_does_not_drop_connections"
11571 "test_culling_strategy_oldest_fork_worker"
11572 "test_usr1_fork_worker")
11573 (skip-tests "test/test_integration_pumactl.rb"
11574 "test_refork_cluster")
11575 ;; The Openssl certificate has expired, causing these tests to fail.
11576 (skip-tests "test/test_puma_server_ssl.rb"
11577 "test_verify_fail_if_client_expired_cert"
11578 "test_verify_client_cert"
11579 "test_server_ssl_with_cert_pem_and_key_pem")
11580 (skip-tests "test/test_integration_ssl.rb"
11581 "test_ssl_run_with_curl_client")
11582 (skip-tests "test/test_web_concurrency_auto.rb" "\
11583test_web_concurrency_with_concurrent_ruby_unavailable")
11584 (skip-tests "test/helpers/integration.rb"
11585 "test_puma_started_log_writing"))))
11586 (add-before 'check 'relax-test-case-timeout
11587 (lambda _
11588 ;; The default value is 45 s and easily causes timeouts.
11589 (setenv "TEST_CASE_TIMEOUT" "600")))
11590 (add-before 'check 'set-home
11591 (lambda _
11592 ;; Some tests fail if the cannot write to HOME.
11593 (setenv "HOME" "/tmp")))
11594 (add-before 'check 'set-paths
11595 (lambda _
11596 ;; The test suite requires the 'puma' command to be on PATH.
11597 (setenv "PATH" (string-append (getenv "PATH") ":"
11598 #$output "/bin"))
11599 (setenv "GEM_PATH" (string-append
11600 (getenv "GEM_PATH") ":"
11601 #$output "/lib/ruby/vendor_ruby")))))))
11602 (native-inputs
11603 (list bundler
11604 curl
11605 ruby-json
11606 ruby-localhost
11607 ruby-m
11608 ruby-minitest-proveit
11609 ruby-minitest-retry
11610 ruby-minitest-stub-const
11611 ruby-rack
11612 ruby-rackup-1
11613 ruby-rake-compiler
11614 ruby-webrick))
11615 (inputs
11616 (list openssl
11617 ruby-nio4r))
11618 (propagated-inputs
11619 (list ruby-concurrent-ruby))
11620 (synopsis "Simple, concurrent HTTP server for Ruby/Rack")
11621 (description
11622 "Puma is a simple, fast, threaded, and highly concurrent HTTP 1.1 server
11623for Ruby/Rack applications. Puma is intended for use in both development and
11624production environments. In order to get the best throughput, it is highly
11625recommended that you use a Ruby implementation with real threads like Rubinius
11626or JRuby.")
11627 (home-page "https://puma.io/")
11628 (license license:expat)))
11629
11630(define-public ruby-hoe-git
11631 (package
11632 (name "ruby-hoe-git")
11633 (version "1.6.0")
11634 (source
11635 (origin
11636 (method url-fetch)
11637 (uri (rubygems-uri "hoe-git" version))
11638 (sha256
11639 (base32
11640 "10jmmbjm0lkglwxbn4rpqghgg1ipjxrswm117n50adhmy8yij650"))))
11641 (build-system ruby-build-system)
11642 (propagated-inputs
11643 (list ruby-hoe-3))
11644 (synopsis "Hoe plugins for tighter Git integration")
11645 (description
11646 "This package provides a set of Hoe plugins for tighter Git integration.
11647It provides tasks to automate release tagging and pushing and changelog
11648generation.")
11649 (home-page "https://github.com/jbarnette/hoe-git")
11650 (license license:expat)))
11651
11652(define-public ruby-hoe-markdown
11653 (package
11654 (name "ruby-hoe-markdown")
11655 (version "1.4.0")
11656 (home-page "https://github.com/flavorjones/hoe-markdown")
11657 (source
11658 (origin
11659 (method git-fetch)
11660 (uri (git-reference
11661 (url home-page)
11662 (commit (string-append "v" version))))
11663 (file-name (git-file-name name version))
11664 (sha256
11665 (base32 "0wb0yjdx9gx9r0cahpx42pblvglgh1i9pdfxjavq7f40nan2g076"))))
11666 (build-system ruby-build-system)
11667 (arguments
11668 '(#:test-target "spec"
11669 #:phases (modify-phases %standard-phases
11670 (add-before 'check 'disable-bundler-dependency
11671 (lambda _
11672 (substitute* "spec/spec_helper.rb"
11673 (("require.*bundler/setup.*")
11674 "")))))))
11675 (native-inputs
11676 (list ruby-rspec))
11677 (propagated-inputs
11678 (list ruby-rake))
11679 (synopsis "Hoe plugin with Markdown helpers")
11680 (description
11681 "This package provides a Hoe plugin with various Markdown helpers, which
11682can be used to e.g. hyperlink Markdown documentation between project files.")
11683 (license license:expat)))
11684
11685(define-public ruby-timecop
11686 (package
11687 (name "ruby-timecop")
11688 (version "0.9.6")
11689 (source
11690 (origin
11691 (method url-fetch)
11692 (uri (rubygems-uri "timecop" version))
11693 (sha256
11694 (base32
11695 "0dlx4gx0zh836i7nzna03xdl7fc233s5z6plnr6k3kw46ah8d1fc"))))
11696 (build-system ruby-build-system)
11697 (arguments
11698 (list
11699 #:phases
11700 #~(modify-phases %standard-phases
11701 (add-before 'check 'set-check-rubylib
11702 (lambda _
11703 ;; Set RUBYLIB so timecop tests finds its own lib.
11704 (setenv "RUBYLIB" "lib"))))))
11705 (native-inputs
11706 (list bundler
11707 ruby-minitest-rg
11708 ruby-mocha
11709 ruby-activesupport
11710 ruby-pry))
11711 (synopsis "Test mocks for time-dependent functions")
11712 (description
11713 "Timecop provides \"time travel\" and \"time freezing\" capabilities,
11714making it easier to test time-dependent code. It provides a unified method to
11715mock @code{Time.now}, @code{Date.today}, and @code{DateTime.now} in a single
11716call.")
11717 (home-page "https://github.com/travisjeffery/timecop")
11718 (license license:expat)))
11719
11720(define-public ruby-concurrent-ruby
11721 (package
11722 (name "ruby-concurrent-ruby")
11723 (version "1.3.5")
11724 (source (origin
11725 (method git-fetch)
11726 (uri (git-reference ;for tests
11727 (url "https://github.com/ruby-concurrency/concurrent-ruby")
11728 (commit (string-append "v" version))))
11729 (file-name (git-file-name name version))
11730 (sha256
11731 (base32
11732 "0f0apna8k9cwnpa4lddwimywxzznrd4rjv4m0lka2i54z49iky73"))))
11733 (build-system ruby-build-system)
11734 (arguments
11735 (list
11736 #:tests? #f ;the test suite is run in ruby-concurrent-ruby-edge
11737 #:phases #~(modify-phases %standard-phases
11738 (add-after 'unpack 'delete-unwanted-gemspecs
11739 (lambda _
11740 (for-each delete-file
11741 '("concurrent-ruby-ext.gemspec"
11742 "concurrent-ruby-edge.gemspec"))))
11743 (add-after 'unpack 'do-not-install-concurrent_ruby.jar
11744 (lambda _
11745 ;; This file is only built when building the Java
11746 ;; extension.
11747 (substitute* "concurrent-ruby.gemspec"
11748 (("'lib/concurrent-ruby/concurrent/concurrent_ruby.jar'")
11749 "")))))))
11750 (synopsis "Concurrency library for Ruby")
11751 (description "Concurrent Ruby includes concurrency tools such as agents,
11752futures, promises, thread pools, actors, supervisors, and more. It is
11753inspired by Erlang, Clojure, Go, JavaScript, actors, and classic concurrency
11754patterns.")
11755 (home-page "https://github.com/ruby-concurrency/concurrent-ruby")
11756 (license license:expat)))
11757
11758;;; The 'gem' is called 'concurrent-ruby'; reversing its name was confusing
11759;;; and failed to be picked by the gem importer (which led to this newer
11760;;; package).
11761(define-public ruby-concurrent
11762 (deprecated-package "ruby-concurrent" ruby-concurrent-ruby))
11763
11764(define-public ruby-concurrent-ruby-ext
11765 (package
11766 (inherit ruby-concurrent-ruby)
11767 (name "ruby-concurrent-ruby-ext")
11768 (arguments
11769 (list
11770 #:tests? #f ;tested as part of concurrent-ruby-edge
11771 #:phases
11772 #~(modify-phases %standard-phases
11773 (add-after 'unpack 'delete-unwanted-gemspecs
11774 (lambda _
11775 (for-each delete-file
11776 '("concurrent-ruby.gemspec"
11777 "concurrent-ruby-edge.gemspec")))))))
11778 (native-inputs (list ruby-rake-compiler))
11779 (propagated-inputs (list ruby-concurrent-ruby))
11780 (synopsis "C extensions for concurrent-ruby")
11781 (description "This package provides C extensions to optimize the
11782concurrent-ruby gem when running under the Matz's Ruby Interpreter (MRI, also
11783known as CRuby).")))
11784
11785(define-public ruby-concurrent-ruby-edge
11786 (package
11787 (inherit ruby-concurrent-ruby)
11788 (name "ruby-concurrent-ruby-edge")
11789 (arguments
11790 (list
11791 #:phases
11792 #~(modify-phases %standard-phases
11793 (add-after 'unpack 'delete-unwanted-gemspecs
11794 (lambda _
11795 (for-each delete-file
11796 '("concurrent-ruby.gemspec"
11797 "concurrent-ruby-ext.gemspec"))))
11798 ;; The tests rely on the Gem being installed, so move the check
11799 ;; phase after the install phase.
11800 (delete 'check)
11801 (add-after 'install 'check
11802 (lambda* (#:key tests? #:allow-other-keys)
11803 (setenv "GEM_PATH" (string-append
11804 (getenv "GEM_PATH") ":"
11805 #$output "/lib/ruby/vendor_ruby"))
11806 (when tests?
11807 (invoke "rake" "ci")))))))
11808 (native-inputs
11809 (list ruby-rake-compiler
11810 ruby-rake-compiler-dock
11811 ruby-rspec
11812 ruby-timecop
11813 ruby-yard))
11814 (propagated-inputs
11815 (list ruby-concurrent-ruby ruby-concurrent-ruby-ext))
11816 (synopsis "Edge features and additions to the @code{concurrent-ruby} gem")
11817 (description "The @code{concurrent-ruby-edge} gem includes
11818@code{concurrent-ruby} features that are under active development and may
11819change frequently. They are expected not to keep backward
11820compatibility (there may also lack tests and documentation), although semantic
11821versions are obeyed though. Features developed in @code{concurrent-ruby-edge}
11822are expected to move to @code{concurrent-ruby} when final.")))
11823
11824(define-public ruby-pkg-config
11825 (package
11826 (name "ruby-pkg-config")
11827 (version "1.2.5")
11828 (source
11829 (origin
11830 (method url-fetch)
11831 (uri (rubygems-uri "pkg-config" version))
11832 (sha256
11833 (base32
11834 "056mzqdh4yjznsg36fi0xiq76f24vxlhzh2n4az919l3x5k318ar"))))
11835 (build-system ruby-build-system)
11836 (arguments
11837 ;; Tests require extra files not included in the gem.
11838 `(#:tests? #f))
11839 (synopsis "Detect libraries for compiling Ruby native extensions")
11840 (description
11841 "@code{pkg-config} can be used in your extconf.rb to properly detect need
11842libraries for compiling Ruby native extensions.")
11843 (home-page "https://github.com/ruby-gnome2/pkg-config")
11844 (license license:lgpl2.0+)))
11845
11846(define-public ruby-net-http-digest-auth
11847 (package
11848 (name "ruby-net-http-digest-auth")
11849 (version "1.4.1")
11850 (source
11851 (origin
11852 (method url-fetch)
11853 (uri (rubygems-uri "net-http-digest_auth" version))
11854 (sha256
11855 (base32
11856 "1nq859b0gh2vjhvl1qh1zrk09pc7p54r9i6nnn6sb06iv07db2jb"))))
11857 (build-system ruby-build-system)
11858 (native-inputs
11859 (list ruby-hoe
11860 ruby-minitest))
11861 (synopsis "RFC 2617 HTTP digest authentication library")
11862 (description
11863 "This library implements HTTP's digest authentication scheme based on
11864RFC 2617. This enables the use of the digest authentication scheme instead
11865of the more insecure basic authentication scheme.")
11866 (home-page "https://github.com/drbrain/net-http-digest_auth")
11867 (license license:expat)))
11868
11869(define-public ruby-mail
11870 (package
11871 (name "ruby-mail")
11872 (version "2.8.1")
11873 (source
11874 (origin
11875 (method url-fetch)
11876 (uri (rubygems-uri "mail" version))
11877 (sha256
11878 (base32 "1bf9pysw1jfgynv692hhaycfxa8ckay1gjw5hz3madrbrynryfzc"))))
11879 (build-system ruby-build-system)
11880 (propagated-inputs
11881 (list ruby-mini-mime))
11882 (arguments
11883 '(#:tests? #f)) ; no rakefile
11884 (synopsis "Mail library for Ruby")
11885 (description
11886 "Mail is an internet library for Ruby that is designed to handle email
11887generation, parsing and sending. The purpose of this library is to provide
11888a single point of access to handle all email functions, including sending
11889and receiving emails. All network type actions are done through proxy
11890methods to @code{Net::SMTP}, @code{Net::POP3} etc.
11891
11892Mail has been designed with a very simple object oriented system that
11893really opens up the email messages you are parsing, if you know what you
11894are doing, you can fiddle with every last bit of your email directly.")
11895 (home-page "https://github.com/mikel/mail")
11896 (license license:expat)))
11897
11898(define-public ruby-net-protocol
11899 (package
11900 (name "ruby-net-protocol")
11901 (version "0.2.1")
11902 (source (origin
11903 (method git-fetch)
11904 (uri (git-reference
11905 (url "https://github.com/ruby/net-protocol")
11906 (commit (string-append "v" version))))
11907 (file-name (git-file-name name version))
11908 (sha256
11909 (base32
11910 "0niivmjx7bc6vsylc1ag17mw6mnvjxw02s7cin1f0422xyr8msq9"))))
11911 (build-system ruby-build-system)
11912 (propagated-inputs (list ruby-timeout))
11913 (synopsis "Abstract interface for Ruby network clients")
11914 (description "This Ruby library provides an abstract interface for network
11915clients.")
11916 (home-page "https://github.com/ruby/net-protocol")
11917 (license (list license:bsd-2))))
11918
11919(define-public ruby-email-reply-trimmer
11920 (package
11921 (name "ruby-email-reply-trimmer")
11922 (version "0.1.13")
11923 (source
11924 (origin
11925 (method url-fetch)
11926 (uri (rubygems-uri "email_reply_trimmer" version))
11927 (sha256
11928 (base32
11929 "1jgcxifm48xq5dz9k47q43pqm5bfnf14l62l3bqhmv8f6z8dw4ki"))))
11930 (build-system ruby-build-system)
11931 (synopsis "Trim replies from plain text email")
11932 (description "EmailReplyTrimmer is a Ruby small library to trim replies
11933from plain text email.")
11934 (home-page "https://github.com/discourse/email_reply_trimmer")
11935 (license license:expat)))
11936
11937(define-public ruby-mathn
11938 (package
11939 (name "ruby-mathn")
11940 (version "0.1.0")
11941 (source
11942 (origin
11943 (method url-fetch)
11944 (uri (rubygems-uri "mathn" version))
11945 (sha256
11946 (base32
11947 "1wn812llln9jzgybz2d7536q39z3gi99i6fi0j1dapcpzvhgrr0p"))))
11948 (build-system ruby-build-system)
11949 (native-inputs
11950 (list bundler ruby-rake-compiler))
11951 (synopsis "Extends math operations for increased precision")
11952 (description
11953 "This gem makes mathematical operations more precise in Ruby and
11954integrates other mathematical standard libraries. Prior to Ruby 2.5,
11955@code{mathn} was part of the Ruby standard library.")
11956 (home-page "https://github.com/ruby/mathn")
11957 (license license:bsd-2)))
11958
11959(define-public ruby-code-statistics
11960 (package
11961 (name "ruby-code-statistics")
11962 (version "0.2.13")
11963 (source
11964 (origin
11965 (method url-fetch)
11966 (uri (rubygems-uri "code_statistics" version))
11967 (sha256
11968 (base32
11969 "07rdpsbwbmh4vp8nxyh308cj7am2pbrfhv9v5xr2d5gq8hnnsm93"))))
11970 (build-system ruby-build-system)
11971 (arguments
11972 `(#:tests? #f)) ; Not all test code is included in gem.
11973 (synopsis "Port of the rails 'rake stats' method")
11974 (description
11975 "This gem is a port of the rails 'rake stats' method so it can be made
11976more robust and work for non rails projects.")
11977 (home-page "https://github.com/danmayer/code_statistics")
11978 (license license:expat)))
11979
11980(define-public ruby-ruby2-keywords
11981 (package
11982 (name "ruby-ruby2-keywords")
11983 (version "0.0.5")
11984 (source (origin
11985 (method git-fetch)
11986 (uri (git-reference
11987 (url "https://github.com/ruby/ruby2_keywords")
11988 (commit (string-append "v" version))))
11989 (file-name (git-file-name name version))
11990 (sha256
11991 (base32
11992 "1jhqb152zfr2yrxj6j8rzakkwdkg5viggwnnqrrfxwwy63msdi97"))))
11993 (build-system ruby-build-system)
11994 (arguments
11995 (list
11996 #:phases
11997 #~(modify-phases %standard-phases
11998 (add-after 'unpack 'delete-extraneous-rake-files
11999 (lambda _
12000 (for-each delete-file '("rakelib/changelogs.rake"
12001 "rakelib/epoch.rake"
12002 "rakelib/version.rake"))))
12003 (add-after 'extract-gemspec 'adjust-files
12004 (lambda _
12005 (substitute* "ruby2_keywords.gemspec"
12006 ;; This file is not present in the git checkout.
12007 ((".*\"ChangeLog\",.*") "")))))))
12008 (synopsis "Shim library for Module#ruby2_keywords")
12009 (description "Provides empty @code{Module#ruby2_keywords} method, for the
12010forward source-level compatibility against @command{ruby2.7} and
12011@command{ruby3}.")
12012 (home-page "https://github.com/ruby/ruby2_keywords")
12013 (license license:bsd-2)))
12014
12015(define-public ruby-rubypants
12016 (package
12017 (name "ruby-rubypants")
12018 (version "0.6.0")
12019 (source (origin
12020 (method url-fetch)
12021 (uri (rubygems-uri "rubypants" version))
12022 (sha256
12023 (base32
12024 "0xpqkslan2wkyal2h9qhplkr5d4sdn7q6csigrhnljjpp8j4qfsh"))))
12025 (build-system ruby-build-system)
12026 (arguments
12027 '(#:tests? #f)) ; need Codecov
12028 (synopsis "Port of the smart-quotes library SmartyPants")
12029 (description
12030 "RubyPants is a Ruby port of the smart-quotes library SmartyPants. The
12031original SmartyPants is a web publishing plug-in for Movable Type, Blosxom,
12032and BBEdit that easily translates plain ASCII punctuation characters into
12033smart typographic punctuation HTML entities.")
12034 (home-page "https://github.com/jmcnevin/rubypants")
12035 (license license:bsd-2)))
12036
12037(define-public ruby-org-ruby
12038 (package
12039 (name "ruby-org-ruby")
12040 (version "0.9.12")
12041 (source (origin
12042 (method url-fetch)
12043 (uri (rubygems-uri "org-ruby" version))
12044 (sha256
12045 (base32
12046 "0x69s7aysfiwlcpd9hkvksfyld34d8kxr62adb59vjvh8hxfrjwk"))))
12047 (build-system ruby-build-system)
12048 (arguments
12049 '(#:tests? #f)) ; no rakefile
12050 (propagated-inputs
12051 (list ruby-rubypants))
12052 (synopsis "Org-mode parser written in Ruby")
12053 (description
12054 "Org-ruby is an org-mode parser written in Ruby. The most significant
12055thing this library does today is convert org-mode files to HTML or Textile or
12056Markdown.")
12057 (home-page "https://github.com/wallyqs/org-ruby")
12058 (license license:expat)))
12059
12060(define-public ruby-rake-manifest
12061 (package
12062 (name "ruby-rake-manifest")
12063 (version "0.2.3")
12064 (source (origin
12065 (method git-fetch)
12066 (uri (git-reference
12067 (url "https://github.com/mvz/rake-manifest")
12068 (commit (string-append "v" version))))
12069 (file-name (git-file-name name version))
12070 (sha256
12071 (base32
12072 "16k2yvg773c25kp2vhzhp01rhf53k0nhrcmpv34k1fridw90r2k8"))))
12073 (build-system ruby-build-system)
12074 (arguments
12075 (list
12076 #:test-target "default"
12077 #:phases
12078 #~(modify-phases %standard-phases
12079 (delete 'check) ;moved after the install phase
12080 (add-after 'install 'check
12081 (assoc-ref %standard-phases 'check))
12082 (add-before 'check 'set-GEM_PATH
12083 (lambda _
12084 (setenv "GEM_PATH" (string-append
12085 (getenv "GEM_PATH") ":"
12086 #$output "/lib/ruby/vendor_ruby")))))))
12087 (native-inputs (list ruby-rspec ruby-simplecov))
12088 (synopsis "Rake tasks to generate and check a manifest file")
12089 (description "This package provides Rake tasks to generate and check a
12090manifest file.")
12091 (home-page "https://github.com/mvz/rake-manifest")
12092 (license license:expat)))
12093
12094(define-public ruby-sfl
12095 (package
12096 (name "ruby-sfl")
12097 (version "2.3")
12098 (source (origin
12099 (method url-fetch)
12100 (uri (rubygems-uri "sfl" version))
12101 (sha256
12102 (base32
12103 "1qm4hvhq9pszi9zs1cl9qgwx1n4wxq0af0hq9sbf6qihqd8rwwwr"))))
12104 (build-system ruby-build-system)
12105 (arguments
12106 `(#:tests? #f ;; some tests fail, gem is a dummy for ruby >= 1.9 anyway
12107 #:test-target "spec"))
12108 (synopsis "Spawn for Ruby 1.8")
12109 (description "This pure ruby library provides @code{spawn()} which is
12110almost perfectly compatible with ruby 1.9's.")
12111 (home-page "https://github.com/ujihisa/spawn-for-legacy")
12112 (license license:bsd-2)))
12113
12114(define-public ruby-childprocess
12115 (package
12116 (name "ruby-childprocess")
12117 (version "4.1.0")
12118 (source
12119 (origin
12120 (method url-fetch)
12121 (uri (rubygems-uri "childprocess" version))
12122 (sha256
12123 (base32
12124 "1lvcp8bsd35g57f7wz4jigcw2sryzzwrpcgjwwf3chmjrjcww5in"))))
12125 (build-system ruby-build-system)
12126 (arguments
12127 `(#:tests? #f ;; one failing test, even with fixes below
12128 #:test-target "spec"
12129 #:phases
12130 (modify-phases %standard-phases
12131 (add-after 'unpack 'patch
12132 (lambda _
12133 (substitute* "spec/spec_helper.rb"
12134 (("#!/bin/sh\\\\n") (string-append "#!" (which "sh") "\\n"))))))))
12135 (native-inputs
12136 (list ruby-coveralls ruby-rspec))
12137 (synopsis "Control external programs running in the background, in Ruby")
12138 (description "@code{childprocess} provides a gem to control external
12139programs running in the background, in Ruby.")
12140 (home-page "https://github.com/enkessler/childprocess")
12141 (license license:expat)))
12142
12143(define-public ruby-public-suffix
12144 (package
12145 (name "ruby-public-suffix")
12146 (version "4.0.5")
12147 (source (origin
12148 (method url-fetch)
12149 (uri (rubygems-uri "public_suffix" version))
12150 (sha256
12151 (base32
12152 "0vywld400fzi17cszwrchrzcqys4qm6sshbv73wy5mwcixmrgg7g"))))
12153 (build-system ruby-build-system)
12154 (arguments
12155 '(#:phases
12156 (modify-phases %standard-phases
12157 ;; Remove the requirement on Rubocop, as it isn't useful to run, and
12158 ;; including it as an input can lead to circular dependencies.
12159 (add-after 'unpack 'remove-rubocop-from-Rakefile
12160 (lambda _
12161 (substitute* "Rakefile"
12162 (("require \"rubocop/rake\\_task\"") "")
12163 (("RuboCop::RakeTask\\.new") "")))))))
12164 (native-inputs
12165 (list bundler ruby-yard/minimal ruby-mocha ruby-minitest-reporters))
12166 (home-page "https://simonecarletti.com/code/publicsuffix-ruby/")
12167 (synopsis "Domain name parser")
12168 (description "The gem @code{public_suffix} is a domain name parser,
12169written in Ruby, and based on the @dfn{Public Suffix List}. A public suffix
12170is one under which Internet users can (or historically could) directly
12171register names. Some examples of public suffixes are @code{.com},
12172@code{.co.uk} and @code{pvt.k12.ma.us}. The Public Suffix List is a list of
12173all known public suffixes.")
12174 (license license:expat)))
12175
12176(define-public ruby-addressable
12177 (package
12178 (name "ruby-addressable")
12179 (version "2.8.1")
12180 (source (origin
12181 (method url-fetch)
12182 (uri (rubygems-uri "addressable" version))
12183 (sha256
12184 (base32
12185 "1ypdmpdn20hxp5vwxz3zc04r5xcwqc25qszdlg41h8ghdqbllwmw"))))
12186 (build-system ruby-build-system)
12187 (arguments
12188 '(#:test-target "spec"
12189 #:phases
12190 (modify-phases %standard-phases
12191 (add-after 'unpack 'disable-bundler
12192 (lambda _
12193 (substitute* "spec/spec_helper.rb"
12194 (("require 'bundler/setup'") ""))))
12195 (add-after 'unpack 'remove-unnecessary-dependencies-from-Gemfile
12196 (lambda _
12197 (substitute* "Gemfile"
12198 (("git: 'https://github.com/sporkmonger/rack-mount.git',") "")
12199 ((".*launchy.*") "")
12200 ((".*rake.*") "gem 'rake'\n")
12201 ((".*redcarpet.*") ""))))
12202 (add-before 'check 'delete-network-dependent-test
12203 (lambda _
12204 (delete-file "spec/addressable/net_http_compat_spec.rb"))))))
12205 (native-inputs
12206 (list bundler
12207 ruby-idn-ruby
12208 ruby-rspec
12209 ruby-rspec-its-minimal
12210 ruby-simplecov
12211 ruby-sporkmonger-rack-mount
12212 ruby-yard/minimal))
12213 (propagated-inputs
12214 (list ruby-public-suffix))
12215 (home-page "https://github.com/sporkmonger/addressable")
12216 (synopsis "Alternative URI implementation")
12217 (description "Addressable is a replacement for the URI implementation that
12218is part of Ruby's standard library. It more closely conforms to RFC 3986,
12219RFC 3987, and RFC 6570 (level 4), providing support for IRIs and URI templates.")
12220 (license license:asl2.0)))
12221
12222(define-public ruby-colorize
12223 (package
12224 (name "ruby-colorize")
12225 (version "0.8.1")
12226 (source (origin
12227 (method url-fetch)
12228 (uri (rubygems-uri "colorize" version))
12229 (sha256
12230 (base32
12231 "133rqj85n400qk6g3dhf2bmfws34mak1wqihvh3bgy9jhajw580b"))))
12232 (build-system ruby-build-system)
12233 (arguments
12234 '(#:phases (modify-phases %standard-phases
12235 (add-before 'check 'remove-codeclimate-dependency
12236 (lambda _
12237 (substitute* "test/test_colorize.rb"
12238 ;; Do not hook the tests into the online CodeClimate
12239 ;; service which is unnecessary for these tests.
12240 (("require 'codeclimate-test-reporter'")
12241 "")
12242 (("CodeClimate.*") "")))))))
12243 (synopsis "Add color effects to the @code{String} class")
12244 (description
12245 "This package extends the @code{String} class and adds a
12246@code{ColorizedString} with methods to set text color, background color,
12247and text effects.")
12248 (home-page "https://github.com/fazibear/colorize")
12249 (license license:gpl2+)))
12250
12251(define-public ruby-colorator
12252 (package
12253 (name "ruby-colorator")
12254 (version "1.1.0")
12255 (source (origin
12256 (method url-fetch)
12257 (uri (rubygems-uri "colorator" version))
12258 (sha256
12259 (base32
12260 "0f7wvpam948cglrciyqd798gdc6z3cfijciavd0dfixgaypmvy72"))))
12261 (build-system ruby-build-system)
12262 (arguments
12263 ;; No test target
12264 `(#:tests? #f))
12265 (home-page "http://octopress.org/colorator/")
12266 (synopsis "Terminal color library")
12267 (description "Colorator is a Ruby gem that helps you colorize your text
12268for the terminal.")
12269 (license license:expat)))
12270
12271(define-public ruby-command-line-reporter
12272 (package
12273 (name "ruby-command-line-reporter")
12274 (version "4.0.1")
12275 (source (origin
12276 (method url-fetch)
12277 (uri (rubygems-uri "command_line_reporter" version))
12278 (sha256
12279 (base32
12280 "1l0zxkh5n9dxfw46lpkg416ljpldlq1bgdhqh0d118dk338nz4ll"))))
12281 (build-system ruby-build-system)
12282 (arguments
12283 ;; No Rakefile
12284 `(#:tests? #f
12285 #:phases
12286 (modify-phases %standard-phases
12287 (add-before 'build 'fix-dependencies
12288 (lambda _
12289 (substitute* ".gemspec"
12290 ;; colored is unmaintained
12291 (("colored") "colorator")
12292 ;; colorator version
12293 (("= 1.2") "= 1.1")))))))
12294 (propagated-inputs (list ruby-colorator))
12295 (home-page "https://github.com/wbailey/command_line_reporter")
12296 (synopsis "Report production while executing Ruby scripts")
12297 (description "This gem provides a DSL that makes it easy to write reports
12298of various types in ruby. It eliminates the need to litter your source with
12299puts statements, instead providing a more readable, expressive interface to
12300your application.")
12301 (license license:asl2.0)))
12302
12303(define-public ruby-command-line-reporter-3
12304 (package
12305 (inherit ruby-command-line-reporter)
12306 (version "3.3.6")
12307 (source (origin
12308 (method url-fetch)
12309 (uri (rubygems-uri "command_line_reporter" version))
12310 (sha256
12311 (base32
12312 "1h39zqqxp3k4qk49ajpx0jps1vmvxgkh43mqkb6znk583bl0fv71"))))))
12313
12314(define-public ruby-kpeg
12315 (package
12316 (name "ruby-kpeg")
12317 (version "1.3.3")
12318 (source
12319 (origin
12320 (method url-fetch)
12321 (uri (rubygems-uri "kpeg" version))
12322 (sha256
12323 (base32
12324 "0jxddpyb23digcd8b1b02gn94057a7mw17680c3c8s3bcb5xqfnp"))))
12325 (build-system ruby-build-system)
12326 (native-inputs
12327 (list ruby-hoe))
12328 (synopsis "PEG library for Ruby")
12329 (description "KPeg is a simple PEG library for Ruby. It provides an API as
12330well as native grammar to build the grammar. KPeg supports direct left
12331recursion of rules via the
12332@uref{http://www.vpri.org/pdf/tr2008003_experimenting.pdf,OMeta memoization}
12333technique.")
12334 (home-page "https://github.com/evanphx/kpeg")
12335 (license license:expat)))
12336
12337(define-public ruby-rdoc
12338 (package
12339 (name "ruby-rdoc")
12340 (version "6.7.0")
12341 (source
12342 (origin
12343 (method git-fetch)
12344 (uri (git-reference
12345 (url "https://github.com/ruby/rdoc")
12346 (commit (string-append "v" version))))
12347 (file-name (git-file-name name version))
12348 (sha256
12349 (base32
12350 "0dy997zi7k17c2yjlq1y7zl9yaiym1f4jgfh84qqzhwl1qm6v41j"))))
12351 (build-system ruby-build-system)
12352 (arguments
12353 `(#:phases
12354 (modify-phases %standard-phases
12355 (add-before 'build 'generate
12356 ;; 'gem build' doesn't honor Rakefile dependencies (see:
12357 ;; https://github.com/ruby/rdoc/issues/432#issuecomment-650808977).
12358 (lambda _
12359 (invoke "rake" "generate"))))))
12360 (native-inputs (list bundler ruby-kpeg ruby-racc ruby-rubocop
12361 ruby-test-unit-ruby-core))
12362 (home-page "https://ruby.github.io/rdoc/")
12363 (synopsis "HTML and command-line documentation utility")
12364 (description "RDoc produces HTML and command-line documentation for Ruby
12365projects. RDoc includes the +rdoc+ and +ri+ tools for generating and displaying
12366documentation from the command-line.")
12367 (license license:gpl2+)))
12368
12369(define-public ruby-sass-listen
12370 (package
12371 (name "ruby-sass-listen")
12372 (version "4.0.0")
12373 (source (origin
12374 (method url-fetch)
12375 (uri (rubygems-uri "sass-listen" version))
12376 (sha256
12377 (base32
12378 "0xw3q46cmahkgyldid5hwyiwacp590zj2vmswlll68ryvmvcp7df"))))
12379 (build-system ruby-build-system)
12380 (arguments
12381 ;; No test target
12382 `(#:tests? #f))
12383 (propagated-inputs
12384 (list ruby-rb-fsevent ruby-rb-inotify))
12385 (home-page "https://github.com/sass/listen")
12386 (synopsis "File modification notification library")
12387 (description "The Listen gem listens to file modifications and notifies you
12388about the changes.")
12389 (license license:expat)))
12390
12391(define-public ruby-terminfo
12392 (let ((commit "f4a597d92dcc465e7b343f9afb8cd45607c8e969")
12393 (revision "0"))
12394 (package
12395 (name "ruby-terminfo")
12396 (version (git-version "0.2" revision commit))
12397 (source
12398 (origin
12399 (method git-fetch)
12400 (uri
12401 (git-reference
12402 (url "https://github.com/genki/ruby-terminfo")
12403 (commit commit)))
12404 (file-name (git-file-name name version))
12405 (sha256
12406 (base32 "0b24sqf0jwj8m106nh35hjayw1kiyrpramb6vg7fnz32mqni6hdi"))))
12407 (build-system ruby-build-system)
12408 (arguments
12409 (list
12410 #:phases
12411 #~(modify-phases %standard-phases
12412 (delete 'replace-git-ls-files)
12413 (replace 'build
12414 (lambda _
12415 (invoke "ruby" "extconf.rb")
12416 (invoke "make")))
12417 (replace 'check
12418 (lambda* (#:key tests? #:allow-other-keys)
12419 (when tests?
12420 (for-each (lambda (f)
12421 (invoke "ruby" "-Ilib:test" "-Ilib:." f))
12422 (find-files "test" "^test_.*\\.rb$")))))
12423 (replace 'install
12424 (lambda _
12425 (invoke "make" "install" (string-append "prefix=" #$output)))))))
12426 (inputs
12427 (list ncurses))
12428 (native-inputs
12429 (list ruby-rubygems-tasks ruby-rdoc))
12430 (home-page "http://www.a-k-r.org/ruby-terminfo/")
12431 (synopsis "Terminfo binding for Ruby")
12432 (description "Ruby-terminfo provides terminfo binding for Ruby.")
12433 (license license:bsd-3))))
12434
12435(define-public ruby-diffy
12436 (package
12437 (name "ruby-diffy")
12438 (version "3.2.1")
12439 (source
12440 (origin
12441 (method url-fetch)
12442 (uri (rubygems-uri "diffy" version))
12443 (sha256
12444 (base32
12445 "119imrkn01agwhx5raxhknsi331y5i4yda7r0ws0an6905ximzjg"))))
12446 (build-system ruby-build-system)
12447 (arguments
12448 ;; No tests
12449 `(#:tests? #f))
12450 (native-inputs
12451 (list ruby-rspec))
12452 (home-page "https://github.com/samg/diffy")
12453 (synopsis "Convenient diffing in ruby")
12454 (description "Diffy provides a convenient way to generate a diff from two
12455strings or files.")
12456 (license license:expat)))
12457
12458(define-public ruby-sass-spec
12459 (package
12460 (name "ruby-sass-spec")
12461 (version "3.5.4")
12462 (source
12463 (origin
12464 (method git-fetch)
12465 (uri (git-reference
12466 (url "https://github.com/sass/sass-spec")
12467 (commit (string-append "v" version))))
12468 (file-name (git-file-name name version))
12469 (sha256
12470 (base32 "1zsw66830w0xlc7kxz6fm4b5nyb44vdsdgm9mgy06s5aixx83pwr"))))
12471 (build-system ruby-build-system)
12472 (propagated-inputs
12473 (list ruby-command-line-reporter-3
12474 ruby-diffy))
12475 (arguments
12476 (list
12477 ;; This package contains tests for a sass implementation, and the to
12478 ;; avoid any circular dependencies, the tests are not run here
12479 #:tests? #f
12480 #:phases
12481 #~(modify-phases %standard-phases
12482 (add-after 'unpack 'patch-test
12483 (lambda _
12484 (delete-file "spec/values/colors/alpha_hex-3.5/error")
12485 (substitute* "spec/values/colors/alpha_hex-3.5/expected_output.css"
12486 (("string") "color")))))))
12487 (home-page "https://github.com/sass/sass-spec")
12488 (synopsis "Test suite for Sass")
12489 (description "Sass Spec is a test suite for Sass. Test cases are all in
12490the @file{spec} directory.")
12491 (license license:expat)))
12492
12493(define-public ruby-sass
12494 (package
12495 (name "ruby-sass")
12496 (version "3.7.4")
12497 (source
12498 (origin
12499 (method git-fetch)
12500 (uri (git-reference
12501 (url "https://github.com/sass/ruby-sass")
12502 (commit version)))
12503 (file-name (git-file-name name version))
12504 (sha256
12505 (base32 "03215h9jkni3l9w6lq28p8adaj3qzb47qgxd20l6kldjnm1a1yky"))))
12506 (build-system ruby-build-system)
12507 (arguments
12508 (list #:test-target "test:ruby"))
12509 (propagated-inputs
12510 (list ruby-sass-listen))
12511 (native-inputs
12512 (list ruby-sass-spec ruby-mathn ruby-cmath))
12513 (home-page "https://sass-lang.com/")
12514 (synopsis "CSS extension language")
12515 (description "Sass is a CSS extension language. It extends CSS with
12516features that don't exist yet like variables, nesting, mixins and inheritance.")
12517 (license license:expat)))
12518
12519(define-public ruby-sassc
12520 (package
12521 (name "ruby-sassc")
12522 (version "2.4.0")
12523 (source
12524 (origin
12525 (method url-fetch)
12526 (uri (rubygems-uri "sassc" version))
12527 (sha256
12528 (base32
12529 "0gpqv48xhl8mb8qqhcifcp0pixn206a7imc07g48armklfqa4q2c"))))
12530 (build-system ruby-build-system)
12531 (arguments
12532 '(#:modules ((guix build ruby-build-system)
12533 (guix build utils)
12534 (ice-9 textual-ports))
12535 #:phases
12536 (modify-phases %standard-phases
12537 ;; TODO: This would be better as a snippet, but the ruby-build-system
12538 ;; doesn't seem to support that
12539 (add-after 'unpack 'remove-libsass
12540 (lambda _
12541 (delete-file-recursively "ext")
12542 (with-atomic-file-replacement "sassc.gemspec"
12543 (lambda (in out)
12544 (let* ((gemspec (get-string-all in))
12545 (index (string-contains gemspec "libsass_dir")))
12546 (display (string-append
12547 (string-take gemspec index)
12548 "\nend\n")
12549 out))))))
12550 (add-after 'unpack 'dont-check-the-libsass-version
12551 (lambda _
12552 (substitute* "test/native_test.rb"
12553 (("assert_equal.*Native\\.version") ""))))
12554 (add-after 'unpack 'remove-git-from-gemspec
12555 (lambda _
12556 (substitute* "sassc.gemspec"
12557 (("`git ls-files -z`") "`find . -type f -print0 |sort -z`"))))
12558 (add-after 'unpack 'remove-extensions-from-gemspec
12559 (lambda _
12560 (substitute* "sassc.gemspec"
12561 (("\\[\"ext/extconf.rb\"\\]") "[]"))))
12562 (add-after 'unpack 'fix-Rakefile
12563 (lambda _
12564 (substitute* "Rakefile"
12565 (("test: 'compile:libsass'") ":test"))))
12566 (add-after 'unpack 'remove-unnecessary-dependencies
12567 (lambda _
12568 (substitute* "test/test_helper.rb"
12569 (("require \"pry\"") ""))))
12570 (add-before 'build 'patch-native.rb
12571 (lambda* (#:key inputs #:allow-other-keys)
12572 (substitute* "lib/sassc/native.rb"
12573 ((".*gem_root = spec.gem_dir") "")
12574 (("ffi_lib .*\n")
12575 (string-append
12576 "ffi_lib '" (assoc-ref inputs "libsass") "/lib/libsass.so'")))))
12577 ;; The gemspec still references the libsass files, so just keep the
12578 ;; one in the gem.
12579 (delete 'extract-gemspec))))
12580 (propagated-inputs
12581 (list ruby-ffi ruby-rake))
12582 (inputs
12583 (list libsass))
12584 (native-inputs
12585 (list bundler ruby-rake-compiler ruby-minitest-around
12586 ruby-test-construct))
12587 (synopsis "Use libsss from Ruby")
12588 (description
12589 "This library provides Ruby q@acronym{FFI, Foreign Function Interface}
12590bindings to the libsass library. This enables rendering
12591@acronym{SASS,Syntactically awesome style sheets} from Ruby code.")
12592 (home-page "https://github.com/sass/sassc-ruby")
12593 (license license:expat)))
12594
12595(define-public ruby-jekyll-sass-converter
12596 (package
12597 (name "ruby-jekyll-sass-converter")
12598 (version "2.1.0")
12599 (source (origin
12600 (method url-fetch)
12601 (uri (rubygems-uri "jekyll-sass-converter" version))
12602 (sha256
12603 (base32
12604 "04ncr44wrilz26ayqwlg7379yjnkb29mvx4j04i62b7czmdrc9dv"))))
12605 (build-system ruby-build-system)
12606 (propagated-inputs
12607 (list ruby-sass))
12608 (arguments
12609 ;; No rakefile
12610 `(#:tests? #f))
12611 (home-page "https://github.com/jekyll/jekyll-sass-converter")
12612 (synopsis "Sass converter for Jekyll")
12613 (description "This gem provide built-in support for the Sass converter
12614in Jekyll.")
12615 (license license:expat)))
12616
12617(define-public ruby-jekyll-watch
12618 (package
12619 (name "ruby-jekyll-watch")
12620 (version "2.1.2")
12621 (source (origin
12622 (method url-fetch)
12623 (uri (rubygems-uri "jekyll-watch" version))
12624 (sha256
12625 (base32
12626 "1s9ly83sp8albvgdff12xy2h4xd8lm6z2fah4lzmk2yvp85jzdzv"))))
12627 (build-system ruby-build-system)
12628 (propagated-inputs
12629 (list ruby-listen))
12630 (arguments
12631 ;; No rakefile
12632 `(#:tests? #f))
12633 (home-page "https://github.com/jekyll/jekyll-watch")
12634 (synopsis "Jekyll auto-rebuild support")
12635 (description "This gems add the @code{--watch} switch to the jekyll CLI
12636interface. It allows Jekyll to rebuild your site when a file changes.")
12637 (license license:expat)))
12638
12639(define-public ruby-parallel
12640 (package
12641 (name "ruby-parallel")
12642 (version "1.21.0")
12643 (source
12644 (origin
12645 (method git-fetch)
12646 (uri (git-reference
12647 (url "https://github.com/grosser/parallel")
12648 (commit (string-append "v" version))))
12649 (file-name (git-file-name name version))
12650 (sha256
12651 (base32
12652 "1xqjcvl3gq3shvrqp8wc3fbqibzh4mf1yczq6np9gd79558dwj3w"))))
12653 (build-system ruby-build-system)
12654 (arguments
12655 `(;; TODO 3 test failures
12656 ;; rspec ./spec/parallel_spec.rb:190 # Parallel.in_processes does not
12657 ;; open unnecessary pipes
12658 ;; rspec './spec/parallel_spec.rb[1:9:7]' # Parallel.each works with
12659 ;; SQLite in processes
12660 ;; rspec './spec/parallel_spec.rb[1:9:16]' # Parallel.each works with
12661 ;; SQLite in threads
12662 #:tests? #f
12663 #:test-target "rspec-rerun:spec"
12664 #:phases
12665 (modify-phases %standard-phases
12666 (add-after 'unpack 'patch-Gemfile
12667 (lambda _
12668 (substitute* "Gemfile"
12669 (("gem 'rspec-legacy_formatters'") "")
12670 (("gem 'activerecord.*$") "gem 'activerecord'\n"))))
12671 (add-before 'check 'delete-Gemfile.lock
12672 (lambda _
12673 ;; Bundler isn't being used for fetching dependencies, so
12674 ;; delete the Gemfile.lock
12675 (delete-file "Gemfile.lock")))
12676 (add-before 'build 'patch-gemspec
12677 (lambda _
12678 (substitute* "parallel.gemspec"
12679 (("git ls-files") "find")))))))
12680 (native-inputs
12681 (list ruby-rspec
12682 ruby-rspec-rerun
12683 bundler
12684 ruby-activerecord
12685 ruby-progressbar
12686 ruby-bump
12687 procps
12688 lsof
12689 ruby-mysql2
12690 ruby-sqlite3
12691 ruby-i18n))
12692 (home-page "https://github.com/grosser/parallel")
12693 (synopsis "Parallel processing in Ruby")
12694 (description "Parallel allows you to run any code in parallel Processes
12695(to use all CPUs) or Threads(to speedup blocking operations). It is best
12696suited for map-reduce or e.g. parallel downloads/uploads.")
12697 (license license:expat)))
12698
12699(define-public ruby-cabin
12700 (package
12701 (name "ruby-cabin")
12702 (version "0.9.0")
12703 (source (origin
12704 (method url-fetch)
12705 (uri (rubygems-uri "cabin" version))
12706 (sha256
12707 (base32
12708 "0b3b8j3iqnagjfn1261b9ncaac9g44zrx1kcg81yg4z9i513kici"))))
12709 (build-system ruby-build-system)
12710 (arguments (list #:tests? #f)) ;no Rakefile in released gem
12711 (synopsis "Structured and contextual logging experiments in Ruby")
12712 (description "This Ruby library provides an experimental logging system
12713that tries to make logging more flexible and more consumable than plain-text
12714logging.")
12715 (home-page "https://github.com/jordansissel/ruby-cabin")
12716 (license license:asl2.0)))
12717
12718(define-public ruby-capybara
12719 (package
12720 (name "ruby-capybara")
12721 (version "3.38.0")
12722 (source (origin
12723 (method url-fetch)
12724 (uri (rubygems-uri "capybara" version))
12725 (sha256
12726 (base32
12727 "123198zk2ak8mziwa5jc3ckgpmsg08zn064n3aywnqm9s1bwjv3v"))))
12728 (build-system ruby-build-system)
12729 (arguments
12730 (list #:tests? #f ;sinatra is currently broken with rack 3
12731 #:phases
12732 #~(modify-phases %standard-phases
12733 (add-after 'extract-gemspec 'remove-extraneous-requirements
12734 (lambda _
12735 (substitute* "spec/spec_helper.rb"
12736 ((".*require 'selenium_statistics'.*") "")
12737 ((".*SeleniumStatistics.print_results.*") ""))))
12738 (replace 'check
12739 (lambda* (#:key tests? #:allow-other-keys)
12740 (when tests?
12741 (invoke "rspec" "spec")))))))
12742 (native-inputs
12743 (list ruby-puma
12744 ruby-rspec
12745 ruby-selenium-webdriver
12746 ruby-sinatra))
12747 (propagated-inputs
12748 (list ruby-addressable
12749 ruby-launchy
12750 ruby-matrix
12751 ruby-mini-mime
12752 ruby-nokogiri
12753 ruby-rack
12754 ruby-rack-test
12755 ruby-regexp-parser
12756 ruby-xpath))
12757 (synopsis "Integration testing tool for rack-based web applications")
12758 (description "Capybara is an integration testing tool for rack based web
12759applications. It simulates how a user would interact with a website.")
12760 (home-page "https://github.com/teamcapybara/capybara")
12761 (license license:expat)))
12762
12763(define-public ruby-cane
12764 (package
12765 (name "ruby-cane")
12766 (version "3.0.0")
12767 (source (origin
12768 (method url-fetch)
12769 (uri (rubygems-uri "cane" version))
12770 (sha256
12771 (base32
12772 "0yf5za3l7lhrqa3g56sah73wh33lbxy5y3cb7ij0a2bp1b4kwhih"))))
12773 (build-system ruby-build-system)
12774 (arguments `(#:tests? #f)); No rakefile
12775 (home-page "https://github.com/square/cane")
12776 (propagated-inputs
12777 (list ruby-parallel))
12778 (synopsis "Code quality threshold checking")
12779 (description "Cane fails your build if code quality thresholds are not met.")
12780 (license license:asl2.0)))
12781
12782(define-public ruby-morecane
12783 (package
12784 (name "ruby-morecane")
12785 (version "0.2.0")
12786 (source (origin
12787 (method url-fetch)
12788 (uri (rubygems-uri "morecane" version))
12789 (sha256
12790 (base32
12791 "0w70vb8z5bdhvr21h660aa43m5948pv0bd27z7ngai2iwdvqd771"))))
12792 (build-system ruby-build-system)
12793 (home-page "https://github.com/yob/morecane")
12794 (arguments `(#:tests? #f)); No rakefile
12795 (propagated-inputs
12796 (list ruby-parallel))
12797 (synopsis "Extra checks for cane")
12798 (description "The cane gem provides a great framework for running quality
12799checks over your ruby project as part of continuous integration build. It
12800comes with a few checks out of the box, but also provides an API for loading
12801custom checks. This gem provides a set of additional checks.")
12802 (license license:expat)))
12803
12804(define-public ruby-pdf-reader
12805 (package
12806 (name "ruby-pdf-reader")
12807 (version "2.4.0")
12808 (source (origin
12809 (method git-fetch) ;no test in distributed gem archive
12810 (uri (git-reference
12811 (url "https://github.com/yob/pdf-reader")
12812 (commit (string-append "v" version))))
12813 (file-name (git-file-name name version))
12814 (sha256
12815 (base32
12816 "1yh8yrlssf5ppnkvk4m78vmh5r5vqwdcd0gm3lqipw162llz0rai"))))
12817 (build-system ruby-build-system)
12818 (arguments `(#:test-target "spec"
12819 #:phases (modify-phases %standard-phases
12820 (add-after 'unpack 'do-not-use-bundler
12821 (lambda _
12822 (substitute* "spec/spec_helper.rb"
12823 ((".*[Bb]undler.*") "")))))))
12824 (native-inputs
12825 (list ruby-rspec ruby-cane ruby-morecane))
12826 (propagated-inputs
12827 (list ruby-afm ruby-ascii85 ruby-hashery ruby-rc4 ruby-ttfunk))
12828 (home-page "https://github.com/yob/pdf-reader")
12829 (synopsis "PDF parser in Ruby")
12830 (description "The PDF::Reader library implements a PDF parser conforming as
12831much as possible to the PDF specification from Adobe. It provides programmatic
12832access to the contents of a PDF file with a high degree of flexibility.")
12833 (license license:gpl3+)))
12834
12835(define-public ruby-pdf-inspector
12836 (let ((revision "1")
12837 (commit "00ee4c92ff917118785ebec188e81effc968abeb"))
12838 (package
12839 (name "ruby-pdf-inspector")
12840 (version (git-version "1.3.0" revision commit))
12841 (source (origin
12842 (method git-fetch)
12843 (uri (git-reference
12844 (url "https://github.com/prawnpdf/pdf-inspector")
12845 (commit commit)))
12846 (file-name (git-file-name name version))
12847 (sha256
12848 (base32
12849 "0h9w81ddd0gvkh5n2cvny9ddb5qiac1si0dhinkk0xxh5382qs0m"))))
12850 (build-system ruby-build-system)
12851 (arguments
12852 `(#:test-target "spec"
12853 #:phases (modify-phases %standard-phases
12854 (add-before 'build 'drop-signing-key-requirement
12855 (lambda _
12856 (substitute* "pdf-inspector.gemspec"
12857 (("spec.signing_key =.*")
12858 "spec.signing_key = nil"))))
12859 (replace 'check
12860 (lambda _
12861 (substitute* "pdf-inspector.gemspec"
12862 ((".*rubocop.*") "")
12863 ((".*yard.*") ""))
12864 (invoke "rspec"))))))
12865 (native-inputs
12866 (list ruby-rspec))
12867 (propagated-inputs
12868 (list ruby-pdf-reader))
12869 (home-page "https://github.com/prawnpdf/pdf-inspector")
12870 (synopsis "Analysis classes for inspecting PDF output")
12871 (description "This library provides a number of PDF::Reader based tools for
12872use in testing PDF output. Presently, the primary purpose of this tool is to
12873support the tests found in Prawn, a pure Ruby PDF generation library.")
12874 (license %prawn-project-licenses))))
12875
12876(define-public ruby-pdf-core
12877 (package
12878 (name "ruby-pdf-core")
12879 (version "0.9.0")
12880 (source (origin
12881 (method url-fetch)
12882 (uri (rubygems-uri "pdf-core" version))
12883 (sha256
12884 (base32
12885 "1fz0yj4zrlii2j08kaw11j769s373ayz8jrdhxwwjzmm28pqndjg"))))
12886 (build-system ruby-build-system)
12887 (arguments
12888 ; No test target
12889 `(#:tests? #f))
12890 (home-page "https://github.com/prawnpdf/pdf-core")
12891 (synopsis "Low level PDF features for Prawn")
12892 (description "This is an experimental gem that extracts low-level PDF
12893functionality from Prawn.")
12894 (license license:gpl3+)))
12895
12896(define-public ruby-prawn-dev
12897 (package
12898 (name "ruby-prawn-dev")
12899 (version "0.3.0")
12900 (source (origin
12901 (method url-fetch)
12902 (uri (rubygems-uri "prawn-dev" version))
12903 (sha256
12904 (base32
12905 "1hbzzgm0nwc6h8pyv8h9xx068bf676rispxcz4a0sm8nykz54z4x"))))
12906 (build-system ruby-build-system)
12907 (arguments
12908 (list
12909 #:tests? #f ;no test suite
12910 #:phases
12911 #~(modify-phases %standard-phases
12912 (add-after 'extract-gemspec 'drop-rubocop-dependency
12913 ;; Rubocop depends on Prawn. Remove it to avoid the
12914 ;; dependency cycle when using this tool to build
12915 ;; Prawn components.
12916 (lambda _
12917 (substitute* "lib/prawn/dev/tasks.rb"
12918 (("require 'rubocop/rake_task'")
12919 "")
12920 (("RuboCop::RakeTask.new")
12921 ""))
12922 (substitute* ".gemspec"
12923 ((".*add.*dependency.*(rubocop|simplecov).*")
12924 "")))))))
12925 (propagated-inputs (list ruby-rake ruby-rspec ruby-yard))
12926 (synopsis "Shared tools for Prawn projects development")
12927 (description "Prawn-dev contains tools to aid the development of the
12928various Prawn projects.")
12929 (home-page "https://prawnpdf.org/")
12930 (license license:expat)))
12931
12932(define-public ruby-prawn
12933 ;; There hasn't been a new release since 2017/03/17.
12934 (package
12935 (name "ruby-prawn")
12936 (version "2.4.0")
12937 (source (origin
12938 (method git-fetch)
12939 (uri (git-reference
12940 (url "https://github.com/prawnpdf/prawn")
12941 (commit version)))
12942 (file-name (git-file-name name version))
12943 (sha256
12944 (base32
12945 "1h1gww12wcdscij0lnd21p9zcbwrwc3miini5ppannc2birmj9ja"))))
12946 (build-system ruby-build-system)
12947 (arguments
12948 (list
12949 #:phases
12950 #~(modify-phases %standard-phases
12951 (add-before 'build 'drop-signing-key-requirement
12952 (lambda _
12953 (substitute* "prawn.gemspec"
12954 (("spec.signing_key =.*")
12955 "spec.signing_key = nil"))))
12956 (replace 'check
12957 (lambda* (#:key tests? #:allow-other-keys)
12958 (when tests?
12959 ;; The Prawn manual test fails (see:
12960 ;; https://github.com/prawnpdf/prawn/issues/1163), so exclude
12961 ;; it.
12962 (invoke "rspec"
12963 "--exclude-pattern" "prawn_manual_spec.rb")))))))
12964 (propagated-inputs
12965 (list ruby-matrix
12966 ruby-pdf-core
12967 ruby-ttfunk))
12968 (native-inputs
12969 (list ruby-pdf-inspector
12970 ruby-prawn-manual-builder
12971 ruby-prawn-dev))
12972 (home-page "https://prawnpdf.org/api-docs/2.0/")
12973 (synopsis "PDF generation for Ruby")
12974 (description "Prawn is a pure Ruby PDF generation library.")
12975 (license %prawn-project-licenses)))
12976
12977(define-public ruby-prawn-table
12978 (package
12979 (name "ruby-prawn-table")
12980 (version "0.2.2")
12981 (source (origin
12982 (method url-fetch)
12983 (uri (rubygems-uri "prawn-table" version))
12984 (sha256
12985 (base32
12986 "1nxd6qmxqwl850icp18wjh5k0s3amxcajdrkjyzpfgq0kvilcv9k"))))
12987 (build-system ruby-build-system)
12988 (propagated-inputs
12989 (list ruby-prawn ruby-pdf-inspector))
12990 (native-inputs
12991 `(("bundler" ,bundler)
12992 ("ruby-yard" ,ruby-yard)
12993 ("ruby-mocha" ,ruby-mocha)
12994 ("ruby-coderay" ,ruby-coderay)
12995 ("ruby-prawn-manual-builder" ,ruby-prawn-manual-builder)
12996 ("ruby-simplecov" ,ruby-simplecov)
12997 ("ruby-rspec-2" ,ruby-rspec-2)))
12998 (arguments
12999 '(;; TODO: 1 test fails
13000 ;; Failure/Error: pdf.page_count.should == 1
13001 ;; expected: 1
13002 ;; got: 2 (using ==)
13003 ;; # ./spec/table_spec.rb:1308
13004 ;;
13005 ;; 225 examples, 1 failure
13006 #:tests? #f
13007 #:phases
13008 (modify-phases %standard-phases
13009 (add-before 'check 'patch-gemspec
13010 (lambda _
13011 (substitute* "prawn-table.gemspec"
13012 ;; Loosen the requirement for pdf-inspector
13013 (("~> 1\\.1\\.0") ">= 0")
13014 ;; Loosen the requirement for pdf-reader
13015 (("~> 1\\.2") ">= 0"))))
13016 (replace 'check
13017 (lambda* (#:key tests? #:allow-other-keys)
13018 (when tests?
13019 (invoke "rspec")))))))
13020 (home-page "https://github.com/prawnpdf/prawn-table")
13021 (synopsis "Tables support for Prawn")
13022 (description "This gem provides tables support for Prawn.")
13023 (license license:gpl3+)))
13024
13025(define-public ruby-kramdown
13026 (package
13027 (name "ruby-kramdown")
13028 (version "2.3.1")
13029 (source (origin
13030 (method url-fetch)
13031 (uri (rubygems-uri "kramdown" version))
13032 (sha256
13033 (base32
13034 "0jdbcjv4v7sj888bv3vc6d1dg4ackkh7ywlmn9ln2g9alk7kisar"))))
13035 (build-system ruby-build-system)
13036 (arguments `(#:tests? #f)); FIXME: some test failures
13037 (native-inputs
13038 (list ruby-prawn ruby-prawn-table))
13039 (home-page "https://kramdown.gettalong.org/")
13040 (synopsis "Markdown parsing and converting library")
13041 (description "Kramdown is a library for parsing and converting a superset
13042of Markdown. It is completely written in Ruby, supports standard Markdown
13043(with some minor modifications) and various extensions that have been made
13044popular by the PHP @code{Markdown Extra} package and @code{Maruku}.")
13045 (license license:expat)))
13046
13047(define-public ruby-kramdown-parser-gfm
13048 (package
13049 (name "ruby-kramdown-parser-gfm")
13050 (version "1.1.0")
13051 (source
13052 (origin
13053 (method url-fetch)
13054 (uri (rubygems-uri "kramdown-parser-gfm" version))
13055 (sha256
13056 (base32 "0a8pb3v951f4x7h968rqfsa19c8arz21zw1vaj42jza22rap8fgv"))))
13057 (build-system ruby-build-system)
13058 (arguments
13059 `(#:tests? #f)) ;no rakefile
13060 (propagated-inputs
13061 (list ruby-kramdown))
13062 (synopsis "Kramdown parser for the GFM dialect of Markdown")
13063 (description
13064 "This is a parser for kramdown that converts Markdown documents in the
13065GFM dialect to HTML.")
13066 (home-page "https://github.com/kramdown/parser-gfm")
13067 (license license:expat)))
13068
13069(define-public ruby-http-parser.rb
13070 (package
13071 (name "ruby-http-parser.rb")
13072 (version "0.6.0")
13073 (source
13074 (origin
13075 (method url-fetch)
13076 (uri (rubygems-uri "http_parser.rb" version))
13077 (sha256
13078 (base32
13079 "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi"))))
13080 (build-system ruby-build-system)
13081 (arguments
13082 ;; No tests
13083 `(#:tests? #f))
13084 (native-inputs
13085 (list ruby-rake-compiler ruby-rspec))
13086 (home-page "https://github.com/tmm1/http_parser.rb")
13087 (synopsis "HTTP parser un Ruby")
13088 (description "This gem is a simple callback-based HTTP request/response
13089parser for writing http servers, clients and proxies.")
13090 (license license:expat)))
13091
13092(define-public ruby-excon
13093 (package
13094 (name "ruby-excon")
13095 (version "0.109.0")
13096 (source (origin
13097 (method git-fetch) ;for tests
13098 (uri (git-reference
13099 (url "https://github.com/excon/excon")
13100 (commit (string-append "v" version))))
13101 (file-name (git-file-name name version))
13102 (sha256
13103 (base32
13104 "199niqbpzj70k3n6ybg4vbcw3qm76kwic4nl9747l1n0v49aaj24"))))
13105 (build-system ruby-build-system)
13106 (arguments
13107 (list
13108 #:tests? #f ;; some tests require DNS
13109 #:phases
13110 #~(modify-phases %standard-phases
13111 (replace 'replace-git-ls-files
13112 (lambda _
13113 (substitute* "excon.gemspec"
13114 (("`git ls-files -- data/. lib/.`")
13115 "`find data lib -type f`"))))
13116 (add-before 'check 'disable-server-spec-checks
13117 (lambda _ ;; TODO: Remove this if ruby-unicorn is available.
13118 ;; Some of the tests in this file require ruby-unicorn, which is
13119 ;; not yet packaged for guix and would pull in a lot of other
13120 ;; dependencies.
13121 (delete-file "spec/excon/test/server_spec.rb"))))))
13122 (native-inputs
13123 (list
13124 ruby-activesupport
13125 ruby-eventmachine
13126 ruby-json
13127 ruby-open4
13128 ruby-puma
13129 ruby-rspec
13130 ruby-shindo
13131 ruby-sinatra
13132 ruby-webrick))
13133 (synopsis "Usable, fast, simple Ruby HTTP 1.1")
13134 (description "Excon was designed to be simple, fast and performant. It
13135works great as a general HTTP(s) client and is particularly well suited to
13136usage in API clients.")
13137 (home-page "https://github.com/excon/excon")
13138 (license license:expat)))
13139
13140(define-public ruby-em-websocket
13141 (package
13142 (name "ruby-em-websocket")
13143 (version "0.5.1")
13144 (source
13145 (origin
13146 (method url-fetch)
13147 (uri (rubygems-uri "em-websocket" version))
13148 (sha256
13149 (base32
13150 "1bsw8vjz0z267j40nhbmrvfz7dvacq4p0pagvyp17jif6mj6v7n3"))))
13151 (build-system ruby-build-system)
13152 (arguments
13153 ;; No tests
13154 `(#:tests? #f))
13155 (propagated-inputs
13156 (list ruby-eventmachine ruby-http-parser.rb))
13157 (native-inputs
13158 (list bundler ruby-rspec))
13159 (home-page "https://github.com/igrigorik/em-websocket")
13160 (synopsis "EventMachine based WebSocket server")
13161 (description "Em-websocket is an EventMachine based WebSocket server
13162implementation.")
13163 (license license:expat)))
13164
13165(define-public ruby-rouge
13166 (package
13167 (name "ruby-rouge")
13168 (version "3.26.1")
13169 (source (origin
13170 (method url-fetch)
13171 (uri (rubygems-uri "rouge" version))
13172 (sha256
13173 (base32
13174 "197k0vskf72wxx0gzwld2jzg27bb7982xlvnzy9adlvkzp7nh8vf"))))
13175 (build-system ruby-build-system)
13176 (arguments `(#:tests? #f)); No rakefile
13177 (home-page "http://rouge.jneen.net/")
13178 (synopsis "Code highlighter")
13179 (description "Rouge is a code highlighter written in Ruby. It supports more
13180than 100 languages and outputs HTML or ANSI 256-color text. Its HTML output
13181is compatible with stylesheets designed for pygments.")
13182 (license (list
13183 ;; rouge is licensed under expat
13184 license:expat
13185 ;; pygments is licensed under bsd-2
13186 license:bsd-2))))
13187
13188(define-public ruby-hashie
13189 (let ((commit "73510552ba580867e9882fe092568916cbcd810b")
13190 (revision "0"))
13191 (package
13192 (name "ruby-hashie")
13193 (version (git-version "5.0.0" revision commit))
13194 (source (origin
13195 (method git-fetch) ;for tests
13196 (uri (git-reference
13197 (url "https://github.com/hashie/hashie")
13198 (commit commit)))
13199 (file-name (git-file-name name version))
13200 (sha256
13201 (base32
13202 "08rpx040h6vgx6ynk6w029f7z7c8aj2p4v135k2l1zxvnw617ddw"))))
13203 (build-system ruby-build-system)
13204 (arguments
13205 (list #:test-target "spec"
13206 #:phases #~(modify-phases %standard-phases
13207 (add-after 'unpack 'disable-bundler
13208 (lambda _
13209 (substitute* "Rakefile"
13210 ((".*require 'bundler'.*") "")
13211 ((".*Bundler.setup.*") "")
13212 (("Bundler::GemHelper\\.install_tasks") ""))))
13213 (add-after 'unpack 'disable-rubocop
13214 (lambda _
13215 (substitute* "Rakefile"
13216 (("require 'rubocop/rake_task'") "")
13217 (("RuboCop::RakeTask.new") ""))))
13218 (add-after 'unpack 'relax-requirements
13219 (lambda _
13220 ;; Contains multiple extraneous dependencies.
13221 (delete-file "Gemfile"))))))
13222 (native-inputs (list ruby-json ruby-pry ruby-rspec ruby-rspec-pending-for))
13223 (home-page "https://github.com/hashie/hashie")
13224 (synopsis "Extensions to Ruby Hashes")
13225 (description "Hashie is a collection of classes and mixins that make Ruby
13226hashes more powerful.")
13227 (license license:expat))))
13228
13229(define-public ruby-heredoc-unindent
13230 (package
13231 (name "ruby-heredoc-unindent")
13232 (version "1.2.0")
13233 (source (origin
13234 (method url-fetch)
13235 (uri (rubygems-uri "heredoc_unindent" version))
13236 (sha256
13237 (base32
13238 "14ijr2fsjwhrkjkcaz81d5xnfa4vvgvcflrff83avqw9klm011yw"))))
13239 (build-system ruby-build-system)
13240 (native-inputs
13241 (list ruby-hoe-3))
13242 (home-page "https://github.com/adrianomitre/heredoc_unindent")
13243 (synopsis "Heredoc indentation cleaner")
13244 (description "This gem removes common margin from indented strings, such
13245as the ones produced by indented heredocs. In other words, it strips out
13246leading whitespace chars at the beginning of each line, but only as much as
13247the line with the smallest margin.
13248
13249It is acknowledged that many strings defined by heredocs are just code and
13250fact is that most parsers are insensitive to indentation. If, however, the
13251strings are to be used otherwise, be it for printing or testing, the extra
13252indentation will probably be an issue and hence this gem.")
13253 (license license:expat)))
13254
13255(define-public ruby-safe-yaml
13256 (package
13257 (name "ruby-safe-yaml")
13258 (version "1.0.5")
13259 (source
13260 (origin
13261 (method git-fetch)
13262 (uri (git-reference
13263 (url "https://github.com/dtao/safe_yaml")
13264 (commit version)))
13265 (file-name (git-file-name name version))
13266 (sha256
13267 (base32
13268 "1a0wh7y3va2m7bjza95na2snw0vrdh9syz40mpjvjphbc4ph3pzg"))))
13269 (build-system ruby-build-system)
13270 (native-inputs
13271 (list ruby-rspec ruby-hashie ruby-heredoc-unindent))
13272 (arguments
13273 (list
13274 ;; Tests are broken since the move to ruby@3.
13275 ;; There's ongoing effort on the Jekyll dependent
13276 ;; to remove this orphan dependency.
13277 #:tests? #f ; broken since move to ruby@3
13278 #:test-target "spec"
13279 #:phases
13280 #~(modify-phases %standard-phases
13281 (add-before 'check 'set-TZ
13282 (lambda _
13283 ;; This test is dependent on the timezone
13284 ;; spec/transform/to_date_spec.rb:35
13285 ;; # SafeYAML::Transform::ToDate converts times to the local
13286 ;; timezone
13287 (setenv "TZ" "UTC-11"))))))
13288 (home-page "https://github.com/dtao/safe_yaml")
13289 (synopsis "YAML parser")
13290 (description "The SafeYAML gem provides an alternative implementation of
13291YAML.load suitable for accepting user input in Ruby applications.")
13292 (license license:expat)))
13293
13294(define-public ruby-yaml-lint
13295 ;; No tags for releases.
13296 (let ((commit "d6a253f7d33234a9c24660d582cf7014e882c0c2")
13297 (revision "0"))
13298 (package
13299 (name "ruby-yaml-lint")
13300 (version (git-version "0.1.2" revision commit))
13301 (source
13302 (origin
13303 (method git-fetch)
13304 (uri (git-reference
13305 (url "https://github.com/Pryz/yaml-lint")
13306 (commit commit)))
13307 (file-name (git-file-name name version))
13308 (sha256
13309 (base32 "0zk0jwzmcaaiyixjvkzdb54xhiqcnjkma72nkv0vm5csaphfdjkx"))))
13310 (build-system ruby-build-system)
13311 (arguments
13312 `(#:phases
13313 (modify-phases %standard-phases
13314 (replace 'check
13315 (lambda* (#:key tests? #:allow-other-keys)
13316 (when tests?
13317 (invoke "rspec")))))))
13318 (native-inputs
13319 (list ruby-coveralls ruby-rspec ruby-simplecov))
13320 (synopsis "Simple YAML check tool")
13321 (description
13322 "@code{yaml-lint} will simply try to load the YAML file with the built-in
13323Ruby yaml library.")
13324 (home-page "https://github.com/Pryz/yaml-lint")
13325 (license license:expat))))
13326
13327(define-public ruby-matrix
13328 (package
13329 (name "ruby-matrix")
13330 (version "0.4.2")
13331 (source (origin
13332 (method git-fetch) ;for tests
13333 (uri (git-reference
13334 (url "https://github.com/ruby/matrix")
13335 (commit (string-append "v" version))))
13336 (file-name (git-file-name name version))
13337 (sha256
13338 (base32
13339 "1asxr0jzh39lk5f8a9wm5avykrcy0v2wgd1bl3cszjczh99xy5k2"))))
13340 (build-system ruby-build-system)
13341 (synopsis "@code{Matrix} and @code{Vector} classes implementation for Ruby")
13342 (description "This Ruby library provides an implementation of the
13343@code{Matrix} and @code{Vector} classes. The @code{Matrix} class represents a
13344mathematical matrix. It provides methods for creating matrices, operating on
13345them arithmetically and algebraically, and determining their mathematical
13346properties (trace, rank, inverse, determinant, eigensystem, etc.). The
13347@code{Vector} class represents a mathematical vector, which is useful in its
13348own right, and also constitutes a row or column of a @code{Matrix}.")
13349 (home-page "https://github.com/ruby/matrix")
13350 (license license:bsd-2)))
13351
13352(define-public ruby-m
13353 (package
13354 (name "ruby-m")
13355 (version "1.6.1")
13356 (source (origin
13357 (method git-fetch) ;for tests
13358 (uri (git-reference
13359 (url "https://github.com/qrush/m")
13360 (commit (string-append "v" version))))
13361 (file-name (git-file-name name version))
13362 (sha256
13363 (base32
13364 "1aycfc8l1bsln1y300fv75fknn4amjcvc4rm2kd8hb6cqivjq5rg"))))
13365 (build-system ruby-build-system)
13366 (arguments
13367 (list
13368 #:phases
13369 #~(modify-phases %standard-phases
13370 (add-after 'unpack 'sanitize-dependencies
13371 (lambda _
13372 (delete-file "Gemfile")
13373 (delete-file "Gemfile.lock")
13374 ;; Rocco is unmaintained as of 2023/01/08; avoid depending on
13375 ;; it.
13376 (substitute* "m.gemspec"
13377 ;; The rdiscount and rocco dependencies are used for
13378 ;; generating the documentation.
13379 ((".*rdiscount.*") "")
13380 ((".*rocco.*") "")
13381 ((".*appraisal.*") "")
13382 ((".*coveralls.*") ""))
13383 (substitute* "Rakefile"
13384 ;; ruby-appraisal is not packaged, and is used to test against
13385 ;; various dependencies; circumvent its use.
13386 ((".*require 'appraisal'.*") "")
13387 ((".*require 'coveralls'.*") "")
13388 (("appraisal [:graphic:]+ rake")
13389 "rake")
13390 (("Coveralls.push!") ""))))
13391 (add-before 'replace-git-ls-files 'pre-replace-git-ls-files
13392 (lambda _
13393 (substitute* "m.gemspec"
13394 (("git ls-files -- bin/\\*")
13395 "find bin -type f -not -regex '.*\\.gem$' | sort")
13396 (("git ls-files -- \\{test,spec,features}/\\*")
13397 "find test -type f -not -regex '.*\\.gem$' | sort"))))
13398 (delete 'check)
13399 (add-after 'install 'check
13400 (lambda* (#:key tests? #:allow-other-keys)
13401 (setenv "GEM_PATH" (string-append
13402 (getenv "GEM_PATH") ":"
13403 #$output "/lib/ruby/vendor_ruby"))
13404 (when tests?
13405 (invoke "rake" "test")))))))
13406 (native-inputs (list ruby-activesupport))
13407 (propagated-inputs (list ruby-method-source ruby-rake))
13408 (synopsis "Ruby test runner that can run tests by line number")
13409 (description "@code{m} stands for metal, a better test/unit and
13410@code{minitest} test runner that can run tests by line number.")
13411 (home-page "https://github.com/qrush/m")
13412 (license license:expat)))
13413
13414(define-public ruby-mercenary
13415 (package
13416 (name "ruby-mercenary")
13417 (version "0.4.0")
13418 (source (origin
13419 (method url-fetch)
13420 (uri (rubygems-uri "mercenary" version))
13421 (sha256
13422 (base32
13423 "0f2i827w4lmsizrxixsrv2ssa3gk1b7lmqh8brk8ijmdb551wnmj"))))
13424 (build-system ruby-build-system)
13425 (arguments `(#:test-target "spec"))
13426 (native-inputs
13427 (list bundler))
13428 (home-page "https://github.com/jekyll/mercenary")
13429 (synopsis "Command-line apps library in Ruby")
13430 (description "Mercenary is a lightweight and flexible library for writing
13431command-line apps in Ruby.")
13432 (license license:expat)))
13433
13434(define-public ruby-launchy
13435 (package
13436 (name "ruby-launchy")
13437 (version "2.5.2")
13438 (source (origin
13439 (method url-fetch)
13440 (uri (rubygems-uri "launchy" version))
13441 (sha256
13442 (base32
13443 "06r43899384das2bkbrpsdxsafyyqa94il7111053idfalb4984a"))))
13444 (build-system ruby-build-system)
13445 (native-inputs (list curl links ruby-simplecov))
13446 (propagated-inputs (list ruby-addressable))
13447 (synopsis "Ruby helper class for launching applications")
13448 (description
13449 "Launchy is helper class for launching applications in a fire and forget
13450manner. The aim of Launchy is to provide a common approach to launching
13451external applications from within Ruby programs.")
13452 (home-page "https://github.com/copiousfreetime/launchy")
13453 (license license:isc)))
13454
13455(define-public ruby-liquid
13456 (package
13457 (name "ruby-liquid")
13458 (version "5.4.0")
13459 (source (origin
13460 (method git-fetch) ;for tests
13461 (uri (git-reference
13462 (url "https://github.com/Shopify/liquid")
13463 (commit (string-append "v" version))))
13464 (file-name (git-file-name name version))
13465 (sha256
13466 (base32
13467 "1qdnvd1f9zs6wyilcgxyh93wis7ikbpimjxfpbkpk2ngr1m2c8la"))))
13468 (build-system ruby-build-system)
13469 (arguments
13470 (list
13471 #:phases
13472 #~(modify-phases %standard-phases
13473 (delete 'check) ;moved after the install phase
13474 (add-after 'install 'check
13475 (assoc-ref %standard-phases 'check))
13476 (add-before 'check 'set-GEM_PATH
13477 (lambda _
13478 (setenv "GEM_PATH" (string-append
13479 (getenv "GEM_PATH") ":"
13480 #$output "/lib/ruby/vendor_ruby"))))
13481 (add-before 'check 'delete-problematic-tests
13482 (lambda _
13483 ;; The following test fails with 'Unknown tag' errors (see:
13484 ;; https://github.com/Shopify/liquid/issues/1699).
13485 (delete-file "test/integration/tags/inline_comment_test.rb"))))))
13486 (native-inputs (list ruby-liquid-c-bootstrap ruby-rspec ruby-stackprof))
13487 (home-page "https://shopify.github.io/liquid/")
13488 (synopsis "Template language")
13489 (description "Liquid is a template language written in Ruby. It is used
13490to load dynamic content on storefronts.")
13491 (license license:expat)))
13492
13493(define-public ruby-liquid-4
13494 (package
13495 (inherit ruby-liquid)
13496 (name "ruby-liquid")
13497 (version "4.0.4")
13498 (source (origin
13499 (method git-fetch) ;for tests
13500 (uri (git-reference
13501 (url "https://github.com/Shopify/liquid")
13502 (commit (string-append "v" version))))
13503 (file-name (git-file-name name version))
13504 (sha256
13505 (base32
13506 "0cr321nd0zkbxirgdfmz37xx7j26zfnicjh585fi20vx60frry83"))))
13507 (arguments (list #:tests? #f)))) ;avoid required an older ruby-liquid-c
13508
13509;;; This variant is purposefully incomplete, lacking ruby-liquid so that it
13510;;; can be used for ruby-liquid's test suite.
13511(define ruby-liquid-c-bootstrap
13512 (package
13513 (name "ruby-liquid-c-bootstrap")
13514 (version "4.1.0")
13515 (source (origin
13516 (method url-fetch)
13517 (uri (rubygems-uri "liquid-c" version))
13518 (sha256
13519 (base32
13520 "0jl37jz9hbfbhknryx4myxqx4n1f5dzyzmf1sapkcbw93xyrmkch"))))
13521 (build-system ruby-build-system)
13522 (arguments (list #:tests? #f))
13523 (native-inputs (list ruby-rake-compiler))
13524 (synopsis "Liquid performance extension in C")
13525 (description "This package provides a Partial native implementation of the
13526liquid ruby gem in C that makes it operate about three times faster.")
13527 (home-page "https://github.com/shopify/liquid-c")
13528 (license license:expat)))
13529
13530(define-public ruby-liquid-c
13531 (package/inherit ruby-liquid-c-bootstrap
13532 (name "ruby-liquid-c")
13533 (arguments
13534 (list
13535 ;; Only run the unit tests, because the test:integration target fails
13536 ;; with "File does not exist: test_helper" (see:
13537 ;; https://github.com/Shopify/liquid-c/issues/188).
13538 #:test-target "test:unit"
13539 #:phases
13540 #~(modify-phases %standard-phases
13541 (add-after 'extract-gemspec 'relax-requirements
13542 (lambda _
13543 (substitute* "Gemfile"
13544 ;; Do not attempt to fetch a gem from git.
13545 (("git_source\\(:github) do \\|repo_name\\|")
13546 "if false")
13547 ((", github: \"Shopify/liquid\", ref: \"master\"")
13548 "")
13549 ;; Remove extraneous dependencies.
13550 ((".*byebug.*") "")
13551 ((".*rubocop.*") "")
13552 ;; Relax spy version specification.
13553 (("gem \"spy\", \"0.4.1\"")
13554 "gem \"spy\", \">= 0.4.1\"")))))))
13555 (native-inputs
13556 (list ruby-benchmark-ips
13557 ruby-rake-compiler
13558 ruby-ruby-memcheck
13559 ruby-spy
13560 ruby-stackprof))
13561 (propagated-inputs
13562 (list ruby-liquid))))
13563
13564(define-public ruby-localhost
13565 (package
13566 (name "ruby-localhost")
13567 (version "1.1.10")
13568 (source (origin
13569 (method git-fetch) ;for tests
13570 (uri (git-reference
13571 (url "https://github.com/socketry/localhost")
13572 (commit (string-append "v" version))))
13573 (file-name (git-file-name name version))
13574 (sha256
13575 (base32
13576 "1yp70w15wpfk613ap5f4y15yx4n2qqwa67vqc2f4lv7npf3llcz0"))))
13577 (build-system ruby-build-system)
13578 (arguments
13579 ;; XXX: The test suite requires sus-fixtures-async, which requires async,
13580 ;; only available for Ruby 3.0.
13581 (list #:tests? #f
13582 #:phases
13583 #~(modify-phases %standard-phases
13584 (add-before 'build 'remove-missing-signing-key
13585 (lambda _
13586 ;; Otherwise, the build fails with ENOENT.
13587 (substitute* "localhost.gemspec"
13588 ((".*spec.signing_key.*") "")))))))
13589 (synopsis "API for generating per-user self-signed root certificates")
13590 (description "This package provides @code{localhost}, a Ruby library for
13591Managing a local certificate authority for self-signed, localhost development
13592servers.")
13593 (home-page "https://github.com/socketry/localhost")
13594 (license license:expat)))
13595
13596(define-public ruby-forwardable-extended
13597 (package
13598 (name "ruby-forwardable-extended")
13599 (version "2.6.0")
13600 (source (origin
13601 (method url-fetch)
13602 (uri (rubygems-uri "forwardable-extended" version))
13603 (sha256
13604 (base32
13605 "15zcqfxfvsnprwm8agia85x64vjzr2w0xn9vxfnxzgcv8s699v0v"))))
13606 (build-system ruby-build-system)
13607 (arguments `(#:tests? #f)); Cyclic dependency on luna-rspec-formatters
13608 (home-page "https://github.com/envygeeks/forwardable-extended")
13609 (synopsis "Delegation to hashes and instance variables in Forwardable")
13610 (description "Forwardable Extended provides more @code{Forwardable}
13611methods for your source as @code{Forwardable::Extended}.")
13612 (license license:expat)))
13613
13614(define-public ruby-pathutil
13615 (package
13616 (name "ruby-pathutil")
13617 (version "0.16.2")
13618 (source (origin
13619 (method url-fetch)
13620 (uri (rubygems-uri "pathutil" version))
13621 (sha256
13622 (base32
13623 "12fm93ljw9fbxmv2krki5k5wkvr7560qy8p4spvb9jiiaqv78fz4"))))
13624 (build-system ruby-build-system)
13625 (propagated-inputs
13626 (list ruby-forwardable-extended))
13627 (native-inputs
13628 (list bundler ruby-rspec))
13629 ;; Fails with: cannot load such file --
13630 ;; /tmp/guix-build-ruby-pathutil-0.16.0.drv-0/gem/benchmark/support/task
13631 (arguments `(#:tests? #f))
13632 (home-page "https://github.com/envygeeks/pathutil")
13633 (synopsis "Extended implementation of Pathname")
13634 (description "Pathutil tries to be a faster pure Ruby implementation of
13635Pathname.")
13636 (license license:expat)))
13637
13638(define-public ruby-terminal-table
13639 (package
13640 (name "ruby-terminal-table")
13641 (version "3.0.2")
13642 (source (origin
13643 (method git-fetch)
13644 (uri (git-reference
13645 (url "https://github.com/tj/terminal-table")
13646 (commit (string-append "v" version))))
13647 (file-name (git-file-name name version))
13648 (sha256
13649 (base32
13650 "1c3f7ng3lxq962n8sbmlsvjx6srh5i801wzsyhxmfz2g880f5jps"))))
13651 (arguments
13652 '(#:phases
13653 (modify-phases %standard-phases
13654 (add-before 'check 'remove-unnecessary-dependencies
13655 (lambda _
13656 (substitute* "terminal-table.gemspec"
13657 (("s.add_runtime_dependency.*") "\n")
13658 (("s.add_development_dependency.*") "\n"))
13659 (substitute* "Gemfile"
13660 ((".*tins.*") "\n"))))
13661 (replace 'check
13662 (lambda* (#:key tests? #:allow-other-keys)
13663 (when tests?
13664 (invoke "rspec")))))))
13665 (build-system ruby-build-system)
13666 (propagated-inputs
13667 (list ruby-unicode-display-width))
13668 (native-inputs
13669 (list ruby-rspec ruby-term-ansicolor))
13670 (home-page "https://github.com/tj/terminal-table")
13671 (synopsis "Simple, feature rich ASCII table generation library")
13672 (description
13673 "Terminal Table is a fast and simple, yet feature rich
13674table generator written in Ruby. It supports ASCII and
13675Unicode formatted tables.")
13676 (license license:expat)))
13677
13678(define-public jekyll
13679 (package
13680 (name "jekyll")
13681 (version "4.3.4")
13682 (source (origin
13683 (method git-fetch) ;for tests
13684 (uri (git-reference
13685 (url "https://github.com/jekyll/jekyll")
13686 (commit (string-append "v" version))))
13687 (file-name (git-file-name name version))
13688 (sha256
13689 (base32
13690 "0sz285x5ppbifrnixi9sdzv28kg4x3qbzds3qniiwh1ip9hi1yk4"))))
13691 (build-system ruby-build-system)
13692 (arguments
13693 (list #:modules '((guix build ruby-build-system)
13694 (guix build utils)
13695 (ice-9 ftw)
13696 (srfi srfi-26))
13697 ;; The cucumber acceptance suite is not run as it depends on an old
13698 ;; version (5).
13699 #:test-target "spec"
13700 #:phases
13701 #~(modify-phases %standard-phases
13702 (add-before 'check 'disable-problematic-tests
13703 ;; TODO: Package the missing test inputs.
13704 (lambda _
13705 (with-directory-excursion "test"
13706 ;; Requires 'jekyll-coffeescript'.
13707 (delete-file "test_coffeescript.rb")
13708 ;; Requires 'tomlrb'.
13709 (delete-file "test_configuration.rb")
13710 (substitute* "test_filters.rb"
13711 ;; The sassify tests fail due to white space
13712 ;; differences (see:
13713 ;; https://github.com/jekyll/jekyll/issues/9322).
13714 ((".*s?ssify with simple string.*" all)
13715 (string-append all
13716 " skip('fails on guix')\n")))
13717 ;; Requires kramdown-syntax-coderay.
13718 (delete-file "test_kramdown.rb")
13719 ;; Requires 'test-theme', usually made available from the
13720 ;; local checkout via Bundler (not used here).
13721 (delete-file "test_layout_reader.rb")
13722 ;; Requires a large amount of un-packaged dependencies.
13723 (delete-file "test_plugin_manager.rb")
13724 ;; Requires 'classifier-reborn'.
13725 (delete-file "test_related_posts.rb")
13726 ;; This one causes a test failure similar to the ones for
13727 ;; sassify above.
13728 (delete-file "test_sass.rb")
13729 ;; This would require running the tests via 'bundle
13730 ;; exec', but the Gemfile contains too many (extraneous)
13731 ;; dependencies.
13732 (delete-file "test_site.rb")
13733 ;; Delete the theme tests, as they require 'test-theme',
13734 ;; usually made available from the local checkout via the
13735 ;; Gemfile/bundler (not used here).
13736 (for-each delete-file
13737 (scandir
13738 "." (cut string-prefix? "test_theme" <>)))
13739 ;; This one also relies on 'test-theme'.
13740 (delete-file "test_liquid_renderer.rb")
13741 ;; This test assumes internet connectivity, negate it, as
13742 ;; there's no Internet in the build container.
13743 (substitute* "test_utils.rb"
13744 (("assert Utils::Internet\\.connected\\?")
13745 "refute Utils::Internet.connected?"))
13746 ;; These tests fail non-deterministically (see:
13747 ;; https://github.com/jekyll/jekyll/issues/9323).
13748 (delete-file "test_new_command.rb")
13749 (delete-file "test_collections.rb"))))
13750 (replace 'check
13751 (lambda* (#:key tests? #:allow-other-keys)
13752 (when tests?
13753 ;; Invoke the test scripts manually, as 'rake test'
13754 ;; doesn't show any failure details, making debugging
13755 ;; needlessly difficult.
13756 (for-each (lambda (f)
13757 (invoke "ruby" "-I" "test" f))
13758 (find-files "test" "^test_.*\\.rb$"))))))))
13759 (native-inputs
13760 (list bundler
13761 ruby-httpclient
13762 ruby-minitest-profile
13763 ruby-minitest-reporters
13764 ruby-nokogiri
13765 ruby-rspec
13766 ruby-rspec-mocks
13767 ruby-shoulda
13768 ruby-simplecov))
13769 (propagated-inputs
13770 (list ruby-addressable
13771 ruby-colorator
13772 ruby-em-websocket
13773 ruby-i18n
13774 ruby-jekyll-sass-converter
13775 ruby-jekyll-watch
13776 ruby-kramdown-parser-gfm
13777 ruby-liquid-4
13778 ruby-mercenary
13779 ruby-pathutil
13780 ruby-rouge
13781 ruby-safe-yaml
13782 ruby-sassc
13783 ruby-terminal-table
13784 ruby-webrick))
13785 (home-page "https://jekyllrb.com/")
13786 (synopsis "Static site generator")
13787 (description "Jekyll is a simple, blog aware, static site generator.")
13788 (license license:expat)))
13789
13790(define-public ruby-jekyll-paginate-v2
13791 (package
13792 (name "ruby-jekyll-paginate-v2")
13793 (version "3.0.0")
13794 (source (origin
13795 (method url-fetch)
13796 (uri (rubygems-uri "jekyll-paginate-v2" version))
13797 (sha256
13798 (base32
13799 "1qzlqhpiqz28624fp0ak76hfy7908w6kpx62v7z43aiwjv0yc6q0"))))
13800 (build-system ruby-build-system)
13801 (propagated-inputs
13802 (list jekyll))
13803 (home-page "https://github.com/sverrirs/jekyll-paginate-v2")
13804 (synopsis "Pagination Generator for Jekyll 3")
13805 (description "The Pagination Generator forms the core of the pagination
13806logic in Jekyll. It calculates and generates the pagination pages.")
13807 (license license:expat)))
13808
13809(define-public ruby-faraday-net-http
13810 (package
13811 (name "ruby-faraday-net-http")
13812 (version "3.0.2")
13813 (source (origin
13814 (method url-fetch)
13815 (uri (rubygems-uri "faraday-net_http" version))
13816 (sha256
13817 (base32
13818 "13byv3mp1gsjyv8k0ih4612y6vw5kqva6i03wcg4w2fqpsd950k8"))))
13819 (build-system ruby-build-system)
13820 ;; Do not run the test suite here as it would introduce a dependency cycle
13821 ;; with ruby-faraday, which uses it as part of its test suite.
13822 (arguments (list #:tests? #f))
13823 (synopsis "Faraday adapter for Net::HTTP")
13824 (description "This gem is a Faraday adapter for the @code{Net::HTTP}
13825library. Faraday is an HTTP client library that provides a common interface
13826over many adapters.")
13827 (home-page "https://github.com/lostisland/faraday-net_http")
13828 (license license:expat)))
13829
13830(define-public ruby-faraday
13831 (package
13832 (name "ruby-faraday")
13833 (version "2.7.4")
13834 (source (origin
13835 (method git-fetch)
13836 (uri (git-reference
13837 (url "https://github.com/lostisland/faraday")
13838 (commit (string-append "v" version))))
13839 (file-name (git-file-name name version))
13840 (sha256
13841 (base32
13842 "0ya6jqa7ryr4i62mmzjjxzd8i8y0pyw0cbhifd758rs6lvkzmxa3"))))
13843 (build-system ruby-build-system)
13844 (arguments (list #:test-target "spec"))
13845 (native-inputs
13846 (list ruby-coveralls
13847 ruby-pry
13848 ruby-rack
13849 ruby-rspec
13850 ruby-simplecov
13851 ruby-webmock))
13852 ;; Propagate faraday-net-http as this is the default adapter used, and
13853 ;; many Ruby projects assumes it is available.
13854 (propagated-inputs (list ruby-ruby2-keywords ruby-faraday-net-http))
13855 (synopsis "Ruby HTTP/REST API client library")
13856 (description "Faraday is a HTTP/REST API client library which provides a
13857common interface over different adapters.")
13858 (home-page "https://github.com/lostisland/faraday")
13859 (license license:expat)))
13860
13861(define-public ruby-nio4r
13862 (package
13863 (name "ruby-nio4r")
13864 (version "2.5.2")
13865 (source
13866 (origin
13867 (method url-fetch)
13868 (uri (rubygems-uri "nio4r" version))
13869 (sha256
13870 (base32
13871 "0gnmvbryr521r135yz5bv8354m7xn6miiapfgpg1bnwsvxz8xj6c"))))
13872 (build-system ruby-build-system)
13873 (arguments
13874 '(#:phases
13875 (modify-phases %standard-phases
13876 (add-after 'unpack 'remove-unnecessary-dependencies
13877 (lambda _
13878 (substitute* "spec/spec_helper.rb"
13879 ;; Coveralls is for uploading test coverage information to an
13880 ;; online service, and thus unnecessary for building the Guix
13881 ;; package
13882 (("require \"coveralls\"") "")
13883 (("Coveralls\\.wear!") "")
13884 ;; Remove rspec/retry as we are not retrying the tests
13885 (("require \"rspec/retry\"") "")
13886 (("config\\.display_try_failure_messages = true") "")
13887 (("config\\.verbose_retry = true") ""))))
13888 (add-before 'check 'compile
13889 (lambda _
13890 (invoke "rake" "compile")))
13891 (replace 'check
13892 (lambda* (#:key tests? #:allow-other-keys)
13893 (when tests?
13894 (invoke "rspec")))))))
13895 (native-inputs
13896 (list bundler ruby-rake-compiler ruby-rspec ruby-rubocop))
13897 (synopsis "New I/O for Ruby")
13898 (description
13899 "@code{nio} provides cross-platform asynchronous I/O primitives in Ruby
13900for scalable network clients and servers.")
13901 (home-page "https://github.com/socketry/nio4r")
13902 (license license:expat)))
13903
13904(define-public ruby-language-server-protocol
13905 (package
13906 (name "ruby-language-server-protocol")
13907 (version "3.17.0.3")
13908 (source (origin
13909 (method git-fetch) ;for tests
13910 (uri (git-reference
13911 (url "https://github.com/mtsmfm/language_server-protocol-ruby")
13912 (commit (string-append "v" version))))
13913 (file-name (git-file-name name version))
13914 (sha256
13915 (base32
13916 "0f2g301fz99c6nkca39s9227brlycznv8a9r4b4i99rg25m91lc6"))))
13917 (build-system ruby-build-system)
13918 (arguments
13919 (list
13920 #:phases
13921 #~(modify-phases %standard-phases
13922 (add-after 'unpack 'remove-unnecessary-dependencies
13923 (lambda _
13924 (substitute* "Gemfile"
13925 (("gem \"pry-byebug\"") ""))))
13926 (replace 'replace-git-ls-files
13927 (lambda _
13928 (substitute* "language_server-protocol.gemspec"
13929 (("git ls-files -z([^`]*)" _ files)
13930 (string-append "find " files
13931 " -type f -not -regex '.*\\.gem$'"
13932 " -print0 | sort -z"))))))))
13933 (native-inputs
13934 (list ruby-activesupport
13935 ruby-benchmark-ips
13936 ruby-m
13937 ruby-minitest
13938 ruby-minitest-power-assert))
13939 (synopsis "Language Server Protocol (LSP) development kit for Ruby")
13940 (description "This package provides a Language Server Protocol (LSP)
13941development kit for Ruby.")
13942 (home-page "https://github.com/mtsmfm/language_server-protocol-ruby")
13943 (license license:expat)))
13944
13945(define-public ruby-spy
13946 (package
13947 (name "ruby-spy")
13948 (version "1.0.5")
13949 (source (origin
13950 (method url-fetch)
13951 (uri (rubygems-uri "spy" version))
13952 (sha256
13953 (base32
13954 "0g2mma8q17m26k5s864ndlvvqllhcivwg2wdigjvb7z06iw17gds"))))
13955 (build-system ruby-build-system)
13956 (arguments
13957 (list #:phases #~(modify-phases %standard-phases
13958 (add-after 'extract-gemspec 'relax-requirements
13959 (lambda _
13960 (substitute* "spy.gemspec"
13961 ((".*pry-byebug.*") ""))
13962 (substitute* "test/test_helper.rb"
13963 ((".*pry-byebug.*") ""))
13964 (substitute* "Gemfile"
13965 ((".*redcarpet.*") "")
13966 ((".*yard.*") "")))))))
13967 (native-inputs
13968 (list ruby-coveralls
13969 ruby-minitest-reporters
13970 ruby-pry
13971 ruby-rspec-core
13972 ruby-rspec-expectations))
13973 (synopsis "Mocking library for Ruby")
13974 (description "Spy is a mocking library. By default, it will raise an
13975error if you attempt to stub a method that doesn't exist or call the stubbed
13976method with the wrong arity.")
13977 (home-page "https://github.com/ryanong/spy")
13978 (license license:expat)))
13979
13980(define-public ruby-subprocess
13981 (package
13982 (name "ruby-subprocess")
13983 (version "1.5.6")
13984 (source (origin
13985 (method url-fetch)
13986 (uri (rubygems-uri "subprocess" version))
13987 (sha256
13988 (base32
13989 "0v49ahfx9b75qg42sl8a3l367g2vihc16g8z5f2raxpxjl1wh2s2"))))
13990 (build-system ruby-build-system)
13991 ;; Do not run the test suite, as there its test dependency ruby-sord would
13992 ;; introduce a cycle with ruby-sorbet-runtime.
13993 (arguments (list #:tests? #f))
13994 (native-inputs (list ruby-minitest ruby-pry))
13995 (synopsis "Ruby library to control and communicate with spawned processes")
13996 (description "This Ruby library is controlling and communicating with
13997spawned processes. It is designed after Python's @code{subprocess} module.")
13998 (home-page "https://github.com/stripe/subprocess")
13999 (license license:expat)))
14000
14001(define-public ruby-sus
14002 (package
14003 (name "ruby-sus")
14004 (version "0.20.3")
14005 (source (origin
14006 (method git-fetch) ;for gems.rb
14007 (uri (git-reference
14008 (url "https://github.com/ioquatix/sus")
14009 (commit (string-append "v" version))))
14010 (file-name (git-file-name name version))
14011 (sha256
14012 (base32
14013 "0j4rkh9li79674h3lfkxlcdygscmb22l77i7hwhxl3gw103gkpdr"))))
14014 (build-system ruby-build-system)
14015 (arguments
14016 (list #:phases
14017 #~(modify-phases %standard-phases
14018 (add-before 'build 'prune-gems.rb
14019 (lambda _
14020 (substitute* "gems.rb"
14021 (("gem \"bake-modernize\"") "")
14022 (("gem \"bake-gem\"") "")
14023 (("gem \"utopia-project\"") ""))))
14024 (add-before 'build 'remove-missing-signing-key
14025 (lambda _
14026 ;; Otherwise, the build fails with ENOENT.
14027 (substitute* "sus.gemspec"
14028 ((".*spec.signing_key.*") ""))))
14029 (delete 'check) ;moved after install
14030 (add-after 'install 'check
14031 (lambda* (#:key tests? #:allow-other-keys)
14032 (when tests?
14033 (setenv "CONSOLE_LEVEL" "debug")
14034 (setenv "HOME" "/tmp")
14035 ;; 'bundle exec' must be used to workaround a problem
14036 ;; when using bake test and GEM_PATH (see:
14037 ;; https://github.com/ioquatix/bake/issues/11).
14038 (invoke "bundle" "exec" "bake" "test"))))
14039 (add-before 'check 'set-paths
14040 (lambda _
14041 (setenv "PATH" (string-append (getenv "PATH") ":"
14042 #$output "/bin"))
14043 (setenv "GEM_PATH" (string-append
14044 (getenv "GEM_PATH") ":"
14045 #$output "/lib/ruby/vendor_ruby")))))))
14046 (native-inputs (list ruby-bake-test ruby-bake-test-external ruby-covered))
14047 (synopsis "Fast and scalable test runner for Ruby")
14048 (description "This package provides a fast and scalable test runner for Ruby.")
14049 (home-page "https://github.com/ioquatix/sus")
14050 (license license:expat)))
14051
14052(define-public ruby-syntax-tree
14053 (package
14054 (name "ruby-syntax-tree")
14055 (version "6.1.1")
14056 (source (origin
14057 (method git-fetch) ;for tests
14058 (uri (git-reference
14059 (url "https://github.com/ruby-syntax-tree/syntax_tree")
14060 (commit (string-append "v" version))))
14061 (file-name (git-file-name name version))
14062 (sha256
14063 (base32
14064 "0356lgvqp22nkqlrgszf7myfdg4arclg278awh34zyby1cx6hb2k"))))
14065 (build-system ruby-build-system)
14066 (arguments
14067 (list
14068 #:phases
14069 #~(modify-phases %standard-phases
14070 ;; The tests rely on the Gem being installed, so move the check
14071 ;; phase after the install phase.
14072 (delete 'check)
14073 (add-after 'install 'check
14074 (lambda* (#:key tests? #:allow-other-keys)
14075 (setenv "GEM_PATH" (string-append
14076 #$output "/lib/ruby/vendor_ruby:"
14077 (getenv "GEM_PATH")))
14078 (when tests?
14079 (invoke "rake" "test")))))))
14080 (native-inputs (list ruby-rubocop-ast ruby-simplecov))
14081 (propagated-inputs (list ruby-prettier-print))
14082 (synopsis "Fast Ruby parser and formatter")
14083 (description "Syntax Tree is a suite of tools built on top of the internal
14084CRuby parser. It provides the ability to generate a syntax tree from source,
14085as well as the tools necessary to inspect and manipulate that syntax tree. It
14086can be used to build formatters, linters, language servers, and more.")
14087 (home-page "https://github.com/ruby-syntax-tree/syntax_tree")
14088 (license license:expat)))
14089
14090(define-public ruby-stringio
14091 (package
14092 (name "ruby-stringio")
14093 (version "3.1.0")
14094 (source (origin
14095 (method git-fetch)
14096 (uri (git-reference
14097 (url "https://github.com/ruby/stringio")
14098 (commit (string-append "v" version))))
14099 (file-name (git-file-name name version))
14100 (sha256
14101 (base32
14102 "1jgi2w5y0z0x9mfapr2pdlag4wvn03fpf5kbai8bscyh8nn79yka"))))
14103 (build-system ruby-build-system)
14104 (native-inputs (list ruby-rake-compiler ruby-test-unit-ruby-core))
14105 (synopsis "Pseudo `IO` class from and to `String`")
14106 (description "Pseudo `IO` class from and to `String`.")
14107 (home-page "https://github.com/ruby/stringio")
14108 (license license:bsd-2)))
14109
14110(define-public ruby-stream
14111 (package
14112 (name "ruby-stream")
14113 (version "0.5.5")
14114 (source (origin
14115 (method url-fetch)
14116 (uri (rubygems-uri "stream" version))
14117 (sha256
14118 (base32
14119 "016m9v81vpj14d8g5ins91zc4pzl7vf5f1gxl7jhfsfy601k7cv2"))))
14120 (build-system ruby-build-system)
14121 (arguments
14122 '(#:phases
14123 (modify-phases %standard-phases
14124 (add-before 'check 'remove-version-constraints
14125 (lambda _
14126 (delete-file "Gemfile.lock"))))))
14127 (native-inputs (list bundler ruby-stringio ruby-webrick ruby-yard))
14128 (synopsis "Interface for external iterators")
14129 (description "Module Stream defines an interface for external iterators.")
14130 (home-page "https://github.com/monora/stream")
14131 (license license:bsd-2)))
14132
14133(define sorbet-version "0.5.10610.20230106174520-1fa668010")
14134
14135(define sorbet-monorepo
14136 (origin
14137 (method git-fetch)
14138 (uri (git-reference
14139 (url "https://github.com/sorbet/sorbet")
14140 (commit sorbet-version)))
14141 (file-name (string-append "sorbet-" sorbet-version "-checkout"))
14142 (sha256
14143 (base32
14144 "0f21dl06alxwn6xgdxyrkd58plmmsv04z2bcls9ld4cfzsrs5537"))))
14145
14146(define (make-sorbet-gem-source gem)
14147 "Return the source of GEM, a sub-directory."
14148 (computed-file
14149 (string-append "ruby-sorbet-" gem "-" sorbet-version "-checkout")
14150 (with-imported-modules (source-module-closure '((guix build utils)))
14151 #~(begin
14152 (use-modules (guix build utils))
14153 (copy-recursively (string-append #$sorbet-monorepo
14154 "/gems/sorbet-" #$gem)
14155 #$output)))))
14156
14157(define-public ruby-sorbet-runtime
14158 (package
14159 (name "ruby-sorbet-runtime")
14160 (version sorbet-version)
14161 (source (make-sorbet-gem-source "runtime"))
14162 (build-system ruby-build-system)
14163 ;; 25 out of 841 tests currently fail, seemingly due to invalid
14164 ;; assumptions about file names in the build environment (see:
14165 ;; https://github.com/sorbet/sorbet/issues/6650).
14166 (arguments (list #:tests? #f))
14167 (native-inputs
14168 (list ruby-minitest
14169 ruby-mocha
14170 ruby-rubocop
14171 ruby-rubocop-performance
14172 ruby-concurrent-ruby
14173 ruby-pry
14174 ruby-parser
14175 ruby-subprocess))
14176 (synopsis "Runtime type checking component for Sorbet")
14177 (description "Sorbet's runtime type checking component. Sorbet is a
14178powerful type checker for Ruby.")
14179 (home-page "https://sorbet.org")
14180 (license license:asl2.0)))
14181
14182(define-public ruby-mustache
14183 (package
14184 (name "ruby-mustache")
14185 (version "1.1.1")
14186 (source
14187 (origin
14188 (method url-fetch)
14189 (uri (rubygems-uri "mustache" version))
14190 (sha256
14191 (base32 "1l0p4wx15mi3wnamfv92ipkia4nsx8qi132c6g51jfdma3fiz2ch"))))
14192 (build-system ruby-build-system)
14193 (native-inputs
14194 `(("ruby-simplecov" ,ruby-simplecov)
14195 ("test-patch"
14196 ,(search-patch "ruby-mustache-1.1.1-fix-race-condition-tests.patch"))))
14197 (arguments
14198 `(#:phases
14199 (modify-phases %standard-phases
14200 (add-after 'unpack 'patch-tests
14201 (lambda* (#:key inputs #:allow-other-keys)
14202 (invoke "patch" "-p1" "--batch" "-i"
14203 (assoc-ref inputs "test-patch")))))))
14204 (synopsis "Framework-agnostic way to render logic-free views")
14205 (description
14206 "Mustache is a framework-agnostic way to render logic-free views.
14207Think of Mustache as a replacement for your views. Instead of views
14208consisting of ERB or HAML with random helpers and arbitrary logic,
14209your views are broken into two parts: a Ruby class and an HTML
14210template.")
14211 (home-page "https://github.com/mustache/mustache")
14212 (license license:expat)))
14213
14214(define-public ruby-mustermann
14215 (package
14216 (name "ruby-mustermann")
14217 (version "3.0.0")
14218 (source
14219 (origin
14220 (method url-fetch)
14221 (uri (rubygems-uri "mustermann" version))
14222 (sha256
14223 (base32
14224 "0rwbq20s2gdh8dljjsgj5s6wqqfmnbclhvv2c2608brv7jm6jdbd"))))
14225 (build-system ruby-build-system)
14226 (arguments
14227 ;; No tests.
14228 '(#:tests? #f))
14229 (synopsis "Library implementing patterns that behave like regular expressions")
14230 (description "Given a string pattern, Mustermann will turn it into an
14231object that behaves like a regular expression and has comparable performance
14232characteristics.")
14233 (home-page "https://github.com/sinatra/mustermann")
14234 (license license:expat)))
14235
14236(define-public ruby-prettier-print
14237 (package
14238 (name "ruby-prettier-print")
14239 (version "1.2.1")
14240 (source (origin
14241 (method git-fetch) ;for tests
14242 (uri (git-reference
14243 (url "https://github.com/ruby-syntax-tree/prettier_print")
14244 (commit (string-append "v" version))))
14245 (file-name (git-file-name name version))
14246 (sha256
14247 (base32
14248 "00cg40jc0il1hpsrpsrqwhsxmx7day9lxp1ksrm08zxzsrz9ykqz"))))
14249 (build-system ruby-build-system)
14250 (native-inputs (list ruby-simplecov))
14251 (synopsis "Compatible and featureful implementation of @code{prettyprint}")
14252 (description "This package provides a drop-in replacement for the
14253@code{prettyprint} gem, with more functionality.")
14254 (home-page "https://github.com/ruby-syntax-tree/prettier_print")
14255 (license license:expat)))
14256
14257(define-public ruby-html-proofer
14258 (package
14259 (name "ruby-html-proofer")
14260 (version "5.0.3")
14261 (source
14262 (origin
14263 (method git-fetch)
14264 (uri (git-reference
14265 (url "https://github.com/gjtorikian/html-proofer")
14266 (commit (string-append "v" version))))
14267 (file-name (git-file-name name version))
14268 (sha256
14269 (base32
14270 "01ksss3ikppc45z2q33bx8bb9785bqlp1rdqascaqg9mhs392adk"))))
14271 (build-system ruby-build-system)
14272 (arguments
14273 (list
14274 ;; Tests require vcr, which is under the Hippocratic license, which is
14275 ;; not a free software license (see:
14276 ;; https://www.gnu.org/licenses/license-list.html#hippocratic).
14277 #:tests? #f
14278 #:phases
14279 #~(modify-phases %standard-phases
14280 (add-after 'extract-gemspec 'relax-requirements
14281 (lambda _
14282 (substitute* "html-proofer.gemspec"
14283 (("required_ruby_version = \\[\">= 3.1\"")
14284 "required_ruby_version = [\">= 2.6\""))))
14285 (replace 'replace-git-ls-files
14286 (lambda _
14287 ;; The html-proofer.gemspec file contains 'all_files = %x(git
14288 ;; ls-files -z).split("\x0")', but the original phase matches on
14289 ;; `git ls-files -z`.
14290 ;; TODO: Improve ruby-build-system patterns on core-updates.
14291 (substitute* "html-proofer.gemspec"
14292 (("git ls-files -z")
14293 "find . -type f -not -regex '.*\\.gem$' -print0 \
14294| sort -z | cut -zc3-")))))))
14295 (propagated-inputs
14296 (list ruby-addressable
14297 ruby-mercenary
14298 ruby-nokogiri
14299 ruby-parallel
14300 ruby-rainbow
14301 ruby-typhoeus
14302 ruby-yell))
14303 (synopsis "Test your rendered HTML files to make sure they're accurate")
14304 (description
14305 "HTMLProofer is a set of tests to validate your HTML output. These
14306tests check if your image references are legitimate, if they have alt tags,
14307if your internal links are working, and so on. It's intended to be an
14308all-in-one checker for your output.")
14309 (home-page "https://github.com/gjtorikian/html-proofer")
14310 (license license:expat)))
14311
14312(define-public ruby-htmlentities
14313 (package
14314 (name "ruby-htmlentities")
14315 (version "4.3.4")
14316 (source
14317 (origin
14318 (method url-fetch)
14319 (uri (rubygems-uri "htmlentities" version))
14320 (sha256
14321 (base32
14322 "1nkklqsn8ir8wizzlakncfv42i32wc0w9hxp00hvdlgjr7376nhj"))))
14323 (build-system ruby-build-system)
14324 (arguments
14325 `(#:phases
14326 (modify-phases %standard-phases
14327 (replace 'check
14328 (lambda _
14329 (map (lambda (file)
14330 (invoke "ruby" "-Itest" file))
14331 (find-files "./test" ".*_test\\.rb")))))))
14332 (synopsis "Encode and decode (X)HTML entities")
14333 (description
14334 "This package provides a module for encoding and decoding (X)HTML
14335entities.")
14336 (home-page "https://github.com/threedaymonk/htmlentities")
14337 (license license:expat)))
14338
14339;;; FIXME: Currently broken with rack 3, awaiting the merge for
14340;;; https://github.com/sinatra/sinatra/pull/1857 and a new release.
14341(define-public ruby-sinatra
14342 (package
14343 (name "ruby-sinatra")
14344 (version "3.0.5")
14345 (source
14346 (origin
14347 (method url-fetch)
14348 (uri (rubygems-uri "sinatra" version))
14349 (sha256
14350 (base32
14351 "1ryfja9yd3fq8n1p5yi3qnd0pjk7bkycmxxmbb1bj0axlr1pdv20"))))
14352 (build-system ruby-build-system)
14353 (propagated-inputs
14354 (list ruby-mustermann ruby-rack ruby-rack-protection ruby-tilt))
14355 (synopsis "DSL for quick web applications creation in Ruby")
14356 (description
14357 "Sinatra is a DSL for quickly creating web applications in Ruby with
14358minimal effort.")
14359 (home-page "https://sinatrarb.com/")
14360 (license license:expat)))
14361
14362(define-public ruby-timeout
14363 (package
14364 (name "ruby-timeout")
14365 (version "0.4.3")
14366 (source (origin
14367 (method git-fetch) ;for tests
14368 (uri (git-reference
14369 (url "https://github.com/ruby/timeout")
14370 (commit (string-append "v" version))))
14371 (file-name (git-file-name name version))
14372 (sha256
14373 (base32
14374 "1mw2dwyp2j05fl2gmw8cj132kk145sbxj5i0whpxcnddlc8gw781"))))
14375 (build-system ruby-build-system)
14376 (native-inputs (list ruby-test-unit-ruby-core))
14377 (synopsis "Timeout library for Ruby")
14378 (description "Timeout provides a way to auto-terminate a potentially
14379long-running operation if it hasn't finished in a fixed amount of time.")
14380 (home-page "https://github.com/ruby/timeout")
14381 (license (list license:bsd-2))))
14382
14383(define-public ruby-thin
14384 (package
14385 (name "ruby-thin")
14386 (version "1.7.2")
14387 (source
14388 (origin
14389 (method url-fetch)
14390 (uri (rubygems-uri "thin" version))
14391 (sha256
14392 (base32
14393 "0nagbf9pwy1vg09k6j4xqhbjjzrg5dwzvkn4ffvlj76fsn6vv61f"))))
14394 (build-system ruby-build-system)
14395 (arguments
14396 ;; No tests.
14397 '(#:tests? #f))
14398 (propagated-inputs
14399 (list ruby-daemons ruby-eventmachine ruby-rack))
14400 (synopsis "Thin and fast web server for Ruby")
14401 (description "Thin is a Ruby web server that glues together 3 Ruby libraries:
14402@itemize
14403@item the Mongrel parser,
14404@item Event Machine, a network I/O library with high scalability, performance
14405and stability,
14406@item Rack, a minimal interface between webservers and Ruby frameworks.
14407@end itemize\n")
14408 (home-page "https://github.com/macournoyer/thin")
14409 (license license:ruby)))
14410
14411(define-public ruby-truthy
14412 (package
14413 (name "ruby-truthy")
14414 (version "1.0.0")
14415 (source (origin
14416 (method url-fetch)
14417 (uri (rubygems-uri "truthy" version))
14418 (sha256
14419 (base32
14420 "19silgd65j3qwfk5w891p9wcmzdmi9ddm2kg5zbvvqn2h9lkfzmd"))))
14421 (build-system ruby-build-system)
14422 (arguments (list #:phases #~(modify-phases %standard-phases
14423 (replace 'check
14424 (lambda* (#:key tests? #:allow-other-keys)
14425 (when tests?
14426 (substitute* "spec/spec_helper.rb"
14427 (("require 'spec'")
14428 "require 'rspec'"))
14429 (invoke "rspec")))))))
14430 (native-inputs (list ruby-rspec))
14431 (synopsis "Object truthiness-related Ruby library")
14432 (description "This library makes it easier to discover the truth values of
14433various Ruby objects.")
14434 (home-page "https://github.com/ymendel/truthy")
14435 (license license:expat)))
14436
14437(define-public ruby-skinny
14438 (package
14439 (name "ruby-skinny")
14440 (version "0.2.4")
14441 (source
14442 (origin
14443 (method url-fetch)
14444 (uri (rubygems-uri "skinny" version))
14445 (sha256
14446 (base32
14447 "1y3yvx88ylgz4d2s1wskjk5rkmrcr15q3ibzp1q88qwzr5y493a9"))))
14448 (build-system ruby-build-system)
14449 (arguments
14450 '(#:tests? #f ; No included tests
14451 #:phases
14452 (modify-phases %standard-phases
14453 (add-before 'build 'patch-gemspec
14454 (lambda _
14455 (substitute* ".gemspec"
14456 (("<eventmachine>.freeze, \\[\\\"~> 1.0.0\"")
14457 "<eventmachine>, [\">= 1.0.0\"")
14458 (("<thin>.freeze, \\[\\\"< 1.7\", ") "<thin>, [")))))))
14459 (propagated-inputs
14460 (list ruby-eventmachine ruby-thin))
14461 (synopsis "Simple, upgradable WebSockets for Ruby Thin")
14462 (description "Skinny is a simple, upgradable WebSockets for Ruby, using
14463the Thin library.")
14464 (home-page "https://github.com/sj26/skinny")
14465 (license license:expat)))
14466
14467(define-public ruby-sys-filesystem
14468 (package
14469 (name "ruby-sys-filesystem")
14470 (version "1.3.4")
14471 (source (origin
14472 (method url-fetch)
14473 (uri (rubygems-uri "sys-filesystem" version))
14474 (sha256
14475 (base32
14476 "0mizqnsiagagmracadr16s5na2ks2j3ih1w0f3gp4ssrda6szl01"))))
14477 (build-system ruby-build-system)
14478 (arguments
14479 '(#:phases (modify-phases %standard-phases
14480 (add-before 'check 'set-HOME
14481 (lambda _
14482 ;; Some tests attempt to stat $HOME. Let them.
14483 (setenv "HOME" "/tmp"))))))
14484 (propagated-inputs
14485 (list ruby-ffi))
14486 (native-inputs
14487 (list ruby-mkmf-lite))
14488 (synopsis "Gather file system information")
14489 (description
14490 "The @code{sys-filesystem} library provides a cross-platform interface
14491for gathering file system information, such as disk space and mount points.")
14492 (home-page "https://github.com/djberg96/sys-filesystem")
14493 (license license:asl2.0)))
14494
14495(define-public mailcatcher
14496 (package
14497 (name "mailcatcher")
14498 (version "0.7.1")
14499 (source
14500 (origin
14501 (method url-fetch)
14502 (uri (rubygems-uri "mailcatcher" version))
14503 (sha256
14504 (base32
14505 "02w1ycyfv7x0sh9799lz7xa65p5qvl5z4pa8a7prb68h2zwkfq0n"))))
14506 (build-system ruby-build-system)
14507 (arguments
14508 ;; Tests require web/assets which is not included in the output. We
14509 ;; might be able to fix this by adding the Git repository to the GEM_PATH
14510 ;; of the tests. See ruby-mysql2.
14511 '(#:tests? #f
14512 #:phases
14513 (modify-phases %standard-phases
14514 (add-before 'build 'patch-gemspec
14515 (lambda _
14516 (substitute* ".gemspec"
14517 (("<eventmachine>.freeze, \\[\\\"= 1.0.9.1")
14518 "<eventmachine>, [\">= 1.0.9.1")
14519 (("<rack>.freeze, \\[\\\"~> 1.5") "<rack>, [\">= 1.5")
14520 (("<thin>.freeze, \\[\\\"~> 1.5.0") "<thin>, [\">= 1.5.0")
14521 (("<sinatra>.freeze, \\[\\\"~> 1.2") "<sinatra>, [\">= 1.2"))))
14522 (add-before 'build 'loosen-dependency-contraint
14523 (lambda _
14524 (substitute* "lib/mail_catcher.rb"
14525 (("\"eventmachine\", \"1.0.9.1\"") "\"eventmachine\", \">= 1.0.9.1\"")
14526 (("\"rack\", \"~> 1.5\"") "\"rack\", \">= 1.5\"")
14527 (("\"thin\", \"~> 1.5.0\"") "\"thin\", \">= 1.5.0\"")
14528 (("\"sinatra\", \"~> 1.2\"") "\"sinatra\", \">= 1.2\"")))))))
14529 (inputs
14530 (list ruby-eventmachine
14531 ruby-mail
14532 ruby-rack
14533 ruby-sinatra
14534 ruby-skinny
14535 ruby-sqlite3
14536 ruby-thin))
14537 (synopsis "SMTP server which catches messages to display them a browser")
14538 (description
14539 "MailCatcher runs a super simple SMTP server which catches any message
14540sent to it to display in a web interface. Run mailcatcher, set your favourite
14541app to deliver to smtp://127.0.0.1:1025 instead of your default SMTP server,
14542then check out http://127.0.0.1:1080 to see the mail.")
14543 (home-page "https://mailcatcher.me")
14544 (license license:expat)))
14545
14546(define-public ruby-backport
14547 (package
14548 (name "ruby-backport")
14549 (version "1.1.2")
14550 (source
14551 (origin
14552 ;; The gem does not include test code, so fetch from the Git repository.
14553 (method git-fetch)
14554 (uri (git-reference
14555 (url "https://github.com/castwide/backport")
14556 (commit (string-append "v" version))))
14557 (file-name (git-file-name name version))
14558 (sha256
14559 (base32 "18fpg1n7n2z02ykz9v1x1q0cqa2lvivf8ygka768s01q1r9wfwv2"))))
14560 (build-system ruby-build-system)
14561 (arguments
14562 `(#:test-target "spec"))
14563 (native-inputs
14564 (list bundler ruby-rspec))
14565 (inputs
14566 (list ruby-simplecov))
14567 (synopsis "Pure Ruby library for event-driven IO")
14568 (description
14569 "This package provides a pure Ruby library for event-driven IO.")
14570 (home-page "https://github.com/castwide/backport")
14571 (license license:expat)))
14572
14573(define-public ruby-json-schema
14574 (package
14575 (name "ruby-json-schema")
14576 (version "2.8.1")
14577 (source
14578 (origin
14579 (method url-fetch)
14580 (uri (rubygems-uri "json-schema" version))
14581 (sha256
14582 (base32
14583 "1yv5lfmr2nzd14af498xqd5p89f3g080q8wk0klr3vxgypsikkb5"))))
14584 (build-system ruby-build-system)
14585 (arguments
14586 `(#:tests? #f ; no tests
14587 #:phases
14588 (modify-phases %standard-phases
14589 (replace 'build
14590 (lambda _
14591 (invoke "gem" "build" ".gemspec"))))))
14592 (propagated-inputs
14593 (list ruby-addressable))
14594 (synopsis "Ruby JSON Schema Validator")
14595 (description "This library provides Ruby with an interface for validating
14596JSON objects against a JSON schema conforming to JSON Schema Draft 4. Legacy
14597support for JSON Schema Draft 3, JSON Schema Draft 2, and JSON Schema Draft 1
14598is also included.")
14599 (home-page "https://github.com/ruby-json-schema/json-schema")
14600 (license license:expat)))
14601
14602(define-public swagger-diff
14603 (package
14604 (name "swagger-diff")
14605 (version "2.0.0")
14606 (source
14607 (origin
14608 (method url-fetch)
14609 (uri (rubygems-uri "swagger-diff" version))
14610 (sha256
14611 (base32
14612 "18kbrijkafs3vfsbaqz0cqfj7jrz3aj8xr4fgn5if63wlximybv2"))))
14613 (build-system ruby-build-system)
14614 (arguments
14615 (list
14616 #:test-target "spec"
14617 #:phases
14618 #~(modify-phases %standard-phases
14619 ;; Don't run or require rubocop, the code linting tool, as this is a
14620 ;; bit unnecessary.
14621 (add-after 'unpack 'dont-run-rubocop
14622 (lambda _
14623 (substitute* "Rakefile"
14624 ((".*rubocop.*") "")
14625 ((".*RuboCop.*") "")))))))
14626 (propagated-inputs
14627 (list ruby-json-schema))
14628 (native-inputs
14629 (list bundler ruby-rspec-core ruby-rspec-expectations))
14630 (synopsis
14631 "Compare Open API Initiative specification files")
14632 (description
14633 "Swagger::Diff is a utility for comparing two different Open API
14634Initiative (OAI) specifications (formerly known as Swagger specifications).
14635It is intended to determine whether a newer API specification is
14636backwards-compatible with an older API specification.")
14637 (home-page "https://github.com/civisanalytics/swagger-diff")
14638 (license license:bsd-3)))
14639
14640(define-public ruby-reverse-markdown
14641 (package
14642 (name "ruby-reverse-markdown")
14643 (version "1.1.0")
14644 (source
14645 (origin
14646 (method url-fetch)
14647 (uri (rubygems-uri "reverse_markdown" version))
14648 (sha256
14649 (base32
14650 "0w7y5n74daajvl9gixr91nh8670d7mkgspkk3ql71m8azq3nffbg"))))
14651 (build-system ruby-build-system)
14652 (propagated-inputs
14653 (list ruby-nokogiri))
14654 (native-inputs
14655 (list bundler ruby-rspec ruby-kramdown ruby-simplecov))
14656 (arguments
14657 `(#:phases
14658 (modify-phases %standard-phases
14659 (replace 'check
14660 (lambda* (#:key tests? #:allow-other-keys)
14661 (when tests?
14662 (invoke "rspec")))))))
14663 (synopsis "Convert HTML into Markdown")
14664 (description
14665 "This Ruby module allows you to map simple HTML back into
14666Markdown---e.g., if you want to import existing HTML data in your
14667application.")
14668 (home-page "https://github.com/xijo/reverse_markdown")
14669 (license license:wtfpl2)))
14670
14671(define-public ruby-solargraph
14672 (package
14673 (name "ruby-solargraph")
14674 (version "0.40.3")
14675 (source
14676 (origin
14677 (method url-fetch)
14678 (uri (rubygems-uri "solargraph" version))
14679 (sha256
14680 (base32
14681 "1gf049rm0yvw4r8r5yyi890idbfg8qh0dikqx5prvkh11srl73bz"))))
14682 (build-system ruby-build-system)
14683 (propagated-inputs
14684 (list ruby-backport
14685 bundler
14686 ruby-benchmark
14687 ruby-e2mmap
14688 ruby-jaro-winkler
14689 ruby-kramdown
14690 ruby-kramdown-parser-gfm
14691 ruby-maruku
14692 ruby-nokogiri
14693 ruby-parser
14694 ruby-reverse-markdown
14695 ruby-rubocop
14696 ruby-thor
14697 ruby-tilt
14698 ruby-yard))
14699 (native-inputs
14700 (list ruby-rspec ruby-pry ruby-simplecov ruby-webmock))
14701 ;; FIXME: can't figure out how to run the tests properly:
14702
14703 ;; An error occurred while loading spec_helper.
14704 ;; Failure/Error: return gem_original_require(path)
14705 ;; LoadError:
14706 ;; cannot load such file -- spec_helper
14707 (arguments
14708 '(#:tests? #f
14709 #:phases
14710 (modify-phases %standard-phases
14711 (replace 'check
14712 (lambda* (#:key tests? #:allow-other-keys)
14713 (when tests?
14714 (invoke "rspec")))))))
14715 (synopsis
14716 "IDE tools for code completion, inline documentation, and static analysis")
14717 (description
14718 "Solargraph provides a comprehensive suite of tools for Ruby
14719programming: intellisense, diagnostics, inline documentation, and type
14720checking.")
14721 (home-page "https://solargraph.org/")
14722 (license license:expat)))
14723
14724(define-public ruby-wayback-machine-downloader
14725 (package
14726 (name "ruby-wayback-machine-downloader")
14727 (version "2.2.1")
14728 (source
14729 (origin
14730 (method url-fetch)
14731 (uri (rubygems-uri
14732 "wayback_machine_downloader"
14733 version))
14734 (sha256
14735 (base32
14736 "12kb1qmvmmsaihqab1prn6cmynkn6cgb4vf41mgv22wkcgv5wgk2"))))
14737 (build-system ruby-build-system)
14738 (arguments
14739 '(#:tests? #f)) ; no tests
14740 (synopsis "Download archived websites from the Wayback Machine")
14741 (description
14742 "Wayback Machine Downloader is a command line tool for downloading
14743websites from the Internet Archive's Wayback Machine (archive.org).
14744It allows fine grained control over what to download by specifying
14745which snapshots to consider and what files to include.")
14746 (home-page
14747 "https://github.com/hartator/wayback-machine-downloader")
14748 (license license:expat)))
14749
14750(define-public ruby-zeitwerk
14751 (package
14752 (name "ruby-zeitwerk")
14753 (version "2.7.1")
14754 (source
14755 (origin
14756 (method git-fetch) ;for tests
14757 (uri (git-reference
14758 (url "https://github.com/fxn/zeitwerk")
14759 (commit (string-append "v" version))))
14760 (file-name (git-file-name name version))
14761 (sha256
14762 (base32
14763 "19qmcdpbh4bl878zd1w19064yjkpb8sxaydcasqfa7p8cfg3hnsr"))))
14764 (build-system ruby-build-system)
14765 (native-inputs
14766 (list ruby-minitest
14767 ruby-minitest-focus
14768 ruby-minitest-proveit
14769 ruby-minitest-reporters
14770 ruby-warning))
14771 (synopsis "Efficient and thread-safe code loader for Ruby")
14772 (description
14773 "Zeitwerk implements constant autoloading with Ruby semantics. Each gem
14774and application may have their own independent autoloader, with its own
14775configuration, inflector, and logger. Supports autoloading, reloading, and
14776eager loading.")
14777 (home-page "https://github.com/fxn/zeitwerk")
14778 (license license:expat)))
14779
14780(define-public ruby-warning
14781 (package
14782 (name "ruby-warning")
14783 (version "1.5.0")
14784 (source
14785 (origin
14786 (method url-fetch)
14787 (uri (rubygems-uri "warning" version))
14788 (sha256
14789 (base32 "0lwcf7fsz1sda1fdbqq1i4q9kzg4f5vwrzgfg1vpa1hcxagw84hg"))))
14790 (build-system ruby-build-system)
14791 (arguments '(#:tests? #f)) ; No tests bundled.
14792 (synopsis "Custom processing for warnings")
14793 (description
14794 "This package adds custom processing for warnings for Ruby, including the
14795ability to ignore specific warning messages, ignore warnings in specific
14796files/directories, include backtraces with warnings, treat warnings as errors,
14797deduplicate warnings, and add custom handling for all warnings in specific
14798files/directories.")
14799 (home-page "https://github.com/jeremyevans/ruby-warning")
14800 (license license:expat)))
14801
14802(define-public ruby-wwtd
14803 (package
14804 (name "ruby-wwtd")
14805 (version "1.4.1")
14806 (home-page "https://github.com/grosser/wwtd")
14807 (source (origin
14808 (method git-fetch)
14809 (uri (git-reference
14810 (url home-page)
14811 (commit (string-append "v" version))))
14812 (file-name (git-file-name name version))
14813 (sha256
14814 (base32
14815 "0gw7vfnbb41cy67yw82zji3jkhfsgmzcgzaszm99ax77y18wclf2"))
14816 (modules '((guix build utils)))
14817 (snippet
14818 '(begin
14819 ;; Remove bundled library.
14820 (delete-file "spec/rake-12.3.0.gem")))))
14821 (build-system ruby-build-system)
14822 (arguments
14823 '(;; XXX: Tests need multiple versions of ruby, wants to run
14824 ;; `bundle install`, etc.
14825 #:tests? #f
14826 #:phases (modify-phases %standard-phases
14827 (replace 'replace-git-ls-files
14828 (lambda _
14829 (substitute* "wwtd.gemspec"
14830 (("git ls-files lib/ bin/`")
14831 "find lib/ bin/ -type f |sort`"))))
14832 (add-before 'check 'remove-version-constraints
14833 (lambda _
14834 (delete-file "Gemfile.lock")))
14835 (replace 'check
14836 (lambda* (#:key tests? #:allow-other-keys)
14837 (if tests?
14838 (invoke "rspec" "spec/")
14839 (format #t "test suite not run~%")))))))
14840 (native-inputs
14841 (list ruby-bump ruby-rspec))
14842 (synopsis "Run @file{.travis.yml} files locally")
14843 (description
14844 "WWTD is a @dfn{Travis Simulator} that lets you run test matrices
14845defined in @file{.travis.yml} on your local machine, using @code{rvm},
14846@code{rbenv}, or @code{chruby} to test different versions of Ruby.")
14847 (license license:expat)))
14848
14849(define-public ruby-rugged
14850 ;; The last release is old and doesn't build anymore (see:
14851 ;; https://github.com/libgit2/rugged/issues/951).
14852 (let ((commit "6379f23cedd5f527cf6a5c229627e366b590a22d")
14853 (revision "0"))
14854 (package
14855 (name "ruby-rugged")
14856 (version (git-version "1.6.2" revision commit))
14857 (source (origin
14858 (method git-fetch)
14859 (uri (git-reference
14860 (url "https://github.com/libgit2/rugged")
14861 (commit commit)))
14862 (file-name (git-file-name name version))
14863 (sha256
14864 (base32
14865 "0yac7vm0l2jsdsxf2k7xbny4iyzsy8fhiy2g5sphhffp7xgynny8"))))
14866 (build-system ruby-build-system)
14867 (arguments
14868 (list #:gem-flags
14869 #~(list "--" "--use-system-libraries")
14870 #:phases
14871 #~(modify-phases %standard-phases
14872 (add-after 'unpack 'adjust-extconf.rb
14873 (lambda _
14874 ;; Neither using --with-git2-dir=$prefix nor providing
14875 ;; pkg-config allows locating the libgit2 prefix (see:
14876 ;; https://github.com/libgit2/rugged/issues/955).
14877 (substitute* "ext/rugged/extconf.rb"
14878 (("LIBGIT2_DIR = File.join.*'vendor', 'libgit2'.*")
14879 (format #f "LIBGIT2_DIR = ~s~%"
14880 #$(this-package-input "libgit2"))))))
14881 (delete 'check) ;moved after the install phase
14882 (add-after 'install 'check
14883 (assoc-ref %standard-phases 'check))
14884 (add-before 'check 'set-GEM_PATH
14885 (lambda _
14886 (setenv "GEM_PATH" (string-append
14887 (getenv "GEM_PATH") ":"
14888 #$output "/lib/ruby/vendor_ruby"))))
14889 (add-before 'check 'disable-problematic-tests
14890 (lambda _
14891 (with-directory-excursion "test"
14892 (for-each delete-file
14893 ;; These tests require an actual libgit2 git
14894 ;; repository checkout.
14895 '("blame_test.rb"
14896 "blob_test.rb"
14897 "cherrypick_test.rb"
14898 "config_test.rb"
14899 "commit_test.rb"
14900 "diff_test.rb"
14901 "index_test.rb"
14902 "merge_test.rb"
14903 "note_test.rb"
14904 "object_test.rb"
14905 "patch_test.rb"
14906 "rebase_test.rb"
14907 "reference_test.rb"
14908 "remote_test.rb"
14909 "repo_apply_test.rb"
14910 "repo_ignore_test.rb"
14911 "repo_pack_test.rb"
14912 "repo_reset_test.rb"
14913 "repo_test.rb"
14914 "revert_test.rb"
14915 "settings_test.rb"
14916 "status_test.rb"
14917 "submodule_test.rb"
14918 "tag_test.rb"
14919 "tree_test.rb"
14920 "walker_test.rb"))
14921 (delete-file-recursively "online")))))))
14922 (native-inputs (list git-minimal/pinned ruby-rake-compiler))
14923 (inputs (list libgit2))
14924 (synopsis "Ruby bindings to the libgit2 linkable C Git library")
14925 (description "Rugged is a library for accessing libgit2 in Ruby. It gives
14926you the speed and portability of libgit2 with the beauty of the Ruby
14927language.")
14928 (home-page "https://www.rubydoc.info/gems/rugged")
14929 (license license:expat))))
14930
14931(define-public ruby-yell
14932 (package
14933 (name "ruby-yell")
14934 (version "2.2.2")
14935 (source
14936 (origin
14937 (method url-fetch)
14938 (uri (rubygems-uri "yell" version))
14939 (sha256
14940 (base32
14941 "1g16kcdhdfvczn7x81jiq6afg3bdxmb73skqjyjlkp5nqcy6y5hx"))))
14942 (build-system ruby-build-system)
14943 (arguments
14944 `(#:phases
14945 (modify-phases %standard-phases
14946 (replace 'check
14947 (lambda _
14948 (invoke "rake" "examples")))))) ; there is no test target.
14949 (synopsis
14950 "Extensible logging library for Ruby")
14951 (description
14952 "Yell is a comprehensive logging replacement for Ruby. It defines
14953multiple adapters, various log level combinations and message formatting
14954options.")
14955 (home-page "https://github.com/rudionrails/yell")
14956 (license license:expat)))
14957
14958(define-public ruby-e2mmap
14959 (package
14960 (name "ruby-e2mmap")
14961 (version "0.1.0")
14962 (source
14963 (origin
14964 (method url-fetch)
14965 (uri (rubygems-uri "e2mmap" version))
14966 (sha256
14967 (base32
14968 "0n8gxjb63dck3vrmsdcqqll7xs7f3wk78mw8w0gdk9wp5nx6pvj5"))))
14969 (build-system ruby-build-system)
14970 (arguments
14971 `(#:tests? #f)) ;; There is a rakefile but no tests
14972 (synopsis
14973 "Module for defining custom exceptions with specific messages")
14974 (description
14975 "Exception2MessageMapper (e2mmap) is a helper module for easily defining
14976exceptions with predefined messages.")
14977 (home-page "https://github.com/ruby/e2mmap")
14978 (license license:bsd-2)))
14979
14980(define-public ruby-benchmark
14981 (package
14982 (name "ruby-benchmark")
14983 (version "0.4.0")
14984 (source
14985 (origin
14986 (method url-fetch)
14987 (uri (rubygems-uri "benchmark" version))
14988 (sha256
14989 (base32
14990 "0jl71qcgamm96dzyqk695j24qszhcc7liw74qc83fpjljp2gh4hg"))))
14991 (build-system ruby-build-system)
14992 (synopsis "Performance benchmarking library")
14993 (description "This package provides methods for benchmarking Ruby code,
14994giving detailed reports on the time taken for each task.")
14995 (home-page "https://github.com/ruby/benchmark")
14996 (license license:bsd-2)))
14997
14998(define-public ruby-jekyll-feed
14999 (package
15000 (name "ruby-jekyll-feed")
15001 (version "0.15.1")
15002 (source
15003 (origin
15004 (method url-fetch)
15005 (uri (rubygems-uri "jekyll-feed" version))
15006 (sha256
15007 (base32
15008 "1zxqkrnix0xiw98531h5ga6h69jhzlx2jh9qhvcl67p8nq3sgza9"))))
15009 (build-system ruby-build-system)
15010 (arguments
15011 `(#:tests? #false)) ;there are none
15012 (propagated-inputs
15013 (list jekyll))
15014 (synopsis
15015 "Jekyll plugin to generate an Atom feed of your Jekyll posts")
15016 (description
15017 "This package provides a Jekyll plugin to generate an Atom feed
15018of your Jekyll posts.")
15019 (home-page
15020 "https://github.com/jekyll/jekyll-feed")
15021 (license license:expat)))
15022
15023(define-public ruby-jekyll-sitemap
15024 (package
15025 (name "ruby-jekyll-sitemap")
15026 (version "1.4.0")
15027 (source
15028 (origin
15029 (method url-fetch)
15030 (uri (rubygems-uri "jekyll-sitemap" version))
15031 (sha256
15032 (base32
15033 "0622rwsn5i0m5xcyzdn86l68wgydqwji03lqixdfm1f1xdfqrq0d"))))
15034 (build-system ruby-build-system)
15035 (arguments
15036 `(#:tests? #false)) ;there are none
15037 (propagated-inputs
15038 (list jekyll))
15039 (synopsis
15040 "Automatically generate a sitemap.xml for your Jekyll site")
15041 (description
15042 "This package provides a Jekyll plugin to silently generate
15043a sitemaps.org compliant sitemap for your Jekyll site.")
15044 (home-page
15045 "https://github.com/jekyll/jekyll-sitemap")
15046 (license license:expat)))
15047
15048(define-public ruby-jekyll-seo-tag
15049 (package
15050 (name "ruby-jekyll-seo-tag")
15051 (version "2.7.1")
15052 (source
15053 (origin
15054 (method url-fetch)
15055 (uri (rubygems-uri "jekyll-seo-tag" version))
15056 (sha256
15057 (base32
15058 "0fsi75hymk2wswy216fs224p5ycrzjw1kshw1bsl5czhv42wr2w3"))))
15059 (build-system ruby-build-system)
15060 (arguments
15061 `(#:tests? #false))
15062 (propagated-inputs
15063 (list jekyll))
15064 (synopsis
15065 "Jekyll plugin to add metadata tags for search engines and social networks")
15066 (description
15067 "This package provides a Jekyll plugin to add metadata tags for search engines
15068and social networks to better index and display your site's content.")
15069 (home-page
15070 "https://github.com/jekyll/jekyll-seo-tag")
15071 (license license:expat)))
15072
15073(define-public ruby-taskjuggler
15074 (package
15075 (name "ruby-taskjuggler")
15076 (version "3.8.1")
15077 (source
15078 (origin
15079 (method url-fetch)
15080 (uri (rubygems-uri "taskjuggler" version))
15081 (sha256
15082 (base32
15083 "16d5vgz54all8vl3haqy6j69plny3np4kc3wq7wy3xa3i0h7v60z"))))
15084 (build-system ruby-build-system)
15085 (native-inputs (list ruby-rspec tzdata-for-tests))
15086 (propagated-inputs
15087 (list ruby-mail ruby-term-ansicolor))
15088 (arguments
15089 '(#:phases (modify-phases %standard-phases
15090 (replace 'replace-git-ls-files
15091 (lambda _
15092 (substitute* "tasks/rdoc.rake"
15093 (("`git ls-files -- lib`")
15094 "`find lib/ -type f |sort`"))))
15095 (add-before 'check 'tzdir-setup
15096 (lambda* (#:key inputs #:allow-other-keys)
15097 (setenv "TZDIR"
15098 (string-append (assoc-ref inputs "tzdata")
15099 "/share/zoneinfo"))))
15100 (add-before 'check 'delete-test-BatchProcessor
15101 ;; test_BatchProcessor fails with exception:
15102 ;; run> terminated with exception (report_on_exception is true)
15103 (lambda _
15104 (delete-file "test/test_BatchProcessor.rb"))))))
15105 (synopsis
15106 "Project management command line tool with a domain specific language")
15107 (description
15108 "TaskJuggler (tj3) is a project management tool for project planning and
15109tracking using a domain specific language; projects are plain text files
15110written using your favourite text editor. It includes reporting in HTML, CSV
15111or iCalendar format and an email based status tracking system to send and
15112receive time sheets from collaborators.
15113
15114It covers the complete spectrum of project management tasks from the first
15115idea to the completion of the project. It assists you during project scoping,
15116resource assignment, cost and revenue planning, risk and communication
15117management, status tracking and reporting.")
15118 (home-page "https://taskjuggler.org")
15119 (license license:gpl2)))
15120
15121(define-public ruby-cmath
15122 (package
15123 (name "ruby-cmath")
15124 (version "1.0.0")
15125 (source
15126 (origin
15127 (method url-fetch)
15128 (uri (rubygems-uri "cmath" version))
15129 (sha256
15130 (base32
15131 "1xkz6xyhpkjbdvpdib8450w62rls1mjryz0gzbbnadxkxn82nb8m"))))
15132 (build-system ruby-build-system)
15133 (arguments
15134 `(#:tests? #false))
15135 (native-inputs
15136 (list bundler ruby-rake-compiler))
15137 (synopsis "Trigonometric functions for complex numbers")
15138 (description
15139 "This gem is a library that provides trigonometric and transcendental
15140functions for complex numbers. The functions in this module accept integers,
15141floating-point numbers or complex numbers as arguments.")
15142 (home-page "https://github.com/ruby/cmath")
15143 (license license:bsd-2)))
15144
15145(define-public ruby-sucker-punch
15146 (package
15147 (name "ruby-sucker-punch")
15148 (version "3.1.0")
15149 (source
15150 (origin
15151 (method url-fetch)
15152 (uri (rubygems-uri "sucker_punch" version))
15153 (sha256
15154 (base32 "12by9vx8q6l4i56q62k1s1ymaxbpg4rny5zngj5i5h09kyh2yp4p"))))
15155 (build-system ruby-build-system)
15156 (arguments
15157 `(#:phases
15158 (modify-phases %standard-phases
15159 (add-after 'extract-gemspec 'less-strict-dependencies
15160 (lambda _
15161 (substitute* "sucker_punch.gemspec"
15162 (("1.0.0") "1.0")))))))
15163 (native-inputs
15164 (list
15165 ruby-pry))
15166 (propagated-inputs
15167 (list
15168 ruby-concurrent))
15169 (home-page "https://github.com/brandonhilkert/sucker_punch")
15170 (synopsis "Asynchronous processing library for Ruby")
15171 (description "Sucker Punch is a single-process Ruby asynchronous processing
15172library. It is perfect for asynchronous processes like emailing, data crunching
15173or social platform manipulation; and generally recommended for jobs that are
15174fast and non-mission critical like logs, emails, etc.")
15175 (license license:expat)))
15176
15177(define-public ruby-countdownlatch
15178 (package
15179 (name "ruby-countdownlatch")
15180 (version "1.0.0")
15181 (source
15182 (origin
15183 (method url-fetch)
15184 (uri (rubygems-uri "countdownlatch" version))
15185 (sha256
15186 (base32 "1v6pbay6z07fp7yvnba1hmyacbicvmjndd8rn2h1b5rmpcb5s0j3"))))
15187 (build-system ruby-build-system)
15188 (home-page "https://github.com/benlangfeld/countdownlatch")
15189 (synopsis "Thread synchronization aid Ruby")
15190 (description "CountDownLatch is a synchronization aid that allows one or
15191more threads to wait until a set of operations being performed in other threads
15192completes.")
15193 (license license:expat)))
15194
15195(define-public ruby-value-semantics
15196 (package
15197 (name "ruby-value-semantics")
15198 (version "3.6.1")
15199 (source
15200 (origin
15201 (method url-fetch)
15202 (uri (rubygems-uri "value_semantics" version))
15203 (sha256
15204 (base32 "1vdwai8wf6r1fkvdpyz1vzxm89q7ghjvb3pqpg2kvwibwzd99dnx"))))
15205 (build-system ruby-build-system)
15206 (arguments
15207 `(#:phases
15208 (modify-phases %standard-phases
15209 (replace 'check
15210 (lambda* (#:key tests? #:allow-other-keys)
15211 (when tests?
15212 (invoke "rspec")))))))
15213 (native-inputs
15214 (list
15215 ruby-rspec))
15216 (home-page "https://github.com/tomdalling/value_semantics")
15217 (synopsis "Ruby gem for making value classes")
15218 (description "ValueSemantics generates modules that provide conventional
15219value semantics for a given set of attributes. The behaviour is similar to an
15220immutable Struct class, plus extensible, lightweight validation and coercion.")
15221 (license license:expat)))
15222
15223(define-public ruby-promise
15224 (package
15225 (name "ruby-promise")
15226 (version "0.7.4")
15227 (source
15228 (origin
15229 (method url-fetch)
15230 (uri (rubygems-uri "promise.rb" version))
15231 (sha256
15232 (base32 "0a819sikcqvhi8hck1y10d1nv2qkjvmmm553626fmrh51h2i089d"))))
15233 (build-system ruby-build-system)
15234 (arguments
15235 `(#:test-target "spec"
15236 #:phases
15237 (modify-phases %standard-phases
15238 (add-after 'extract-gemspec 'less-strict-dependencies
15239 (lambda _
15240 (substitute* "Rakefile"
15241 (("if Gem.ruby_version.*") "if false\n"))
15242 (substitute* "spec/spec_helper.rb"
15243 ((".*devtools/spec_helper.*") "\n")))))))
15244 (native-inputs
15245 (list
15246 ruby-rspec
15247 ruby-rspec-its
15248 ruby-awesome-print
15249 ruby-fuubar))
15250 (home-page "https://github.com/lgierth/promise.rb")
15251 (synopsis "Asynchronous operation library for Ruby")
15252 (description "Promise is a Ruby implementation of the Promises/A+
15253specification. It provides 100% mutation coverage, tested on MRI 1.9, 2.0, 2.1,
152542.2, Rubinius, and JRuby.")
15255 (license license:unlicense)))
15256
15257(define-public ruby-multicodecs
15258 (package
15259 (name "ruby-multicodecs")
15260 (version "0.2.1")
15261 (source
15262 (origin
15263 (method url-fetch)
15264 (uri (rubygems-uri "multicodecs" version))
15265 (sha256
15266 (base32 "0drq267di57l9zqw6zvqqimilz42rbc8z7392dwkk8wslq30s7v8"))))
15267 (build-system ruby-build-system)
15268 (home-page "https://github.com/SleeplessByte/ruby-multicodec")
15269 (synopsis "Ruby implementation of multiformats/multicodec")
15270 (description "Multicodecs is the ruby implementation of
15271multiformats/multicodec, a canonical table of of codecs used by various
15272multiformats.")
15273 (license license:expat)))
15274
15275(define-public ruby-multihashes
15276 (package
15277 (name "ruby-multihashes")
15278 (version "0.2.0")
15279 (source
15280 (origin
15281 (method url-fetch)
15282 (uri (rubygems-uri "multihashes" version))
15283 (sha256
15284 (base32 "17wiyy3fiv8rpgdv9ca01yncsmaaf8yg15bg18wc7m9frss1vgqg"))))
15285 (build-system ruby-build-system)
15286 (propagated-inputs
15287 (list
15288 ruby-multicodecs))
15289 (home-page "https://github.com/multiformats/ruby-multihash")
15290 (synopsis "Multihash implementation for Ruby")
15291 (description "Multihashes provides a simple, low-level multihash
15292implementation for Ruby. A multihash is a digest with an embedded hash function
15293code")
15294 (license license:expat)))
15295
15296(define-public ruby-lazy-object
15297 (package
15298 (name "ruby-lazy-object")
15299 (version "0.0.3")
15300 (source
15301 (origin
15302 (method url-fetch)
15303 (uri (rubygems-uri "lazy_object" version))
15304 (sha256
15305 (base32 "08px15lahc28ik9smvw1hgamf792gd6gq0s4k94yq1h7jq25wjn8"))))
15306 (build-system ruby-build-system)
15307 (arguments
15308 `(#:test-target "spec"))
15309 (home-page "https://github.com/HornsAndHooves/lazy_object")
15310 (synopsis "Object wrapper that forwards all calls to the reference object")
15311 (description "LazyObject is an object wrapper that forwards all calls to the
15312reference object. This object is not created until the first method dispatch.")
15313 (license license:expat)))
15314
15315(define-public ruby-citrus
15316 (package
15317 (name "ruby-citrus")
15318 (version "3.0.2")
15319 (source
15320 (origin
15321 (method git-fetch)
15322 ;; Download from GitHub because the rubygems version does not contain
15323 ;; files needed for tests.
15324 (uri (git-reference
15325 (url "https://github.com/mjackson/citrus")
15326 (commit (string-append "v" version))))
15327 (file-name (git-file-name name version))
15328 (sha256
15329 (base32 "197wrgqrddgm1xs3yvjvd8vkvil4h4mdrcp16jmd4b57rxrrr769"))))
15330 (build-system ruby-build-system)
15331 (home-page "https://mjackson.github.io/citrus/")
15332 (synopsis "Parsing Expressions for Ruby")
15333 (description "Citrus is a parsing library for Ruby that combines the
15334expressiveness of the language with the parsing expressions.")
15335 (license license:expat)))
15336
15337(define-public ruby-cbor
15338 (package
15339 (name "ruby-cbor")
15340 (version "0.5.9.6")
15341 (source
15342 (origin
15343 (method url-fetch)
15344 (uri (rubygems-uri "cbor" version))
15345 (sha256
15346 (base32 "0511idr8xps9625nh3kxr68sdy6l3xy2kcz7r57g47fxb1v18jj3"))))
15347 (build-system ruby-build-system)
15348 (arguments
15349 `(#:test-target "spec"))
15350 (native-inputs
15351 (list
15352 ruby-rspec
15353 ruby-rake-compiler
15354 ruby-yard))
15355 (home-page "https://cbor.io/")
15356 (synopsis "Concise Binary Object Representation")
15357 (description "CBOR is a library for the
15358@acronym{CBOR, Concise Binary Object Representation} format, based on
15359Sadayuki Furuhashi's MessagePack library.")
15360 (license license:asl2.0)))
15361
15362(define-public ruby-gem-release
15363 (package
15364 (name "ruby-gem-release")
15365 (version "2.2.2")
15366 (source
15367 (origin
15368 (method url-fetch)
15369 (uri (rubygems-uri "gem-release" version))
15370 (sha256
15371 (base32 "108rrfaiayi14zrqbb6z0cbwcxh8n15am5ry2a86v7c8c3niysq9"))))
15372 (build-system ruby-build-system)
15373 (arguments
15374 ;; No rakefile
15375 `(#:tests? #f))
15376 (home-page "https://github.com/svenfuchs/gem-release")
15377 (synopsis "Ruby gem plugin for release management")
15378 (description "GemRelease is a gem plugin that aims at making gem development
15379easier by automating repetitive work based on conventions, configuration, and
15380templates.")
15381 (license license:expat)))
15382
15383(define-public ruby-base32
15384 (package
15385 (name "ruby-base32")
15386 (version "0.3.4")
15387 (source
15388 (origin
15389 (method url-fetch)
15390 (uri (rubygems-uri "base32" version))
15391 (sha256
15392 (base32 "1fjs0l3c5g9qxwp43kcnhc45slx29yjb6m6jxbb2x1krgjmi166b"))))
15393 (build-system ruby-build-system)
15394 (native-inputs
15395 (list
15396 ruby-gem-release))
15397 (home-page "https://github.com/stesla/base32")
15398 (synopsis "Ruby extension for base32 encoding and decoding")
15399 (description "Base32 is a library which provides base32 decoding and
15400encoding.")
15401 (license license:expat)))
15402
15403(define-public ruby-dhall
15404 (package
15405 (name "ruby-dhall")
15406 (version "0.5.2")
15407 (source
15408 (origin
15409 (method url-fetch)
15410 (uri (rubygems-uri "dhall" version))
15411 (sha256
15412 (base32 "09wcq8xc1ynld04r2f332bx8cn7rjc4afaq8hm1dr2fc35jlpn6m"))))
15413 (build-system ruby-build-system)
15414 (arguments
15415 ;; No test in gem archive
15416 `(#:tests? #f))
15417 (propagated-inputs
15418 (list
15419 ruby-base32
15420 ruby-cbor
15421 ruby-citrus
15422 ruby-lazy-object
15423 ruby-multihashes
15424 ruby-promise
15425 ruby-value-semantics))
15426 (home-page "https://git.sr.ht/~singpolyma/dhall-ruby")
15427 (synopsis "Ruby implementation of the Dhall configuration language")
15428 (description "Dhall.rb is a Ruby implementation of the Dhall configuration
15429language. Dhall is a memory safe and non-Turing-complete configuration
15430language.")
15431 (license license:gpl3+)))
15432
15433(define-public ruby-money
15434 (package
15435 (name "ruby-money")
15436 (version "6.16.0")
15437 (source
15438 (origin
15439 (method url-fetch)
15440 (uri (rubygems-uri "money" version))
15441 (sha256
15442 (base32 "0jkmsj5ymadik7bvl670bqwmvhsdyv7hjr8gq9z293hq35gnyiyg"))))
15443 (build-system ruby-build-system)
15444 (arguments
15445 ;; No rakefile.
15446 `(#:tests? #f))
15447 (propagated-inputs
15448 (list
15449 ruby-i18n))
15450 (home-page "https://rubymoney.github.io/money/")
15451 (synopsis "Currency conversion library for Ruby")
15452 (description "RubyMoney provides a library for dealing with money and
15453currency conversion. Its features are:
15454@itemize
15455@item
15456Provides a Money class which encapsulates all information about a certain
15457amount of money, such as its value and its currency.
15458@item
15459Provides a Money::Currency class which encapsulates all information about a
15460monetary unit.
15461@item
15462Represents monetary values as integers, in cents; so avoids floating point
15463rounding errors.
15464@item
15465Represents currency as Money::Currency instances providing a high level of
15466flexibility.
15467@item Provides APIs for exchanging money from one currency to another.
15468@end itemize")
15469 (license license:expat)))
15470
15471(define-public ruby-monetize
15472 (package
15473 (name "ruby-monetize")
15474 (version "1.11.0")
15475 (source
15476 (origin
15477 (method url-fetch)
15478 (uri (rubygems-uri "monetize" version))
15479 (sha256
15480 (base32 "0cna2myxdbwfq0gn6k2hgrh368dq7wld3jklm96443ysykd0difn"))))
15481 (build-system ruby-build-system)
15482 (arguments
15483 `(#:test-target "spec"))
15484 (native-inputs
15485 (list
15486 ruby-rspec))
15487 (propagated-inputs
15488 (list
15489 ruby-money))
15490 (home-page "https://github.com/RubyMoney/monetize")
15491 (synopsis "Convert various objects into Money objects")
15492 (description "Monetize provides a library for converting various objects
15493into Money objects.")
15494 (license license:expat)))
15495
15496(define-public ruby-money-open-exchange-rates
15497 (package
15498 (name "ruby-money-open-exchange-rates")
15499 (version "1.4.0")
15500 (source
15501 (origin
15502 (method git-fetch)
15503 ;; Download from GitHub because the rubygems version does not contain
15504 ;; Rakefile.
15505 (uri (git-reference
15506 (url "https://github.com/spk/money-open-exchange-rates")
15507 (commit (string-append "v" version))))
15508 (file-name (git-file-name name version))
15509 (sha256
15510 (base32 "11xwqli8snr19k48yh8h77sal5vxd4snzq9gxg08v61f0574m3gw"))))
15511 (build-system ruby-build-system)
15512 (native-inputs
15513 (list
15514 ruby-minitest
15515 ruby-mocha
15516 ruby-monetize
15517 ruby-rake
15518 ruby-rubocop
15519 ruby-timecop
15520 ruby-webmock))
15521 (propagated-inputs
15522 (list
15523 ruby-money))
15524 (home-page "https://spk.github.io/money-open-exchange-rates/")
15525 (synopsis "Money open exchange rates for Ruby")
15526 (description "This package provides a gem that calculates the exchange rate
15527using published rates from open-exchange-rates. Compatible with the money gem.")
15528 (license license:expat)))
15529
15530(define-public ruby-roda
15531 (package
15532 (name "ruby-roda")
15533 (version "3.57.0")
15534 (source
15535 (origin
15536 (method url-fetch)
15537 (uri (rubygems-uri "roda" version))
15538 (sha256
15539 (base32 "0nkfxnbcfnriywvx9kpamp850cwjmqv8ssajc95d0aiyjr4kdrfy"))))
15540 (build-system ruby-build-system)
15541 (arguments
15542 ;; No rakefile
15543 `(#:tests? #f))
15544 (propagated-inputs (list ruby-rack))
15545 (home-page "https://roda.jeremyevans.net")
15546 (synopsis "Routing Tree Web Toolkit")
15547 (description "Roda is a routing tree web toolkit, designed for building fast
15548and maintainable web applications in ruby.")
15549 (license license:expat)))
15550
15551(define-public ruby-nori
15552 (package
15553 (name "ruby-nori")
15554 (version "2.6.0")
15555 (source
15556 (origin
15557 (method url-fetch)
15558 (uri (rubygems-uri "nori" version))
15559 (sha256
15560 (base32 "066wc774a2zp4vrq3k7k8p0fhv30ymqmxma1jj7yg5735zls8agn"))))
15561 (build-system ruby-build-system)
15562 (arguments
15563 ;; Tests require too old version of rspec
15564 `(#:tests? #f))
15565 (native-inputs
15566 (list ruby-nokogiri
15567 ruby-rake
15568 ruby-rspec))
15569 (home-page "https://github.com/savonrb/nori")
15570 (synopsis "XML to Hash translator")
15571 (description "Nori is a simple XML parsing ripped from Crack which in-turn
15572ripped from Merb. It supports pluggable parsers and ships with both REXML and
15573Nokogiri implementations.")
15574 (license license:expat)))
15575
15576;; This package is deprecated per upstream and should be phased out.
15577(define-public ruby-faraday-middleware
15578 (package
15579 (name "ruby-faraday-middleware")
15580 (version "1.2.0")
15581 (source
15582 (origin
15583 (method url-fetch)
15584 (uri (rubygems-uri "faraday_middleware" version))
15585 (sha256
15586 (base32 "1bw8mfh4yin2xk7138rg3fhb2p5g2dlmdma88k82psah9mbmvlfy"))))
15587 (build-system ruby-build-system)
15588 (arguments `(#:tests? #f))
15589 (propagated-inputs (list ruby-faraday))
15590 (home-page "https://github.com/lostisland/faraday_middleware")
15591 (synopsis "Various middleware for Faraday")
15592 (description "Faraday_Middleware is a collection of middleware for the
15593Faraday-based API wrappers.")
15594 (license license:expat)))
15595
15596(define-public ruby-faraday-multipart
15597 (package
15598 (name "ruby-faraday-multipart")
15599 (version "1.0.4")
15600 (source (origin
15601 (method git-fetch)
15602 (uri (git-reference
15603 (url "https://github.com/lostisland/faraday-multipart")
15604 (commit (string-append "v" version))))
15605 (file-name (git-file-name name version))
15606 (sha256
15607 (base32
15608 "0ywxhff40a688n50lxrn4d8y096l8sbrwp1jfz4zd3kdiiygclka"))))
15609 (build-system ruby-build-system)
15610 (arguments (list #:test-target "spec"))
15611 (native-inputs (list ruby-faraday ruby-multipart-parser ruby-rspec))
15612 (propagated-inputs (list ruby-multipart-post))
15613 (synopsis "Multipart-post requests extension for Faraday")
15614 (description "This Ruby gem extends Faraday to perform multipart-post
15615requests.")
15616 (home-page "https://github.com/lostisland/faraday-multipart")
15617 (license license:expat)))
15618
15619(define-public ruby-bandwidth-iris
15620 (package
15621 (name "ruby-bandwidth-iris")
15622 (version "7.0.0")
15623 (source
15624 (origin
15625 (method url-fetch)
15626 (uri (rubygems-uri "ruby-bandwidth-iris" version))
15627 (sha256
15628 (base32 "131c4jhyvnrwbhizkks17fi9g85cwsq5f1p8zi408zyf63n7230d"))))
15629 (build-system ruby-build-system)
15630 (arguments
15631 ;; XXX: Tests don't require helper for some reason, so all fail.
15632 `(#:tests? #f))
15633 (native-inputs
15634 (list ruby-rspec
15635 ruby-yard))
15636 (propagated-inputs
15637 (list ruby-activesupport
15638 ruby-builder
15639 ruby-faraday
15640 ruby-faraday-middleware
15641 ruby-nori))
15642 (home-page "https://github.com/Bandwidth/ruby-bandwidth-iris")
15643 (synopsis "Gem for integrating to Bandwidth's Iris API")
15644 (description "Bandwidth IRIS is a Ruby SDK for Bandwidth Phone Number
15645Dashboard. It is a Ruby Client library for IRIS / BBS API.")
15646 (license license:expat)))
15647
15648(define-public ruby-securerandom
15649 (package
15650 (name "ruby-securerandom")
15651 (version "0.4.1")
15652 (source
15653 (origin
15654 (method url-fetch)
15655 (uri (rubygems-uri "securerandom" version))
15656 (sha256
15657 (base32 "1cd0iriqfsf1z91qg271sm88xjnfd92b832z49p1nd542ka96lfc"))))
15658 (build-system ruby-build-system)
15659 (arguments '(#:tests? #f)) ; No tests found.
15660 (synopsis "Interface for secure random number generator")
15661 (description "This package provides a Ruby interface for secure random
15662number generators.")
15663 (home-page "https://github.com/ruby/securerandom")
15664 (license (list license:bsd-2))))
15665
15666(define-public ruby-selenium-webdriver
15667 (package
15668 (name "ruby-selenium-webdriver")
15669 (version "4.22.0")
15670 (source (origin
15671 (method url-fetch)
15672 (uri (rubygems-uri "selenium-webdriver" version))
15673 (sha256
15674 (base32
15675 "0rjxlivsh32xvjq78p1m1sr366aa04wms4hwb2r187ygrnmp0hv4"))))
15676 (build-system ruby-build-system)
15677 ;; FIXME: The gem release lacks test files, and the git checkout lacks
15678 ;; JavaScript source that is generated using Bazel, which isn't available
15679 ;; in Guix yet, so disable the test suite for now.
15680 (arguments (list #:tests? #f))
15681 (propagated-inputs (list ruby-base64
15682 ruby-rexml
15683 ruby-rubyzip
15684 ruby-websocket))
15685 (synopsis "Selenium browser automation bindings for Ruby")
15686 (description "Selenium implements the W3C WebDriver protocol to automate
15687popular browsers. It aims to mimic the behaviour of a real user as it
15688interacts with the application's HTML. It's primarily intended for web
15689application testing, but any web-based task can be automated. This package
15690provides the Ruby bindings of Selenium.")
15691 (home-page "https://www.selenium.dev/")
15692 (license license:asl2.0)))
15693
15694(define-public ruby-sentry-core
15695 (package
15696 (name "ruby-sentry-core")
15697 (version "5.3.1")
15698 (source
15699 (origin
15700 (method url-fetch)
15701 (uri (rubygems-uri "sentry-ruby-core" version))
15702 (sha256
15703 (base32 "141mrw8wghhsjvln9m6ld3hap3xc5v901jjiz007xywy25725hyd"))))
15704 (build-system ruby-build-system)
15705 (arguments
15706 ;; No rakefile in gem.
15707 `(#:tests? #f))
15708 (propagated-inputs
15709 (list ruby-concurrent
15710 ruby-faraday))
15711 (home-page "https://sentry.io/for/ruby/")
15712 (synopsis "Client interface for the Sentry error logger")
15713 (description "Sentry-Core provides a gem that provides a client
15714interface for the Sentry error logger.")
15715 (license license:expat)))
15716
15717(define-public ruby-sentry
15718 (package
15719 (name "ruby-sentry")
15720 (version "5.3.1")
15721 (source
15722 (origin
15723 (method url-fetch)
15724 (uri (rubygems-uri "sentry-ruby" version))
15725 (sha256
15726 (base32 "0by9mvw8rklzpyx59vfija8h3ssfvxvf5nbqxfmygfy6lm1vdngz"))))
15727 (build-system ruby-build-system)
15728 (arguments
15729 ;; No rakefile in gem
15730 `(#:tests? #f))
15731 (propagated-inputs
15732 (list ruby-concurrent
15733 ruby-faraday
15734 ruby-sentry-core))
15735 (home-page "https://sentry.io/for/ruby/")
15736 (synopsis "Client interface for the Sentry error logger")
15737 (description "Sentry provides a gem that provides a client
15738interface for the Sentry error logger.")
15739 (license license:expat)))
15740
15741(define-public ruby-webrick
15742 (package
15743 (name "ruby-webrick")
15744 (version "1.8.1")
15745 (source (origin
15746 (method git-fetch) ;for tests
15747 (uri (git-reference
15748 (url "https://github.com/ruby/webrick")
15749 (commit (string-append "v" version))))
15750 (file-name (git-file-name name version))
15751 (sha256
15752 (base32
15753 "1xb0mk3cghdir65nmj0mblprbf21blli7267b6yyvxclh307yp6s"))))
15754 (build-system ruby-build-system)
15755 (arguments
15756 (list #:phases
15757 #~(modify-phases %standard-phases
15758 (add-after 'extract-gemspec 'delete-problematic-tests
15759 (lambda _
15760 ;; The httresponse tests fail for
15761 ;; unknown reasons (see:
15762 ;; https://github.com/ruby/webrick/issues/112).
15763 (delete-file "test/webrick/test_httpresponse.rb"))))))
15764 (home-page "https://github.com/ruby/webrick")
15765 (synopsis "HTTP server toolkit")
15766 (description "WEBrick is an HTTP server toolkit that can be configured as an
15767HTTPS server, a proxy server, and a virtual-host server.")
15768 (license license:bsd-2)))
15769
15770(define-public ruby-websocket
15771 (let ((commit "950e416a19a76c7e6a673a7e5baa6283476dbec1")
15772 (revision "1"))
15773 (package
15774 (name "ruby-websocket")
15775 (version (git-version "1.2.9" revision commit))
15776 (source (origin
15777 (method git-fetch)
15778 (uri (git-reference
15779 (url "https://github.com/imanel/websocket-ruby")
15780 (commit commit)))
15781 (sha256
15782 (base32
15783 "1i6r0glpxy47zdf76aqgcpjgcgydla0733hfdhp628pmrinnkgwv"))
15784 (file-name (git-file-name name version))))
15785 (build-system ruby-build-system)
15786 (arguments (list #:test-target "spec"
15787 #:phases #~(modify-phases %standard-phases
15788 (add-after 'unpack 'disable-rubocop
15789 (lambda _
15790 (substitute* "Rakefile"
15791 (("require 'rubocop/rake_task'") "")
15792 (("RuboCop::RakeTask.new") "")))))))
15793 (native-inputs
15794 (list ruby-rspec
15795 ruby-webrick))
15796 (synopsis "WebSocket protocol Ruby library")
15797 (description "This package provides a Ruby library to handle the WebSocket
15798protocol.")
15799 (home-page "https://github.com/imanel/websocket-ruby")
15800 (license license:expat))))
15801
15802(define-public ruby-braintree
15803 (package
15804 (name "ruby-braintree")
15805 (version "4.12.0")
15806 (source
15807 (origin
15808 (method git-fetch) ;for tests
15809 (uri (git-reference
15810 (url "https://github.com/braintree/braintree_ruby")
15811 (commit version)))
15812 (file-name (git-file-name name version))
15813 (sha256
15814 (base32 "0gfgkymy3655drwgs42bj9ap9qib1l30sajxmypmp6s75m9w3gsh"))))
15815 (build-system ruby-build-system)
15816 (arguments
15817 (list
15818 #:test-target "test:unit"
15819 #:phases
15820 #~(modify-phases %standard-phases
15821 (add-after 'unpack 'disable-rubocop
15822 (lambda _
15823 (substitute* "Rakefile"
15824 (("sh \"rubocop\"") ""))))
15825 (add-after 'unpack 'relax-requirements
15826 (lambda _
15827 (substitute* "Gemfile"
15828 (("gem \"pry\".*") "gem 'pry'\n")
15829 (("gem \"rake\".*") "gem 'rake'\n")
15830 (("gem \"libxml-ruby\", \"3.2.0\"")
15831 "gem \"libxml-ruby\", \"~> 3.0.0\"")
15832 (("gem \"rspec\", \"3.9.0\"")
15833 "gem \"rspec\", \">= 3.9.0\"")
15834 (("gem \"webrick\", \"~>1.7.0\"")
15835 "gem \"webrick\", \">=1.7.0\"")
15836 ((".*gem \"rubocop\".*") "")
15837 ((".*gem \"rspec_junit_formatter\".*") "")))))))
15838 (native-inputs
15839 (list ruby-libxml
15840 ruby-pry
15841 ruby-rake
15842 ruby-rspec
15843 ruby-webrick))
15844 (propagated-inputs
15845 (list ruby-builder
15846 ruby-rexml))
15847 (home-page "https://www.braintreepayments.com/")
15848 (synopsis "Integration access to the Braintree Gateway")
15849 (description "Braintree provides resources and tools for developers to
15850integrate Braintree's global payments platform.")
15851 (license license:expat)))
15852
15853(define-public ruby-niceogiri
15854 (package
15855 (name "ruby-niceogiri")
15856 (version "1.1.2")
15857 (source
15858 (origin
15859 (method url-fetch)
15860 (uri (rubygems-uri "niceogiri" version))
15861 (sha256
15862 (base32 "1ha93211bc9cvh23s9w89zz7rq8irpf64ccd9arvg8v1sxg2798a"))))
15863 (build-system ruby-build-system)
15864 (arguments
15865 `(#:test-target "spec"
15866 #:phases
15867 (modify-phases %standard-phases
15868 (add-after 'extract-gemspec 'less-strict-dependencies
15869 (lambda _
15870 (substitute* "niceogiri.gemspec"
15871 (("2\\.7") "3.8") ;rspec
15872 ((".*dependency.*bundler.*") "\n")
15873 ((".*dependency.*guard-rspec.*") "\n")))))))
15874 (native-inputs
15875 (list ruby-rspec
15876 ruby-yard))
15877 (propagated-inputs (list ruby-nokogiri))
15878 (home-page "https://github.com/benlangfeld/Niceogiri")
15879 (synopsis "Supplement for Nokogiri")
15880 (description "Niceogiri provides wrappers and helpers for XML manipulation
15881using Nokogiri.")
15882 (license license:expat)))
15883
15884(define-public ruby-blather
15885 (package
15886 (name "ruby-blather")
15887 (version "2.0.0")
15888 (source
15889 (origin
15890 (method url-fetch)
15891 (uri (rubygems-uri "blather" version))
15892 (sha256
15893 (base32 "05ry2x835fj4pzk61282pcz86n018cr39zbgwbi213md74i90s7c"))))
15894 (build-system ruby-build-system)
15895 (arguments
15896 ;; XXX: Tests require too old version of rspec.
15897 `(#:tests? #f))
15898 (native-inputs
15899 (list ruby-countdownlatch
15900 ruby-mocha
15901 ruby-rb-fsevent
15902 ruby-rspec
15903 ruby-yard))
15904 (propagated-inputs
15905 (list ruby-activesupport
15906 ruby-eventmachine
15907 ruby-niceogiri
15908 ruby-nokogiri
15909 ruby-sucker-punch))
15910 (home-page "https://github.com/adhearsion/blather")
15911 (synopsis "XMPP Domain Specific Language for Ruby")
15912 (description "Blather is a XMPP DSL for Ruby written on top of EventMachine
15913and Nokogiri.")
15914 (license license:expat)))
15915
15916(define-public ruby-wapiti
15917 (package
15918 (name "ruby-wapiti")
15919 (version "2.1.0")
15920 ;; the gem archive lacks tests
15921 (source (origin
15922 (method git-fetch)
15923 (uri (git-reference
15924 (url "https://github.com/inukshuk/wapiti-ruby")
15925 (commit (string-append "v" version))))
15926 (file-name (git-file-name name version))
15927 (sha256
15928 (base32
15929 "1273dqvn6flq2qv9qbp104rgc7zp1gqx4096s0v0z5f0qnhzc7d6"))))
15930 (build-system ruby-build-system)
15931 (propagated-inputs
15932 (list ruby-builder
15933 ruby-rexml))
15934 (native-inputs
15935 (list ruby-pry
15936 ruby-rake-compiler
15937 ruby-rspec
15938 ruby-simplecov))
15939 (arguments
15940 (list
15941 #:test-target "spec"
15942 #:phases
15943 #~(modify-phases %standard-phases
15944 (add-after 'replace-git-ls-files 'replace-another-git-ls-files
15945 (lambda args
15946 (substitute* "wapiti.gemspec"
15947 (("`git ls-files spec`")
15948 "`find spec -type f | sort`"))))
15949 (add-before 'build 'compile
15950 (lambda args
15951 (invoke "rake" "compile"))))))
15952 (home-page "https://github.com/inukshuk/wapiti-ruby")
15953 (synopsis "Wicked fast Conditional Random Fields for Ruby")
15954 (description
15955 "The Wapiti-Ruby gem provides a wicked fast linear-chain @acronym{CRF,
15956Conditional Random Fields} API for sequence segmentation and labelling. It is
15957based on the codebase of @url{https://wapiti.limsi.fr, Wapiti}.")
15958 (license license:bsd-2)))
15959
15960(define-public ruby-namae
15961 (package
15962 (name "ruby-namae")
15963 (version "1.1.1")
15964 (source (origin
15965 (method url-fetch)
15966 (uri (rubygems-uri "namae" version))
15967 (sha256
15968 (base32
15969 "1j3nl1klkx3gymrdxfc1hlq4a8qlvhhl9aj5v1v08b9fz27sky0l"))))
15970 (build-system ruby-build-system)
15971 (native-inputs
15972 (list ruby-cucumber
15973 ruby-rspec
15974 ruby-simplecov))
15975 (arguments
15976 (list
15977 #:phases
15978 #~(modify-phases %standard-phases
15979 (add-after 'extract-gemspec 'allow-newer-cucumber
15980 (lambda args
15981 (substitute* "Gemfile"
15982 (("'cucumber', '[^']*'")
15983 "'cucumber'"))))
15984 (replace 'check
15985 ;; Avoid 'rake' so we don't need jeweler.
15986 (lambda* (#:key tests? #:allow-other-keys)
15987 (when tests?
15988 (apply invoke
15989 "rspec"
15990 (find-files "spec" "_spec\\.rb$"))))))))
15991 (home-page "https://github.com/berkmancenter/namae")
15992 (synopsis "Parser for human names")
15993 (description
15994 "Namae (名前) is a parser for human names. It recognizes personal names
15995of various cultural backgrounds and tries to split them into their component
15996parts (e.g., given and family names, honorifics etc.).")
15997 (license (list license:bsd-2 license:agpl3+))))
15998
15999(define-public ruby-latex-decode
16000 (package
16001 (name "ruby-latex-decode")
16002 (version "0.4.0")
16003 (source (origin
16004 (method git-fetch)
16005 (uri (git-reference
16006 (url "https://github.com/inukshuk/latex-decode")
16007 (commit (string-append "v" version))))
16008 (sha256
16009 (base32
16010 "1f5j67ayd04pjkmzvn0hk7cr8yqvn0gyg9ns6a0vhzj2gwna9ihy"))
16011 (file-name (git-file-name name version))))
16012 (build-system ruby-build-system)
16013 (native-inputs
16014 (list ruby-cucumber
16015 ruby-rspec))
16016 (arguments
16017 (list
16018 #:test-target "cucumber"
16019 #:phases
16020 #~(modify-phases %standard-phases
16021 (add-after 'extract-gemspec 'avoid-bundler
16022 (lambda args
16023 (substitute* "Rakefile"
16024 (("require 'bundler" orig)
16025 (string-append "# " orig " # patched for Guix"))
16026 (("Cucumber::Rake::Task\\.new[(]:cucumber[)]" orig)
16027 (string-append orig " do |c|\n"
16028 " c.bundler = false # patched for Guix\n"
16029 "end"))
16030 (("Bundler\\.setup" orig)
16031 (string-append "true # " orig " # patched for Guix")))
16032 (substitute* "cucumber.yml"
16033 ;; thanks to avoiding bundler, we can't use this option
16034 ((" --publish-quiet")
16035 ""))))
16036 (add-after 'replace-git-ls-files 'replace-another-git-ls-files
16037 (lambda args
16038 (substitute* "latex-decode.gemspec"
16039 (("`git ls-files -- [{]test,spec,features[}]/\\*`")
16040 "`find {test,spec,features} -type f | sort`")))))))
16041 (home-page "https://github.com/inukshuk/latex-decode")
16042 (synopsis "Convert LaTeX to Unicode")
16043 (description
16044 "This package provides a gem to convert LaTeX input to Unicode. Its
16045original use was as an input filter for BibTeX-Ruby, but it can be used
16046independently to decode LaTeX. Many of the patterns used by this Ruby gem are
16047based on François Charette's equivalent Perl module @code{LaTeX::Decode}.")
16048 (license license:gpl3+)))
16049
16050(define-public ruby-link-header
16051 (package
16052 (name "ruby-link-header")
16053 (version "0.0.8")
16054 (source (origin
16055 (method url-fetch)
16056 (uri (rubygems-uri "link_header" version))
16057 (sha256
16058 (base32
16059 "1yamrdq4rywmnpdhbygnkkl9fdy249fg5r851nrkkxr97gj5rihm"))))
16060 (build-system ruby-build-system)
16061 (home-page "https://github.com/asplake/link_header")
16062 (synopsis "Parse and format HTTP @code{Link} headers")
16063 (description
16064 "This gem provides the classes @code{LinkHeader} and
16065@code{LinkHeader::Link}, which represent HTTP @code{Link} headers conforming
16066to RFC 5988. Objects can be constructed from and converted to text or a
16067JSON-friendly @code{Array} representation. They can also be used to generate
16068corresponding HTML @code{link} elements.")
16069 (license license:expat)))
16070
16071(define-public ruby-lint-roller
16072 (package
16073 (name "ruby-lint-roller")
16074 (version "1.1.0")
16075 (source
16076 (origin
16077 (method url-fetch)
16078 (uri (rubygems-uri "lint_roller" version))
16079 (sha256
16080 (base32 "11yc0d84hsnlvx8cpk4cbj6a4dz9pk0r1k29p0n1fz9acddq831c"))))
16081 (build-system ruby-build-system)
16082 (arguments '(#:tests? #f)) ;Circular dependency on ruby-standard.
16083 (native-inputs (list ruby-minitest))
16084 (synopsis "Specification for linter and formatter rulesets")
16085 (description
16086 "This package provides a plugin specification for Ruby linter and
16087formatter rulesets.")
16088 (home-page "https://github.com/standardrb/lint_roller")
16089 (license license:expat)))
16090
16091(define-public ruby-rdf
16092 (package
16093 (name "ruby-rdf")
16094 (version "3.2.8")
16095 (source (origin
16096 (method url-fetch)
16097 (uri (rubygems-uri "rdf" version))
16098 (sha256
16099 (base32
16100 "1cj0k8ryd8hgbkgqb5swvy6fiygxny3y5bln0my5gv6dbfv3gm20"))))
16101 (build-system ruby-build-system)
16102 (propagated-inputs (list ruby-link-header))
16103 (arguments
16104 (list #:tests? #f)) ;; tests have many cyclic dependencies
16105 (home-page "https://ruby-rdf.github.io/")
16106 (synopsis "Linked Data for Ruby")
16107 (description
16108 "This gem contains the core algorithms and classes used for doing basic
16109programming with @acronym{RDF, Resource Description Framework} data,
16110implemented in pure Ruby.")
16111 (license license:unlicense)))
16112
16113(define-public ruby-rdf-vocab
16114 (package
16115 (name "ruby-rdf-vocab")
16116 (version "3.2.1")
16117 (source (origin
16118 (method url-fetch)
16119 (uri (rubygems-uri "rdf-vocab" version))
16120 (sha256
16121 (base32
16122 "1bqmp9rfjvd56ajjz68ij6jla1wjf1fqg7bi4dpnjrsmn4pwaq7l"))))
16123 (build-system ruby-build-system)
16124 (propagated-inputs
16125 (list ruby-rdf))
16126 (arguments
16127 (list #:tests? #f)) ;; tests have many cyclic dependencies
16128 (home-page "https://github.com/ruby-rdf/rdf-vocab")
16129 (synopsis "Common RDF vocabularies")
16130 (description
16131 "This gem extends @code{ruby-rdf} with several common @acronym{RDF,
16132Resource Description Framework} vocabularies.")
16133 (license license:unlicense)))
16134
16135(define-public ruby-rdiscount
16136 (package
16137 (name "ruby-rdiscount")
16138 (version "2.2.7")
16139 (source (origin
16140 (method git-fetch) ;for the full test suite
16141 (uri (git-reference
16142 (url "https://github.com/davidfstr/rdiscount")
16143 (commit version)))
16144 (file-name (git-file-name name version))
16145 (sha256
16146 (base32
16147 "1lpfxq3gv0dgmnki9jgfnc8n9k4x9vyq9miqdxv6g4kp90qyfifc"))))
16148 (build-system ruby-build-system)
16149 (native-inputs (list perl))
16150 (synopsis "Discount Markdown Processor for Ruby")
16151 (description "Discount is an implementation of John Gruber's Markdown
16152markup language in C. It implements all of the language described in the
16153markdown syntax document and passes the Markdown 1.0 test suite.")
16154 (home-page "https://dafoster.net/projects/rdiscount/")
16155 (license license:bsd-3)))
16156
16157(define-public ruby-bibtex-ruby
16158 (package
16159 (name "ruby-bibtex-ruby")
16160 (version "6.0.0")
16161 (source (origin
16162 (method url-fetch)
16163 (uri (rubygems-uri "bibtex-ruby" version))
16164 (sha256
16165 (base32
16166 "0vynqa8q9hwghw6sdljr304b5gh11nqzy5nwqqwxmgy7pqyf7qw5"))))
16167 (build-system ruby-build-system)
16168 (propagated-inputs
16169 (list ruby-latex-decode
16170 ruby-rdf
16171 ruby-rdf-vocab))
16172 (native-inputs
16173 (list ruby-cucumber
16174 ruby-minitest
16175 ruby-yard))
16176 (arguments
16177 (list
16178 #:phases
16179 #~(modify-phases %standard-phases
16180 (add-after 'extract-gemspec 'avoid-bundler
16181 (lambda args
16182 (substitute* "Rakefile"
16183 (("require 'bundler" orig)
16184 (string-append "# " orig " # patched for Guix"))
16185 (("Bundler\\.setup" orig)
16186 (string-append "true # " orig " # patched for Guix"))))))))
16187 (home-page "https://github.com/inukshuk/bibtex-ruby")
16188 (synopsis "Rubyist's Swiss Army knife for all things BibTeX")
16189 (description
16190 "BibTeX-Ruby is the Rubyist's Swiss Army knife for all things BibTeX.
16191It includes a parser for all common BibTeX objects and a sophisticated name
16192parser that tokenizes correctly formatted names. BibTeX-Ruby recognizes
16193BibTeX string replacements, joins values containing multiple strings or
16194variables, supports cross-references, and decodes common LaTeX formatting
16195instructions to unicode. If you are in a hurry, it also allows for easy
16196export/conversion to formats such as YAML, JSON, CSL, and XML (BibTeXML).")
16197 (license license:gpl3+)))
16198
16199(define-public ruby-unicode-scripts
16200 (package
16201 (name "ruby-unicode-scripts")
16202 (version "1.8.0")
16203 (source (origin
16204 (method url-fetch)
16205 (uri (rubygems-uri "unicode-scripts" version))
16206 (sha256
16207 (base32
16208 "0rl6mn908yryhrg8j3mmna54gnrid2nph2kym00lbz6jwdih2a1b"))))
16209 (build-system ruby-build-system)
16210 (native-inputs (list ruby-minitest))
16211 (arguments (list #:test-target "spec"))
16212 (home-page "https://github.com/janlelis/unicode-scripts")
16213 (synopsis "Unicode script classification library")
16214 (description "This gem provides a simple interface for classifying Ruby
16215strings using the Unicode @code{Script} and @code{Script_Extensions}
16216properties.")
16217 (license license:expat)))
16218
16219(define-public ruby-citeproc
16220 (package
16221 (name "ruby-citeproc")
16222 (version "1.0.10")
16223 (source (origin
16224 (method url-fetch)
16225 (uri (rubygems-uri "citeproc" version))
16226 (sha256
16227 (base32
16228 "13vl5sjmksk5a8kjcqnjxh7kn9gn1n4f9p1rvqfgsfhs54p0m6l2"))))
16229 (build-system ruby-build-system)
16230 (propagated-inputs
16231 (list ruby-namae))
16232 (arguments
16233 (list #:tests? #f)) ;; tests have a cyclic dependency
16234 (home-page "https://github.com/inukshuk/citeproc")
16235 (synopsis "Interface for Ruby citation processors")
16236 (description
16237 "CiteProc is a citation processor interface and citation data API based
16238on the @acronym{CSL, Citation Style Language} specifications. To actually
16239process citations, a dedicated processor engine is required: a pure Ruby
16240engine is available in the @code{citeproc-ruby} gem.")
16241 (license (list license:agpl3+ license:bsd-2))))
16242
16243(define-public ruby-ed25519
16244 (package
16245 (name "ruby-ed25519")
16246 (version "1.3.0")
16247 (source (origin
16248 (method git-fetch)
16249 (uri (git-reference
16250 (url "https://github.com/RubyCrypto/ed25519")
16251 (commit (string-append "v" version))))
16252 (file-name (git-file-name name version))
16253 (sha256
16254 (base32
16255 "1jm5w2dyhyrndcx0d02v0gjbzl1abhbx2wkp3gxzwcndghmkz98r"))))
16256 (build-system ruby-build-system)
16257 (arguments
16258 (list
16259 #:test-target "spec"
16260 #:phases
16261 #~(modify-phases %standard-phases
16262 (add-before 'build 'compile
16263 (lambda _
16264 (invoke "rake" "compile")))
16265 (add-after 'unpack 'remove-unnecessary-dependencies
16266 (lambda _
16267 ;; Coveralls relates to a network service, and RuboCop to code
16268 ;; linting and both are unnecessary to run the tests
16269 (substitute* "Gemfile"
16270 ((".*coveralls.*")
16271 "\n")
16272 ((".*rubocop.*")
16273 "\n"))
16274 (substitute* "spec/spec_helper.rb"
16275 (("require \"coveralls\"")
16276 "")
16277 (("Coveralls.wear!")
16278 ""))
16279 (substitute* "Rakefile"
16280 (("require \"rubocop/rake_task\"")
16281 "")
16282 (("RuboCop::RakeTask.new")
16283 "")))))))
16284 (native-inputs (list ruby-rake-compiler ruby-rspec))
16285 (synopsis
16286 "Ruby binding to the Ed25519 elliptic curve public-key signature system")
16287 (description
16288 "This package provides a Ruby binding to the Ed25519 elliptic curve
16289public-key signature system described in
16290@url{https://www.ietf.org/rfc/rfc8032.txt, RFC 8032}.")
16291 (home-page "https://github.com/RubyCrypto/ed25519")
16292 (license license:expat)))
16293
16294(define-public ruby-edtf
16295 (package
16296 (name "ruby-edtf")
16297 (version "3.1.0")
16298 (source (origin
16299 (method git-fetch)
16300 (uri (git-reference
16301 (url "https://github.com/inukshuk/edtf-ruby")
16302 (commit (string-append "v" version))))
16303 (sha256
16304 (base32
16305 "18j8xq8zmrn41cs2gpd1i87agi9905asvnjqndky2cqb5zg3q14g"))
16306 (snippet
16307 ;; remove generated file
16308 #~(delete-file "lib/edtf/parser.rb"))
16309 (file-name (git-file-name name version))))
16310 (build-system ruby-build-system)
16311 (propagated-inputs
16312 (list ruby-activesupport))
16313 (native-inputs
16314 (list ruby-cucumber
16315 ruby-rspec))
16316 (arguments
16317 (list
16318 #:phases
16319 #~(modify-phases %standard-phases
16320 (add-after 'extract-gemspec 'avoid-bundler
16321 (lambda args
16322 (substitute* "Rakefile"
16323 (("require 'bundler" orig)
16324 (string-append "# " orig " # patched for Guix"))
16325 (("bundle exec racc")
16326 "racc")
16327 (("Cucumber::Rake::Task\\.new[(]:cucumber[)]" orig)
16328 (string-append orig " do |c|\n"
16329 " c.bundler = false # patched for Guix\n"
16330 "end"))
16331 (("Bundler\\.setup" orig)
16332 (string-append "true # " orig " # patched for Guix")))))
16333 (add-after 'avoid-bundler 'patch-cucumber-options
16334 (lambda args
16335 (substitute* "cucumber.yml"
16336 ;; this option is not supported, at least in our configuration
16337 ((" --publish-quiet")
16338 ""))))
16339 (add-before 'build 'compile
16340 (lambda args
16341 (invoke "rake" "racc")))
16342 (replace 'check
16343 (lambda* (#:key tests? #:allow-other-keys)
16344 (when tests?
16345 (invoke "rake")))))))
16346 (home-page "https://github.com/inukshuk/edtf-ruby")
16347 (synopsis "Ruby implementation of Extended Date/Time Format")
16348 (description
16349 "EDTF-Ruby provides a parser and an API for the @acronym{EDTF, Extended
16350Date/Time Format} standard, implemented as an extension to Ruby's @code{Date}
16351class.")
16352 (license license:bsd-2)))
16353
16354(define-public ruby-gli
16355 (package
16356 (name "ruby-gli")
16357 (version "2.21.0")
16358 (source (origin
16359 (method git-fetch)
16360 (uri (git-reference
16361 (url "https://github.com/davetron5000/gli")
16362 (commit (string-append "v" version))))
16363 (sha256
16364 (base32
16365 "09b1r9hlx4dy2yq036nk7hc2nbswhia6q3na9v11z94yibc8mgja"))
16366 (file-name (git-file-name name version))))
16367 (build-system ruby-build-system)
16368 (native-inputs
16369 (list ruby-minitest
16370 ruby-rainbow
16371 ruby-rdoc
16372 ruby-sdoc))
16373 (arguments
16374 (list
16375 #:phases
16376 #~(modify-phases %standard-phases
16377 (add-after 'extract-gemspec 'patch-gemspec-version
16378 (lambda args
16379 (substitute* "gli.gemspec"
16380 ;; this trick fails in our build environment
16381 (("require File\\.join[(]\\[" orig)
16382 (string-append "# patched for Guix # " orig))
16383 (("s\\.version = GLI::VERSION")
16384 #$(string-append "s.version = '"
16385 (package-version this-package)
16386 "' # patched for Guix")))))
16387 (add-after 'replace-git-ls-files 'replace-another-git-ls-files
16388 (lambda args
16389 (substitute* "gli.gemspec"
16390 (("`git ls-files -- [{]test,spec,features[}]/\\*`")
16391 "`find {test,spec,features} -type f | sort`"))))
16392 (add-after 'replace-another-git-ls-files 'fix-rubyopt
16393 (lambda args
16394 (substitute* "Rakefile"
16395 (("ENV\\[\"RUBYOPT\"]")
16396 "(ENV['RUBYOPT'] || '')")))))))
16397 (home-page "https://davetron5000.github.io/gli/")
16398 (synopsis "Git-Like Interface command-line parser")
16399 (description
16400 "GLI allows you to create command-line applications in Ruby with Git-Like
16401Interfaces: that is, they take subcommands in the style of @command{git} and
16402@command{gem}. GLI uses a simple domain-specific language, but retains all
16403the power of the built-in @code{OptionParser}.")
16404 (license license:asl2.0)))
16405
16406(define-public ruby-anystyle-data
16407 (package
16408 (name "ruby-anystyle-data")
16409 (version "1.3.0")
16410 (source (origin
16411 (method git-fetch)
16412 (uri (git-reference
16413 (url "https://github.com/inukshuk/anystyle-data")
16414 (commit (string-append "v" version))))
16415 (sha256
16416 (base32
16417 "1jh880310m3gjdrk4m8rwwnsf0824zkf26clpr8p64sac2fyy907"))
16418 (snippet
16419 ;; remove pre-built file
16420 #~(delete-file "lib/anystyle/data/dict.txt.gz"))
16421 (patches
16422 (search-patches "ruby-anystyle-data-immutable-install.patch"))
16423 (file-name (git-file-name name version))))
16424 (build-system ruby-build-system)
16425 (arguments
16426 (list
16427 #:tests? #f ;; there are none
16428 #:modules
16429 `((guix build ruby-build-system)
16430 (guix build utils)
16431 (srfi srfi-26))
16432 #:phases
16433 #~(modify-phases %standard-phases
16434 (add-after 'replace-git-ls-files 'replace-another-git-ls-files
16435 (lambda args
16436 (substitute* "anystyle-data.gemspec"
16437 (("`git ls-files lib README\\.md LICENSE`\\.split[(][^)]*[)]")
16438 (string-append
16439 "["
16440 (string-join
16441 (map (cut string-append "\"" <> "\"")
16442 `("README.md"
16443 "LICENSE"
16444 "lib/anystyle/data.rb"
16445 "lib/anystyle/data/dict.txt.gz"
16446 "lib/anystyle/data/setup.rb"
16447 "lib/anystyle/data/version.rb"))
16448 ", ")
16449 "]")))))
16450 (add-before 'build 'compile-dict
16451 (lambda args
16452 (invoke "rake" "compile"))))))
16453 (home-page "https://anystyle.io")
16454 (synopsis "AnyStyle parser dictionary data")
16455 (description
16456 "This gem provides parser dictionary data for AnyStyle.")
16457 (license license:bsd-2)))
16458
16459(define-public ruby-anystyle
16460 (package
16461 (name "ruby-anystyle")
16462 (version "1.4.2")
16463 (source (origin
16464 (method git-fetch)
16465 (uri (git-reference
16466 (url "https://github.com/inukshuk/anystyle")
16467 (commit (string-append "v" version))))
16468 (sha256
16469 (base32
16470 "0xhy7wj8v7iahikck6vxbdpncaz5w2gb11b32kmvg5ckgi2kz23p"))
16471 (snippet
16472 ;; There is an optional dependency on
16473 ;; <https://github.com/feedbackmine/language_detector>, which
16474 ;; seems like it was intended to be free software, but
16475 ;; doesn't have a clear license statement. Maybe someone can
16476 ;; do more sleuthing, or else find a replacement? See also
16477 ;; <https://github.com/inukshuk/anystyle/issues/186>. For
16478 ;; now, patch it out, but leave a pointer to follow up.
16479 #~(begin
16480 (use-modules (guix build utils))
16481 (substitute* "Gemfile"
16482 (("gem 'language_detector', github: '[^']*'" orig)
16483 (string-append "# " orig " # unclear license")))
16484 (substitute* "spec/anystyle/parser_spec.rb"
16485 (("language: 'en'," orig)
16486 (string-append "# " orig " # no lanugage_detector")))))
16487 (patches
16488 (search-patches
16489 "ruby-anystyle-fix-dictionary-populate.patch"))
16490 (file-name (git-file-name name version))))
16491 (build-system ruby-build-system)
16492 (propagated-inputs
16493 (list ruby-anystyle-data
16494 ruby-bibtex-ruby
16495 ruby-namae
16496 ruby-wapiti))
16497 (native-inputs
16498 (list ruby-byebug
16499 ruby-citeproc
16500 ruby-edtf
16501 ruby-gdbm
16502 ruby-rspec
16503 ruby-unicode-scripts))
16504 (arguments
16505 (list
16506 #:test-target "spec"
16507 #:phases
16508 #~(modify-phases %standard-phases
16509 (add-after 'extract-gemspec 'avoid-bundler
16510 (lambda args
16511 (substitute* "Rakefile"
16512 (("require 'bundler" orig)
16513 (string-append "# " orig " # patched for Guix"))
16514 (("Bundler\\.setup" orig)
16515 (string-append "true # " orig " # patched for Guix")))))
16516 (add-after 'replace-git-ls-files 'replace-another-git-ls-files
16517 (lambda args
16518 (substitute* "anystyle.gemspec"
16519 (("`git ls-files spec`")
16520 "`find spec -type f | sort`"))))
16521 (add-after 'wrap 'populate-dictionaries
16522 (lambda args
16523 ;; We must initialize these files here, or they will never be
16524 ;; usable with the default settings. A more flexible approach
16525 ;; might use something like `Gem.find_files()` or
16526 ;; XDG_DATA_DIRS.
16527 (with-output-to-file "initialize-dictionaries.rb"
16528 (lambda ()
16529 (display "\
16530require 'anystyle/dictionary' # must come before 'anystyle/data'
16531require 'anystyle/data'
16532[:marshal, :gdbm].each do |adapter|
16533 AnyStyle::Dictionary.create({adapter: adapter}).open().close()
16534end
16535")))
16536 (let* ((old-gems (getenv "GEM_PATH"))
16537 (new-gems (string-append #$output
16538 "/lib/ruby/vendor_ruby:"
16539 old-gems)))
16540 (dynamic-wind
16541 (lambda ()
16542 (setenv "GEM_PATH" new-gems))
16543 (lambda ()
16544 (invoke "ruby" "initialize-dictionaries.rb"))
16545 (lambda ()
16546 (setenv "GEM_PATH" old-gems)))))))))
16547 (home-page "https://anystyle.io")
16548 (synopsis "Fast and smart citation reference parsing (Ruby library)")
16549 (description
16550 "AnyStyle is a very fast and smart parser for academic reference lists
16551and bibliographies. AnyStyle uses powerful machine learning heuristics based
16552on Conditional Random Fields and aims to make it easy to train the model with
16553data that is relevant to your parsing needs.
16554
16555This package provides the Ruby module @code{AnyStyle}. AnyStyle can also be
16556used via the @command{anystyle} command-line utility or a web application,
16557though the later has not yet been packaged for Guix.")
16558 (license license:bsd-2)))
16559
16560(define-public anystyle
16561 (package
16562 (name "anystyle")
16563 (version "1.4.5")
16564 (source (origin
16565 (method git-fetch)
16566 (uri (git-reference
16567 (url "https://github.com/inukshuk/anystyle-cli")
16568 (commit (string-append "v" version))))
16569 (sha256
16570 (base32
16571 "10jx830mx9vh7rsz87ndvz8w5b5azd9s231vwyb0dqxs921v6qwy"))
16572 (file-name (git-file-name name version))))
16573 (build-system ruby-build-system)
16574 (propagated-inputs
16575 (list ruby-anystyle
16576 ruby-bibtex-ruby
16577 ruby-gli))
16578 (native-inputs
16579 (list ruby-gdbm
16580 txt2man))
16581 (arguments
16582 (list
16583 #:modules
16584 `((guix build ruby-build-system)
16585 (ice-9 popen)
16586 (srfi srfi-1)
16587 (guix build utils))
16588 #:phases
16589 #~(modify-phases %standard-phases
16590 (add-after 'extract-gemspec 'less-strict-dependencies
16591 (lambda args
16592 (substitute* "anystyle-cli.gemspec"
16593 (("'bibtex-ruby', '[^']*'")
16594 "'bibtex-ruby'"))))
16595 (add-before 'build 'change-default-dictionary-adapter
16596 (lambda args
16597 ;; Since we always have gdbm available, using it will give a
16598 ;; faster startup time, which is particularly worth-while for
16599 ;; a command-line tool.
16600 (substitute* "bin/anystyle"
16601 (("default_value: 'ruby',")
16602 "default_value: 'gdbm', # patched for Guix"))))
16603 (replace 'check
16604 (lambda* (#:key tests? #:allow-other-keys)
16605 ;; There are no tests, but let's use this opportunity to do a
16606 ;; basic test of our own that things run ok. It works especially
16607 ;; well to test this here since we know the 'ruby-anystile'
16608 ;; package is in its final, immutable installed form.
16609 (when tests?
16610 (let ((common
16611 `("require 'anystyle'"
16612 ,(string-append
16613 "pp AnyStyle.parse 'Derrida, J. (1967). L’écriture"
16614 " et la différence (1 éd.). Paris: Éditions du"
16615 " Seuil.'"))))
16616 (for-each
16617 (lambda (lines)
16618 (apply invoke "ruby"
16619 (fold-right (lambda (line lst)
16620 (cons* "-e" line lst))
16621 '()
16622 lines)))
16623 `(,common
16624 ("require 'anystyle/dictionary'"
16625 "AnyStyle::Dictionary.defaults[:adapter] = :gdbm"
16626 ,@common)))))))
16627 (add-after 'wrap 'check-cli
16628 (lambda* (#:key tests? outputs #:allow-other-keys)
16629 (when tests?
16630 (with-output-to-file "check-cli.in"
16631 (lambda ()
16632 (for-each
16633 display
16634 '("Derrida, J. (1967). L’écriture et la différence "
16635 "(1 éd.). Paris: Éditions du Seuil.\n"))))
16636 (invoke (search-input-file outputs "/bin/anystyle")
16637 "parse"
16638 "check-cli.in"))))
16639 (add-after 'wrap 'generate-man-page
16640 ;; generating a man page also tests that the command actually runs
16641 (lambda args
16642 (define (run-with-output-file file command . args)
16643 (format (current-output-port)
16644 "running: ~s\nwith output to: ~s\n"
16645 (cons command args)
16646 file)
16647 (unless (zero?
16648 (with-output-to-file file
16649 (lambda ()
16650 (status:exit-val
16651 (close-pipe
16652 (apply open-pipe* OPEN_WRITE command args))))))
16653 (error "command failed")))
16654 (let ((anystyle (string-append #$output "/bin/anystyle")))
16655 (run-with-output-file "intro.txt"
16656 anystyle "--help")
16657 (for-each (lambda (cmd)
16658 (let ((file (string-append cmd ".txt")))
16659 (run-with-output-file file
16660 anystyle cmd "--help")
16661 ;; indent headings to create subsections
16662 (substitute* file
16663 (("^[A-Z]" orig)
16664 (string-append " " orig)))
16665 ;; generate a section heading
16666 (call-with-output-file
16667 (string-append "section-" file)
16668 (lambda (out)
16669 (format out "\n\n~a COMMAND\n\n"
16670 (string-upcase cmd))))))
16671 '("check" "find" "parse" "train"))
16672 (substitute* `("intro.txt"
16673 "check.txt" "find.txt" "parse.txt" "train.txt")
16674 ;; format "tag list" for txt2man"
16675 ((" - ")
16676 " ")
16677 ;; restore formatting of the "name" sections
16678 (("(anystyle|check|find|parse|train) ([A-Z])" _ cmd post)
16679 (string-append cmd " - " post)))
16680 (run-with-output-file "anystyle.txt"
16681 "cat"
16682 "intro.txt"
16683 "section-check.txt" "check.txt"
16684 "section-find.txt" "find.txt"
16685 "section-parse.txt" "parse.txt"
16686 "section-train.txt" "train.txt")
16687 (run-with-output-file
16688 "anystyle.1"
16689 "txt2man"
16690 "-v" "General Commands Manual" "-t" "anystyle" "-s" "1"
16691 "-r" #$(string-append "anystyle-cli "
16692 (package-version this-package))
16693 "-B" "check" "-B" "find" "-B" "parse" "-B" "train"
16694 "anystyle.txt")
16695 (install-file "anystyle.1"
16696 (string-append #$output "/share/man/man1"))))))))
16697 (home-page "https://anystyle.io")
16698 (synopsis "Fast and smart citation reference parsing")
16699 (description
16700 "AnyStyle is a very fast and smart parser for academic reference lists
16701and bibliographies. AnyStyle uses powerful machine learning heuristics based
16702on Conditional Random Fields and aims to make it easy to train the model with
16703data that is relevant to your parsing needs.
16704
16705This package provides the @command{anystyle} command-line utility. AnyStyle
16706can also be used as a Ruby library or as a web application, though the later
16707has not yet been packaged for Guix.")
16708 (license license:bsd-2)
16709 (properties `((upstream-name . "anystyle-cli")))))
16710
16711(define-public ruby-google-protobuf
16712 (package
16713 (name "ruby-google-protobuf")
16714 (version "3.25.3")
16715 (source (origin
16716 (method url-fetch)
16717 (uri (rubygems-uri "google-protobuf" version))
16718 (sha256
16719 (base32
16720 "1mnxzcq8kmyfb9bkzqnp019d1hx1vprip3yzdkkha6b3qz5rgg9r"))))
16721 (build-system ruby-build-system)
16722 (arguments
16723 `(#:tests? #f)) ;; has no tests
16724 (native-inputs (list ruby-rake))
16725 (synopsis "Protocol Buffers are Google's data interchange format")
16726 (description "This library contains the Ruby extension that implements
16727Protocol Buffers functionality in Ruby.
16728
16729The Ruby extension makes use of generated Ruby code that defines message and
16730enum types in a Ruby DSL. You may write definitions in this DSL directly, but
16731we recommend using protoc's Ruby generation support with @code{.proto} files.
16732The build process in this directory only installs the extension; you need to
16733install @code{protoc} (in package ruby-grpc-tools) as well to have Ruby code
16734generation functionality.")
16735 (home-page "https://protobuf.dev")
16736 (license license:bsd-3)))
16737
16738(define-public ruby-googleapis-common-protos-types
16739 (package
16740 (name "ruby-googleapis-common-protos-types")
16741 (version "1.13.0")
16742 (source (origin
16743 (method url-fetch)
16744 (uri (rubygems-uri "googleapis-common-protos-types" version))
16745 (sha256
16746 (base32
16747 "1zrxnv9s2q39f2nh32x7nbfi8lpwzmmn3ji4adglg8dlfr1xrz16"))))
16748 (build-system ruby-build-system)
16749 (arguments
16750 `(#:tests? #f)) ;; has no tests
16751 (propagated-inputs (list ruby-google-protobuf))
16752 (synopsis "Common protocol buffer types used by Google APIs")
16753 (description "Common protocol buffer types used by Google APIs")
16754 (home-page "https://github.com/googleapis/common-protos-ruby")
16755 (license license:asl2.0)))
16756
16757(define-public ruby-grpc
16758 (package
16759 (name "ruby-grpc")
16760 (version "1.62.0")
16761 (source (origin
16762 (method url-fetch)
16763 (uri (rubygems-uri "grpc" version))
16764 (sha256
16765 (base32
16766 "03z8yq0z228g6xxxq6s2mmslpv6psrdmi30dpmhysr4px16d897n"))))
16767 (build-system ruby-build-system)
16768 (arguments
16769 `(#:tests? #f)) ;; has no tests
16770 ;; TODO remove third-party sources (zlib, upb, utf8-range, re2, c-ares,
16771 ;; boringssl-with-bazel, address_sorting, abseil-cpp), see Makefile
16772 (propagated-inputs (list ruby-google-protobuf
16773 ruby-googleapis-common-protos-types))
16774 (synopsis "GRPC system in Ruby")
16775 (description "GRPC is a high performance, open-source universal RPC
16776framework. This package provides a ruby interface for it.")
16777 (home-page "https://github.com/grpc/grpc/tree/master/src/ruby")
16778 (license license:asl2.0)))
32 16779
33;;; 16780;;;
34;;; Avoid adding new packages to the end of this file. To reduce the chances 16781;;; Avoid adding new packages to the end of this file. To reduce the chances
35;;; of a merge conflict, place them above in alphabetic order. 16782;;; of a merge conflict, place them above by existing packages with similar
16783;;; functionality or similar names.
36;;; 16784;;;
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 105ac485fc5..d7341d8f97e 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -1,41 +1,20 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014, 2015 Pjotr Prins <pjotr.guix@thebird.nl> 2;;; Copyright © 2014, 2015 Pjotr Prins <pjotr.guix@thebird.nl>
3;;; Copyright © 2014-2017, 2021-2022, 2024 Ludovic Courtès <ludo@gnu.org> 3;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
4;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org> 4;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
5;;; Copyright © 2014, 2015 David Thompson <davet@gnu.org> 5;;; Copyright © 2015-2018 Ben Woodcroft <donttrustben@gmail.com>
6;;; Copyright © 2015 David Thompson <davet@gnu.org>
6;;; Copyright © 2015, 2019 Ricardo Wurmus <rekado@elephly.net> 7;;; Copyright © 2015, 2019 Ricardo Wurmus <rekado@elephly.net>
7;;; Copyright © 2015, 2016, 2017 Ben Woodcroft <donttrustben@gmail.com> 8;;; Copyright © 2018 Danny Milosavljevic <dannym@scratchpost.org>
8;;; Copyright © 2017 Nikita <nikita@n0.is> 9;;; Copyright © 2019, 2020 Christopher Baines <mail@cbaines.net>
9;;; Copyright © 2017, 2019-2022 Marius Bakke <marius@gnu.org>
10;;; Copyright © 2017-2025 Efraim Flashner <efraim@flashner.co.il>
11;;; Copyright © 2017, 2018, 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
12;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
13;;; Copyright © 2017, 2018, 2019 Christopher Baines <mail@cbaines.net>
14;;; Copyright © 2018 Vasile Dumitrascu <va511e@yahoo.com>
15;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
16;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
17;;; Copyright © 2019 Mikhail Kirillov <w96k.ru@gmail.com>
18;;; Copyright © 2019 Jelle Licht <jlicht@fsfe.org> 10;;; Copyright © 2019 Jelle Licht <jlicht@fsfe.org>
19;;; Copyright © 2019 Brian Leung <bkleung89@gmail.com>
20;;; Copyright © 2019 Collin J. Doering <collin@rekahsoft.ca>
21;;; Copyright © 2019 Diego N. Barbato <dnbarbato@posteo.de>
22;;; Copyright © 2019 Brett Gilio <brettg@posteo.de>
23;;; Copyright © 2020, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com> 11;;; Copyright © 2020, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
24;;; Copyright © 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr> 12;;; Copyright © 2020 Ryan Prior <rprior@protonmail.com>
25;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de> 13;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
26;;; Copyright © 2020 Holgr Peters <holger.peters@posteo.de> 14;;; Copyright © 2021 Marius Bakke <marius@gnu.org>
27;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org> 15;;; Copyright © 2023 Christopher Baines <mail@cbaines.net>
28;;; Copyright © 2021 EuAndreh <eu@euandre.org> 16;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
29;;; Copyright © 2020 Tomás Ortín Fernández <tomasortin@mailbox.org> 17;;; Copyright © 2023 Zheng Junjie <873216071@qq.com>
30;;; Copyright © 2021 Giovanni Biscuolo <g@xelera.eu>
31;;; Copyright © 2022 Philip McGrath <philip@philipmcgrath.com>
32;;; Copyright © 2022-2025 Remco van 't Veer <remco@remworks.net>
33;;; Copyright © 2022 Taiju HIGASHI <higashi@taiju.info>
34;;; Copyright © 2023 Yovan Naumovski <yovan@gorski.stream>
35;;; Copyright © 2023, 2024 gemmaro <gemmaro.dev@gmail.com>
36;;; Copyright © 2023, 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
37;;; Copyright © 2023, 2024 Zheng Junjie <873216071@qq.com>
38;;; Copyright © 2023, 2024 Hartmut Goebel <h.goebel@crazy-compilers.com>
39;;; Copyright © 2025 Nicolas Graves <ngraves@ngraves.fr> 18;;; Copyright © 2025 Nicolas Graves <ngraves@ngraves.fr>
40;;; 19;;;
41;;; This file is part of GNU Guix. 20;;; This file is part of GNU Guix.
@@ -96,7 +75,6 @@
96 #:use-module (gnu packages web-browsers) 75 #:use-module (gnu packages web-browsers)
97 #:use-module (gnu packages serialization) 76 #:use-module (gnu packages serialization)
98 #:use-module (guix packages) 77 #:use-module (guix packages)
99 #:use-module (guix deprecation)
100 #:use-module (guix download) 78 #:use-module (guix download)
101 #:use-module (guix git-download) 79 #:use-module (guix git-download)
102 #:use-module (guix gexp) 80 #:use-module (guix gexp)
@@ -105,15 +83,7 @@
105 #:use-module (guix build-system gnu) 83 #:use-module (guix build-system gnu)
106 #:use-module (gnu packages xml) 84 #:use-module (gnu packages xml)
107 #:use-module (gnu packages web) 85 #:use-module (gnu packages web)
108 #:use-module (guix build-system ruby) 86 #:use-module (guix build-system ruby))
109 #:use-module ((srfi srfi-1) #:select (alist-delete)))
110
111(define %prawn-project-licenses
112 ;; This set of licenses applies to most (all?) components of the Prawn
113 ;; project (it is triple licensed).
114 (list license:ruby
115 license:gpl2+
116 license:gpl3+))
117 87
118(define-public ruby-3.4 88(define-public ruby-3.4
119 (package 89 (package
@@ -349,17719 +319,6 @@ language. Its syntax is Ruby 3.x compatible except for pattern
349matching. mruby can be linked and embedded within your application.") 319matching. mruby can be linked and embedded within your application.")
350 (license license:expat))) 320 (license license:expat)))
351 321
352(define-public ruby-commander
353 (package
354 (name "ruby-commander")
355 (version "4.6.0")
356 (source
357 (origin
358 (method url-fetch)
359 (uri (rubygems-uri "commander" version))
360 (sha256
361 (base32
362 "1n8k547hqq9hvbyqbx2qi08g0bky20bbjca1df8cqq5frhzxq7bx"))))
363 (build-system ruby-build-system)
364 (arguments
365 (list
366 #:test-target "spec"
367 #:phases
368 #~(modify-phases %standard-phases
369 ;; Don't run or require rubocop, the code linting tool, as this is a
370 ;; bit unnecessary.
371 (add-after 'unpack 'dont-run-rubocop
372 (lambda _
373 (substitute* "Rakefile"
374 ((".*rubocop.*") "")
375 ((".*RuboCop.*") "")))))))
376 (propagated-inputs
377 (list ruby-highline))
378 (native-inputs
379 (list bundler ruby-rspec-core ruby-rspec-expectations
380 ruby-rspec-mocks ruby-simplecov))
381 (home-page "https://github.com/commander-rb/commander")
382 (synopsis "Library for building Ruby command-line executables")
383 (description
384 "Commander aims to be a complete solution for Ruby command-line
385executables. Commander bridges the gap between other terminal related
386libraries (OptionParser, HighLine), while providing many new features, and an
387elegant API.")
388 (license license:expat)))
389
390(define-public ruby-highline
391 (package
392 (name "ruby-highline")
393 (version "2.0.1")
394 (source
395 (origin
396 (method url-fetch)
397 (uri (rubygems-uri "highline" version))
398 (sha256
399 (base32
400 "0gr6pckj2jayxw1gdgh9193j5jag5zrrqqlrnl4jvcwpyd3sn2zc"))))
401 (build-system ruby-build-system)
402 (arguments
403 `(#:tests? #f)) ;; TODO: NameError: uninitialized constant SPEC
404 (native-inputs
405 (list bundler ruby-code-statistics))
406 (synopsis
407 "HighLine helps you build command-line interfaces")
408 (description
409 "HighLine provides a high-level IO library that provides validation,
410type conversion, and more for command-line interfaces. HighLine also includes
411a menu system for providing multiple options to the user.")
412 (home-page "https://github.com/JEG2/highline")
413 (license (list license:gpl2 license:ruby))))
414
415(define-public ruby-hoe
416 (package
417 (name "ruby-hoe")
418 (version "4.2.2")
419 (source (origin
420 (method url-fetch)
421 (uri (rubygems-uri "hoe" version))
422 (sha256
423 (base32
424 "1rhj1zs02mpdw6f4fh3mpfmj0p5pfar7rfxm758pk7l931mm8pyn"))))
425 (build-system ruby-build-system)
426 (arguments
427 (list
428 ;; Circular dependency with minitest
429 #:tests? #f))
430 (synopsis "Ruby project management helper")
431 (description
432 "Hoe is a rake/rubygems helper for project Rakefiles. It helps manage,
433maintain, and release projects and includes a dynamic plug-in system allowing
434for easy extensibility. Hoe ships with plug-ins for all the usual project
435tasks including rdoc generation, testing, packaging, deployment, and
436announcement.")
437 (home-page "https://www.zenspider.com/projects/hoe.html")
438 (license license:expat)))
439
440(define-public ruby-hoe-3
441 (package
442 (inherit ruby-hoe)
443 (version "3.26.0")
444 (source (origin
445 (method url-fetch)
446 (uri (rubygems-uri "hoe" version))
447 (sha256
448 (base32
449 "02vmphnfzna1dbb1l5nczcvlvvsg4flr26bdhmvdyf447bpswa63"))))))
450
451(define-public ruby-rake-compiler
452 (package
453 (name "ruby-rake-compiler")
454 (version "1.2.9")
455 (source (origin
456 (method url-fetch)
457 (uri (rubygems-uri "rake-compiler" version))
458 (sha256
459 (base32
460 "01rnl94p1sr84xkbnh66db42qsndykbfx2z2fggxyxx9vnji6cjs"))))
461 (build-system ruby-build-system)
462 (arguments
463 '(#:tests? #f)) ; needs cucumber
464 (synopsis "Building and packaging helper for Ruby native extensions")
465 (description "Rake-compiler provides a framework for building and
466packaging native C and Java extensions in Ruby.")
467 (home-page "https://github.com/rake-compiler/rake-compiler")
468 (license license:expat)))
469
470(define-public ruby-rake-compiler-dock
471 (package
472 (name "ruby-rake-compiler-dock")
473 (version "1.3.0")
474 (source (origin
475 (method url-fetch)
476 (uri (rubygems-uri "rake-compiler-dock" version))
477 (sha256
478 (base32
479 "0yr5f72irvhmnk12q7bbr4qw0xwy7diqkbcvb4lygjbg7rvk3k8k"))))
480 (build-system ruby-build-system)
481 (arguments (list #:tests? #f)) ;test suite requires docker
482 (synopsis "Cross compiler environment for building Ruby gems")
483 (description "The code{rake-compiler-dock} gem provides a cross compiler
484environment for building gems on a variety of platforms (GNU/Linux, JRuby,
485Windows and Mac).")
486 (home-page "https://github.com/rake-compiler/rake-compiler-dock")
487 (license license:expat)))
488
489(define-public ruby-rsync
490 (package
491 (name "ruby-rsync")
492 (version "1.0.9")
493 (source
494 (origin
495 (method url-fetch)
496 (uri (rubygems-uri "rsync" version))
497 (sha256
498 (base32
499 "0p8b27q1gvxilqfq2528xpwglzcm2myikkjxpqk7mwbwg9r6knxv"))))
500 (build-system ruby-build-system)
501 (arguments
502 '(#:test-target "spec"
503 #:phases
504 (modify-phases %standard-phases
505 (add-after 'unpack 'remove-coveralls-requirement
506 (lambda _
507 (substitute* "spec/spec_helper.rb"
508 (("require 'coveralls'") "")
509 (("Coveralls.wear!") "")))))))
510 (native-inputs
511 (list bundler rsync ruby-rspec-core ruby-rspec-expectations
512 ruby-rspec-mocks))
513 (home-page "https://github.com/jbussdieker/ruby-rsync")
514 (synopsis "Ruby wrapper around rsync")
515 (description
516 "Ruby Rsync is a Ruby library that can synchronize files between remote
517hosts by wrapping the @file{rsync} binary.")
518 (license license:expat)))
519
520(define-public ruby-i18n
521 (package
522 (name "ruby-i18n")
523 (version "1.13.0")
524 (source (origin
525 (method url-fetch)
526 (uri (rubygems-uri "i18n" version))
527 (sha256
528 (base32
529 "1yk33slipi3i1kydzrrchbi7cgisaxym6pgwlzx7ir8vjk6wl90x"))))
530 (build-system ruby-build-system)
531 (arguments
532 '(#:tests? #f)) ; no tests
533 (propagated-inputs `(("concurrent-ruby" ,ruby-concurrent)))
534 (synopsis "Internationalization library for Ruby")
535 (description "Ruby i18n is an internationalization and localization
536solution for Ruby programs. It features translation and localization,
537interpolation of values to translations, pluralization, customizable
538transliteration to ASCII, flexible defaults, bulk lookup, lambdas as
539translation data, custom key/scope separator, custom exception handlers, and
540an extensible architecture with a swappable backend.")
541 (home-page "https://github.com/ruby-i18n/i18n")
542 (license license:expat)))
543
544(define-public ruby-ice-nine
545 (package
546 (name "ruby-ice-nine")
547 (version "0.11.2")
548 (source
549 (origin
550 (method url-fetch)
551 (uri (rubygems-uri "ice_nine" version))
552 (sha256
553 (base32 "1nv35qg1rps9fsis28hz2cq2fx1i96795f91q4nmkm934xynll2x"))))
554 (build-system ruby-build-system)
555 (arguments
556 (list #:tests? #f)) ;Dependency on convoluted unpackaged ruby-devtools.
557 (synopsis "Deep Freeze Ruby Objects")
558 (description
559 "This package provides a function to deep freeze Ruby objects.")
560 (home-page "https://github.com/dkubb/ice_nine")
561 (license license:expat)))
562
563(define-public ruby-io-console
564 (package
565 (name "ruby-io-console")
566 (version "0.6.0")
567 (source (origin
568 (method git-fetch) ;for tests
569 (uri (git-reference
570 (url "https://github.com/ruby/io-console/")
571 (commit (string-append "v" version))))
572 (file-name (git-file-name name version))
573 (sha256
574 (base32
575 "0gwxrp29b6awkid1sf85sbh529mnq6hb86m8c2443cm6nc4vr8qb"))))
576 (build-system ruby-build-system)
577 (arguments
578 (list #:phases #~(modify-phases %standard-phases
579 (add-after 'unpack 'delete-rakelib-files
580 (lambda _
581 ;; These depend on git and other extraneous
582 ;; dependencies, and are loaded by rake.
583 (delete-file-recursively "rakelib"))))))
584 (native-inputs (list ruby-rake-compiler))
585 (synopsis "Console capabilities library for IO instances")
586 (description "IO.console adds console capabilities to Ruby IO instances.")
587 (home-page "https://github.com/ruby/io-console")
588 (license license:bsd-2)))
589
590(define-public ruby-irb
591 (package
592 (name "ruby-irb")
593 (version "1.6.3")
594 (source (origin
595 (method url-fetch)
596 (uri (rubygems-uri "irb" version))
597 (sha256
598 (base32
599 "1h9s07n5v3z029v18924ws9vdkdc80n6llp9ccx77yg1krv2g0f3"))))
600 (build-system ruby-build-system)
601 ;; XXX: Disable the test suite, as it requires debug, which requires this
602 ;; package (dependency cycle).
603 (arguments (list #:tests? #f))
604 (propagated-inputs (list ruby-reline))
605 (synopsis "Ruby command-line tool for REPL (Read Eval Print Loop)")
606 (description "IRB is an interactive Ruby command-line tool for REPL (Read
607Eval Print Loop).")
608 (home-page "https://github.com/ruby/irb")
609 (license license:bsd-2)))
610
611(define-public ruby-irb-1.1.1
612 (package
613 (inherit ruby-irb)
614 (version "1.1.1")
615 (source (origin
616 (method url-fetch)
617 (uri (rubygems-uri "irb" version))
618 (sha256
619 (base32
620 "0h605w798s2bg9wg681ynvvzgdz1yy69gh387bl0khw9ll7wkn8v"))))))
621
622(define-public ruby-iruby
623 (package
624 (name "ruby-iruby")
625 (version "0.3")
626 (source
627 (origin
628 (method url-fetch)
629 (uri (rubygems-uri "iruby" version))
630 (sha256
631 (base32
632 "1wdf2c0x8y6cya0n3y0p3p7b1sxkb2fdavdn2k58rf4rs37s7rzn"))))
633 (build-system ruby-build-system)
634 (arguments
635 ;; TODO: Tests currently fail.
636 ;;
637 ;; Finished in 1.764405s, 1.1335 runs/s, 5.1009 assertions/s.
638 ;;
639 ;; 1) Failure:
640 ;; IntegrationTest#test_interaction [/tmp/guix-build-ruby-iruby-0.3.drv-0/gem/test/integration_test.rb:25]:
641 ;; In [ expected
642 ;;
643 ;; 2 runs, 9 assertions, 1 failures, 0 errors, 0 skips
644 '(#:tests? #f
645 #:phases
646 (modify-phases %standard-phases
647 (add-after 'unpack 'patch-ipython
648 (lambda* (#:key inputs #:allow-other-keys)
649 (substitute* "lib/iruby/command.rb"
650 (("version = `")
651 (string-append
652 "version = `"
653 (assoc-ref inputs "python-ipython")
654 "/bin/"))
655 (("Kernel\\.exec\\('")
656 (string-append
657 "Kernel.exec('"
658 (assoc-ref inputs "python-ipython")
659 "/bin/"))))))))
660 (inputs
661 (list python-ipython))
662 (propagated-inputs
663 (list ruby-bond
664 ruby-data_uri
665 ruby-mimemagic
666 ruby-multi-json
667 ruby-cztop
668 ;; Optional inputs
669 ruby-pry))
670 (synopsis "Ruby kernel for Jupyter/IPython")
671 (description
672 "This package provides a Ruby kernel for Jupyter/IPython frontends (e.g.
673notebook).")
674 (home-page "https://github.com/SciRuby/iruby")
675 (license license:expat)))
676
677;; RSpec is the dominant testing library for Ruby projects. Even RSpec's
678;; dependencies use RSpec for their test suites! To avoid these circular
679;; dependencies, we disable tests for all of the RSpec-related packages.
680(define-public ruby-rspec-support
681 (package
682 (name "ruby-rspec-support")
683 (version "3.13.2")
684 (source (origin
685 (method url-fetch)
686 (uri (rubygems-uri "rspec-support" version))
687 (sha256
688 (base32
689 "1v6v6xvxcpkrrsrv7v1xgf7sl0d71vcfz1cnrjflpf6r7x3a58yf"))))
690 (build-system ruby-build-system)
691 (arguments
692 '(#:tests? #f)) ; avoid dependency cycles
693 (synopsis "RSpec support library")
694 (description "Support utilities for RSpec gems.")
695 (home-page "https://github.com/rspec/rspec-support")
696 (license license:expat)))
697
698(define-public ruby-rspec-core
699 (package
700 (name "ruby-rspec-core")
701 (version "3.13.2")
702 (source (origin
703 (method url-fetch)
704 (uri (rubygems-uri "rspec-core" version))
705 (sha256
706 (base32
707 "001kazj244cb6fbkmh7ap74csbr78717qaskqzqpir1q8xpdmywl"))))
708 (build-system ruby-build-system)
709 (arguments
710 '(#:tests? #f)) ; avoid dependency cycles
711 (propagated-inputs
712 (list ruby-rspec-support))
713 (synopsis "RSpec core library")
714 (description "Rspec-core provides the RSpec test runner and example
715groups.")
716 (home-page "https://github.com/rspec/rspec-core")
717 (license license:expat)))
718
719(define-public ruby-rspec-core-2
720 (package (inherit ruby-rspec-core)
721 (version "2.14.8")
722 (source (origin
723 (method url-fetch)
724 (uri (rubygems-uri "rspec-core" version))
725 (sha256
726 (base32
727 "0psjy5kdlz3ph39br0m01w65i1ikagnqlg39f8p65jh5q7dz8hwc"))))
728 (arguments
729 (cons*
730 #:phases
731 #~(modify-phases %standard-phases
732 (add-after 'unpack 'patch
733 (lambda _
734 (substitute* "lib/rspec/core/ruby_project.rb"
735 (("File\\.exists\\?") "File.exist?")))))
736 (package-arguments ruby-rspec-core)))
737 (propagated-inputs `())))
738
739(define-public ruby-date
740 (package
741 (name "ruby-date")
742 (version "3.3.3")
743 (source (origin
744 (method git-fetch)
745 (uri (git-reference
746 (url "https://github.com/ruby/date")
747 (commit (string-append "v" version))))
748 (file-name (git-file-name name version))
749 (sha256
750 (base32
751 "1jiqjnaap1jk1r8z37iicnzqha1rhc713qmcir17f4vnz8ac8v75"))))
752 (build-system ruby-build-system)
753 (arguments (list #:test-target "default"))
754 (native-inputs (list ruby-rake-compiler))
755 (synopsis "Ruby @code{Object} subclass with date comparison capability")
756 (description "This package provides a subclass of @code{Object} that
757includes the @code{Comparable} module for handling dates.")
758 (home-page "https://github.com/ruby/date")
759 (license license:bsd-2)))
760
761(define-public ruby-time
762 (package
763 (name "ruby-time")
764 (version "0.3.0")
765 (source (origin
766 (method git-fetch) ; for tests
767 (uri (git-reference
768 (url "https://github.com/ruby/time")
769 (commit (string-append "v" version))))
770 (file-name (git-file-name name version))
771 (sha256
772 (base32
773 "0jd6df2lxd60wcxyaf37j8v3nnfn952d5xhg6aap9zlcdmkk4g2n"))))
774 (build-system ruby-build-system)
775 (propagated-inputs (list ruby-date))
776 (native-inputs (list ruby-test-unit-ruby-core))
777 (synopsis
778 "Extends the Time class with methods for parsing and conversion")
779 (description
780 "When this gem is @code{require}d, it extends the Time class with with
781additional methods for parsing and converting Times.")
782 (home-page "https://github.com/ruby/time")
783 (license license:bsd-2)))
784
785(define-public ruby-diff-lcs
786 (package
787 (name "ruby-diff-lcs")
788 (version "1.3")
789 (source (origin
790 (method url-fetch)
791 (uri (rubygems-uri "diff-lcs" version))
792 (sha256
793 (base32
794 "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza"))))
795 (build-system ruby-build-system)
796 (arguments
797 '(#:tests? #f)) ; avoid dependency cycles
798 (synopsis "Compute the difference between two Enumerable sequences")
799 (description "Diff::LCS computes the difference between two Enumerable
800sequences using the McIlroy-Hunt longest common subsequence (LCS) algorithm.
801It includes utilities to create a simple HTML diff output format and a
802standard diff-like tool.")
803 (home-page "https://github.com/halostatue/diff-lcs")
804 (license license:expat)))
805
806(define-public ruby-rspec-expectations
807 (package
808 (name "ruby-rspec-expectations")
809 (version "3.13.3")
810 (source (origin
811 (method url-fetch)
812 (uri (rubygems-uri "rspec-expectations" version))
813 (sha256
814 (base32
815 "0n3cyrhsa75x5wwvskrrqk56jbjgdi2q1zx0irllf0chkgsmlsqf"))))
816 (build-system ruby-build-system)
817 (arguments
818 '(#:tests? #f)) ; avoid dependency cycles
819 (propagated-inputs
820 (list ruby-diff-lcs ruby-rspec-support))
821 (synopsis "RSpec expectations library")
822 (description "Rspec-expectations provides a simple API to express expected
823outcomes of a code example.")
824 (home-page "https://github.com/rspec/rspec-expectations")
825 (license license:expat)))
826
827(define-public ruby-rspec-expectations-2
828 (package (inherit ruby-rspec-expectations)
829 (version "2.14.5")
830 (source (origin
831 (method url-fetch)
832 (uri (rubygems-uri "rspec-expectations" version))
833 (sha256
834 (base32
835 "1ni8kw8kjv76jvwjzi4jba00k3qzj9f8wd94vm6inz0jz3gwjqf9"))))
836 (propagated-inputs
837 (list ruby-diff-lcs))))
838
839(define-public ruby-sorcerer
840 (package
841 (name "ruby-sorcerer")
842 (version "2.0.1")
843 (source
844 (origin
845 (method url-fetch)
846 (uri (rubygems-uri "sorcerer" version))
847 (sha256
848 (base32
849 "0d32ha9pp9slpmsm027pkdpbr9vc5jn2m8rl6hwwx6a87m8cr58h"))))
850 (build-system ruby-build-system)
851 (synopsis "Ripper-style abstract syntax tree to Ruby source generator")
852 (description "Sorcerer generates Ruby code from a Ripper-like abstract
853syntax tree (i.e. S-Expressions). Sorcerer is targeted mainly at small
854snippets of Ruby code, expressible in a single line. Longer examples may be
855re-sourced, but they will be rendered in a single-line format.")
856 (home-page "https://github.com/rspec-given/sorcerer")
857 (license license:expat)))
858
859(define-public ruby-sorted-set
860 (package
861 (name "ruby-sorted-set")
862 (version "1.0.3")
863 (source (origin
864 (method url-fetch)
865 (uri (rubygems-uri "sorted_set" version))
866 (sha256
867 (base32
868 "0brpwv68d7m9qbf5js4bg8bmg4v7h4ghz312jv9cnnccdvp8nasg"))))
869 (build-system ruby-build-system)
870 (propagated-inputs
871 (list ruby-rbtree ruby-set))
872 (synopsis
873 "Ruby Set variant whose elements are sorted in ascending order")
874 (description
875 "This package implements a variant of Set whose elements are sorted in
876ascending order")
877 (home-page "https://github.com/knu/sorted_set")
878 (license license:bsd-2)))
879
880(define-public ruby-given-core
881 (package
882 (name "ruby-given-core")
883 (version "3.8.2")
884 (source
885 (origin
886 (method url-fetch)
887 (uri (rubygems-uri "given_core" version))
888 (sha256
889 (base32
890 "0w1pyhgb2am7c267s8v06dpd9qhmsk2x4hfr2aq8l8lh49ma227s"))))
891 (build-system ruby-build-system)
892 (arguments '(#:tests? #f)) ;no test suite for the core package
893 (propagated-inputs
894 (list ruby-sorcerer))
895 (synopsis "Core abstractions used by rspec-given and minitest-given")
896 (description "Given_core is the basic functionality behind rspec-given and
897minitest-given, extensions that allow the use of Given/When/Then terminology
898when defining specifications.")
899 (home-page "https://github.com/rspec-given/rspec-given")
900 (license license:expat)))
901
902(define-public ruby-rspec-given
903 (package
904 (name "ruby-rspec-given")
905 (version "3.8.2")
906 (source
907 (origin
908 (method url-fetch)
909 (uri (rubygems-uri "rspec-given" version))
910 (sha256
911 (base32
912 "0xzzxjjzwrsp84p12sd6ab3jbm9kh7sbnqpxgc9mlfq3s3ll0fdj"))))
913 (build-system ruby-build-system)
914 (arguments
915 `(#:test-target "rs"
916 #:phases
917 (modify-phases %standard-phases
918 (add-after 'unpack 'fix-rakefile
919 (lambda _
920 (substitute* '("Rakefile" "rakelib/gemspec.rake")
921 (("require '\\./lib/given/.*") "")
922 (("Given::VERSION") (format #f "~s" ,version))
923 ;; Fix the error: "cannot load such file -- example_helper"
924 (("sh \"rspec")
925 "sh \"rspec -Ilib:examples"))))
926 (add-after 'extract-gemspec 'delete-failing-tests
927 ;; See: https://github.com/jimweirich/rspec-given/issues/57.
928 (lambda _
929 (substitute* ".gemspec"
930 (("\"spec/lib/given/natural_assertion_spec.rb\".freeze, ")
931 "")
932 (("\"examples/integration/failing_messages_spec.rb\".freeze, ")
933 ""))
934 (delete-file "spec/lib/given/natural_assertion_spec.rb")
935 (delete-file "examples/integration/failing_messages_spec.rb"))))))
936 (native-inputs
937 (list ruby-rspec ruby-minitest))
938 (propagated-inputs
939 (list ruby-given-core ruby-rspec))
940 (synopsis "Given/When/Then for RSpec and Minitest")
941 (description "Given is an RSpec extension that allows the use of
942Given/When/Then terminology when defining specifications, in a way similar to
943the Cucumber Gherkin language.")
944 (home-page "https://github.com/rspec-given/rspec-given")
945 (license license:expat)))
946
947(define-public ruby-rspec-its
948 (package
949 (name "ruby-rspec-its")
950 (version "1.3.0")
951 (source
952 (origin
953 (method git-fetch)
954 (uri (git-reference
955 (url "https://github.com/rspec/rspec-its")
956 (commit (string-append "v" version))))
957 (file-name (git-file-name name version))
958 (sha256
959 (base32
960 "02mlsc9d4d1cjj5vahi8v3q8hyn9fyiv8nnlidhgfh186qp20g1p"))))
961 (build-system ruby-build-system)
962 (arguments
963 `(#:test-target "spec"
964 #:phases
965 (modify-phases %standard-phases
966 (add-after 'unpack 'dont-install-gems-from-gemfile
967 (lambda _
968 (substitute* "Gemfile"
969 (("rspec rspec-core rspec-expectations rspec-mocks rspec-support")
970 ""))))
971 (add-before 'build 'loosen-ffi-requirement
972 (lambda _
973 ;; Accept any version of ruby-ffi.
974 (substitute* "Gemfile"
975 ((" gem 'ffi', '~> 1\\.9\\.25'")
976 " gem 'ffi'"))))
977 (add-before 'build 'remove-unnecessary-dependency-versions-from-gemfile
978 (lambda _
979 (substitute* "rspec-its.gemspec"
980 (("rake.*") "rake'\n")
981 (("spec.add_development_dependency 'cucumber'.*")
982 "spec.add_development_dependency 'cucumber'\n")
983 (("bundler.*") "bundler'\n")
984 (("\"aruba.*") "'aruba'\n")))))))
985 (propagated-inputs
986 (list ruby-rspec-core ruby-rspec-expectations))
987 (native-inputs
988 (list bundler ruby-cucumber ruby-ffi ruby-aruba))
989 (synopsis "RSpec extension that provides the @code{its} method")
990 (description
991 "RSpec::Its provides the its method as a short-hand to specify the expected
992value of an attribute. For example, one can use @code{its(:size)\\{should
993eq(1)\\}}.")
994 (home-page "https://github.com/rspec/rspec-its")
995 (license license:expat)))
996
997;;; This variant is used to break a cycle with ruby-protobuf.
998(define-public ruby-rspec-its-minimal
999 (hidden-package
1000 (package
1001 (inherit ruby-rspec-its)
1002 (arguments
1003 (substitute-keyword-arguments (package-arguments ruby-rspec-its)
1004 ((#:tests? _ #f) #f)))
1005 (native-inputs '()))))
1006
1007(define-public ruby-rspec-mocks
1008 (package
1009 (name "ruby-rspec-mocks")
1010 (version "3.13.2")
1011 (source (origin
1012 (method url-fetch)
1013 (uri (rubygems-uri "rspec-mocks" version))
1014 (sha256
1015 (base32
1016 "1vxxkb2sf2b36d8ca2nq84kjf85fz4x7wqcvb8r6a5hfxxfk69r3"))))
1017 (build-system ruby-build-system)
1018 (arguments
1019 '(#:tests? #f)) ; avoid dependency cycles
1020 (propagated-inputs
1021 (list ruby-diff-lcs ruby-rspec-support))
1022 (synopsis "RSpec stubbing and mocking library")
1023 (description "Rspec-mocks provides RSpec's \"test double\" framework, with
1024support for stubbing and mocking.")
1025 (home-page "https://github.com/rspec/rspec-mocks")
1026 (license license:expat)))
1027
1028(define-public ruby-rspec-mocks-2
1029 (package (inherit ruby-rspec-mocks)
1030 (version "2.14.6")
1031 (source (origin
1032 (method url-fetch)
1033 (uri (rubygems-uri "rspec-mocks" version))
1034 (sha256
1035 (base32
1036 "1fwsmijd6w6cmqyh4ky2nq89jrpzh56hzmndx9wgkmdgfhfakv30"))))
1037 (propagated-inputs
1038 (list ruby-diff-lcs))))
1039
1040(define-public ruby-rspec-block-is-expected
1041 (package
1042 (name "ruby-rspec-block-is-expected")
1043 (version "1.0.5")
1044 (source (origin
1045 (method git-fetch) ;for tests
1046 (uri (git-reference
1047 (url "https://github.com/pboling/rspec-block_is_expected")
1048 (commit (string-append "v" version))))
1049 (file-name (git-file-name name version))
1050 (sha256
1051 (base32
1052 "1zi5z12lkw3fiwgr7g61845wj73asr2vzw4zsjv45klnnfspwass"))))
1053 (build-system ruby-build-system)
1054 (arguments
1055 (list #:phases #~(modify-phases %standard-phases
1056 (add-after 'unpack 'relax-requirements
1057 (lambda _
1058 (substitute* "Rakefile"
1059 (("require 'rubocop/rake_task'") "")
1060 (("RuboCop::RakeTask.new") ""))
1061 ;; Contains extraneous requirements not actually
1062 ;; needed for the test suite.
1063 (delete-file "Gemfile")))
1064 (add-before 'build 'drop-signing-key-requirement
1065 (lambda _
1066 (substitute* "rspec-block_is_expected.gemspec"
1067 (("spec.signing_key =.*")
1068 "spec.signing_key = nil")))))))
1069 (native-inputs (list ruby-rspec-pending-for ruby-rspec-expectations))
1070 (propagated-inputs (list ruby-rspec-core))
1071 (synopsis "Simplify testing of blocks in RSpec")
1072 (description "This RSpec plugin allows you to use @code{block_is_expected}
1073similarly to how you would use @code{is_expected} if a block was wrapping the
1074subject.")
1075 (home-page "https://github.com/pboling/rspec-block_is_expected")
1076 (license license:expat)))
1077
1078(define-public ruby-rspec-pending-for
1079 (package
1080 (name "ruby-rspec-pending-for")
1081 (version "0.1.16")
1082 (source (origin
1083 (method git-fetch) ;for tests
1084 (uri (git-reference
1085 (url "https://github.com/pboling/rspec-pending_for")
1086 (commit (string-append "v" version))))
1087 (file-name (git-file-name name version))
1088 (sha256
1089 (base32
1090 "107l560vm0kx25w5iy5rsk9ly8dxzr81b31284j514f4hkd0qv3m"))))
1091 (build-system ruby-build-system)
1092 (native-inputs (list ruby-rspec ruby-simplecov))
1093 (propagated-inputs (list ruby-rspec-core ruby-ruby-engine
1094 ruby-ruby-version))
1095 (synopsis "Skip RSpec tests for specific Ruby engines or versions")
1096 (description "This RSpec plugin makes it easy to mark test cases as
1097pending or skipped for a specific Ruby engine (e.g. MRI or JRuby) or version
1098combinations.")
1099 (home-page "https://github.com/pboling/rspec-pending_for")
1100 (license license:expat)))
1101
1102(define-public ruby-rspec-rerun
1103 (package
1104 (name "ruby-rspec-rerun")
1105 (version "1.1.0")
1106 (source
1107 (origin
1108 (method url-fetch)
1109 (uri (rubygems-uri "rspec-rerun" version))
1110 (sha256
1111 (base32
1112 "1gy7znkcaqhpccfnk2nvaqbsvgxy3q57cmjwkl9fi1zabaq5lbkj"))))
1113 (build-system ruby-build-system)
1114 (arguments
1115 '(;; No included tests
1116 #:tests? #f))
1117 (propagated-inputs (list ruby-rspec))
1118 (synopsis "Track failed RSpec tests to re-run them")
1119 (description
1120 "This package provides an automated way to track, and then re-run failed
1121RSpec tests.")
1122 (home-page "https://github.com/dblock/rspec-rerun")
1123 (license license:expat)))
1124
1125(define-public ruby-rspec-stubbed-env
1126 ;; There is no release nor tag (see:
1127 ;; https://github.com/pboling/rspec-stubbed_env/issues/7).
1128 (let ((revision "0")
1129 (commit "9d767dec77a6d130f6ad83c48a00a5c81b14b9fa"))
1130 (package
1131 (name "ruby-rspec-stubbed-env")
1132 (version (git-version "1.0.0" revision commit))
1133 (source (origin
1134 (method git-fetch)
1135 (uri (git-reference
1136 (url "https://github.com/pboling/rspec-stubbed_env")
1137 (commit commit)))
1138 (file-name (git-file-name name version))
1139 (sha256
1140 (base32
1141 "1dy4m04h613dp0s59rknjd6h4lqs1h17mffc5kd8kh046mk8nr1p"))))
1142 (build-system ruby-build-system)
1143 (arguments
1144 (list #:test-target "spec"
1145 #:phases #~(modify-phases %standard-phases
1146 (add-after 'unpack 'streamline-requirements
1147 (lambda _
1148 ;; Remove extraneous development dependencies.
1149 (substitute* "rspec-stubbed_env.gemspec"
1150 ((".*bundler.*") "")
1151 ((".*rubocop.*") "")))))))
1152 (native-inputs (list ruby-simplecov))
1153 (propagated-inputs (list ruby-rspec))
1154 (synopsis "RSpec plugin to stub environment variables")
1155 (description
1156 "This RSpec plugin can be used to stub environment variables in a scoped
1157context for testing.")
1158 (home-page "https://github.com/pboling/rspec-stubbed_env")
1159 (license license:expat))))
1160
1161(define-public ruby-rspec-wait
1162 (package
1163 (name "ruby-rspec-wait")
1164 (version "0.0.9")
1165 (source
1166 (origin
1167 (method url-fetch)
1168 (uri (rubygems-uri "rspec-wait" version))
1169 (sha256
1170 (base32
1171 "0gvj1bp5ccx001dyvcgk2j49s5sl6vs9fdaqqb08z3bd1554hsww"))))
1172 (build-system ruby-build-system)
1173 (arguments
1174 '(#:phases
1175 (modify-phases %standard-phases
1176 (replace 'check
1177 (lambda _
1178 (invoke "rake" "spec"))))))
1179 (native-inputs
1180 (list bundler))
1181 (propagated-inputs
1182 (list ruby-rspec))
1183 (home-page "https://github.com/laserlemon/rspec-wait")
1184 (synopsis "Wait for conditions in RSpec")
1185 (description
1186 "RSpec::Wait strives to make it easier to test asynchronous or slow
1187interactions.")
1188 (license license:expat)))
1189
1190(define-public ruby-rspec
1191 (package
1192 (name "ruby-rspec")
1193 (version "3.13.0")
1194 (source (origin
1195 (method url-fetch)
1196 (uri (rubygems-uri "rspec" version))
1197 (sha256
1198 (base32
1199 "14xrp8vq6i9zx37vh0yp4h9m0anx9paw200l1r5ad9fmq559346l"))))
1200 (build-system ruby-build-system)
1201 (arguments
1202 '(#:tests? #f)) ; avoid dependency cycles
1203 (propagated-inputs
1204 (list ruby-rspec-core ruby-rspec-expectations ruby-rspec-mocks))
1205 (synopsis "Behavior-driven development framework for Ruby")
1206 (description "RSpec is a behavior-driven development (BDD) framework for
1207Ruby. This meta-package includes the RSpec test runner, along with the
1208expectations and mocks frameworks.")
1209 (home-page "https://rspec.info/")
1210 (license license:expat)))
1211
1212(define-public ruby-rspec-2
1213 (package (inherit ruby-rspec)
1214 (version "2.14.1")
1215 (source (origin
1216 (method url-fetch)
1217 (uri (rubygems-uri "rspec" version))
1218 (sha256
1219 (base32
1220 "134y4wzk1prninb5a0bhxgm30kqfzl8dg06af4js5ylnhv2wd7sg"))))
1221 (propagated-inputs
1222 (list ruby-rspec-core-2 ruby-rspec-mocks-2 ruby-rspec-expectations-2))))
1223
1224(define-public ruby-rspec-debug
1225 (package
1226 (name "ruby-rspec-debug")
1227 (version "0.2.0")
1228 (source (origin
1229 (method git-fetch) ;for tests
1230 (uri (git-reference
1231 (url "https://github.com/ko1/rspec-debug")
1232 (commit (string-append "v" version))))
1233 (file-name (git-file-name name version))
1234 (sha256
1235 (base32
1236 "125p1zxjznkk765nyqvkksw8x1nbm7xk4sjc1wza2fyp5hvyiddn"))))
1237 (build-system ruby-build-system)
1238 (arguments
1239 (list #:test-target "spec"
1240 #:phases #~(modify-phases %standard-phases
1241 (add-after 'extract-gemspec 'relax-dependencies
1242 (lambda _
1243 (substitute* "Gemfile"
1244 (("~>") ">=")))))))
1245 (native-inputs (list ruby-rspec))
1246 (propagated-inputs (list ruby-debug))
1247 (synopsis "Invoke Ruby debugger when spec fails")
1248 (description "This package can be used to have the execution stopped for
1249inspection in the Ruby debugger upon encountering a failure. To use it, set
1250the @env{RSPEC_DEBUG} environment variable to @samp{true} then invoke the
1251@command{rspec} command as usual.")
1252 (home-page "https://github.com/ko1/rspec-debug")
1253 (license license:expat)))
1254
1255(define-public ruby-specinfra
1256 (package
1257 (name "ruby-specinfra")
1258 (version "2.88.1")
1259 (source (origin
1260 (method url-fetch)
1261 (uri (rubygems-uri "specinfra" version))
1262 (sha256
1263 (base32
1264 "07lap3sknncffpq9jw1x1mn9c5xxd058wxs5vnyz1y0lawdjfnsf"))))
1265 (build-system ruby-build-system)
1266 (propagated-inputs (list ruby-net-scp ruby-net-ssh ruby-net-telnet
1267 ruby-sfl))
1268 (arguments
1269 (list
1270 #:test-target "spec"
1271 #:phases
1272 #~(modify-phases %standard-phases
1273 (add-after 'extract-gemspec 'relax-dependencies
1274 (lambda _
1275 (substitute* "specinfra.gemspec"
1276 (("%q<net-telnet>.freeze, \\[.*\\]")
1277 "%q<net-telnet>.freeze, [\">= 0\"]")))))))
1278 (synopsis "Common layer for serverspec and itamae")
1279 (description "This Gem provides a common layer for serverspec and
1280itamae.")
1281 (home-page "https://github.com/mizzy/specinfra")
1282 (license license:expat)))
1283
1284(define-public ruby-serverspec
1285 (package
1286 (name "ruby-serverspec")
1287 (version "2.42.3")
1288 (source (origin
1289 (method url-fetch)
1290 (uri (rubygems-uri "serverspec" version))
1291 (sha256
1292 (base32
1293 "0kfaqrqynly8n3dy5qrbjvx4lx6mk9a5vynwb7xwqj8bixm0mab4"))))
1294 (build-system ruby-build-system)
1295 (propagated-inputs (list ruby-multi-json ruby-rspec ruby-rspec-its
1296 ruby-specinfra))
1297 (arguments
1298 (list #:test-target "spec"))
1299 (synopsis
1300 "RSpec tests for servers configured by Puppet, Chef, Itamae, etc")
1301 (description
1302 "With Serverspec, you can write RSpec tests for checking your servers are
1303configured correctly.
1304
1305Serverspec tests your servers’ actual state by executing command locally, via
1306SSH, via WinRM, via Docker API and so on. So you don’t need to install any
1307agent softwares on your servers and can use any configuration management
1308tools, Puppet, Ansible, CFEngine, Itamae and so on.
1309
1310But the true aim of Serverspec is to help refactoring infrastructure code.")
1311 (home-page "https://serverspec.org/")
1312 (license license:expat)))
1313
1314;; Bundler is yet another source of circular dependencies, so we must disable
1315;; its test suite as well.
1316(define-public bundler
1317 (package
1318 (name "bundler")
1319 (version "2.4.18")
1320 (source (origin
1321 (method url-fetch)
1322 (uri (rubygems-uri "bundler" version))
1323 (sha256
1324 (base32
1325 "03ppd60cbwzlrhsidi7frj826ssmxzwd954ikjk7966l45qx5xxn"))))
1326 (build-system ruby-build-system)
1327 (arguments
1328 '(#:tests? #f)) ; avoid dependency cycles
1329 (synopsis "Ruby gem bundler")
1330 (description "Bundler automatically downloads and installs a list of gems
1331specified in a \"Gemfile\", as well as their dependencies.")
1332 (home-page "https://bundler.io/")
1333 (license license:expat)))
1334
1335(define-public ruby-base64
1336 (package
1337 (name "ruby-base64")
1338 (version "0.2.0")
1339 (source
1340 (origin
1341 (method url-fetch)
1342 (uri (rubygems-uri "base64" version))
1343 (sha256
1344 (base32 "01qml0yilb9basf7is2614skjp8384h2pycfx86cr8023arfj98g"))))
1345 (build-system ruby-build-system)
1346 (arguments '(#:tests? #f)) ; No tests bundled.
1347 (synopsis "Base64 encoding/decoding in Ruby")
1348 (description
1349 "This package provides support for encoding and decoding binary data
1350using a Base64 representation.")
1351 (home-page "https://github.com/ruby/base64")
1352 (license (list license:bsd-2))))
1353
1354(define-public ruby-builder
1355 (package
1356 (name "ruby-builder")
1357 (version "3.2.4")
1358 (source (origin
1359 (method url-fetch)
1360 (uri (rubygems-uri "builder" version))
1361 (sha256
1362 (base32
1363 "045wzckxpwcqzrjr353cxnyaxgf0qg22jh00dcx7z38cys5g1jlr"))))
1364 (build-system ruby-build-system)
1365 (arguments
1366 (list
1367 #:phases
1368 #~(modify-phases %standard-phases
1369 (add-after 'unpack 'patch
1370 (lambda _
1371 (substitute* "rakelib/tags.rake"
1372 (("File\\.exists\\?") "File.exist?"))
1373
1374 ;; TODO This test is broken
1375 ;; https://github.com/tenderlove/builder/issues/13
1376 (substitute* "test/test_blankslate.rb"
1377 (("test_late_included_module_in_kernel_is_ok")
1378 "test_late_included_module_in_kernel_is_ok
1379 skip(\"test expected to fail\")
1380"))
1381 (substitute* "rakelib/tags.rake"
1382 (("RVM_GEMDIR = .*") "RVM_GEMDIR = 'no-rvm-please'\n")))))))
1383 (synopsis "Ruby library to create structured data")
1384 (description "Builder provides a number of builder objects that make it
1385easy to create structured data. Currently the following builder objects are
1386supported: XML Markup and XML Events.")
1387 (home-page "https://github.com/tenderlove/builder")
1388 (license license:expat)))
1389
1390(define-public ruby-bump
1391 (package
1392 (name "ruby-bump")
1393 (version "0.7.0")
1394 (source
1395 (origin
1396 (method url-fetch)
1397 (uri (rubygems-uri "bump" version))
1398 (sha256
1399 (base32
1400 "1xinbr9rzh6cj75x24niwgqcnbhdxc68a8bc41lk8xv6fd906fym"))))
1401 (build-system ruby-build-system)
1402 (arguments
1403 '(;; No included tests
1404 #:tests? #f))
1405 (synopsis "Tool for working with Rubygems")
1406 (description
1407 "Bump provides commands to manage Rubygem versioning, updating to the
1408next patch version for example.")
1409 (home-page "https://github.com/gregorym/bump")
1410 (license license:expat)))
1411
1412(define-public ruby-rjb
1413 (package
1414 (name "ruby-rjb")
1415 (version "1.6.7")
1416 (source (origin
1417 (method url-fetch)
1418 (uri (rubygems-uri "rjb" version))
1419 (sha256
1420 (base32
1421 "0ck802bm8cklhmqsgzhsa0y8lg80qy52dp3m8rlld3zc5gv1rsb9"))))
1422 (build-system ruby-build-system)
1423 (arguments
1424 (list
1425 #:tests? #f ; no rakefile
1426 #:phases
1427 #~(modify-phases %standard-phases
1428 (add-before 'build 'set-java-home
1429 (lambda* (#:key inputs #:allow-other-keys)
1430 (setenv "JAVA_HOME" (assoc-ref inputs "jdk")))))))
1431 (native-inputs
1432 `(("jdk" ,icedtea "jdk")))
1433 (synopsis "Ruby-to-Java bridge using the Java Native Interface")
1434 (description "RJB is a bridge program that connects Ruby and Java via the
1435Java Native Interface.")
1436 (home-page "https://www.artonx.org/collabo/backyard/?RubyJavaBridge")
1437 (license license:lgpl2.1+)))
1438
1439(define-public ruby-log4r
1440 (package
1441 (name "ruby-log4r")
1442 (version "1.1.10")
1443 (source
1444 (origin
1445 (method url-fetch)
1446 (uri (rubygems-uri "log4r" version))
1447 (sha256
1448 (base32
1449 "0ri90q0frfmigkirqv5ihyrj59xm8pq5zcmf156cbdv4r4l2jicv"))))
1450 (build-system ruby-build-system)
1451 (arguments
1452 '(#:tests? #f)) ; no Rakefile in gem
1453 (synopsis "Flexible logging library for Ruby")
1454 (description "Comprehensive and flexible logging library written
1455in Ruby for use in Ruby programs. It features a hierarchical logging
1456system of any number of levels, custom level names, logger
1457inheritance, multiple output destinations per log event, execution
1458tracing, custom formatting, thread safteyness, XML and YAML
1459configuration, and more.")
1460 (home-page "http://log4r.rubyforge.org/")
1461 (license license:bsd-3)))
1462
1463(define-public ruby-atoulme-antwrap
1464 (package
1465 (name "ruby-atoulme-antwrap")
1466 (version "0.7.5")
1467 (source (origin
1468 (method url-fetch)
1469 (uri (rubygems-uri "atoulme-Antwrap" version))
1470 (sha256
1471 (base32
1472 "05s3iw44lqa81f8nfy5f0xjj808600h82zb9bsh46b9kcq2w2kmz"))))
1473 (build-system ruby-build-system)
1474 ;; Test data required for most of the tests are not included.
1475 (arguments `(#:tests? #f))
1476 (native-inputs
1477 (list ruby-hoe))
1478 (inputs
1479 (list ruby-rjb))
1480 (synopsis "Ruby wrapper for the Ant build tool")
1481 (description "Antwrap is a Ruby module that wraps the Apache Ant build
1482tool. Antwrap can be used to invoke Ant tasks from a Ruby or a JRuby
1483script.")
1484 (home-page "http://rubyforge.org/projects/antwrap/")
1485 (license license:expat)))
1486
1487(define-public ruby-atoulme-saikuro
1488 (package
1489 (name "ruby-atoulme-saikuro")
1490 (version "1.2.1")
1491 (source (origin
1492 (method url-fetch)
1493 (uri (rubygems-uri "atoulme-Saikuro" version))
1494 (sha256
1495 (base32
1496 "0kvd2nsxffbza61d3q4j94wrbnbv50r1zy3a7q26f6k706fw1f19"))))
1497 (build-system ruby-build-system)
1498 (arguments
1499 (list
1500 #:phases
1501 #~(modify-phases %standard-phases
1502 (add-after 'unpack 'fix-module-resolution
1503 (lambda _
1504 (substitute* "lib/saikuro.rb"
1505 ;; irb 1.2.0 or later doesn't have RubyToken
1506 (("require 'irb/ruby-lex'")
1507 "require 'rubygems'\ngem 'irb', '=1.1.1'\nrequire 'irb/ruby-lex'"))))
1508 (delete 'check)
1509 (add-after 'install 'check
1510 (lambda* (#:key outputs #:allow-other-keys)
1511 (let* ((out (assoc-ref outputs "out"))
1512 (saikuro (string-append out "/bin/saikuro")))
1513 (setenv "GEM_PATH" (string-append
1514 (getenv "GEM_PATH") ":"
1515 #$output "/lib/ruby/vendor_ruby"))
1516 (invoke saikuro "--cyclo" "--token" "--input_directory" "tests")))))))
1517 (propagated-inputs (list ruby-irb-1.1.1
1518 ruby-e2mmap)) ;required by rubygems
1519 (synopsis "Cyclomatic complexity analyzer")
1520 (description "Saikuro is a Ruby cyclomatic complexity analyzer. When
1521given Ruby source code Saikuro will generate a report listing the cyclomatic
1522complexity of each method found. In addition, Saikuro counts the number of
1523lines per method and can generate a listing of the number of tokens on each
1524line of code.")
1525 (home-page "http://www.github.com/atoulme/Saikuro")
1526 ;; File headers contain the BSD-3 license and the README.rdoc says that
1527 ;; "Saikuro uses the BSD license", but the LICENSE file contains the text
1528 ;; of the Expat license.
1529 (license license:bsd-3)))
1530
1531(define-public ruby-awesome-print
1532 (package
1533 (name "ruby-awesome-print")
1534 (version "1.9.2")
1535 (source
1536 (origin
1537 (method url-fetch)
1538 (uri (rubygems-uri "awesome_print" version))
1539 (sha256
1540 (base32
1541 "0vkq6c8y2jvaw03ynds5vjzl1v9wg608cimkd3bidzxc0jvk56z9"))))
1542 (build-system ruby-build-system)
1543 (arguments
1544 (list
1545 #:phases
1546 #~(modify-phases %standard-phases
1547 (replace 'check
1548 (lambda _
1549 ;; Remove failing test.
1550 (for-each delete-file
1551 '("spec/ext/nokogiri_spec.rb"
1552 "spec/colors_spec.rb"
1553 "spec/formats_spec.rb"
1554 "spec/methods_spec.rb"
1555 "spec/misc_spec.rb"
1556 "spec/objects_spec.rb"))
1557 (invoke "rspec" "-c" "spec"))))))
1558 (native-inputs
1559 (list ruby-nokogiri ruby-rspec ruby-simplecov))
1560 (synopsis "Pretty print Ruby objects to visualize their structure")
1561 (description
1562 "Ruby dubugging companion: pretty print Ruby objects to visualize their
1563structure. Supports custom object formatting via plugins.")
1564 (home-page "https://github.com/awesome-print/awesome_print")
1565 (license license:expat)))
1566
1567(define-public ruby-pandoc-ruby
1568 (package
1569 (name "ruby-pandoc-ruby")
1570 (version "2.1.4")
1571 (source
1572 (origin
1573 (method git-fetch) ;the gem lacks many test files
1574 (uri (git-reference
1575 (url "https://github.com/xwmx/pandoc-ruby")
1576 (commit version)))
1577 (file-name (git-file-name name version))
1578 (sha256
1579 (base32
1580 "03a11clhycyn0jhc7g9davpqd83sn60jqwjy1y145ag9sq6sp935"))))
1581 (build-system ruby-build-system)
1582 (arguments
1583 `(#:tests? #f ; Disable tests since they depend on pandoc behavior
1584 ; and there are no upstream releases.
1585 #:phases
1586 (modify-phases %standard-phases
1587 (add-after 'unpack 'patch-pandoc-path
1588 (lambda* (#:key inputs #:allow-other-keys)
1589 (let ((pandoc (search-input-file inputs "/bin/pandoc")))
1590 (substitute* "lib/pandoc-ruby.rb"
1591 (("@@pandoc_path = 'pandoc'")
1592 (format #f "@@pandoc_path = '~a'" pandoc)))
1593 (substitute* "test/test_pandoc_ruby.rb"
1594 (("('|\")pandoc" _ quote)
1595 (string-append quote pandoc))
1596 (("\\^pandoc")
1597 ".*pandoc")))))
1598 (add-after 'unpack 'adjust-tests
1599 ;; The tests expect filenames with spaces. Because they don't have
1600 ;; spaces the quotes around the output are dropped automatically.
1601 (lambda _
1602 (substitute* "test/test_pandoc_ruby.rb"
1603 (("\\\\\"#\\{file\\.path\\}\\\\\"") "#{file.path}"))))
1604 (add-after 'extract-gemspec 'remove-Gemfile.lock
1605 (lambda _
1606 (delete-file "Gemfile.lock")
1607 (substitute* "pandoc-ruby.gemspec"
1608 (("Gemfile\\.lock") "")))))))
1609 (native-inputs
1610 (list ruby-mocha))
1611 (inputs
1612 (list pandoc))
1613 (synopsis "Ruby wrapper for Pandoc")
1614 (description "PandocRuby is a wrapper for Pandoc, a Haskell library with
1615command line tools for converting one markup format to another. Pandoc can
1616convert documents from a variety of formats including markdown,
1617reStructuredText, textile, HTML, DocBook, LaTeX, and MediaWiki markup to a
1618variety of other formats, including markdown, reStructuredText, HTML, LaTeX,
1619ConTeXt, PDF, RTF, DocBook XML, OpenDocument XML, ODT, GNU Texinfo, MediaWiki
1620markup, groff man pages, HTML slide shows, EPUB, Microsoft Word docx, and
1621more.")
1622 (home-page "https://github.com/xwmx/pandoc-ruby")
1623 (license license:expat)))
1624
1625(define-public ruby-patron
1626 (package
1627 (name "ruby-patron")
1628 (version "0.13.3")
1629 (source
1630 (origin
1631 (method url-fetch)
1632 (uri (rubygems-uri "patron" version))
1633 (sha256
1634 (base32
1635 "0523gddx88zql2mq6655k60gy2ac8vybpzkcf90lmd9nx7wl3fi9"))))
1636 (build-system ruby-build-system)
1637 (inputs
1638 (list curl))
1639 (arguments
1640 `(#:tests? #f)) ; no included tests
1641 (synopsis "Ruby HTTP client library based on @code{libcurl}")
1642 (description
1643 "Patron is a Ruby HTTP client library based on @code{libcurl}. It does
1644not try to expose the full power (read complexity) of @code{libcurl} but
1645instead tries to provide a sane API while taking advantage of @code{libcurl}
1646under the hood.")
1647 (home-page "https://github.com/toland/patron")
1648 (license license:expat)))
1649
1650(define-public ruby-slim
1651 (package
1652 (name "ruby-slim")
1653 (version "5.2.1")
1654 (source
1655 (origin
1656 (method url-fetch)
1657 (uri (rubygems-uri "slim" version))
1658 (sha256
1659 (base32
1660 "1rqk7jn66wgx50b18ndhbppjq55rbcwgqg1rbhnhxwiggvzisdbj"))))
1661 (build-system ruby-build-system)
1662 (arguments
1663 `(#:phases
1664 (modify-phases %standard-phases
1665 ;; See: https://github.com/slim-template/slim/issues/857 and
1666 ;; https://github.com/slim-template/slim/issues/858.
1667 (add-after 'unpack 'skip-broken-tests
1668 (lambda _
1669 (substitute* "test/core/test_embedded_engines.rb"
1670 (("def test_render_with_markdown")
1671 "def skipped_test_render_with_markdown"))
1672 (substitute* "test/translator/test_translator.rb"
1673 (("raise (\"Missing test for.*)" _ tail)
1674 (string-append "print " tail)))))
1675 ;; See: https://salsa.debian.org/ruby-team/ruby-slim/-/commit/
1676 ;; 824862bd99d1675bc699d8fc71ba965a785c1f44.
1677 (add-after 'unpack 'prevent-bundler-interference
1678 (lambda _
1679 (substitute* "Rakefile"
1680 (("require 'bundler/setup'") "nil")
1681 (("Bundler::GemHelper\\.install_tasks") "nil")))))))
1682 (native-inputs
1683 (list ruby-rack-test ruby-rspec-core ruby-sinatra))
1684 (propagated-inputs
1685 (list ruby-temple ruby-tilt))
1686 (synopsis "Minimalist template language for Ruby")
1687 (description "Slim is a template language for Ruby that aims to reduce the
1688syntax to the minimum while remaining clear.")
1689 (home-page "http://slim-lang.com/")
1690 (license license:expat)))
1691
1692(define-public ruby-asciidoctor
1693 (package
1694 (name "ruby-asciidoctor")
1695 (version "2.0.20")
1696 (source
1697 (origin
1698 (method git-fetch) ;the gem release lacks a Rakefile
1699 (uri (git-reference
1700 (url "https://github.com/asciidoctor/asciidoctor")
1701 (commit (string-append "v" version))))
1702 (file-name (git-file-name name version))
1703 (sha256
1704 (base32
1705 "19qvilhwa9plg80ppspn5ys0ybl8qfyaicqbl9w316hk5ldwi1jq"))))
1706 (build-system ruby-build-system)
1707 (arguments
1708 (list
1709 #:test-target "test:all"
1710 #:phases
1711 #~(modify-phases %standard-phases
1712 (add-after 'extract-gemspec 'strip-version-requirements
1713 (lambda _
1714 (delete-file "Gemfile")
1715 (substitute* "asciidoctor.gemspec"
1716 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
1717 (string-append stripped "\n")))))
1718 (add-after 'install 'install-man-page
1719 (lambda* (#:key outputs #:allow-other-keys)
1720 (install-file (search-input-file
1721 outputs (string-append "lib/ruby/vendor_ruby/"
1722 "gems/asciidoctor-"
1723 #$version
1724 "/man/asciidoctor.1"))
1725 (string-append #$output "/share/man/man1")))))))
1726 (native-inputs
1727 (list ruby-asciimath
1728 ruby-coderay
1729 ruby-cucumber
1730 ruby-erubis
1731 ruby-haml
1732 ruby-minitest
1733 ruby-nokogiri
1734 ruby-open-uri-cached
1735 ruby-rouge
1736 ruby-rspec-expectations
1737 ruby-simplecov
1738 ruby-slim
1739 ruby-tilt
1740 ruby-erubi))
1741 (synopsis "Converter from AsciiDoc content to other formats")
1742 (description "Asciidoctor is a text processor and publishing toolchain for
1743converting AsciiDoc content to HTML5, DocBook 5, PDF, and other formats.")
1744 (home-page "https://asciidoctor.org")
1745 (license license:expat)))
1746
1747(define-public ruby-asciidoctor/minimal
1748 (hidden-package
1749 (package
1750 (inherit ruby-asciidoctor)
1751 (arguments
1752 (ensure-keyword-arguments
1753 (package-arguments ruby-asciidoctor)
1754 (list #:tests? #f)))
1755 (native-inputs '()))))
1756
1757(define-public ruby-asciidoctor-multipage
1758 (package
1759 (name "ruby-asciidoctor-multipage")
1760 (version "0.0.16")
1761 (source (origin
1762 (method git-fetch)
1763 (uri (git-reference
1764 (url "https://github.com/owenh000/asciidoctor-multipage")
1765 (commit (string-append "v" version))))
1766 (file-name (git-file-name name version))
1767 (sha256
1768 (base32
1769 "0rnz7qxdw5qbi3qjplihhk468kv690njdi06yllgylc75k62ar1p"))))
1770 (propagated-inputs (list ruby-asciidoctor ruby-slim))
1771 (build-system ruby-build-system)
1772 (arguments
1773 `(#:phases (modify-phases %standard-phases
1774 (add-after 'extract-gemspec 'strip-version-requirements
1775 (lambda _
1776 (delete-file "Gemfile")
1777 (substitute* "asciidoctor-multipage.gemspec"
1778 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
1779 (string-append stripped "\n"))))))))
1780 (synopsis
1781 "Asciidoctor extension for generating HTML output using multiple pages")
1782 (description
1783 "Asciidoctor generates single-page documents. This extension
1784splits documents up into multiple HTML pages according to their headings, with
1785configurable levels.")
1786 (license license:expat)
1787 (home-page "https://github.com/owenh000/asciidoctor-multipage")))
1788
1789(define-public ruby-prawn-icon
1790 (package
1791 (name "ruby-prawn-icon")
1792 (version "3.1.0")
1793 (source
1794 (origin
1795 (method url-fetch)
1796 (uri (rubygems-uri "prawn-icon" version))
1797 (sha256
1798 (base32
1799 "049k42bqy4iq9hddf7jah83b6qr8ka63w1d63illh1mf4f4dihdk"))))
1800 (build-system ruby-build-system)
1801 (arguments
1802 `(#:test-target "spec"
1803 #:phases (modify-phases %standard-phases
1804 (add-after 'unpack 'remove-unnecessary-dependencies
1805 (lambda _
1806 (substitute* '("Rakefile" "spec/spec_helper.rb")
1807 ((".*[Bb]undler.*") "")
1808 (("^require 'rubocop.*") "")
1809 (("^RuboCop.*") "")))))))
1810 (native-inputs
1811 (list ruby-pdf-inspector ruby-pdf-reader ruby-rspec ruby-simplecov))
1812 (propagated-inputs
1813 (list ruby-prawn))
1814 (synopsis "Icon fonts for use with the Prawn PDF toolkit")
1815 (description "@code{Prawn::Icon} provides various icon fonts including
1816FontAwesome, PaymentFont and Foundation Icons for use with the Prawn PDF
1817toolkit.")
1818 (home-page "https://github.com/jessedoyle/prawn-icon/")
1819 (license %prawn-project-licenses)))
1820
1821(define-public ruby-css-parser
1822 (package
1823 (name "ruby-css-parser")
1824 (version "1.7.1")
1825 (source
1826 (origin
1827 (method url-fetch)
1828 (uri (rubygems-uri "css_parser" version))
1829 (sha256
1830 (base32
1831 "04c4dl8cm5rjr50k9qa6yl9r05fk9zcb1zxh0y0cdahxlsgcydfw"))))
1832 (build-system ruby-build-system)
1833 (arguments `(#:tests? #f)) ;gem doesn't ship with test suite
1834 (propagated-inputs
1835 (list ruby-addressable))
1836 (synopsis "Ruby Cascading Style Sheets (CSS) parser")
1837 (description "This package allows loading, parsing and cascading Cascading
1838Style Sheets (CSS) rule sets in Ruby.")
1839 (home-page "https://github.com/premailer/css_parser")
1840 (license license:expat)))
1841
1842(define-public ruby-prism
1843 (package
1844 (name "ruby-prism")
1845 (version "1.3.0")
1846 (source (origin
1847 (method git-fetch)
1848 (uri (git-reference
1849 (url "https://github.com/ruby/prism.git")
1850 (commit (string-append "v" version))))
1851 (file-name (git-file-name name version))
1852 (sha256
1853 (base32
1854 "03bs2gbackc3c3k4p979l2p9v215jb1m5h7b44n6yzh18kaimc85"))))
1855 (build-system ruby-build-system)
1856 (arguments
1857 `(#:phases
1858 (modify-phases %standard-phases
1859 (replace 'build
1860 (lambda _
1861 (setenv "CC" ,(cc-for-target))
1862 (invoke "rake" "compile")))
1863 (replace 'install
1864 (lambda* (#:key outputs #:allow-other-keys)
1865 (setenv "GEM_HOME" (string-append (assoc-ref outputs "out")
1866 "/lib/ruby/vendor_ruby"))
1867 (invoke "rake" "install")
1868 ;; Make build reproducible.
1869 (for-each delete-file
1870 (find-files (string-append (assoc-ref outputs "out")
1871 "/lib/ruby/vendor_ruby")
1872 "gem_make.out$")))))))
1873 (native-inputs
1874 (list ruby-rake ruby-rake-compiler))
1875 (synopsis "Parser for Ruby source code")
1876 (description "This package provides a parser for Ruby source code,
1877written in C.")
1878 (home-page "https://ruby.github.io/prism/")
1879 (license license:expat)))
1880
1881(define-public ruby-prawn-svg
1882 (package
1883 (name "ruby-prawn-svg")
1884 (version "0.36.0")
1885 (source
1886 (origin
1887 (method url-fetch)
1888 (uri (rubygems-uri "prawn-svg" version))
1889 (sha256
1890 (base32 "008p1p334h3019x5w5bqvwgmly3g5n08s63va1261nwyvfb955jv"))))
1891 (build-system ruby-build-system)
1892 (arguments
1893 (list #:test-target "spec"
1894 #:phases
1895 #~(modify-phases %standard-phases
1896 (add-after 'unpack 'do-not-use-bundler
1897 (lambda _
1898 (substitute* "spec/spec_helper.rb"
1899 ((".*[Bb]undler.*") ""))))
1900 (replace 'check
1901 (lambda* (#:key tests? #:allow-other-keys)
1902 (when tests?
1903 ;; This test fails due to the recent rspec 3.12 used
1904 ;; (see: https://github.com/mogest/prawn-svg/issues/151).
1905 (delete-file "spec/prawn/svg/interface_spec.rb")
1906 (invoke "rspec" "-Ilib" "-rprawn-svg")))))))
1907 (native-inputs (list ruby-rspec))
1908 (propagated-inputs (list ruby-css-parser ruby-matrix ruby-prawn ruby-rexml))
1909 (synopsis "SVG renderer for the Prawn PDF library")
1910 (description "This library allows rendering Scalable Vector Graphics (SVG)
1911graphics directly into a Portable Document Format (PDF) document using the
1912Prawn module.")
1913 (home-page "https://github.com/mogest/prawn-svg")
1914 (license license:expat)))
1915
1916(define-public ruby-prawn-templates
1917 (package
1918 (name "ruby-prawn-templates")
1919 (version "0.1.2")
1920 (source
1921 (origin
1922 (method git-fetch)
1923 (uri (git-reference
1924 (url "https://github.com/prawnpdf/prawn-templates")
1925 (commit version)))
1926 (file-name (git-file-name name version))
1927 (sha256
1928 (base32
1929 "0wll54wxxwixpwazfn4ffbqvqbfrl01cfsv8y11vnlzy7isx5xvl"))))
1930 (build-system ruby-build-system)
1931 (arguments
1932 `(#:phases (modify-phases %standard-phases
1933 (add-after 'unpack 'do-not-use-bundler
1934 (lambda _
1935 (substitute* "spec/spec_helper.rb"
1936 ((".*[Bb]undler.*") ""))))
1937 (replace 'check
1938 (lambda* (#:key tests? #:allow-other-keys)
1939 (when tests?
1940 (invoke "rspec")))))))
1941 (native-inputs
1942 (list ruby-pdf-inspector ruby-rspec))
1943 (propagated-inputs
1944 (list ruby-pdf-reader ruby-prawn))
1945 (synopsis "Prawn extension to include or combine PDF documents")
1946 (description "This @strong{unmaintained} package provides a Prawn
1947extension that allows including other Portable Document Format (PDF) documents
1948as background or combining several PDF documents into one. This functionality
1949used to be part of Prawn itself, but was extracted from Prawn 0.15.0 because
1950of its many longstanding issues.")
1951 (home-page "https://github.com/prawnpdf/prawn-templates")
1952 (license %prawn-project-licenses)))
1953
1954(define-public ruby-polyglot
1955 (package
1956 (name "ruby-polyglot")
1957 (version "0.3.5")
1958 (source
1959 (origin
1960 (method url-fetch)
1961 (uri (rubygems-uri "polyglot" version))
1962 (sha256
1963 (base32
1964 "1bqnxwyip623d8pr29rg6m8r0hdg08fpr2yb74f46rn1wgsnxmjr"))))
1965 (build-system ruby-build-system)
1966 (arguments `(#:tests? #f)) ;no test suite
1967 (synopsis "Augment @code{require} to load non-Ruby file types")
1968 (description "The Polyglot library allows a Ruby module to register a
1969loader for the file type associated with a filename extension, and it augments
1970@code{require} to find and load matching files.")
1971 (home-page "https://github.com/cjheath/polyglot")
1972 (license license:expat)))
1973
1974(define-public ruby-treetop
1975 (package
1976 (name "ruby-treetop")
1977 (version "1.6.12")
1978 (source
1979 (origin
1980 (method git-fetch) ;no test suite in distributed gem
1981 (uri (git-reference
1982 (url "https://github.com/cjheath/treetop")
1983 (commit (string-append "v" version))))
1984 (file-name (git-file-name name version))
1985 (sha256
1986 (base32
1987 "0cgs6f9z0a9dq5fc03710zsch4gmh1771wq36mq81qsql4x9vksf"))))
1988 (build-system ruby-build-system)
1989 (arguments
1990 `(#:test-target "spec"))
1991 (native-inputs
1992 (list ruby-activesupport ruby-rr ruby-rspec))
1993 (propagated-inputs
1994 (list ruby-polyglot))
1995 (synopsis "Ruby-based parsing DSL based on parsing expression grammars")
1996 (description "This package provides a Ruby-based Parsing Expression
1997Grammar (PEG) parser generator Domain Specific Language (DSL).")
1998 (home-page "https://github.com/cjheath/treetop")
1999 (license license:expat)))
2000
2001(define-public ruby-typhoeus
2002 (package
2003 (name "ruby-typhoeus")
2004 (version "1.4.0")
2005 (source
2006 (origin
2007 (method url-fetch)
2008 (uri (rubygems-uri "typhoeus" version))
2009 (sha256
2010 (base32
2011 "1m22yrkmbj81rzhlny81j427qdvz57yk5wbcf3km0nf3bl6qiygz"))))
2012 (build-system ruby-build-system)
2013 (arguments
2014 `(#:tests? #f)) ; no included tests
2015 (propagated-inputs
2016 (list ruby-ethon))
2017 (synopsis "@code{libcurl} wrapper in Ruby")
2018 (description
2019 "Like a modern code version of the mythical beast with 100 serpent heads,
2020Typhoeus runs HTTP requests in parallel while cleanly encapsulating handling
2021logic.")
2022 (home-page "https://github.com/typhoeus/typhoeus")
2023 (license license:expat)))
2024
2025;;; A minimal variant used to build ruby-rubocop itself.
2026(define ruby-rubocop-capybara-minimal
2027 (package
2028 (name "ruby-rubocop-capybara")
2029 (version "2.21.0")
2030 (source (origin
2031 (method git-fetch) ;for tests
2032 (uri (git-reference
2033 (url "https://github.com/rubocop/rubocop-capybara")
2034 (commit (string-append "v" version))))
2035 (file-name (git-file-name name version))
2036 (sha256
2037 (base32
2038 "19r2s782r9ch2g1lxgrvk22d9qqkxi69brza16bfwp2rl2064qnc"))))
2039 (build-system ruby-build-system)
2040 (arguments (list #:tests? #f))
2041 (synopsis "Capybara plugin for RuboCop")
2042 (description "This package provides a RuboCop plugin that can be used for
2043code style checking of Capybara test files (RSpec, Cucumber, Minitest).")
2044 (home-page "https://github.com/rubocop/rubocop-capybara")
2045 (license license:expat)))
2046
2047(define-public ruby-rubocop-capybara
2048 (package
2049 (inherit ruby-rubocop-capybara-minimal)
2050 (arguments
2051 (list #:test-target "spec"
2052 #:phases #~(modify-phases %standard-phases
2053 (add-after 'unpack 'relax-requirements
2054 (lambda _
2055 (substitute* "Gemfile"
2056 (("gem 'rubocop-rspec', '~> 2.16.0'")
2057 "gem 'rubocop-rspec', '>= 2.16.0'")
2058 (("gem 'danger'.*") "")))))))
2059 (native-inputs
2060 (list ruby-bump
2061 ruby-rack
2062 ruby-rake
2063 ruby-rspec
2064 ruby-rubocop
2065 ruby-rubocop-performance-minimal
2066 ruby-rubocop-rake-minimal
2067 ruby-rubocop-rspec-minimal
2068 ruby-simplecov
2069 ruby-yard))))
2070
2071(define-public ruby-rubocop-factory-bot
2072 (package
2073 (name "ruby-rubocop-factory-bot")
2074 (version "2.26.1")
2075 (source
2076 (origin
2077 (method url-fetch)
2078 (uri (rubygems-uri "rubocop-factory_bot" version))
2079 (sha256
2080 (base32 "1aljadsjx7affcarzbhz7pydpy6fgqb8hl951y0cmrffxpa3rqcd"))))
2081 (build-system ruby-build-system)
2082 (arguments '(#:tests? #f)) ; No tests bundled.
2083 (synopsis "Code style checking for factory_bot files")
2084 (description
2085 "This package provides a plugin for the @code{RuboCop} code style
2086enforcing & linting tool for @code{factory_bot} files.")
2087 (home-page "https://github.com/rubocop/rubocop-factory_bot")
2088 (license license:expat)))
2089
2090;;; A minimal variant used to build ruby-rubocop itself.
2091(define ruby-rubocop-rake-minimal
2092 (package
2093 (name "ruby-rubocop-rake")
2094 (version "0.6.0")
2095 (source (origin
2096 (method git-fetch) ;for tests
2097 (uri (git-reference
2098 (url "https://github.com/rubocop/rubocop-rake")
2099 (commit (string-append "v" version))))
2100 (file-name (git-file-name name version))
2101 (sha256
2102 (base32
2103 "1r53szwglikbir1fvpz4i51p915khrrkl6rp61zcx3dcrclkr3ld"))))
2104 (build-system ruby-build-system)
2105 (arguments (list #:tests? #f)) ;avoid extra dependencies
2106 (synopsis "RuboCop plugin for Rake")
2107 (description "This package provides a RuboCop plugin for Rake.")
2108 (home-page "https://github.com/rubocop/rubocop-rake")
2109 (license license:expat)))
2110
2111(define-public ruby-rubocop-rake
2112 (package
2113 (inherit ruby-rubocop-rake-minimal)
2114 (arguments
2115 (list #:test-target "spec"))
2116 (native-inputs
2117 (list ruby-rake
2118 ruby-rspec
2119 ruby-rubocop
2120 ruby-rubocop-rspec))
2121 (propagated-inputs
2122 (list ruby-rubocop))))
2123
2124;;; A minimal variant used to build ruby-rubocop itself.
2125(define ruby-rubocop-rspec-minimal
2126 (package
2127 (name "ruby-rubocop-rspec")
2128 (version "2.26.0")
2129 (source
2130 (origin
2131 (method git-fetch)
2132 (uri (git-reference
2133 (url "https://github.com/rubocop/rubocop-rspec")
2134 (commit (string-append "v" version))))
2135 (file-name (git-file-name name version))
2136 (sha256
2137 (base32
2138 "1w9whadx60kv4vlbnk77b5yyhhfcg717r9cr334zqznqr1bqr8mh"))))
2139 (build-system ruby-build-system)
2140 (arguments
2141 (list #:tests? #f ;avoid extra dependencies
2142 #:phases
2143 #~(modify-phases %standard-phases
2144 (add-after 'unpack 'relax-requirements
2145 (lambda _
2146 (substitute* "Gemfile"
2147 (("gem 'danger'.*") "")))))))
2148 (propagated-inputs (list ruby-rubocop-factory-bot))
2149 (synopsis "Code style checking for RSpec files")
2150 (description "This package provides a plugin for the RuboCop code style
2151enforcing & linting tool.")
2152 (home-page "https://github.com/rubocop/rubocop-rspec")
2153 (license license:expat)))
2154
2155(define-public ruby-rubocop-rspec
2156 (package
2157 (inherit ruby-rubocop-rspec-minimal)
2158 (arguments
2159 (substitute-keyword-arguments
2160 (package-arguments ruby-rubocop-rspec-minimal)
2161 ((#:tests? _ #f) #t)
2162 ((#:test-target _ "test") "spec")))
2163 (native-inputs
2164 (list ruby-bump
2165 ruby-rack
2166 ruby-rspec
2167 ruby-rubocop-performance-minimal
2168 ruby-rubocop-rake-minimal
2169 ruby-simplecov
2170 ruby-yard))
2171 (propagated-inputs
2172 (list ruby-rubocop
2173 ruby-rubocop-ast
2174 ruby-rubocop-capybara
2175 ruby-rubocop-factory-bot))))
2176
2177(define-public ruby-rubocop-packaging
2178 (package
2179 (name "ruby-rubocop-packaging")
2180 (version "0.5.2")
2181 (source
2182 (origin
2183 (method git-fetch)
2184 (uri (git-reference
2185 (url "https://github.com/utkarsh2102/rubocop-packaging")
2186 (commit (string-append "v" version))))
2187 (file-name (git-file-name name version))
2188 (sha256
2189 (base32
2190 "08jsfp42z0aj32002z2hz8vkmza0jvnrqk9rk2v0xb8qdxkgbx3l"))))
2191 (build-system ruby-build-system)
2192 (arguments
2193 (list #:test-target "spec"
2194 #:phases
2195 #~(modify-phases %standard-phases
2196 (add-after 'unpack 'skip-problematic-tests
2197 (lambda _
2198 ;; Tests are actually running fine, except for a prefix.
2199 ;; This doesn't impair functionality, ignored for now.
2200 (delete-file
2201 "spec/rubocop/cop/packaging/gemspec_git_spec.rb"))))))
2202 (propagated-inputs
2203 (list ruby-rubocop))
2204 (native-inputs
2205 (list ruby-rspec
2206 ruby-yard
2207 ruby-bump))
2208 (synopsis
2209 "Collection of RuboCop checks for downstream compatibility issues")
2210 (description
2211 "This package provides a collection of RuboCop cops to check for
2212downstream compatibility issues in the Ruby code.")
2213 (home-page "https://github.com/utkarsh2102/rubocop-packaging")
2214 (license license:expat)))
2215
2216(define-public ruby-rubocop-performance
2217 (package
2218 (name "ruby-rubocop-performance")
2219 (version "1.23.1")
2220 (source
2221 (origin
2222 (method git-fetch)
2223 (uri (git-reference
2224 (url "https://github.com/rubocop/rubocop-performance")
2225 (commit (string-append "v" version))))
2226 (file-name (git-file-name name version))
2227 (sha256
2228 (base32
2229 "0d1p6pgrcnj58q1g0np5j4vbk7wavj31b4bapi5p4gckqlnc7xjd"))))
2230 (build-system ruby-build-system)
2231 (arguments
2232 `(#:tests? #f ; tests require a git checkout of rubocop's source code.
2233 #:phases
2234 (modify-phases %standard-phases
2235 (replace 'replace-git-ls-files
2236 (lambda _
2237 (substitute* "rubocop-performance.gemspec"
2238 (("`git ls-files -z config lib LICENSE.txt README.md`")
2239 "`find config lib LICENSE.txt README.md \
2240-type f -print0 |sort -z`"))))
2241 (add-before 'check 'set-HOME
2242 (lambda _
2243 (setenv "HOME" "/tmp"))))))
2244 (propagated-inputs
2245 (list ruby-rubocop ruby-rubocop-ast))
2246 (native-inputs
2247 (list ruby-bump ruby-yard))
2248 (synopsis "Performance optimizations checkers for Ruby code")
2249 (description "This package provides a collection of RuboCop cops to check
2250for performance optimizations in Ruby code.")
2251 (home-page "https://docs.rubocop.org/rubocop-performance/")
2252 (license license:expat)))
2253
2254(define-public ruby-rubocop-performance-minimal
2255 (hidden-package
2256 (package
2257 (inherit ruby-rubocop-performance)
2258 (arguments
2259 (substitute-keyword-arguments (package-arguments ruby-rubocop-performance)
2260 ((#:tests? _ #f) #f)))
2261 (propagated-inputs '())
2262 (native-inputs '()))))
2263
2264(define-public ruby-stud
2265 (package
2266 (name "ruby-stud")
2267 (version "0.0.23")
2268 (source (origin
2269 (method url-fetch)
2270 (uri (rubygems-uri "stud" version))
2271 (sha256
2272 (base32
2273 "0qpb57cbpm9rwgsygqxifca0zma87drnlacv49cqs2n5iyi6z8kb"))))
2274 (build-system ruby-build-system)
2275 (native-inputs (list ruby-rspec))
2276 (arguments
2277 (list #:phases #~(modify-phases %standard-phases
2278 ;; No Rakefile is included, so run rspec directly.
2279 (replace 'check
2280 (lambda* (#:key tests? #:allow-other-keys)
2281 (when tests?
2282 (invoke "rspec")))))))
2283 (synopsis "Retries, worker supervision, resource pools and more for Ruby")
2284 (description "The Stud Ruby library adds a few things missing from the
2285standard Ruby library such as:
2286@table @code
2287@item {Stud::Try}
2288Retry on failure, with back-off, where failure is any exception.
2289@item {Stud::Pool}
2290Generic resource pools.
2291@item {Stud::Task}
2292Tasks (threads that can return values, exceptions, etc.)
2293@item {Stud.interval}
2294Interval execution (do X every N seconds).
2295@item {Stud::Buffer}
2296Batch and flush behavior.
2297@end itemize")
2298 (home-page "https://github.com/jordansissel/ruby-stud")
2299 (license license:asl2.0)))
2300
2301(define-public ruby-standard-custom
2302 (package
2303 (name "ruby-standard-custom")
2304 (version "1.0.2")
2305 (source
2306 (origin
2307 (method url-fetch)
2308 (uri (rubygems-uri "standard-custom" version))
2309 (sha256
2310 (base32 "0av55ai0nv23z5mhrwj1clmxpgyngk7vk6rh58d4y1ws2y2dqjj2"))))
2311 (build-system ruby-build-system)
2312 (arguments '(#:tests? #f)) ;Circular dependency on ruby-standard.
2313 (propagated-inputs (list ruby-lint-roller ruby-rubocop))
2314 (synopsis "Plugin of custom cops for Standard Ruby")
2315 (description
2316 "This package provides a implementations of custom cops that are bundled
2317as defaults in Standard Ruby.")
2318 (home-page "https://github.com/standardrb/standard-custom")
2319 (license license:expat)))
2320
2321(define-public ruby-standard-performance
2322 (package
2323 (name "ruby-standard-performance")
2324 (version "1.6.0")
2325 (source
2326 (origin
2327 (method url-fetch)
2328 (uri (rubygems-uri "standard-performance" version))
2329 (sha256
2330 (base32 "1x298w3wmq8cavbsg903wc3arxp3xh2x8263brvy128436m732rd"))))
2331 (build-system ruby-build-system)
2332 (arguments '(#:tests? #f)) ;Circular dependency on ruby-standard.
2333 (propagated-inputs (list ruby-lint-roller ruby-rubocop-performance))
2334 (synopsis "Standard Ruby Plugin for rubocop-performance")
2335 (description
2336 "This package is a Standard Ruby Plugin providing configuration for
2337@code{rubocop-performance}.")
2338 (home-page "https://github.com/standardrb/standard-performance")
2339 (license license:expat)))
2340
2341(define-public ruby-standard
2342 (package
2343 (name "ruby-standard")
2344 (version "1.37.0")
2345 (source
2346 (origin
2347 (method git-fetch) ;no test suite in distributed gem
2348 (uri (git-reference
2349 (url "https://github.com/testdouble/standard")
2350 (commit (string-append "v" version))))
2351 (file-name (git-file-name name version))
2352 (sha256
2353 (base32 "0gm9fn6fz41aya34xz7kzda8xxs7h98n7cjx66qbcy2w0qhs40wc"))))
2354 (build-system ruby-build-system)
2355 (arguments
2356 (list
2357 #:phases
2358 #~(modify-phases %standard-phases
2359 (add-after 'unpack 'set-HOME
2360 (lambda _
2361 ;; Some tests fail otherwise.
2362 (setenv "HOME" "/tmp")))
2363 (add-after 'unpack 'relax-requirements
2364 (lambda _
2365 (substitute* "standard.gemspec"
2366 (("\"rubocop\", \".*\"")
2367 (string-append
2368 "\"rubocop\", \"~> "
2369 #$(package-version
2370 (this-package-input "ruby-rubocop"))
2371 "\""))
2372 (("\"rubocop-performance\", \".*\"")
2373 (string-append
2374 "\"rubocop-performance\", \"~> "
2375 #$(package-version
2376 (this-package-input "ruby-rubocop-performance"))
2377 "\"")))))
2378 (add-after 'unpack 'delete-problematic-tests
2379 ;; These tests fail for unknown reasons (see:
2380 ;; https://github.com/testdouble/standard/issues/532).
2381 (lambda _
2382 (delete-file "test/standard_test.rb")
2383 (substitute* "test/standard/base_test.rb"
2384 ((".*test_configures_all_rubocop_cops.*" all)
2385 (string-append all
2386 " skip('fails on guix')\n"))))))))
2387 (native-inputs
2388 (list ruby-simplecov))
2389 (propagated-inputs
2390 (list ruby-language-server-protocol
2391 ruby-lint-roller
2392 ruby-rubocop
2393 ruby-rubocop-performance
2394 ruby-standard-custom
2395 ruby-standard-performance))
2396 (synopsis "Ruby Style Guide, with linter & automatic code fixer")
2397 (description "Standard is a port of StandardJS. Like StandardJS, it aims
2398to save time in the following ways:
2399@itemize
2400@item No configuration.
2401@item Automatically format code.
2402@item Catch style issues and programmer errors early.
2403@end itemize")
2404 (home-page "https://github.com/testdouble/standard")
2405 (license license:expat)))
2406
2407(define-public ruby-chunky-png
2408 (package
2409 (name "ruby-chunky-png")
2410 (version "1.4.0")
2411 (source
2412 (origin
2413 (method git-fetch)
2414 (uri (git-reference
2415 (url "https://github.com/wvanbergen/chunky_png")
2416 (commit (string-append "v" version))))
2417 (file-name (git-file-name name version))
2418 (sha256
2419 (base32 "05qwj72dy2fcy0n2jnf3bfriybfj36m7s6pv9xash6295dbcp901"))))
2420 (build-system ruby-build-system)
2421 (arguments
2422 (list
2423 #:ruby ruby-3.1
2424 #:test-target "spec"
2425 #:phases
2426 #~(modify-phases %standard-phases
2427 (add-after 'unpack 'disable-bundler
2428 (lambda _
2429 (substitute* (find-files "." "\\.rb$")
2430 (("require.*bundler/setup.*") "")))))))
2431 (native-inputs
2432 (list bundler ruby-rspec ruby-standard ruby-yard))
2433 (synopsis "Ruby library to handle PNG images")
2434 (description "ChunkyPNG is a pure Ruby library that can read and write
2435Portable Network Graphics (PNG) images without depending on an external image
2436library. It tries to be memory efficient and reasonably fast. It has
2437features such as:
2438@itemize
2439@item
2440Decoding support for any image that the PNG standard allows. This includes all
2441standard color modes, all bit depths, all transparency, and interlacing and
2442filtering options.
2443@item
2444Encoding support for images of all color modes (true color, grayscale, and
2445indexed) and transparency for all these color modes. The best color mode is
2446chosen automatically, based on the amount of used colors.
2447@item Read/write access to the image's pixels.
2448@item Read/write access to all image metadata that is stored in chunks.
2449@item
2450Memory efficiency: @code{fixnum} are used, i.e. 4 or 8 bytes of memory per
2451pixel, depending on the hardware).
2452@item
2453Performance: ChunkyPNG is reasonably fast for Ruby standards, by only using
2454integer math and a highly optimized saving routine.
2455@item Interoperability with RMagick.
2456@end itemize
2457
2458ChunkyPNG is vulnerable to decompression bombs and can run out of memory when
2459loading a specifically crafted PNG file. This is hard to fix in pure Ruby.
2460Deal with untrusted images in a separate process, e.g., by using @code{fork}
2461or a background processing library.")
2462 (home-page "https://github.com/wvanbergen/chunky_png/wiki")
2463 (license license:expat)))
2464
2465(define-public ruby-text-hyphen
2466 (package
2467 (name "ruby-text-hyphen")
2468 (version "1.5.0")
2469 (source
2470 (origin
2471 (method url-fetch)
2472 (uri (rubygems-uri "text-hyphen" version))
2473 (sha256
2474 (base32
2475 "01js0wxz84cc5hzxgqbcqnsa0y6crhdi6plmgkzyfm55p0rlajn4"))))
2476 (build-system ruby-build-system)
2477 (native-inputs
2478 (list ruby-hoe))
2479 (synopsis "Ruby library to hyphenate words in various languages")
2480 (description "Text::Hyphen is a Ruby library to hyphenate words in various
2481languages using Ruby-fied versions of TeX hyphenation patterns. It will
2482properly hyphenate various words according to the rules of the language the
2483word is written in. The algorithm is based on that of the TeX typesetting
2484system by Donald E. Knuth.")
2485 (home-page "https://github.com/halostatue/text-hyphen")
2486 ;; The whole is licensed under the Expat license, but parts use various
2487 ;; versions of the LaTeX Project Public License.
2488 (license license:expat)))
2489
2490(define-public ruby-open-uri-cached
2491 (package
2492 (name "ruby-open-uri-cached")
2493 (version "1.0.0")
2494 (source
2495 (origin
2496 (method url-fetch)
2497 (uri (rubygems-uri "open-uri-cached" version))
2498 (sha256
2499 (base32
2500 "03v0if3jlvbclnd6jgjk94fbhf0h2fq1wxr0mbx7018sxzm0biwr"))))
2501 (build-system ruby-build-system)
2502 (arguments
2503 `(#:tests? #f)) ;no test suite
2504 (synopsis "OpenURI with transparent disk caching")
2505 (description "OpenURI with transparent disk caching, which is
2506useful to avoid making excessive queries, for example when scraping
2507web pages.")
2508 (home-page "https://github.com/tigris/open-uri-cached")
2509 (license license:expat)))
2510
2511(define-public ruby-asciidoctor-pdf
2512 (package
2513 (name "ruby-asciidoctor-pdf")
2514 (version "2.3.19")
2515 (source
2516 (origin
2517 (method git-fetch) ;no test suite in the distributed gem
2518 (uri (git-reference
2519 (url "https://github.com/asciidoctor/asciidoctor-pdf")
2520 (commit (string-append "v" version))))
2521 (file-name (git-file-name name version))
2522 (sha256
2523 (base32
2524 "1l8my8jj4aww2yad80n6f7hs76lq5gicld8dy014pw90pk3x43mp"))
2525 (patches
2526 (search-patches
2527 "ruby-asciidoctor-pdf-support-prawn-svg-0_36.patch"))))
2528 (build-system ruby-build-system)
2529 (arguments
2530 (list
2531 #:test-target "spec"
2532 #:phases
2533 #~(modify-phases %standard-phases
2534 ;; The tests rely on the Gem being installed, so move the check
2535 ;; phase after the install phase.
2536 (delete 'check)
2537 (add-after 'install 'check
2538 (lambda* (#:key tests? #:allow-other-keys)
2539 (setenv "GEM_PATH" (string-append
2540 (getenv "GEM_PATH") ":"
2541 #$output "/lib/ruby/vendor_ruby"))
2542 (when tests?
2543 (invoke "rspec" "-t" "~visual" "-t" "~cli"
2544 "-t" "~network")))))))
2545 (native-inputs
2546 (list ruby-chunky-png
2547 ruby-coderay
2548 ruby-pdf-inspector
2549 ruby-rouge
2550 ruby-rspec))
2551 (propagated-inputs
2552 (list ruby-asciidoctor
2553 ruby-concurrent
2554 ruby-prawn
2555 ruby-prawn-icon
2556 ruby-prawn-svg
2557 ruby-prawn-table
2558 ruby-prawn-templates
2559 ruby-text-hyphen
2560 ruby-treetop
2561 ruby-ttfunk))
2562 (synopsis"AsciiDoc to Portable Document Format (PDF)} converter")
2563 (description "Asciidoctor PDF is an extension for Asciidoctor that
2564converts AsciiDoc documents to Portable Document Format (PDF) using the Prawn
2565PDF library. It has features such as:
2566@itemize
2567@item Direct AsciiDoc to PDF conversion
2568@item Configuration-driven theme (style and layout)
2569@item Scalable Vector Graphics (SVG) support
2570@item PDF document outline (i.e., bookmarks)
2571@item Table of contents page(s)
2572@item Document metadata (title, authors, subject, keywords, etc.)
2573@item Internal cross reference links
2574@item Syntax highlighting with Rouge, Pygments, or CodeRay
2575@item Page numbering
2576@item Customizable running content (header and footer)
2577@item
2578“Keep together” blocks (i.e., page breaks avoided in certain block content)
2579@item Orphaned section titles avoided
2580@item Autofit verbatim blocks (as permitted by base_font_size_min setting)
2581@item Table border settings honored
2582@item Font-based icons
2583@item Custom TrueType (TTF) fonts
2584@item Double-sided printing mode (margins alternate on recto and verso pages)
2585@end itemize")
2586 (home-page "https://asciidoctor.org/docs/asciidoctor-pdf")
2587 (license license:expat)))
2588
2589(define-public ruby-ast
2590 (package
2591 (name "ruby-ast")
2592 (version "2.4.2")
2593 (source
2594 (origin
2595 (method git-fetch) ;no test included in gem from v2.4.1
2596 (uri (git-reference
2597 (url "https://github.com/whitequark/ast")
2598 (commit (string-append "v" version))))
2599 (file-name (git-file-name name version))
2600 (sha256
2601 (base32
2602 "0vm94yml8rknr7z034vg6s3fpx6lml2prz9fn3hr67cx0143bb4h"))))
2603 (build-system ruby-build-system)
2604 (arguments
2605 '(#:phases
2606 (modify-phases %standard-phases
2607 (add-after 'unpack 'remove-coveralls-requirement
2608 (lambda _
2609 (substitute* "test/helper.rb"
2610 (("require 'coveralls'") "")
2611 (("Coveralls::SimpleCov::Formatter") ""))))
2612 (add-after 'extract-gemspec 'remove-unnecessary-requirements
2613 (lambda* (#:key inputs #:allow-other-keys)
2614 (substitute* "ast.gemspec"
2615 ((".*coveralls.*") "\n")
2616 (("%q<rest-client>.*") "%q<rest-client>.freeze, [\">= 0\"])\n")
2617 (("%q<mime-types>.*") "%q<mime-types>.freeze, [\">= 0\"])\n")
2618 (("%q<rake>.*") "%q<rake>.freeze, [\">= 0\"])\n")
2619 (("12\\.3") "13.0")))))))
2620 (native-inputs
2621 (list bundler
2622 ruby-bacon
2623 ruby-bacon-colored-output
2624 ruby-json-pure
2625 ruby-kramdown
2626 ruby-mime-types
2627 ruby-racc
2628 ruby-rest-client
2629 ruby-simplecov
2630 ruby-yard))
2631 (synopsis "Library for working with Abstract Syntax Trees")
2632 (description
2633 "@code{ast} is a Ruby library for working with Abstract Syntax Trees.
2634It does this through immutable data structures.")
2635 (home-page "https://whitequark.github.io/ast/")
2636 (license license:expat)))
2637
2638(define-public ruby-sporkmonger-rack-mount
2639 ;; Testing the addressable gem requires a newer commit than that released, so
2640 ;; use an up to date version.
2641 (let ((revision "1")
2642 (commit "076aa2c47d9a4c081f1e9bcb56a826a9e72bd5c3"))
2643 (package
2644 (name "ruby-sporkmonger-rack-mount")
2645 (version (git-version "0.8.3" revision commit))
2646 (source (origin
2647 (method git-fetch)
2648 (uri (git-reference
2649 (url "https://github.com/sporkmonger/rack-mount")
2650 (commit commit)))
2651 (file-name (git-file-name name version))
2652 (sha256
2653 (base32
2654 "1scx273g3xd93424x9lxc4zyvcp2niknbw5mkz6wkivpf7xsyxdq"))))
2655 (build-system ruby-build-system)
2656 (arguments
2657 ;; Tests currently fail so disable them.
2658 ;; https://github.com/sporkmonger/rack-mount/pull/1
2659 `(#:tests? #f))
2660 (propagated-inputs (list ruby-rack))
2661 (synopsis "Stackable dynamic tree based Rack router")
2662 (description
2663 "@code{Rack::Mount} supports Rack's @code{X-Cascade} convention to
2664continue trying routes if the response returns pass. This allows multiple
2665routes to be nested or stacked on top of each other.")
2666 (home-page "https://github.com/sporkmonger/rack-mount")
2667 (license license:expat))))
2668
2669(define-public ruby-ci-reporter
2670 (package
2671 (name "ruby-ci-reporter")
2672 (version "2.1.0")
2673 (source (origin
2674 (method url-fetch)
2675 (uri (rubygems-uri "ci_reporter" version))
2676 (sha256
2677 (base32
2678 "0qcafasmjjr8a5gzr4k92ncm6h2943skwllhjzwz8spawdwc7dla"))))
2679 (build-system ruby-build-system)
2680 (arguments
2681 `(#:test-target "rspec"))
2682 (propagated-inputs
2683 (list ruby-builder ruby-rexml))
2684 (native-inputs
2685 (list bundler ruby-rspec))
2686 (synopsis "Generate XML reports of runs test")
2687 (description
2688 "@code{CI::Reporter} is an add-on to Ruby testing frameworks that allows
2689you to generate XML reports of your test runs. The resulting files can be
2690read by a continuous integration system that understands Ant's JUnit report
2691format.")
2692 (home-page "https://github.com/nicksieger/ci_reporter")
2693 (license license:expat)))
2694
2695(define-public ruby-console
2696 (package
2697 (name "ruby-console")
2698 (version "1.16.2")
2699 (source (origin
2700 (method url-fetch)
2701 (uri (rubygems-uri "console" version))
2702 (sha256
2703 (base32
2704 "0y1bv3kd1l9p0k5n3anvvjxdrcq113pyngz2g29i9mvdgbbx7kq2"))))
2705 (build-system ruby-build-system)
2706 ;; XXX: Disable test suite to avoid dependency cycles with ruby-samovar.
2707 (arguments (list #:tests? #f))
2708 (propagated-inputs (list ruby-fiber-local))
2709 (synopsis "Console logging library for Ruby")
2710 (description "This gem provides beautiful console logging for Ruby
2711applications. It implements fast, buffered log output and has the following
2712features:
2713@itemize
2714@item Thread safe global logger with per-fiber context
2715@item Carry along context with nested loggers
2716@item Enable/disable log levels per class
2717@item Detailed logging of exceptions
2718@item Beautiful logging to the terminal or structured logging using JSON.
2719@end itemize")
2720 (home-page "https://github.com/socketry/console")
2721 (license license:expat)))
2722
2723(define-public ruby-contracts
2724 (package
2725 (name "ruby-contracts")
2726 (version "0.17.2")
2727 (source
2728 (origin
2729 (method url-fetch)
2730 (uri (rubygems-uri "contracts" version))
2731 (sha256
2732 (base32
2733 "1sclvlwnlxfaj1595xd0rn3x3w0ljic3vqgnx6476lr7x8xbpbiv"))))
2734 (build-system ruby-build-system)
2735 (arguments
2736 (list
2737 #:test-target "spec"
2738 #:phases
2739 #~(modify-phases %standard-phases
2740 ;; Don't run or require rubocop, the code linting tool, as this is a
2741 ;; bit unnecessary.
2742 (add-after 'unpack 'dont-run-rubocop
2743 (lambda _
2744 (substitute* "Rakefile"
2745 ((".*rubocop.*") "")
2746 ((".*RuboCop.*") "")))))))
2747 (native-inputs
2748 (list ruby-rspec))
2749 (synopsis "Method contracts for Ruby")
2750 (description
2751 "This library provides contracts for Ruby. A contract describes the
2752correct inputs and output for a method, and will raise an error if a incorrect
2753value is found.")
2754 (home-page "https://github.com/egonSchiele/contracts.ruby")
2755 (license license:bsd-2)))
2756
2757(define-public ruby-crack
2758 (package
2759 (name "ruby-crack")
2760 (version "0.4.5")
2761 (source
2762 (origin
2763 (method url-fetch)
2764 (uri (rubygems-uri "crack" version))
2765 (sha256
2766 (base32
2767 "1cr1kfpw3vkhysvkk3wg7c54m75kd68mbm9rs5azdjdq57xid13r"))))
2768 (build-system ruby-build-system)
2769 (arguments
2770 `(#:phases
2771 (modify-phases %standard-phases
2772 (replace 'check
2773 (lambda* (#:key tests? #:allow-other-keys)
2774 (when tests?
2775 (for-each (lambda (file)
2776 (display file)(display "\n")
2777 (invoke "ruby" "-Ilib" "-Itest" "-rrubygems" file))
2778 (find-files "test" ".*rb$"))))))))
2779 (synopsis "Simple JSON and XML parsing for Ruby")
2780 (description
2781 "@code{crack} provides really simple JSON and XML parsing, extracted from
2782code in Merb and Rails.")
2783 (home-page "https://github.com/jnunemaker/crack")
2784 (license license:expat)))
2785
2786(define-public ruby-clamp
2787 (package
2788 (name "ruby-clamp")
2789 (version "1.3.2")
2790 (source (origin
2791 (method url-fetch)
2792 (uri (rubygems-uri "clamp" version))
2793 (sha256
2794 (base32
2795 "08m0syh06bhx8dqn560ivjg96l5cs5s3l9jh2szsnlcdcyl9jsjg"))))
2796 (build-system ruby-build-system)
2797 (arguments
2798 (list #:test-target "spec"
2799 #:phases #~(modify-phases %standard-phases
2800 (add-after 'unpack 'do-not-require-rubocop
2801 (lambda _
2802 (substitute* "Rakefile"
2803 (("require \"rubocop/rake_task\"")
2804 "")
2805 (("RuboCop::RakeTask.new")
2806 "")))))))
2807 (native-inputs (list ruby-rspec))
2808 (synopsis "Command-line parsing library for Ruby")
2809 (description "Clamp provides an object-model for command-line utilities.
2810It handles parsing of command-line options, and generation of usage help.")
2811 (home-page "https://github.com/mdub/clamp")
2812 (license license:expat)))
2813
2814(define-public ruby-cliver
2815 (package
2816 (name "ruby-cliver")
2817 (version "0.3.2")
2818 (source
2819 (origin
2820 (method url-fetch)
2821 (uri (rubygems-uri "cliver" version))
2822 (sha256
2823 (base32
2824 "096f4rj7virwvqxhkavy0v55rax10r4jqf8cymbvn4n631948xc7"))))
2825 (build-system ruby-build-system)
2826 (arguments
2827 '(#:phases
2828 (modify-phases %standard-phases
2829 ;; Avoid a incompatibility between rspec@2 and rake. Using rspec@3
2830 ;; would be nice, but the tests look to be incompatible:
2831 ;;
2832 ;; NoMethodError: undefined method `last_comment'
2833 (replace 'check
2834 (lambda* (#:key tests? #:allow-other-keys)
2835 (when tests?
2836 (invoke "rspec")))))))
2837 (native-inputs
2838 (list bundler ruby-rspec-2))
2839 (synopsis "Assertions for command-line dependencies in Ruby")
2840 (description
2841 "@code{cliver} provides a way to detect missing command-line
2842dependencies, including versions.")
2843 (home-page "https://github.com/yaauie/cliver")
2844 (license license:expat)))
2845
2846(define-public ruby-czmq-ffi-gen
2847 (package
2848 (name "ruby-czmq-ffi-gen")
2849 (version "0.13.0")
2850 (source
2851 (origin
2852 (method url-fetch)
2853 (uri (rubygems-uri "czmq-ffi-gen" version))
2854 (sha256
2855 (base32
2856 "1yf719dmf4mwks1hqdsy6i5kzfvlsha69sfnhb2fr2cgk2snbys3"))))
2857 (build-system ruby-build-system)
2858 (arguments
2859 '(#:tests? #f ;; Tests are not included in the release on rubygems.org
2860 #:phases
2861 (modify-phases %standard-phases
2862 (add-after 'unpack 'patch-lib_dirs
2863 (lambda* (#:key inputs #:allow-other-keys)
2864 (substitute* "lib/czmq-ffi-gen/czmq/ffi.rb"
2865 (("lib\\_dirs = \\[.*\\]")
2866 (string-append "lib_dirs = ['"
2867 (assoc-ref inputs "czmq") "/lib"
2868 "']")))
2869 (substitute* "lib/czmq-ffi-gen/libzmq.rb"
2870 (("lib\\_dirs = \\[.*\\]")
2871 (string-append "lib_dirs = ['"
2872 (assoc-ref inputs "zeromq") "/lib"
2873 "']"))))))))
2874 (inputs
2875 (list zeromq czmq))
2876 (propagated-inputs (list ruby-ffi))
2877 (synopsis "Low-level Ruby bindings for CZMQ (generated using zproject)")
2878 (description
2879 "These Ruby bindings are not intended to be directly used, but rather
2880used by higher level bindings like those provided by CZTop.")
2881 (home-page
2882 "https://github.com/paddor/czmq-ffi-gen")
2883 (license license:isc)))
2884
2885(define-public ruby-cztop
2886 (package
2887 (name "ruby-cztop")
2888 (version "0.12.2")
2889 (source
2890 (origin
2891 (method url-fetch)
2892 (uri (rubygems-uri "cztop" version))
2893 (sha256
2894 (base32
2895 "0yqbpaiw5d7f271d73lyrsh8xpx6n4zi6xqwfgi00dacxrq3s3fa"))))
2896 (build-system ruby-build-system)
2897 (arguments
2898 '(#:test-target "spec"
2899 #:phases
2900 (modify-phases %standard-phases
2901 (add-after 'unpack 'patch-lib_paths
2902 (lambda* (#:key inputs #:allow-other-keys)
2903 (substitute* "lib/cztop/poller/zmq.rb"
2904 (("lib\\_paths = \\[.*\\]")
2905 (string-append "lib_paths = ['"
2906 (assoc-ref inputs "zeromq") "/lib"
2907 "']"))))))))
2908 (native-inputs
2909 (list bundler ruby-rspec))
2910 (inputs
2911 (list zeromq))
2912 (propagated-inputs
2913 (list ruby-czmq-ffi-gen))
2914 (synopsis "CZMQ Ruby bindings")
2915 (description
2916 "CZMQ Ruby bindings, based on the generated low-level FFI bindings of
2917CZMQ. The focus of of CZTop is on being easy to use and providing first class
2918support for security mechanisms.")
2919 (home-page "https://github.com/paddor/cztop")
2920 (license license:isc)))
2921
2922(define-public ruby-saikuro-treemap
2923 (package
2924 (name "ruby-saikuro-treemap")
2925 (version "0.2.0")
2926 (source (origin
2927 (method url-fetch)
2928 (uri (rubygems-uri "saikuro_treemap" version))
2929 (sha256
2930 (base32
2931 "0w70nmh43mwfbpq20iindl61siqqr8acmf7p3m7n5ipd61c24950"))))
2932 (build-system ruby-build-system)
2933 ;; Some of the tests fail because the generated JSON has keys in a
2934 ;; different order. This is a problem with the test suite rather than any
2935 ;; of the involved libraries.
2936 (arguments `(#:tests? #f))
2937 (propagated-inputs
2938 (list ruby-json-pure ruby-atoulme-saikuro))
2939 (synopsis "Generate complexity treemap based on saikuro analysis")
2940 (description
2941 "This gem generates a treemap showing the complexity of Ruby code on
2942which it is run. It uses Saikuro under the covers to analyze Ruby code
2943complexity.")
2944 (home-page "https://github.com/ThoughtWorksStudios/saikuro_treemap")
2945 (license license:expat)))
2946
2947(define-public ruby-oauth2
2948 (package
2949 (name "ruby-oauth2")
2950 (version "2.0.9")
2951 (source (origin
2952 (method git-fetch) ;for tests
2953 (uri (git-reference
2954 (url "https://gitlab.com/oauth-xx/oauth2")
2955 (commit (string-append "v" version))))
2956 (file-name (git-file-name name version))
2957 (sha256
2958 (base32
2959 "191j1f4gjw8wij1jy2fvddgi8cv1mm0ki7v0b0795clix1avnj29"))))
2960 (build-system ruby-build-system)
2961 (arguments
2962 (list #:modules '((guix build ruby-build-system)
2963 (guix build utils)
2964 (ice-9 regex)
2965 (ice-9 textual-ports))
2966 #:phases
2967 #~(modify-phases %standard-phases
2968 (add-after 'unpack 'relax-requirements
2969 (lambda _
2970 (substitute* "Gemfile"
2971 (("^linting = .*")
2972 "linting = false\n")
2973 (("^coverage = .*")
2974 "coverage = false\n")
2975 (("^debug = .*")
2976 "debug = false\n"))
2977 (substitute* "spec/spec_helper.rb"
2978 (("^RUN_COVERAGE = .*")
2979 "RUN_COVERAGE = false\n")
2980 (("^ALL_FORMATTERS = .*")
2981 "ALL_FORMATTERS = false\n"))))
2982 (add-after 'unpack 'skip-problematic-test
2983 (lambda _
2984 ;; XXX: substitute* can't match 2 lines.
2985 (with-atomic-file-replacement
2986 "spec/oauth2/client_spec.rb"
2987 (lambda (in out)
2988 (let* ((pattern "\
2989 context 'when parse: :xml but response is JSON' do\n\
2990 it 'returns a configured AccessToken' do\n")
2991 (content (get-string-all in))
2992 (matched (string-match pattern content)))
2993 (if matched
2994 (format out "~a skip('fails on guix')~%~a"
2995 (string-take content (match:end matched))
2996 (string-drop content (match:end matched)))
2997 (display content out))))))))))
2998 (native-inputs
2999 (list bundler
3000 ruby-addressable
3001 ruby-backports
3002 ruby-rexml
3003 ruby-rspec-block-is-expected
3004 ruby-rspec-pending-for
3005 ruby-rspec-stubbed-env
3006 ruby-silent-stream))
3007 (propagated-inputs
3008 (list ruby-faraday
3009 ruby-jwt
3010 ruby-multi-xml
3011 ruby-rack
3012 ruby-snaky-hash
3013 ruby-version-gem))
3014 (synopsis "Ruby wrapper for the OAuth 2.0")
3015 (description
3016 "This package provides a Ruby wrapper for the OAuth 2.0 protocol built
3017with a similar style to the original OAuth spec.")
3018 (home-page "https://github.com/oauth-xx/oauth2")
3019 (license license:expat)))
3020
3021(define-public ruby-omniauth
3022 (package
3023 (name "ruby-omniauth")
3024 (version "2.1.1")
3025 (source (origin
3026 (method git-fetch) ;for tests
3027 (uri (git-reference
3028 (url "https://github.com/omniauth/omniauth")
3029 (commit (string-append "v" version))))
3030 (file-name (git-file-name name version))
3031 (sha256
3032 (base32
3033 "1mm7a4ll7ymamrbsl63yi6i34qpwmh2nh5a9kj961gja1iz2gyd1"))))
3034 (build-system ruby-build-system)
3035 (arguments
3036 (list #:phases
3037 #~(modify-phases %standard-phases
3038 (add-after 'unpack 'relax-requirements
3039 (lambda _
3040 (substitute* "spec/helper.rb"
3041 ;; This condition is used to require coveralls and
3042 ;; simplecov; override it to avoid these extraneous
3043 ;; requirements.
3044 (("RUBY_VERSION >= '1.9'")
3045 "false")
3046 (("require 'rack/freeze'") "")))))))
3047 (native-inputs (list ruby-rspec))
3048 (propagated-inputs (list ruby-hashie ruby-rack ruby-rack-test
3049 ruby-rack-protection))
3050 (synopsis "Generalized Rack framework for multiple-provider authentication")
3051 (description
3052 "This package provides a generalized Rack framework for multiple-provider
3053authentication.")
3054 (home-page "https://github.com/omniauth/omniauth")
3055 (license license:expat)))
3056
3057(define-public ruby-omniauth-oauth2
3058 (package
3059 (name "ruby-omniauth-oauth2")
3060 (version "1.8.0")
3061 (source
3062 (origin
3063 (method url-fetch)
3064 (uri (rubygems-uri "omniauth-oauth2" version))
3065 (sha256
3066 (base32
3067 "0y4y122xm8zgrxn5nnzwg6w39dnjss8pcq2ppbpx9qn7kiayky5j"))))
3068 (build-system ruby-build-system)
3069 (arguments
3070 (list #:phases
3071 #~(modify-phases %standard-phases
3072 (add-after 'unpack 'relax-requirements
3073 (lambda _
3074 (substitute* "spec/helper.rb"
3075 ;; This condition is used to require coveralls and
3076 ;; simplecov; override it to avoid these extraneous
3077 ;; requirements.
3078 (("RUBY_VERSION >= \"1.9\"")
3079 "false")))))))
3080 (propagated-inputs (list ruby-oauth2 ruby-omniauth))
3081 (native-inputs (list ruby-rspec ruby-rack-test ruby-webmock))
3082 (synopsis "Abstract OAuth2 strategy for OmniAuth")
3083 (description
3084 "This library provides a generic OAuth2 strategy for OmniAuth. It
3085doesn't provide a way to gather user information, so should be used as a
3086building block for authentication strategies.")
3087 (home-page "https://github.com/omniauth/omniauth-oauth2")
3088 (license license:expat)))
3089
3090(define-public ruby-open4
3091 (package
3092 (name "ruby-open4")
3093 (version "1.3.4")
3094 (source
3095 (origin
3096 (method url-fetch)
3097 (uri (rubygems-uri "open4" version))
3098 (sha256
3099 (base32
3100 "1cgls3f9dlrpil846q0w7h66vsc33jqn84nql4gcqkk221rh7px1"))))
3101 (build-system ruby-build-system)
3102 (arguments
3103 '(#:phases
3104 (modify-phases %standard-phases
3105 (add-after 'unpack 'patch
3106 (lambda _
3107 (substitute* "rakefile"
3108 ;; Update the Rakefile so it works
3109 (("-rubygems") "-rrubygems")
3110 (("Config") "RbConfig"))))
3111 (add-before 'check 'set-LIB
3112 (lambda _
3113 ;; This is used in the rakefile when running the tests
3114 (setenv "LIB" "open4"))))))
3115 (synopsis "Open child processes from Ruby and manage them easily")
3116 (description
3117 "@code{Open4} is a Ruby library to run child processes and manage their
3118input and output.")
3119 (home-page "https://github.com/ahoward/open4")
3120 (license license:ruby)))
3121
3122(define-public ruby-options
3123 (package
3124 (name "ruby-options")
3125 (version "2.3.2")
3126 (source
3127 (origin
3128 (method url-fetch)
3129 (uri (rubygems-uri "options" version))
3130 (sha256
3131 (base32
3132 "1s650nwnabx66w584m1cyw82icyym6hv5kzfsbp38cinkr5klh9j"))))
3133 (build-system ruby-build-system)
3134 (arguments
3135 '(#:tests? #f ;; TODO: NameError: uninitialized constant Config
3136 #:phases
3137 (modify-phases %standard-phases
3138 (add-before 'check 'set-LIB
3139 (lambda _
3140 ;; This is used in the Rakefile, and setting it avoids an issue
3141 ;; with running the tests.
3142 (setenv "LIB" "options"))))))
3143 (synopsis "Ruby library to parse options from *args cleanly")
3144 (description
3145 "The @code{options} library helps with parsing keyword options in Ruby
3146functions.")
3147 (home-page "https://github.com/ahoward/options")
3148 (license license:ruby)))
3149
3150(define-public ruby-erubi
3151 (package
3152 (name "ruby-erubi")
3153 (version "1.11.0")
3154 (source
3155 (origin
3156 (method git-fetch)
3157 (uri (git-reference
3158 (url "https://github.com/jeremyevans/erubi")
3159 (commit version)))
3160 (file-name (git-file-name name version))
3161 (sha256
3162 (base32 "0y4qskz260fjwbnjps5z5yygjwgh6ds0f97lfa9gsmh6zqa1lvvx"))))
3163 (build-system ruby-build-system)
3164 (arguments
3165 (list #:test-target "spec"))
3166 (native-inputs (list ruby-minitest
3167 ruby-minitest-global-expectations))
3168 (synopsis "ERB template engine for Ruby")
3169 (description
3170 "Erubi is a ERB template engine for Ruby. It is a simplified fork of
3171Erubis")
3172 (home-page "https://github.com/jeremyevans/erubi")
3173 (license license:expat)))
3174
3175(define-public ruby-erubis
3176 (package
3177 (name "ruby-erubis")
3178 (version "2.7.0")
3179 (source
3180 (origin
3181 (method url-fetch)
3182 (uri (rubygems-uri "erubis" version))
3183 (sha256
3184 (base32
3185 "1fj827xqjs91yqsydf0zmfyw9p4l2jz5yikg3mppz6d7fi8kyrb3"))))
3186 (build-system ruby-build-system)
3187 (arguments
3188 '(#:tests? #f)) ; tests do not run properly with Ruby 2.0
3189 (synopsis "Implementation of embedded Ruby (eRuby)")
3190 (description
3191 "Erubis is a fast implementation of embedded Ruby (eRuby) with several
3192features such as multi-language support, auto escaping, auto trimming spaces
3193around @code{<% %>}, a changeable embedded pattern, and Ruby on Rails
3194support.")
3195 (home-page "http://www.kuwata-lab.com/erubis/")
3196 (license license:expat)))
3197
3198(define-public ruby-ethon
3199 (package
3200 (name "ruby-ethon")
3201 (version "0.12.0")
3202 (source
3203 (origin
3204 (method url-fetch)
3205 (uri (rubygems-uri "ethon" version))
3206 (sha256
3207 (base32
3208 "0gggrgkcq839mamx7a8jbnp2h7x2ykfn34ixwskwb0lzx2ak17g9"))))
3209 (build-system ruby-build-system)
3210 (arguments
3211 (list
3212 #:tests? #f ; no included tests
3213 #:phases
3214 #~(modify-phases %standard-phases
3215 (add-after 'unpack 'libcurl-use-absolute-reference
3216 (lambda* (#:key inputs #:allow-other-keys)
3217 (substitute* "lib/ethon/curls/settings.rb"
3218 (("libcurl', 'libcurl\\.so\\.4")
3219 (search-input-file inputs "/lib/libcurl.so"))))))))
3220 (inputs
3221 (list curl))
3222 (propagated-inputs
3223 (list ruby-ffi))
3224 (synopsis "Very lightweight @code{libcurl} wrapper")
3225 (description
3226 "Ethon is a very basic @code{libcurl} wrapper using ffi.")
3227 (home-page "https://github.com/typhoeus/ethon")
3228 (license license:expat)))
3229
3230(define-public ruby-execjs
3231 (package
3232 (name "ruby-execjs")
3233 (version "2.7.0")
3234 (source
3235 (origin
3236 ;; fetch from github as the gem does not contain testing code
3237 (method git-fetch)
3238 (uri (git-reference
3239 (url "https://github.com/rails/execjs")
3240 (commit (string-append "v" version))))
3241 (file-name (git-file-name name version))
3242 (sha256
3243 (base32
3244 "0c0vd2mmqq3ar4plbwi2wsbr31vn4h45i19r5km66skydnnbp1y6"))))
3245 (build-system ruby-build-system)
3246 (native-inputs
3247 (list bundler
3248 ;; The test suite tests all the available backends. Currently, this just
3249 ;; means the node backend.
3250 ;;
3251 ;; PASSED: test:node
3252 ;; SKIPPED: test:duktape, ;; test:javascriptcore, test:jscript,
3253 ;; test:miniracer, test:rubyracer, ;; test:rubyrhino, test:v8
3254 node-lts))
3255 (synopsis "Run JavaScript code from Ruby")
3256 (description
3257 "ExecJS lets you run JavaScript code from Ruby. It automatically picks a
3258runtime to evaluate your JavaScript program, then returns the result to you as
3259a Ruby object.")
3260 (home-page "https://github.com/rails/execjs")
3261 (license license:expat)))
3262
3263(define-public ruby-fakefs
3264 (package
3265 (name "ruby-fakefs")
3266 (version "2.8.0")
3267 (home-page "https://github.com/fakefs/fakefs")
3268 (source (origin
3269 ;; The Rubygems release does not contain tests.
3270 (method git-fetch)
3271 (uri (git-reference
3272 (url home-page)
3273 (commit (string-append "v" version))))
3274 (file-name (git-file-name name version))
3275 (sha256
3276 (base32
3277 "0a3vq6cllml279j77hxipmbln31pjw6di3zdgpzqvhqgazv55v10"))))
3278 (build-system ruby-build-system)
3279 (arguments
3280 '(#:phases (modify-phases %standard-phases
3281 (replace 'replace-git-ls-files
3282 (lambda _
3283 (substitute* "fakefs.gemspec"
3284 (("`git ls-files lib README.md LICENSE`")
3285 "`find lib README.md LICENSE -type f | sort`"))))
3286 (add-before 'check 'remove-version-constraints
3287 (lambda _
3288 ;; Drop hard version requirements for test dependencies.
3289 (substitute* "fakefs.gemspec"
3290 (("(.*add_development_dependency .*), .*" _ dep)
3291 (string-append dep "\n"))))))))
3292 (native-inputs
3293 (list ruby-bump ruby-maxitest ruby-pry ruby-rubocop ruby-rspec))
3294 (synopsis "Fake file system for Ruby")
3295 (description
3296 "This package provides a fake file system for use in test suites. It
3297avoids the need for manually creating temporary directories, or dealing
3298with platform intricacies in @code{File} and @code{FileUtils}.")
3299 (license license:expat)))
3300
3301(define-public ruby-orderedhash
3302 (package
3303 (name "ruby-orderedhash")
3304 (version "0.0.6")
3305 (source (origin
3306 (method url-fetch)
3307 (uri (rubygems-uri "orderedhash" version))
3308 (sha256
3309 (base32
3310 "0fryy7f9jbpx33jq5m402yqj01zcg563k9fsxlqbhmq638p4bzd7"))))
3311 (build-system ruby-build-system)
3312 (arguments
3313 '(#:tests? #f)) ; no test suite
3314 (synopsis "Ruby library providing an order-preserving hash")
3315 (description "Orderedhash is a Ruby library providing a hash
3316implementation that preserves the order of items and features some array-like
3317extensions.")
3318 (home-page "http://codeforpeople.com/lib/ruby/orderedhash/")
3319 (license license:public-domain)))
3320
3321(define-public ruby-libxml
3322 (package
3323 (name "ruby-libxml")
3324 (version "3.0.0")
3325 (source
3326 (origin
3327 (method url-fetch)
3328 (uri (rubygems-uri "libxml-ruby" version))
3329 (sha256
3330 (base32
3331 "0xy8wmjwjcnv36zi042678ncjzpxvy351ccbv7mzkns2n3kxfp54"))))
3332 (build-system ruby-build-system)
3333 (inputs
3334 (list zlib libxml2))
3335 (arguments
3336 '(#:tests? #f ; test suite hangs for unknown reason
3337 #:gem-flags
3338 (list "--no-document" ; TODO: Re-enable when documentation
3339 ; generation works
3340 "--"
3341 (string-append "--with-xml2-include="
3342 (assoc-ref %build-inputs "libxml2")
3343 "/include/libxml2" ))))
3344 (synopsis "Ruby bindings for GNOME Libxml2")
3345 (description "The Libxml-Ruby project provides Ruby language bindings for
3346the GNOME Libxml2 XML toolkit.")
3347 (home-page "https://xml4r.github.com/libxml-ruby")
3348 (license license:expat)))
3349
3350(define-public ruby-lino
3351 (package
3352 (name "ruby-lino")
3353 (version "3.1.0")
3354 (source
3355 (origin
3356 (method url-fetch)
3357 (uri (rubygems-uri "lino" version))
3358 (sha256
3359 (base32
3360 "1zq9dza040fgjvr9imh7z2lgxrcyc5ac100rqimsnsf9bpfz3fsm"))))
3361 (build-system ruby-build-system)
3362 (arguments
3363 '(#:tests? #f)) ; No included tests
3364 (propagated-inputs
3365 (list ruby-hamster ruby-open4))
3366 (synopsis "Build and execute commands in Ruby")
3367 (description
3368 "@code{Lino} provides an interface to run external commands. It provides
3369an interface to add options as well as managing the standard input, output and
3370error streams.")
3371 (home-page "https://github.com/tobyclemson/lino")
3372 (license license:expat)))
3373
3374(define-public ruby-x25519
3375 (package
3376 (name "ruby-x25519")
3377 (version "1.0.10")
3378 (source (origin
3379 (method git-fetch)
3380 (uri (git-reference
3381 (url "https://github.com/RubyCrypto/x25519")
3382 (commit (string-append "v" version))))
3383 (file-name (git-file-name name version))
3384 (sha256
3385 (base32
3386 "1g0311ly32f6hfn4q5fvkbjbl2bhv1l9fx6s0kglxfsrwq51926y"))
3387 (patches
3388 (search-patches
3389 "ruby-x25519-automatic-fallback-non-x86_64.patch"))))
3390 (build-system ruby-build-system)
3391 (arguments
3392 (list #:test-target "spec"
3393 #:phases #~(modify-phases %standard-phases
3394 (add-after 'unpack 'remove-unnecessary-dependencies
3395 (lambda _
3396 (substitute* "Gemfile"
3397 ((".*rubocop.*")
3398 ""))
3399 (substitute* "Rakefile"
3400 (("require \"rubocop/rake_task\"")
3401 "")
3402 (("RuboCop::RakeTask.new")
3403 ""))))
3404 (add-before 'build 'compile
3405 (lambda _
3406 (invoke "rake" "compile"))))))
3407 (native-inputs (list ruby-rake-compiler ruby-rspec))
3408 (synopsis "Cryptography library for Ruby providing the X25519
3409Diffie-Hellman function")
3410 (description
3411 "The x25519 gem is an efficient public key cryptography library for
3412Ruby providing key exchange/agreement via the X25519 (as known as
3413Curve25519) Elliptic Curve Diffie-Hellman function as described in
3414@url{https://www.ietf.org/rfc/rfc7748.txt, RFC 7748}.")
3415 (home-page "https://github.com/RubyCrypto/x25519")
3416 (license license:bsd-3)))
3417
3418(define-public ruby-xml-simple
3419 (package
3420 (name "ruby-xml-simple")
3421 (version "1.1.5")
3422 (source (origin
3423 (method url-fetch)
3424 (uri (rubygems-uri "xml-simple" version))
3425 (sha256
3426 (base32
3427 "0xlqplda3fix5pcykzsyzwgnbamb3qrqkgbrhhfz2a2fxhrkvhw8"))))
3428 (build-system ruby-build-system)
3429 (arguments
3430 '(#:tests? #f)) ; no test suite
3431 (synopsis "Simple Ruby library for XML processing")
3432 (description "This library provides a simple API for XML processing in
3433Ruby.")
3434 (home-page "https://github.com/maik/xml-simple")
3435 (license license:ruby)))
3436
3437(define-public ruby-xpath
3438 (package
3439 (name "ruby-xpath")
3440 (version "3.2.0")
3441 (source (origin
3442 (method url-fetch)
3443 (uri (rubygems-uri "xpath" version))
3444 (sha256
3445 (base32
3446 "0bh8lk9hvlpn7vmi6h4hkcwjzvs2y0cmkk3yjjdr8fxvj6fsgzbd"))))
3447 (build-system ruby-build-system)
3448 (arguments (list #:phases #~(modify-phases %standard-phases
3449 (replace 'check
3450 (lambda* (#:key tests? #:allow-other-keys)
3451 (when tests?
3452 (invoke "rspec" "spec" )))))))
3453 (native-inputs (list ruby-pry ruby-rspec))
3454 (propagated-inputs (list ruby-nokogiri))
3455 (synopsis "Ruby DSL for generating XPath expressions")
3456 (description "XPath is a Ruby domain-specific language (DSL) for
3457generating XPath expressions.")
3458 (home-page "https://github.com/teamcapybara/xpath")
3459 (license license:expat)))
3460
3461(define-public ruby-thor
3462 (package
3463 (name "ruby-thor")
3464 (version "1.2.2")
3465 (source (origin
3466 ;; Pull from git because the gem has no tests.
3467 (method git-fetch)
3468 (uri (git-reference
3469 (url "https://github.com/rails/thor")
3470 (commit (string-append "v" version))))
3471 (file-name (git-file-name name version))
3472 (sha256
3473 (base32
3474 "1k3z2mlhaig5ycapjxwybb19z7ca0q1876i6csfmv2j0hf1hnc0z"))))
3475 (build-system ruby-build-system)
3476 (arguments
3477 (list
3478 #:phases
3479 #~(modify-phases %standard-phases
3480 (add-after 'unpack 'remove-coveralls-dependency
3481 (lambda _
3482 ;; Do not hook the test suite into the online coveralls service.
3483 (substitute* "Gemfile"
3484 ((".*coveralls.*") ""))
3485 (substitute* "spec/helper.rb"
3486 (("require \"coveralls\"") "")
3487 (("Coveralls::SimpleCov::Formatter") ""))))
3488 (add-after 'unpack 'disable-problematic-tests
3489 (lambda _
3490 ;; These tests attempt to check the git repository for
3491 ;; tabs vs spaces, double vs single quotes, etc, and
3492 ;; depend on the git checkout.
3493 (delete-file "spec/quality_spec.rb")
3494 (substitute* "spec/parser/options_spec.rb"
3495 ;; This test fails for unknown reasons (see:
3496 ;; https://github.com/rails/thor/issues/814).
3497 (("it \"raises an error for unknown switches" all)
3498 (string-append "x" all)))))
3499 (replace 'check
3500 (lambda* (#:key tests? #:allow-other-keys)
3501 (when tests?
3502 (invoke "rspec" "spec" )))))))
3503 (native-inputs (list ruby-rspec ruby-simplecov ruby-webmock))
3504 (synopsis "Ruby toolkit for building command-line interfaces")
3505 (description "Thor is a toolkit for building powerful command-line
3506interfaces.")
3507 (home-page "http://whatisthor.com/")
3508 (license license:expat)))
3509
3510(define-public ruby-lumberjack
3511 (package
3512 (name "ruby-lumberjack")
3513 (version "1.0.13")
3514 (source (origin
3515 (method url-fetch)
3516 (uri (rubygems-uri "lumberjack" version))
3517 (sha256
3518 (base32
3519 "06im7gcg42x77yhz2w5da2ly9xz0n0c36y5ks7xs53v0l9g0vf5n"))))
3520 (build-system ruby-build-system)
3521 (native-inputs
3522 (list ruby-rspec ruby-timecop))
3523 (synopsis "Logging utility library for Ruby")
3524 (description "Lumberjack is a simple logging utility that can be a drop in
3525replacement for Logger or ActiveSupport::BufferedLogger. It provides support
3526for automatically rolling log files even with multiple processes writing the
3527same log file.")
3528 (home-page "https://github.com/bdurand/lumberjack")
3529 (license license:expat)))
3530
3531(define-public ruby-rbnacl
3532 (package
3533 (name "ruby-rbnacl")
3534 (version "7.1.1")
3535 (source (origin
3536 (method url-fetch)
3537 (uri (rubygems-uri "rbnacl" version))
3538 (sha256
3539 (base32
3540 "0y8yzianlkc9w6sbqy8iy8l0yym0y6x7p5rjflkfixq76fqmhvzk"))))
3541 (build-system ruby-build-system)
3542 (arguments
3543 (list
3544 #:phases
3545 #~(modify-phases %standard-phases
3546 (add-after 'unpack 'remove-unnecessary-dependencies
3547 (lambda _
3548 ;; Coveralls relates to a network service, and Rubocop to code
3549 ;; linting and both are unnecessary to run the tests
3550 (substitute* "Gemfile"
3551 ((".*rubocop.*")
3552 "\n")
3553 ((".*guard-rspec.*")
3554 "\n")
3555 ((".*coveralls.*")
3556 "\n"))
3557 (substitute* "spec/spec_helper.rb"
3558 (("require \"coveralls\"")
3559 "")
3560 (("Coveralls.wear!")
3561 ""))))
3562 (add-after 'unpack 'use-libsodium-from-store
3563 (lambda* (#:key inputs #:allow-other-keys)
3564 (substitute* '("lib/rbnacl/init.rb"
3565 "lib/rbnacl/sodium.rb")
3566 (("ffi_lib \\[.+\\]")
3567 (string-append "ffi_lib [\""
3568 (assoc-ref inputs "libsodium")
3569 "/lib/libsodium.so" "\"]")))))
3570 ;; Run Rspec directly to avoid the Rubocop dependency in the
3571 ;; Rakefile
3572 (replace 'check
3573 (lambda* (#:key tests? #:allow-other-keys)
3574 (when tests?
3575 (invoke "rspec")))))))
3576 (propagated-inputs (list ruby-ffi))
3577 (inputs (list libsodium))
3578 (native-inputs (list bundler ruby-rspec))
3579 (synopsis "Ruby FFI binding to libsodium")
3580 (description
3581 "This package provides Ruby FFI bindings to the Networking and
3582Cryptography (NaCl) library, also known as libsodium. This provides a
3583high-level toolkit for building cryptographic systems and protocols.")
3584 (home-page "https://github.com/RubyCrypto/rbnacl")
3585 (license license:expat)))
3586
3587(define-public ruby-rbtree
3588 (package
3589 (name "ruby-rbtree")
3590 (version "0.4.6")
3591 (source (origin
3592 (method url-fetch)
3593 (uri (rubygems-uri "rbtree" version))
3594 (sha256
3595 (base32
3596 "1z0h1x7fpkzxamnvbw1nry64qd6n0nqkwprfair29z94kd3a9vhl"))))
3597 (build-system ruby-build-system)
3598 (arguments
3599 (list
3600 #:phases
3601 #~(modify-phases %standard-phases
3602 (add-before 'build 'extconf
3603 (lambda _
3604 (invoke "ruby" "extconf.rb")
3605 (invoke "make" "install" (string-append "prefix=" #$output))))
3606 (replace 'check
3607 (lambda* (#:key tests? #:allow-other-keys)
3608 (when tests?
3609 (invoke "ruby" "-I." "test.rb")))))))
3610 (synopsis "Ruby implementation of a sorted associative collection")
3611 (description
3612 "This package provides a RBTree is a sorted associative collection that
3613is implemented with a Red-Black Tree. It maps keys to values like a Hash, but
3614maintains its elements in ascending key order. The interface is the almost
3615identical to that of Hash.")
3616 (home-page "http://rbtree.rubyforge.org/")
3617 (license license:expat)))
3618
3619(define-public ruby-rgl
3620 (package
3621 (name "ruby-rgl")
3622 (version "0.6.6")
3623 (source (origin
3624 (method url-fetch)
3625 (uri (rubygems-uri "rgl" version))
3626 (sha256
3627 (base32
3628 "0dji1k9knrf8cxm5psd3pgd9i8f7cfq182jwjpi1pwxw15axf496"))))
3629 (build-system ruby-build-system)
3630 (arguments
3631 (list
3632 #:phases
3633 #~(modify-phases %standard-phases
3634 (add-after 'unpack 'remove-unnecessary-dependencies
3635 (lambda _
3636 (substitute* "Gemfile"
3637 ;; Caring about coverage is a not a packager's task but a
3638 ;; developer's
3639 ;;(("gem \"simplecov\"") "")
3640 ;; CodeClimate is an online service, and is unnecessary for
3641 ;; running the tests
3642 (("gem \"codeclimate-test-reporter\", .*") "\n")))))))
3643 (native-inputs (list ruby-test-unit ruby-simplecov ruby-yard graphviz-minimal))
3644 (propagated-inputs (list ruby-pairing-heap ruby-rexml ruby-stream))
3645 (synopsis "Framework for graph data structures and algorithms")
3646 (description "RGL is a framework for graph data structures and algorithms.
3647The design of the library is much influenced by the Boost Graph Library (BGL)
3648which is written in C++.")
3649 (home-page "https://github.com/monora/rgl")
3650 (license license:bsd-2)))
3651
3652(define-public ruby-hkdf
3653 (package
3654 (name "ruby-hkdf")
3655 (version "1.0.0")
3656 (source
3657 (origin
3658 (method git-fetch)
3659 (uri (git-reference
3660 (url "https://github.com/jtdowney/hkdf")
3661 (commit (string-append "v" version))))
3662 (file-name (git-file-name name version))
3663 (sha256
3664 (base32
3665 "1xqwdmxfnhagivwgb5v9ilwpb4jxlsqwj7pnj43d65zzg5m8p9r5"))))
3666 (build-system ruby-build-system)
3667 (arguments
3668 `(#:test-target "default"))
3669 (native-inputs
3670 (list ruby-rspec))
3671 (synopsis "HMAC-based Key Derivation Function")
3672 (description
3673 "This package provides a Ruby implementation of RFC5869: @acronym{HKDF,
3674HMAC-based Extract-and-Expand Key Derivation Function}. The goal of HKDF is to
3675take some source key material and generate suitable cryptographic keys from it.")
3676 (home-page "https://github.com/jtdowney/hkdf")
3677 (license license:expat)))
3678
3679(define-public ruby-nenv
3680 (package
3681 (name "ruby-nenv")
3682 (version "0.3.0")
3683 (source (origin
3684 (method url-fetch)
3685 (uri (rubygems-uri "nenv" version))
3686 (sha256
3687 (base32
3688 "0r97jzknll9bhd8yyg2bngnnkj8rjhal667n7d32h8h7ny7nvpnr"))))
3689 (build-system ruby-build-system)
3690 (arguments
3691 `(#:tests? #f)) ; no tests included
3692 (native-inputs
3693 (list ruby-rspec bundler))
3694 (synopsis "Ruby interface for modifying the environment")
3695 (description "Nenv provides a convenient wrapper for Ruby's ENV to modify
3696and inspect the environment.")
3697 (home-page "https://github.com/e2/nenv")
3698 (license license:expat)))
3699
3700(define-public ruby-ptools
3701 (package
3702 (name "ruby-ptools")
3703 (version "1.5.0")
3704 (source (origin
3705 (method url-fetch)
3706 (uri (rubygems-uri "ptools" version))
3707 (sha256
3708 (base32
3709 "0damllbshkxycrwjv80sz78h76dw7r9z54d17mb5cbha1daq9q2d"))))
3710 (build-system ruby-build-system)
3711 (arguments
3712 (list
3713 #:test-target "spec:all"
3714 #:phases
3715 #~(modify-phases %standard-phases
3716 (add-after 'unpack 'patch
3717 (lambda _
3718 (substitute* "Rakefile"
3719 ;; Don't require rubocop
3720 (("require 'rubocop/rake_task'") "")
3721 (("RuboCop::RakeTask.new") "")
3722 ;; Do not attempt to sign the gem.
3723 (("spec\\.signing_key = .*") ""))
3724
3725 (substitute* "spec/binary_spec.rb"
3726 (("/bin/ls") (which "ls"))
3727 (("/bin/cat") (which "cat"))
3728 (("/bin/chmod") (which "chmod"))
3729 (("/bin/df") (which "df"))))))))
3730 (native-inputs
3731 (list ruby-rspec))
3732 (synopsis "Extra methods for Ruby's @code{File} class")
3733 (description
3734 "The @dfn{ptools} (power tools) library extends Ruby's core @code{File}
3735class with many additional methods modelled after common POSIX tools, such as
3736@code{File.which} for finding executables, @code{File.tail} to print the last
3737lines of a file, @code{File.wc} to count words, and so on.")
3738 (home-page "https://github.com/djberg96/ptools")
3739 (license license:artistic2.0)))
3740
3741(define-public ruby-permutation
3742 (package
3743 (name "ruby-permutation")
3744 (version "0.1.8")
3745 (source (origin
3746 (method url-fetch)
3747 (uri (rubygems-uri "permutation" version))
3748 (sha256
3749 (base32
3750 "13crwk2vfbzv99czva7881027dbcnidihmvx2jc58z2vm3bp9sl8"))))
3751 (build-system ruby-build-system)
3752 (arguments
3753 `(#:phases
3754 (modify-phases %standard-phases
3755 (add-after 'unpack 'fix-rakefile
3756 (lambda _
3757 (substitute* "Rakefile"
3758 (("require 'rake/gempackagetask'")
3759 "require 'rubygems/package_task'")
3760 (("include Config") ""))))
3761 (replace 'check
3762 (lambda _
3763 (invoke "ruby" "-Ilib" "test/test.rb"))))))
3764 (synopsis "Library to perform operations with sequence permutations")
3765 (description "This package provides a Ruby library to perform different
3766operations with permutations of sequences, such as strings and arrays.")
3767 (home-page "https://flori.github.io/permutation")
3768 (license license:gpl2))) ; GPL 2 only
3769
3770(define-public ruby-shellany
3771 (package
3772 (name "ruby-shellany")
3773 (version "0.0.1")
3774 (source (origin
3775 (method url-fetch)
3776 (uri (rubygems-uri "shellany" version))
3777 (sha256
3778 (base32
3779 "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf"))))
3780 (build-system ruby-build-system)
3781 (arguments
3782 `(#:test-target "default"
3783 #:phases
3784 (modify-phases %standard-phases
3785 (add-after 'unpack 'fix-version-test
3786 (lambda _
3787 (substitute* "spec/shellany_spec.rb"
3788 (("^RSpec") "require \"shellany\"\nRSpec")))))))
3789 (native-inputs
3790 (list ruby-rspec ruby-nenv bundler))
3791 (synopsis "Capture command output")
3792 (description "Shellany is a Ruby library providing functions to capture
3793the output produced by running shell commands.")
3794 (home-page "https://rubygems.org/gems/shellany")
3795 (license license:expat)))
3796
3797(define-public ruby-notiffany
3798 (package
3799 (name "ruby-notiffany")
3800 (version "0.1.3")
3801 (source (origin
3802 (method url-fetch)
3803 (uri (rubygems-uri "notiffany" version))
3804 (sha256
3805 (base32
3806 "0f47h3bmg1apr4x51szqfv3rh2vq58z3grh4w02cp3bzbdh6jxnk"))))
3807 (build-system ruby-build-system)
3808 ;; Tests are not included in the gem.
3809 (arguments `(#:tests? #f))
3810 (propagated-inputs
3811 (list ruby-shellany ruby-nenv))
3812 (native-inputs
3813 (list bundler))
3814 (synopsis "Wrapper library for notification libraries")
3815 (description "Notiffany is a Ruby wrapper library for notification
3816libraries such as Libnotify.")
3817 (home-page "https://github.com/guard/notiffany")
3818 (license license:expat)))
3819
3820(define-public ruby-forking-test-runner
3821 (package
3822 (name "ruby-forking-test-runner")
3823 (version "1.6.0")
3824 (home-page "https://github.com/grosser/forking_test_runner")
3825 (source (origin
3826 (method git-fetch)
3827 (uri (git-reference (url home-page)
3828 (commit (string-append "v" version))))
3829 (file-name (git-file-name name version))
3830 (sha256
3831 (base32
3832 "1mrglzkj2nrgisccf2f30zbfmcs0awv1g3lw994b2az90fl39x8m"))))
3833 (build-system ruby-build-system)
3834 (arguments
3835 '(#:test-target "spec"
3836 ;; FIXME: ActiveRecord depends on sqlite3 1.3.6, but Guix has
3837 ;; 1.4.1, which in turn breaks the tests that use ActiveRecord.
3838 #:tests? #f
3839 #:phases (modify-phases %standard-phases
3840 (replace 'replace-git-ls-files
3841 (lambda _
3842 (substitute* "forking_test_runner.gemspec"
3843 (("`git ls-files lib/ bin/ MIT-LICENSE`")
3844 "`find lib/ bin/ MIT-LICENSE -type f | sort`"))))
3845 (add-before 'check 'remove-version-constraints
3846 (lambda _
3847 ;; Ignore hard coded version constraints for the tests.
3848 (delete-file "Gemfile.lock")))
3849 (add-before 'check 'set-HOME
3850 (lambda _
3851 ;; Many tests invoke Bundler, and fails when Bundler
3852 ;; warns that /homeless-shelter does not exist.
3853 (setenv "HOME" "/tmp"))))))
3854 (native-inputs
3855 (list ruby-activerecord ruby-bump ruby-rspec ruby-sqlite3 ruby-wwtd))
3856 (propagated-inputs
3857 (list ruby-parallel-tests))
3858 (synopsis "Run every test in a fork")
3859 (description
3860 "This package is a wrapper around @code{parallel_tests} that runs every
3861test in a fork to avoid pollution and get clean output per test.")
3862 (license license:expat)))
3863
3864(define-public ruby-formatador
3865 (package
3866 (name "ruby-formatador")
3867 (version "0.2.5")
3868 (source (origin
3869 (method url-fetch)
3870 (uri (rubygems-uri "formatador" version))
3871 (sha256
3872 (base32
3873 "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0"))))
3874 (build-system ruby-build-system)
3875 ;; Circular dependency: Tests require ruby-shindo, which requires
3876 ;; ruby-formatador at runtime.
3877 (arguments `(#:tests? #f))
3878 (synopsis "Ruby library to format text on stdout")
3879 (description "Formatador is a Ruby library to format text printed to the
3880standard output stream.")
3881 (home-page "https://github.com/geemus/formatador")
3882 (license license:expat)))
3883
3884(define-public ruby-fuubar
3885 (package
3886 (name "ruby-fuubar")
3887 (version "2.3.2")
3888 (source
3889 (origin
3890 ;; Fetch from the git repository, as the gem package doesn't include
3891 ;; the tests.
3892 (method git-fetch)
3893 (uri (git-reference
3894 (url "https://github.com/thekompanee/fuubar")
3895 (commit (string-append "releases/v" version))))
3896 (file-name (git-file-name name version))
3897 (sha256
3898 (base32
3899 "0jm1x2xp13csbnadixaikj7mlkp5yk4byx51npm56zi13izp7259"))))
3900 (build-system ruby-build-system)
3901 (arguments
3902 '(;; TODO: Some tests fail, unsure why.
3903 ;; 21 examples, 7 failures
3904 #:tests? #f
3905 #:phases
3906 (modify-phases %standard-phases
3907 (add-before 'build 'delete-certificate
3908 (lambda _
3909 ;; Remove 's.cert_chain' as we do not build with a private key
3910 (substitute* "fuubar.gemspec"
3911 ((".*cert_chain.*") "")
3912 ((".*signing_key.*") ""))))
3913 (replace 'check
3914 (lambda* (#:key tests? #:allow-other-keys)
3915 (when tests?
3916 (invoke "rspec")))))))
3917 (native-inputs
3918 (list bundler))
3919 (propagated-inputs
3920 (list ruby-rspec-core ruby-progressbar))
3921 (synopsis "Fuubar is an RSpec formatter that uses a progress bar")
3922 (description
3923 "Fuubar is an RSpec formatter that uses a progress bar instead of a
3924string of letters and dots as feedback. It also stops on the first test
3925failure.")
3926 (home-page "https://github.com/thekompanee/fuubar")
3927 (license license:expat)))
3928
3929(define-public ruby-haml
3930 (package
3931 (name "ruby-haml")
3932 (version "5.0.4")
3933 (source
3934 (origin
3935 (method url-fetch)
3936 (uri (rubygems-uri "haml" version))
3937 (sha256
3938 (base32
3939 "1q0a9fvqh8kn6wm97fcks6qzbjd400bv8bx748w8v87m7p4klhac"))))
3940 (build-system ruby-build-system)
3941 (arguments
3942 '(#:tests? #f)) ; No included tests
3943 (propagated-inputs
3944 (list ruby-tilt ruby-temple))
3945 (synopsis "Haml is a Ruby library to generate HTML documents")
3946 (description
3947 "@acronym{Haml, HTML Abstraction Markup Language} is a layer on top of
3948HTML or XML that is designed to express the structure of documents using
3949indentation rather than closing tags. It was originally envisioned as a
3950plugin for Ruby on Rails, but it can function as a stand-alone templating
3951engine.")
3952 (home-page "https://haml.info/")
3953 (license license:expat)))
3954
3955(define-public ruby-hamster
3956 (package
3957 (name "ruby-hamster")
3958 (version "3.0.0")
3959 (source
3960 (origin
3961 (method url-fetch)
3962 (uri (rubygems-uri "hamster" version))
3963 (sha256
3964 (base32
3965 "1n1lsh96vnyc1pnzyd30f9prcsclmvmkdb3nm5aahnyizyiy6lar"))))
3966 (build-system ruby-build-system)
3967 (arguments
3968 (list
3969 ;; Only supports Ruby 2 currently
3970 #:ruby ruby-2.7
3971 #:phases
3972 #~(modify-phases %standard-phases
3973 (add-after 'unpack 'remove-unnecessary-dependencies
3974 (lambda _
3975 ;; pry is a debugging tool, and is unnecessary when running the
3976 ;; tests
3977 (substitute* "spec/lib/hamster/vector/insert_spec.rb"
3978 (("require 'pry'") ""))
3979 (substitute* "spec/spec_helper.rb"
3980 (("require \"pry\"") "")
3981 ;; CodeClimate is an online service, and is unnecessary for
3982 ;; running the tests
3983 (("require \"codeclimate-test-reporter\"") "")
3984 (("CodeClimate.*\n") ""))))
3985 ;; No Rakefile is included, so run rspec directly.
3986 (replace 'check
3987 (lambda* (#:key tests? #:allow-other-keys)
3988 (when tests?
3989 (invoke "ruby" (which "rspec"))))))))
3990 (propagated-inputs
3991 (list ruby-concurrent))
3992 (native-inputs
3993 (list ruby-rspec))
3994 (synopsis "Efficient, immutable, thread-safe collection classes for Ruby")
3995 (description
3996 "Hamster provides 6 persistent data structures: @code{Hash}, @code{Vector},
3997@code{Set}, @code{SortedSet}, @code{List}, and @code{Deque} (which works as an
3998immutable queue or stack).")
3999 (home-page "https://github.com/hamstergem/hamster")
4000 (license license:expat)))
4001
4002(define-public ruby-hashdiff
4003 (package
4004 (name "ruby-hashdiff")
4005 (version "1.0.1")
4006 (source
4007 (origin
4008 (method url-fetch)
4009 (uri (rubygems-uri "hashdiff" version))
4010 (sha256
4011 (base32
4012 "1nynpl0xbj0nphqx1qlmyggq58ms1phf5i03hk64wcc0a17x1m1c"))))
4013 (build-system ruby-build-system)
4014 (arguments
4015 '(#:phases
4016 (modify-phases %standard-phases
4017 ;; Run tests directly via rspec to avoid depending on rubocop.
4018 (replace 'check
4019 (lambda* (#:key tests? #:allow-other-keys)
4020 (when tests?
4021 (invoke "rspec")))))))
4022 (native-inputs
4023 (list bundler ruby-rspec-2))
4024 (synopsis "HashDiff computes the smallest difference between two hashes")
4025 (description
4026 "HashDiff is a Ruby library to compute the smallest difference between
4027two hashes.")
4028 (home-page "https://github.com/liufengyun/hashdiff")
4029 (license license:expat)))
4030
4031(define-public ruby-hydra-minimal
4032 ;; No releases yet.
4033 (let ((commit "a4cab705a8a281e4356cb6a05a1946443ad9d53b")
4034 (revision "1"))
4035 (package
4036 (name "ruby-hydra-minimal")
4037 (version (git-version "0.0.0" revision commit))
4038 (home-page "https://github.com/hyphenation/hydra")
4039 (source (origin
4040 (method git-fetch)
4041 (uri (git-reference (url home-page) (commit commit)))
4042 (file-name (git-file-name name version))
4043 ;; byebug is a non-essential debugging utility that brings in
4044 ;; many dependencies.
4045 (patches (search-patches "ruby-hydra-minimal-no-byebug.patch"))
4046 (sha256
4047 (base32
4048 "1swzab7i4cqk1bck7p5m3bh526jh0v6m9qq720r3270zbjc8x8z3"))))
4049 (build-system ruby-build-system)
4050 (arguments
4051 ;; Avoid rspec dependency.
4052 '(#:tests? #f))
4053 (synopsis "Ruby hyphenation patterns")
4054 (description
4055 "ruby-hydra-minimal is a Ruby library for working with hyphenation patterns.
4056It is a low-dependency variant of ruby-hydra.")
4057 (license license:expat))))
4058
4059;; Pinned variant for use by texlive
4060(define-public ruby-hydra-minimal/pinned
4061 (let ((commit "5abfa378743756ae4d9306cc134bcc482f5c9525")
4062 (revision "0"))
4063 (hidden-package
4064 (package
4065 (inherit ruby-hydra-minimal)
4066 (version (git-version "0.0" revision commit))
4067 (source (origin
4068 (method git-fetch)
4069 (uri (git-reference
4070 (url "https://github.com/hyphenation/hydra")
4071 (commit commit)))
4072 (file-name (git-file-name "ruby-hydra-minimal" version))
4073 ;; byebug is a non-essential debugging utility that brings in
4074 ;; many dependencies.
4075 (patches (search-patches "ruby-hydra-minimal-no-byebug.patch"))
4076 (sha256
4077 (base32
4078 "1cik398l2765y3d9sdhjzki3303hkry58ac6jlkiy7iy62nm529f"))))
4079 (arguments
4080 (list
4081 #:ruby ruby-2.7
4082 #:tests? #f))))))
4083
4084(define-public ruby-hydra
4085 (package
4086 (inherit ruby-hydra-minimal)
4087 (name "ruby-hydra")
4088 (arguments
4089 (list
4090 #:phases
4091 #~(modify-phases %standard-phases
4092 (add-after 'unpack 'make-files-writable
4093 (lambda _
4094 (for-each make-file-writable (find-files "."))))
4095 (replace 'check
4096 (lambda* (#:key tests? #:allow-other-keys)
4097 (when tests?
4098 (invoke "rspec")))))))
4099 (native-inputs
4100 (list ruby-rspec))
4101 (description
4102 "ruby-hydra is a Ruby library for working with hyphenation patterns.")))
4103
4104(define-public ruby-shindo
4105 (package
4106 (name "ruby-shindo")
4107 (version "0.3.11")
4108 (source (origin
4109 (method url-fetch)
4110 (uri (rubygems-uri "shindo" version))
4111 (sha256
4112 (base32
4113 "1wccg3a4g3agfyszipkdnbcgsazcfwdbz1gv51q8m17m9plvpzdp"))))
4114 (build-system ruby-build-system)
4115 (arguments
4116 (list
4117 #:test-target "tests"
4118 #:phases
4119 #~(modify-phases %standard-phases
4120 (add-after 'unpack 'fix-tests
4121 (lambda _
4122 (substitute* "tests/tests_helper.rb"
4123 (("-rrubygems") ""))))
4124 ;; Move the 'check phase to after 'install, to use installed shindo.
4125 (delete 'check)
4126 (add-after 'install 'configure-tests
4127 (lambda* (#:key tests? #:allow-other-keys)
4128 (when tests?
4129 (setenv "GEM_PATH"
4130 (string-append
4131 (getenv "GEM_PATH") ":"
4132 #$output "/lib/ruby/vendor_ruby"))
4133 (setenv "PATH"
4134 (string-append
4135 (getenv "PATH") ":" #$output "/bin")))))
4136 (add-after 'configure-tests 'check
4137 (assoc-ref %standard-phases 'check)))))
4138 (propagated-inputs
4139 (list ruby-formatador))
4140 (synopsis "Simple depth first Ruby testing")
4141 (description "Shindo is a simple depth first testing library for Ruby.")
4142 (home-page "https://github.com/geemus/shindo")
4143 (license license:expat)))
4144
4145(define-public ruby-rubygems-tasks
4146 (package
4147 (name "ruby-rubygems-tasks")
4148 (version "0.2.5")
4149 (source (origin
4150 (method url-fetch)
4151 (uri (rubygems-uri "rubygems-tasks" version))
4152 (sha256
4153 (base32
4154 "1x3sz3n2dlknd3v7w1mrq6f0ag6pwzhjvg7z29p75w3p42ma1gbx"))))
4155 (build-system ruby-build-system)
4156 ;; Tests need Internet access.
4157 (arguments `(#:tests? #f))
4158 (synopsis "Rake tasks for managing and releasing Ruby Gems")
4159 (description "Rubygems-task provides Rake tasks for managing and releasing
4160Ruby Gems.")
4161 (home-page "https://github.com/postmodern/rubygems-tasks")
4162 (license license:expat)))
4163
4164(define-public ruby-rubyzip
4165 (package
4166 (name "ruby-rubyzip")
4167 (version "2.3.2")
4168 (source (origin
4169 (method git-fetch)
4170 (uri (git-reference
4171 (url "https://github.com/rubyzip/rubyzip")
4172 (commit (string-append "v" version))))
4173 (file-name (git-file-name name version))
4174 (sha256
4175 (base32
4176 "03p8c990n6c1r4g64w0vv7z2iaswisl07l2f1lbh1s78cvmlmfxx"))))
4177 (build-system ruby-build-system)
4178 (arguments
4179 '(#:phases
4180 (modify-phases %standard-phases
4181 (add-after 'unpack 'disable-rubocop
4182 (lambda _
4183 (substitute* "Rakefile"
4184 (("require 'rubocop/rake_task'") "")
4185 (("RuboCop::RakeTask.new") ""))))
4186 (add-before 'check 'patch-tests
4187 (lambda* (#:key inputs #:allow-other-keys)
4188 (substitute* "test/gentestfiles.rb"
4189 (("/usr/bin/zip") (which "zip")))))
4190 (add-after 'patch-source-shebangs 'unpatch-some-source-shebangs
4191 (lambda _
4192 ;; The tests compare zipped files with data test files; since the
4193 ;; zip files do not have their shebangs patched, the data files
4194 ;; compared with their extracted version must also be left
4195 ;; un-patched.
4196 (substitute* (find-files "test/data" "\\.(txt|rb)$")
4197 (((which "ruby"))
4198 "/usr/bin/env ruby")))))))
4199 (native-inputs
4200 (list bundler ruby-simplecov zip unzip))
4201 (synopsis "Ruby module is for reading and writing zip files")
4202 (description
4203 "The rubyzip module provides ways to read from and create zip files.")
4204 (home-page "https://github.com/rubyzip/rubyzip")
4205 (license license:bsd-2)))
4206
4207(define-public ruby-silent-stream
4208 (package
4209 (name "ruby-silent-stream")
4210 (version "1.0.6")
4211 (source (origin
4212 (method url-fetch)
4213 (uri (rubygems-uri "silent_stream" version))
4214 (sha256
4215 (base32
4216 "10381fpvjzfjvhgfyv700607fpa29firgf52w5w5536m4fh6x63m"))))
4217 (build-system ruby-build-system)
4218 (synopsis "ActiveSupport stream silencing without ActiveSupport")
4219 (description "SilentStream is an extraction of some parts of
4220ActiveSupport's Kernel Reporting Core Extensions around silencing IO
4221streams.")
4222 (home-page "https://github.com/pboling/silent_stream")
4223 (license license:expat)))
4224
4225(define-public ruby-simplecov-html
4226 (package
4227 (name "ruby-simplecov-html")
4228 (version "0.12.3")
4229 (source (origin
4230 (method url-fetch)
4231 (uri (rubygems-uri "simplecov-html" version))
4232 (sha256
4233 (base32
4234 "0yx01bxa8pbf9ip4hagqkp5m0mqfnwnw2xk8kjraiywz4lrss6jb"))))
4235 (build-system ruby-build-system)
4236 (arguments `(#:tests? #f)) ; there are no tests
4237 (native-inputs
4238 (list bundler))
4239 (synopsis "Default HTML formatter for SimpleCov code coverage tool")
4240 (description "This package provides the default HTML formatter for
4241the SimpleCov code coverage tool for Ruby version 1.9 and above.")
4242 (home-page "https://github.com/simplecov-ruby/simplecov-html")
4243 (license license:expat)))
4244
4245(define-public ruby-simplecov-json-formatter
4246 (package
4247 (name "ruby-simplecov-json-formatter")
4248 (version "0.1.4")
4249 (source (origin
4250 (method url-fetch)
4251 (uri (rubygems-uri "simplecov_json_formatter" version))
4252 (sha256
4253 (base32
4254 "0a5l0733hj7sk51j81ykfmlk2vd5vaijlq9d5fn165yyx3xii52j"))))
4255 (build-system ruby-build-system)
4256 ;; The test suite is disabled because it requires simplecov, which
4257 ;; requires this, introducing a dependency cycle.
4258 (arguments (list #:tests? #f))
4259 (synopsis "JSON formatter for SimpleCov")
4260 (description "This package provides a JSON formatter for SimpleCov, the
4261Ruby code coverage tool.")
4262 (home-page
4263 "https://github.com/codeclimate-community/simplecov_json_formatter")
4264 (license license:expat)))
4265
4266(define-public ruby-simplecov
4267 (package
4268 (name "ruby-simplecov")
4269 (version "0.22.0")
4270 (source (origin
4271 (method url-fetch)
4272 (uri (rubygems-uri "simplecov" version))
4273 (sha256
4274 (base32
4275 "198kcbrjxhhzca19yrdcd6jjj9sb51aaic3b0sc3pwjghg3j49py"))))
4276 (build-system ruby-build-system)
4277 ;; Simplecov depends on rubocop for code style checking at build time.
4278 ;; Rubocop needs simplecov at build time.
4279 (arguments `(#:tests? #f))
4280 (propagated-inputs
4281 (list ruby-json
4282 ruby-docile
4283 ruby-simplecov-html
4284 ruby-simplecov-json-formatter))
4285 (synopsis "Code coverage framework for Ruby")
4286 (description "SimpleCov is a code coverage framework for Ruby with a
4287powerful configuration library and automatic merging of coverage across test
4288suites.")
4289 (home-page "https://github.com/simplecov-ruby/simplecov")
4290 (license license:expat)))
4291
4292(define-public ruby-simplecov-lcov
4293 (package
4294 (name "ruby-simplecov-lcov")
4295 (version "0.8.0")
4296 (source (origin
4297 (method url-fetch)
4298 (uri (rubygems-uri "simplecov-lcov" version))
4299 (sha256
4300 (base32
4301 "1h8kswnshgb9zidvc88f4zjy4gflgz3854sx9wrw8ppgnwfg6581"))))
4302 (build-system ruby-build-system)
4303 ;; The test suite fails half of its tests; it seems to rely on older
4304 ;; versions of simplecov, rspec, possibly others (see:
4305 ;; https://github.com/fortissimo1997/simplecov-lcov/issues/29).
4306 (arguments (list #:tests? #f
4307 #:test-target "spec"))
4308 (native-inputs
4309 (list ruby-activesupport
4310 ruby-coveralls
4311 ruby-rspec
4312 ruby-simplecov))
4313 (synopsis "SimpleCov formatter to generate a lcov style coverage")
4314 (description "This package provides a SimpleCov formatter to generate a
4315lcov-style coverage report.")
4316 (home-page "https://github.com/fortissimo1997/simplecov-lcov")
4317 (license license:expat)))
4318
4319(define-public ruby-snaky-hash
4320 (package
4321 (name "ruby-snaky-hash")
4322 (version "2.0.1")
4323 (source (origin
4324 (method git-fetch)
4325 (uri (git-reference ;for tests
4326 (url "https://gitlab.com/oauth-xx/snaky_hash")
4327 (commit (string-append "v" version))))
4328 (file-name (git-file-name name version))
4329 (sha256
4330 (base32
4331 "0zmixxzi2g2d75zii65bq037j4g67p25l6aqddbmmwizspsp5az6"))))
4332 (build-system ruby-build-system)
4333 (arguments
4334 (list #:phases #~(modify-phases %standard-phases
4335 (add-after 'unpack 'relax-requirements
4336 (lambda _
4337 (substitute* "Gemfile"
4338 (("^linting = .*")
4339 "linting = false\n")
4340 (("^coverage = .*")
4341 "coverage = false\n")
4342 (("^debug = .*")
4343 "debug = false\n"))
4344 (substitute* "spec/spec_helper.rb"
4345 (("^RUN_COVERAGE = .*")
4346 "RUN_COVERAGE = false\n")
4347 (("^ALL_FORMATTERS = .*")
4348 "ALL_FORMATTERS = false\n"))))
4349 (add-before 'build 'drop-signing-key-requirement
4350 (lambda _
4351 (substitute* "snaky_hash.gemspec"
4352 (("spec.signing_key =.*")
4353 "spec.signing_key = nil")))))))
4354 (native-inputs (list ruby-rspec ruby-rspec-block-is-expected))
4355 (propagated-inputs (list ruby-hashie ruby-version-gem))
4356 (synopsis "Hash keys and look-ups normalization Ruby library")
4357 (description "The SnakyHash Ruby library provides classes for normalizing
4358hash keys and look-ups, and a pseudo-object interface.")
4359 (home-page "https://gitlab.com/oauth-xx/snaky_hash")
4360 (license license:expat)))
4361
4362(define-public ruby-useragent
4363 (package
4364 (name "ruby-useragent")
4365 (version "0.16.10")
4366 (source (origin
4367 (method url-fetch)
4368 (uri (rubygems-uri "useragent" version))
4369 (sha256
4370 (base32
4371 "1fv5kvq494swy0p17h9qya9r50w15xsi9zmvhzb8gh55kq6ki50p"))))
4372 (build-system ruby-build-system)
4373 (arguments
4374 '(#:tests? #f)) ; no test suite
4375 (synopsis "HTTP user agent parser for Ruby")
4376 (description "UserAgent is a Ruby library that parses and compares HTTP
4377User Agents.")
4378 (home-page "https://github.com/gshutler/useragent")
4379 (license license:expat)))
4380
4381(define-public ruby-backports
4382 (package
4383 (name "ruby-backports")
4384 (version "3.11.4")
4385 (source
4386 (origin
4387 (method url-fetch)
4388 (uri (rubygems-uri "backports" version))
4389 (sha256
4390 (base32
4391 "1hshjxww2h7s0dk57njrygq4zpp0nlqrjfya7zwm27iq3rhc3y8g"))))
4392 (build-system ruby-build-system)
4393 (arguments
4394 '(;; TODO: This should be default, but there is one test failure
4395 #:test-target "all_spec"))
4396 (native-inputs
4397 (list ruby-mspec ruby-activesupport))
4398 (synopsis "Backports of the features in newer Ruby versions")
4399 (description
4400 "Backports enables more compatibility across Ruby versions by providing
4401backports of some features.")
4402 (home-page "https://github.com/marcandre/backports")
4403 (license license:expat)))
4404
4405(define-public ruby-bacon
4406 (package
4407 (name "ruby-bacon")
4408 (version "1.2.0")
4409 (source (origin
4410 (method url-fetch)
4411 (uri (rubygems-uri "bacon" version))
4412 (sha256
4413 (base32
4414 "1f06gdj77bmwzc1k5iragl1595hbn67yc7sqvs56ca8plrr2vmai"))))
4415 (build-system ruby-build-system)
4416 (synopsis "Small RSpec clone")
4417 (description "Bacon is a small RSpec clone providing all essential
4418features.")
4419 (home-page "https://github.com/chneukirchen/bacon")
4420 (license license:expat)))
4421
4422(define-public ruby-bacon-bits
4423 (package
4424 (name "ruby-bacon-bits")
4425 (version "0.1.0")
4426 (source
4427 (origin
4428 (method url-fetch)
4429 (uri (rubygems-uri "bacon-bits" version))
4430 (sha256
4431 (base32
4432 "1ghpj8ja94lhi8rgi872hqk4fd2amz2k7g9znd64z5dj7v6l0dmx"))))
4433 (build-system ruby-build-system)
4434 (arguments
4435 ;; No tests
4436 '(#:tests? #f))
4437 (propagated-inputs (list ruby-bacon))
4438 (synopsis "Extensions to Bacon, for disabling tests, before and after
4439blocks and more")
4440 (description
4441 "This extends the bacon testing framework with useful extensions to
4442disable tests, have before and after blocks that run once and more.")
4443 (home-page "https://github.com/cldwalker/bacon-bits")
4444 (license license:expat)))
4445
4446(define-public ruby-bacon-colored-output
4447 (package
4448 (name "ruby-bacon-colored-output")
4449 (version "1.1.1")
4450 (source
4451 (origin
4452 (method url-fetch)
4453 (uri (rubygems-uri "bacon-colored_output" version))
4454 (sha256
4455 (base32
4456 "1znyh3vkfdlmf19p3k4zip88ibym41dn5g4p4n5hmks2iznb7qpx"))))
4457 (build-system ruby-build-system)
4458 (arguments
4459 '(;; No included tests
4460 #:tests? #f))
4461 (propagated-inputs
4462 (list ruby-bacon))
4463 (synopsis "Colored output for Bacon test framework")
4464 (description
4465 "This package adds color through ANSI escape codes to Bacon test
4466output.")
4467 (home-page "https://github.com/whitequark/bacon-colored_output")
4468 (license license:expat)))
4469
4470(define-public ruby-bake
4471 (package
4472 (name "ruby-bake")
4473 (version "0.18.2")
4474 (source (origin
4475 (method git-fetch) ;for tests
4476 (uri (git-reference
4477 (url "https://github.com/ioquatix/bake")
4478 (commit (string-append "v" version))))
4479 (file-name (git-file-name name version))
4480 (sha256
4481 (base32
4482 "19yi1fxzz9n580gig3p3j6nxbgcfcassa6b0q07jkqrzxdqn7xhn"))))
4483 (build-system ruby-build-system)
4484 (arguments
4485 (list #:phases
4486 #~(modify-phases %standard-phases
4487 (add-after 'unpack 'sanitize-dependencies
4488 (lambda _
4489 ;; These dependencies are not needed to build and run tests
4490 ;; and contain circular dependencies.
4491 (substitute* "gems.rb"
4492 ((".*'bake-modernize'.*") "")
4493 ((".*'bake-gem'.*") "")
4494 ((".*'bake-github-pages'.*") "")
4495 ((".*'utopia-project'.*") ""))))
4496 (add-before 'build 'drop-signing-key-requirement
4497 (lambda _
4498 (substitute* "bake.gemspec"
4499 (("spec.signing_key =.*")
4500 "spec.signing_key = nil"))))
4501 (replace 'check
4502 (lambda* (#:key tests? #:allow-other-keys)
4503 (when tests?
4504 (invoke "rspec")))))))
4505 (native-inputs (list ruby-covered ruby-rspec))
4506 (propagated-inputs (list ruby-samovar))
4507 (synopsis "Replacement for rake with a simpler syntax")
4508 (description "Bake is a task execution tool, inspired by Rake, but
4509codifying many of the use cases which are typically implemented in an ad-hoc
4510manner.")
4511 (home-page "https://github.com/ioquatix/bake")
4512 (license license:expat)))
4513
4514(define-public ruby-bake-test
4515 (package
4516 (name "ruby-bake-test")
4517 (version "0.2.0")
4518 (source (origin
4519 (method url-fetch)
4520 (uri (rubygems-uri "bake-test" version))
4521 (sha256
4522 (base32
4523 "1p6kfpncj0s4zyynrrq6c735jvh0dnwyv7kfqym4rpyka4f85qdp"))))
4524 (build-system ruby-build-system)
4525 ;; XXX: Disable the test suite to avoid a circular dependency with
4526 ;; ruby-sus.
4527 (arguments (list #:tests? #f))
4528 (propagated-inputs (list ruby-bake))
4529 (synopsis "Test suite automatic runner for Ruby")
4530 (description "@command{bake-test} automatically discovers how to run local
4531test suites for Ruby projects. It supports @command{rspec}, @command{sus}, as
4532well as @samp{rake}.")
4533 (home-page "https://github.com/ioquatix/bake-test")
4534 (license license:expat)))
4535
4536(define-public ruby-bake-test-external
4537 (package
4538 (name "ruby-bake-test-external")
4539 (version "0.3.2")
4540 (source (origin
4541 (method url-fetch)
4542 (uri (rubygems-uri "bake-test-external" version))
4543 (sha256
4544 (base32
4545 "0749xc7jkz1c5gsq1giwhrqy6s6xqm48bdvs414372881wki2jmh"))))
4546 (build-system ruby-build-system)
4547 ;; The test suite relies on git and network access to clone external
4548 ;; repositories.
4549 (arguments (list #:tests? #f))
4550 (propagated-inputs (list ruby-bake))
4551 (synopsis "Continuous integration extension for Bake")
4552 (description "Bake Test External adds a @samp{test:external} action to the
4553@command{bake} command to run the test suites of dependent projects to check
4554for breakage.")
4555 (home-page "https://github.com/ioquatix/bake-test-external")
4556 (license license:expat)))
4557
4558(define-public ruby-connection-pool
4559 (package
4560 (name "ruby-connection-pool")
4561 (version "2.4.1")
4562 (source (origin
4563 (method git-fetch)
4564 (uri (git-reference
4565 (url "https://github.com/mperham/connection_pool")
4566 (commit (string-append "v" version))))
4567 (file-name (git-file-name name version))
4568 (sha256
4569 (base32
4570 "1iijshb1n9xl5knvpzzx0vqlw7v7mskiw1cpfj1cmdmssavyhsx5"))))
4571 (build-system ruby-build-system)
4572 (arguments
4573 (list
4574 #:phases
4575 #~(modify-phases %standard-phases
4576 (add-after 'unpack 'patch
4577 (lambda _
4578 (substitute* "Rakefile"
4579 (("require \"standard/rake\"") "")
4580 ((":\"standard:fix\",") "")))))))
4581 (native-inputs
4582 (list bundler))
4583 (synopsis "Generic connection pool for Ruby")
4584 (description "Connection_pool provides a generic connection pooling
4585interface for Ruby programs.")
4586 (home-page "https://github.com/mperham/connection_pool")
4587 (license license:expat)))
4588
4589(define-public ruby-fast-gettext
4590 (package
4591 (name "ruby-fast-gettext")
4592 (version "4.1.0")
4593 (home-page "https://github.com/grosser/fast_gettext")
4594 (source (origin
4595 (method git-fetch)
4596 (uri (git-reference (url home-page)
4597 (commit (string-append "v" version))))
4598 (file-name (git-file-name name version))
4599 (sha256
4600 (base32
4601 "04p9s0r67xgvckab9ydb3fbnrc7g20p5c05z2zsacynlkp9x5jp9"))))
4602 (build-system ruby-build-system)
4603 (arguments
4604 (list
4605 #:test-target "spec"
4606 #:phases
4607 #~(modify-phases %standard-phases
4608 (add-before 'check 'remove-version-constraints
4609 (lambda _
4610 (delete-file "Gemfile.lock"))))))
4611 (native-inputs
4612 (list ;; For tests.
4613 ruby-activerecord
4614 ruby-activesupport
4615 ruby-bump
4616 ruby-forking-test-runner
4617 ruby-i18n
4618 ruby-rubocop
4619 ruby-rubocop-packaging
4620 ruby-rspec
4621 ruby-single-cov
4622 ruby-sqlite3
4623 ruby-wwtd))
4624 (synopsis "Fast implementation of @code{GetText}")
4625 (description
4626 "This package provides an alternative implementation of the Ruby
4627@code{GetText} library that is approximately 12x faster yet thread safe.")
4628 ;; Some parts are covered by the Ruby license, see file headers.
4629 (license (list license:expat license:ruby))))
4630
4631(define-public ruby-fiber-local
4632 (package
4633 (name "ruby-fiber-local")
4634 (version "1.0.0")
4635 (source (origin
4636 (method git-fetch)
4637 (uri (git-reference
4638 (url "https://github.com/socketry/fiber-local")
4639 (commit (string-append "v" version))))
4640 (file-name (git-file-name name version))
4641 (sha256
4642 (base32
4643 "0pp5b81h0lysdnphgprkixh1az0fkrgir5sbcp0mm8arxf3f8m90"))))
4644 (build-system ruby-build-system)
4645 (arguments
4646 (list #:phases
4647 #~(modify-phases %standard-phases
4648 (add-after 'extract-gemspec 'sanitize-dependencies
4649 (lambda _
4650 ;; This pulls in extraneous maintenance dependencies.
4651 (delete-file "gems.rb")
4652 ;; Depending on ruby-covered would introduce a dependency
4653 ;; cycle with it.
4654 (substitute* '("fiber-local.gemspec" "spec/spec_helper.rb")
4655 ((".*covered.*") ""))))
4656 (replace 'check
4657 (lambda* (#:key tests? #:allow-other-keys)
4658 (when tests?
4659 (invoke "rspec")))))))
4660 (native-inputs (list ruby-rspec))
4661 (synopsis "Ruby module to simplify fiber-local state management")
4662 (description "This package provides a class-level mixin to make managing
4663fiber-local state easy. It provides easy access to a fiber-local state from a
4664fiber, and defaults to a shared thread-local state.")
4665 (home-page "https://github.com/socketry/fiber-local")
4666 (license license:expat)))
4667
4668(define-public ruby-flores
4669 (let ((commit "92fded00b04b1e3d308edb7440d7b7ab2c89ab5e")
4670 (revision "0"))
4671 (package
4672 (name "ruby-flores")
4673 (version (git-version "0.0.8" revision commit))
4674 (source
4675 (origin
4676 (method git-fetch)
4677 (uri (git-reference
4678 (url "https://github.com/jordansissel/ruby-flores")
4679 (commit commit)))
4680 (sha256
4681 (base32 "0jvnw0jli2zzxklfk751vfbi4acf9lijppk67346j3b2qxqi8xms"))
4682 (patches
4683 (search-patches "ruby-flores-fix-deprecations.patch"))))
4684 (build-system ruby-build-system)
4685 (arguments
4686 (list #:phases
4687 #~(modify-phases %standard-phases
4688 (add-after 'unpack 'fix-gemspec
4689 (lambda _
4690 (substitute* "flores.gemspec"
4691 ;; Since this is not a git repository, do not call 'git'.
4692 (("git ls-files") "find . -type f |sort"))))
4693 (replace 'check
4694 (lambda* (#:key tests? #:allow-other-keys)
4695 (when tests?
4696 (invoke "ruby" (which "rspec"))))))))
4697 (native-inputs (list ruby-rspec ruby-simplecov))
4698 (synopsis "Fuzzing, randomization, and stress testing library")
4699 (description "Flores is a fuzzing, randomization, and stress library to
4700help tests uncover more bugs.")
4701 (home-page "https://github.com/jordansissel/ruby-flores")
4702 (license license:asl2.0))))
4703
4704(define-public ruby-ipaddr
4705 (package
4706 (name "ruby-ipaddr")
4707 (version "1.2.6")
4708 (source (origin
4709 (method git-fetch) ;for tests
4710 (uri (git-reference
4711 (url "https://github.com/ruby/ipaddr")
4712 (commit (string-append "v" version))))
4713 (file-name (git-file-name name version))
4714 (sha256
4715 (base32
4716 "0h3z8i1fa8s4gx48322fflhpkzghd4bmd9109hglsgdkic7b0dyp"))))
4717 (build-system ruby-build-system)
4718 (native-inputs (list ruby-test-unit-ruby-core))
4719 (synopsis "Manipulate IP addresses")
4720 (description "This package provides a set of methods to manipulate an IP
4721address. Both IPv4 and IPv6 are supported.")
4722 (home-page "https://github.com/ruby/ipaddr")
4723 (license license:bsd-2)))
4724
4725(define-public ruby-fake-ftp
4726 (package
4727 (name "ruby-fake-ftp")
4728 (version "0.3.0")
4729 (source (origin
4730 (method url-fetch)
4731 (uri (rubygems-uri "fake_ftp" version))
4732 (sha256
4733 (base32
4734 "1zl9q9m4x7lz9890g0h1qqj7hcxnwzpjfnfbxadjblps7b5054q4"))))
4735 (build-system ruby-build-system)
4736 (native-inputs (list ruby-rspec ruby-rubocop ruby-simplecov))
4737 (arguments
4738 '(#:test-target "spec"))
4739 (synopsis "Fake FTP server for use with ruby tests")
4740 (description "This package allows you to test FTP implementations in ruby.
4741It is a minimal single-client FTP server that can be bound to any arbitrary
4742port on localhost.")
4743 (home-page "https://rubygems.org/gems/fake_ftp")
4744 (license license:expat)))
4745
4746(define-public ruby-net-telnet
4747 (package
4748 (name "ruby-net-telnet")
4749 (version "0.2.0")
4750 (source (origin
4751 (method url-fetch)
4752 (uri (rubygems-uri "net-telnet" version))
4753 (sha256
4754 (base32
4755 "16nkxc79nqm7fd6w1fba4kb98vpgwnyfnlwxarpdcgywz300fc15"))))
4756 (build-system ruby-build-system)
4757 (synopsis "Telnet client functionality")
4758 (description "This package provides telnet client functionality.")
4759 (home-page "https://github.com/ruby/net-telnet")
4760 (license license:bsd-2)))
4761
4762(define-public ruby-net-ftp
4763 (package
4764 (name "ruby-net-ftp")
4765 (version "0.3.4")
4766 (source (origin
4767 (method git-fetch) ;for tests
4768 (uri (git-reference
4769 (url "https://github.com/ruby/net-ftp")
4770 (commit (string-append "v" version))))
4771 (file-name (git-file-name name version))
4772 (sha256
4773 (base32
4774 "11b1sw7c4c7xrhn5li5m0wylw42hp52jp6pqacyb43hkw1m5zr36"))))
4775 (build-system ruby-build-system)
4776 (propagated-inputs (list ruby-net-protocol ruby-time))
4777 (synopsis "File Transfer Protocol client library")
4778 (description "This class implements the File Transfer Protocol. If you
4779have used a command-line FTP program, and are familiar with the commands, you
4780will be able to use this class easily. Some extra features are included to
4781take advantage of Ruby's style and strengths.")
4782 (home-page "https://github.com/ruby/net-ftp")
4783 (license license:bsd-2)))
4784
4785(define-public ruby-net-http-persistent
4786 (package
4787 (name "ruby-net-http-persistent")
4788 (version "4.0.2")
4789 (source (origin
4790 (method url-fetch)
4791 (uri (rubygems-uri "net-http-persistent" version))
4792 (sha256
4793 (base32
4794 "0i1as2lgnw7b4jid0gw5glv5hnxz36nmfsbr9rmxbcap72ijgy03"))))
4795 (build-system ruby-build-system)
4796 (native-inputs
4797 (list ruby-connection-pool
4798 ruby-hoe
4799 ruby-rake-manifest))
4800 (synopsis "Persistent HTTP connection manager")
4801 (description "Net::HTTP::Persistent manages persistent HTTP connections
4802using Net::HTTP, supporting reconnection and retry according to RFC 2616.")
4803 (home-page "https://github.com/drbrain/net-http-persistent")
4804 (license license:expat)))
4805
4806(define-public ruby-net-imap
4807 (package
4808 (name "ruby-net-imap")
4809 (version "0.3.4")
4810 (source (origin
4811 (method git-fetch) ;for tests
4812 (uri (git-reference
4813 (url "https://github.com/ruby/net-imap")
4814 (commit (string-append "v" version))))
4815 (file-name (git-file-name name version))
4816 (sha256
4817 (base32
4818 "0nx49i1n9q1wpancqaac2srrpb8mb43mc8wryyqyhpgki2grwyxw"))))
4819 (build-system ruby-build-system)
4820 (arguments
4821 ;; The test suite appears to rely on RFCs it tries fetching from the
4822 ;; network (see: https://github.com/ruby/net-imap/issues/136).
4823 (list #:tests? #f
4824 #:phases
4825 #~(modify-phases %standard-phases
4826 (add-before 'replace-git-ls-files 'adjust-for-git-ls-files
4827 (lambda _
4828 ;; Adjust the git ls-files invocation so that it matches
4829 ;; the expected pattern.
4830 (substitute* "net-imap.gemspec"
4831 (("`git ls-files -z 2>/dev/null`")
4832 "`git ls-files -z`")))))))
4833 (propagated-inputs (list ruby-date ruby-net-protocol))
4834 (synopsis "Ruby client api for Internet Message Access Protocol")
4835 (description "@code{Net::IMAP} implements Internet Message Access
4836Protocol (IMAP) client functionality. The protocol is described in
4837@url{https://tools.ietf.org/html/rfc3501, IMAP}.")
4838 (home-page "https://github.com/ruby/net-imap")
4839 (license license:bsd-2)))
4840
4841(define-public ruby-net-pop
4842 (package
4843 (name "ruby-net-pop")
4844 (version "0.1.2")
4845 (source (origin
4846 (method git-fetch)
4847 (uri (git-reference
4848 (url "https://github.com/ruby/net-pop")
4849 (commit (string-append "v" version))))
4850 (file-name (git-file-name name version))
4851 (sha256
4852 (base32
4853 "05vz6a56va2rbr7ld78gdzwy1j5mzs98cz82ax5aqa83pzzk6jld"))))
4854 (build-system ruby-build-system)
4855 (propagated-inputs (list ruby-net-protocol))
4856 (synopsis "Ruby client library for POP3")
4857 (description "This library provides functionality for retrieving email via
4858POP3, the Post Office Protocol version 3, as specified by
4859@url{http://www.ietf.org/rfc/rfc1939.txt, RFC1939}.")
4860 (home-page "https://github.com/ruby/net-pop")
4861 (license license:bsd-2)))
4862
4863(define-public ruby-net-smtp
4864 (package
4865 (name "ruby-net-smtp")
4866 (version "0.3.3")
4867 (source (origin
4868 (method git-fetch) ;for tests
4869 (uri (git-reference
4870 (url "https://github.com/ruby/net-smtp")
4871 (commit (string-append "v" version))))
4872 (file-name (git-file-name name version))
4873 (sha256
4874 (base32
4875 "0ca2wh45xvc09rv6v6sz3vbnkzrjzk5c4l6dk50zk4dwxvghma8r"))))
4876 (build-system ruby-build-system)
4877 (arguments
4878 (list
4879 #:phases
4880 #~(modify-phases %standard-phases
4881 (add-before 'check 'regenerate-certificate
4882 ;; On version 0.5.0 a Makefile was introduced to regenerated
4883 ;; the certificates, and instead of calling openssl directory
4884 ;; we could do (with-directory-excursion "test/net/fixtures"
4885 ;; (invoke "make" "regen_certs"). However the certificate is
4886 ;; expired versions before 0.5.0 as well.
4887 (lambda _
4888 (with-directory-excursion "test/net/fixtures"
4889 (invoke
4890 "openssl" "req" "-new" "-key" "server.key" "-out"
4891 "server.csr" "-subj"
4892 "/C=JP/ST=Shimane/O=Ruby Core Team/OU=Ruby Test/CN=localhost")
4893 (invoke "openssl" "req" "-new" "-x509" "-days" "3650"
4894 "-key" "server.key" "-out" "cacert.pem" "-subj"
4895 (string-append
4896 "/C=JP/ST=Shimane/L=Matz-e city/O=Ruby "
4897 "Core Team/CN=Ruby Test "
4898 "CA/emailAddress=security@ruby-lang.org"))
4899 (invoke "openssl" "x509" "-days" "3650" "-CA" "cacert.pem"
4900 "-CAkey" "server.key" "-set_serial" "00" "-in"
4901 "server.csr" "-req" "-out" "server.crt")))))))
4902 (native-inputs (list openssl))
4903 (propagated-inputs (list ruby-net-protocol))
4904 (synopsis "Simple Mail Transfer Protocol client library for Ruby")
4905 (description "This library provides functionality to send Internet mail
4906via SMTP, the Simple Mail Transfer Protocol. The SMTP protocol specification
4907is known as @url{http://www.ietf.org/rfc/rfc2821.txt, RFC2821}.")
4908 (home-page "https://github.com/ruby/net-smtp")
4909 (license license:bsd-2)))
4910
4911(define-public ruby-pleaserun
4912 (package
4913 (name "ruby-pleaserun")
4914 (version "0.0.32")
4915 (source (origin
4916 (method url-fetch)
4917 (uri (rubygems-uri "pleaserun" version))
4918 (sha256
4919 (base32
4920 "1aykf0l8327bqkkf5xd9jcglsib973zpy37cfnlf4j0vp0cdpn2d"))))
4921 (build-system ruby-build-system)
4922 (arguments
4923 (list #:phases
4924 #~(modify-phases %standard-phases
4925 (add-after 'extract-gemspec 'relax-requirements
4926 (lambda _
4927 (substitute* "pleaserun.gemspec"
4928 ;; Mustache is pinned at 0.99.8, for portability with
4929 ;; older Rubies.
4930 (("dependency\\(%q<mustache>.freeze.*")
4931 "dependency(%q<mustache>.freeze)\n"))))
4932 (replace 'check
4933 (lambda* (#:key tests? #:allow-other-keys)
4934 (when tests?
4935 ;; The cli_spec.rb test fails non-deterministically with
4936 ;; a Errno::EISDIR error (see:
4937 ;; https://github.com/jordansissel/pleaserun/issues/155)
4938 (invoke "rspec" "--exclude-pattern"
4939 "spec/pleaserun/cli_spec.rb")))))))
4940 (native-inputs (list ruby-flores ruby-rspec))
4941 (propagated-inputs (list ruby-cabin
4942 ruby-clamp
4943 ruby-dotenv
4944 ruby-insist
4945 ruby-mustache
4946 ruby-stud))
4947 (synopsis "Init scripts and service definitions generation tool")
4948 (description "Pleaserun is a tool to generate startup scripts and service
4949definitions. It targets service managers such as systemd, Upstart, launchd,
4950sysv init, and runit.")
4951 (home-page "https://github.com/jordansissel/pleaserun")
4952 (license license:asl2.0)))
4953
4954(define-public ruby-power-assert
4955 (package
4956 (name "ruby-power-assert")
4957 (version "1.1.5")
4958 (source (origin
4959 (method url-fetch)
4960 (uri (rubygems-uri "power_assert" version))
4961 (sha256
4962 (base32
4963 "1dii0wkfa0jm8sk9b20zl1z4980dmrjh0zqnii058485pp3ws10s"))))
4964 (build-system ruby-build-system)
4965 (arguments
4966 '(#:tests? #f)) ; No included tests
4967 (native-inputs
4968 (list bundler))
4969 (synopsis "Assert library with descriptive assertion messages")
4970 (description "Power-assert is an assertion library providing descriptive
4971assertion messages for tests.")
4972 (home-page "https://github.com/k-tsj/power_assert")
4973 (license (list license:bsd-2 license:ruby))))
4974
4975(define-public ruby-powerpack
4976 (package
4977 (name "ruby-powerpack")
4978 (version "0.1.3")
4979 (source
4980 (origin
4981 (method url-fetch)
4982 (uri (rubygems-uri "powerpack" version))
4983 (sha256
4984 (base32
4985 "1f71axvlhnxja0k17qqxdi4qh5ck807hqg4i3j6cgy8fgzmyg7rg"))))
4986 (build-system ruby-build-system)
4987 (arguments
4988 (list #:test-target "spec"))
4989 (native-inputs
4990 (list bundler ruby-rspec ruby-yard))
4991 (synopsis "Useful extensions to core Ruby classes")
4992 (description
4993 "This package provides a few useful extensions to core Ruby classes,
4994including @code{Array}, @code{Enumerable}, @code{Hash}, @code{Numeric}, and
4995@code{String}.")
4996 (home-page "https://github.com/bbatsov/powerpack")
4997 (license license:expat)))
4998
4999(define-public ruby-locale
5000 (package
5001 (name "ruby-locale")
5002 (version "2.1.2")
5003 (source (origin
5004 (method url-fetch)
5005 (uri (rubygems-uri "locale" version))
5006 (sha256
5007 (base32
5008 "1sls9bq4krx0fmnzmlbn64dw23c4d6pz46ynjzrn9k8zyassdd0x"))))
5009 (build-system ruby-build-system)
5010 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
5011 ;; which needs ruby-gettext, which needs ruby-locale. To break the
5012 ;; dependency cycle we disable tests.
5013 (arguments `(#:tests? #f))
5014 (native-inputs
5015 (list bundler ruby-yard/minimal))
5016 (synopsis "Ruby library providing basic localization APIs")
5017 (description
5018 "Ruby-Locale is the pure ruby library which provides basic APIs for
5019localization.")
5020 (home-page "https://github.com/ruby-gettext/locale")
5021 (license (list license:lgpl3+ license:ruby))))
5022
5023(define-public ruby-temple
5024 (package
5025 (name "ruby-temple")
5026 (version "0.10.0")
5027 (source (origin
5028 (method git-fetch) ;for tests
5029 (uri (git-reference
5030 (url "https://github.com/judofyr/temple")
5031 (commit (string-append "v" version))))
5032 (file-name (git-file-name name version))
5033 (sha256
5034 (base32
5035 "0rr9fnlcgj9nm3b6hzzjsvcw8x3y7z48j7slk7xxff2mh8s7y3y0"))))
5036 (build-system ruby-build-system)
5037 (arguments
5038 (list #:phases
5039 #~(modify-phases %standard-phases
5040 (add-after 'replace-git-ls-files 'replace-more-git-ls-files
5041 (lambda _
5042 (substitute* "temple.gemspec"
5043 ;; There no longer are test, spec or features
5044 ;; directories.
5045 ((".*`git ls-files -- \\{test,spec,features}/\\*`.*")
5046 "")
5047 ;; There isn't any bin directory either.
5048 ((".*`git ls-files -- bin/\\*`.*")
5049 ""))))
5050 (replace 'check
5051 (lambda* (#:key tests? #:allow-other-keys)
5052 (when tests?
5053 (invoke "rspec")))))))
5054 (native-inputs (list ruby-bacon ruby-erubi ruby-rspec ruby-tilt))
5055 (synopsis "Template compilation framework in Ruby")
5056 (description "Temple is an abstraction and framework for compiling
5057templates to pure Ruby.")
5058 (home-page "https://github.com/judofyr/temple")
5059 (license license:expat)))
5060
5061(define-public ruby-text
5062 (package
5063 (name "ruby-text")
5064 (version "1.3.1")
5065 (source (origin
5066 (method url-fetch)
5067 (uri (rubygems-uri "text" version))
5068 (sha256
5069 (base32
5070 "1x6kkmsr49y3rnrin91rv8mpc3dhrf3ql08kbccw8yffq61brfrg"))))
5071 (build-system ruby-build-system)
5072 (synopsis "Collection of text algorithms for Ruby")
5073 (description
5074 "This package provides a collection of text algorithms: Levenshtein,
5075Soundex, Metaphone, Double Metaphone, Porter Stemming.")
5076 (home-page "https://github.com/threedaymonk/text")
5077 (license license:expat)))
5078
5079(define-public ruby-gdbm
5080 (package
5081 (name "ruby-gdbm")
5082 (version "2.1.0")
5083 (source
5084 (origin
5085 (method url-fetch)
5086 (uri (rubygems-uri "gdbm" version))
5087 (sha256
5088 (base32 "0xxygf50b2fvy8lcn2vip27vq32p607d3lwd1diplvkajijq8q8b"))))
5089 (build-system ruby-build-system)
5090 (arguments '(#:tests? #f)) ; No bundled tests.
5091 (inputs (list gdbm))
5092 (synopsis "Ruby extension for GNU dbm")
5093 (description "This package provides a Ruby extension for GNU dbm.")
5094 (home-page "https://github.com/ruby/gdbm")
5095 (license license:bsd-2)))
5096
5097(define-public ruby-gettext
5098 (package
5099 (name "ruby-gettext")
5100 (version "3.4.4")
5101 (source (origin
5102 (method url-fetch)
5103 (uri (rubygems-uri "gettext" version))
5104 (sha256
5105 (base32
5106 "11hlxkk2yr9wjwd3nf8kgmsjcd8wf35yqlxi9wpvrgmvrk9n9a2k"))))
5107 (build-system ruby-build-system)
5108 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
5109 ;; which needs ruby-gettext. To break the dependency cycle we disable
5110 ;; tests.
5111 (arguments `(#:tests? #f))
5112 (propagated-inputs
5113 (list ruby-locale ruby-text ruby-erubi))
5114 (native-inputs
5115 (list bundler ruby-yard/minimal))
5116 (synopsis "GNU gettext-like program for Ruby")
5117 (description
5118 "Gettext is a GNU gettext-like program for Ruby. The catalog
5119file (po-file) used is the same as that used by GNU gettext, allowing you to
5120use GNU gettext tools for maintenance.")
5121 (home-page "https://ruby-gettext.github.com/")
5122 (license (list license:lgpl3+ license:ruby))))
5123
5124(define-public ruby-packnga
5125 (package
5126 (name "ruby-packnga")
5127 (version "1.0.4")
5128 (source (origin
5129 (method url-fetch)
5130 (uri (rubygems-uri "packnga" version))
5131 (sha256
5132 (base32
5133 "1vv2j0i43s4xid2km5hgrrxqlqpwgq8nlm8kaxfg2531c1vwfsd4"))))
5134 (build-system ruby-build-system)
5135 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga.
5136 ;; To break the dependency cycle we disable tests.
5137 (arguments `(#:tests? #f))
5138 (propagated-inputs
5139 (list ruby-gettext ruby-yard))
5140 (native-inputs
5141 (list bundler))
5142 (synopsis "Utility library to package internationalized libraries")
5143 (description
5144 "Packnga is a library to translate to many languages using YARD.")
5145 (home-page "https://ranguba.org/packnga/")
5146 (license license:lgpl2.0+)))
5147
5148(define-public ruby-test-construct
5149 (package
5150 (name "ruby-test-construct")
5151 (version "2.0.2")
5152 (source
5153 (origin
5154 (method url-fetch)
5155 (uri (rubygems-uri "test_construct" version))
5156 (sha256
5157 (base32
5158 "17q7rw92l7r4zh6rkvzrn4dyl8p8p77217vaa1wf7nsv8k5541vy"))))
5159 (build-system ruby-build-system)
5160 (native-inputs
5161 (list bundler ruby-mocha-1 ruby-rspec))
5162 (synopsis "Creates temporary files and directories for testing")
5163 (description
5164 "TestConstruct is a @acronym{DSL, Domain Specific Language} for creating
5165temporary files and directories during tests.")
5166 (home-page "https://github.com/bhb/test_construct")
5167 (license license:expat)))
5168
5169(define-public ruby-test-unit
5170 (package
5171 (name "ruby-test-unit")
5172 (version "3.6.0")
5173 (source (origin
5174 (method git-fetch) ;for tests
5175 (uri (git-reference
5176 (url "https://github.com/test-unit/test-unit")
5177 (commit version)))
5178 (file-name (git-file-name name version))
5179 (sha256
5180 (base32
5181 "0w1m432q3y5v9lkak8yyxadak3z17bsp6afni97i4zjdgfz7niz2"))))
5182 (build-system ruby-build-system)
5183 (propagated-inputs
5184 (list ruby-power-assert))
5185 (native-inputs
5186 (list bundler ruby-packnga ruby-yard))
5187 (synopsis "Unit testing framework for Ruby")
5188 (description "@code{Test::Unit} is unit testing framework for Ruby, based
5189on xUnit principles. These were originally designed by Kent Beck, creator of
5190extreme programming software development methodology, for Smalltalk's SUnit.
5191It allows writing tests, checking results and automated testing in Ruby.")
5192 (home-page "https://test-unit.github.io/")
5193 (license (list license:psfl license:ruby))))
5194
5195(define-public ruby-test-unit/minimal
5196 (hidden-package
5197 (package
5198 (inherit ruby-test-unit)
5199 (arguments
5200 (ensure-keyword-arguments
5201 (package-arguments ruby-test-unit)
5202 (list #:tests? #f)))
5203 (native-inputs '()))))
5204
5205(define-public ruby-test-unit-ruby-core
5206 (package
5207 (name "ruby-test-unit-ruby-core")
5208 (version "1.0.5")
5209 (source
5210 (origin
5211 (method url-fetch)
5212 (uri (rubygems-uri "test-unit-ruby-core" version))
5213 (sha256
5214 (base32 "1i7fa4hlj6xiqvjaikagwrmiyc21jzyswvd4grjbfqysziwsxygc"))))
5215 (build-system ruby-build-system)
5216 (arguments
5217 (list #:tests? #f)) ; contains no tests
5218 (synopsis "Additional test assertions for Ruby standard libraries")
5219 (description "This package provides additional test assertions for Ruby
5220standard libraries.")
5221 (home-page "https://github.com/ruby/test-unit-ruby-core")
5222 (license license:ruby)))
5223
5224(define-public ruby-mapping
5225 (package
5226 (name "ruby-mapping")
5227 (version "1.1.1")
5228 (source (origin
5229 (method git-fetch) ;for tests
5230 (uri (git-reference
5231 (url "https://github.com/ioquatix/mapping")
5232 (commit (string-append "v" version))))
5233 (file-name (git-file-name name version))
5234 (sha256
5235 (base32
5236 "0yhmqp8mprjqf9m7wzc4hhi50qbfax86r89w852csns0ijaffjjs"))))
5237 (build-system ruby-build-system)
5238 (arguments
5239 (list
5240 #:test-target "spec"
5241 #:phases
5242 #~(modify-phases %standard-phases
5243 (add-after 'unpack 'patch
5244 (lambda _
5245 (substitute* "spec/mapping/model_spec.rb"
5246 ;; From https://github.com/ioquatix/mapping/pull/2
5247 (("offset:") "offset =")))))))
5248 (native-inputs (list ruby-rspec))
5249 (synopsis "Map model objects based on their class to a given output model")
5250 (description "The @code{mapping} gem maps model objects based on their
5251class to a given output model. It is useful for versioning external
5252interfaces (e.g. JSON APIs) or processing structured data from one format to
5253another.")
5254 (home-page "https://github.com/ioquatix/mapping")
5255 (license license:expat)))
5256
5257(define-public ruby-markaby
5258 (package
5259 (name "ruby-markaby")
5260 (version "0.9.0")
5261 (source
5262 (origin
5263 (method url-fetch)
5264 (uri (rubygems-uri "markaby" version))
5265 (sha256
5266 (base32
5267 "1j4jc31ycydbkh5h3q6zwidzpavg3g5mbb5lqyaczd3jrq78rd7i"))))
5268 (build-system ruby-build-system)
5269 (arguments
5270 (list
5271 #:phases
5272 #~(modify-phases %standard-phases
5273 ;; Run rspec manually without using the Rakefile, as the versions of
5274 ;; Rake and RSpec 2 are incompatible:
5275 ;;
5276 ;; NoMethodError: undefined method `last_comment'
5277 (replace 'check
5278 (lambda* (#:key tests? #:allow-other-keys)
5279 ;; Skip some broken tests, this should be redundant with the
5280 ;; next release
5281 (delete-file "spec/markaby/markaby_test_unit_spec.rb")
5282 (substitute* "spec/markaby/markaby_spec.rb"
5283 (("generated.should == str")
5284 "# Test broken: generated.should == str"))
5285
5286 (when tests?
5287 (invoke "rspec")))))))
5288 (propagated-inputs
5289 (list ruby-builder))
5290 (native-inputs
5291 (list bundler ruby-rspec-2))
5292 (synopsis "Write HTML pages in pure Ruby")
5293 (description
5294 "Markaby allows writing HTML packages in pure Ruby. This is similar to
5295the functionality provided by @acronym{ERB, Embedded Ruby}, but without the
5296mixture of HTML and additional ERB syntax.")
5297 (home-page "https://markaby.github.io/")
5298 (license license:expat)))
5299
5300(define-public ruby-maruku
5301 (package
5302 (name "ruby-maruku")
5303 (version "0.7.3")
5304 (source
5305 (origin
5306 (method url-fetch)
5307 (uri (rubygems-uri "maruku" version))
5308 (sha256
5309 (base32
5310 "1r7bxpgnx2hp3g12bjrmdrpv663dfqxsdp0af69kjhxmaxpia56x"))))
5311 (build-system ruby-build-system)
5312 (arguments
5313 '(;; TODO: 3 tests seem to fail due to HTML encoding issues
5314 #:tests? #f
5315 #:phases
5316 (modify-phases %standard-phases
5317 (replace 'check
5318 (lambda* (#:key tests? #:allow-other-keys)
5319 (when tests?
5320 (invoke "rspec")))))))
5321 (native-inputs
5322 (list ruby-rspec ruby-simplecov ruby-nokogiri-diff))
5323 (synopsis "Markdown interpreter in Ruby")
5324 (description
5325 "Maruku is a Markdown interpreter in Ruby. It can export Markdown to
5326HTML, and PDF through LaTeX.")
5327 (home-page "https://github.com/bhollis/maruku")
5328 (license license:expat)))
5329
5330(define-public ruby-metaclass
5331 (package
5332 (name "ruby-metaclass")
5333 (version "0.0.4")
5334 (source (origin
5335 (method url-fetch)
5336 (uri (rubygems-uri "metaclass" version))
5337 (sha256
5338 (base32
5339 "0hp99y2b1nh0nr8pc398n3f8lakgci6pkrg4bf2b2211j1f6hsc5"))))
5340 (build-system ruby-build-system)
5341 (arguments
5342 `(#:phases
5343 (modify-phases %standard-phases
5344 (add-after 'unpack 'add-test-unit-to-search-path
5345 (lambda* (#:key inputs #:allow-other-keys)
5346 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
5347 (substitute* "Rakefile"
5348 (("t\\.libs << \"test\"" line)
5349 (string-append line "; t.libs << \""
5350 test-unit "/lib/ruby/vendor_ruby"
5351 "/gems/test-unit-"
5352 ,(package-version ruby-test-unit)
5353 "/lib\"")))))))))
5354 (native-inputs
5355 (list bundler ruby-test-unit/minimal))
5356 (synopsis "Ruby library adding metaclass method to all objects")
5357 (description
5358 "Metaclass is a Ruby library adding a @code{metaclass} method to all Ruby
5359objects.")
5360 (home-page "https://github.com/floehopper/metaclass")
5361 (license license:expat)))
5362
5363(define-public ruby-mkmf-lite
5364 (package
5365 (name "ruby-mkmf-lite")
5366 (version "0.5.2")
5367 (source (origin
5368 (method url-fetch)
5369 (uri (rubygems-uri "mkmf-lite" version))
5370 (sha256
5371 (base32
5372 "0rqa5kzswhqkj7r9mqrqz4mjd2vdxsblgybb52gj3mwr1gwvl4c5"))))
5373 (build-system ruby-build-system)
5374 (arguments
5375 (list
5376 #:phases
5377 #~(modify-phases %standard-phases
5378 ;; Avoid rubocop dependency
5379 (replace 'check
5380 (lambda* (#:key tests? #:allow-other-keys)
5381 (when tests?
5382 (invoke "rspec")))))))
5383 (propagated-inputs
5384 (list ruby-ptools))
5385 (native-inputs
5386 (list ruby-rspec))
5387 (synopsis "Lightweight alternative to @code{mkmf}")
5388 (description
5389 "@code{mkmf-lite} is a light version of Ruby's @code{mkmf.rb} designed
5390for use as a library. It does not create packages, builds, or log files of
5391any kind. Instead, it provides mixin methods that you can use in FFI or tests
5392to check for the presence of header files, constants, and so on.")
5393 (home-page "https://github.com/djberg96/mkmf-lite")
5394 (license license:asl2.0)))
5395
5396(define-public ruby-msgpack
5397 (package
5398 (name "ruby-msgpack")
5399 (version "1.7.5")
5400 (source (origin
5401 (method git-fetch) ;for tests
5402 (uri (git-reference
5403 (url "https://github.com/msgpack/msgpack-ruby")
5404 (commit (string-append "v" version))))
5405 (file-name (git-file-name name version))
5406 (sha256
5407 (base32
5408 "0d759pjgxgrxw18kmk81yv9brc141b4d8gszlp4vdnpvwvb96nln"))))
5409 (build-system ruby-build-system)
5410 (arguments (list #:test-target "spec"))
5411 (native-inputs
5412 (list ruby-rake-compiler
5413 ruby-ruby-memcheck
5414 ruby-rspec
5415 ruby-yard))
5416 (synopsis "Efficient object serialization library for Ruby")
5417 (description "MessagePack is a binary-based efficient object serialization
5418library. It enables to exchange structured objects between many languages
5419like JSON. Unlike JSON, it is very fast and small.")
5420 (home-page "https://msgpack.org/")
5421 (license license:asl2.0)))
5422
5423(define-public ruby-mspec
5424 (package
5425 (name "ruby-mspec")
5426 (version "1.9.1")
5427 (source
5428 (origin
5429 (method url-fetch)
5430 (uri (rubygems-uri "mspec" version))
5431 (sha256
5432 (base32
5433 "0wmyh2n40m4srwdx9z6h6g6p46k02pzyhcsja3hqcw5h5b0hfmhd"))))
5434 (build-system ruby-build-system)
5435 (arguments
5436 '(;; TODO: 3 test failures
5437 ;; ./spec/mocks/mock_spec.rb:82
5438 ;; ./spec/utils/name_map_spec.rb:151
5439 ;; ./spec/utils/name_map_spec.rb:155
5440 #:tests? #f
5441 #:phases
5442 (modify-phases %standard-phases
5443 (add-after 'extract-gemspec 'change-dependency-constraints
5444 (lambda _
5445 (substitute* "mspec.gemspec"
5446 (("rake.*") "rake>)\n")
5447 (("rspec.*") "rspec>)\n"))))
5448 (replace 'check
5449 (lambda* (#:key tests? #:allow-other-keys)
5450 (when tests?
5451 (invoke "rspec" "spec")))))))
5452 (native-inputs
5453 (list bundler ruby-rake ruby-rspec))
5454 (synopsis "MSpec is a specialized framework for RubySpec")
5455 (description
5456 "MSpec is a specialized framework that is syntax-compatible with RSpec 2
5457for basic features. MSpec contains additional features that assist in writing
5458specs for Ruby implementations in ruby/spec.")
5459 (home-page "http://rubyspec.org")
5460 (license license:expat)))
5461
5462(define-public ruby-mysql2
5463 (package
5464 (name "ruby-mysql2")
5465 (version "0.5.2")
5466 (source
5467 (origin
5468 (method git-fetch)
5469 (uri (git-reference
5470 (url "https://github.com/brianmario/mysql2")
5471 (commit version)))
5472 (file-name (git-file-name name version))
5473 (sha256
5474 (base32
5475 "11lvfgc2rmvkm52jp0nbi6pvhk06klznghr7llldfw8basl9n5wv"))))
5476 (build-system ruby-build-system)
5477 (arguments
5478 '(;; TODO: Tests require a running MySQL/MariaDB service
5479 #:tests? #f
5480 #:phases
5481 (modify-phases %standard-phases
5482 (replace 'replace-git-ls-files
5483 (lambda _
5484 (substitute* "mysql2.gemspec"
5485 (("git ls-files .*`") "find . -type f |sort`"))))
5486 (add-before 'install 'set-MAKEFLAGS
5487 (lambda* (#:key outputs #:allow-other-keys)
5488 (setenv "MAKEFLAGS"
5489 (string-append
5490 "V=1 "
5491 "prefix=" (assoc-ref outputs "out")))))
5492 ;; Move the 'check phase to after 'install, as then you can test
5493 ;; using the installed mysql2 gem in the store.
5494 (delete 'check)
5495 (add-after 'install 'check
5496 (lambda* (#:key outputs tests? #:allow-other-keys)
5497 (setenv "GEM_PATH"
5498 (string-append
5499 (getenv "GEM_PATH")
5500 ":"
5501 (assoc-ref outputs "out") "/lib/ruby/vendor_ruby"))
5502 (when tests?
5503 (invoke "rspec")))))))
5504 (inputs
5505 `(("mariadb-dev" ,mariadb "dev")
5506 ("zlib" ,zlib)))
5507 (native-inputs
5508 (list ruby-rspec ruby-rake-compiler))
5509 (synopsis "MySQL library for Ruby, binding to libmysql")
5510 (description
5511 "This package provides a simple, fast MySQL library for Ruby, binding to
5512libmysql.")
5513 (home-page "https://github.com/brianmario/mysql2")
5514 (license license:expat)))
5515
5516(define-public ruby-blankslate
5517 (package
5518 (name "ruby-blankslate")
5519 (version "3.1.3")
5520 (source (origin
5521 (method url-fetch)
5522 (uri (rubygems-uri "blankslate" version))
5523 (sha256
5524 (base32
5525 "0fwkb4d1j9gc7vdwn2nxvwgy2g5wlag4c4bp7bl85jvq0kgp6cyx"))))
5526 (build-system ruby-build-system)
5527 (arguments
5528 `(#:phases
5529 (modify-phases %standard-phases
5530 (replace 'check
5531 (lambda _ (invoke "rspec" "spec/"))))))
5532 (native-inputs
5533 (list bundler ruby-rspec))
5534 (synopsis "Abstract base class with no predefined methods")
5535 (description
5536 "BlankSlate provides an abstract base class with no predefined
5537methods (except for @code{__send__} and @code{__id__}). BlankSlate is useful
5538as a base class when writing classes that depend upon
5539@code{method_missing} (e.g. dynamic proxies).")
5540 (home-page "https://github.com/masover/blankslate")
5541 (license license:expat)))
5542
5543(define-public ruby-bond
5544 (package
5545 (name "ruby-bond")
5546 (version "0.5.1")
5547 (source
5548 (origin
5549 (method url-fetch)
5550 (uri (rubygems-uri "bond" version))
5551 (sha256
5552 (base32
5553 "1r19ifc4skyl2gxnifrxa5jvbbay9fb2in79ppgv02b6n4bhsw90"))))
5554 (build-system ruby-build-system)
5555 (arguments
5556 ;; The test suite fails (see:
5557 ;; https://github.com/cldwalker/bond/issues/46).
5558 `(#:tests? #f))
5559 (native-inputs
5560 (list ruby-bacon ruby-bacon-bits ruby-mocha-on-bacon))
5561 (synopsis "Bond can provide custom autocompletion for arguments, methods
5562and more")
5563 (description
5564 "Bond can autocomplete argument(s) to methods, uniquely completing per
5565module, per method and per argument. Bond provides a configuration system and
5566a DSL for creating custom completions and completion rules. Bond can also
5567load completions that ship with gems. Bond is able to offer more than irb's
5568completion since it uses the full line of input when completing as opposed to
5569irb's last-word approach.")
5570 (home-page "http://tagaholic.me/bond/")
5571 (license license:expat)))
5572
5573(define-public ruby-idn-ruby
5574 (package
5575 (name "ruby-idn-ruby")
5576 (version "0.1.0")
5577 (source
5578 (origin
5579 (method url-fetch)
5580 (uri (rubygems-uri "idn-ruby" version))
5581 (sha256
5582 (base32
5583 "07vblcyk3g72sbq12xz7xj28snpxnh3sbcnxy8bglqbfqqhvmawr"))))
5584 (build-system ruby-build-system)
5585 (arguments
5586 '(#:phases
5587 (modify-phases %standard-phases
5588 (delete 'check)
5589 (add-after 'install 'check
5590 (lambda* (#:key tests? outputs #:allow-other-keys)
5591 (when tests?
5592 (let* ((gem-file (cadr (find-files "." "\\.gem")))
5593 (name-and-version (basename gem-file ".gem")))
5594 (apply invoke
5595 "ruby" "--verbose"
5596 (string-append "-I"
5597 (assoc-ref outputs "out")
5598 "/lib/ruby/vendor_ruby/gems/"
5599 name-and-version
5600 "/lib")
5601 (find-files "./test" ".*\\.rb")))))))))
5602 (inputs
5603 (list libidn))
5604 (synopsis "Ruby Bindings for the GNU LibIDN library")
5605 (description
5606 "Ruby Bindings for the GNU LibIDN library, an implementation of the
5607Stringprep, Punycode and IDNA specifications. These are used to encode and
5608decode internationalized domain + names according to the IDNA2003
5609specifications.
5610
5611Included are the most important parts of the Stringprep, Punycode and IDNA
5612APIs like performing Stringprep processings, encoding to and decoding from
5613Punycode strings and converting entire domain names to and from the ACE
5614encoded form.")
5615 (home-page "https://github.com/deepfryed/idn-ruby")
5616 (license license:asl2.0)))
5617
5618(define-public ruby-insist
5619 (package
5620 (name "ruby-insist")
5621 (version "1.0.0")
5622 (source (origin
5623 (method url-fetch)
5624 (uri (rubygems-uri "insist" version))
5625 (sha256
5626 (base32
5627 "0bw3bdwns14mapbgb8cbjmr0amvwz8y72gyclq04xp43wpp5jrvg"))))
5628 (build-system ruby-build-system)
5629 (arguments (list #:phases #~(modify-phases %standard-phases
5630 (replace 'check
5631 (lambda* (#:key tests? #:allow-other-keys)
5632 (when tests?
5633 (invoke "ruby" "test/testing.rb")))))))
5634 (synopsis "Testing tool for Ruby")
5635 (description "This package provides a simple block-driven assertion
5636library for both testing and for production code that attempts to make test
5637definitions more readable.")
5638 (home-page "https://github.com/jordansissel/ruby-insist/")
5639 (license license:asl2.0)))
5640
5641(define-public ruby-introspection
5642 (package
5643 (name "ruby-introspection")
5644 (version "0.0.4")
5645 (source (origin
5646 (method url-fetch)
5647 (uri (rubygems-uri "introspection" version))
5648 (sha256
5649 (base32
5650 "1y2nbijkc0zlfmn9ss6588ilarq2kbn2i7w7pwwsli66dj84zgca"))))
5651 (build-system ruby-build-system)
5652 (propagated-inputs
5653 (list ruby-metaclass))
5654 (native-inputs
5655 (list bundler
5656 ruby-blankslate))
5657 (synopsis "Dynamic inspection of the method hierarchy on a Ruby object")
5658 (description
5659 "Introspection provides tools to inspect the hierarchy of method
5660definitions on a Ruby object.")
5661 (home-page "https://github.com/floehopper/introspection")
5662 (license license:expat)))
5663
5664(define-public ruby-redcarpet
5665 (package
5666 (name "ruby-redcarpet")
5667 (version "3.5.0")
5668 (source (origin
5669 (method url-fetch)
5670 (uri (rubygems-uri "redcarpet" version))
5671 (sha256
5672 (base32
5673 "0skcyx1h8b5ms0rp2zm3ql6g322b8c1adnkwkqyv7z3kypb4bm7k"))))
5674 (build-system ruby-build-system)
5675 (arguments
5676 `(#:phases
5677 (modify-phases %standard-phases
5678 ;; The gem archive does not include the conformance tests.
5679 (add-after 'unpack 'disable-conformance-tests
5680 (lambda _
5681 (substitute* "Rakefile"
5682 (("task :test => %w\\[test:unit test:conformance\\]")
5683 "task :test => %w[test:unit]")))))))
5684 (native-inputs
5685 (list bundler ruby-test-unit ruby-rake-compiler))
5686 (synopsis "Extensible Markdown to (X)HTML converter")
5687 (description
5688 "Redcarpet is an extensible Ruby library for Markdown processing and
5689conversion to (X)HTML.")
5690 (home-page "https://github.com/vmg/redcarpet")
5691 (license license:expat)))
5692
5693(define-public ruby-reline
5694 (package
5695 (name "ruby-reline")
5696 (version "0.3.3")
5697 (source (origin
5698 (method git-fetch) ;for tests
5699 (uri (git-reference
5700 (url "https://github.com/ruby/reline")
5701 (commit (string-append "v" version))))
5702 (file-name (git-file-name name version))
5703 (sha256
5704 (base32
5705 "1papa4f4prjml9qk6yydi4k5a4zgbzmxmbhd8fz9kfg1i34s35cw"))))
5706 (build-system ruby-build-system)
5707 (propagated-inputs (list ruby-io-console))
5708 (synopsis "GNU Readline or Editline implementation in Ruby")
5709 (description "Reline is a pure Ruby alternative GNU Readline or Editline
5710implementation.")
5711 (home-page "https://github.com/ruby/reline")
5712 (license (list license:bsd-2 license:ruby)))) ;dual license
5713
5714(define-public ruby-rerun
5715 (package
5716 (name "ruby-rerun")
5717 (version "0.13.0")
5718 (source
5719 (origin
5720 (method url-fetch)
5721 (uri (rubygems-uri "rerun" version))
5722 (sha256
5723 (base32
5724 "1cskvxk8z8vmfail8na7hj91hs0qnvds9nydj04zi3dbddgnbmvz"))))
5725 (build-system ruby-build-system)
5726 (arguments
5727 '(#:tests? #f)) ; No included tests
5728 (propagated-inputs
5729 (list ruby-listen))
5730 (synopsis "Run a process, and restart when some monitored files change")
5731 (description
5732 "Rerun is a tool to launch programs, then monitor the file system, and
5733restart the program when any of the monitored files change. It's written in
5734Ruby, but can be used for all programs.")
5735 (home-page "https://github.com/alexch/rerun/")
5736 (license license:expat)))
5737
5738(define-public ruby-maxitest
5739 (package
5740 (name "ruby-maxitest")
5741 (version "5.1.0")
5742 (home-page "https://github.com/grosser/maxitest")
5743 (source (origin
5744 ;; Pull from git because the gem does not contain tests.
5745 (method git-fetch)
5746 (uri (git-reference
5747 (url home-page)
5748 (commit (string-append "v" version))))
5749 (file-name (git-file-name name version))
5750 (sha256
5751 (base32
5752 "0qj410krfm497ggmf71xpnabbb6814y0585by4nlzyjvg9hpgg3m"))))
5753 (build-system ruby-build-system)
5754 (arguments
5755 (list
5756 #:test-target "default"
5757 #:phases
5758 #~(modify-phases %standard-phases
5759 (replace 'replace-git-ls-files
5760 (lambda _
5761 (substitute* "maxitest.gemspec"
5762 (("`git ls-files lib/ bin/ MIT-LICENSE Readme.md`")
5763 "`find lib/ bin/ MIT-LICENSE Readme.md -type f | sort`"))))
5764 (add-before 'check 'remove-version-constraints
5765 (lambda _
5766 ;; Don't use specific versions of dependencies, instead
5767 ;; take whatever is available in Guix.
5768 (delete-file "Gemfile.lock")))
5769 (add-before 'check 'add-mtest-on-PATH
5770 (lambda _
5771 ;; Tests use 'mtest' which is not automatically added on
5772 ;; PATH.
5773 (setenv "PATH" (string-append (getcwd) "/bin:"
5774 (getenv "PATH"))))))))
5775 (native-inputs
5776 (list procps
5777 ruby-bump
5778 ruby-rspec
5779 ruby-wwtd))
5780 (propagated-inputs
5781 (list ruby-minitest))
5782 (synopsis "Minitest with extra features")
5783 (description
5784 "Maxitest is a wrapper around Minitest with extra functionality such
5785as timeouts, an @command{mtest} executable that can run tests by line
5786number, support for interrupted tests, better backtraces, and more.")
5787 (license license:expat)))
5788
5789(define-public ruby-mocha
5790 (package
5791 (name "ruby-mocha")
5792 (version "2.0.4")
5793 (source (origin
5794 (method url-fetch)
5795 (uri (rubygems-uri "mocha" version))
5796 (sha256
5797 (base32
5798 "18xn9gm9yypavy9yck71fplan19hy5697mwd1rwzz7vizh3ip7bd"))))
5799 (build-system ruby-build-system)
5800 (arguments
5801 (list
5802 #:phases
5803 #~(modify-phases %standard-phases
5804 (add-before 'check 'remove-rubocop-dependency
5805 (lambda _
5806 ;; Disable dependency on Rubocop, which is just a linter,
5807 ;; and would introduce a circular dependency.
5808 (substitute* "Gemfile"
5809 ((".*rubocop.*") "")))))))
5810 (propagated-inputs
5811 (list ruby-ruby2-keywords))
5812 (native-inputs
5813 (list ruby-psych-3
5814 ruby-introspection))
5815 (synopsis "Mocking and stubbing library for Ruby")
5816 (description
5817 "Mocha is a mocking and stubbing library with JMock/SchMock syntax, which
5818allows mocking and stubbing of methods on real (non-mock) classes.")
5819 (home-page "https://mocha.jamesmead.org/")
5820 ;; Mocha can be used with either license at the users choice.
5821 (license (list license:expat license:ruby))))
5822
5823(define-public ruby-mocha-1
5824 (package
5825 (inherit ruby-mocha)
5826 (version "1.13.0")
5827 (source (origin
5828 (method url-fetch)
5829 (uri (rubygems-uri "mocha" version))
5830 (sha256
5831 (base32
5832 "15s53ggsykk69kxqvs4416s8yxdhz6caggva55n8sjgy4ixzwp10"))))
5833 (arguments
5834 '(#:tests? #f))))
5835
5836(define-public ruby-mocha-on-bacon
5837 (package
5838 (name "ruby-mocha-on-bacon")
5839 (version "0.2.3")
5840 (source
5841 (origin
5842 (method url-fetch)
5843 (uri (rubygems-uri "mocha-on-bacon" version))
5844 (sha256
5845 (base32
5846 "1h49b33rq889hn8x3wp9byczl91va16jh1w4d2wyy4yj23icdrcp"))))
5847 (build-system ruby-build-system)
5848 (arguments
5849 ;; rubygems.org release missing tests
5850 '(#:tests? #f))
5851 (propagated-inputs (list ruby-mocha))
5852 (synopsis "Mocha adapter for Bacon")
5853 (description
5854 "This package provides a Mocha adapter for Bacon, allowing you to use the
5855Mocha stubbing and mocking library with Bacon, a small RSpec clone.")
5856 (home-page
5857 "https://github.com/alloy/mocha-on-bacon")
5858 (license license:expat)))
5859
5860(define-public ruby-net-ssh
5861 (package
5862 (name "ruby-net-ssh")
5863 (version "7.1.0")
5864 (source (origin
5865 (method git-fetch) ;for tests
5866 (uri (git-reference
5867 (url "https://github.com/net-ssh/net-ssh")
5868 (commit (string-append "v" version))))
5869 (file-name (git-file-name name version))
5870 (sha256
5871 (base32
5872 "1dkbyzpl31jygnnva5sa754vk42q1fih4qz5ipqw5gqiafrrlb91"))))
5873 (build-system ruby-build-system)
5874 (native-inputs
5875 (list bundler
5876 ruby-bcrypt-pbkdf
5877 ruby-ed25519
5878 ruby-mocha
5879 ruby-rbnacl
5880 ruby-test-unit
5881 ruby-x25519))
5882 (synopsis "Ruby implementation of the SSH2 client protocol")
5883 (description "@code{Net::SSH} is a pure-Ruby implementation of the SSH2
5884client protocol. It allows you to write programs that invoke and interact
5885with processes on remote servers, via SSH2.")
5886 (home-page "https://github.com/net-ssh/net-ssh")
5887 (license license:expat)))
5888
5889(define-public ruby-net-scp
5890 (package
5891 (name "ruby-net-scp")
5892 (version "4.0.1.rc3")
5893 (source
5894 (origin
5895 (method git-fetch)
5896 (uri (git-reference
5897 (url "https://github.com/net-ssh/net-scp")
5898 (commit (string-append "v" version))))
5899 (file-name (git-file-name name version))
5900 (sha256
5901 (base32 "136mb8idxdkxkadx827027nyxcsvvv2wivz5dnjqy8g6ic0h9dzn"))))
5902 (build-system ruby-build-system)
5903 (native-inputs
5904 (list bundler ruby-test-unit ruby-mocha-1))
5905 (propagated-inputs
5906 (list ruby-net-ssh))
5907 (synopsis "Pure-Ruby SCP client library")
5908 (description "@code{Net::SCP} is a pure-Ruby implementation of the SCP
5909client protocol.")
5910 (home-page "https://github.com/net-ssh/net-scp")
5911 (license license:expat)))
5912
5913(define-public ruby-net-sftp
5914 (package
5915 (name "ruby-net-sftp")
5916 (version "4.0.0")
5917 (source (origin
5918 (method url-fetch)
5919 (uri (rubygems-uri "net-sftp" version))
5920 (sha256
5921 (base32
5922 "0r33aa2d61hv1psm0l0mm6ik3ycsnq8symv7h84kpyf2b7493fv5"))))
5923 (build-system ruby-build-system)
5924 (propagated-inputs (list ruby-net-ssh))
5925 (synopsis "Pure Ruby implementation of the SFTP client protocol")
5926 (description
5927 "@code{Net::SFTP} is a pure Ruby implementation of the SFTP
5928protocol (specifically, versions 1 through 6 of the SFTP protocol). Note that
5929this is the “Secure File Transfer Protocol”, typically run over an SSH
5930connection, and has nothing to do with the FTP protocol.")
5931 (home-page "https://github.com/net-ssh/net-sftp")
5932 (license license:expat)))
5933
5934(define-public ruby-minima
5935 (package
5936 (name "ruby-minima")
5937 (version "2.5.1")
5938 (source (origin
5939 (method url-fetch)
5940 (uri (rubygems-uri "minima" version))
5941 (sha256
5942 (base32
5943 "1gk7jmriiswda1ykjzpsw9cpiya4m9n0yrh0h6xnrc8zcfy543jj"))))
5944 (arguments
5945 (list #:phases #~(modify-phases %standard-phases
5946 (replace 'check
5947 (lambda* (#:key tests? #:allow-other-keys)
5948 (when tests?
5949 (invoke "jekyll" "build"))
5950 ;; Without the following, an attempt to remove
5951 ;; minima-<version>.gem is made during installation,
5952 ;; which will fail.
5953 (delete-file #$(string-append "_site/minima-"
5954 version ".gem")))))))
5955 (build-system ruby-build-system)
5956 (propagated-inputs (list jekyll ruby-jekyll-feed ruby-jekyll-seo-tag))
5957 (synopsis "Beautiful, minimal theme for Jekyll")
5958 (description
5959 "Minima is a one-size-fits-all Jekyll theme for writers. It's Jekyll's
5960default (and first) theme. It's what you get when you run @code{jekyll new}.")
5961 (home-page "https://github.com/jekyll/minima")
5962 (license license:expat)))
5963
5964(define-public ruby-minitest
5965 (package
5966 (name "ruby-minitest")
5967 (version "5.18.1")
5968 (source (origin
5969 (method url-fetch)
5970 (uri (rubygems-uri "minitest" version))
5971 (sha256
5972 (base32
5973 "1kg9wh7jlc9zsr3hkhpzkbn0ynf4np5ap9m2d8xdrb8shy0y6pmb"))))
5974 (build-system ruby-build-system)
5975 (native-inputs (list ruby-hoe))
5976 (home-page "https://github.com/minitest/minitest")
5977 (synopsis "Small test suite library for Ruby")
5978 (description "Minitest provides a complete suite of Ruby testing
5979facilities supporting TDD, BDD, mocking, and benchmarking.")
5980 (license license:expat)))
5981
5982(define-public ruby-minitest-around
5983 (package
5984 (name "ruby-minitest-around")
5985 (version "0.5.0")
5986 (source
5987 (origin
5988 (method url-fetch)
5989 (uri (rubygems-uri "minitest-around" version))
5990 (sha256
5991 (base32
5992 "15ywnqx0719jl9c25yqfshmwcir57i5f4hr1ra9v9vay9ylcwndr"))))
5993 (build-system ruby-build-system)
5994 (arguments
5995 '(#:phases
5996 (modify-phases %standard-phases
5997 (add-after 'extract-gemspec 'remove-unnecessary-dependency-versions
5998 (lambda _
5999 (substitute* "minitest-around.gemspec"
6000 (("%q<cucumber>.*") "%q<cucumber>, [\">= 0\"])\n")))))))
6001 (propagated-inputs
6002 (list ruby-minitest))
6003 (native-inputs
6004 (list bundler ruby-cucumber ruby-bump ruby-test-construct))
6005 (synopsis "Run code around tests in Minitest")
6006 (description
6007 "This library provides a way to run code around tests in Minitest,
6008written using either the unit test or spec style.")
6009 (home-page "https://github.com/splattael/minitest-around")
6010 (license license:expat)))
6011
6012(define-public ruby-minitest-retry
6013 (package
6014 (name "ruby-minitest-retry")
6015 (version "0.2.2")
6016 (source (origin
6017 (method url-fetch)
6018 (uri (rubygems-uri "minitest-retry" version))
6019 (sha256
6020 (base32
6021 "1c1zq0b1a9y0hbqphq4ybijnjldlis1g6kyhx92q2ynnqfmzhfga"))))
6022 (build-system ruby-build-system)
6023 (propagated-inputs (list ruby-minitest))
6024 (synopsis "Minitest extension to re-run failing tests")
6025 (description "This package provides the @code{Minitest::Retry} class,
6026which extends Minitest to allow retrying tests when they fail.")
6027 (home-page "https://github.com/y-yagi/minitest-retry")
6028 (license license:expat)))
6029
6030(define-public ruby-minitest-sprint
6031 (package
6032 (name "ruby-minitest-sprint")
6033 (version "1.1.0")
6034 (source (origin
6035 (method url-fetch)
6036 (uri (rubygems-uri "minitest-sprint" version))
6037 (sha256
6038 (base32
6039 "179d6pj56l9xzm46fqsqj10mzjkr1f9fv4cxa8wvchs97hqz33w1"))))
6040 (build-system ruby-build-system)
6041 (native-inputs
6042 (list ruby-hoe ruby-minitest))
6043 (synopsis "Fast test suite runner for minitest")
6044 (description "Minitest-sprint is a test runner for minitest that makes it
6045easier to re-run individual failing tests.")
6046 (home-page "https://github.com/seattlerb/minitest-sprint")
6047 (license license:expat)))
6048
6049(define-public ruby-minitest-stub-const
6050 (package
6051 (name "ruby-minitest-stub-const")
6052 (version "0.6") ;for Rakefile
6053 (source (origin
6054 (method git-fetch)
6055 (uri (git-reference
6056 (url "https://github.com/adammck/minitest-stub-const")
6057 (commit (string-append "v" version))))
6058 (file-name (git-file-name name version))
6059 (sha256
6060 (base32
6061 "0cz4r9fxplx94c7wakx0998n2gv7l21prn8pfpw6z2c33k3g2xar"))))
6062 (build-system ruby-build-system)
6063 (synopsis "Stub constants for the duration of a block in MiniTest")
6064 (description "This package provides a MiniTest extension to stub constants
6065for the duration of a block in MiniTest.")
6066 (home-page "https://github.com/adammck/minitest-stub-const")
6067 (license license:expat)))
6068
6069(define-public ruby-minitest-bacon
6070 (package
6071 (name "ruby-minitest-bacon")
6072 (version "1.0.3")
6073 (source (origin
6074 (method url-fetch)
6075 (uri (rubygems-uri "minitest-bacon" version))
6076 (sha256
6077 (base32
6078 "0zhdwcl6bgha61qiyfvr7zs7ywaxc33wmj9xhxl8jdmpdvifvfaj"))))
6079 (build-system ruby-build-system)
6080 (native-inputs
6081 (list ruby-hoe))
6082 (inputs
6083 (list ruby-minitest))
6084 (synopsis "Bacon compatibility library for minitest")
6085 (description "Minitest-bacon extends minitest with bacon-like
6086functionality, making it easier to migrate test suites from bacon to minitest.")
6087 (home-page "https://github.com/seattlerb/minitest-bacon")
6088 (license license:expat)))
6089
6090(define-public ruby-minitest-focus
6091 (package
6092 (name "ruby-minitest-focus")
6093 (version "1.3.1")
6094 (source
6095 (origin
6096 (method url-fetch)
6097 (uri (rubygems-uri "minitest-focus" version))
6098 (sha256
6099 (base32
6100 "13kd2dkd9akfb99ziqndz9mir5iynyfyj2l45mcibab6mq5k8g67"))))
6101 (build-system ruby-build-system)
6102 (propagated-inputs
6103 (list ruby-minitest))
6104 (native-inputs
6105 (list ruby-hoe))
6106 (synopsis "Allows a few specific tests to be focused on")
6107 (description
6108 "@code{minitest-focus} gives the ability focus on a few tests with ease
6109without having to use command-line arguments. It introduces a @code{focus}
6110class method for use in testing classes, specifying that the next defined test
6111is to be run.")
6112 (home-page "https://github.com/seattlerb/minitest-focus")
6113 (license license:expat)))
6114
6115(define-public ruby-minitest-power-assert
6116 (package
6117 (name "ruby-minitest-power-assert")
6118 (version "0.3.1")
6119 (source (origin
6120 (method url-fetch)
6121 (uri (rubygems-uri "minitest-power_assert" version))
6122 (sha256
6123 (base32
6124 "1dazl6nbxjvvmi5jamrsygkz396s29b7cd841ni6qy4izk8jd9b7"))))
6125 (build-system ruby-build-system)
6126 (propagated-inputs (list ruby-minitest ruby-power-assert))
6127 (synopsis "Power Assert implementation for Minitest")
6128 (description "This gem provides a Power Assert implementation for
6129Minitest. It is inspired by the @code{test-unit-power_assert} gem.")
6130 (home-page "https://github.com/hsbt/minitest-power_assert")
6131 (license license:bsd-2)))
6132
6133(define-public ruby-minitest-profile
6134 (package
6135 (name "ruby-minitest-profile")
6136 (version "0.0.2")
6137 (source (origin
6138 (method url-fetch)
6139 (uri (rubygems-uri "minitest-profile" version))
6140 (sha256
6141 (base32
6142 "13h4nwbq6yv7hsaa7dpj90lry4rc5qqnpzvm9n2s57mm2xi31xfa"))))
6143 (build-system ruby-build-system)
6144 (synopsis "Display the slowest tests in a MiniTest suite")
6145 (description "This package provides a MiniTest plugin for displaying the
6146slowest tests in a minitest suite.")
6147 (home-page "https://github.com/nmeans/minitest-profile")
6148 (license license:expat)))
6149
6150(define-public ruby-minitest-proveit
6151 (package
6152 (name "ruby-minitest-proveit")
6153 (version "1.0.0")
6154 (source (origin
6155 (method url-fetch)
6156 (uri (rubygems-uri "minitest-proveit" version))
6157 (sha256
6158 (base32
6159 "0k1hpr8lgkgygfivgcsnnib7xjlf9ribgpn7yidvb4q0l0q2yfmr"))))
6160 (build-system ruby-build-system)
6161 (native-inputs (list ruby-hoe))
6162 (propagated-inputs (list ruby-minitest))
6163 (synopsis "Assertion-based tests extension for MiniTest")
6164 (description "The @code{minitest-proveit} MiniTest extension ensures all
6165tests to prove success (via at least one assertion) rather than rely on the
6166absence of failure.")
6167 (home-page "https://github.com/seattlerb/minitest-proveit")
6168 (license license:expat)))
6169
6170(define-public ruby-minitest-moar
6171 (package
6172 (name "ruby-minitest-moar")
6173 (version "0.0.4")
6174 (source
6175 (origin
6176 (method url-fetch)
6177 (uri (rubygems-uri "minitest-moar" version))
6178 (sha256
6179 (base32
6180 "0nb83blrsab92gcy6nfpw39njys7zisia8pw4igzzfzfl51cis0x"))))
6181 (build-system ruby-build-system)
6182 (arguments
6183 `(#:phases
6184 (modify-phases %standard-phases
6185 (add-before 'check 'clean-dependencies
6186 (lambda _
6187 ;; Remove all gems defined in the Gemfile because these are not
6188 ;; truly needed.
6189 (substitute* "Gemfile"
6190 (("gem .*") ""))
6191 ;; Remove byebug as not needed to run tests.
6192 (substitute* "test/test_helper.rb"
6193 (("require 'byebug'") "")))))))
6194 (native-inputs
6195 (list bundler ruby-minitest))
6196 (synopsis "Extra features and changes to MiniTest")
6197 (description "@code{MiniTest Moar} add some additional features and
6198changes some default behaviours in MiniTest. For instance, Moar replaces the
6199MiniTest @code{Object#stub} with a global @code{stub} method.")
6200 (home-page "https://github.com/dockyard/minitest-moar")
6201 (license license:expat)))
6202
6203(define-public ruby-minitest-bonus-assertions
6204 (package
6205 (name "ruby-minitest-bonus-assertions")
6206 (version "3.0")
6207 (source
6208 (origin
6209 (method url-fetch)
6210 (uri (rubygems-uri "minitest-bonus-assertions" version))
6211 (sha256
6212 (base32
6213 "1hbq9jk904xkz868yha1bqcm6azm7kmjsll2k4pn2nrcib508h2a"))))
6214 (build-system ruby-build-system)
6215 (arguments
6216 (list
6217 #:tests? #f ; Test suite has bitrotted.
6218 #:phases
6219 #~(modify-phases %standard-phases
6220 (add-before 'check 'clean-dependencies
6221 (lambda _
6222 ;; Remove unneeded require statement that would entail another
6223 ;; dependency.
6224 (substitute* "test/minitest_config.rb"
6225 (("require 'minitest/bisect'") "")))))))
6226 (native-inputs
6227 (list ruby-hoe
6228 ruby-minitest-focus
6229 ruby-minitest-moar))
6230 (synopsis "Bonus assertions for @code{Minitest}")
6231 (description
6232 "Minitest bonus assertions provides extra MiniTest assertions. For
6233instance, it provides @code{assert_true}, @code{assert_false} and
6234@code{assert_set_equal}.")
6235 (home-page "https://github.com/halostatue/minitest-bonus-assertions")
6236 (license license:expat)))
6237
6238(define-public ruby-minitest-reporters
6239 (package
6240 (name "ruby-minitest-reporters")
6241 (version "1.3.6")
6242 (source
6243 (origin
6244 (method url-fetch)
6245 (uri (rubygems-uri "minitest-reporters" version))
6246 (sha256
6247 (base32
6248 "1a3das80rwgys5rj48i5ly144nvszyqyi748bk9bss74jblcf5ay"))))
6249 (build-system ruby-build-system)
6250 (arguments
6251 '(#:phases
6252 (modify-phases %standard-phases
6253 ;; Remove the requirement on Rubocop, as it isn't useful to run, and
6254 ;; including it as an input can lead to circular dependencies.
6255 (add-after 'unpack 'remove-rubocop-from-Rakefile
6256 (lambda _
6257 (substitute* "Rakefile"
6258 (("require 'rubocop/rake\\_task'") "")
6259 (("RuboCop::RakeTask\\.new\\(:rubocop\\)") "[].each"))))
6260 (add-after 'extract-gemspec 'remove-rubocop-from-gemspec
6261 (lambda _
6262 (substitute* "minitest-reporters.gemspec"
6263 ((".*%q<rubocop>.*") "\n")))))))
6264 (propagated-inputs
6265 (list ruby-ansi ruby-builder ruby-minitest ruby-progressbar))
6266 (native-inputs
6267 (list bundler ruby-maruku))
6268 (synopsis "Enhanced reporting for Minitest tests")
6269 (description
6270 "@code{minitest/reporters} provides a custom Minitest runner to improve
6271how the test state is reported. A number of different reporters are
6272available, including a spec reporter, progress bar reporter, a HTML
6273reporter.")
6274 (home-page "https://github.com/kern/minitest-reporters")
6275 (license license:expat)))
6276
6277(define-public ruby-minitest-rg
6278 (package
6279 (name "ruby-minitest-rg")
6280 (version "5.2.0")
6281 (source
6282 (origin
6283 (method url-fetch)
6284 (uri (rubygems-uri "minitest-rg" version))
6285 (sha256
6286 (base32
6287 "0sq509ax1x62rd0w10b0hcydcxyk5bxxr3fwrgxv02r8drq2r354"))))
6288 (build-system ruby-build-system)
6289 (arguments
6290 ;; Some tests fail even outside Guix, so disable tests.
6291 ;; https://github.com/blowmage/minitest-rg/issues/12
6292 ;; https://github.com/blowmage/minitest-rg/pull/13
6293 `(#:tests? #f))
6294 (propagated-inputs
6295 (list ruby-minitest))
6296 (synopsis "Coloured output for Minitest")
6297 (description
6298 "@code{minitest-rg} changes the colour of the output from Minitest.")
6299 (home-page "https://blowmage.com/minitest-rg/")
6300 (license license:expat)))
6301
6302(define-public ruby-minitest-global-expectations
6303 (package
6304 (name "ruby-minitest-global-expectations")
6305 (version "1.0.1")
6306 (source
6307 (origin
6308 (method url-fetch)
6309 (uri (rubygems-uri "minitest-global_expectations"
6310 version))
6311 (sha256
6312 (base32
6313 "1pp3k2608spj4kvqy2y16hs18an917g6vwgvphrfhjviac83090x"))))
6314 (build-system ruby-build-system)
6315 (propagated-inputs
6316 (list ruby-minitest))
6317 (synopsis "Adjust minitest behaviour for calling expectation methods")
6318 (description
6319 "Minitest-global_expectations allows continued use of expectation methods
6320on all objects. Calling expectation methods on all objects was deprecated in
6321minitest 5.12, and is planned to be removed from minitest 6.")
6322 (home-page "https://github.com/jeremyevans/minitest-global_expectations")
6323 (license license:expat)))
6324
6325(define-public ruby-minitest-hooks
6326 (package
6327 (name "ruby-minitest-hooks")
6328 (version "1.5.2")
6329 (source
6330 (origin
6331 (method url-fetch)
6332 (uri (rubygems-uri "minitest-hooks" version))
6333 (sha256
6334 (base32 "11jb31dl5kbpyl3kgxql0p7da9066r2aqw54y5q6cni9nmld3zf5"))))
6335 (build-system ruby-build-system)
6336 (arguments
6337 '(#:tests? #f)) ; No tests bundled.
6338 (native-inputs
6339 (list ruby-sequel ruby-sqlite3))
6340 (synopsis "Hooks for the minitest framework")
6341 (description
6342 "Minitest-hooks adds @code{around}, @code{before_all}, @code{after_all},
6343@code{around_all} hooks for Minitest. This allows, for instance, running each
6344suite of specs inside a database transaction, running each spec inside its own
6345savepoint inside that transaction. This can significantly speed up testing
6346for specs that share expensive database setup code.")
6347 (home-page "https://github.com/jeremyevans/minitest-hooks")
6348 (license license:expat)))
6349
6350(define-public ruby-daemons
6351 (package
6352 (name "ruby-daemons")
6353 (version "1.2.5")
6354 (source (origin
6355 (method url-fetch)
6356 (uri (rubygems-uri "daemons" version))
6357 (sha256
6358 (base32
6359 "15smbsg0gxb7nf0nrlnplc68y0cdy13dm6fviavpmw7c630sring"))))
6360 (build-system ruby-build-system)
6361 (arguments
6362 `(#:tests? #f)) ; no test suite
6363 (synopsis "Daemonize Ruby programs")
6364 (description "Daemons provides a way to wrap existing Ruby scripts to be
6365run as a daemon and to be controlled by simple start/stop/restart commands.")
6366 (home-page "https://github.com/thuehlinger/daemons")
6367 (license license:expat)))
6368
6369(define-public ruby-dalli
6370 (package
6371 (name "ruby-dalli")
6372 (version "3.2.4")
6373 (source (origin
6374 (method git-fetch) ;for tests
6375 (uri (git-reference
6376 (url "https://github.com/petergoldstein/dalli")
6377 (commit (string-append "v" version))))
6378 (file-name (git-file-name name version))
6379 (sha256
6380 (base32
6381 "1hhqqv1j3zd2y0vr6maaabsflrvkf1x0i6z8n725mhqydp3f9gwp"))))
6382 (build-system ruby-build-system)
6383 ;; Disable tests to avoid a dependency cycle with ruby-activesupport,
6384 ;; through ruby-ruby-prof.
6385 (arguments (list #:tests? #f))
6386 (synopsis "High performance memcached client for Ruby")
6387 (description "Dalli is a high performance pure Ruby client for accessing
6388memcached servers. Dalli supports:
6389
6390@itemize
6391@item Simple and complex memcached configurations
6392@item Fail-over between memcached instances
6393@item Fine-grained control of data serialization and compression
6394@item Thread-safe operation
6395@item SSL/TLS connections to memcached
6396@item SASL authentication.
6397@end itemize
6398
6399The name is a variant of Salvador Dali for his famous painting The Persistence
6400of Memory.")
6401 (home-page "https://github.com/petergoldstein/dalli")
6402 (license license:expat)))
6403
6404(define-public ruby-data_uri
6405 (package
6406 (name "ruby-data_uri")
6407 (version "0.1.0")
6408 (source
6409 (origin
6410 (method url-fetch)
6411 (uri (rubygems-uri "data_uri" version))
6412 (sha256
6413 (base32
6414 "0fzkxgdxrlbfl4537y3n9mjxbm28kir639gcw3x47ffchwsgdcky"))))
6415 (build-system ruby-build-system)
6416 (synopsis "URI class for parsing data URIs")
6417 (description
6418 "Data @acronym{URI, universal resource identifier}s allow resources to be
6419embedded inside a URI. The URI::Data class provides support for parsing these
6420URIs using the normal URI.parse method.")
6421 (home-page "https://github.com/dball/data_uri")
6422 (license license:expat)))
6423
6424(define-public ruby-debug
6425 (package
6426 (name "ruby-debug")
6427 (version "1.7.2")
6428 (source (origin
6429 (method url-fetch)
6430 (uri (rubygems-uri "debug" version))
6431 (sha256
6432 (base32
6433 "0x59508j69w9p275gabysv521n210pd3n060gqfgsiqjms1h0ldf"))))
6434 (build-system ruby-build-system)
6435 (arguments (list #:test-target "test_all"))
6436 (propagated-inputs (list ruby-irb ruby-reline))
6437 (synopsis "Debugging functionality for Ruby")
6438 (description "Debugging functionality for Ruby. This is completely
6439rewritten debug.rb which was contained by the ancient Ruby versions. It is
6440included with Ruby itself, but this package is made available so that the
6441latest version can be made available independently from Ruby.")
6442 (home-page "https://github.com/ruby/debug")
6443 (license license:bsd-2)))
6444
6445(define-public ruby-deep-merge
6446 (package
6447 (name "ruby-deep-merge")
6448 (version "1.2.1")
6449 (home-page "https://github.com/danielsdeleo/deep_merge")
6450 ;; The Rubygem source does not contain the gemspec required for tests.
6451 (source (origin
6452 (method git-fetch)
6453 (uri (git-reference (url home-page) (commit version)))
6454 (file-name (git-file-name name version))
6455 (sha256
6456 (base32
6457 "0c9rk23ilhc0n4489y6lda2wzphpzh6ish6fahlbpjhxn82wb931"))))
6458 (build-system ruby-build-system)
6459 (native-inputs
6460 (list ruby-minitest))
6461 (synopsis "Recursively merge hashes")
6462 (description
6463 "Deep Merge is a set of utility functions for @code{Hash}. It permits
6464you to merge elements inside a hash together recursively.")
6465 (license license:expat)))
6466
6467(define-public ruby-delayed-job
6468 (package
6469 (name "ruby-delayed-job")
6470 (version "4.1.11")
6471 (source (origin
6472 (method url-fetch)
6473 (uri (rubygems-uri "delayed_job" version))
6474 (sha256
6475 (base32
6476 "0s2xg72ljg4cwmr05zi67vcyz8zib46gvvf7rmrdhsyq387m2qcq"))))
6477 (build-system ruby-build-system)
6478 (arguments
6479 (list #:phases
6480 #~(modify-phases %standard-phases
6481 (add-after 'unpack 'disable-bundler
6482 (lambda _
6483 (substitute* "Rakefile"
6484 (("require 'bundler/setup'") "")
6485 (("Bundler::GemHelper\\.install_tasks") ""))))
6486 (add-after 'unpack 'disable-rubocop
6487 (lambda _
6488 (substitute* "Rakefile"
6489 (("require 'rubocop/rake_task'") "")
6490 (("RuboCop::RakeTask.new") ""))))
6491 (add-after 'extract-gemspec 'remove-dependency-on-actionmailer
6492 (lambda _
6493 (substitute* "spec/helper.rb"
6494 (("require 'action_mailer'") ""))
6495 (substitute* "delayed_job.gemspec"
6496 (("\"spec/performable_mailer_spec.rb\".freeze, ") ""))
6497 (delete-file "spec/performable_mailer_spec.rb"))))))
6498 (native-inputs
6499 (list ruby-activerecord
6500 ruby-rspec
6501 ruby-simplecov
6502 ruby-simplecov-lcov
6503 ruby-zeitwerk
6504 ruby-mini-portile-2))
6505 (propagated-inputs
6506 (list ruby-activesupport))
6507 (synopsis "Asynchronous background tasks execution library")
6508 (description "Delayed_job (or DJ) encapsulates the common pattern of
6509asynchronously executing longer tasks in the background. It is a direct
6510extraction from Shopify where the job table is responsible for a multitude of
6511core tasks.")
6512 (home-page "https://github.com/collectiveidea/delayed_job")
6513 (license license:expat)))
6514
6515(define-public ruby-git
6516 (package
6517 (name "ruby-git")
6518 (version "1.3.0")
6519 (source (origin
6520 (method url-fetch)
6521 (uri (rubygems-uri "git" version))
6522 (sha256
6523 (base32
6524 "1waikaggw7a1d24nw0sh8fd419gbf7awh000qhsf411valycj6q3"))))
6525 (build-system ruby-build-system)
6526 (arguments
6527 `(#:tests? #f ; no tests
6528 #:phases (modify-phases %standard-phases
6529 (add-after 'install 'patch-git-binary
6530 (lambda* (#:key inputs outputs #:allow-other-keys)
6531 ;; Make the default git binary an absolute path to the
6532 ;; store.
6533 (let ((git (search-input-file inputs "/bin/git"))
6534 (config (string-append
6535 (assoc-ref outputs "out")
6536 "/lib/ruby/vendor_ruby/gems/git-"
6537 ,version "/lib/git/config.rb")))
6538 (substitute* (list config)
6539 (("'git'")
6540 (string-append "'" git "'")))))))))
6541 (inputs
6542 (list git))
6543 (synopsis "Ruby wrappers for Git")
6544 (description "Ruby/Git is a Ruby library that can be used to create, read
6545and manipulate Git repositories by wrapping system calls to the git binary.")
6546 (home-page "https://github.com/schacon/ruby-git")
6547 (license license:expat)))
6548
6549(define-public ruby-hocon
6550 (package
6551 (name "ruby-hocon")
6552 (version "1.4.0")
6553 (home-page "https://github.com/puppetlabs/ruby-hocon")
6554 (source (origin
6555 (method git-fetch)
6556 (uri (git-reference (url home-page) (commit version)))
6557 (file-name (git-file-name name version))
6558 (sha256
6559 (base32
6560 "04wgv0pwrghawnl6qp346z59fvp9v37jymq8p0lsrzxa6nvrykmk"))))
6561 (build-system ruby-build-system)
6562 (arguments
6563 (list
6564 #:phases
6565 #~(modify-phases %standard-phases
6566 (replace 'check
6567 (lambda* (#:key tests? #:allow-other-keys)
6568 (if tests?
6569 (invoke "rspec")
6570 (format #t "test suite not run~%")))))))
6571 (native-inputs
6572 (list bundler ruby-rspec))
6573 (synopsis "HOCON config library")
6574 (description
6575 "This package provides Ruby support for the @acronym{HOCON,
6576Human-Optimized Config Object Notation} configuration file format. It
6577supports parsing and modifying HOCON and JSON files, and rendering parsed
6578objects back to a @code{String}.")
6579 (license license:asl2.0)))
6580
6581(define-public ruby-slop
6582 (package
6583 (name "ruby-slop")
6584 (version "4.10.1")
6585 (source (origin
6586 (method url-fetch)
6587 (uri (rubygems-uri "slop" version))
6588 (sha256
6589 (base32
6590 "1iyrjskgxyn8i1679qwkzns85p909aq77cgx2m4fs5ygzysj4hw4"))))
6591 (build-system ruby-build-system)
6592 (synopsis "Ruby command line option parser")
6593 (description "Slop provides a Ruby domain specific language for gathering
6594options and parsing command line flags.")
6595 (home-page "https://github.com/leejarvis/slop")
6596 (license license:expat)))
6597
6598(define-public ruby-slop-3
6599 (package (inherit ruby-slop)
6600 (version "3.6.0")
6601 (source (origin
6602 (method url-fetch)
6603 (uri (rubygems-uri "slop" version))
6604 (sha256
6605 (base32
6606 "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n"))))))
6607
6608(define-public ruby-multi-xml
6609 (package
6610 (name "ruby-multi-xml")
6611 (version "0.6.0")
6612 (source
6613 (origin
6614 (method url-fetch)
6615 (uri (rubygems-uri "multi_xml" version))
6616 (sha256
6617 (base32
6618 "0lmd4f401mvravi1i1yq7b2qjjli0yq7dfc4p1nj5nwajp7r6hyj"))))
6619 (build-system ruby-build-system)
6620 (arguments
6621 '(#:tests? #f)) ; No included tests
6622 (synopsis "Swappable XML backends for Ruby")
6623 (description
6624 "@code{MultiXml} provides swappable XML backends utilizing either LibXML,
6625Nokogiri, Ox, or REXML.")
6626 (home-page "https://github.com/sferik/multi_xml")
6627 (license license:expat)))
6628
6629(define-public ruby-multipart-parser
6630 (package
6631 (name "ruby-multipart-parser")
6632 (version "0.1.1")
6633 (source (origin
6634 (method url-fetch)
6635 (uri (rubygems-uri "multipart-parser" version))
6636 (sha256
6637 (base32
6638 "0xb4p475yrfm883h9kn80a021myn17dvs50wpa1djzcmlq7p0882"))))
6639 (build-system ruby-build-system)
6640 (arguments
6641 (list
6642 #:phases #~(modify-phases %standard-phases
6643 (add-after 'unpack 'skip-failing-test
6644 ;; One test fails for unknown reasons (see:
6645 ;; https://github.com/danabr/multipart-parser/issues/7).
6646 (lambda _
6647 (substitute* "test/multipart_parser/reader_test.rb"
6648 (("def test_long" all)
6649 (string-append all "\n return true"))))))))
6650 (synopsis "Parser for multipart MIME messages")
6651 (description "@code{multipart-parser} is a simple parser for multipart
6652MIME messages, written in Ruby, based on felixge/node-formidable's parser. It
6653has the following characteristics:
6654@itemize
6655@item Pure Ruby
6656@item Event-driven API
6657@item Only supports one level of multipart parsing
6658@item Does not perform I/O
6659@item Does not depend on any other library.
6660@end itemize")
6661 (home-page "https://github.com/danabr/multipart-parser")
6662 (license license:expat)))
6663
6664(define-public ruby-multipart-post
6665 (package
6666 (name "ruby-multipart-post")
6667 (version "2.0.0")
6668 (source (origin
6669 (method url-fetch)
6670 (uri (rubygems-uri "multipart-post" version))
6671 (sha256
6672 (base32
6673 "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x"))))
6674 (build-system ruby-build-system)
6675 (native-inputs
6676 (list bundler))
6677 (synopsis "Multipart POST library for Ruby")
6678 (description "Multipart-Post Adds multipart POST capability to Ruby's
6679net/http library.")
6680 (home-page "https://github.com/nicksieger/multipart-post")
6681 (license license:expat)))
6682
6683(define-public ruby-multi-json
6684 (package
6685 (name "ruby-multi-json")
6686 (version "1.15.0")
6687 (source
6688 (origin
6689 (method git-fetch)
6690 ;; Tests are not distributed at rubygems.org so download from GitHub
6691 ;; instead.
6692 (uri (git-reference
6693 (url "https://github.com/intridea/multi_json")
6694 (commit (string-append "v" version))))
6695 (file-name (git-file-name name version))
6696 (sha256
6697 (base32
6698 "0mkdvy6i00yyksjvnv6znh7wf89j9506qzzjq6bsbmbkyqrszp4d"))))
6699 (build-system ruby-build-system)
6700 (arguments
6701 (list
6702 ;; TODO Tests don't currently work with Ruby 3
6703 #:tests? #f
6704 #:phases
6705 #~(modify-phases %standard-phases
6706 (add-before 'check 'pre-check
6707 (lambda _
6708 ;; As seen in the .travis.yml file.
6709 (setenv "SKIP_ADAPTERS" "gson,jr_jackson,nsjsonserialization"))))))
6710 (native-inputs
6711 (list ruby-rspec ruby-json-pure ruby-oj ruby-yajl-ruby))
6712 (synopsis "Common interface to multiple JSON libraries for Ruby")
6713 (description
6714 "This package provides a common interface to multiple JSON libraries,
6715including Oj, Yajl, the JSON gem (with C-extensions), the pure-Ruby JSON gem,
6716NSJSONSerialization, gson.rb, JrJackson, and OkJson.")
6717 (home-page "https://github.com/intridea/multi_json")
6718 (license license:expat)))
6719
6720(define-public ruby-multi-test
6721 (package
6722 (name "ruby-multi-test")
6723 (version "0.1.2")
6724 (source
6725 (origin
6726 (method url-fetch)
6727 (uri (rubygems-uri "multi_test" version))
6728 (sha256
6729 (base32
6730 "1sx356q81plr67hg16jfwz9hcqvnk03bd9n75pmdw8pfxjfy1yxd"))))
6731 (build-system ruby-build-system)
6732 (arguments
6733 '(;; Tests require different sets of specific gem versions to be available,
6734 ;; and there is no gemfile that specifies the newest versions of
6735 ;; dependencies to be tested.
6736 #:tests? #f))
6737 (synopsis
6738 "Interface to testing libraries loaded into a running Ruby process")
6739 (description
6740 "@code{multi_test} provides a uniform interface onto whatever testing
6741libraries that have been loaded into a running Ruby process to help control
6742rogue test/unit/autorun requires.")
6743 (home-page "https://github.com/cucumber/multi_test")
6744 (license license:expat)))
6745
6746(define-public ruby-arr-pm
6747 (package
6748 (name "ruby-arr-pm")
6749 (version "0.0.12")
6750 (source (origin
6751 (method url-fetch)
6752 (uri (rubygems-uri "arr-pm" version))
6753 (sha256
6754 (base32
6755 "0fddw0vwdrr7v3a0lfqbmnd664j48a9psrjd3wh3k4i3flplizzx"))))
6756 (build-system ruby-build-system)
6757 (arguments
6758 (list #:phases
6759 #~(modify-phases %standard-phases
6760 (replace 'check
6761 (lambda* (#:key tests? #:allow-other-keys)
6762 (when tests?
6763 (invoke "rspec")))))))
6764 (native-inputs (list ruby-flores ruby-insist ruby-rspec ruby-stud))
6765 (synopsis "RPM reader/writer library written in Ruby")
6766 (description "This library allows reading and writing RPM packages. It is
6767used by the @command{fpm} tool. It is written in pure Ruby because
6768@code{librpm} is not available on all systems and requires many
6769dependencies.")
6770 (home-page "https://github.com/jordansissel/ruby-arr-pm")
6771 (license license:asl2.0)))
6772
6773(define-public ruby-arel
6774 (package
6775 (name "ruby-arel")
6776 (version "9.0.0")
6777 (source (origin
6778 (method url-fetch)
6779 (uri (rubygems-uri "arel" version))
6780 (sha256
6781 (base32
6782 "1jk7wlmkr61f6g36w9s2sn46nmdg6wn2jfssrhbhirv5x9n95nk0"))))
6783 (build-system ruby-build-system)
6784 (arguments '(#:tests? #f)) ; no tests
6785 (home-page "https://github.com/rails/arel")
6786 (synopsis "SQL AST manager for Ruby")
6787 (description "Arel is an SQL @dfn{Abstract Syntax Tree} (AST) manager for
6788Ruby. It simplifies the generation of complex SQL queries and adapts to
6789various relational database implementations.")
6790 (license license:expat)))
6791
6792(define-public ruby-minitar
6793 ;; We package from the GitHub source to fix the security issue reported at
6794 ;; https://github.com/halostatue/minitar/issues/16.
6795 (let ((commit "e25205ecbb6277ae8a3df1e6a306d7ed4458b6e4"))
6796 (package
6797 (name "ruby-minitar")
6798 (version (string-append "0.5.4-1." (string-take commit 8)))
6799 (source
6800 (origin
6801 (method git-fetch)
6802 (uri (git-reference
6803 (url "https://github.com/halostatue/minitar")
6804 (commit commit)))
6805 (file-name (string-append name "-" version "-checkout"))
6806 (sha256
6807 (base32
6808 "1iywfx07jgjqcmixzkxk9zdwfmij1fyg1z2jlwzj15cj7s99qlfv"))))
6809 (build-system ruby-build-system)
6810 (arguments
6811 '(#:tests? #f)) ; missing a gemspec
6812 (synopsis "Ruby library and utility for handling tar archives")
6813 (description
6814 "Archive::Tar::Minitar is a pure-Ruby library and command-line utility
6815that provides the ability to deal with POSIX tar archive files.")
6816 (home-page "http://www.github.com/atoulme/minitar")
6817 (license (list license:gpl2+ license:ruby)))))
6818
6819(define-public ruby-mini-portile
6820 (package
6821 (name "ruby-mini-portile")
6822 (version "0.6.2")
6823 (source
6824 (origin
6825 (method url-fetch)
6826 (uri (rubygems-uri "mini_portile" version))
6827 (sha256
6828 (base32
6829 "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w"))))
6830 (build-system ruby-build-system)
6831 (arguments
6832 '(#:tests? #f)) ; tests require network access
6833 (synopsis "Ports system for Ruby developers")
6834 (description "Mini-portile is a port/recipe system for Ruby developers.
6835It provides a standard way to compile against specific versions of libraries
6836to reproduce user environments.")
6837 (home-page "https://github.com/flavorjones/mini_portile")
6838 (license license:expat)))
6839
6840(define-public ruby-mini-portile-2
6841 (package
6842 (inherit ruby-mini-portile)
6843 (version "2.8.2")
6844 (source (origin
6845 (method url-fetch)
6846 (uri (rubygems-uri "mini_portile2" version))
6847 (sha256
6848 (base32
6849 "0z7f38iq37h376n9xbl4gajdrnwzq284c9v1py4imw3gri2d5cj6"))))))
6850
6851(define-public ruby-nokogiri
6852 (package
6853 (name "ruby-nokogiri")
6854 (version "1.15.2")
6855 (source (origin
6856 (method git-fetch)
6857 (uri (git-reference
6858 (url "https://github.com/sparklemotion/nokogiri")
6859 (commit "a6ad20b3edc8f020043ccfe5d9ec6ae9af103720")))
6860 (file-name (git-file-name name version))
6861 (sha256
6862 (base32
6863 "1n0vlg6v58jw3qzgyihz1dh5fvp4js1qgdh75j0kn47nvyiw3jxj"))
6864 (patches (search-patches "ruby-nokogiri.patch"))))
6865 (build-system ruby-build-system)
6866 (arguments
6867 (list #:gem-flags #~(list "--" "--use-system-libraries"
6868 (string-append "--with-xml2-include="
6869 #$(this-package-input "libxml2")
6870 "/include/libxml2"))
6871 #:phases #~(modify-phases %standard-phases
6872 (add-after 'install 'delete-mkmf.log
6873 (lambda _
6874 ;; Rubygems installs build log files that embed volatile file
6875 ;; names (see:
6876 ;; https://github.com/rubygems/rubygems/issues/6259).
6877 (for-each delete-file
6878 (find-files #$output "^mkmf\\.log$"))))
6879 (delete 'check)
6880 (add-after 'install 'check
6881 (lambda* (#:key tests? #:allow-other-keys)
6882 (setenv "GEM_PATH" (string-append
6883 (getenv "GEM_PATH") ":"
6884 #$output "/lib/ruby/vendor_ruby"))
6885 (when tests?
6886 (for-each (lambda (file)
6887 (invoke "ruby" "-Itest" file))
6888 (find-files "test" "^test_.*\\.rb"))))))))
6889 (native-inputs (list ruby-hoe ruby-rubyzip))
6890 (inputs (list zlib libxml2 libxslt))
6891 (propagated-inputs (list ruby-mini-portile-2 ruby-pkg-config))
6892 (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
6893 (description "Nokogiri (鋸) parses and searches XML/HTML, and features
6894both CSS3 selector and XPath 1.0 support.")
6895 (home-page "https://nokogiri.org/")
6896 (license license:expat)))
6897
6898(define-public ruby-method-source
6899 (package
6900 (name "ruby-method-source")
6901 (version "1.0.0")
6902 (source
6903 (origin
6904 (method url-fetch)
6905 (uri (rubygems-uri "method_source" version))
6906 (sha256
6907 (base32
6908 "1pnyh44qycnf9mzi1j6fywd5fkskv3x7nmsqrrws0rjn5dd4ayfp"))))
6909 (build-system ruby-build-system)
6910 (arguments
6911 `(#:test-target "spec"
6912 #:phases
6913 (modify-phases %standard-phases
6914 (add-after 'unpack 'remove-git-ls-files
6915 (lambda* (#:key outputs #:allow-other-keys)
6916 (substitute* "Rakefile"
6917 (("git ls-files") "find . -type f")))))))
6918 (native-inputs
6919 (list ruby-rspec))
6920 (synopsis "Retrieve the source code for Ruby methods")
6921 (description "Method_source retrieves the source code for Ruby methods.
6922Additionally, it can extract source code from Proc and Lambda objects or just
6923extract comments.")
6924 (home-page "https://github.com/banister/method_source")
6925 (license license:expat)))
6926
6927(define-public ruby-coderay
6928 (package
6929 (name "ruby-coderay")
6930 (version "1.1.2")
6931 (source
6932 (origin
6933 (method url-fetch)
6934 (uri (rubygems-uri "coderay" version))
6935 (sha256
6936 (base32
6937 "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y"))))
6938 (build-system ruby-build-system)
6939 (arguments
6940 '(#:tests? #f)) ; missing test files
6941 (synopsis "Ruby syntax highlighting library")
6942 (description "Coderay is a Ruby library that provides syntax highlighting
6943for select languages.")
6944 (home-page "http://coderay.rubychan.de")
6945 (license license:expat)))
6946
6947(define-public ruby-cuke-modeler
6948 (package
6949 (name "ruby-cuke-modeler")
6950 (version "3.20.1")
6951 (source (origin
6952 (method git-fetch)
6953 (uri (git-reference
6954 (url "https://github.com/enkessler/cuke_modeler")
6955 (commit (string-append "v" version))))
6956 (file-name (git-file-name name version))
6957 (sha256
6958 (base32
6959 "0xbnx1blxm4kfhfwfh58n2ja40p2kfw8hbbz60dlzvghz25vcwy6"))))
6960 (build-system ruby-build-system)
6961 (arguments
6962 (list #:test-target "default"
6963 #:phases
6964 #~(modify-phases %standard-phases
6965 (add-after 'unpack 'improve-reproducibility
6966 (lambda _
6967 (substitute*
6968 "testing/rspec/spec/unit/cuke_modeler_unit_spec.rb"
6969 (("#\\{Time.now.year\\}") ""))))
6970 (add-after 'unpack 'relax-requirements
6971 (lambda _
6972 (substitute* "Gemfile"
6973 ;; Cucumber appears pinned to an older version for no
6974 ;; particular reason (see:
6975 ;; https://github.com/enkessler/cuke_modeler/issues/14).
6976 (("'cucumber', '2.2.0'")
6977 "'cucumber', '>= 2.2.0'")
6978 (("^gherkin_major_version_used = .*")
6979 (string-append
6980 "gherkin_major_version_used = "
6981 #$(car
6982 (string-split
6983 (package-version
6984 (this-package-input "ruby-cucumber-gherkin")) #\.))
6985 "\n")))
6986 ;; Disable Bundler.
6987 (substitute* "bin/console"
6988 (("require 'bundler/setup'") ""))
6989 (substitute* "rakefiles/testing_tasks.rb"
6990 (("'bundle', 'exec', ") ""))
6991 ;; Remove extraneous dependencies.
6992 (substitute* "cuke_modeler.gemspec"
6993 ((".*bundler.*") "")
6994 ((".*rubocop.*") "")
6995 ((".*yard.*") ""))
6996 (substitute* "Rakefile"
6997 (("Rainbow.enabled = true") "")
6998 (("require_relative 'rakefiles/documentation_tasks'") "")
6999 (("require_relative 'rakefiles/other_tasks'") "")
7000 (("require_relative 'rakefiles/release_tasks'") "")))))))
7001 (native-inputs
7002 (list ruby-childprocess
7003 ruby-cucumber
7004 ruby-rainbow
7005 ruby-rspec
7006 ruby-simplecov
7007 ruby-simplecov-lcov))
7008 (propagated-inputs (list ruby-cucumber-gherkin))
7009 (synopsis "Gherkin test suite analysis tool")
7010 (description "CukeModeler facilitates modeling a test suite that is
7011written in Gherkin (e.g. Cucumber, SpecFlow, Lettuce, etc.). It does this by
7012providing an abstraction layer on top of the Abstract Syntax Tree (AST) that
7013the @code{cucumber-gherkin} generates when parsing features, as well as
7014providing models for feature files and directories in order to be able to have
7015a fully traversable model tree of a test suite's structure. These models can
7016then be analyzed or manipulated more easily than the underlying AST layer.")
7017 (home-page "https://github.com/enkessler/cuke_modeler")
7018 (license license:expat)))
7019
7020(define-public ruby-parallel-tests
7021 (package
7022 (name "ruby-parallel-tests")
7023 (version "4.9.0")
7024 (home-page "https://github.com/grosser/parallel_tests")
7025 (source (origin
7026 (method git-fetch)
7027 (uri (git-reference
7028 (url home-page)
7029 (commit (string-append "v" version))))
7030 (file-name (string-append name version))
7031 (sha256
7032 (base32
7033 "0ljb17i1bvlr0y1avwishcrg60h48bj6iwgkp8yrck08wcs7b338"))))
7034 (build-system ruby-build-system)
7035 (arguments
7036 '(#:test-target "spec" ;avoid rubocop dependency
7037 #:phases (modify-phases %standard-phases
7038 (add-after 'patch-source-shebangs 'patch-shell-invocations
7039 (lambda _
7040 (substitute* '("lib/parallel_tests/tasks.rb"
7041 "spec/parallel_tests/tasks_spec.rb")
7042 (("/bin/sh") (which "sh"))
7043 (("/bin/bash") (which "bash")))))
7044 (add-before 'check 'relax-requirements
7045 (lambda _
7046 ;; Remove hard coded version constraints, instead just
7047 ;; use whatever versions are available in Guix.
7048 (delete-file "Gemfile.lock")
7049 (substitute* "Gemfile"
7050 (("'minitest',.*")
7051 "'minitest'\n")
7052 (("'cucumber',.*")
7053 "'cucumber'\n")
7054 ;; Do not depend on a git-fetched spinach version.
7055 (("gem 'spinach',.*")
7056 "gem 'spinach'\n")
7057 ((".*rubocop.*") ""))))
7058 (add-before 'check 'disable-rails-test
7059 (lambda _
7060 ;; XXX: This test attempts to download and run the test
7061 ;; suites of multiple Rails versions(!) directly.
7062 (delete-file "spec/rails_spec.rb")))
7063 (add-before 'check 'disable-problematic-tests
7064 (lambda _
7065 ;; This test fails, probably because of the newer
7066 ;; Cucumber version used here.
7067 (delete-file "spec/parallel_tests/cucumber/\
7068failure_logger_spec.rb") ))
7069 (add-before 'check 'set-HOME
7070 (lambda _
7071 ;; Some tests check the output of Bundler, and fail when
7072 ;; Bundler warns that /homeless-shelter does not exist.
7073 (setenv "HOME" "/tmp"))))))
7074 (native-inputs
7075 (list ruby-bump
7076 ruby-cucumber
7077 ruby-cuke-modeler
7078 ruby-minitest
7079 ruby-rake
7080 ruby-rspec
7081 ruby-spinach))
7082 (propagated-inputs
7083 (list ruby-parallel))
7084 (synopsis "Run tests in parallel")
7085 (description
7086 "This package can speed up @code{Test::Unit}, @code{RSpec},
7087@code{Cucumber}, and @code{Spinach} tests by running them concurrently
7088across multiple CPU cores.")
7089 (license license:expat)))
7090
7091(define-public ruby-parser
7092 (package
7093 (name "ruby-parser")
7094 (version "3.3.7.0")
7095 (source
7096 (origin
7097 (method url-fetch)
7098 (uri (rubygems-uri "parser" version))
7099 (sha256
7100 (base32
7101 "16qi2qhpszm842awxghmsp64yvvawafq96w5jw98irz3f4bh2jbl"))))
7102 (build-system ruby-build-system)
7103 (arguments '(#:tests? #f)) ; tests not included in gem
7104 (native-inputs (list bundler ruby-cliver ruby-simplecov))
7105 (inputs (list ragel))
7106 (propagated-inputs (list ruby-ast ruby-racc))
7107 (synopsis "Ruby parser written in pure Ruby")
7108 (description
7109 "This package provides a Ruby parser written in pure Ruby.")
7110 (home-page "https://github.com/whitequark/parser")
7111 (license license:expat)))
7112
7113(define-public ruby-set
7114 (package
7115 (name "ruby-set")
7116 (version "1.0.3")
7117 (source (origin
7118 (method url-fetch)
7119 (uri (rubygems-uri "set" version))
7120 (sha256
7121 (base32
7122 "07kc057nrkddrybqmlbmgf9x7nsmbc3ni6gy1z6xjx5b838vlj33"))))
7123 (build-system ruby-build-system)
7124 (synopsis
7125 "Ruby class to deal with collections of unordered, unique values")
7126 (description
7127 "This package provides a class to deal with collections of unordered,
7128unique values")
7129 (home-page "https://github.com/ruby/set")
7130 (license license:bsd-2)))
7131
7132(define-public ruby-sexp-processor
7133 (package
7134 (name "ruby-sexp-processor")
7135 (version "4.17.0")
7136 (source
7137 (origin
7138 (method url-fetch)
7139 (uri (rubygems-uri "sexp_processor" version))
7140 (sha256
7141 (base32
7142 "0vzz9mhg4kkdqf179pm30i204h7iskanxrk53j0csf0qrrs4iajd"))))
7143 (build-system ruby-build-system)
7144 (native-inputs
7145 (list ruby-hoe
7146 ruby-minitest
7147 ruby-minitest-proveit))
7148 (synopsis "ParseTree fork which includes generic S-exp processing tools")
7149 (description "The sexp_processor package is derived from ParseTree, but
7150contrary to ParseTree, it includes all the generic S-exp processing tools.
7151Amongst the included tools are @code{Sexp}, @code{SexpProcessor} and
7152@code{Environment}")
7153 (home-page "https://github.com/seattlerb/sexp_processor")
7154 (license license:expat)))
7155
7156(define-public ruby-ruby-parser
7157 (package
7158 (name "ruby-ruby-parser")
7159 (version "3.20.2")
7160 (source
7161 (origin
7162 (method url-fetch)
7163 (uri (rubygems-uri "ruby_parser" version))
7164 (sha256
7165 (base32
7166 "0q851n8654wkjrq8jawq8vi5yhr1y9vpyr2vj7cnn3sa4ikg6d3z"))))
7167 (build-system ruby-build-system)
7168 (arguments
7169 (list
7170 #:phases
7171 #~(modify-phases %standard-phases
7172 (add-after 'unpack 'patch
7173 (lambda _
7174 (substitute* "Rakefile"
7175 (("`which bison`")
7176 (string-append "\"" (which "bison") "\""))
7177 (("which unifdef")
7178 (which "unifdef"))))))))
7179 (native-inputs
7180 (list ruby-hoe
7181 ruby-racc
7182 unifdef
7183 bison
7184 ruby-minitest))
7185 (propagated-inputs
7186 (list ruby-sexp-processor))
7187 (home-page "https://github.com/seattlerb/ruby_parser/")
7188 (synopsis "Ruby parser written in pure Ruby")
7189 (description "The ruby_parser (RP) package provides a Ruby parser written
7190in pure Ruby. It outputs S-expressions which can be manipulated and converted
7191back to Ruby via the @code{ruby2ruby} library.")
7192 (license license:expat)))
7193
7194(define-public ruby-ruby-version
7195 (package
7196 (name "ruby-ruby-version")
7197 (version "1.0.2")
7198 (source (origin
7199 (method url-fetch)
7200 (uri (rubygems-uri "ruby_version" version))
7201 (sha256
7202 (base32
7203 "0lvc7bd5ps3w2vq2wb02i0pi3vfcx2rnckx2ix4rjym1qf52kb2j"))))
7204 (build-system ruby-build-system)
7205 (arguments
7206 (list #:phases
7207 #~(modify-phases %standard-phases
7208 (add-after 'extract-gemspec 'delete-gem-files
7209 ;; There are some pre-built files in the source, and
7210 ;; registered in the .gemspec (see:
7211 ;; https://github.com/janlelis/ruby_version/issues/1).
7212 (lambda _
7213 (delete-file-recursively "pkg")
7214 (substitute* "ruby_version.gemspec"
7215 (("\"pkg/ruby_version-1.0.0.gem\".freeze, ")
7216 "")
7217 (("\"pkg/ruby_version-1.0.1.gem\".freeze, ")
7218 ""))))
7219 (add-after 'extract-gemspec 'relax-requirements
7220 (lambda _
7221 (delete-file "Gemfile.lock")
7222 (substitute* "ruby_version.gemspec"
7223 (("\"Gemfile.lock\".freeze, ") "")
7224 ;; Allow a newers versions of development dependencies.
7225 (("~>") ">=")))))))
7226 (native-inputs (list ruby-rdoc ruby-rubygems-tasks ruby-rspec))
7227 (synopsis "Ruby class for checking the Ruby version")
7228 (description "This package provides a @code{RubyVersion} class which
7229offers a convenient Domain Specific Language (DSL) for checking for the right
7230Ruby version.")
7231 (home-page "https://github.com/janlelis/ruby_version")
7232 (license license:expat)))
7233
7234(define-public ruby-prawn-manual-builder
7235 (package
7236 (name "ruby-prawn-manual-builder")
7237 (version "0.3.1")
7238 (source
7239 (origin
7240 (method url-fetch)
7241 (uri (rubygems-uri "prawn-manual_builder" version))
7242 (sha256
7243 (base32 "1vlg5w7wq43g2hgpgra2nrcxj1kb4ayqliz4gmja2rhs037j2vzs"))))
7244 (build-system ruby-build-system)
7245 (arguments
7246 '(#:tests? #f ; no included tests
7247 #:phases
7248 (modify-phases %standard-phases
7249 (add-after 'extract-gemspec 'patch-gemspec
7250 (lambda _
7251 (substitute* ".gemspec"
7252 ;; Loosen the requirement for pdf-inspector
7253 (("~> 1\\.0\\.7") ">= 0")))))))
7254 (propagated-inputs
7255 (list ruby-coderay))
7256 (synopsis "Tool for writing manuals for Prawn and Prawn accessories")
7257 (description
7258 "This package provides a tool for writing manuals for Prawn and Prawn
7259accessories")
7260 (home-page "https://github.com/prawnpdf/prawn-manual_builder")
7261 (license %prawn-project-licenses)))
7262
7263(define-public ruby-progress_bar
7264 (package
7265 (name "ruby-progress_bar")
7266 (version "1.1.0")
7267 (source
7268 (origin
7269 (method url-fetch)
7270 (uri (rubygems-uri "progress_bar" version))
7271 (sha256
7272 (base32
7273 "1qc40mr6p1z9a3vlpnsg1zfgk1qswviql2a31y63wpv3vr6b5f48"))))
7274 (build-system ruby-build-system)
7275 (arguments
7276 '(#:test-target "spec"))
7277 (propagated-inputs
7278 (list ruby-highline ruby-options))
7279 (native-inputs
7280 (list bundler ruby-rspec ruby-timecop))
7281 (synopsis
7282 "Ruby library for displaying progress bars")
7283 (description
7284 "ProgressBar is a simple library for displaying progress bars. The
7285maximum value is configurable, and additional information can be displayed
7286like the percentage completion, estimated time remaining, elapsed time and
7287rate.")
7288 (home-page "https://github.com/paul/progress_bar")
7289 (license license:wtfpl2)))
7290
7291(define-public ruby-progressbar
7292 (package
7293 (name "ruby-progressbar")
7294 (version "1.10.1")
7295 (source
7296 (origin
7297 (method url-fetch)
7298 (uri (rubygems-uri "ruby-progressbar" version))
7299 (sha256
7300 (base32 "1k77i0d4wsn23ggdd2msrcwfy0i376cglfqypkk2q77r2l3408zf"))))
7301 (build-system ruby-build-system)
7302 (arguments
7303 '(;; TODO: There looks to be a circular dependency with ruby-fuubar.
7304 #:tests? #f))
7305 (synopsis "Text progress bar library for Ruby")
7306 (description
7307 "Ruby/ProgressBar is an flexible text progress bar library for Ruby.
7308The output can be customized with a formatting system.")
7309 (home-page "https://github.com/jfelchner/ruby-progressbar")
7310 (license license:expat)))
7311
7312(define-public ruby-latest-ruby
7313 (package
7314 (name "ruby-latest-ruby")
7315 (version "3.1.0")
7316 (source (origin
7317 (method url-fetch)
7318 (uri (rubygems-uri "latest_ruby" version))
7319 (sha256
7320 (base32
7321 "15rqwgxzpnkzdiz8m02jra0zq5sx0fiz61vkfrj1ls6slqfhnzqg"))))
7322 (build-system ruby-build-system)
7323 (arguments
7324 '(#:tests? #f)) ; No Rakefile
7325 (synopsis "Answers the question of what the latest Ruby version is")
7326 (description "Knows about MRI, Rubinius, JRuby, MagLev and MacRuby.")
7327 (home-page "https://github.com/kyrylo/latest_ruby")
7328 (license license:zlib)))
7329
7330(define-public ruby-pry
7331 (package
7332 (name "ruby-pry")
7333 (version "0.14.2")
7334 (source
7335 (origin
7336 (method url-fetch)
7337 (uri (rubygems-uri "pry" version))
7338 (sha256
7339 (base32
7340 "0k9kqkd9nps1w1r1rb7wjr31hqzkka2bhi8b518x78dcxppm9zn4"))))
7341 (build-system ruby-build-system)
7342 (arguments
7343 '(#:tests? #f)) ; no tests
7344 (propagated-inputs
7345 (list ruby-coderay ruby-method-source))
7346 (synopsis "Ruby REPL")
7347 (description "Pry is an IRB alternative and runtime developer console for
7348Ruby. It features syntax highlighting, a plugin architecture, runtime
7349invocation, and source and documentation browsing.")
7350 (home-page "https://cobaltbluemedia.com/pryrepl/")
7351 (license license:expat)))
7352
7353(define-public ruby-pry-doc
7354 (package
7355 (name "ruby-pry-doc")
7356 (version "1.4.0")
7357 (source (origin
7358 (method url-fetch)
7359 (uri (rubygems-uri "pry-doc" version))
7360 (sha256
7361 (base32
7362 "1pp43n69p6bjvc640wgcz295w1q2v9awcqgbwcqn082dbvq5xvnx"))))
7363 (build-system ruby-build-system)
7364 (propagated-inputs (list ruby-pry ruby-yard))
7365 (native-inputs (list ruby-latest-ruby ruby-rspec ruby-rake)) ;for tests
7366 (synopsis "Provides YARD and extended documentation support for Pry")
7367 (description
7368 "Pry Doc is a Pry REPL plugin. It provides extended documentation
7369support for the REPL by means of improving the @code{show-doc} and
7370@code{show-source} commands. With help of the plugin the commands are
7371be able to display the source code and the docs of Ruby methods and
7372classes implemented in C.")
7373 (home-page "https://github.com/pry/pry-doc")
7374 (license license:expat)))
7375
7376(define-public ruby-single-cov
7377 (package
7378 (name "ruby-single-cov")
7379 (version "1.9.1")
7380 (home-page "https://github.com/grosser/single_cov")
7381 (source (origin
7382 (method git-fetch)
7383 (uri (git-reference (url home-page)
7384 (commit (string-append "v" version))))
7385 (file-name (git-file-name name version))
7386 (sha256
7387 (base32
7388 "1w4k81f2mdg620m6pwkrqayddnz9mr8qx0myqn33mw8k6imfip05"))))
7389 (build-system ruby-build-system)
7390 (arguments
7391 '(#:test-target "spec" ;to avoid rubocop requirement
7392 #:phases (modify-phases %standard-phases
7393 (replace 'replace-git-ls-files
7394 (lambda _
7395 (substitute* "single_cov.gemspec"
7396 (("`git ls-files lib/ bin/ MIT-LICENSE`")
7397 ;; There no longer appear to be a 'bin'
7398 ;; sub-directory.
7399 "`find lib/ MIT-LICENSE -type f | sort`"))))
7400 (add-before 'check 'remove-version-constraints
7401 (lambda _
7402 (delete-file "Gemfile.lock")))
7403 (add-before 'check 'relax-requirements
7404 (lambda _
7405 ;; Remove extraneous requirements.
7406 (substitute* "Rakefile"
7407 ((".*require.*bump.*") ""))
7408 (substitute* "Gemfile"
7409 ((".*gem \"bump\".*") "")
7410 ((".*gem \"rubocop\".*") ""))))
7411 (add-before 'check 'disable-failing-test
7412 (lambda _
7413 ;; XXX: This test copies assets from minitest, but can
7414 ;; not cope with the files being read-only. Just skip
7415 ;; it for now.
7416 (substitute* "specs/single_cov_spec.rb"
7417 (("it \"complains when coverage is bad\"")
7418 "xit \"complains when coverage is bad\"")))))))
7419 (native-inputs (list ruby-minitest ruby-rspec ruby-simplecov))
7420 (synopsis "Code coverage reporting tool")
7421 (description
7422 "This package provides actionable code coverage reports for Ruby
7423projects. It has very little overhead and can be easily integrated with
7424development tools to catch coverage problems early.")
7425 (license license:expat)))
7426
7427(define-public ruby-oedipus-lex
7428 (package
7429 (name "ruby-oedipus-lex")
7430 (version "2.6.1")
7431 (source
7432 (origin
7433 (method url-fetch)
7434 (uri (rubygems-uri "oedipus_lex" version))
7435 (sha256
7436 (base32
7437 "06l4d3l75vhdcmnavnkzr7bd39rb0njxhkbmwrw6ni64z2hlj7w7"))))
7438 (build-system ruby-build-system)
7439 (native-inputs
7440 (list ruby-hoe
7441 ruby-minitest))
7442 (synopsis "Ruby lexer")
7443 (description
7444 "Oedipus Lex is a lexer generator in the same family as Rexical and Rex.
7445It is based primarily on generating code much like you would a hand-written
7446lexer. It uses StrScanner within a multi-level case statement. As such,
7447Oedipus matches on the first match, not the longest.")
7448 (home-page "https://github.com/seattlerb/oedipus_lex")
7449 (license license:expat)))
7450
7451(define-public ruby-guard
7452 (package
7453 (name "ruby-guard")
7454 (version "2.13.0")
7455 (source (origin
7456 (method git-fetch)
7457 ;; The gem does not include a Rakefile, nor does it contain a
7458 ;; gemspec file, nor does it come with the tests. This is why
7459 ;; we fetch the tarball from Github.
7460 (uri (git-reference
7461 (url "https://github.com/guard/guard")
7462 (commit (string-append "v" version))))
7463 (file-name (git-file-name name version))
7464 (sha256
7465 (base32
7466 "16pxcszr0g2jnl3090didxh1d8z5m2mly14m3w4rspb8fmclsnjs"))))
7467 (build-system ruby-build-system)
7468 (arguments
7469 `(#:tests? #f ; tests require cucumber
7470 #:phases
7471 (modify-phases %standard-phases
7472 (add-after 'unpack 'remove-git-ls-files
7473 (lambda* (#:key outputs #:allow-other-keys)
7474 (substitute* "guard.gemspec"
7475 (("git ls-files -z") "find . -type f -print0"))))
7476 (replace 'build
7477 (lambda _
7478 (invoke "gem" "build" "guard.gemspec"))))))
7479 (propagated-inputs
7480 (list ruby-formatador
7481 ruby-listen
7482 ruby-lumberjack
7483 ruby-nenv
7484 ruby-notiffany
7485 ruby-pry
7486 ruby-shellany
7487 ruby-thor))
7488 (native-inputs
7489 (list bundler ruby-rspec))
7490 (synopsis "Tool to handle events on file system modifications")
7491 (description
7492 "Guard is a command line tool to easily handle events on file system
7493modifications. Guard automates various tasks by running custom rules whenever
7494file or directories are modified.")
7495 (home-page "https://guardgem.org/")
7496 (license license:expat)))
7497
7498(define-public ruby-spinach
7499 (package
7500 (name "ruby-spinach")
7501 (version "0.12.0")
7502 (home-page "https://github.com/codegram/spinach")
7503 (source (origin
7504 (method url-fetch)
7505 (uri (rubygems-uri "spinach" version))
7506 (sha256
7507 (base32
7508 "1v9nvpvlgjx698dc4q2p1l45sxm5fjjzfxayrkyzb9nv0q0xfjsp"))))
7509 (build-system ruby-build-system)
7510 (arguments
7511 ;; FIXME: Disable tests altogether because they depend on 'capybara'
7512 ;; which in turn depends on many other unpackaged gems. Enable once
7513 ;; capybara is available.
7514 '(#:tests? #f))
7515 (propagated-inputs
7516 (list ruby-colorize ruby-gherkin-ruby))
7517 (synopsis "Gherkin-based BDD framework")
7518 (description
7519 "Spinach is a high-level @acronym{BDD, Behavior-driven development}
7520framework that leverages the expressive @code{Gherkin} language to help you
7521define executable specifications of your code.")
7522 (license license:expat)))
7523
7524(define-public ruby-timers
7525 (package
7526 (name "ruby-timers")
7527 (version "4.3.5")
7528 (source (origin
7529 (method git-fetch)
7530 (uri (git-reference
7531 (url "https://github.com/socketry/timers")
7532 (commit (string-append "v" version))))
7533 (file-name (git-file-name name version))
7534 (sha256
7535 (base32
7536 "1vvahlhk6i1xks1bsha6s64pjjxhagmzvvf1q9h6z3lpcba43rpx"))))
7537 (build-system ruby-build-system)
7538 (arguments
7539 (list #:phases
7540 #~(modify-phases %standard-phases
7541 (add-before 'build 'prune-gems.rb
7542 (lambda _
7543 (substitute* "gems.rb"
7544 ;; These are only required for maintenance.
7545 ((".*gem \"bake-modernize\".*") "")
7546 ((".*gem \"bake-gem\".*") "")
7547 ;; Not actually required by the tests.
7548 ((".*gem 'benchmark-ips'.*") "")
7549 ((".*gem \"ruby-prof\".*") ""))))
7550 (add-before 'build 'remove-missing-signing-key
7551 (lambda _
7552 ;; Otherwise, the build fails with ENOENT.
7553 (substitute* "timers.gemspec"
7554 ((".*spec.signing_key.*") ""))))
7555 (replace 'check
7556 (lambda* (#:key tests? #:allow-other-keys)
7557 (when tests?
7558 (invoke "bake" "test")))))))
7559 (native-inputs
7560 (list ruby-covered
7561 ruby-bake-test
7562 ruby-bake-test-external
7563 ruby-sus))
7564 (synopsis "Collection of Ruby timer classes")
7565 (description "Timers offers a collections of one-shot and periodic timers,
7566intended for use with event loops such as async.")
7567 (home-page "https://github.com/socketry/timers")
7568 (license license:expat)))
7569
7570(define-public ruby-tilt
7571 (package
7572 (name "ruby-tilt")
7573 (version "2.2.0")
7574 (source
7575 (origin
7576 (method git-fetch) ;the distributed gem lacks tests
7577 (uri (git-reference
7578 (url "https://github.com/jeremyevans/tilt")
7579 (commit (string-append "v" version))))
7580 (file-name (git-file-name name version))
7581 (sha256
7582 (base32 "056zm4vzx9xjwl7zgmb17hzb91qx5cvzk60wvsxchfybvl03gn5d"))))
7583 (build-system ruby-build-system)
7584 (arguments
7585 (list
7586 #:phases
7587 #~(modify-phases %standard-phases
7588 (add-before 'check 'set-SASS_IMPLEMENTATION
7589 (lambda _
7590 (setenv "SASS_IMPLEMENTATION" "sassc"))))))
7591 (propagated-inputs
7592 (list ruby-pandoc-ruby ruby-sassc))
7593 (native-inputs
7594 (list bundler ruby-yard ruby-builder ruby-erubis ruby-markaby))
7595 (synopsis "Generic interface to multiple Ruby template engines")
7596 (description
7597 "Tilt is a thin interface over a number of different Ruby template
7598engines in an attempt to make their usage as generic as possible.")
7599 (home-page "https://github.com/rtomayko/tilt/")
7600 (license license:expat)))
7601
7602(define-public ruby-thread-safe
7603 (package
7604 (name "ruby-thread-safe")
7605 (version "0.3.6")
7606 (source
7607 (origin
7608 (method url-fetch)
7609 (uri (rubygems-uri "thread_safe" version))
7610 (sha256
7611 (base32
7612 "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy"))))
7613 (build-system ruby-build-system)
7614 (arguments
7615 '(#:tests? #f)) ; needs simplecov, among others
7616 (synopsis "Thread-safe utilities for Ruby")
7617 (description "The thread_safe library provides thread-safe collections and
7618utilities for Ruby.")
7619 (home-page "https://github.com/ruby-concurrency/thread_safe")
7620 (license license:asl2.0)))
7621
7622(define-public ruby-tzinfo
7623 (package
7624 (name "ruby-tzinfo")
7625 (version "2.0.6")
7626 (source
7627 (origin
7628 (method git-fetch)
7629 (uri (git-reference
7630 ;; Pull from git because the gem has no tests.
7631 (url "https://github.com/tzinfo/tzinfo")
7632 (commit (string-append "v" version))))
7633 (file-name (git-file-name name version))
7634 (sha256
7635 (base32
7636 "1n1gzjqwwnx209h8d054miva0y7x17db2ahy7jav5r25ibhh7rgm"))))
7637 (build-system ruby-build-system)
7638 (arguments
7639 (list
7640 #:phases
7641 #~(modify-phases %standard-phases
7642 (add-after 'unpack 'skip-safe-tests
7643 (lambda _
7644 (substitute* "test/test_utils.rb"
7645 (("def safe_test\\(options = \\{\\}\\)")
7646 "def safe_test(options = {})
7647 skip('The Guix build environment has an unsafe load path')"))))
7648 (add-before 'check 'pre-check
7649 (lambda _
7650 (setenv "HOME" (getcwd))
7651 (substitute* "Gemfile"
7652 (("simplecov.*") "simplecov'\n"))))
7653 (replace 'check
7654 (lambda* (#:key tests? test-target #:allow-other-keys)
7655 (when tests?
7656 (invoke "bundler" "exec" "rake" test-target)))))))
7657 (propagated-inputs
7658 (list ruby-concurrent))
7659 (native-inputs
7660 (list ruby-simplecov))
7661 (synopsis "Time zone library for Ruby")
7662 (description "TZInfo is a Ruby library that provides daylight savings
7663aware transformations between times in different time zones.")
7664 (home-page "https://tzinfo.github.io")
7665 (license license:expat)))
7666
7667(define-public ruby-tzinfo-data
7668 (package
7669 (name "ruby-tzinfo-data")
7670 (version "1.2023.3")
7671 (source
7672 (origin
7673 (method git-fetch)
7674 ;; Download from GitHub because the rubygems version does not contain
7675 ;; Rakefile or tests.
7676 (uri (git-reference
7677 (url "https://github.com/tzinfo/tzinfo-data")
7678 (commit (string-append "v" version))))
7679 (file-name (git-file-name name version))
7680 (sha256
7681 (base32
7682 "1v3fpfmw485lsc9bfqfcasb9j25g9ywfpmmk648l2vdsh7nipilf"))))
7683 (build-system ruby-build-system)
7684 (arguments
7685 (list
7686 #:phases
7687 #~(modify-phases %standard-phases
7688 (add-after 'unpack 'patch-source
7689 (lambda* (#:key inputs #:allow-other-keys)
7690 (substitute* "Rakefile"
7691 (("URI\\.parse\\(url\\)\\.open")
7692 "URI.open(url)")
7693 (("https://data.iana.org/time-zones/releases")
7694 (assoc-ref inputs "tzdata")))))
7695 (add-before 'check 'pre-check
7696 (lambda _
7697 (setenv "HOME" (getcwd))
7698 (substitute* "Rakefile"
7699 ;; Don't need gpg, and it may break after a time.
7700 (("gpg ") "echo ")
7701 ((" sh\\(\\\"make -C" text)
7702 (string-append " sh(\"sed -i 's@/bin/sh@sh@' #{tzdb_combined_path}/Makefile \")\n"
7703 " sh(\"sed -i 's@cc=@cc?=@' #{tzdb_combined_path}/Makefile \")\n" text)))
7704 (setenv "cc" #$(cc-for-target)))))))
7705 (propagated-inputs
7706 (list ruby-tzinfo))
7707 (native-inputs
7708 `(("tzdata"
7709 ,(file-union "tzdata-for-ruby-tzdata-info"
7710 `(("tzdata2023c.tar.gz"
7711 ,(origin
7712 (method url-fetch)
7713 (uri "https://data.iana.org/time-zones/releases/tzdata2023c.tar.gz")
7714 (sha256
7715 (base32
7716 "0p4nvp5bdxxdqh269nvvcfrpycbbfwm31al5whwbpsaa3dfhnl9z"))))
7717 ("tzdata2023c.tar.gz.asc"
7718 ,(origin
7719 (method url-fetch)
7720 (uri "https://data.iana.org/time-zones/releases/tzdata2023c.tar.gz.asc")
7721 (sha256
7722 (base32
7723 "0mrmhczs5qnj1zp6gh4pg6fm0iblr2jmzy0fgh9slinwxmn7pv6m"))))
7724 ("tzcode2023c.tar.gz"
7725 ,(origin
7726 (method url-fetch)
7727 (uri "https://data.iana.org/time-zones/releases/tzcode2023c.tar.gz")
7728 (sha256
7729 (base32
7730 "1rqln88ki0jagi372nqyn7bs03rf2l33081sy2835mwsn4mpzla6"))))
7731 ("tzcode2023c.tar.gz.asc"
7732 ,(origin
7733 (method url-fetch)
7734 (uri "https://data.iana.org/time-zones/releases/tzcode2023c.tar.gz.asc")
7735 (sha256
7736 (base32
7737 "0jbx8xjv75qfh7bxa2xmrf97r37057y89rhmrq1gz8s6b8qlzb2i")))))))))
7738 (synopsis "Data from the IANA Time Zone database")
7739 (description
7740 "This library provides @code{TZInfo::Data}, which contains data from the
7741IANA Time Zone database packaged as Ruby modules for use with @code{TZInfo}.")
7742 (home-page "https://tzinfo.github.io")
7743 (license license:expat)))
7744
7745(define-public ruby-rb-inotify
7746 (package
7747 (name "ruby-rb-inotify")
7748 (version "0.10.1")
7749 (source
7750 (origin
7751 (method url-fetch)
7752 (uri (rubygems-uri "rb-inotify" version))
7753 (sha256
7754 (base32
7755 "1jm76h8f8hji38z3ggf4bzi8vps6p7sagxn3ab57qc0xyga64005"))))
7756 (build-system ruby-build-system)
7757 (arguments
7758 (list
7759 #:tests? #f ; there are no tests
7760 #:phases
7761 #~(modify-phases %standard-phases
7762 ;; Building the gemspec with rake is not working here since it is
7763 ;; generated with Jeweler. It is also unnecessary because the
7764 ;; existing gemspec does not use any development tools to generate a
7765 ;; list of files.
7766 (replace 'build
7767 (lambda _
7768 (invoke "gem" "build" "rb-inotify.gemspec"))))))
7769 (propagated-inputs
7770 (list ruby-ffi))
7771 (native-inputs
7772 (list ruby-yard))
7773 (synopsis "Ruby wrapper for Linux's inotify")
7774 (description "rb-inotify is a simple wrapper over the @code{inotify} Linux
7775kernel subsystem for monitoring changes to files and directories.")
7776 (home-page "https://github.com/nex3/rb-inotify")
7777 (license license:expat)))
7778
7779(define-public ruby-pry-editline
7780 (package
7781 (name "ruby-pry-editline")
7782 (version "1.1.2")
7783 (source (origin
7784 (method url-fetch)
7785 (uri (rubygems-uri "pry-editline" version))
7786 (sha256
7787 (base32
7788 "1pjxyvdxvw41xw3yyl18pwzix8hbvn6lgics7qcfhjfsf1zs8x1z"))))
7789 (build-system ruby-build-system)
7790 (arguments `(#:tests? #f)) ; no tests included
7791 (native-inputs
7792 (list bundler))
7793 (synopsis "Open the current REPL line in an editor")
7794 (description
7795 "This gem provides a plugin for the Ruby REPL to enable opening the
7796current line in an external editor.")
7797 (home-page "https://github.com/tpope/pry-editline")
7798 (license license:expat)))
7799
7800(define-public ruby-sdoc
7801 (package
7802 (name "ruby-sdoc")
7803 (version "1.1.0")
7804 (source (origin
7805 (method url-fetch)
7806 (uri (rubygems-uri "sdoc" version))
7807 (sha256
7808 (base32
7809 "1am73dldx1fqlw2xny5vyk00pgkisg6bvs0pa8jjd7c19drjczrd"))))
7810 (build-system ruby-build-system)
7811 (arguments
7812 `(#:phases
7813 (modify-phases %standard-phases
7814 (add-before 'check 'set-rubylib-and-patch-gemfile
7815 (lambda _
7816 (setenv "RUBYLIB" "lib")
7817 (substitute* "sdoc.gemspec"
7818 (("s.add_runtime_dependency.*") "\n")
7819 (("s.add_dependency.*") "\n"))
7820 (substitute* "Gemfile"
7821 (("gem \"rake\".*")
7822 "gem 'rake'\ngem 'rdoc'\ngem 'json'\n")))))))
7823 (propagated-inputs
7824 (list ruby-json))
7825 (native-inputs
7826 (list bundler ruby-minitest ruby-hoe))
7827 (synopsis "Generate searchable RDoc documentation")
7828 (description
7829 "SDoc is an RDoc documentation generator to build searchable HTML
7830documentation for Ruby code.")
7831 (home-page "https://github.com/voloko/sdoc")
7832 (license license:expat)))
7833
7834(define-public ruby-tins
7835 (package
7836 (name "ruby-tins")
7837 (version "1.29.1")
7838 (source (origin
7839 (method url-fetch)
7840 (uri (rubygems-uri "tins" version))
7841 (sha256
7842 (base32
7843 "0nzp88y19rqlcizp1nw8m44fvfxs9g3bhjpscz44dwfawfrmr0cb"))))
7844 (build-system ruby-build-system)
7845 ;; This gem needs gem-hadar at development time, but gem-hadar needs tins
7846 ;; at runtime. To avoid the dependency on gem-hadar we disable rebuilding
7847 ;; the gemspec.
7848 (arguments
7849 `(#:tests? #f ; there are no tests
7850 #:phases
7851 (modify-phases %standard-phases
7852 (replace 'build
7853 (lambda _
7854 ;; "lib/spruz" is a symlink. Leaving it in the gemspec file
7855 ;; causes an error.
7856 (substitute* "tins.gemspec"
7857 (("\"lib/spruz\", ") ""))
7858 (invoke "gem" "build" "tins.gemspec"))))))
7859 (propagated-inputs
7860 (list ruby-sync))
7861 (synopsis "Assorted tools for Ruby")
7862 (description "Tins is a Ruby library providing assorted tools.")
7863 (home-page "https://github.com/flori/tins")
7864 (license license:expat)))
7865
7866(define-public ruby-gemtext
7867 (package
7868 (name "ruby-gemtext")
7869 (version "1.0.3")
7870 (source
7871 (origin
7872 (method url-fetch)
7873 (uri (rubygems-uri "gemtext" version))
7874 (sha256
7875 (base32 "1z559f5z0zvwnqgnny0zf4mppiary020ljxwpw3bdxi2hr9aj3gp"))))
7876 (build-system ruby-build-system)
7877 (synopsis "Gemtext parser for Ruby")
7878 (description
7879 "This package is a Ruby parser library for Gemtext (hypertext format
7880which is intended to serve as the native response format of the Gemini
7881file transfer protocol) and produces a document object of various
7882nodes.")
7883 (home-page "https://github.com/exastencil/gemtext")
7884 (license license:expat)))
7885
7886(define-public ruby-gem-hadar
7887 (package
7888 (name "ruby-gem-hadar")
7889 (version "1.11.0")
7890 (source (origin
7891 (method url-fetch)
7892 (uri (rubygems-uri "gem_hadar" version))
7893 (sha256
7894 (base32
7895 "160abb3l4n3gkhd86f22n981bhqxkbf5ym6fhsk796pix6696pd5"))))
7896 (build-system ruby-build-system)
7897 ;; This gem needs itself at development time. We disable rebuilding of the
7898 ;; gemspec to avoid this loop.
7899 (arguments
7900 `(#:tests? #f ; there are no tests
7901 #:phases
7902 (modify-phases %standard-phases
7903 (replace 'build
7904 (lambda _
7905 (invoke "gem" "build" "gem_hadar.gemspec"))))))
7906 (propagated-inputs
7907 (list git-minimal/pinned ruby-tins ruby-yard))
7908 (synopsis "Library for the development of Ruby gems")
7909 (description
7910 "This library contains some useful functionality to support the
7911development of Ruby gems.")
7912 (home-page "https://github.com/flori/gem_hadar")
7913 (license license:expat)))
7914
7915(define-public ruby-term-ansicolor
7916 (package
7917 (name "ruby-term-ansicolor")
7918 (version "1.7.1")
7919 (source (origin
7920 (method url-fetch)
7921 (uri (rubygems-uri "term-ansicolor" version))
7922 (sha256
7923 (base32
7924 "1xq5kci9215skdh27npyd3y55p812v4qb4x2hv3xsjvwqzz9ycwj"))))
7925 (build-system ruby-build-system)
7926 ;; Rebuilding the gemspec seems to require git, even though this is not a
7927 ;; git repository, so we just build the gem from the existing gemspec.
7928 (arguments
7929 (list
7930 #:phases
7931 #~(modify-phases %standard-phases
7932 (add-after 'unpack 'fix-test
7933 (lambda -
7934 (substitute* "tests/hsl_triple_test.rb"
7935 (("0\\\\\\.0%")
7936 "0\\.?0?%"))))
7937 (replace 'build
7938 (lambda _
7939 (invoke "gem" "build" "term-ansicolor.gemspec"))))))
7940 (propagated-inputs
7941 (list ruby-tins))
7942 (native-inputs
7943 (list ruby-gem-hadar))
7944 (synopsis "Ruby library to control the attributes of terminal output")
7945 (description
7946 "This Ruby library uses ANSI escape sequences to control the attributes
7947of terminal output.")
7948 (home-page "https://flori.github.io/term-ansicolor/")
7949 ;; There is no mention of the "or later" clause.
7950 (license license:gpl2)))
7951
7952(define-public ruby-immutable-struct
7953 (let ((commit "bb67ad8fa2117e8031c3f4333b4c25c8bcd3afff")
7954 (revision "0"))
7955 (package
7956 (name "ruby-immutable-struct")
7957 (version (git-version "2.4.1" revision commit))
7958 (source
7959 (origin
7960 (method git-fetch)
7961 (uri (git-reference
7962 (url "https://github.com/stitchfix/immutable-struct")
7963 (commit commit)))
7964 (file-name (git-file-name name version))
7965 (sha256
7966 (base32
7967 "0vsr2spypjf0i7ppg2a0gj3mjj5k3dyqsx224cbsxw51p6cc11c1"))))
7968 (build-system ruby-build-system)
7969 (arguments
7970 (list
7971 #:phases
7972 #~(modify-phases %standard-phases
7973 (replace 'check
7974 (lambda* (#:key tests? #:allow-other-keys)
7975 (when tests?
7976 (invoke "ruby" (which "rspec"))))))))
7977 (native-inputs
7978 (list ruby-rspec))
7979 (synopsis "Ruby library for creating immutable struct classes")
7980 (description
7981 "This package provides a library to help create value objects without
7982the pain of Ruby's Struct (or its setters).")
7983 (home-page "https://stitchfix.github.io/immutable-struct/")
7984 (license license:expat))))
7985
7986(define-public ruby-faker
7987 (package
7988 (name "ruby-faker")
7989 (version "3.2.0")
7990 (source
7991 (origin
7992 (method git-fetch)
7993 (uri (git-reference
7994 (url "https://github.com/faker-ruby/faker")
7995 (commit (string-append "v" version))))
7996 (file-name (git-file-name name version))
7997 (sha256
7998 (base32
7999 "1wwdwh5qwaxnd9dl6732mj6b953l5r32r4936pj5680963iagq59"))))
8000 (build-system ruby-build-system)
8001 (arguments
8002 (list
8003 #:phases
8004 #~(modify-phases %standard-phases
8005 (add-after 'unpack 'remove-rubocop-from-rakefile
8006 (lambda _
8007 (substitute* "Rakefile"
8008 (("require 'rubocop/rake_task'") "")
8009 (("RuboCop::RakeTask\\.new") "")))))))
8010 (native-inputs (list ruby-yard ruby-simplecov ruby-timecop))
8011 (propagated-inputs (list ruby-i18n))
8012 (synopsis "Library for generating fake data")
8013 (description "Faker is a port of Data::Faker from Perl. It is used to
8014easily generate fake data: names, addresses, phone numbers, etc.")
8015 (home-page "https://github.com/faker-ruby/faker")
8016 (license license:expat)))
8017
8018(define-public ruby-terraform
8019 (package
8020 (name "ruby-terraform")
8021 (version "1.7.0")
8022 (source
8023 (origin
8024 (method git-fetch)
8025 (uri (git-reference
8026 (url "https://github.com/infrablocks/ruby_terraform")
8027 (commit (string-append "v" version))))
8028 (file-name (git-file-name name version))
8029 (sha256
8030 (base32
8031 "18d1qkf2rbbvc2f0dxni85i2l2g8zn5kzh0v8zr1b86r1wjy6rvd"))))
8032 (build-system ruby-build-system)
8033 (arguments
8034 (list
8035 #:test-target "spec"
8036 #:phases
8037 #~(modify-phases %standard-phases
8038 (add-after 'unpack 'disable-bundler
8039 (lambda _
8040 (substitute* "spec/spec_helper.rb"
8041 (("require 'bundler/setup'") ""))))
8042 (add-before 'check 'disable-falinig-tests
8043 (lambda _
8044 (substitute* "spec/ruby_terraform/commands/plan_spec.rb"
8045 (("it 'logs an error raised when running the command'")
8046 "xit 'logs an error raised when running the command'")
8047 (("it 'raises execution error when an error occurs running the command'")
8048 "xit 'raises execution error when an error occurs running the command'"))))
8049 (replace 'check
8050 (lambda* (#:key tests? #:allow-other-keys)
8051 (when tests?
8052 (invoke "rspec")))))))
8053 (native-inputs
8054 (list ruby-rspec
8055 ruby-faker
8056 ruby-simplecov))
8057 (propagated-inputs
8058 (list ruby-lino ruby-immutable-struct))
8059 (synopsis "Ruby wrapper around the Terraform command line interface")
8060 (description
8061 "This package provides a Ruby wrapper around the Terraform command line
8062interface so that Terraform can be more easily invoked from Ruby code.")
8063 (home-page "https://github.com/infrablocks/ruby_terraform")
8064 (license license:expat)))
8065
8066(define-public ruby-pstree
8067 (package
8068 (name "ruby-pstree")
8069 (version "0.3.0")
8070 (source (origin
8071 (method url-fetch)
8072 (uri (rubygems-uri "pstree" version))
8073 (sha256
8074 (base32
8075 "0ld3ng37y92kv9vqnachw1l3n07hsc8hrnjs9d840liw0mysf1vp"))))
8076 (build-system ruby-build-system)
8077 (native-inputs
8078 (list ruby-gem-hadar bundler))
8079 (synopsis "Create a process tree data structure")
8080 (description
8081 "This library uses the output of the @code{ps} command to create a
8082process tree data structure for the current host.")
8083 (home-page "https://github.com/flori/pstree")
8084 ;; There is no mention of the "or later" clause.
8085 (license license:gpl2)))
8086
8087(define-public ruby-psych
8088 (package
8089 (name "ruby-psych")
8090 (version "5.1.0")
8091 (source (origin
8092 (method git-fetch) ;for tests
8093 (uri (git-reference
8094 (url "https://github.com/ruby/psych")
8095 (commit (string-append "v" version))))
8096 (file-name (git-file-name name version))
8097 (sha256
8098 (base32
8099 "0m3668y79jcv2h9p7w74awwdyz13rpfr24w4nzh3iz96kxwssz83"))))
8100 (build-system ruby-build-system)
8101 (inputs
8102 (list libyaml))
8103 (native-inputs
8104 (list ruby-rake-compiler))
8105 (synopsis "Ruby YAML parser and emitter")
8106 (description
8107 "Psych is a YAML parser and emitter. Psych leverages libyaml for its
8108YAML parsing and emitting capabilities. In addition to wrapping libyaml,
8109Psych also knows how to serialize and de-serialize most Ruby objects to and
8110from the YAML format.")
8111 (home-page "https://github.com/ruby/psych")
8112 (license license:expat)))
8113
8114(define-public ruby-psych-3
8115 (package
8116 (inherit ruby-psych)
8117 (version "3.3.4")
8118 (source (origin
8119 (method git-fetch) ;for tests
8120 (uri (git-reference
8121 (url "https://github.com/ruby/psych")
8122 (commit (string-append "v" version))))
8123 (file-name (git-file-name "ruby-psych" version))
8124 (sha256
8125 (base32
8126 "11f7bxbhaj5697izap7hfbiln6lfk5cks78a498mkyhs2ylhl0fc"))))
8127 (arguments
8128 (list
8129 #:phases
8130 #~(modify-phases %standard-phases
8131 (replace 'check
8132 (lambda* (#:key tests? #:allow-other-keys)
8133 (when tests?
8134 (invoke "bundle" "exec" "rake" "default")))))))))
8135
8136(define-public ruby-utils
8137 (package
8138 (name "ruby-utils")
8139 (version "0.9.0")
8140 (source (origin
8141 (method url-fetch)
8142 (uri (rubygems-uri "utils" version))
8143 (sha256
8144 (base32
8145 "196zhgcygrnx09bb9mh22qas03rl9avzx8qs0wnxznpin4pffwcl"))))
8146 (build-system ruby-build-system)
8147 (propagated-inputs
8148 (list ruby-tins ruby-term-ansicolor ruby-pstree ruby-pry-editline))
8149 (native-inputs
8150 (list ruby-gem-hadar bundler))
8151 (synopsis "Command line tools for working with Ruby")
8152 (description
8153 "This package provides assorted command line tools that may be useful
8154when working with Ruby code.")
8155 (home-page "https://github.com/flori/utils")
8156 ;; There is no mention of the "or later" clause.
8157 (license license:gpl2)))
8158
8159(define-public ruby-jaro-winkler
8160 (package
8161 (name "ruby-jaro-winkler")
8162 (version "1.5.4")
8163 (source
8164 (origin
8165 (method url-fetch)
8166 (uri (rubygems-uri "jaro_winkler" version))
8167 (sha256
8168 (base32 "1y8l6k34svmdyqxya3iahpwbpvmn3fswhwsvrz0nk1wyb8yfihsh"))))
8169 (build-system ruby-build-system)
8170 (arguments
8171 '(#:tests? #f)) ; no included tests
8172 (synopsis "Ruby implementation of Jaro-Winkler distance algorithm")
8173 (description
8174 "@code{jaro_winkler} is an implementation of Jaro-Winkler distance
8175algorithm. It is written as a C extension and will fallback to a pure Ruby
8176implementation on platforms where this is unsupported.")
8177 (home-page "https://github.com/tonytonyjan/jaro_winkler")
8178 (license license:expat)))
8179
8180(define-public ruby-json
8181 (package
8182 (name "ruby-json")
8183 (version "2.1.0")
8184 (source
8185 (origin
8186 (method url-fetch)
8187 (uri (rubygems-uri "json" version))
8188 (sha256
8189 (base32
8190 "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp"))))
8191 (build-system ruby-build-system)
8192 (arguments '(#:tests? #f)) ; dependency cycle with sdoc
8193 (synopsis "JSON library for Ruby")
8194 (description "This Ruby library provides a JSON implementation written as
8195a native C extension.")
8196 (home-page "http://json-jruby.rubyforge.org/")
8197 (license (list license:ruby license:gpl2)))) ; GPL2 only
8198
8199(define-public ruby-json-pure
8200 (package
8201 (name "ruby-json-pure")
8202 (version "2.6.3")
8203 (source
8204 (origin
8205 ;; For tests
8206 (method git-fetch)
8207 (uri (git-reference
8208 (url "https://github.com/flori/json.git")
8209 (commit (string-append "v" version))))
8210 (file-name (git-file-name name version))
8211 (sha256
8212 (base32
8213 "0551269c98a07m6bl594syh5vknrm3c636a4dxis9jpsb7vf7lfx"))))
8214 (build-system ruby-build-system)
8215 (arguments
8216 (list
8217 #:phases
8218 #~(modify-phases %standard-phases
8219 (add-after 'unpack 'fix-rakefile
8220 (lambda _
8221 (substitute* "Rakefile"
8222 ;; Since this is not a git repository, do not call 'git'.
8223 (("`git ls-files`") "`find . -type f |sort`")))))))
8224 (native-inputs
8225 (list bundler ragel ruby-simplecov ruby-test-unit which))
8226 (synopsis "JSON implementation in pure Ruby")
8227 (description
8228 "This package provides a JSON implementation written in pure Ruby.")
8229 (home-page "https://flori.github.io/json/")
8230 (license license:ruby)))
8231
8232(define-public ruby-jwt
8233 (package
8234 (name "ruby-jwt")
8235 (version "2.7.1")
8236 (source
8237 (origin
8238 ;; For tests
8239 (method git-fetch)
8240 (uri (git-reference
8241 (url "https://github.com/jwt/ruby-jwt")
8242 (commit (string-append "v" version))))
8243 (file-name (git-file-name name version))
8244 (sha256
8245 (base32
8246 "12ss6knfis6a6a41qndalnlvq3yykhpg6igzll8qyssnnwi9zdw7"))))
8247 (build-system ruby-build-system)
8248 (arguments
8249 (list
8250 #:test-target "test"
8251 #:phases
8252 #~(modify-phases %standard-phases
8253 (add-after 'unpack 'remove-unnecessary-dependencies
8254 (lambda _
8255 (substitute* "ruby-jwt.gemspec"
8256 (("spec\\.add_development_dependency 'appraisal'") "")
8257 (("spec\\.add_development_dependency 'simplecov'") ""))
8258 (substitute* "Gemfile"
8259 (("gem 'rubocop'.*") ""))
8260 (substitute* "Rakefile"
8261 (("require 'rubocop/rake_task'") "")
8262 (("RuboCop::RakeTask\\.new\\(:rubocop\\)") ""))
8263 (substitute* "spec/spec_helper.rb"
8264 (("require 'simplecov.*") "\n")
8265 ;; Use [].each to disable running the SimpleCov configuration
8266 ;; block
8267 (("SimpleCov\\.configure") "[].each")
8268 (("require 'codeclimate-test-reporter'") "")
8269 (("require 'codacy-coverage'") "")
8270 (("Codacy::Reporter\\.start") "")))))))
8271 (native-inputs
8272 (list bundler ruby-rspec ruby-rbnacl))
8273 (synopsis "Ruby implementation of the JSON Web Token standard")
8274 (description
8275 "This package provides a pure Ruby implementation of the RFC 7519 OAuth
8276@acronym{JWT, JSON Web Token} standard.")
8277 (home-page "https://github.com/jwt/ruby-jwt")
8278 (license license:expat)))
8279
8280;; Even though this package only provides bindings for a Mac OSX API it is
8281;; required by "ruby-listen" at runtime.
8282(define-public ruby-rb-fsevent
8283 (package
8284 (name "ruby-rb-fsevent")
8285 (version "0.10.3")
8286 (source (origin
8287 (method url-fetch)
8288 (uri (rubygems-uri "rb-fsevent" version))
8289 (sha256
8290 (base32
8291 "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8"))))
8292 (build-system ruby-build-system)
8293 ;; Tests need "guard-rspec", which needs "guard". However, "guard" needs
8294 ;; "listen", which needs "rb-fsevent" at runtime.
8295 (arguments `(#:tests? #f))
8296 (synopsis "FSEvents API with signals catching")
8297 (description
8298 "This library provides Ruby bindings for the Mac OSX FSEvents API.")
8299 (home-page "https://rubygems.org/gems/rb-fsevent")
8300 (license license:expat)))
8301
8302(define-public ruby-listen
8303 (package
8304 (name "ruby-listen")
8305 (version "3.8.0")
8306 (source
8307 (origin
8308 ;; The gem does not include a Rakefile, so fetch from the Git
8309 ;; repository.
8310 (method git-fetch)
8311 (uri (git-reference
8312 (url "https://github.com/guard/listen")
8313 (commit (string-append "v" version))))
8314 (file-name (git-file-name name version))
8315 (sha256
8316 (base32
8317 "1skkglml094dw1xr4742in1rwwa84ld0mz4nkw6qa8pwhx48x2n5"))))
8318 (build-system ruby-build-system)
8319 (arguments
8320 (list
8321 #:test-target "spec"
8322 #:phases
8323 #~(modify-phases %standard-phases
8324 (add-after 'unpack 'fix-files-in-gemspec
8325 (lambda _
8326 (substitute* "listen.gemspec"
8327 (("`git ls-files -z`")
8328 "`find . -type f -printf '%P\\\\0' |sort -z`"))))
8329 (add-before 'check 'remove-unnecessary-dependencies'
8330 (lambda _
8331 (substitute* "Rakefile"
8332 ;; Rubocop is for code linting, and is unnecessary for running
8333 ;; the tests.
8334 ((".*rubocop.*") "")))))))
8335 (native-inputs
8336 (list bundler ruby-rspec))
8337 (inputs
8338 (list ;; ruby-thor is used for the command line interface, and is referenced
8339 ;; in the wrapper, and therefore just needs to be an input.
8340 ruby-thor))
8341 (propagated-inputs
8342 (list ruby-rb-fsevent ruby-rb-inotify))
8343 (synopsis "Listen to file modifications")
8344 (description "The Listen gem listens to file modifications and notifies
8345you about the changes.")
8346 (home-page "https://github.com/guard/listen")
8347 (license license:expat)))
8348
8349(define-public ruby-loofah
8350 (package
8351 (name "ruby-loofah")
8352 (version "2.21.3")
8353 (home-page "https://github.com/flavorjones/loofah")
8354 (source
8355 (origin
8356 ;; Build from git because the gem lacks tests.
8357 (method git-fetch)
8358 (uri (git-reference (url home-page)
8359 (commit (string-append "v" version))))
8360 (file-name (git-file-name name version))
8361 (sha256
8362 (base32
8363 "1lh7cf56y1b0h090ahphvz7grq581phsamdl0rq59y0q9bqwrhg0"))))
8364 (build-system ruby-build-system)
8365 (native-inputs
8366 (list ruby-hoe ruby-hoe-markdown ruby-rr))
8367 (propagated-inputs
8368 (list ruby-nokogiri ruby-crass))
8369 (synopsis "Ruby library for manipulating and transforming HTML/XML")
8370 (description
8371 "Loofah is a general library for manipulating and transforming HTML/XML
8372documents and fragments. It's built on top of Nokogiri and libxml2.")
8373 (license license:expat)))
8374
8375(define-public ruby-crass
8376 (package
8377 (name "ruby-crass")
8378 (version "1.0.6")
8379 (home-page "https://github.com/rgrove/crass")
8380 (source (origin
8381 ;; The gem does not contain tests, so pull from git.
8382 (method git-fetch)
8383 (uri (git-reference
8384 (url home-page)
8385 (commit (string-append "v" version))))
8386 (file-name (git-file-name name version))
8387 (sha256
8388 (base32
8389 "1gbsb81psgb6xhnwpx4s409jc0mk0gijh039sy5xyi8jpaaadp40"))))
8390 (build-system ruby-build-system)
8391 (synopsis "Pure Ruby CSS parser")
8392 (description
8393 "Crass is a pure Ruby CSS parser based on the CSS Syntax Level 3 spec.")
8394 (license license:expat)))
8395
8396;;; The ruby-nokogumbo package has been absorbed into ruby-nokogiri.
8397(define-public ruby-nokogumbo
8398 (deprecated-package "ruby-nokogumbo" ruby-nokogiri))
8399
8400(define-public ruby-samovar
8401 (package
8402 (name "ruby-samovar")
8403 (version "2.1.4")
8404 (source (origin
8405 (method git-fetch) ;for tests
8406 (uri (git-reference
8407 (url "https://github.com/ioquatix/samovar")
8408 (commit (string-append "v" version))))
8409 (file-name (git-file-name name version))
8410 (sha256
8411 (base32
8412 "05pc5xlbv44anx0sfqssh0xhxg297bvl5slsl7k1vnka4k5fhax6"))))
8413 (build-system ruby-build-system)
8414 (native-inputs (list ruby-covered ruby-rspec))
8415 (propagated-inputs (list ruby-console ruby-mapping))
8416 (synopsis "Flexible option parser for Ruby")
8417 (description "Samovar is a modern framework for building command-line
8418tools and applications. It provides a declarative class-based DSL for
8419building command-line parsers that include automatic documentation generation.
8420It helps you keep your functionality clean and isolated where possible.")
8421 (home-page "https://github.com/ioquatix/samovar")
8422 (license license:expat)))
8423
8424(define-public ruby-sanitize
8425 (package
8426 (name "ruby-sanitize")
8427 (version "6.0.0")
8428 (home-page "https://github.com/rgrove/sanitize")
8429 (source (origin
8430 (method git-fetch)
8431 ;; The gem does not include the Rakefile, so we download the
8432 ;; source from Github.
8433 (uri (git-reference
8434 (url home-page)
8435 (commit (string-append "v" version))))
8436 (file-name (git-file-name name version))
8437 (sha256
8438 (base32
8439 "0p1a28vx95vscy9xzzyyddzgb9496x42a5i2ka39cpxbl5f3gkl0"))))
8440 (build-system ruby-build-system)
8441 (propagated-inputs (list ruby-crass ruby-nokogiri))
8442 (native-inputs (list ruby-minitest))
8443 (synopsis "Whitelist-based HTML and CSS sanitizer")
8444 (description
8445 "Sanitize is a whitelist-based HTML and CSS sanitizer. Given a list of
8446acceptable elements, attributes, and CSS properties, Sanitize will remove all
8447unacceptable HTML and/or CSS from a string.")
8448 (license license:expat)))
8449
8450(define-public ruby-sync
8451 (package
8452 (name "ruby-sync")
8453 (version "0.5.0")
8454 (source
8455 (origin
8456 (method url-fetch)
8457 (uri (rubygems-uri "sync" version))
8458 (sha256
8459 (base32
8460 "1z9qlq4icyiv3hz1znvsq1wz2ccqjb1zwd6gkvnwg6n50z65d0v6"))))
8461 (build-system ruby-build-system)
8462 (synopsis "Ruby module with a two-phase lock and counter")
8463 (description "This package provides a Ruby module that provides a two-phase
8464lock with a counter.")
8465 (home-page "https://github.com/ruby/sync")
8466 (license license:bsd-2)))
8467
8468(define-public ruby-oj
8469 (package
8470 (name "ruby-oj")
8471 (version "3.13.9")
8472 (source
8473 (origin
8474 (method git-fetch)
8475 ;; Version on rubygems.org does not contain Rakefile, so download from
8476 ;; GitHub instead.
8477 (uri (git-reference
8478 (url "https://github.com/ohler55/oj")
8479 (commit (string-append "v" version))))
8480 (file-name (git-file-name name version))
8481 (sha256
8482 (base32
8483 "0a24zd28y58nyhjxgrpn2k9p72vzj3zbmdrcsbhwbdycj7nn9fpd"))))
8484 (build-system ruby-build-system)
8485 (arguments
8486 '(#:test-target "test_all"
8487 #:phases
8488 (modify-phases %standard-phases
8489 (add-before 'check 'disable-bundler
8490 (lambda _
8491 (substitute* "Rakefile"
8492 (("Bundler\\.with_clean_env") "1.times")
8493 (("bundle exec ") "")))))))
8494 (native-inputs
8495 (list bundler ruby-rspec ruby-rake-compiler))
8496 (synopsis "JSON parser for Ruby optimized for speed")
8497 (description
8498 "Oj is a JSON parser and generator for Ruby, where the encoding and
8499decoding of JSON is implemented as a C extension to Ruby.")
8500 (home-page "https://www.ohler.com/oj/")
8501 (license (list license:expat ; Ruby code
8502 license:bsd-3)))) ; extension code
8503
8504(define-public ruby-ox
8505 (package
8506 (name "ruby-ox")
8507 (version "2.6.0")
8508 (source
8509 (origin
8510 (method url-fetch)
8511 (uri (rubygems-uri "ox" version))
8512 (sha256
8513 (base32
8514 "0fmk62b1h2i79dfzjj8wmf8qid1rv5nhwfc17l489ywnga91xl83"))))
8515 (build-system ruby-build-system)
8516 (arguments
8517 '(#:tests? #f)) ; no tests
8518 (synopsis "Optimized XML library for Ruby")
8519 (description
8520 "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
8521written as a native C extension. It was designed to be an alternative to
8522Nokogiri and other Ruby XML parsers for generic XML parsing and as an
8523alternative to Marshal for Object serialization.")
8524 (home-page "https://www.ohler.com/ox")
8525 (license license:expat)))
8526
8527(define-public ruby-redcloth
8528 (package
8529 (name "ruby-redcloth")
8530 (version "4.3.2")
8531 (source (origin
8532 (method url-fetch)
8533 (uri (rubygems-uri "RedCloth" version))
8534 (sha256
8535 (base32
8536 "0m9dv7ya9q93r8x1pg2gi15rxlbck8m178j1fz7r5v6wr1avrrqy"))))
8537 (build-system ruby-build-system)
8538 (arguments
8539 `(#:tests? #f ; no tests
8540 #:phases
8541 (modify-phases %standard-phases
8542 ;; Redcloth has complicated rake tasks to build various versions for
8543 ;; multiple targets using RVM. We don't want this so we just use the
8544 ;; existing gemspec.
8545 (replace 'build
8546 (lambda _
8547 (invoke "gem" "build" "redcloth.gemspec"))))))
8548 (native-inputs
8549 `(("bundler" ,bundler)
8550 ("ruby-diff-lcs" ,ruby-diff-lcs)
8551 ("ruby-rspec-2" ,ruby-rspec-2)))
8552 (synopsis "Textile markup language parser for Ruby")
8553 (description
8554 "RedCloth is a Ruby parser for the Textile markup language.")
8555 (home-page "http://redcloth.org")
8556 (license license:expat)))
8557
8558(define-public ruby-pg
8559 (let ((commit "378b7a35c12292625460ef2f33373de7114bf255")
8560 (revision "0"))
8561 (package
8562 (name "ruby-pg")
8563 (version (git-version "1.5.9" revision commit))
8564 (home-page "https://github.com/ged/ruby-pg")
8565 (source
8566 (origin
8567 (method git-fetch)
8568 (uri (git-reference
8569 (url home-page)
8570 (commit commit)))
8571 (file-name (git-file-name name version))
8572 (sha256
8573 (base32 "1aq6kakyghgbb4yykxxl9ziaaa7jbdbyc7vz6avyxhlby1jkj0m8"))
8574 (patches
8575 (search-patches "ruby-pg-fix-connect-timeout.patch"))))
8576 (build-system ruby-build-system)
8577 (arguments
8578 (list
8579 #:test-target "spec"
8580 #:phases
8581 #~(modify-phases %standard-phases
8582 (add-before 'build 'compile
8583 (lambda _
8584 (invoke "rake" "compile")))
8585 ;; Some tests rely on postgresql_lib_path.rb, but it is not
8586 ;; available until the gem is installed. Run tests after
8587 ;; installing to work around it.
8588 (delete 'check)
8589 (add-after 'install 'check
8590 (lambda* (#:key tests? #:allow-other-keys)
8591 (let ((new-gem (string-append #$output
8592 "/lib/ruby/vendor_ruby")))
8593 (setenv "GEM_PATH"
8594 (string-append (getenv "GEM_PATH") ":" new-gem))
8595 (when tests?
8596 (invoke "rspec"))))))))
8597 (native-inputs (list ruby-rake-compiler ruby-hoe ruby-rspec))
8598 (inputs (list postgresql))
8599 (synopsis "Ruby interface to PostgreSQL")
8600 (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
8601with PostgreSQL 9.3 and later.")
8602 (license license:ruby))))
8603
8604(define-public ruby-byebug
8605 (package
8606 (name "ruby-byebug")
8607 (version "11.1.3")
8608 (source
8609 (origin
8610 (method git-fetch)
8611 (uri (git-reference
8612 (url "https://github.com/deivid-rodriguez/byebug")
8613 (commit (string-append "v" version))))
8614 (file-name (git-file-name name version))
8615 (sha256
8616 (base32
8617 "0vyy3k2s7dcndngj6m8kxhs1vxc2c93dw8b3yyand3srsg9ffpij"))
8618 (modules '((guix build utils)))
8619 (snippet
8620 '(begin
8621 ;; Remove wrappers that try to setup a bundle environment.
8622 (with-directory-excursion "bin"
8623 (for-each delete-file '("bundle" "rake" "rubocop"))
8624 ;; ruby-minitest doesn't come with a launcher, so fix the one
8625 ;; provided.
8626 (substitute* "minitest"
8627 (("load File\\.expand_path\\(\"bundle\".*") "")
8628 (("require \"bundler/setup\".*") "")))))))
8629 (build-system ruby-build-system)
8630 (arguments
8631 (list
8632 #:phases
8633 #~(modify-phases %standard-phases
8634 (add-after 'unpack 'sanitize-dependencies
8635 (lambda _
8636 (substitute* "Rakefile"
8637 ((".*chandler/tasks.*") ""))))
8638 (add-after 'unpack 'skip-tmp-path-sensitive-test
8639 (lambda _
8640 (substitute* "test/commands/where_test.rb"
8641 (("unless /cygwin\\|mswin\\|mingw\\|darwin/.*")
8642 "unless true\n"))))
8643 (add-before 'build 'compile
8644 (lambda _
8645 (invoke "rake" "compile")))
8646 (add-before 'check 'patch-tests
8647 (lambda _
8648 ;; srand': no implicit conversion of nil into Integer (TypeError)
8649 (delete-file "test/minitest_runner_test.rb")
8650 ;; Expects 5, gets 162. From a file containing ~10 lines.
8651 (substitute* "test/commands/finish_test.rb"
8652 (("test_finish_inside_autoloaded_files")
8653 "finish_inside_autoloaded_files"))))
8654 (add-before 'check 'set-home
8655 (lambda _
8656 (setenv "HOME" (getcwd)))))))
8657 (native-inputs
8658 (list bundler
8659 ruby-minitest
8660 ruby-pry
8661 ruby-rake-compiler
8662 ruby-rubocop
8663 ruby-yard))
8664 (synopsis "Debugger for Ruby 2")
8665 (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
8666TracePoint C API for execution control and the Debug Inspector C API for call
8667stack navigation. The core component provides support that front-ends can
8668build on. It provides breakpoint handling and bindings for stack frames among
8669other things and it comes with a command line interface.")
8670 (home-page "https://github.com/deivid-rodriguez/byebug")
8671 (license license:bsd-2)))
8672
8673(define-public ruby-netrc
8674 (package
8675 (name "ruby-netrc")
8676 (version "0.11.0")
8677 (source (origin
8678 (method url-fetch)
8679 (uri (rubygems-uri "netrc" version))
8680 (sha256
8681 (base32
8682 "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y"))))
8683 (build-system ruby-build-system)
8684 (arguments
8685 `(#:phases
8686 (modify-phases %standard-phases
8687 (replace 'check
8688 ;; There is no Rakefile and minitest can only run one file at once,
8689 ;; so we have to iterate over all test files.
8690 (lambda _
8691 (for-each (lambda (file)
8692 (invoke "ruby" "-Itest" file))
8693 (find-files "./test" "test_.*\\.rb"))))
8694 (add-before 'check 'patch-tests-for-newer-ruby
8695 (lambda _
8696 (substitute* "test/test_netrc.rb"
8697 (("Dir.pwd, '.netrc'") "Netrc.home_path, '.netrc'")))))))
8698 (native-inputs
8699 (list ruby-minitest))
8700 (synopsis "Library to read and update netrc files")
8701 (description
8702 "This library can read and update netrc files, preserving formatting
8703including comments and whitespace.")
8704 (home-page "https://github.com/geemus/netrc")
8705 (license license:expat)))
8706
8707(define-public ruby-unf-ext
8708 (package
8709 (name "ruby-unf-ext")
8710 (version "0.0.8.2")
8711 (source (origin
8712 (method url-fetch)
8713 (uri (rubygems-uri "unf_ext" version))
8714 (sha256
8715 (base32
8716 "1yj2nz2l101vr1x9w2k83a0fag1xgnmjwp8w8rw4ik2rwcz65fch"))))
8717 (build-system ruby-build-system)
8718 (arguments
8719 `(#:phases
8720 (modify-phases %standard-phases
8721 (add-after 'build 'build-ext
8722 (lambda _ (invoke "rake" "compile:unf_ext")))
8723 (add-before 'check 'lose-rake-compiler-dock-dependency
8724 (lambda _
8725 ;; rake-compiler-dock is listed in the gemspec, but only
8726 ;; required when cross-compiling.
8727 (substitute* "unf_ext.gemspec"
8728 ((".*rake-compiler-dock.*") "")))))))
8729 (native-inputs
8730 (list bundler ruby-rake-compiler ruby-test-unit))
8731 (synopsis "Unicode normalization form support library")
8732 (description
8733 "This package provides unicode normalization form support for Ruby.")
8734 (home-page "https://github.com/knu/ruby-unf_ext")
8735 (license license:expat)))
8736
8737(define-public ruby-tdiff
8738 ;; Use a newer than released snapshot so that rspec-2 is not required.
8739 (let ((commit "b662a6048f08abc45c1a834e5f34dd1c662935e2"))
8740 (package
8741 (name "ruby-tdiff")
8742 (version (string-append "0.3.3-1." (string-take commit 8)))
8743 (source (origin
8744 (method git-fetch)
8745 (uri (git-reference
8746 (url "https://github.com/postmodern/tdiff")
8747 (commit commit)))
8748 (file-name (string-append name "-" version "-checkout"))
8749 (sha256
8750 (base32
8751 "0n3gq8rx49f7ln6zqlshqfg2mgqyy30rsdjlnki5mv307ykc7ad4"))))
8752 (build-system ruby-build-system)
8753 (native-inputs
8754 (list ruby-rspec ruby-yard/minimal ruby-rubygems-tasks))
8755 (synopsis "Calculate the differences between two tree-like structures")
8756 (description
8757 "This library provides functions to calculate the differences between two
8758tree-like structures. It is similar to Ruby's built-in @code{TSort} module.")
8759 (home-page "https://github.com/postmodern/tdiff")
8760 (license license:expat))))
8761
8762(define-public ruby-nokogiri-diff
8763 ;; Use a newer than released snapshot so that rspec-2 is not required.
8764 (let ((commit "a38491e4d8709b7406f2cae11a50226d927d06f5"))
8765 (package
8766 (name "ruby-nokogiri-diff")
8767 (version (string-append "0.2.0-1." (string-take commit 8)))
8768 (source (origin
8769 (method git-fetch)
8770 (uri (git-reference
8771 (url "https://github.com/postmodern/nokogiri-diff")
8772 (commit commit)))
8773 (file-name (string-append name "-" version "-checkout"))
8774 (sha256
8775 (base32
8776 "1ah2sfjh9n1p0ln2wkqzfl448ml7j4zfy6dhp1qgzq2m41php6rf"))))
8777 (build-system ruby-build-system)
8778 (propagated-inputs
8779 (list ruby-tdiff
8780 ruby-nokogiri))
8781 (native-inputs
8782 (list ruby-rspec ruby-yard/minimal ruby-rubygems-tasks))
8783 (synopsis "Calculate the differences between two XML/HTML documents")
8784 (description
8785 "@code{Nokogiri::Diff} adds the ability to calculate the
8786differences (added or removed nodes) between two XML/HTML documents.")
8787 (home-page "https://github.com/postmodern/nokogiri-diff")
8788 (license license:expat))))
8789
8790(define-public ruby-racc
8791 (package
8792 (name "ruby-racc")
8793 (version "1.5.2")
8794 (source
8795 (origin
8796 (method url-fetch)
8797 (uri (rubygems-uri "racc" version))
8798 (sha256
8799 (base32
8800 "178k7r0xn689spviqzhvazzvxfq6fyjldxb3ywjbgipbfi4s8j1g"))))
8801 (build-system ruby-build-system)
8802 (arguments
8803 `(#:tests? #f)) ; Fails while parsing test instructions.
8804 (native-inputs
8805 (list ruby-hoe ruby-rake-compiler))
8806 (synopsis "LALR(1) parser generator for Ruby")
8807 (description
8808 "Racc is a LALR(1) parser generator. It is written in Ruby itself, and
8809generates Ruby program.")
8810 (home-page "https://i.loveruby.net/en/projects/racc/")
8811 (license (list
8812 ;; Generally licensed under the LGPL2.1, and some files also
8813 ;; available under the same license as Ruby.
8814 license:lgpl2.1
8815 license:ruby))))
8816
8817(define-public ruby-rack
8818 (package
8819 (name "ruby-rack")
8820 ;; Do not upgrade to version 3, as Rails doesn't support it yet.
8821 (version "2.2.7")
8822 (source
8823 (origin
8824 (method git-fetch) ;for tests
8825 (uri (git-reference
8826 (url "https://github.com/rack/rack")
8827 (commit (string-append "v" version))))
8828 (file-name (git-file-name name version))
8829 (sha256
8830 (base32
8831 "02r41fr61x0jfhraizc6bsgs40p8mlpvnzix71zwmcvibg384ify"))))
8832 (build-system ruby-build-system)
8833 (arguments
8834 (list
8835 #:phases
8836 #~(modify-phases %standard-phases
8837 (add-before 'check 'fix-tests
8838 (lambda _
8839 ;; This test fails in the build environment (and passes outside
8840 ;; of it).
8841 (substitute* "test/spec_files.rb"
8842 (("res.body.must_equal expected_body") ""))
8843 ;; A few of the tests use the length of a file on disk for
8844 ;; Content-Length and Content-Range headers. However, this file
8845 ;; has a shebang in it which an earlier phase patches, growing
8846 ;; the file size from 193 to 239 bytes when the store prefix is
8847 ;; "/gnu/store".
8848 (let ((size-diff (- (string-length (which "ruby"))
8849 (string-length "/usr/bin/env ruby"))))
8850 (substitute* '("test/spec_files.rb")
8851 (("208" bytes)
8852 (number->string (+ (string->number bytes) size-diff)))
8853 (("bytes(.)22-33" all delimiter)
8854 (string-append "bytes"
8855 delimiter
8856 (number->string (+ 22 size-diff))
8857 "-"
8858 (number->string (+ 33 size-diff)))))))))))
8859 (native-inputs
8860 (list ruby-minitest
8861 ruby-minitest-global-expectations
8862 ruby-webrick))
8863 (synopsis "Unified web application interface for Ruby")
8864 (description "Rack provides a minimal, modular and adaptable interface for
8865developing web applications in Ruby. By wrapping HTTP requests and responses,
8866it unifies the API for web servers, web frameworks, and software in between
8867into a single method call.")
8868 (home-page "https://github.com/rack/rack")
8869 (license license:expat)))
8870
8871(define-public ruby-rack-next
8872 (package
8873 (inherit ruby-rack)
8874 (name "ruby-rack")
8875 (version "3.0.7")
8876 (source (origin
8877 (method git-fetch) ;for tests
8878 (uri (git-reference
8879 (url "https://github.com/rack/rack")
8880 (commit (string-append "v" version))))
8881 (file-name (git-file-name name version))
8882 (sha256
8883 (base32
8884 "0msf14655nfcq1kgmib6932lgzm9nw3nb0m3c7nh6nj4sx30yxfr"))))
8885 (arguments '())))
8886
8887(define-public ruby-rackup
8888 (package
8889 (name "ruby-rackup")
8890 (version "2.1.0")
8891 (source (origin
8892 (method git-fetch)
8893 (uri (git-reference
8894 (url "https://github.com/rack/rackup")
8895 (commit (string-append "v" version))))
8896 (file-name (git-file-name name version))
8897 (sha256
8898 (base32
8899 "19b7sy700zjwaw7x47qpxvhnnz5hrp5bhrxfyljgagrli824dajy"))))
8900 (build-system ruby-build-system)
8901 (native-inputs (list ruby-minitest-global-expectations))
8902 (inputs (list ruby-rack-next ruby-webrick))
8903 (synopsis "Command line interface (CLI) for running for Rack applications")
8904 (description "This package provides a command line interface for running
8905for Rack applications.")
8906 (home-page "https://github.com/rack/rackup")
8907 (license license:expat)))
8908
8909(define-public ruby-rackup-1
8910 (package
8911 (inherit ruby-rackup)
8912 (name "ruby-rackup")
8913 (version "1.0.1")
8914 (source (origin
8915 (method git-fetch)
8916 (uri (git-reference
8917 (url "https://github.com/rack/rackup")
8918 (commit (string-append "v" version))))
8919 (file-name (git-file-name name version))
8920 (sha256
8921 (base32
8922 "1xdfxsz7jx2gwfq212y9mca6q0i5s7kyqbfcscy1315awg57ynyp"))))))
8923
8924(define-public ruby-rack-cache
8925 (package
8926 (name "ruby-rack-cache")
8927 (version "1.13.0")
8928 (source (origin
8929 (method url-fetch)
8930 (uri (rubygems-uri "rack-cache" version))
8931 (sha256
8932 (base32
8933 "1cqpax628h2mhnsjfg91c3klxwx2pkvaj061cisb0saqa99b0jgm"))))
8934 (build-system ruby-build-system)
8935 (arguments
8936 (list
8937 ;; The test suite depends on ruby-memcached, which is not available in
8938 ;; Guix and bundles a very dated copy of memcached (undesirable).
8939 #:tests? #f))
8940 (propagated-inputs (list ruby-rack))
8941 (synopsis "Component to enable HTTP caching for Rack-based applications")
8942 (description "Rack::Cache is suitable as a drop-in component to enable
8943HTTP caching for Rack-based applications that produce freshness (Expires,
8944Cache-Control) and/or validation (Last-Modified, ETag) information.")
8945 (home-page "https://github.com/rtomayko/rack-cache")
8946 (license license:expat)))
8947
8948(define-public ruby-rack-test
8949 (package
8950 (name "ruby-rack-test")
8951 (version "2.1.0")
8952 (source
8953 (origin
8954 (method url-fetch)
8955 (uri (rubygems-uri "rack-test" version))
8956 (sha256
8957 (base32
8958 "1ysx29gk9k14a14zsp5a8czys140wacvp91fja8xcja0j1hzqq8c"))))
8959 (build-system ruby-build-system)
8960 (arguments
8961 ;; Disable tests because of circular dependencies: requires sinatra,
8962 ;; which requires rack-protection, which requires rack-test. Instead
8963 ;; simply require the library.
8964 `(#:phases
8965 (modify-phases %standard-phases
8966 (replace 'check
8967 (lambda* (#:key tests? #:allow-other-keys)
8968 (when tests?
8969 (invoke "ruby" "-Ilib" "-r" "rack/test")))))))
8970 (propagated-inputs
8971 (list ruby-rack))
8972 (synopsis "Testing API for Rack applications")
8973 (description
8974 "Rack::Test is a small, simple testing API for Rack applications. It can
8975be used on its own or as a reusable starting point for Web frameworks and
8976testing libraries to build on.")
8977 (home-page "https://github.com/rack/rack-test")
8978 (license license:expat)))
8979
8980(define-public ruby-rack-session
8981 (package
8982 (name "ruby-rack-session")
8983 ;; Stay on version 1 until all the rack users such as Rails can use rack 3
8984 ;; (rack-session 2 requires rack 3).
8985 (version "1.0.1")
8986 (source (origin
8987 (method git-fetch) ;for tests
8988 (uri (git-reference
8989 (url "https://github.com/rack/rack-session")
8990 (commit (string-append "v" version))))
8991 (file-name (git-file-name name version))
8992 (sha256
8993 (base32
8994 "0rv955wd7ckp5jgy5c229wmajh48jpcy8s0iv5i8ma61wf7qw0i1"))))
8995 (build-system ruby-build-system)
8996 (native-inputs
8997 (list ruby-minitest-global-expectations
8998 ruby-minitest-sprint))
8999 (propagated-inputs
9000 (list ruby-rack))
9001 (synopsis "Session management for Rack")
9002 (description "This package provides a session management implementation
9003for Rack.")
9004 (home-page "https://github.com/rack/rack-session")
9005 (license license:expat)))
9006
9007(define-public ruby-rack-protection
9008 (package
9009 (name "ruby-rack-protection")
9010 (version "3.0.5")
9011 (source
9012 (origin
9013 (method url-fetch)
9014 (uri (rubygems-uri "rack-protection" version))
9015 (sha256
9016 (base32
9017 "1a12m1mv8dc0g90fs1myvis8vsgr427k1arg1q4a9qlfw6fqyhis"))))
9018 (build-system ruby-build-system)
9019 (arguments
9020 '(;; Tests missing from the gem.
9021 #:tests? #f))
9022 (propagated-inputs
9023 (list ruby-rack))
9024 (native-inputs
9025 (list bundler ruby-rspec-2 ruby-rack-test))
9026 (synopsis "Rack middleware that protects against typical web attacks")
9027 (description "Rack middleware that can be used to protect against typical
9028web attacks. It can protect all Rack apps, including Rails. For instance, it
9029protects against cross site request forgery, cross site scripting,
9030clickjacking, directory traversal, session hijacking and IP spoofing.")
9031 (home-page "https://github.com/sinatra/sinatra/tree/master/rack-protection")
9032 (license license:expat)))
9033
9034(define-public ruby-rainbow
9035 (package
9036 (name "ruby-rainbow")
9037 (version "3.0.0")
9038 (source
9039 (origin
9040 (method url-fetch)
9041 (uri (rubygems-uri "rainbow" version))
9042 (sha256
9043 (base32
9044 "0bb2fpjspydr6x0s8pn1pqkzmxszvkfapv0p4627mywl7ky4zkhk"))))
9045 (build-system ruby-build-system)
9046 (arguments
9047 '(#:phases
9048 (modify-phases %standard-phases
9049 ;; Run rspec directly, to avoid requiring Rubocop which is used from
9050 ;; the Rakefile.
9051 (replace 'check
9052 (lambda* (#:key tests? #:allow-other-keys)
9053 (when tests?
9054 (invoke "rspec")))))))
9055 (native-inputs
9056 (list bundler ruby-rspec))
9057 (synopsis "Colorize printed text on ANSI terminals")
9058 (description
9059 "@code{rainbow} provides a string presenter object to colorize strings by
9060wrapping them in ANSI escape codes.")
9061 (home-page "https://github.com/sickill/rainbow")
9062 (license license:expat)))
9063
9064(define-public ruby-rr
9065 (package
9066 (name "ruby-rr")
9067 (version "1.2.1")
9068 (source
9069 (origin
9070 (method url-fetch)
9071 (uri (rubygems-uri "rr" version))
9072 (sha256
9073 (base32
9074 "1n9g78ba4c2zzmz8cdb97c38h1xm0clircag00vbcxwqs4dq0ymp"))))
9075 (build-system ruby-build-system)
9076 (arguments
9077 '(#:tests? #f)) ; test files not included
9078 (native-inputs
9079 (list bundler ruby-rspec))
9080 (synopsis "Ruby test double framework")
9081 (description
9082 "RR is a test double framework that features a rich selection of double
9083techniques and a terse syntax.")
9084 (home-page "https://rr.github.io/rr/")
9085 (license license:expat)))
9086
9087(define-public ruby-rest-client
9088 (package
9089 (name "ruby-rest-client")
9090 (version "2.1.0")
9091 (source
9092 (origin
9093 (method url-fetch)
9094 (uri (rubygems-uri "rest-client" version))
9095 (sha256
9096 (base32
9097 "1qs74yzl58agzx9dgjhcpgmzfn61fqkk33k1js2y5yhlvc5l19im"))))
9098 (build-system ruby-build-system)
9099 (arguments
9100 (list
9101 ;; TODO Some tests are currently broken
9102 #:tests? #f
9103 #:phases
9104 #~(modify-phases %standard-phases
9105 (add-before 'check 'remove-unnecessary-development-dependencies
9106 (lambda _
9107 (substitute* "rest-client.gemspec"
9108 ;; Remove rubocop as it's unused. Rubocop also indirectly
9109 ;; depends on this package through ruby-parser and ruby-ast so
9110 ;; this avoids a dependency loop.
9111 ((".*rubocop.*") "\n")
9112 ;; Remove pry as it's unused, it's a debugging tool
9113 ((".*pry.*") "\n")
9114 ;; Remove an unnecessarily strict rdoc dependency
9115 ((".*rdoc.*") "\n"))))
9116 (add-before 'check 'delete-network-dependent-tests
9117 (lambda _
9118 (delete-file "spec/integration/request_spec.rb")
9119 (delete-file "spec/integration/httpbin_spec.rb")))
9120 (replace 'check
9121 (lambda* (#:key tests? #:allow-other-keys)
9122 (when tests?
9123 (invoke "rspec")))))))
9124 (propagated-inputs
9125 (list ruby-http-accept-1
9126 ruby-http-cookie
9127 ruby-mime-types
9128 ruby-netrc))
9129 (native-inputs
9130 (list bundler
9131 ruby-webmock-2
9132 ruby-rspec))
9133 (synopsis "Simple HTTP and REST client for Ruby")
9134 (description
9135 "@code{rest-client} provides a simple HTTP and REST client for Ruby,
9136inspired by the Sinatra microframework style of specifying actions:
9137@code{get}, @code{put}, @code{post}, @code{delete}.")
9138 (home-page "https://github.com/rest-client/rest-client")
9139 (license license:expat)))
9140
9141(define-public ruby-rubocop-ast
9142 (package
9143 (name "ruby-rubocop-ast")
9144 (version "1.37.0")
9145 (source
9146 (origin
9147 (method git-fetch) ;no test suite in distributed gem
9148 (uri (git-reference
9149 (url "https://github.com/rubocop/rubocop-ast")
9150 (commit (string-append "v" version))))
9151 (file-name (git-file-name name version))
9152 (sha256
9153 (base32
9154 "1ww1vxcx6qaih4g68mrbq4xlgrqbv8w7cqxdaz629sazpw2hkycs"))))
9155 (build-system ruby-build-system)
9156 (arguments
9157 `(#:test-target "spec"
9158 #:phases (modify-phases %standard-phases
9159 (add-after 'unpack 'relax-dependencies
9160 (lambda _
9161 (substitute* "Gemfile"
9162 (("gem 'simplecov', '~> 0.10', '< 0.18'")
9163 "gem 'simplecov', '~> 0.10'"))))
9164 (add-before 'build 'generate-lexer
9165 (lambda _
9166 (setenv "RUBOCOP_VERSION" "none")
9167 (invoke "rake" "generate")))
9168 (replace 'replace-git-ls-files
9169 (lambda _
9170 (substitute* "rubocop-ast.gemspec"
9171 (("`git ls-files(.*)`" _ files)
9172 (format #f "`find ~a -type f| sort`" files))))))))
9173 (native-inputs
9174 (list ruby-bump
9175 ruby-oedipus-lex
9176 ruby-prism
9177 ruby-racc
9178 ruby-rake
9179 ruby-rspec
9180 ruby-simplecov))
9181 (propagated-inputs
9182 (list ruby-parser))
9183 (synopsis "RuboCop's AST extensions and NodePattern functionality")
9184 (description "Rubocop::AST extends @code{ruby-parser} with classes used
9185by RuboCop to deal with Ruby's Abstract Syntax Tree (AST), in particular:
9186@itemize
9187@item @code{RuboCop::AST::Node}
9188@item @code{RuboCop::AST::NodePattern}
9189@end itemize")
9190 (home-page "https://rubocop.org/")
9191 (license license:expat)))
9192
9193(define-public ruby-rexml
9194 (package
9195 (name "ruby-rexml")
9196 (version "3.2.5")
9197 (source
9198 (origin
9199 (method git-fetch) ;no tests in distributed gem
9200 (uri (git-reference
9201 (url "https://github.com/ruby/rexml")
9202 (commit (string-append "v" version))))
9203 (file-name (git-file-name name version))
9204 (sha256
9205 (base32 "13n6vaa80drqic2wri4q6k22qzvsn683vp5s8c9dllil6x04kn0x"))))
9206 (build-system ruby-build-system)
9207 (synopsis "XML toolkit for Ruby")
9208 (description "Inspired by Electric XML library for Java, REXML aims to be
9209easy-to-use API, small and fast. It supports both tree and stream document
9210parsing.")
9211 (home-page "https://github.com/ruby/rexml")
9212 (license license:bsd-2)))
9213
9214(define-public ruby-character-set
9215 (package
9216 (name "ruby-character-set")
9217 (version "1.4.0")
9218 (source
9219 (origin
9220 (method url-fetch)
9221 (uri (rubygems-uri "character_set" version))
9222 (sha256
9223 (base32
9224 "0affq9n77vwy897ri2zhmfinfagf37hcwwimrccy1bcxan9mj3h3"))))
9225 (build-system ruby-build-system)
9226 (arguments '(#:tests? #f)) ;avoid a cycle with ruby-regexp-parser
9227 (synopsis "Ruby library to manipulate Unicode")
9228 (description "CharacterSet is a C-extended Ruby library to work with sets
9229of Unicode code points. It can read and write these sets in various formats
9230and implements the @code{stdlib} @code{Set} interface for them. It also
9231offers an alternate paradigm of @code{String} processing which grants much
9232better performance than @code{Regexp} and @code{String} methods from the
9233@code{stdlib} where applicable. Many parts can be used independently, e.g.:
9234@itemize
9235@item @code{CharacterSet::Character}
9236@item @code{CharacterSet::Parser}
9237@item @code{CharacterSet::Writer}
9238@item @code{RangeCompressor}
9239@end itemize")
9240 (home-page "https://github.com/jaynetics/character_set")
9241 (license license:expat)))
9242
9243(define-public ruby-range-compressor
9244 (package
9245 (name "ruby-range-compressor")
9246 (version "1.2.0")
9247 (source
9248 (origin
9249 (method git-fetch)
9250 (uri (git-reference
9251 (url "https://github.com/janosch-x/range_compressor")
9252 (commit (string-append "v" version))))
9253 (file-name (git-file-name name version))
9254 (sha256
9255 (base32
9256 "1zmc44si5ac2h7r1x4f1j8z5yr6wz528c7dssh0g70fmczs3pfga"))))
9257 (build-system ruby-build-system)
9258 (arguments
9259 (list
9260 #:test-target "spec"
9261 #:phases
9262 #~(modify-phases %standard-phases
9263 (add-after 'extract-gemspec 'strip-version-requirements
9264 (lambda _
9265 (substitute* "range_compressor.gemspec"
9266 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
9267 (string-append stripped "\n"))))))))
9268 (native-inputs
9269 (list ruby-rspec
9270 ruby-sorted-set))
9271 (synopsis "Simple arrays of objects to arrays of ranges compressor")
9272 (description "RangeCompresses is a tiny library that allows compressing
9273arrays of objects into arrays of ranges. For example, it can turn the
9274following: @code{[1, 2, 3, 4, 6, 8, 9, 10]} into @code{[1..4, 6..6, 8..10]}.")
9275 (home-page "https://github.com/janosch-x/range_compressor")
9276 (license license:expat)))
9277
9278(define-public ruby-regexp-property-values
9279 (let ((commit "03007a66c912949a7130b973cc0eca109c20811f")
9280 (revision "1"))
9281 (package
9282 (name "ruby-regexp-property-values")
9283 (version (git-version "1.0.0" revision commit))
9284 (source
9285 (origin
9286 (method git-fetch)
9287 (uri (git-reference ;no test suite in distributed gem
9288 (url "https://github.com/jaynetics/regexp_property_values")
9289 (commit commit)))
9290 (file-name (git-file-name name version))
9291 (sha256
9292 (base32
9293 "1zsax784p16zdkf60lyq9z924zvsafhx9ckxx9srsgkyiqrifi1s"))))
9294 (build-system ruby-build-system)
9295 (arguments
9296 '(#:test-target "default"))
9297 (native-inputs
9298 (list ruby-character-set ruby-rake ruby-rake-compiler
9299 ruby-range-compressor ruby-rspec))
9300 (synopsis "Inspect Ruby's regex engine property values")
9301 (description "This small library lets you see which property values are
9302supported by the regular expression engine of the Ruby version you are running
9303and can directly read out their code point ranges. In other words, it
9304determines all supported values for @code{\\p{value}} expressions and what
9305they match.")
9306 (home-page "https://github.com/jaynetics/regexp_property_values")
9307 (license license:expat))))
9308
9309(define-public ruby-regexp-parser
9310 (package
9311 (name "ruby-regexp-parser")
9312 (version "2.6.0")
9313 (source
9314 (origin
9315 (method git-fetch) ;bin/test missing from gem
9316 (uri (git-reference
9317 (url "https://github.com/ammar/regexp_parser")
9318 (commit (string-append "v" version))))
9319 (file-name (git-file-name name version))
9320 (sha256
9321 (base32
9322 "07dx96gjvpa07dsdnzpwhhwc7qpxakjgws7d7wbnkbs20fyvx55x"))))
9323 (build-system ruby-build-system)
9324 (arguments
9325 '(#:test-target "default"
9326 #:phases (modify-phases %standard-phases
9327 (add-before 'build 'compile-scanner.rb
9328 (lambda _
9329 (invoke "rake" "build")
9330 ;; XXX: This is needed otherwise the install
9331 ;; phase fails to delete the installed cached
9332 ;; gem file.
9333 (delete-file-recursively "pkg"))))))
9334 (native-inputs
9335 (list ragel ruby-ice-nine ruby-regexp-property-values ruby-rspec))
9336 (synopsis "Regular expression parser library for Ruby")
9337 (description "A Ruby gem for tokenizing, parsing, and transforming regular
9338expressions. It comprises the following components:
9339@itemize
9340@item A scanner/tokenizer based on Ragel,
9341@item A lexer that produces a stream of token objects,
9342@item A parser that produces a tree of Expression objects.
9343@end itemize")
9344 (home-page "https://github.com/ammar/regexp_parser")
9345 (license license:expat)))
9346
9347(define-public ruby-test-queue
9348 (package
9349 (name "ruby-test-queue")
9350 (version "0.4.2")
9351 (source
9352 (origin
9353 (method url-fetch)
9354 (uri (rubygems-uri "test-queue" version))
9355 (sha256
9356 (base32
9357 "0hvm3n1qrqxqilhqk4rjivw3gcrd08zz1i6am9qzg1ppjxv6f36f"))))
9358 (build-system ruby-build-system)
9359 (arguments
9360 '(#:phases
9361 (modify-phases %standard-phases
9362 (replace 'check
9363 (lambda* (#:key tests? #:allow-other-keys)
9364 (when tests?
9365 (invoke "rspec")))))))
9366 (native-inputs
9367 (list ruby-rspec))
9368 (synopsis "Minitest/RSpec parallel test runner for CI environments")
9369 (description "The test-queue module is a parallel test runner,
9370built using a centralized queue to ensure optimal distribution of
9371tests between workers. It is specifically optimized for Continuous
9372Integration (CI) environments: build statistics from each run are
9373stored locally and used to sort the queue at the beginning of the next
9374run.")
9375 (home-page "https://github.com/tmm1/test-queue")
9376 (license license:expat)))
9377
9378(define-public ruby-rubocop
9379 (package
9380 (name "ruby-rubocop")
9381 (version "1.68.0")
9382 (source
9383 (origin
9384 (method git-fetch) ;no tests in distributed gem
9385 (uri (git-reference
9386 (url "https://github.com/rubocop/rubocop")
9387 (commit (string-append "v" version))))
9388 (file-name (git-file-name name version))
9389 (sha256
9390 (base32
9391 "0pfsrgkg2dhb6a2rknciqskgxgmb9kf48rvbkhay9n8n6m712v2w"))))
9392 (build-system ruby-build-system)
9393 (arguments
9394 `(#:test-target "default"
9395 ;; TODO: Figure out why test hangs.
9396 #:tests? ,(not (or (%current-target-system)
9397 (target-riscv64?)))
9398 #:phases
9399 (modify-phases %standard-phases
9400 (add-before 'check 'set-home
9401 (lambda _
9402 (setenv "HOME" (getcwd))))
9403 ;; Rubocop depends on itself for tests, directly and indirectly. By
9404 ;; regenerating the TODO list we test rubocop against itself and
9405 ;; forgo adjusting the test suite to our environment each release.
9406 (replace 'check
9407 (lambda* (#:key tests? #:allow-other-keys)
9408 (when tests?
9409 (make-file-writable ".rubocop_todo.yml")
9410 (invoke "./exe/rubocop" "--auto-gen-config")))))))
9411 (native-inputs
9412 (list ruby-pry
9413 ruby-rake
9414 ruby-rspec
9415 ruby-rubocop-ast
9416 ruby-rubocop-capybara-minimal
9417 ruby-rubocop-factory-bot
9418 ruby-rubocop-minimal
9419 ruby-rubocop-performance-minimal
9420 ruby-rubocop-rake-minimal
9421 ruby-rubocop-rspec-minimal
9422 ruby-simplecov
9423 ruby-stackprof
9424 ruby-test-queue
9425 ruby-webmock
9426 ruby-yard))
9427 (propagated-inputs
9428 (list ruby-json
9429 ruby-language-server-protocol
9430 ruby-parallel
9431 ruby-parser
9432 ruby-progressbar
9433 ruby-rainbow
9434 ruby-regexp-parser
9435 ruby-rexml
9436 ruby-rubocop-ast
9437 ruby-unicode-display-width))
9438 (synopsis "Ruby code style checking tool")
9439 (description
9440 "@code{rubocop} is a Ruby code style checking tool. It aims to enforce
9441the community-driven Ruby Style Guide.")
9442 (home-page "https://github.com/rubocop/rubocop")
9443 (license license:expat)))
9444
9445(define-public ruby-rubocop-minimal
9446 (hidden-package
9447 (package
9448 (inherit ruby-rubocop)
9449 (arguments
9450 (substitute-keyword-arguments (package-arguments ruby-rubocop)
9451 ((#:tests? _ #f) #f)))
9452 (propagated-inputs '())
9453 (native-inputs '()))))
9454
9455(define-public ruby-contest
9456 (package
9457 (name "ruby-contest")
9458 (version "0.1.3")
9459 (source
9460 (origin
9461 (method url-fetch)
9462 (uri (rubygems-uri "contest" version))
9463 (sha256
9464 (base32
9465 "1p9f2292b7b0fbrcjswvj9v01z7ig5ig52328wyqcabgb553qsdf"))))
9466 (build-system ruby-build-system)
9467 (synopsis "Write declarative tests using nested contexts")
9468 (description
9469 "Contest allows writing declarative @code{Test::Unit} tests using nested
9470contexts without performance penalties.")
9471 (home-page "https://github.com/citrusbyte/contest")
9472 (license license:expat)))
9473
9474(define-public ruby-creole
9475 (package
9476 (name "ruby-creole")
9477 (version "0.5.0")
9478 (source
9479 (origin
9480 (method url-fetch)
9481 (uri (rubygems-uri "creole" version))
9482 (sha256
9483 (base32
9484 "00rcscz16idp6dx0dk5yi5i0fz593i3r6anbn5bg2q07v3i025wm"))))
9485 (build-system ruby-build-system)
9486 (native-inputs
9487 (list ruby-bacon))
9488 (synopsis "Creole markup language converter")
9489 (description
9490 "Creole is a lightweight markup language and this library for converting
9491creole to @code{HTML}.")
9492 (home-page "https://github.com/minad/creole")
9493 (license license:ruby)))
9494
9495(define-public ruby-docile
9496 (package
9497 (name "ruby-docile")
9498 (version "1.1.5")
9499 (source
9500 (origin
9501 (method url-fetch)
9502 (uri (rubygems-uri "docile" version))
9503 (sha256
9504 (base32
9505 "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx"))))
9506 (build-system ruby-build-system)
9507 (arguments
9508 '(#:tests? #f)) ; needs github-markup, among others
9509 (synopsis "Ruby EDSL helper library")
9510 (description "Docile is a Ruby library that provides an interface for
9511creating embedded domain specific languages (EDSLs) that manipulate existing
9512Ruby classes.")
9513 (home-page "https://ms-ati.github.io/docile/")
9514 (license license:expat)))
9515
9516(define-public ruby-middleware
9517 (package
9518 (name "ruby-middleware")
9519 (version "0.1.0")
9520 (source
9521 (origin
9522 (method url-fetch)
9523 (uri (rubygems-uri "middleware" version))
9524 (sha256
9525 (base32
9526 "0703nkf2v371wqr41c04x5qid7ww45cxqv3hnlg07if3b3xrm9xl"))))
9527 (build-system ruby-build-system)
9528 (arguments '(#:tests? #f)) ;no test suite
9529 (synopsis "Implementation of a middleware abstraction for Ruby")
9530 (description "Middleware is a generalized implementation of a middleware
9531abstraction for Ruby.")
9532 (home-page "https://github.com/mitchellh/middleware")
9533 (license license:expat)))
9534
9535(define-public ruby-benchmark-ips
9536 (package
9537 (name "ruby-benchmark-ips")
9538 (version "2.12.0")
9539 (source
9540 (origin
9541 (method git-fetch) ;no tests in distributed gem
9542 (uri (git-reference
9543 (url "https://github.com/evanphx/benchmark-ips")
9544 (commit (string-append "v" version))))
9545 (file-name (git-file-name name version))
9546 (sha256
9547 (base32
9548 "19pa2a1lgjzrxcz6vxwfiq5qq337vr15bbbpc2mfwzljdlx5059s"))))
9549 (build-system ruby-build-system)
9550 (arguments
9551 (list
9552 #:phases
9553 #~(modify-phases %standard-phases
9554 (add-after 'unpack 'patch
9555 (lambda _
9556 (substitute* "Gemfile"
9557 (("gem 'rake'.*")
9558 "gem 'rake'"))
9559 (substitute* "benchmark-ips.gemspec"
9560 (("git ls-files -- examples lib")
9561 "find examples lib -type f | sort")))))))
9562 (native-inputs
9563 (list ruby-hoe))
9564 (synopsis "Iterations per second enhancement for the Ruby Benchmark module")
9565 (description "Benchmark-ips enhances the Ruby Benchmark module with the
9566iterations per second count. For short snippets of code, it can automatically
9567figure out how many times to run the code to get interesting data.")
9568 (home-page "https://github.com/evanphx/benchmark-ips")
9569 (license license:expat)))
9570
9571(define-public ruby-ffi-rzmq-core
9572 (package
9573 (name "ruby-ffi-rzmq-core")
9574 (version "1.0.7")
9575 (source
9576 (origin
9577 (method url-fetch)
9578 (uri (rubygems-uri "ffi-rzmq-core" version))
9579 (sha256
9580 (base32
9581 "0amkbvljpjfnv0jpdmz71p1i3mqbhyrnhamjn566w0c01xd64hb5"))))
9582 (build-system ruby-build-system)
9583 (arguments
9584 `(#:phases
9585 (modify-phases %standard-phases
9586 (add-after 'unpack 'patch-libzmq-search-path
9587 (lambda* (#:key inputs #:allow-other-keys)
9588 (let ((zeromq (assoc-ref inputs "zeromq")))
9589 (substitute* "lib/ffi-rzmq-core/libzmq.rb"
9590 (("/usr/local/lib")
9591 (string-append zeromq "/lib"))))))
9592 (replace 'check
9593 (lambda _
9594 (invoke "rspec"))))))
9595 (native-inputs
9596 (list ruby-rspec))
9597 (inputs
9598 (list zeromq))
9599 (propagated-inputs (list ruby-ffi))
9600 (synopsis "Low-level Ruby FFI wrapper for the ZeroMQ networking library")
9601 (description "This library only provides the FFI wrapper for the ZeroMQ
9602networking library. It can be used to implement a Ruby API for the ZeroMQ
9603library.")
9604 (home-page "https://github.com/chuckremes/ffi-rzmq-core")
9605 (license license:expat)))
9606
9607(define-public ruby-ffi-rzmq
9608 (package
9609 (name "ruby-ffi-rzmq")
9610 (version "2.0.7")
9611 (source
9612 (origin
9613 (method url-fetch)
9614 (uri (rubygems-uri "ffi-rzmq" version))
9615 (sha256
9616 (base32
9617 "14a5kxfnf8l3ngyk8hgmk30z07aj1324ll8i48z67ps6pz2kpsrg"))))
9618 (build-system ruby-build-system)
9619 (arguments '(#:phases (modify-phases %standard-phases
9620 (replace 'check
9621 (lambda* (#:key tests? #:allow-other-keys)
9622 (when tests?
9623 (invoke "rspec")))))))
9624 (native-inputs
9625 (list ruby-rspec))
9626 (propagated-inputs
9627 (list ruby-ffi-rzmq-core))
9628 (synopsis "High-level Ruby wrapper for the ZeroMQ networking library")
9629 (description "This library provides a high-level API that wraps the ZeroMQ
9630networking library using the Ruby foreign function interface (FFI). It is a
9631pure Ruby wrapper, hence is compatible with any Ruby runtime that has support
9632for FFI.")
9633 (home-page "https://github.com/chuckremes/ffi-rzmq")
9634 (license license:expat)))
9635
9636(define-public ruby-sawyer
9637 (package
9638 (name "ruby-sawyer")
9639 (version "0.9.2")
9640 (source
9641 (origin
9642 (method url-fetch)
9643 (uri (rubygems-uri "sawyer" version))
9644 (sha256
9645 (base32
9646 "1jks1qjbmqm8f9kvwa81vqj39avaj9wdnzc531xm29a55bb74fps"))))
9647 (build-system ruby-build-system)
9648 (propagated-inputs
9649 (list ruby-addressable ruby-faraday))
9650 (synopsis "Experimental hypermedia agent for Ruby")
9651 (description "Sawyer is an experimental hypermedia agent for Ruby built on
9652top of Faraday.")
9653 (home-page "https://github.com/lostisland/sawyer")
9654 (license license:expat)))
9655
9656(define-public ruby-octokit
9657 (package
9658 (name "ruby-octokit")
9659 (version "6.1.1")
9660 (source (origin
9661 (method git-fetch)
9662 (uri (git-reference
9663 (url "https://github.com/octokit/octokit.rb")
9664 (commit (string-append "v" version))))
9665 (file-name (git-file-name name version))
9666 (sha256
9667 (base32
9668 "02bcmh0b0v80cis1l80lhzxw8adb69xkz6qgg4m7qcmj3y5arwmk"))))
9669 (build-system ruby-build-system)
9670 (arguments
9671 (list
9672 #:phases
9673 #~(modify-phases %standard-phases
9674 (add-after 'unpack 'remove-unnecessary-dependencies
9675 (lambda _
9676 (substitute* "spec/spec_helper.rb"
9677 (("require 'pry-byebug'") "")))))))
9678 (native-inputs
9679 (list ruby-faraday-multipart
9680 ruby-jwt
9681 ruby-mime-types
9682 ruby-multi-json
9683 ruby-netrc
9684 ruby-rbnacl
9685 ruby-rspec
9686 ruby-simplecov
9687 ruby-webmock
9688 ruby-vcr-expat))
9689 (propagated-inputs (list ruby-faraday ruby-sawyer))
9690 (synopsis "Ruby toolkit for the GitHub API")
9691 (description "Octokit wraps the GitHub API in a flat API client that
9692follows Ruby conventions and requires little knowledge of REST.")
9693 (home-page "https://github.com/octokit/octokit.rb")
9694 (license license:expat)))
9695
9696(define-public ruby-hashicorp-checkpoint
9697 (package
9698 (name "ruby-hashicorp-checkpoint")
9699 (version "0.1.5")
9700 (source (origin
9701 (method url-fetch)
9702 (uri (rubygems-uri "hashicorp-checkpoint" version))
9703 (sha256
9704 (base32
9705 "1z6mwzvd7p2wqhmk07dwrhvm0ncgqm7pxn0pr2k025rwsspp9bsd"))))
9706 (build-system ruby-build-system)
9707 (arguments
9708 (list #:tests? #f)) ;; no need to test, useless outside HashiCorp anyway
9709 (synopsis "Internal HashiCorp service to check version information")
9710 (description "This package is probably useless outside of internal
9711HashiCorp use. It is open source for disclosure and because HashiCorp's open
9712source projects must be able to link to it.")
9713 (home-page "https://github.com/hashicorp/ruby-checkpoint")
9714 (license license:mpl2.0)))
9715
9716(define-public ruby-vagrant-cloud
9717 (package
9718 (name "ruby-vagrant-cloud")
9719 (version "3.1.1")
9720 (source (origin
9721 (method git-fetch)
9722 (uri (git-reference
9723 (url "https://github.com/hashicorp/vagrant_cloud")
9724 (commit (string-append "v" version))))
9725 (file-name (git-file-name name version))
9726 (sha256
9727 (base32
9728 "0bnjd8b86lrgj5ar1l7pg5if95bv0sxa75mz7x2ikqyz6q8rmjb3"))))
9729 (build-system ruby-build-system)
9730 (arguments
9731 `(#:test-target "spec"))
9732 (native-inputs (list ruby-rspec ruby-webmock))
9733 (propagated-inputs (list ruby-excon ruby-log4r ruby-rexml))
9734 (synopsis "Vagrant Cloud API library")
9735 (description "This library provides the functionality to create, modify,
9736and delete boxes, versions, and providers on HashiCorp's Vagrant Cloud.")
9737 (home-page "https://github.com/hashicorp/vagrant_cloud")
9738 (license license:asl2.0)))
9739
9740(define-public ruby-libvirt
9741 (package
9742 (name "ruby-libvirt")
9743 (version "0.8.2")
9744 (source (origin
9745 (method url-fetch)
9746 (uri (rubygems-uri "ruby-libvirt" version))
9747 (sha256
9748 (base32
9749 "0v6vj5vs9v01zr00bflqpfczhwcyc6jdf8k2dqn42lq6d87si77d"))))
9750 (build-system ruby-build-system)
9751 (arguments
9752 (list
9753 #:tests? #f)) ; tests require access to libvirt socket
9754 (native-inputs (list pkg-config))
9755 (inputs (list libvirt))
9756 (synopsis "Ruby bindings for libvirt")
9757 (description "This package provides Ruby language binding for libvirt's
9758native C API.")
9759 (home-page "https://ruby.libvirt.org/")
9760 (license license:lgpl2.1+)))
9761
9762(define-public ruby-fog-core
9763 (package
9764 (name "ruby-fog-core")
9765 (version "2.4.0")
9766 (source (origin
9767 (method git-fetch) ; for tests
9768 (uri (git-reference
9769 (url "https://github.com/fog/fog-core")
9770 (commit (string-append "v" version))))
9771 (file-name (git-file-name name version))
9772 (sha256
9773 (base32
9774 "184vpi81az7raz98652m7d98ikabdl9di37dgal0adr76q57j03c"))))
9775 (build-system ruby-build-system)
9776 (arguments
9777 (list
9778 #:phases
9779 #~(modify-phases %standard-phases
9780 (add-before 'check 'set-home
9781 (lambda _
9782 (setenv "HOME" "/tmp"))))))
9783 (native-inputs (list ruby-minitest-stub-const))
9784 (propagated-inputs (list ruby-builder ruby-excon ruby-formatador
9785 ruby-mime-types))
9786 (synopsis "Shared classes and tests for fog providers and services")
9787 (description "@code{fog} is a Ruby cloud services library. This package
9788provides shared classes and tests for @code{fog} providers and services.")
9789 (home-page "https://github.com/fog/fog-core")
9790 (license license:expat)))
9791
9792(define-public ruby-fog-json
9793 (package
9794 (name "ruby-fog-json")
9795 (version "1.2.0")
9796 (source (origin
9797 (method git-fetch) ; for tests
9798 (uri (git-reference
9799 (url "https://github.com/fog/fog-json")
9800 (commit (string-append "v" version))))
9801 (file-name (git-file-name name version))
9802 (sha256
9803 (base32
9804 "0f4hbmhy22b1gbkzd3pnj5xvljp6bl7inc2y4fxh29nrmcn4pgb0"))))
9805 (build-system ruby-build-system)
9806 (native-inputs (list ruby-minitest))
9807 (propagated-inputs (list ruby-fog-core ruby-multi-json))
9808 (synopsis "JSON parsing tools used by @code{fog} providers")
9809 (description "This package containse the JSON parsing tools shared between
9810a number of providers in the @code{fog} gem. @code{fog} is a Ruby cloud
9811services library.")
9812 (home-page "https://github.com/fog/fog-json")
9813 (license license:expat)))
9814
9815(define-public ruby-fog-xml
9816 (package
9817 (name "ruby-fog-xml")
9818 (version "0.1.5")
9819 (source (origin
9820 (method git-fetch) ; for tests
9821 (uri (git-reference
9822 (url "https://github.com/fog/fog-xml")
9823 (commit (string-append "v" version))))
9824 (file-name (git-file-name name version))
9825 (sha256
9826 (base32
9827 "1v896k9j44axhgvwjvk1j0amy27a9fm6ynv656fxqa1m2wib6dzh"))))
9828 (build-system ruby-build-system)
9829 (arguments
9830 (list
9831 #:phases
9832 #~(modify-phases %standard-phases
9833 ;; Run tests via bundler so rake picks up the minitest gem from
9834 ;; native-inputs, not the one installed otherwise. This is required
9835 ;; since turn@0.9.7 needs minitest@4 and can not be upgraded to
9836 ;; minitest@5.
9837 (replace 'check
9838 (lambda* (#:key tests? #:allow-other-keys)
9839 (when tests?
9840 (invoke "bundle" "exec" "rake")))))))
9841 (native-inputs (list ruby-minitest ruby-pry ruby-coveralls))
9842 (propagated-inputs (list ruby-fog-core ruby-nokogiri))
9843 (synopsis "XML parsing tools used by @code{fog} providers")
9844 (description "This package containse the XML parsing tools shared between
9845a number of providers in the @code{fog} gem. @code{fog} is a Ruby cloud
9846services library.")
9847 (home-page "https://github.com/fog/fog-xml")
9848 (license license:expat)))
9849
9850(define-public ruby-fog-libvirt
9851 (package
9852 (name "ruby-fog-libvirt")
9853 (version "0.12.0")
9854 (source (origin
9855 (method git-fetch) ; for tests
9856 (uri (git-reference
9857 (url "https://github.com/fog/fog-libvirt")
9858 (commit (string-append "v" version))))
9859 (file-name (git-file-name name version))
9860 (sha256
9861 (base32
9862 "0b1qafb0l24anmr8fviwhp9vj14g0fic0mkg9n1i11h68zhqkj2v"))))
9863 (build-system ruby-build-system)
9864 (native-inputs (list ruby-minitest-stub-const ruby-mocha ruby-net-ssh
9865 ruby-netrc ruby-octokit ruby-pry ruby-rubocop
9866 ruby-shindo ruby-simplecov ruby-yard ))
9867 (propagated-inputs (list ruby-fog-core ruby-fog-json ruby-fog-xml
9868 ruby-json ruby-libvirt))
9869 (synopsis "Ruby libvirt provider, either standalone or as a module for
9870@code{fog}")
9871 (description "This library can be used as a module for @code{fog} or as
9872standalone libvirt provider. @code{fog} is a Ruby cloud services library.")
9873 (home-page "https://github.com/fog/fog-libvirt")
9874 (license license:expat)))
9875
9876(define-public ruby-pry-byebug
9877 (package
9878 (name "ruby-pry-byebug")
9879 (version "3.10.1")
9880 (source
9881 (origin
9882 (method git-fetch)
9883 (uri (git-reference
9884 (url "https://github.com/deivid-rodriguez/pry-byebug")
9885 (commit (string-append "v" version))))
9886 (file-name (git-file-name name version))
9887 (sha256
9888 (base32
9889 "0z8rhvmr9qmlbk8c8h6jbig5qd5xbdg9qihvx3g0cv1whqzbfikq"))))
9890 (build-system ruby-build-system)
9891 (arguments
9892 `(#:phases (modify-phases %standard-phases
9893 (add-after 'unpack 'sanitize-dependencies
9894 (lambda _
9895 (substitute* "Rakefile"
9896 ((".*chandler/tasks.*") ""))))
9897 (add-before 'check 'set-home
9898 (lambda _
9899 (setenv "HOME" (getcwd)))))))
9900 (native-inputs (list ruby-rubocop ruby-simplecov))
9901 (propagated-inputs (list ruby-byebug ruby-pry))
9902 (synopsis "Step-by-step debugging and stack navigation in Pry")
9903 (description "This package adds step-by-step debugging and stack
9904navigation capabilities to @code{pry}, using @code{byebug}.")
9905 (home-page "https://github.com/deivid-rodriguez/pry-byebug")
9906 (license license:expat)))
9907
9908(define-public ruby-stackprof
9909 (package
9910 (name "ruby-stackprof")
9911 (version "0.2.27")
9912 (source
9913 (origin
9914 (method url-fetch)
9915 (uri (rubygems-uri "stackprof" version))
9916 (sha256
9917 (base32 "03788mbipmihq2w7rznzvv0ks0s9z1321k1jyr6ffln8as3d5xmg"))))
9918 (build-system ruby-build-system)
9919 (arguments
9920 (list
9921 #:phases
9922 #~(modify-phases %standard-phases
9923 (add-before 'check 'patch-gemspec
9924 (lambda _
9925 (substitute* "stackprof.gemspec"
9926 (("rake-compiler.*")
9927 "rake-compiler>.freeze, [\"> 0.9\"])\n")
9928 (("mocha.*")
9929 "mocha>.freeze, [\"> 0.14\"])\n"))))
9930 (add-before 'check 'skip-dubious-test
9931 (lambda _
9932 (substitute* "test/test_stackprof.rb"
9933 ;; This unreliable test can fail with "Expected 0 to be >= 1."
9934 (("def test_(cputime)" _ name)
9935 (string-append "def skip_" name))
9936 ;; This test often fails
9937 (("def test_gc") "def skip_test_gc")
9938 ;; This test is known to fail on 32-bit systems.
9939 ;; /gnu/store/...-stackprof-0.2.27.gem
9940 (("def test_raw") "def skip_test_raw"))))
9941 (add-before 'check 'build-tests
9942 (lambda _
9943 (invoke "rake" "compile")))
9944 (replace 'check
9945 (lambda* (#:key tests? #:allow-other-keys)
9946 (when tests?
9947 (invoke "bundle" "exec" "rake" "default")))))))
9948 (native-inputs
9949 (list bundler ruby-mocha-1 ruby-rake-compiler))
9950 (synopsis "Sampling profiler for Ruby code")
9951 (description
9952 "@code{stackprof} is a fast sampling profiler for Ruby code, with cpu,
9953wallclock and object allocation samplers.")
9954 (home-page "https://github.com/tmm1/stackprof")
9955 (license license:expat)))
9956
9957(define-public ruby-bindex
9958 (package
9959 (name "ruby-bindex")
9960 (version "0.8.1")
9961 (source
9962 (origin
9963 (method url-fetch)
9964 (uri (rubygems-uri "bindex" version))
9965 (sha256
9966 (base32 "0zmirr3m02p52bzq4xgksq4pn8j641rx5d4czk68pv9rqnfwq7kv"))))
9967 (build-system ruby-build-system)
9968 (arguments
9969 (list #:test-target "default"
9970 #:phases
9971 #~(modify-phases %standard-phases
9972 (add-after 'unpack 'avoid-bundler
9973 (lambda _
9974 (substitute* "Rakefile"
9975 (("^Bundler::.*") "")))))))
9976 (native-inputs (list bundler ruby-rake-compiler))
9977 (synopsis "Bindings for Ruby exceptions")
9978 (description
9979 "This package provides bindings for any kind of Ruby exceptions.")
9980 (home-page "https://github.com/gsamokovarov/bindex")
9981 (license license:expat)))
9982
9983(define-public ruby-binding-of-caller
9984 (package
9985 (name "ruby-binding-of-caller")
9986 (version "0.8.0")
9987 (source
9988 (origin
9989 (method url-fetch)
9990 (uri (rubygems-uri "binding_of_caller" version))
9991 (sha256
9992 (base32
9993 "05syqlks7463zsy1jdfbbdravdhj9hpj5pv2m74blqpv8bq4vv5g"))))
9994 (build-system ruby-build-system)
9995 ;; Attempting to run the test suite fails with a rake deprecation error
9996 ;; (see: https://github.com/banister/binding_of_caller/issues/76).
9997 (arguments '(#:tests? #f))
9998 (propagated-inputs
9999 (list ruby-debug-inspector))
10000 (synopsis "Retrieve the binding of a method's caller")
10001 (description "The @code{binding_of_caller} module provides the
10002@code{Binding#of_caller} method. It allows accessing bindings from upper
10003frames in the call stack and can evaluate code in that context.")
10004 (home-page "https://github.com/banister/binding_of_caller")
10005 (license license:expat)))
10006
10007(define-public ruby-pry-stack-explorer
10008 (package
10009 (name "ruby-pry-stack-explorer")
10010 (version "0.5.1")
10011 (source
10012 (origin
10013 (method url-fetch)
10014 (uri (rubygems-uri "pry-stack_explorer" version))
10015 (sha256
10016 (base32
10017 "157rd2n9pfvcmmicm0xkq8z4p6famaj13syrpra6b4032qpb1wn0"))))
10018 (build-system ruby-build-system)
10019 (arguments '(#:tests? #f)) ;no test suite in gem release
10020 (propagated-inputs
10021 (list ruby-binding-of-caller ruby-pry))
10022 (synopsis "Call-stack navigation plugin for the Pry REPL")
10023 (description "@code{pry-stack_explorer} is a plugin for the Pry REPL that
10024add support to navigate the call-stack.")
10025 (home-page "https://github.com/pry/pry-stack_explorer")
10026 (license license:expat)))
10027
10028(define-public ruby-varint
10029 (package
10030 (name "ruby-varint")
10031 (version "0.1.1")
10032 (source
10033 (origin
10034 (method url-fetch)
10035 (uri (rubygems-uri "varint" version))
10036 (sha256
10037 (base32
10038 "1y0l2qc64cwsyv76ygg9bbjnk86riz2kq73kmn87gdrlmpiyrdac"))))
10039 (build-system ruby-build-system)
10040 (arguments '(#:tests? #f)) ;no test suite
10041 (synopsis "Variable length integers (varint) C extension for Ruby")
10042 (description "This package provides a small C extension to speed up
10043variable length integers (varint) in Ruby Protocol Buffers.")
10044 (home-page "https://github.com/liquidm/varint")
10045 (license license:bsd-3)))
10046
10047(define-public ruby-version-gem
10048 (package
10049 (name "ruby-version-gem")
10050 (version "1.1.3")
10051 (source (origin
10052 (method git-fetch) ;for tests
10053 (uri (git-reference
10054 (url "https://gitlab.com/oauth-xx/version_gem")
10055 (commit (string-append "v" version))))
10056 (file-name (git-file-name name version))
10057 (sha256
10058 (base32
10059 "1wazx2jr9vx5wm48fy8bccvfwhg7y2s8shfw9q81dhb4yvwk6gbf"))))
10060 (build-system ruby-build-system)
10061 (arguments
10062 (list
10063 #:phases
10064 #~(modify-phases %standard-phases
10065 (add-after 'unpack 'relax-requirements
10066 (lambda _
10067 (substitute* "Gemfile"
10068 (("^linting = .*")
10069 "linting = false\n")
10070 (("^coverage = .*")
10071 "coverage = false\n")
10072 (("^debug = .*")
10073 "debug = false\n"))
10074 (substitute* "spec/spec_helper.rb"
10075 (("^RUN_COVERAGE = .*")
10076 "RUN_COVERAGE = false\n")
10077 (("^ALL_FORMATTERS = .*")
10078 "ALL_FORMATTERS = false\n"))))
10079 (add-before 'build 'drop-signing-key-requirement
10080 (lambda _
10081 (substitute* "version_gem.gemspec"
10082 (("spec.signing_key =.*")
10083 "spec.signing_key = nil")))))))
10084 (native-inputs (list ruby-rspec ruby-rspec-block-is-expected))
10085 (synopsis "Improved @code{Version} module for Ruby")
10086 (description "VersionGem aims to provide introspection of a @code{Version}
10087module based on a @code{Version::VERSION} constant string wile not interfering
10088with gemspec parsing where the @code{VERSION} string is traditionally used.")
10089 (home-page "https://gitlab.com/oauth-xx/version_gem")
10090 (license license:expat)))
10091
10092;;; Note: Do NOT update to a newer version; this is the last commit that is
10093;;; still licensed as free software, the project having switched to the
10094;;; Hippocratic license afterward (see:
10095;;; https://github.com/vcr/vcr/issues/959).
10096(define-public ruby-vcr-expat
10097 (let ((revision "0")
10098 (commit-dont-touch "842b2bf89099dc91f2c643d0d85d1abd54eb7e85")) ;
10099 (package
10100 (name "ruby-vcr-expat")
10101 (version (git-version "5.0.0" revision commit-dont-touch))
10102 (source (origin
10103 (method git-fetch)
10104 (uri (git-reference
10105 (url "https://github.com/vcr/vcr")
10106 (commit commit-dont-touch)))
10107 (file-name (git-file-name name version))
10108 (sha256
10109 (base32
10110 "02mzifd2655kjh35bbry01n66jjcjrsw6ncqlybfkjcaqrw2zalv"))))
10111 (build-system ruby-build-system)
10112 (arguments (list #:tests? #f)) ;avoid all dependencies
10113 (home-page "https://github.com/vcr/vcr")
10114 (synopsis "HTTP interaction recorder [old version]")
10115 (description "Record your test suite's HTTP interactions and replay them
10116during future test runs for fast, deterministic, accurate tests. This is an
10117older version of VCR that is free software under the Expat license. The
10118project later switched to the Hippocratic license, which is non-free.
10119@emph{Do not use it in new free software projects}.")
10120 (license license:expat))))
10121
10122(define-public ruby-ruby-prof
10123 (package
10124 (name "ruby-ruby-prof")
10125 (version "1.4.5")
10126 (source
10127 (origin
10128 (method url-fetch)
10129 (uri (rubygems-uri "ruby-prof" version))
10130 (sha256
10131 (base32
10132 "09n13bzm1p956z318xx1v7ikqdp2i971v7p3kwf3170axz368ccy"))))
10133 (build-system ruby-build-system)
10134 (arguments
10135 ;; FIXME: Investigate why the tests fail on i686-linux.
10136 `(#:tests? ,(not (or (%current-target-system)
10137 (target-x86-32?)))
10138 #:phases
10139 (modify-phases %standard-phases
10140 ;; The LineNumbersTest test fails non-deterministically (see:
10141 ;; https://github.com/ruby-prof/ruby-prof/issues/276).
10142 (add-after 'extract-gemspec 'delete-flaky-test
10143 (lambda _
10144 (delete-file "test/line_number_test.rb")
10145 (substitute* "ruby-prof.gemspec"
10146 (("\"test/line_number_test\\.rb\"\\.freeze, ") ""))))
10147 (add-before 'check 'compile
10148 (lambda _
10149 (invoke "rake" "compile"))))))
10150 (native-inputs (list bundler ruby-minitest ruby-rake-compiler ruby-rdoc))
10151 (synopsis "Fast code profiler for Ruby")
10152 (description "RubyProf is a fast code profiler for Ruby. Its features
10153include:
10154@table @asis
10155@item Speed
10156Being a C extension, it is many times faster than the standard Ruby profiler.
10157@item Measurement Modes
10158It can measure program wall time, process time, object allocations and memory
10159usage.
10160@item Reports
10161A variety of text and cross-referenced HTML reports can be generated.
10162@item Threads
10163Profiling multiple threads simultaneously is supported.
10164@end table")
10165 (home-page "https://github.com/ruby-prof/ruby-prof")
10166 (license license:bsd-2)))
10167
10168(define-public ruby-ruby-memcheck
10169 (package
10170 (name "ruby-ruby-memcheck")
10171 (version "1.3.2")
10172 (source (origin
10173 (method git-fetch)
10174 (uri (git-reference
10175 (url "https://github.com/Shopify/ruby_memcheck")
10176 (commit version)))
10177 (file-name (git-file-name name version))
10178 (sha256
10179 (base32
10180 "0fj4j4d062sw2kx2qlj877gjbj1xbb691njr8x9nbah6615idlni"))))
10181 (build-system ruby-build-system)
10182 (arguments
10183 (list
10184 ;; The tests seem to fail on 32bit x86
10185 #:tests? (not (or (target-x86-32?)
10186 (%current-target-system)))
10187 #:phases
10188 #~(modify-phases %standard-phases
10189 (add-after 'unpack 'patch-valgrind-path
10190 (lambda* (#:key inputs #:allow-other-keys)
10191 (substitute* "lib/ruby_memcheck/configuration.rb"
10192 (("DEFAULT_VALGRIND = \"valgrind\"")
10193 (format #f "DEFAULT_VALGRIND = ~s"
10194 (search-input-file inputs "bin/valgrind"))))))
10195 (add-before 'replace-git-ls-files 'standardize-git-ls-files
10196 (lambda _
10197 (substitute* "ruby_memcheck.gemspec"
10198 (("%x\\(git ls-files -z)")
10199 "`git ls-files -z`")))))))
10200 (native-inputs (list ruby-rake-compiler ruby-rspec))
10201 (inputs (list valgrind/pinned))
10202 (propagated-inputs (list ruby-nokogiri))
10203 (synopsis "Valgrind memcheck tool for Ruby")
10204 (description "The @code{ruby_memcheck} gem provides a sane way to use
10205Valgrind's memcheck on your native extension gem, that filters out all the
10206false positives caused by Ruby not freeing all of the memory it allocates
10207during shutdown.")
10208 (home-page "https://github.com/Shopify/ruby_memcheck")
10209 (license license:expat)))
10210
10211(define-public ruby-memory-profiler
10212 (package
10213 (name "ruby-memory-profiler")
10214 (version "1.0.1")
10215 (source
10216 (origin
10217 (method git-fetch)
10218 (uri (git-reference
10219 (url "https://github.com/SamSaffron/memory_profiler")
10220 (commit (string-append "v" version))))
10221 (file-name (git-file-name name version))
10222 (sha256
10223 (base32
10224 "1z1x0rymfv45gh1y3s46w5pga5y8cvgn228jiwlnhc8hin3zig84"))))
10225 (build-system ruby-build-system)
10226 (synopsis "Memory profiling routines for Ruby")
10227 (description
10228 "This package provides memory profiling routines for Ruby.")
10229 (home-page "https://github.com/SamSaffron/memory_profiler")
10230 (license license:expat)))
10231
10232(define-public ruby-cucumber-compatibility-kit
10233 (package
10234 (name "ruby-cucumber-compatibility-kit")
10235 (version "11.2.0")
10236 (source (origin
10237 (method url-fetch)
10238 (uri (rubygems-uri "cucumber-compatibility-kit" version))
10239 (sha256
10240 (base32
10241 "17c8zx0yn68rcpfbw4nb1gzvh9fzpwsi1y0qivb99ahdlgzcdp8q"))))
10242 (build-system ruby-build-system)
10243 (arguments (list #:phases #~(modify-phases %standard-phases
10244 (replace 'check
10245 (lambda* (#:key tests? #:allow-other-keys)
10246 (when tests?
10247 (invoke "rspec")))))))
10248 (propagated-inputs (list ruby-cucumber-messages ruby-rake ruby-rspec))
10249 (synopsis "Cucumber compatibility verification utility")
10250 (description "The Cucumber Compatibility Kit (CCK) aims to validate a
10251Cucumber implementation's support for the Cucumber Messages protocol.")
10252 (home-page "https://github.com/cucumber/compatibility-kit")
10253 (license license:expat)))
10254
10255;;; Variant package to break a cycle with ruby-cucumber-messages.
10256(define ruby-cucumber-compatibility-kit-bootstrap
10257 (package/inherit ruby-cucumber-compatibility-kit
10258 (arguments (list #:tests? #f))
10259 (propagated-inputs (modify-inputs (package-propagated-inputs
10260 ruby-cucumber-compatibility-kit)
10261 (delete "ruby-cucumber-messages")))))
10262
10263(define-public ruby-cucumber-messages
10264 (package
10265 (name "ruby-cucumber-messages")
10266 (version "21.0.1")
10267 (source (origin
10268 (method url-fetch)
10269 (uri (rubygems-uri "cucumber-messages" version))
10270 (sha256
10271 (base32
10272 "0482a63y7my0arn2bv208g401dq8525f0gwhnwaa11mhv6ph0q5i"))))
10273 (build-system ruby-build-system)
10274 (arguments
10275 (list #:phases
10276 #~(modify-phases %standard-phases
10277 ;; The test suite requires the gem to be installed, so move it
10278 ;; after the install phase.
10279 (delete 'check)
10280 (add-after 'install 'check
10281 (lambda* (#:key tests? #:allow-other-keys)
10282 (setenv "GEM_PATH" (string-append
10283 (getenv "GEM_PATH") ":"
10284 #$output "/lib/ruby/vendor_ruby"))
10285 (when tests?
10286 (invoke "rspec")))))))
10287 (native-inputs
10288 (list ruby-cucumber-compatibility-kit-bootstrap ruby-rspec))
10289 (home-page "https://github.com/cucumber/messages/")
10290 (synopsis "Cucumber Messages for Ruby (Protocol Buffers)")
10291 (description "Cucumber Messages for Ruby is a library which allows
10292serialization and deserialization of the protocol buffer messages used in
10293Cucumber.")
10294 (license license:expat)))
10295
10296(define-public ruby-cucumber-gherkin
10297 (package
10298 (name "ruby-cucumber-gherkin")
10299 (version "26.1.0")
10300 (source (origin
10301 (method git-fetch)
10302 (uri (git-reference
10303 (url "https://github.com/cucumber/gherkin")
10304 (commit (string-append "v" version))))
10305 (file-name (git-file-name name version))
10306 (sha256
10307 (base32
10308 "1rsannfcg5rqh5a3d3paw10kf6mmqjrgbq3k235px4swbyqysmgn"))))
10309 (build-system ruby-build-system)
10310 (arguments (list #:test-target "spec"
10311 #:phases #~(modify-phases %standard-phases
10312 (add-after 'unpack 'chdir
10313 (lambda _
10314 (chdir "ruby"))))))
10315 (native-inputs (list ruby-rspec))
10316 (propagated-inputs (list ruby-cucumber-messages))
10317 (synopsis "Gherkin parser for Ruby")
10318 (description "Gherkin is a parser and compiler for the Gherkin language.
10319It is intended be used by all Cucumber implementations to parse
10320@file{.feature} files.")
10321 (home-page "https://github.com/cucumber/gherkin")
10322 (license license:expat)))
10323
10324(define-deprecated ruby-gherkin ruby-cucumber-gherkin)
10325
10326(define-public ruby-gherkin-ruby
10327 (package
10328 (name "ruby-gherkin-ruby")
10329 (version "0.3.2")
10330 (home-page "https://github.com/codegram/gherkin-ruby")
10331 (source (origin
10332 (method url-fetch)
10333 (uri (rubygems-uri "gherkin-ruby" version))
10334 (sha256
10335 (base32
10336 "18ay7yiibf4sl9n94k7mbi4k5zj2igl4j71qcmkswv69znyx0sn1"))))
10337 (build-system ruby-build-system)
10338 (synopsis "Pure Ruby Gherkin parser")
10339 (description
10340 "Gherkin-ruby is a Gherkin parser written in pure Ruby and less than
10341200 lines of code.")
10342 ;; XXX: No license information anywhere but Readme.md.
10343 (license license:expat)))
10344
10345(define-public ruby-aruba
10346 (package
10347 (name "ruby-aruba")
10348 (version "2.1.0")
10349 (source (origin
10350 (method git-fetch)
10351 (uri (git-reference
10352 (url "https://github.com/cucumber/aruba")
10353 (commit (string-append "v" version))))
10354 (file-name (git-file-name name version))
10355 (sha256
10356 (base32
10357 "1mmlgqhi6yww3z34hmrrnha2rygkv6kx0q962z31dqxjkcv23yfd"))))
10358 (build-system ruby-build-system)
10359 (arguments
10360 (list
10361 ;; XXX: Only run the "spec" target and not the "cucumber" one, as it is
10362 ;; slow and has multiple unexplained test failures.
10363 #:test-target "spec"
10364 #:phases
10365 #~(modify-phases %standard-phases
10366 (add-after 'unpack 'patch-paths
10367 (lambda _
10368 ;; This test file relies on a dynamically generated script;
10369 ;; patch its #!/bin/bash shebang.
10370 (substitute* "spec/aruba/api/commands_spec.rb"
10371 (("/bin/bash")
10372 (which "bash")))))
10373 (add-before 'check 'relax-requirements
10374 ;; Many development requirements are not actually needed.
10375 (lambda _
10376 (substitute* "aruba.gemspec"
10377 (("\\[\">= 0.18.0\", \"< 0.22.0\"]") ;simplecov
10378 "\">= 0.18.0\"")
10379 ((".*appraisal.*") "")
10380 ((".*pry.*") "")
10381 ((".*kramdown.*") "")
10382 ((".*rubocop.*") "")
10383 ((".*yard-junk.*") ""))
10384 (substitute* "Rakefile"
10385 ((".*require \"rubocop/rake_task\".*") "")
10386 ((".*require \"yard-junk/rake\".*") "")
10387 ((".*RuboCop::RakeTask.new.*") "")
10388 ((".*YardJunk::Rake.define_task.*") ""))))
10389 ;; The tests rely on the Gem being installed, so move the check
10390 ;; phase after the install phase.
10391 (delete 'check)
10392 (add-after 'install 'check
10393 (assoc-ref %standard-phases 'check))
10394 (add-before 'check 'set-GEM_PATH
10395 (lambda _
10396 (setenv "GEM_PATH" (string-append
10397 (getenv "GEM_PATH") ":"
10398 #$output "/lib/ruby/vendor_ruby"))))
10399 (add-before 'check 'set-home
10400 (lambda _
10401 (setenv "HOME" "/tmp"))))))
10402 (native-inputs
10403 (list ruby-rake-manifest
10404 ruby-rspec
10405 ruby-simplecov))
10406 (propagated-inputs
10407 (list bundler
10408 ruby-childprocess
10409 ruby-contracts
10410 ruby-cucumber
10411 ruby-rspec-expectations
10412 ruby-thor))
10413 (synopsis "Test command-line applications with Cucumber, RSpec or Minitest")
10414 (description
10415 "Aruba is an extension for Cucumber, RSpec and Minitest for testing
10416command-line applications. It supports applications written in any
10417language.")
10418 (home-page "https://github.com/cucumber/aruba")
10419 (license license:expat)))
10420
10421(define-public ruby-sys-uname
10422 (package
10423 (name "ruby-sys-uname")
10424 (version "1.2.1")
10425 (source
10426 (origin
10427 (method url-fetch)
10428 (uri (rubygems-uri "sys-uname" version))
10429 (sha256
10430 (base32
10431 "00p3wwvkdbg6pl38bchaagncv3i4fq4y0ks470imwykjanpy2ic0"))))
10432 (build-system ruby-build-system)
10433 (arguments
10434 `(#:test-target "spec"))
10435 (propagated-inputs (list ruby-ffi))
10436 (native-inputs (list ruby-rspec))
10437 (synopsis "Ruby interface for gathering system information")
10438 (description "The sys-uname library provides an interface for gathering
10439information about your current platform. It allows retrieving information
10440such as the OS name, OS version, system name, etc.")
10441 (home-page "https://github.com/djberg96/sys-uname")
10442 (license license:asl2.0)))
10443
10444(define-public ruby-cucumber-html-formatter
10445 (package
10446 (name "ruby-cucumber-html-formatter")
10447 (version "20.2.1")
10448 (source
10449 (origin
10450 (method url-fetch)
10451 (uri (rubygems-uri "cucumber-html-formatter" version))
10452 (sha256
10453 (base32
10454 "0c7r9mfmph4c6yzc7y3dkr92rhwvpyksr0mdhpqp67xmmr8z1br4"))))
10455 (build-system ruby-build-system)
10456 (arguments
10457 (list #:phases #~(modify-phases %standard-phases
10458 (add-after 'extract-gemspec 'relax-requirements
10459 (lambda _
10460 (substitute* ".gemspec"
10461 (("~> 18.0") "~> 21.0")))) ;cucumber-messages
10462 (replace 'check
10463 (lambda* (#:key tests? #:allow-other-keys)
10464 (when tests?
10465 (invoke "rspec")))))))
10466 (native-inputs (list ruby-cucumber-compatibility-kit ruby-rspec))
10467 (propagated-inputs (list ruby-cucumber-messages))
10468 (synopsis "HTML formatter for Cucumber")
10469 (description "Cucumber HTML Formatter produces a HTML report for Cucumber
10470runs. It is built on top of cucumber-react and works with any Cucumber
10471implementation with a protocol buffer formatter that outputs Cucumber
10472messages.")
10473 (home-page "https://github.com/cucumber/html-formatter")
10474 (license license:expat)))
10475
10476(define-public ruby-cucumber-ci-environment
10477 (package
10478 (name "ruby-cucumber-ci-environment")
10479 (version "9.1.0")
10480 (source (origin
10481 (method url-fetch)
10482 (uri (rubygems-uri "cucumber-ci-environment" version))
10483 (sha256
10484 (base32
10485 "1nmn2hfrjlbazgcryr3hwvsa5v4csfbjqxb4q7wbjhaxl9xxn0k7"))))
10486 (build-system ruby-build-system)
10487 (arguments (list #:phases #~(modify-phases %standard-phases
10488 (replace 'check
10489 (lambda* (#:key tests? #:allow-other-keys)
10490 (when tests?
10491 (invoke "rspec")))))))
10492 (native-inputs (list ruby-rspec))
10493 (synopsis "Detect CI Environment from environment variables")
10494 (description "This is a Ruby utility library for Cucumber that detects a
10495CI environment from environment variables.")
10496 (home-page "https://github.com/cucumber/ci-environment")
10497 (license license:expat)))
10498
10499(define-public ruby-cucumber
10500 (package
10501 (name "ruby-cucumber")
10502 (version "8.0.0")
10503 (source
10504 (origin
10505 (method git-fetch)
10506 (uri (git-reference
10507 (url "https://github.com/cucumber/cucumber-ruby")
10508 (commit (string-append "v" version))))
10509 (file-name (git-file-name name version))
10510 (sha256
10511 (base32
10512 "1dz880fdz6rfbh1nwwcq21v65byik46jnf9gppnrqf3p5k61i55r"))))
10513 (build-system ruby-build-system)
10514 (arguments
10515 (list #:test-target "spec"
10516 #:phases
10517 #~(modify-phases %standard-phases
10518 (add-after 'unpack 'disable-rubocop
10519 ;; Remove extraneous Lint checks.
10520 (lambda _
10521 (substitute* "Rakefile"
10522 (("require 'rubocop/rake_task'")
10523 "")
10524 (("RuboCop::RakeTask.new")
10525 ""))))
10526 (add-after 'extract-gemspec 'strip-version-requirements
10527 (lambda _
10528 (delete-file "Gemfile") ;do not use Bundler
10529 (substitute* "cucumber.gemspec"
10530 ;; The dependency specifications are often trailing
10531 ;; behind and appear stricter than necessary, since the
10532 ;; test suite passes with the newer component versions.
10533 (("(.*add_.*dependency '[_A-Za-z0-9-]+')(.*)"
10534 _ stripped rest)
10535 (string-append stripped " # " rest "\n")))))
10536 (add-before 'check 'set-home
10537 (lambda _
10538 (setenv "HOME" (getcwd)))))))
10539 (propagated-inputs
10540 (list ruby-builder
10541 ruby-cucumber-ci-environment
10542 ruby-cucumber-core
10543 ruby-cucumber-gherkin
10544 ruby-cucumber-html-formatter
10545 ruby-cucumber-messages
10546 ruby-cucumber-wire
10547 ruby-diff-lcs
10548 ruby-mime-types
10549 ruby-multi-test
10550 ruby-sys-uname))
10551 (native-inputs
10552 (list ruby-cucumber-compatibility-kit
10553 ruby-nokogiri
10554 ruby-pry
10555 ruby-webrick
10556 ruby-rspec))
10557 (synopsis "Describe automated tests in plain language")
10558 (description "Cucumber is a tool for running automated tests written in
10559plain language. It's designed to support a Behaviour Driven Development (BDD)
10560software development workflow.")
10561 (home-page "https://cucumber.io/")
10562 (license license:expat)))
10563
10564(define ruby-cucumber-without-tests
10565 (package (inherit ruby-cucumber)
10566 (arguments
10567 '(#:tests? #f))
10568 (native-inputs
10569 '())))
10570
10571(define-public ruby-covered
10572 (package
10573 (name "ruby-covered")
10574 (version "0.20.2")
10575 (source (origin
10576 (method url-fetch)
10577 (uri (rubygems-uri "covered" version))
10578 (sha256
10579 (base32
10580 "04fpj493jn23ah5fq93956a5h2xj3z0hrckvc26fxcfsg5pbwypa"))))
10581 (build-system ruby-build-system)
10582 (arguments
10583 ;; XXX: The test suite is disabled to avoid dependency cycles with
10584 ;; ruby-samovar, through ruby-bake.
10585 (list #:tests? #f
10586 #:phases
10587 #~(modify-phases %standard-phases
10588 (add-after 'extract-gemspec 'relax-requirements
10589 (lambda _
10590 (substitute* ".gemspec"
10591 (("\">= 3.2\"")
10592 "\">= 2.7\"")))))))
10593 (propagated-inputs (list ruby-console ruby-msgpack))
10594 (synopsis "Modern approach to code coverage in Ruby")
10595 (description "Covered uses modern Ruby features to generate comprehensive
10596coverage, including support for templates which are compiled into Ruby. It
10597has the following features:
10598@itemize
10599@item
10600Incremental coverage -- if you run your full test suite, and the run a subset,
10601it will still report the correct coverage - so you can incrementally work on
10602improving coverage.
10603@item
10604Integration with RSpec, Minitest, Travis & Coveralls - no need to configure
10605anything - out of the box support for these platforms.
10606@item
10607It supports coverage of views -- templates compiled to Ruby code can be
10608tracked for coverage reporting.
10609@end itemize")
10610 (home-page "https://github.com/ioquatix/covered")
10611 (license license:expat)))
10612
10613(define-public ruby-coveralls
10614 (package
10615 (name "ruby-coveralls")
10616 (version "0.8.23")
10617 (source
10618 (origin
10619 (method url-fetch)
10620 (uri (rubygems-uri "coveralls" version))
10621 (sha256
10622 (base32
10623 "1mv4fn5lfxhy7bc2f1lpnc5yp9mvv97az77j4r7jgrxcqwn8fqxc"))))
10624 (build-system ruby-build-system)
10625 (arguments
10626 (list #:test-target "default"
10627 #:phases #~(modify-phases %standard-phases
10628 (add-after 'extract-gemspec 'disable-problematic-tests
10629 (lambda _
10630 (substitute* "spec/coveralls/coveralls_spec.rb"
10631 ;; This test fails for unknown reasons (perhaps
10632 ;; networking); skip it.
10633 (("it \"sends existing test results\"" all)
10634 (string-append "x" all)))
10635 ;; 3 simplecov tests fail, perhaps due to using a
10636 ;; newer simplecov version.
10637 (delete-file "spec/coveralls/simplecov_spec.rb")
10638 (substitute* "coveralls-ruby.gemspec"
10639 (("\"spec/coveralls/simplecov_spec.rb\".freeze, ")
10640 ""))))
10641 (add-after 'extract-gemspec 'relax-requirements
10642 (lambda _
10643 (substitute* "coveralls-ruby.gemspec"
10644 (("%q<simplecov>.freeze, \\[\"~> 0.16.1\"]")
10645 "%q<simplecov>.freeze")))))))
10646 (native-inputs
10647 (list git-minimal/pinned
10648 ruby-pry
10649 ruby-rspec
10650 ruby-truthy
10651 ruby-vcr-expat
10652 ruby-webmock))
10653 (propagated-inputs
10654 (list ruby-json
10655 ruby-term-ansicolor
10656 ruby-thor
10657 ruby-tins
10658 ruby-simplecov))
10659 (synopsis "Ruby implementation of the Coveralls API")
10660 (description "This package provides a Ruby implementation of the Coveralls
10661API.")
10662 (home-page "https://coveralls.io")
10663 (license license:expat)))
10664
10665(define-public ruby-unindent
10666 (package
10667 (name "ruby-unindent")
10668 (version "1.0")
10669 (source
10670 (origin
10671 (method url-fetch)
10672 (uri (rubygems-uri "unindent" version))
10673 (sha256
10674 (base32
10675 "1wqh3rzv8589yzibigminxx3qpmj2nqj28f90xy1sczk1pijmcrd"))))
10676 (build-system ruby-build-system)
10677 (synopsis "Ruby method to unindent strings")
10678 (description "This module provides a @code{String#unindent} Ruby method to
10679unindent strings, which can be useful to unindent multiline strings embedded
10680in already-indented code.")
10681 (home-page "https://github.com/mynyml/unindent")
10682 (license license:expat)))
10683
10684(define-public ruby-cucumber-core
10685 (package
10686 (name "ruby-cucumber-core")
10687 (version "11.1.0")
10688 (source
10689 (origin
10690 (method git-fetch)
10691 (uri (git-reference
10692 (url "https://github.com/cucumber/cucumber-ruby-core")
10693 (commit (string-append "v" version))))
10694 (file-name (git-file-name name version))
10695 (sha256
10696 (base32
10697 "0lf2inlam0951djc2qz81x0nkffmw2dpj44iadw1fw31m7r8wqvh"))))
10698 (build-system ruby-build-system)
10699 (arguments (list #:test-target "spec"
10700 #:phases
10701 #~(modify-phases %standard-phases
10702 (add-after 'extract-gemspec 'relax-version-requirements
10703 (lambda _
10704 (substitute* "cucumber-core.gemspec"
10705 (("'cucumber-tag-expressions',.*")
10706 "'cucumber-tag-expressions', '>=4.1.0'\n")))))))
10707 (native-inputs
10708 (list ruby-rspec
10709 ruby-coveralls
10710 ruby-rubocop
10711 ruby-simplecov
10712 ruby-unindent))
10713 (propagated-inputs
10714 (list ruby-cucumber-gherkin
10715 ruby-cucumber-messages
10716 ruby-cucumber-tag-expressions))
10717 (synopsis "Core library for the Cucumber BDD app")
10718 (description "Cucumber is a tool for running automated tests
10719written in plain language. Because they're written in plain language,
10720they can be read by anyone on your team. Because they can be read by
10721anyone, you can use them to help improve communication, collaboration
10722and trust on your team.")
10723 (home-page "https://cucumber.io/")
10724 (license license:expat)))
10725
10726(define-public ruby-cucumber-expressions
10727 (package
10728 (name "ruby-cucumber-expressions")
10729 (version "16.1.2")
10730 (source
10731 (origin
10732 (method git-fetch)
10733 (uri (git-reference
10734 (url "https://github.com/cucumber/cucumber-expressions")
10735 (commit (string-append "v" version))))
10736 (file-name (git-file-name name version))
10737 (sha256
10738 (base32
10739 "1dhq88k9x2x8svam5bc7rrcd166fqymda8wxryqkbkffhnzla0id"))))
10740 (build-system ruby-build-system)
10741 (arguments
10742 (list #:test-target "spec"
10743 #:phases #~(modify-phases %standard-phases
10744 (add-after 'unpack 'chdir
10745 (lambda _
10746 (chdir "ruby"))))))
10747 (native-inputs (list ruby-rspec ruby-simplecov))
10748 (synopsis "Simpler alternative to Regular Expressions")
10749 (description "Cucumber Expressions offer similar functionality to Regular
10750Expressions, with a syntax that is easier to read and write. Cucumber
10751Expressions are extensible with parameter types.")
10752 (home-page "https://github.com/cucumber/cucumber-expressions/")
10753 (license license:expat)))
10754
10755(define-public ruby-cucumber-wire
10756 (package
10757 (name "ruby-cucumber-wire")
10758 (version "6.2.1")
10759 (source
10760 (origin
10761 (method url-fetch)
10762 (uri (rubygems-uri "cucumber-wire" version))
10763 (sha256
10764 (base32
10765 "1pmydrh9lcckj7p0cn67jw7msxdkgr9zir86cs19h3mf2zlcv7b9"))))
10766 (build-system ruby-build-system)
10767 (arguments
10768 (list #:tests? #f)) ;tests use cucumber, causing a cycle
10769 (propagated-inputs
10770 (list ruby-cucumber-core ruby-cucumber-expressions
10771 ruby-cucumber-messages))
10772 (synopsis "Cucumber wire protocol plugin")
10773 (description "Cucumber's wire protocol allows step definitions to be
10774implemented and invoked on any platform.")
10775 (home-page "https://github.com/cucumber/cucumber-ruby-wire")
10776 (license license:expat)))
10777
10778(define-public ruby-cucumber-tag-expressions
10779 (package
10780 (name "ruby-cucumber-tag-expressions")
10781 (version "5.0.1")
10782 (source
10783 (origin
10784 (method git-fetch)
10785 (uri (git-reference
10786 (url "https://github.com/cucumber/tag-expressions")
10787 (commit (string-append "v" version))))
10788 (file-name (git-file-name name version))
10789 (sha256
10790 (base32
10791 "1ziq30szn8m5y29hsdpx4dn1a8sy29h01nvcldm8nr1mx4b7dj1w"))))
10792 (build-system ruby-build-system)
10793 (arguments
10794 (list #:test-target "spec"
10795 #:phases #~(modify-phases %standard-phases
10796 (add-after 'unpack 'chdir
10797 (lambda _
10798 (chdir "ruby"))))))
10799 (native-inputs (list ruby-rspec))
10800 (synopsis "Cucumber tag expressions for Ruby")
10801 (description "Cucumber tag expression parser for Ruby. A tag expression
10802is an infix boolean expression used by Cucumber.")
10803 (home-page "https://github.com/cucumber/tag-expressions")
10804 (license license:expat)))
10805
10806(define-public ruby-skiptrace
10807 (package
10808 (name "ruby-skiptrace")
10809 (version "0.8.1")
10810 (source
10811 (origin
10812 (method url-fetch)
10813 (uri (rubygems-uri "skiptrace" version))
10814 (sha256
10815 (base32
10816 "1qpjy6pqd8hx4w7bai64jsr10mwbpnnb65wcbssyqcnalimi1s12"))))
10817 (build-system ruby-build-system)
10818 (arguments
10819 (list
10820 #:phases
10821 #~(modify-phases %standard-phases
10822 (add-after 'unpack 'remove-git-from-gemspec
10823 (lambda _
10824 (substitute* "skiptrace.gemspec"
10825 (("`git ls-files -z`") "`find . -type f -print0 |sort -z`"))))
10826 (replace 'check
10827 (lambda* (#:key tests? #:allow-other-keys)
10828 (when tests?
10829 (invoke "bundle" "exec" "rake" "default")))))))
10830 (native-inputs
10831 (list bundler ruby-rake-compiler))
10832 (synopsis "Provides access for bindings relating to Ruby exceptions")
10833 (description
10834 "@code{skiptrace} provides a way to access the bindings that relate to
10835exceptions in Ruby, providing more information about the context in which the
10836exception occurred.")
10837 (home-page "https://github.com/gsamokovarov/skiptrace")
10838 (license license:expat)))
10839
10840(define-public ruby-bio-logger
10841 (package
10842 (name "ruby-bio-logger")
10843 (version "1.0.1")
10844 (source
10845 (origin
10846 (method url-fetch)
10847 (uri (rubygems-uri "bio-logger" version))
10848 (sha256
10849 (base32
10850 "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
10851 (build-system ruby-build-system)
10852 (arguments
10853 `(#:tests? #f)) ; rake errors, missing shoulda
10854 (propagated-inputs
10855 (list ruby-log4r))
10856 (synopsis "Log4r wrapper for Ruby")
10857 (description "Bio-logger is a wrapper around Log4r adding extra logging
10858features such as filtering and fine grained logging.")
10859 (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
10860 (license license:expat)))
10861
10862(define-public ruby-yajl-ruby
10863 (package
10864 (name "ruby-yajl-ruby")
10865 (version "1.4.3")
10866 (source
10867 (origin
10868 (method url-fetch)
10869 (uri (rubygems-uri "yajl-ruby" version))
10870 (sha256
10871 (base32
10872 "1lni4jbyrlph7sz8y49q84pb0sbj82lgwvnjnsiv01xf26f4v5wc"))))
10873 (build-system ruby-build-system)
10874 (arguments
10875 (list
10876 #:test-target "spec"
10877 #:phases
10878 #~(modify-phases %standard-phases
10879 (add-before 'check 'patch-test-to-update-load-path
10880 (lambda _
10881 (substitute* "spec/parsing/large_number_spec.rb"
10882 (("require \"yajl\"")
10883 "$LOAD_PATH << 'lib'; require 'yajl'")))))))
10884 (native-inputs
10885 (list ruby-rake-compiler ruby-rspec))
10886 (synopsis "Streaming JSON parsing and encoding library for Ruby")
10887 (description
10888 "Ruby C bindings to the Yajl JSON stream-based parser library. The API
10889is compatible with the JSON gem, so yajl-ruby can act as a drop in
10890replacement.
10891
10892A modified copy of yajl is used, and included in the package.")
10893 (home-page "https://github.com/brianmario/yajl-ruby")
10894 (license (list license:expat ; Ruby code, yajl_ext.c and yajl_ext.h
10895 license:bsd-3)))) ; Included, modified copy of yajl
10896
10897(define-public ruby-yard
10898 (package
10899 (name "ruby-yard")
10900 (version "0.9.34")
10901 (source
10902 (origin
10903 (method git-fetch)
10904 ;; Tests do not pass if we build from the distributed gem.
10905 (uri (git-reference
10906 (url "https://github.com/lsegal/yard")
10907 (commit (string-append "v" version))))
10908 (file-name (git-file-name name version))
10909 (sha256
10910 (base32
10911 "10jq0hyzyy0d6l63jxld32g36fhrclkb3rwnyp47igcik73kbagb"))))
10912 (build-system ruby-build-system)
10913 (arguments
10914 (list
10915 #:test-target "default"
10916 #:phases
10917 #~(modify-phases %standard-phases
10918 (add-after 'unpack 'do-not-set-date-in-gemspec
10919 ;; Fix a reproducibility issue (see:
10920 ;; https://github.com/lsegal/yard/issues/1343).
10921 (lambda _
10922 (substitute* "yard.gemspec"
10923 ((".*s\\.date.*") ""))))
10924 (add-before 'check 'prepare-for-tests
10925 (lambda* (#:key tests? #:allow-other-keys)
10926 (when tests?
10927 (substitute* "Rakefile"
10928 ((".*[Ss]amus.*") ""))
10929 ;; Delete the Gemfile to avoid errors relating to it.
10930 (delete-file "Gemfile")
10931 ;; $HOME needs to be set to somewhere writeable for tests to
10932 ;; run.
10933 (setenv "HOME" "/tmp")
10934 ;; This test fails
10935 ;; #<File (class)> received :open with unexpected arguments
10936 ;; expected: ("gem1.gem", "rb")
10937 ;; got: ("/gnu/store/.../lib/ruby/vendor_ruby/specifications/asciidoctor-2.0.18.gemspec", "r:UTF-8:-")
10938 (substitute* "spec/cli/diff_spec.rb"
10939 (("it \"searches for .gem file")
10940 "xit \"searches for .gem file"))))))))
10941 (native-inputs
10942 (list ruby-rspec
10943 ruby-rack
10944 ruby-redcloth
10945 ruby-webrick
10946 ruby-asciidoctor/minimal))
10947 (synopsis "Documentation generation tool for Ruby")
10948 (description "YARD is a documentation generation tool for the Ruby
10949programming language. It enables the user to generate consistent, usable
10950documentation that can be exported to a number of formats very easily, and
10951also supports extending for custom Ruby constructs such as custom class level
10952definitions.")
10953 (home-page "https://yardoc.org")
10954 (license license:expat)))
10955
10956(define-public ruby-yard/minimal
10957 (hidden-package
10958 (package
10959 (inherit ruby-yard)
10960 (arguments
10961 (ensure-keyword-arguments
10962 (package-arguments ruby-yard)
10963 (list #:tests? #f)))
10964 (native-inputs '()))))
10965
10966(define-public ruby-spectroscope
10967 (package
10968 (name "ruby-spectroscope")
10969 (version "0.1.0")
10970 (source
10971 (origin
10972 (method url-fetch)
10973 (uri (rubygems-uri "spectroscope" version))
10974 (sha256
10975 (base32
10976 "0iiid9sm110qhx0i1zkds710cvsnmhd308wbqa7slkzbq2akrb3y"))))
10977 (build-system ruby-build-system)
10978 (arguments
10979 `(#:phases
10980 (modify-phases %standard-phases
10981 (replace 'check
10982 (lambda _
10983 (with-output-to-file ".test"
10984 (lambda _
10985 (display
10986 "\
10987require 'ae/should'
10988require 'rspec'
10989
10990include RSpec
10991
10992Test.run :default do |run|
10993 run.files << 'spec/*_spec.rb'
10994end")))
10995 (invoke "ruby" "-Ilib" "-rrubytest" ".test"))))))
10996 (native-inputs
10997 (list ruby-ae ruby-rspec))
10998 (propagated-inputs
10999 (list ruby-rubytest))
11000 (synopsis "Behavior-Driven Development (BDD) framework built on RubyTest")
11001 (description "Spectroscope is a Behavior-Driven Development (BDD)
11002framework built on RubyTest, designed to emulate RSpec in most respects. It
11003is assertion framework independent so any number of assertion systems can be
11004used, such as Assay or AE.")
11005 (home-page "http://rubyworks.github.com/spectroscope/")
11006 (license license:bsd-2)))
11007
11008(define-public ruby-tomparse
11009 (package
11010 (name "ruby-tomparse")
11011 (version "0.4.2")
11012 (source
11013 (origin
11014 (method url-fetch)
11015 (uri (rubygems-uri "tomparse" version))
11016 (sha256
11017 (base32
11018 "06xakk41f1kgj6j1ahkwn4r6cvidixvm4phhlrvmwb7c3pr8ygc8"))))
11019 (build-system ruby-build-system)
11020 ;; TODO: Tests require citron and rulebow, not yet packaged.
11021 (arguments '(#:tests? #f))
11022 (synopsis "TomDoc parser for Ruby")
11023 (description "TomParse is a TomDoc parser for Ruby. It takes a code
11024comment as input and parses it into a convenient object-oriented structure in
11025accordance with the TomDoc standard. See
11026@url{https://github.com/mojombo/tomdoc, TomDoc} for more information about the
11027TomDoc format.")
11028 (home-page "http://rubyworks.github.com/tomparse/")
11029 (license license:bsd-2)))
11030
11031(define-public ruby-yard-tomdoc
11032 (package
11033 (name "ruby-yard-tomdoc")
11034 (version "0.7.1")
11035 (source
11036 (origin
11037 (method url-fetch)
11038 (uri (rubygems-uri "yard-tomdoc" version))
11039 (sha256
11040 (base32
11041 "1725gs8b8klpwhrvnf2wwp7dw3zxs9vz2la983l2d8c4r4fn1j2z"))))
11042 (build-system ruby-build-system)
11043 (arguments
11044 `(#:phases (modify-phases %standard-phases
11045 (replace 'check
11046 (lambda _
11047 (invoke "rubytest" "-Ilib" "-Itest" "test/"))))))
11048 (native-inputs
11049 (list ruby-rubytest-cli ruby-spectroscope ruby-ae))
11050 (propagated-inputs
11051 (list ruby-tomparse ruby-yard))
11052 (synopsis "TomDoc syntax for YARD")
11053 (description "This module adds support for the TomDoc documentation format
11054to YARD, a documentation generation tool for Ruby.")
11055 (home-page "http://rubyworks.github.com/yard-tomdoc/")
11056 (license license:expat)))
11057
11058(define-public ruby-clap
11059 (package
11060 (name "ruby-clap")
11061 (version "1.0.0")
11062 (source (origin
11063 (method url-fetch)
11064 (uri (rubygems-uri "clap" version))
11065 (sha256
11066 (base32
11067 "190m05k3pca72c1h8k0fnvby15m303zi0lpb9c478ad19wqawa5q"))))
11068 (build-system ruby-build-system)
11069 ;; Clap needs cutest for running tests, but cutest needs clap.
11070 (arguments `(#:tests? #f))
11071 (synopsis "Command line argument parsing for simple applications")
11072 (description
11073 "Clap provides command line argument parsing features. It covers the
11074simple case of executing code based on the flags or parameters passed.")
11075 (home-page "https://github.com/djanowski/cutest")
11076 (license license:expat)))
11077
11078(define-public ruby-cutest
11079 (package
11080 (name "ruby-cutest")
11081 (version "1.2.2")
11082 (source (origin
11083 (method url-fetch)
11084 (uri (rubygems-uri "cutest" version))
11085 (sha256
11086 (base32
11087 "1mldhjn62g53vx4gq2qdqg2lgjvyrqxa8d0khf8347bbfgi16d32"))))
11088 (build-system ruby-build-system)
11089 (propagated-inputs
11090 (list ruby-clap))
11091 (synopsis "Run tests in separate processes")
11092 (description
11093 "Cutest runs tests in separate processes to avoid shared state.")
11094 (home-page "https://github.com/djanowski/cutest")
11095 (license license:expat)))
11096
11097(define-public ruby-pygmentize
11098 (package
11099 (name "ruby-pygmentize")
11100 (version "0.0.3")
11101 (source (origin
11102 (method url-fetch)
11103 (uri (rubygems-uri "pygmentize" version))
11104 (sha256
11105 (base32
11106 "1pxryhkiwvsz6xzda3bvqwz5z8ggzl1cdglf8qbcf4bb7akirdpb"))))
11107 (build-system ruby-build-system)
11108 (arguments
11109 `(#:phases
11110 (modify-phases %standard-phases
11111 (add-after 'unpack 'fix-pygmentize-path
11112 (lambda _
11113 (substitute* "lib/pygmentize.rb"
11114 (("\"/usr/bin/env python.*")
11115 (string-append "\"" (which "pygmentize") "\"\n")))))
11116 (add-after 'build 'do-not-use-vendor-directory
11117 (lambda _
11118 ;; Remove bundled pygments sources
11119 ;; FIXME: ruby-build-system does not support snippets.
11120 (delete-file-recursively "vendor")
11121 (substitute* "pygmentize.gemspec"
11122 (("\"vendor/\\*\\*/\\*\",") "")))))))
11123 (inputs
11124 `(("pygments" ,python-pygments)))
11125 (native-inputs
11126 (list ruby-cutest ruby-nokogiri))
11127 (synopsis "Thin Ruby wrapper around pygmentize")
11128 (description
11129 "Pygmentize provides a simple way to call pygmentize from within a Ruby
11130application.")
11131 (home-page "https://github.com/djanowski/pygmentize")
11132 (license license:expat)))
11133
11134(define-public ruby-event-emitter
11135 (package
11136 (name "ruby-event-emitter")
11137 (version "0.2.6")
11138 (source (origin
11139 (method url-fetch)
11140 (uri (rubygems-uri "event_emitter" version))
11141 (sha256
11142 (base32
11143 "148k9qv8102l3m6klc24dwip79f9y4bjr5z19dckd7ffbjyrf9n7"))))
11144 (build-system ruby-build-system)
11145 (arguments
11146 (list #:phases #~(modify-phases %standard-phases
11147 (add-after 'extract-gemspec 'relax-requirements
11148 (lambda _
11149 (substitute* "event_emitter.gemspec"
11150 (("~> 1.15") ">= 1.15")))))))
11151 (synopsis "Ruby port of EventEmitter from Node.js")
11152 (description
11153 "This package provides a Ruby port of EventEmitter from Node.js.")
11154 (home-page "https://shokai.github.io/event_emitter/")
11155 (license license:expat)))
11156
11157(define-public ruby-eventmachine
11158 (package
11159 (name "ruby-eventmachine")
11160 (version "1.2.7")
11161 (source
11162 (origin
11163 (method url-fetch)
11164 (uri (rubygems-uri "eventmachine" version))
11165 (sha256
11166 (base32
11167 "0wh9aqb0skz80fhfn66lbpr4f86ya2z5rx6gm5xlfhd05bj1ch4r"))))
11168 (build-system ruby-build-system)
11169 (arguments
11170 '(#:tests? #f)) ; test suite tries to connect to google.com
11171 (inputs
11172 (list openssl))
11173 (native-inputs
11174 (list ruby-rake-compiler))
11175 (synopsis "Single-threaded network event framework for Ruby")
11176 (description
11177 "EventMachine implements a single-threaded engine for arbitrary network
11178communications. EventMachine wraps all interactions with sockets, allowing
11179programs to concentrate on the implementation of network protocols. It can be
11180used to create both network servers and clients.")
11181 ;; The ‘official’ rubyeventmachine.com domain is now registrar-squatted.
11182 (home-page "https://github.com/eventmachine/eventmachine")
11183 (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT
11184
11185(define-public ruby-ruby-engine
11186 (package
11187 (name "ruby-ruby-engine")
11188 (version "2.0.0")
11189 (source
11190 (origin
11191 (method url-fetch)
11192 (uri (rubygems-uri "ruby_engine" version))
11193 (sha256
11194 (base32
11195 "0wqdcv8gxybp1y7kjhh18g3r9dczacs62d4ahcvyhz32bih8c9fm"))))
11196 (build-system ruby-build-system)
11197 (arguments
11198 `(#:phases
11199 (modify-phases %standard-phases
11200 (add-after 'extract-gemspec 'clean-up
11201 (lambda _
11202 (delete-file "Gemfile.lock")
11203 (substitute* "ruby_engine.gemspec"
11204 ;; Remove unnecessary imports that would entail further
11205 ;; dependencies.
11206 ((".*<rdoc.*") "")
11207 ((".*<rubygems-tasks.*") "")
11208 ;; Remove extraneous .gem file
11209 (("\"pkg/ruby_engine-[0-9.]+\\.gem\".freeze, ") "")
11210 (("\"Gemfile.lock\".freeze, ") "")
11211 ;; Soften rake dependency
11212 (("%q<rake>.freeze, \\[\"~> 10.0\"\\]")
11213 "%q<rake>.freeze, [\">= 10.0\"]")
11214 ;; Soften the rspec dependency
11215 (("%q<rspec>.freeze, \\[\"~> 2.4\"\\]")
11216 "%q<rspec>.freeze, [\">= 2.4\"]"))
11217 (substitute* "Rakefile"
11218 (("require 'rubygems/tasks'") "")
11219 (("Gem::Tasks.new") ""))
11220 ;; Remove extraneous .gem file that otherwise gets installed.
11221 (delete-file-recursively "pkg"))))))
11222 (native-inputs
11223 (list bundler ruby-rake ruby-rspec))
11224 (synopsis "Simplifies checking for Ruby implementation")
11225 (description
11226 "@code{ruby_engine} provides an RubyEngine class that can be used to
11227check which implementation of Ruby is in use. It can provide the interpreter
11228name and provides query methods such as @code{RubyEngine.mri?}.")
11229 (home-page "https://github.com/janlelis/ruby_engine")
11230 (license license:expat)))
11231
11232(define-public ruby-mimemagic
11233 (package
11234 (name "ruby-mimemagic")
11235 (version "0.3.3")
11236 (source
11237 (origin
11238 (method url-fetch)
11239 (uri (rubygems-uri "mimemagic" version))
11240 (sha256
11241 (base32 "04cp5sfbh1qx82yqxn0q75c7hlcx8y1dr5g3kyzwm4mx6wi2gifw"))))
11242 (build-system ruby-build-system)
11243 (arguments
11244 '(#:phases
11245 (modify-phases %standard-phases
11246 ;; This phase breaks the tests, as it patches some of the test data.
11247 (delete 'patch-source-shebangs))))
11248 (native-inputs
11249 (list ruby-bacon))
11250 (synopsis "Ruby library for MIME detection by extension or content")
11251 (description
11252 "@acronym{MIME, Multipurpose Internet Mail Extensions} detection by
11253extension or content, using the freedesktop.org.xml shared-mime-info
11254database.")
11255 (home-page "https://github.com/minad/mimemagic")
11256 (license license:expat)))
11257
11258(define-public ruby-mime-types-data
11259 (package
11260 (name "ruby-mime-types-data")
11261 (version "3.2016.0521")
11262 (source
11263 (origin
11264 (method url-fetch)
11265 (uri (rubygems-uri "mime-types-data" version))
11266 (sha256
11267 (base32
11268 "04my3746hwa4yvbx1ranhfaqkgf6vavi1kyijjnw8w3dy37vqhkm"))))
11269 (build-system ruby-build-system)
11270 (native-inputs
11271 (list ruby-hoe))
11272 (synopsis "Registry for information about MIME media type definitions")
11273 (description
11274 "@code{mime-types-data} provides a registry for information about
11275Multipurpose Internet Mail Extensions (MIME) media type definitions. It can
11276be used with the Ruby mime-types library or other software to determine
11277defined filename extensions for MIME types, or to use filename extensions to
11278look up the likely MIME type definitions.")
11279 (home-page "https://github.com/mime-types/mime-types-data/")
11280 (license license:expat)))
11281
11282(define-public ruby-mime-types
11283 (package
11284 (name "ruby-mime-types")
11285 (version "3.4.1")
11286 (source
11287 (origin
11288 (method url-fetch)
11289 (uri (rubygems-uri "mime-types" version))
11290 (sha256
11291 (base32
11292 "0ipw892jbksbxxcrlx9g5ljq60qx47pm24ywgfbyjskbcl78pkvb"))))
11293 (build-system ruby-build-system)
11294 (propagated-inputs
11295 (list ruby-mime-types-data))
11296 (native-inputs
11297 (list ruby-hoe
11298 ruby-fivemat
11299 ruby-minitest-focus
11300 ruby-minitest-bonus-assertions
11301 ruby-minitest-hooks))
11302 (synopsis "Library and registry for MIME content type definitions")
11303 (description "The mime-types library provides a library and registry for
11304information about Multipurpose Internet Mail Extensions (MIME) content type
11305definitions. It can be used to determine defined filename extensions for MIME
11306types, or to use filename extensions to look up the likely MIME type
11307definitions.")
11308 (home-page "https://github.com/mime-types/ruby-mime-types")
11309 (license license:expat)))
11310
11311(define-public ruby-mini-mime
11312 (package
11313 (name "ruby-mini-mime")
11314 (version "1.1.2")
11315 (source
11316 (origin
11317 (method url-fetch)
11318 (uri (rubygems-uri "mini_mime" version))
11319 (sha256
11320 (base32
11321 "0lbim375gw2dk6383qirz13hgdmxlan0vc5da2l072j3qw6fqjm5"))))
11322 (build-system ruby-build-system)
11323 (synopsis "Lightweight mime type lookup toy")
11324 (description "This package provides a lightweight mime type lookup toy.")
11325 (home-page "https://github.com/discourse/mini_mime")
11326 (license license:expat)))
11327
11328(define-public ruby-fileutils
11329 (package
11330 (name "ruby-fileutils")
11331 (version "1.7.0")
11332 (source (origin
11333 (method git-fetch) ;for tests
11334 (uri (git-reference
11335 (url "https://github.com/ruby/fileutils")
11336 (commit (string-append "v" version))))
11337 (file-name (git-file-name name version))
11338 (sha256
11339 (base32
11340 "0m68gaqclnc2wflilmrnr19kky2gr6fjf6k3yq02sf9scs281kid"))))
11341 (build-system ruby-build-system)
11342 (arguments
11343 (list
11344 #:phases
11345 #~(modify-phases %standard-phases
11346 (add-before 'check 'disable-problematic-tests
11347 (lambda _
11348 (substitute* "test/fileutils/test_fileutils.rb"
11349 ;; The 'test_chown' tests depends on /etc/groups, which
11350 ;; doesn't exist in the build environment.
11351 (("def test_chown.*" all)
11352 (string-append all " return true\n"))
11353 ;; The 'test_cp_r_dev' expects a RuntimeError to be raised
11354 ;; when copying a char device to a directory, but this is not
11355 ;; triggered in the build environment, for reasons unknown.
11356 (("def test_cp_r_dev.*" all)
11357 (string-append all " return true\n"))))))))
11358 (synopsis "Ruby utility library to manipulate files")
11359 (description "The FileUtils Ruby library includes Several file utility
11360methods for copying, moving, removing, etc.")
11361 (home-page "https://github.com/ruby/fileutils")
11362 (license license:bsd-2)))
11363
11364(define-public ruby-fivemat
11365 (package
11366 (name "ruby-fivemat")
11367 (version "1.3.7")
11368 (source
11369 (origin
11370 (method url-fetch)
11371 (uri (rubygems-uri "fivemat" version))
11372 (sha256
11373 (base32
11374 "0pzlycasvwmg4bbx7plllpqnhd9zlmmff8l2w3yii86nrm2nvf9n"))))
11375 (build-system ruby-build-system)
11376 (arguments
11377 `(#:tests? #f)) ; no tests
11378 (synopsis "Each test file given its own line of dots")
11379 (description
11380 "Fivemat is a MiniTest/RSpec/Cucumber formatter that gives each test file
11381its own line of dots during testing. It aims to provide test output that is
11382neither too verbose nor too minimal.")
11383 (home-page "https://github.com/tpope/fivemat")
11384 (license license:expat)))
11385
11386(define-public ruby-sqlite3
11387 (package
11388 (name "ruby-sqlite3")
11389 (version "2.5.0")
11390 (source
11391 (origin
11392 (method git-fetch) ;for tests
11393 (uri (git-reference
11394 (url "https://github.com/sparklemotion/sqlite3-ruby")
11395 (commit (string-append "v" version))))
11396 (file-name (git-file-name name version))
11397 (sha256
11398 (base32
11399 "1fanv7bv5lszd5g752yy8nmpjhrl9gqwbbkbis2xbh83y96f2zfm"))))
11400 (build-system ruby-build-system)
11401 (arguments
11402 (list
11403 #:gem-flags #~(list "--" "--enable-system-libraries")
11404 #:modules '((guix build ruby-build-system)
11405 (guix build utils)
11406 (ice-9 rdelim)
11407 (ice-9 textual-ports))
11408 #:phases
11409 #~(modify-phases %standard-phases
11410 (add-after 'unpack 'relax-requirements
11411 (lambda _
11412 ;; Don't try to format C code, remove rubocop-rake.
11413 (delete-file "rakelib/format.rake")
11414 ;; Don't try to run valgrind-like memory tests.
11415 ;; This cuts all lines after Minitest::TestTask.create
11416 (with-atomic-file-replacement
11417 "rakelib/test.rake"
11418 (lambda (in out)
11419 (let loop ()
11420 (let ((line (read-line in)))
11421 (cond
11422 ((eof-object? line) #f)
11423 ((string-prefix? "Minitest::TestTask.create" line) #f)
11424 (else
11425 (format out "~a~%" line)
11426 (loop)))))))))
11427 (delete 'check)
11428 (add-after 'install 'check
11429 (lambda* (#:key tests? #:allow-other-keys)
11430 (when tests?
11431 (setenv "GEM_PATH"
11432 (string-append (getenv "GEM_PATH") ":"
11433 #$output "/lib/ruby/vendor_ruby"))
11434 (invoke "rake" "test")))))))
11435 (propagated-inputs
11436 (list ruby-mini-portile-2))
11437 (inputs
11438 (list sqlite))
11439 (native-inputs
11440 (list ruby-hoe
11441 ruby-rake-compiler
11442 ruby-rake-compiler-dock))
11443 (synopsis "Interface with SQLite3 databases")
11444 (description
11445 "This module allows Ruby programs to interface with the SQLite3 database
11446engine.")
11447 (home-page
11448 "https://github.com/sparklemotion/sqlite3-ruby")
11449 (license license:bsd-3)))
11450
11451(define-public ruby-sqlite3-1.4
11452 (package/inherit ruby-sqlite3
11453 (name "ruby-sqlite3")
11454 (version "1.4.4")
11455 (source
11456 (origin
11457 (method git-fetch) ;for tests
11458 (uri (git-reference
11459 (url "https://github.com/sparklemotion/sqlite3-ruby")
11460 (commit (string-append "v" version))))
11461 (file-name (git-file-name name version))
11462 (sha256
11463 (base32
11464 "0ngirjbai3f5ki2sf6m4gxbbrjpr3b35bz5nrz1cifyw1jk6a6sr"))))
11465 (arguments
11466 (substitute-keyword-arguments (package-arguments ruby-sqlite3)
11467 ((#:tests? #t #t) #f)
11468 ((#:phases phases #~%standard-phases)
11469 #~(modify-phases #$phases
11470 (delete 'relax-requirements)
11471 (add-after 'unpack 'fix-version
11472 (lambda _
11473 (substitute* "sqlite3.gemspec"
11474 (("s\\.version = .*")
11475 (format #f "s.version = ~s~%" #$version)))))))))))
11476
11477(define-public ruby-shoulda-context
11478 (package
11479 (name "ruby-shoulda-context")
11480 (version "2.0.0")
11481 (source
11482 (origin
11483 (method url-fetch)
11484 (uri (rubygems-uri "shoulda-context" version))
11485 (sha256
11486 (base32
11487 "0d1clcp92jv8756h09kbc55qiqncn666alx0s83za06q5hs4bpvs"))))
11488 (build-system ruby-build-system)
11489 (arguments
11490 `(#:phases
11491 (modify-phases %standard-phases
11492 (replace 'check
11493 (lambda* (#:key tests? #:allow-other-keys)
11494 (when tests?
11495 ;; Do not run tests to avoid circular dependence with rails.
11496 ;; Instead just import the library to test.
11497 (invoke "ruby" "-Ilib" "-r" "shoulda-context")))))))
11498 (synopsis "Test::Unit context framework extracted from Shoulda")
11499 (description
11500 "@code{shoulda-context} is the context framework extracted from Shoulda.
11501Instead of writing Ruby methods with lots_of_underscores, shoulda-context adds
11502context, setup, and should blocks combine to produce natural test method
11503names.")
11504 (home-page "https://github.com/thoughtbot/shoulda-context")
11505 (license license:expat)))
11506
11507(define-public ruby-shoulda-matchers
11508 (package
11509 (name "ruby-shoulda-matchers")
11510 (version "5.3.0")
11511 (source
11512 (origin
11513 (method url-fetch)
11514 (uri (rubygems-uri "shoulda-matchers" version))
11515 (sha256
11516 (base32
11517 "11igjgh16dl5pwqizdmclzlzpv7mbmnh8fx7m9b5kfsjhwxqdfpn"))))
11518 (build-system ruby-build-system)
11519 (arguments
11520 `(#:phases
11521 (modify-phases %standard-phases
11522 (replace 'check
11523 (lambda* (#:key tests? #:allow-other-keys)
11524 (when tests?
11525 ;; Do not run tests to avoid circular dependence with rails. Instead
11526 ;; just import the library to test.
11527 (invoke "ruby" "-Ilib" "-r" "shoulda-matchers")))))))
11528 (propagated-inputs
11529 (list ruby-activesupport))
11530 (synopsis "Collection of testing matchers extracted from Shoulda")
11531 (description
11532 "Shoulda Matchers provides RSpec- and Minitest-compatible one-liners that
11533test common Rails functionality. These tests would otherwise be much longer,
11534more complex, and error-prone.")
11535 (home-page "https://github.com/thoughtbot/shoulda-matchers")
11536 (license license:expat)))
11537
11538(define-public ruby-shoulda
11539 (package
11540 (name "ruby-shoulda")
11541 (version "4.0.0")
11542 (source
11543 (origin
11544 (method url-fetch)
11545 (uri (rubygems-uri "shoulda" version))
11546 (sha256
11547 (base32
11548 "02lww34kn1g6lidp4rx4rs6bqvirrzxlfw1y2wm11aif8f622xz6"))))
11549 (build-system ruby-build-system)
11550 (arguments
11551 `(#:phases
11552 (modify-phases %standard-phases
11553 (replace 'check
11554 (lambda* (#:key tests? #:allow-other-keys)
11555 (when tests?
11556 ;; Don't run tests to avoid circular dependence with rails.
11557 ;; Instead just import the library to test.
11558 (invoke "ruby" "-Ilib" "-r" "shoulda"))))
11559 (add-after 'extract-gemspec 'relax-requirements
11560 (lambda _
11561 (substitute* "shoulda.gemspec"
11562 ;; An older version of shoulda-matchers (4.0) is used, out of
11563 ;; little maintenance rather than because of an real
11564 ;; incompatibility (see:
11565 ;; https://github.com/thoughtbot/shoulda/issues/275).
11566 ((", \\[\"~> 4.0\"]") "")))))))
11567 (propagated-inputs
11568 (list ruby-shoulda-context ruby-shoulda-matchers))
11569 (synopsis "Context framework and matchers for testing")
11570 (description
11571 "@code{shoulda} is a meta-package combining @code{shoulda-context} and
11572@code{shoulda-matchers} providing tools for writing tests.")
11573 (home-page "https://github.com/thoughtbot/shoulda")
11574 (license license:expat)))
11575
11576(define-public ruby-unf
11577 (package
11578 (name "ruby-unf")
11579 (version "0.1.4")
11580 (source
11581 (origin
11582 (method url-fetch)
11583 (uri (rubygems-uri "unf" version))
11584 (sha256
11585 (base32
11586 "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9"))))
11587 (build-system ruby-build-system)
11588 (arguments
11589 `(#:phases
11590 (modify-phases %standard-phases
11591 (add-before 'check 'add-dependency-to-bundler
11592 (lambda _
11593 ;; test-unit is required but not provided by the bundler
11594 ;; environment. This is fixed in the upstream repository but fix
11595 ;; has not been released.
11596 (substitute* "Gemfile"
11597 (("^gemspec") "gem 'test-unit'\ngemspec")))))))
11598 (propagated-inputs
11599 (list ruby-unf-ext))
11600 (native-inputs
11601 (list ruby-shoulda bundler ruby-test-unit))
11602 (synopsis "Unicode Normalization Form support to Ruby and JRuby")
11603 (description
11604 "@code{ruby-unf} is a wrapper library to bring Unicode Normalization Form
11605support to both Ruby and JRuby. It uses @code{unf_ext} on CRuby and
11606@code{java.text.Normalizer} on JRuby.")
11607 (home-page "https://github.com/knu/ruby-unf")
11608 (license license:bsd-2)))
11609
11610(define-public ruby-warden
11611 (package
11612 (name "ruby-warden")
11613 (version "1.2.8")
11614 (source
11615 (origin
11616 (method url-fetch)
11617 (uri (rubygems-uri "warden" version))
11618 (sha256
11619 (base32
11620 "1fr9n9i9r82xb6i61fdw4xgc7zjv7fsdrr4k0njchy87iw9fl454"))))
11621 (build-system ruby-build-system)
11622 (arguments
11623 '(#:tests? #f)) ; No included tests
11624 (propagated-inputs
11625 (list ruby-rack))
11626 (synopsis "Rack middleware providing authentication")
11627 (description
11628 "Warden is a Rack-based middleware that provides a mechanism for
11629authentication in Ruby web applications.")
11630 (home-page "https://github.com/wardencommunity/warden")
11631 (license license:expat)))
11632
11633(define-public ruby-warden-oauth2
11634 (package
11635 (name "ruby-warden-oauth2")
11636 (version "0.0.1")
11637 (source
11638 (origin
11639 (method url-fetch)
11640 (uri (rubygems-uri "warden-oauth2" version))
11641 (sha256
11642 (base32
11643 "1z9154lvzrnnfjbjkmirh4n811nygp6pm2fa6ikr7y1ysa4zv3cz"))))
11644 (build-system ruby-build-system)
11645 (arguments
11646 '(#:test-target "spec"
11647 #:phases
11648 (modify-phases %standard-phases
11649 (add-after 'unpack 'remove-unnecessary-dependencies
11650 (lambda _
11651 (substitute* "Gemfile"
11652 ;; All of these gems relate to development, and are unnecessary
11653 ;; when running the tests
11654 (("gem 'guard-bundler'") "")
11655 (("gem 'guard'") "")
11656 (("gem 'guard-rspec'") "")
11657 (("gem 'rb-fsevent'") "")
11658 (("gem 'pry'") "")
11659 (("gem 'growl'") ""))))
11660 ;; The test suite doesn't work with rspec@2, and this is incompatible
11661 ;; with the current version of Rake, so invoke Rspec directly
11662 (replace 'check
11663 (lambda* (#:key tests? #:allow-other-keys)
11664 (when tests?
11665 (invoke "bundle" "exec" "rspec")))))))
11666 (propagated-inputs
11667 (list ruby-warden))
11668 (native-inputs
11669 (list bundler ruby-rspec-2 ruby-rack-test))
11670 (synopsis "OAuth 2.0 strategies for Warden")
11671 (description
11672 "This library extends Warden to support OAuth 2.0 authorized API
11673requests.")
11674 (home-page "https://github.com/opperator/warden-oauth2")
11675 (license license:expat)))
11676
11677(define-public ruby-webmock
11678 (package
11679 (name "ruby-webmock")
11680 (version "3.11.2")
11681 (source
11682 (origin
11683 (method url-fetch)
11684 (uri (rubygems-uri "webmock" version))
11685 (sha256
11686 (base32
11687 "1hdlbvfw316lkz251qnfk79drmaay7l51kidvicz41nhvw12xz8v"))))
11688 (build-system ruby-build-system)
11689 (native-inputs
11690 (list bundler ruby-rspec))
11691 (propagated-inputs
11692 (list ruby-addressable ruby-crack ruby-hashdiff))
11693 (synopsis "Allows stubbing and setting expectations on HTTP requests")
11694 (description
11695 "WebMock allows stubbing HTTP requests and setting expectations on HTTP
11696requests. This is useful when testing software.")
11697 (home-page "https://github.com/bblimke/webmock")
11698 (license license:expat)))
11699
11700(define-public ruby-webmock-2
11701 (package
11702 (inherit ruby-webmock)
11703 (name "ruby-webmock")
11704 (version "2.3.2")
11705 (source
11706 (origin
11707 (method url-fetch)
11708 (uri (rubygems-uri "webmock" version))
11709 (sha256
11710 (base32
11711 "04hkcqsmbfnp8g237pisnc834vpgildklicbjbyikqg0bg1rwcy5"))))))
11712
11713(define-public ruby-unicode-display-width
11714 (package
11715 (name "ruby-unicode-display-width")
11716 (version "2.4.2")
11717 (source
11718 (origin
11719 (method url-fetch)
11720 (uri (rubygems-uri "unicode-display_width" version))
11721 (sha256
11722 (base32
11723 "1gi82k102q7bkmfi7ggn9ciypn897ylln1jk9q67kjhr39fj043a"))))
11724 (build-system ruby-build-system)
11725 (arguments
11726 '(;; Test data not included.
11727 #:tests? #f))
11728 (synopsis "Determine the monospace display width of Ruby strings")
11729 (description
11730 "@code{Unicode::DisplayWidth} is a Ruby library which can determine the
11731display width of strings in Ruby.")
11732 (home-page "https://github.com/janlelis/unicode-display_width")
11733 (license license:expat)))
11734
11735;; There is another gem called 'ruby-version' so we use an underscore in this
11736;; name
11737(define-public ruby_version
11738 (package
11739 (name "ruby_version")
11740 (version "1.0.2")
11741 (source
11742 (origin
11743 (method url-fetch)
11744 (uri (rubygems-uri "ruby_version" version))
11745 (sha256
11746 (base32
11747 "0lvc7bd5ps3w2vq2wb02i0pi3vfcx2rnckx2ix4rjym1qf52kb2j"))))
11748 (build-system ruby-build-system)
11749 (arguments
11750 `(#:phases
11751 (modify-phases %standard-phases
11752 (add-before 'check 'fix-dependencies
11753 (lambda _
11754 ;; Remove the Gemfile.lock, as we want to use Guix packages at
11755 ;; whatever versions.
11756 (delete-file "Gemfile.lock")
11757 ;; Remove the included gem files as they unnecessary.
11758 (delete-file-recursively "pkg/")
11759 ;; Accept any version of rake, rdoc and rspec
11760 (substitute* "ruby_version.gemspec"
11761 (("%q<rake.*") "%q<rake>)\n")
11762 (("%q<rdoc.*") "%q<rdoc>)\n")
11763 (("%q<rspec.*") "%q<rspec>)\n"))
11764 ;; Do not use bundler.
11765 (substitute* "Rakefile"
11766 (("Bundler\\.setup.*") "nil\n")))))))
11767 (native-inputs
11768 (list ruby-rdoc ruby-rspec ruby-rubygems-tasks))
11769 (synopsis "Ruby library to help check the Ruby version")
11770 (description "@code{ruby_version} provides a @code{RubyVersion} module to simplify
11771checking for the right Ruby version in software.")
11772 (home-page "https://github.com/janlelis/ruby_version")
11773 (license license:expat)))
11774
11775(define-public ruby-websocket-client-simple
11776 (package
11777 (name "ruby-websocket-client-simple")
11778 (version "0.6.1")
11779 (source (origin
11780 (method url-fetch)
11781 (uri (rubygems-uri "websocket-client-simple" version))
11782 (sha256
11783 (base32
11784 "1ypl4xvlh5c99zbn20sifv7gv04zi20ly464vsgikfrpn5f37bid"))))
11785 (build-system ruby-build-system)
11786 (arguments (list #:test-target "default"))
11787 (native-inputs (list ruby-eventmachine ruby-websocket-eventmachine-server))
11788 (propagated-inputs (list ruby-event-emitter ruby-websocket))
11789 (synopsis "Simple WebSocket client for Ruby")
11790 (description "This package provides a simple WebSocket client for Ruby.")
11791 (home-page "https://github.com/ruby-jp/websocket-client-simple")
11792 (license license:expat)))
11793
11794(define-public ruby-websocket-eventmachine-base
11795 (package
11796 (name "ruby-websocket-eventmachine-base")
11797 (version "1.2.0")
11798 (source (origin
11799 (method url-fetch)
11800 (uri (rubygems-uri "websocket-eventmachine-base" version))
11801 (sha256
11802 (base32
11803 "0wiz61mcwgs3k21cdr5l9b4jpg29gl6mflfampww2v525yc3hr1r"))))
11804 (build-system ruby-build-system)
11805 (arguments
11806 (list #:tests? #f)) ;no test suite
11807 (propagated-inputs (list ruby-eventmachine ruby-websocket
11808 ruby-websocket-native))
11809 (synopsis "WebSocket base for Ruby client and server")
11810 (description "This package provides a WebSocket base for a Ruby client and
11811server.")
11812 (home-page "https://github.com/imanel/websocket-eventmachine-base")
11813 (license license:expat)))
11814
11815(define-public ruby-websocket-eventmachine-server
11816 (package
11817 (name "ruby-websocket-eventmachine-server")
11818 (version "1.0.1")
11819 (source (origin
11820 (method url-fetch)
11821 (uri (rubygems-uri "websocket-eventmachine-server" version))
11822 (sha256
11823 (base32
11824 "0iqpzc8s028nck1flqaj784gvyn64wy1h3svpa4y2847wklg8sms"))))
11825 (build-system ruby-build-system)
11826 ;; TODO: The test suite requires Autobahn, not yet packaged in Guix.
11827 (arguments (list #:tests? #f))
11828 (propagated-inputs (list ruby-websocket-eventmachine-base))
11829 (synopsis "WebSocket server for Ruby")
11830 (description "This package provides a WebSocket server for Ruby.")
11831 (home-page "https://github.com/imanel/websocket-eventmachine-server")
11832 (license license:expat)))
11833
11834(define-public ruby-websocket-native
11835 (package
11836 (name "ruby-websocket-native")
11837 (version "1.0.0")
11838 (source (origin
11839 (method url-fetch)
11840 (uri (rubygems-uri "websocket-native" version))
11841 (sha256
11842 (base32
11843 "1kgvd3gyzh7hk0ddzn85jrs4csxm54qnvla95ldyn6rzgfbjchdn"))))
11844 (build-system ruby-build-system)
11845 (arguments
11846 (list #:test-target "spec"
11847 #:phases #~(modify-phases %standard-phases
11848 (add-before 'check 'disable-problematic-tests
11849 (lambda _
11850 (substitute* "spec/websocket_spec.rb"
11851 (("it \"should have mask_native defined\"" all)
11852 (string-append "x" all)))))
11853 (add-after 'build 'compile
11854 (lambda _
11855 (invoke "rake" "compile"))))))
11856 (native-inputs (list ruby-rake-compiler ruby-rspec))
11857 (synopsis "Native Ruby extension for the WebSocket gem")
11858 (description "This package provides a native extension that can increase
11859performance by about 25% compared to the pure Ruby WebSocket implementation.")
11860 (home-page "https://github.com/imanel/websocket-ruby-native")
11861 (license license:expat)))
11862
11863(define-public ruby-websocket-driver
11864 (package
11865 (name "ruby-websocket-driver")
11866 (version "0.7.1")
11867 (source
11868 (origin
11869 (method url-fetch)
11870 (uri (rubygems-uri "websocket-driver" version))
11871 (sha256
11872 (base32 "1bxamwqldmy98hxs5pqby3andws14hl36ch78g0s81gaz9b91nj2"))))
11873 (build-system ruby-build-system)
11874 (arguments
11875 '(#:tests? #f)) ; no included tests
11876 (propagated-inputs
11877 (list ruby-websocket-extensions))
11878 (synopsis "WebSocket protocol handler with pluggable I/O")
11879 (description
11880 "@code{websocket-driver} provides a complete implementation of the
11881WebSocket protocols that can be hooked up to any TCP library")
11882 (home-page "https://github.com/faye/websocket-driver-ruby")
11883 (license license:expat)))
11884
11885(define-public ruby-websocket-extensions
11886 (package
11887 (name "ruby-websocket-extensions")
11888 (version "0.1.3")
11889 (source
11890 (origin
11891 (method url-fetch)
11892 (uri (rubygems-uri "websocket-extensions" version))
11893 (sha256
11894 (base32
11895 "034sdr7fd34yag5l6y156rkbhiqgmy395m231dwhlpcswhs6d270"))))
11896 (build-system ruby-build-system)
11897 (arguments
11898 '(;; No included tests
11899 #:tests? #f))
11900 (synopsis "Generic extension manager for WebSocket connections")
11901 (description
11902 "@code{websocket-extensions} provides a container for registering
11903extension plugins.")
11904 (home-page "https://github.com/faye/websocket-extensions-ruby")
11905 (license license:expat)))
11906
11907(define-public ruby-domain-name
11908 (package
11909 (name "ruby-domain-name")
11910 (version "0.5.20190701")
11911 (source
11912 (origin
11913 (method url-fetch)
11914 (uri (rubygems-uri "domain_name" version))
11915 (sha256
11916 (base32 "0lcqjsmixjp52bnlgzh4lg9ppsk52x9hpwdjd53k8jnbah2602h0"))))
11917 (build-system ruby-build-system)
11918 (arguments
11919 `(#:phases
11920 (modify-phases %standard-phases
11921 (add-before 'check 'fix-versions
11922 (lambda _
11923 ;; Fix NameError that appears to already be fixed upstream.
11924 (substitute* "Rakefile"
11925 (("DomainName::VERSION")
11926 "Bundler::GemHelper.gemspec.version"))
11927 ;; Loosen unnecessarily strict test-unit version specification.
11928 (substitute* "domain_name.gemspec"
11929 (("<test-unit>.freeze, \\[\\\"~> 2.5.5") "<test-unit>, [\">0"))
11930 #t)))))
11931 (propagated-inputs
11932 (list ruby-unf))
11933 (native-inputs
11934 (list ruby-shoulda bundler ruby-test-unit))
11935 (synopsis "Domain name manipulation library")
11936 (description
11937 "@code{domain_name} is a Domain name manipulation library. It parses a
11938domain name ready for extracting the registered domain and TLD (Top Level
11939Domain). It can also be used for cookie domain validation based on the Public
11940Suffix List.")
11941 (home-page "https://github.com/knu/ruby-domain_name")
11942 (license license:bsd-2)))
11943
11944(define-public ruby-dotenv
11945 (package
11946 (name "ruby-dotenv")
11947 (version "3.1.7")
11948 (source (origin
11949 (method git-fetch) ;for the tests
11950 (uri (git-reference
11951 (url "https://github.com/bkeepers/dotenv")
11952 (commit (string-append "v" version))))
11953 (file-name (git-file-name name version))
11954 (sha256
11955 (base32
11956 "19j0acy12si537hwi4q54q8n5ycmlvfd2ik5y6r7jir6ww06l8yx"))))
11957 (build-system ruby-build-system)
11958 (arguments
11959 (list
11960 #:test-target "spec"
11961 #:phases
11962 #~(modify-phases %standard-phases
11963 (add-after 'unpack 'do-not-build-dotenv-rails
11964 (lambda _
11965 ;; The repository includes the definitions of two packages,
11966 ;; 'dotenv' and 'dotenv-rails'. Since we want to package them
11967 ;; separately, remove the dotenv-rails and associated Rake
11968 ;; tasks.
11969 (delete-file "dotenv-rails.gemspec")
11970 (delete-file "spec/dotenv/rails_spec.rb")
11971 (delete-file "spec/dotenv/log_subscriber_spec.rb")
11972 (substitute* "spec/spec_helper.rb"
11973 (("require \"dotenv\"" all)
11974 (string-append "require \"pathname\"\n" all)))
11975 (substitute* "Rakefile"
11976 (("DotenvRailsGemHelper.install_tasks name: \"dotenv-rails\"")
11977 "")
11978 ((", \"dotenv-rails:.*\"")
11979 ""))))
11980 (replace 'replace-git-ls-files
11981 (lambda _
11982 (substitute* "dotenv.gemspec"
11983 (("`git ls-files (README.md LICENSE lib bin) \\| ([^`]*`)"
11984 all files command)
11985 (string-append
11986 "`find " files " -type f | sort | " command))))))))
11987 (native-inputs (list ruby-standard ruby-rspec))
11988 (synopsis "Ruby library for setting environment variables")
11989 (description "Dotenv is a Ruby library for setting environment variables
11990defined in a @file{.env} file.")
11991 (home-page "https://github.com/bkeepers/dotenv")
11992 (license license:expat)))
11993
11994(define-public ruby-dotenv-rails
11995 (package
11996 (inherit ruby-dotenv)
11997 (name "ruby-dotenv-rails")
11998 (arguments
11999 (substitute-keyword-arguments (package-arguments ruby-dotenv)
12000 ((#:phases phases '%standard-phases)
12001 #~(modify-phases #$phases
12002 (delete 'do-not-build-dotenv-rails)
12003 (add-after 'unpack 'delete-Gemfile
12004 (lambda _
12005 ;; It defines extraneous dependencies; remove it.
12006 (delete-file "Gemfile")))
12007 (add-after 'unpack 'remove-extraneous-gemspec
12008 (lambda _
12009 (delete-file "dotenv.gemspec")
12010 (substitute* "Gemfile"
12011 ((".*\"dotenv\".*") ""))
12012 (substitute* "Rakefile"
12013 ;; Remove the dotenv-related Rake tasks.
12014 (("Bundler::GemHelper.install_tasks name: \"dotenv\"")
12015 "")
12016 (("\"dotenv:[^\"]*\", ")
12017 ""))))
12018 (replace 'replace-git-ls-files
12019 (lambda _
12020 (substitute* "dotenv-rails.gemspec"
12021 (("`git ls-files lib \\| grep rails`")
12022 "`find lib -type f | sort | grep rails`"))))))))
12023 (native-inputs (list ruby-rspec ruby-spring ruby-standard))
12024 (propagated-inputs (list ruby-dotenv ruby-railties))
12025 (synopsis "Ruby library for setting environment variables in Rails project")
12026 (description "Dotenv is a Ruby library for setting environment variables
12027defined in a @file{.env} file. This is the Rails variant, adapted for use
12028with Ruby on Rails projects.")))
12029
12030(define-public ruby-http-accept
12031 (package
12032 (name "ruby-http-accept")
12033 (version "2.2.0")
12034 (source (origin
12035 (method git-fetch) ;for the tests
12036 (uri (git-reference
12037 (url "https://github.com/socketry/http-accept")
12038 (commit (string-append "v" version))))
12039 (file-name (git-file-name name version))
12040 (sha256
12041 (base32
12042 "1d69cy12hqbcqrhw4dibvdq5pqklxsa59kih6pzl479nxq79rgs7"))))
12043 (build-system ruby-build-system)
12044 (arguments
12045 (list
12046 #:phases
12047 #~(modify-phases %standard-phases
12048 (add-after 'unpack 'remove-missing-key-directive
12049 ;; This seem to be a common problem in Ruby projects (see:
12050 ;; https://github.com/prawnpdf/ttfunk/issues/99).
12051 (lambda _
12052 (substitute* "http-accept.gemspec"
12053 ((".*spec.signing_key.*") ""))))
12054 (replace 'check
12055 (lambda* (#:key tests? #:allow-other-keys)
12056 (when tests?
12057 (invoke "rspec")))))))
12058 (native-inputs
12059 (list ruby-rspec
12060 ruby-covered))
12061 (synopsis "Parse Accept and Accept-Language HTTP headers")
12062 (description
12063 "This package provides a set of parsers for Accept and Accept-Language
12064HTTP headers.")
12065 (home-page "https://github.com/socketry/http-accept")
12066 (license license:expat)))
12067
12068(define-public ruby-http-accept-1
12069 (package
12070 (inherit ruby-http-accept)
12071 (version "1.7.0")
12072 (source (origin
12073 (method git-fetch) ;for the tests
12074 (uri (git-reference
12075 (url "https://github.com/ioquatix/http-accept")
12076 (commit (string-append "v" version))))
12077 (file-name (git-file-name "ruby-http-accept" version))
12078 (sha256
12079 (base32
12080 "1hnqmqpa135s3xgcvv30qzqm8zp88my1aj05m72d2q9cvc31g92z"))))))
12081
12082(define-public ruby-http-cookie
12083 (package
12084 (name "ruby-http-cookie")
12085 (version "1.0.5")
12086 (source
12087 (origin
12088 (method url-fetch)
12089 (uri (rubygems-uri "http-cookie" version))
12090 (sha256
12091 (base32
12092 "13rilvlv8kwbzqfb644qp6hrbsj82cbqmnzcvqip1p6vqx36sxbk"))))
12093 (build-system ruby-build-system)
12094 (arguments
12095 (list
12096 #:phases
12097 #~(modify-phases %standard-phases
12098 (add-before 'check 'add-dependency-to-bundler
12099 (lambda _
12100 ;; Fix NameError
12101 (substitute* "Rakefile"
12102 (("HTTP::Cookie::VERSION")
12103 "Bundler::GemHelper.gemspec.version")))))))
12104 (propagated-inputs
12105 (list ruby-domain-name))
12106 (native-inputs
12107 (list ruby-simplecov
12108 bundler
12109 ruby-sqlite3
12110 ruby-test-unit))
12111 (synopsis "Handle HTTP Cookies based on RFC 6265")
12112 (description
12113 "@code{HTTP::Cookie} is a Ruby library to handle HTTP Cookies based on
12114RFC 6265. It has been designed with security, standards compliance and
12115compatibility in mind, to behave just the same as today's major web browsers.
12116It has built-in support for the legacy @code{cookies.txt} and
12117@code{cookies.sqlite} formats of Mozilla Firefox.")
12118 (home-page "https://github.com/sparklemotion/http-cookie")
12119 (license license:expat)))
12120
12121(define-public ruby-httpclient
12122 (package
12123 (name "ruby-httpclient")
12124 (version "2.8.3")
12125 (source
12126 (origin
12127 (method url-fetch)
12128 (uri (rubygems-uri "httpclient" version))
12129 (sha256
12130 (base32
12131 "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99"))))
12132 (build-system ruby-build-system)
12133 (arguments
12134 '(;; TODO: Some tests currently fail
12135 ;; ------
12136 ;; 211 tests, 729 assertions, 13 failures, 4 errors, 0 pendings,
12137 ;; 2 omissions, 0 notifications
12138 ;; 91.866% passed
12139 ;; ------
12140 ;; 6.49 tests/s, 22.41 assertions/s
12141 #:tests? #f
12142 #:phases
12143 (modify-phases %standard-phases
12144 (replace 'check
12145 (lambda* (#:key tests? #:allow-other-keys)
12146 (if tests?
12147 (invoke "ruby"
12148 "-Ilib"
12149 "test/runner.rb")))))))
12150 (native-inputs
12151 (list ruby-rack))
12152 (synopsis
12153 "Make HTTP requests with support for HTTPS, Cookies, authentication and more")
12154 (description
12155 "The @code{httpclient} ruby library provides functionality related to
12156HTTP. Compared to the @code{net/http} library, @code{httpclient} also provides
12157Cookie, multithreading and authentication (digest, NTLM) support.
12158
12159Also provided is a @command{httpclient} command, which can perform HTTP
12160requests either using arguments or with an interactive prompt.")
12161 (home-page "https://github.com/nahi/httpclient")
12162 (license license:ruby)))
12163
12164(define-public ruby-ansi
12165 (package
12166 (name "ruby-ansi")
12167 (version "1.5.0")
12168 (source
12169 (origin
12170 (method git-fetch)
12171 ;; Fetch from GitHub as the gem does not contain testing code.
12172 (uri (git-reference
12173 (url "https://github.com/rubyworks/ansi")
12174 (commit version)))
12175 (file-name (git-file-name name version))
12176 (sha256
12177 (base32
12178 "1wsz7xxwl3vkh277jb7fd7akqnqqgbvalxzpjwniiqk8ghfprbi5"))))
12179 (build-system ruby-build-system)
12180 (arguments
12181 `(#:phases
12182 (modify-phases %standard-phases
12183 ;; Disable testing to break the cycle ansi, ae, ansi, as well as the
12184 ;; cycle ansi, qed, ansi. Instead simply test that the library can
12185 ;; be require'd.
12186 (replace 'check
12187 (lambda _
12188 (invoke "ruby" "-Ilib" "-r" "ansi")))
12189 (add-before 'validate-runpath 'replace-broken-symlink
12190 (lambda* (#:key outputs #:allow-other-keys)
12191 (let* ((out (assoc-ref outputs "out"))
12192 (file (string-append
12193 out "/lib/ruby/vendor_ruby/gems/ansi-"
12194 ,version "/lib/ansi.yml")))
12195 ;; XXX: This symlink is broken since ruby 2.4.
12196 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
12197 (delete-file file)
12198 (symlink "../.index" file)))))))
12199 (synopsis "ANSI escape code related libraries")
12200 (description
12201 "This package is a collection of ANSI escape code related libraries
12202enabling ANSI colorization and stylization of console output. Included in the
12203library are the @code{Code} module, which defines ANSI codes as constants and
12204methods, a @code{Mixin} module for including color methods, a @code{Logger}, a
12205@code{ProgressBar}, and a @code{String} subclass. The library also includes a
12206@code{Terminal} module which provides information about the current output
12207device.")
12208 (home-page "https://rubyworks.github.io/ansi/")
12209 (license license:bsd-2)))
12210
12211(define-public ruby-systemu
12212 (package
12213 (name "ruby-systemu")
12214 (version "2.6.5")
12215 (source
12216 (origin
12217 (method url-fetch)
12218 (uri (rubygems-uri "systemu" version))
12219 (sha256
12220 (base32
12221 "0gmkbakhfci5wnmbfx5i54f25j9zsvbw858yg3jjhfs5n4ad1xq1"))))
12222 (build-system ruby-build-system)
12223 (arguments
12224 `(#:phases
12225 (modify-phases %standard-phases
12226 (add-before 'check 'set-version
12227 (lambda _
12228 (setenv "VERSION" ,version))))))
12229 (synopsis "Capture of stdout/stderr and handling of child processes")
12230 (description
12231 "Systemu can be used on any platform to return status, stdout, and stderr
12232of any command. Unlike other methods like @code{open3} and @code{popen4}
12233there is no danger of full pipes or threading issues hanging your process or
12234subprocess.")
12235 (home-page "https://github.com/ahoward/systemu")
12236 (license license:ruby)))
12237
12238(define-public ruby-bcrypt
12239 (package
12240 (name "ruby-bcrypt")
12241 (version "3.1.20")
12242 ;; FIXME: Unbundle the bcrypt library used.
12243 (source
12244 (origin
12245 (method git-fetch)
12246 (uri (git-reference
12247 (url "https://github.com/bcrypt-ruby/bcrypt-ruby")
12248 (commit (string-append "v" version))))
12249 (file-name (git-file-name name version))
12250 (sha256
12251 (base32 "0q6h8kmjb34hg6qjv31v374n3cavv00drsfyzv6nybdwipgyg62i"))))
12252 (build-system ruby-build-system)
12253 (arguments (list #:test-target "default")) ;compile + spec
12254 (native-inputs (list ruby-rake-compiler ruby-rspec))
12255 (synopsis "Ruby bcrypt wrapper")
12256 (description "This Ruby library provides a simple wrapper to bcrypt, a
12257secure hash algorithm for hashing passwords.")
12258 (home-page "https://github.com/bcrypt-ruby/bcrypt-ruby")
12259 (license license:expat)))
12260
12261(define-public ruby-bcrypt-pbkdf
12262 (package
12263 (name "ruby-bcrypt-pbkdf")
12264 (version "1.1.0")
12265 (source (origin
12266 (method url-fetch)
12267 (uri (rubygems-uri "bcrypt_pbkdf" version))
12268 (sha256
12269 (base32
12270 "0ndamfaivnkhc6hy0yqyk2gkwr6f3bz6216lh74hsiiyk3axz445"))))
12271 (build-system ruby-build-system)
12272 (arguments
12273 (list #:phases #~(modify-phases %standard-phases
12274 (add-before 'build 'compile
12275 (lambda _
12276 (invoke "rake" "compile"))))))
12277 (native-inputs (list ruby-minitest ruby-rake-compiler
12278 ruby-rake-compiler-dock ruby-rdoc))
12279 (synopsis "Reading password encrypted Ed25519 keys in Ruby")
12280 (description
12281 "This gem implements @samp{bcrypt_pbkdf}, which is a variant of
12282PBKDF2 (Password-Based Key Derivation Function 2) with bcrypt-based
12283pseudorandom function. This is currently used by @samp{net-ssh} to
12284read password encrypted Ed25519 keys.")
12285 (home-page "https://github.com/net-ssh/bcrypt_pbkdf-ruby")
12286 (license license:expat)))
12287
12288(define-public ruby-bio-commandeer
12289 (package
12290 (name "ruby-bio-commandeer")
12291 (version "0.4.0")
12292 (source
12293 (origin
12294 (method url-fetch)
12295 (uri (rubygems-uri "bio-commandeer" version))
12296 (sha256
12297 (base32
12298 "0khpfw1yl5l3d2m8nxpkk32ybc4c3pa5hic3agd160jdfjjjnlni"))))
12299 (build-system ruby-build-system)
12300 (arguments
12301 `(#:phases
12302 (modify-phases %standard-phases
12303 (replace 'check
12304 ;; Run test without calling 'rake' so that jeweler is
12305 ;; not required as an input.
12306 (lambda _
12307 (invoke "rspec" "spec/bio-commandeer_spec.rb"))))))
12308 (propagated-inputs
12309 (list ruby-bio-logger ruby-systemu))
12310 (native-inputs
12311 (list bundler ruby-rspec))
12312 (synopsis "Simplified running of shell commands from within Ruby")
12313 (description
12314 "Bio-commandeer provides an opinionated method of running shell commands
12315from within Ruby. The advantage of bio-commandeer over other methods of
12316running external commands is that when something goes wrong, messages printed
12317to the @code{STDOUT} and @code{STDERR} streams are reported, giving extra
12318detail to ease debugging.")
12319 (home-page "https://github.com/wwood/bioruby-commandeer")
12320 (license license:expat)))
12321
12322(define-public ruby-rubytest
12323 (package
12324 (name "ruby-rubytest")
12325 (version "0.8.1")
12326 (source
12327 (origin
12328 (method url-fetch)
12329 (uri (rubygems-uri "rubytest" version))
12330 (sha256
12331 (base32
12332 "19jydsdnkl81i9dhdcr4dc34j0ilm68ff2ngnka1hi38xiw4p5qz"))))
12333 (build-system ruby-build-system)
12334 (arguments
12335 ;; Disable regular testing to break the cycle rubytest, qed, brass,
12336 ;; rubytest, as well as the cycle rubytest, qed, ansi, rubytest. Instead
12337 ;; simply test that the library can be require'd.
12338 `(#:phases
12339 (modify-phases %standard-phases
12340 (replace 'check
12341 (lambda _
12342 (invoke "ruby" "-Ilib" "-r" "rubytest"))))))
12343 (propagated-inputs
12344 (list ruby-ansi))
12345 (synopsis "Universal test harness for Ruby")
12346 (description
12347 "Rubytest is a testing meta-framework for Ruby. It can handle any
12348compliant test framework and can run tests from multiple frameworks in a
12349single pass.")
12350 (home-page "https://rubyworks.github.io/rubytest")
12351 (license license:bsd-2)))
12352
12353(define-public ruby-brass
12354 (package
12355 (name "ruby-brass")
12356 (version "1.2.1")
12357 (source
12358 (origin
12359 (method url-fetch)
12360 (uri (rubygems-uri "brass" version))
12361 (sha256
12362 (base32
12363 "154lp8rp1vmg60ri1j4cb8hqlw37z7bn575h899v8hzxwi11sxka"))))
12364 (build-system ruby-build-system)
12365 (arguments
12366 ;; Disable tests to break the cycle brass, lemon, ae, qed, brass.
12367 ;; Instead simply test that the library can be require'd.
12368 `(#:phases
12369 (modify-phases %standard-phases
12370 (replace 'check
12371 (lambda* (#:key tests? #:allow-other-keys)
12372 (when tests?
12373 (invoke "ruby" "-Ilib" "-r" "brass")))))))
12374 (synopsis "Basic foundational assertions framework")
12375 (description
12376 "BRASS (Bare-Metal Ruby Assertion System Standard) is a basic
12377foundational assertions framework for other assertion and test frameworks to
12378make use of.")
12379 (home-page "https://rubyworks.github.io/brass")
12380 (license license:bsd-2)))
12381
12382(define-public ruby-qed
12383 (package
12384 (name "ruby-qed")
12385 (version "2.9.2")
12386 (source
12387 (origin
12388 (method url-fetch)
12389 (uri (rubygems-uri "qed" version))
12390 (sha256
12391 (base32
12392 "03h4lmlxpcya8j7s2cnyscqlx8v3xl1xgsw5y1wk1scxcgz2vbmr"))))
12393 (build-system ruby-build-system)
12394 (arguments
12395 `(#:phases
12396 (modify-phases %standard-phases
12397 (replace 'check
12398 (lambda* (#:key tests? #:allow-other-keys)
12399 (when tests?
12400 (invoke "ruby" "-Ilib" "bin/qed")))))))
12401 (native-inputs
12402 (list ruby-ae-bootstrap))
12403 (propagated-inputs
12404 (list ruby-ansi ruby-brass))
12405 (synopsis "Test framework utilizing literate programming techniques")
12406 (description
12407 "@dfn{Quality Ensured Demonstrations} (QED) is a test framework for
12408@dfn{Test Driven Development} (TDD) and @dfn{Behaviour Driven
12409Development} (BDD) utilizing Literate Programming techniques. QED sits
12410somewhere between lower-level testing tools like @code{Test::Unit} and
12411requirement specifications systems like Cucumber.")
12412 (home-page "https://rubyworks.github.io/qed")
12413 (license license:bsd-2)))
12414
12415(define-public ruby-que
12416 (package
12417 (name "ruby-que")
12418 (version "1.0.0.beta3")
12419 (source
12420 (origin
12421 (method url-fetch)
12422 (uri (rubygems-uri "que" version))
12423 (sha256
12424 (base32
12425 "0gr9pb814d4qj3ds98g6cjrdk7wv0yg8aqbm7c1lmgl87jkg8q04"))))
12426 (build-system ruby-build-system)
12427 (arguments
12428 '(#:tests? #f)) ; No included tests
12429 (synopsis "Job queue using PostgreSQL written in Ruby")
12430 (description
12431 "This package provides a job queue that uses PostgreSQL for storing jobs
12432and locking between worker processes.")
12433 (home-page "https://github.com/chanks/que")
12434 (license license:expat)))
12435
12436(define-public ruby-queue-classic
12437 (package
12438 (name "ruby-queue-classic")
12439 (version "4.0.0")
12440 (source (origin
12441 (method url-fetch)
12442 (uri (rubygems-uri "queue_classic" version))
12443 (sha256
12444 (base32
12445 "0npyhajf2fc80apkw9s2kj0n254w5lcl4xpjidg5d5w1fb19abh6"))))
12446 (build-system ruby-build-system)
12447 (arguments (list #:tests? #f)) ;tests require a postgresql server
12448 (native-inputs (list ruby-activerecord ruby-minitest-reporters))
12449 (propagated-inputs (list ruby-pg))
12450 (synopsis "Queuing library for Ruby")
12451 (description "@code{queue_classic} is a queuing library for Ruby
12452applications (Rails, Sinatra, etc.) @code{queue_classic} features
12453asynchronous job polling, database maintained locks and has a single
12454dependency, @code{pg}.")
12455 (home-page "https://github.com/QueueClassic/queue_classic")
12456 (license license:expat)))
12457
12458(define-public ruby-pairing-heap
12459 (package
12460 (name "ruby-pairing-heap")
12461 (version "3.1.0")
12462 (source (origin
12463 (method url-fetch)
12464 (uri (rubygems-uri "pairing_heap" version))
12465 (sha256
12466 (base32
12467 "059kqpw53cancnp0bp7y1s74y1955riw33w3lqfbnms4b4mdh5zj"))))
12468 (build-system ruby-build-system)
12469 (arguments
12470 (list
12471 #:phases
12472 #~(modify-phases %standard-phases
12473 (add-after 'unpack 'patch
12474 (lambda _
12475 (substitute* "Rakefile"
12476 (("require \"standard/rake\"") "")
12477 ((":\"standard:fix\",") "")))))))
12478 (synopsis "Priority queue in pure Ruby")
12479 (description "This package provides a performant priority queue in pure
12480ruby with support for changing priority using pairing heap data structure")
12481 (home-page "https://github.com/mhib/pairing_heap")
12482 (license license:expat)))
12483
12484(define-public ruby-ae
12485 (package
12486 (name "ruby-ae")
12487 (version "1.8.2")
12488 (source
12489 (origin
12490 (method git-fetch)
12491 ;; Fetch from github so tests are included.
12492 (uri (git-reference
12493 (url "https://github.com/rubyworks/ae")
12494 (commit version)))
12495 (file-name (git-file-name name version))
12496 (sha256
12497 (base32
12498 "11299jj5ma8mi7b4majkyjy70y6zlqpgl8aql1c5lvfjavlpwmlp"))))
12499 (build-system ruby-build-system)
12500 (arguments
12501 `(#:phases
12502 (modify-phases %standard-phases
12503 (replace 'check
12504 (lambda* (#:key tests? #:allow-other-keys)
12505 (when tests?
12506 (invoke "qed"))))
12507 (add-before 'validate-runpath 'replace-broken-symlink
12508 (lambda* (#:key outputs #:allow-other-keys)
12509 (let* ((out (assoc-ref outputs "out"))
12510 (file (string-append
12511 out "/lib/ruby/vendor_ruby/gems/ae-"
12512 ,version "/lib/ae.yml")))
12513 ;; XXX: This symlink is broken since ruby 2.4.
12514 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
12515 (delete-file file)
12516 (symlink "../.index" file)))))))
12517 (propagated-inputs
12518 (list ruby-ansi))
12519 (native-inputs
12520 (list ruby-qed))
12521 (synopsis "Assertions library")
12522 (description
12523 "Assertive Expressive (AE) is an assertions library specifically designed
12524for reuse by other test frameworks.")
12525 (home-page "https://rubyworks.github.io/ae/")
12526 (license license:bsd-2)))
12527
12528(define-public ruby-ae-bootstrap
12529 (hidden-package
12530 (package/inherit ruby-ae
12531 (arguments
12532 (substitute-keyword-arguments
12533 (package-arguments ruby-ae)
12534 ((#:tests? _ #t) #f)))
12535 (native-inputs '()))))
12536
12537(define-public ruby-lemon
12538 (package
12539 (name "ruby-lemon")
12540 (version "0.9.1")
12541 (source
12542 (origin
12543 (method url-fetch)
12544 (uri (rubygems-uri "lemon" version))
12545 (sha256
12546 (base32
12547 "0gqhpgjavgpvx23rqpfqcv3d5bs8gc7lr9yvj8kxgp7mfbdc2jcm"))))
12548 (build-system ruby-build-system)
12549 (arguments
12550 `(#:phases
12551 (modify-phases %standard-phases
12552 (replace 'check (lambda _ (invoke "qed"))))))
12553 (propagated-inputs
12554 (list ruby-ae ruby-ansi ruby-rubytest))
12555 (native-inputs
12556 (list ruby-qed))
12557 (synopsis "Test framework correlating code structure and test unit")
12558 (description
12559 "Lemon is a unit testing framework that enforces highly formal
12560case-to-class and unit-to-method test construction. This enforcement can help
12561focus concern on individual units of behavior.")
12562 (home-page "https://rubyworks.github.io/lemon")
12563 (license license:bsd-2)))
12564
12565(define-public ruby-rubytest-cli
12566 (package
12567 (name "ruby-rubytest-cli")
12568 (version "0.2.0")
12569 (source
12570 (origin
12571 (method url-fetch)
12572 (uri (rubygems-uri "rubytest-cli" version))
12573 (sha256
12574 (base32
12575 "0n7hv4k1ba4fm3i98c6ydbsqhkxgbp52mhi70ba1x3mqzfvk438p"))))
12576 (build-system ruby-build-system)
12577 (arguments
12578 `(#:tests? #f)) ; no tests
12579 (propagated-inputs
12580 (list ruby-ansi ruby-rubytest))
12581 (synopsis "Command-line interface for rubytest")
12582 (description
12583 "Rubytest CLI is a command-line interface for running tests for
12584Rubytest-based test frameworks. It provides the @code{rubytest} executable.")
12585 (home-page "https://rubyworks.github.io/rubytest-cli")
12586 (license license:bsd-2)))
12587
12588(define-public ruby-hashery
12589 (package
12590 (name "ruby-hashery")
12591 (version "2.1.2")
12592 (source
12593 (origin
12594 (method url-fetch)
12595 (uri (rubygems-uri "hashery" version))
12596 (sha256
12597 (base32
12598 "0qj8815bf7q6q7llm5rzdz279gzmpqmqqicxnzv066a020iwqffj"))))
12599 (build-system ruby-build-system)
12600 (arguments
12601 `(#:phases
12602 (modify-phases %standard-phases
12603 (replace 'check
12604 (lambda _
12605 (invoke "qed")
12606 (invoke "rubytest" "-Ilib" "-Itest" "test/"))))))
12607 (native-inputs
12608 (list ruby-rubytest-cli ruby-qed ruby-lemon))
12609 (synopsis "Hash-like classes with extra features")
12610 (description
12611 "The Hashery is a tight collection of @code{Hash}-like classes.
12612Included are the auto-sorting @code{Dictionary} class, the efficient
12613@code{LRUHash}, the flexible @code{OpenHash} and the convenient
12614@code{KeyHash}. Nearly every class is a subclass of the @code{CRUDHash} which
12615defines a CRUD (Create, Read, Update and Delete) model on top of Ruby's
12616standard @code{Hash} making it possible to subclass and augment to fit any
12617specific use case.")
12618 (home-page "https://rubyworks.github.io/hashery")
12619 (license license:bsd-2)))
12620
12621(define-public ruby-rc4
12622 (package
12623 (name "ruby-rc4")
12624 (version "0.1.5")
12625 (source
12626 (origin
12627 (method url-fetch)
12628 (uri (rubygems-uri "ruby-rc4" version))
12629 (sha256
12630 (base32
12631 "00vci475258mmbvsdqkmqadlwn6gj9m01sp7b5a3zd90knil1k00"))))
12632 (build-system ruby-build-system)
12633 (arguments
12634 `(#:phases
12635 (modify-phases %standard-phases
12636 (replace 'check
12637 (lambda _
12638 (invoke "rspec" "spec/rc4_spec.rb"))))))
12639 (native-inputs
12640 (list ruby-rspec-2))
12641 (synopsis "Implementation of the RC4 algorithm")
12642 (description
12643 "RubyRC4 is a pure Ruby implementation of the RC4 algorithm.")
12644 (home-page "https://github.com/caiges/Ruby-RC4")
12645 (license license:expat)))
12646
12647(define-public ruby-afm
12648 (package
12649 (name "ruby-afm")
12650 (version "0.2.2")
12651 (source
12652 (origin
12653 (method url-fetch)
12654 (uri (rubygems-uri "afm" version))
12655 (sha256
12656 (base32
12657 "06kj9hgd0z8pj27bxp2diwqh6fv7qhwwm17z64rhdc4sfn76jgn8"))))
12658 (build-system ruby-build-system)
12659 (native-inputs
12660 (list bundler))
12661 (synopsis "Read Adobe Font Metrics (afm) files")
12662 (description
12663 "This library provides methods to read @dfn{Adobe Font Metrics} (afm)
12664files and use the data therein.")
12665 (home-page "https://github.com/halfbyte/afm")
12666 (license license:expat)))
12667
12668(define-public ruby-ascii85
12669 (package
12670 (name "ruby-ascii85")
12671 (version "1.0.3")
12672 (source
12673 (origin
12674 (method url-fetch)
12675 (uri (rubygems-uri "Ascii85" version))
12676 (sha256
12677 (base32
12678 "0658m37jjjn6drzqg1gk4p6c205mgp7g1jh2d00n4ngghgmz5qvs"))))
12679 (build-system ruby-build-system)
12680 (native-inputs
12681 (list bundler))
12682 (synopsis "Encode and decode Ascii85 binary-to-text encoding")
12683 (description
12684 "This library provides methods to encode and decode Ascii85
12685binary-to-text encoding. The main modern use of Ascii85 is in PostScript and
12686@dfn{Portable Document Format} (PDF) file formats.")
12687 (home-page "https://github.com/datawraith/ascii85gem")
12688 (license license:expat)))
12689
12690(define-public ruby-ttfunk
12691 (package
12692 (name "ruby-ttfunk")
12693 (version "1.7.0")
12694 (source
12695 (origin
12696 (method git-fetch)
12697 ;; Fetch from github as the gem does not contain testing code.
12698 (uri (git-reference
12699 (url "https://github.com/prawnpdf/ttfunk")
12700 (commit version)))
12701 (file-name (git-file-name name version))
12702 (sha256
12703 (base32
12704 "1jyxn928mpyb1sikjd93s3v8fmh33232pq41ziaph513j7am6fi5"))))
12705 (build-system ruby-build-system)
12706 (arguments
12707 (list #:test-target "spec" ;avoid the rubocop target
12708 #:phases
12709 #~(modify-phases %standard-phases
12710 (add-after 'unpack 'remove-missing-key-directive
12711 ;; This seem to be a common problem in Ruby projects (see:
12712 ;; https://github.com/prawnpdf/ttfunk/issues/99).
12713 (lambda _
12714 (substitute* "ttfunk.gemspec"
12715 ((".*spec.signing_key.*") "")))))))
12716 (native-inputs (list ruby-prawn-dev))
12717 (synopsis "Font metrics parser for the Prawn PDF generator")
12718 (description
12719 "TTFunk is a TrueType font parser written in pure Ruby. It is used as
12720part of the Prawn PDF generator.")
12721 (home-page "https://github.com/prawnpdf/ttfunk")
12722 ;; From the README: "Matz's terms for Ruby, GPLv2, or GPLv3. See LICENSE
12723 ;; for details."
12724 (license %prawn-project-licenses)))
12725
12726(define-public ruby-puma
12727 (package
12728 (name "ruby-puma")
12729 (version "6.6.0")
12730 (source
12731 (origin
12732 (method git-fetch) ;for tests
12733 (uri (git-reference
12734 (url "https://github.com/puma/puma")
12735 (commit (string-append "v" version))))
12736 (file-name (git-file-name name version))
12737 (sha256
12738 (base32
12739 "1pdd7s403pi4y75s1sb4jkghhmm2w9zcqifj7z7yx4z0qfs7lvzv"))))
12740 (build-system ruby-build-system)
12741 (arguments
12742 (list
12743 #:phases
12744 #~(modify-phases %standard-phases
12745 (add-after 'unpack 'patch-Gemfile
12746 (lambda _
12747 (substitute* "Gemfile"
12748 (("gem \"rake-compiler\".*")
12749 "gem 'rake-compiler'\n"))))
12750 (add-after 'unpack 'disable-rubocop
12751 (lambda _
12752 (setenv "PUMA_NO_RUBOCOP" "1")))
12753 (add-after 'unpack 'use-rack-2
12754 (lambda _
12755 (setenv "PUMA_CI_RACK" "rack2")
12756 (setenv "PUMA_CI_RACK_2" "1")))
12757 (add-before 'build 'increase-resource-limits
12758 (lambda _
12759 ;; The test suite requires a higher number of open files. Try
12760 ;; increasing the soft resource limit of max open files to 2048,
12761 ;; or equal to the hard limit, whichever is lower.
12762 (call-with-values (lambda () (getrlimit 'nofile))
12763 (lambda (soft hard)
12764 (when (and soft (< soft 2048))
12765 (if hard
12766 (setrlimit 'nofile (min hard 2048) hard)
12767 (setrlimit 'nofile 2048 #f))
12768 (format
12769 #t "increased maximum number of open files from ~d to ~d~%"
12770 soft (if hard (min hard 2048) 2048)))))))
12771 (add-before 'build 'fix-gemspec
12772 (lambda _
12773 (substitute* "puma.gemspec"
12774 (("`git ls-files -- bin docs ext lib tools`")
12775 "`find bin docs ext lib tools -type f |sort`"))))
12776 (delete 'check) ;moved after install
12777 (add-after 'install 'check
12778 (lambda* (#:key tests? #:allow-other-keys)
12779 (when tests?
12780 (invoke "bundle" "exec" "rake" "test"))))
12781 (add-after 'install 'delete-mkmf.log
12782 (lambda _
12783 ;; Rubygems installs build log files that embed volatile file
12784 ;; names (see:
12785 ;; https://github.com/rubygems/rubygems/issues/6259).
12786 (for-each delete-file (find-files #$output "^mkmf\\.log$"))))
12787 (add-before 'check 'disable-problematic-tests
12788 (lambda _
12789 (let-syntax ((skip-tests
12790 (syntax-rules ()
12791 ((_ file test ...)
12792 (substitute* file
12793 (((string-append "def " test ".*") all)
12794 (string-append
12795 all " skip('fails on guix')\n")) ...)))))
12796 ;; The test failures were reported at:
12797 ;; https://github.com/puma/puma/issues/3093, but appear to be
12798 ;; caused by the Guix build container, perhaps the lack of
12799 ;; zombie process reaping (see:
12800 ;; https://issues.guix.gnu.org/30948).
12801 ;; All the tests in the 'test_worker_gem_independence.rb'
12802 ;; module fail with "Expected false to be truthy.".
12803 (delete-file "test/test_worker_gem_independence.rb")
12804 (skip-tests "test/test_integration_ssl_session.rb"
12805 ;; The TLS 1.2 test fails for unknown reasons.
12806 "test_off_tls1_2")
12807 (skip-tests "test/test_integration_cluster.rb"
12808 "test_fork_worker_on_refork"
12809 "test_hot_restart_does_not_drop_connections"
12810 "test_culling_strategy_oldest_fork_worker"
12811 "test_usr1_fork_worker")
12812 (skip-tests "test/test_integration_pumactl.rb"
12813 "test_refork_cluster")
12814 ;; The Openssl certificate has expired, causing these tests to fail.
12815 (skip-tests "test/test_puma_server_ssl.rb"
12816 "test_verify_fail_if_client_expired_cert"
12817 "test_verify_client_cert"
12818 "test_server_ssl_with_cert_pem_and_key_pem")
12819 (skip-tests "test/test_integration_ssl.rb"
12820 "test_ssl_run_with_curl_client")
12821 (skip-tests "test/test_web_concurrency_auto.rb" "\
12822test_web_concurrency_with_concurrent_ruby_unavailable")
12823 (skip-tests "test/helpers/integration.rb"
12824 "test_puma_started_log_writing"))))
12825 (add-before 'check 'relax-test-case-timeout
12826 (lambda _
12827 ;; The default value is 45 s and easily causes timeouts.
12828 (setenv "TEST_CASE_TIMEOUT" "600")))
12829 (add-before 'check 'set-home
12830 (lambda _
12831 ;; Some tests fail if the cannot write to HOME.
12832 (setenv "HOME" "/tmp")))
12833 (add-before 'check 'set-paths
12834 (lambda _
12835 ;; The test suite requires the 'puma' command to be on PATH.
12836 (setenv "PATH" (string-append (getenv "PATH") ":"
12837 #$output "/bin"))
12838 (setenv "GEM_PATH" (string-append
12839 (getenv "GEM_PATH") ":"
12840 #$output "/lib/ruby/vendor_ruby")))))))
12841 (native-inputs
12842 (list bundler
12843 curl
12844 ruby-json
12845 ruby-localhost
12846 ruby-m
12847 ruby-minitest-proveit
12848 ruby-minitest-retry
12849 ruby-minitest-stub-const
12850 ruby-rack
12851 ruby-rackup-1
12852 ruby-rake-compiler
12853 ruby-webrick))
12854 (inputs
12855 (list openssl
12856 ruby-nio4r))
12857 (propagated-inputs
12858 (list ruby-concurrent-ruby))
12859 (synopsis "Simple, concurrent HTTP server for Ruby/Rack")
12860 (description
12861 "Puma is a simple, fast, threaded, and highly concurrent HTTP 1.1 server
12862for Ruby/Rack applications. Puma is intended for use in both development and
12863production environments. In order to get the best throughput, it is highly
12864recommended that you use a Ruby implementation with real threads like Rubinius
12865or JRuby.")
12866 (home-page "https://puma.io/")
12867 (license license:expat)))
12868
12869(define-public ruby-hoe-git
12870 (package
12871 (name "ruby-hoe-git")
12872 (version "1.6.0")
12873 (source
12874 (origin
12875 (method url-fetch)
12876 (uri (rubygems-uri "hoe-git" version))
12877 (sha256
12878 (base32
12879 "10jmmbjm0lkglwxbn4rpqghgg1ipjxrswm117n50adhmy8yij650"))))
12880 (build-system ruby-build-system)
12881 (propagated-inputs
12882 (list ruby-hoe-3))
12883 (synopsis "Hoe plugins for tighter Git integration")
12884 (description
12885 "This package provides a set of Hoe plugins for tighter Git integration.
12886It provides tasks to automate release tagging and pushing and changelog
12887generation.")
12888 (home-page "https://github.com/jbarnette/hoe-git")
12889 (license license:expat)))
12890
12891(define-public ruby-hoe-markdown
12892 (package
12893 (name "ruby-hoe-markdown")
12894 (version "1.4.0")
12895 (home-page "https://github.com/flavorjones/hoe-markdown")
12896 (source
12897 (origin
12898 (method git-fetch)
12899 (uri (git-reference
12900 (url home-page)
12901 (commit (string-append "v" version))))
12902 (file-name (git-file-name name version))
12903 (sha256
12904 (base32 "0wb0yjdx9gx9r0cahpx42pblvglgh1i9pdfxjavq7f40nan2g076"))))
12905 (build-system ruby-build-system)
12906 (arguments
12907 '(#:test-target "spec"
12908 #:phases (modify-phases %standard-phases
12909 (add-before 'check 'disable-bundler-dependency
12910 (lambda _
12911 (substitute* "spec/spec_helper.rb"
12912 (("require.*bundler/setup.*")
12913 "")))))))
12914 (native-inputs
12915 (list ruby-rspec))
12916 (propagated-inputs
12917 (list ruby-rake))
12918 (synopsis "Hoe plugin with Markdown helpers")
12919 (description
12920 "This package provides a Hoe plugin with various Markdown helpers, which
12921can be used to e.g. hyperlink Markdown documentation between project files.")
12922 (license license:expat)))
12923
12924(define-public ruby-sequel
12925 (package
12926 (name "ruby-sequel")
12927 (version "5.47.0")
12928 (source
12929 (origin
12930 (method url-fetch)
12931 (uri (rubygems-uri "sequel" version))
12932 (sha256
12933 (base32
12934 "03pmhj4kc3ga75wy397l57bvd18jxxmrk3qsznjw93b993qgvj3z"))))
12935 (build-system ruby-build-system)
12936 (arguments
12937 '(#:tests? #f)) ; Avoid dependency loop with ruby-minitest-hooks.
12938 (synopsis "Database toolkit for Ruby")
12939 (description "Sequel provides thread safety, connection pooling and a
12940concise DSL for constructing SQL queries and table schemas. It includes a
12941comprehensive ORM layer for mapping records to Ruby objects and handling
12942associated records.")
12943 (home-page "https://sequel.jeremyevans.net")
12944 (license license:expat)))
12945
12946(define-public ruby-timecop
12947 (package
12948 (name "ruby-timecop")
12949 (version "0.9.6")
12950 (source
12951 (origin
12952 (method url-fetch)
12953 (uri (rubygems-uri "timecop" version))
12954 (sha256
12955 (base32
12956 "0dlx4gx0zh836i7nzna03xdl7fc233s5z6plnr6k3kw46ah8d1fc"))))
12957 (build-system ruby-build-system)
12958 (arguments
12959 (list
12960 #:phases
12961 #~(modify-phases %standard-phases
12962 (add-before 'check 'set-check-rubylib
12963 (lambda _
12964 ;; Set RUBYLIB so timecop tests finds its own lib.
12965 (setenv "RUBYLIB" "lib"))))))
12966 (native-inputs
12967 (list bundler
12968 ruby-minitest-rg
12969 ruby-mocha
12970 ruby-activesupport
12971 ruby-pry))
12972 (synopsis "Test mocks for time-dependent functions")
12973 (description
12974 "Timecop provides \"time travel\" and \"time freezing\" capabilities,
12975making it easier to test time-dependent code. It provides a unified method to
12976mock @code{Time.now}, @code{Date.today}, and @code{DateTime.now} in a single
12977call.")
12978 (home-page "https://github.com/travisjeffery/timecop")
12979 (license license:expat)))
12980
12981(define-public ruby-concurrent-ruby
12982 (package
12983 (name "ruby-concurrent-ruby")
12984 (version "1.3.5")
12985 (source (origin
12986 (method git-fetch)
12987 (uri (git-reference ;for tests
12988 (url "https://github.com/ruby-concurrency/concurrent-ruby")
12989 (commit (string-append "v" version))))
12990 (file-name (git-file-name name version))
12991 (sha256
12992 (base32
12993 "0f0apna8k9cwnpa4lddwimywxzznrd4rjv4m0lka2i54z49iky73"))))
12994 (build-system ruby-build-system)
12995 (arguments
12996 (list
12997 #:tests? #f ;the test suite is run in ruby-concurrent-ruby-edge
12998 #:phases #~(modify-phases %standard-phases
12999 (add-after 'unpack 'delete-unwanted-gemspecs
13000 (lambda _
13001 (for-each delete-file
13002 '("concurrent-ruby-ext.gemspec"
13003 "concurrent-ruby-edge.gemspec"))))
13004 (add-after 'unpack 'do-not-install-concurrent_ruby.jar
13005 (lambda _
13006 ;; This file is only built when building the Java
13007 ;; extension.
13008 (substitute* "concurrent-ruby.gemspec"
13009 (("'lib/concurrent-ruby/concurrent/concurrent_ruby.jar'")
13010 "")))))))
13011 (synopsis "Concurrency library for Ruby")
13012 (description "Concurrent Ruby includes concurrency tools such as agents,
13013futures, promises, thread pools, actors, supervisors, and more. It is
13014inspired by Erlang, Clojure, Go, JavaScript, actors, and classic concurrency
13015patterns.")
13016 (home-page "https://github.com/ruby-concurrency/concurrent-ruby")
13017 (license license:expat)))
13018
13019;;; The 'gem' is called 'concurrent-ruby'; reversing its name was confusing
13020;;; and failed to be picked by the gem importer (which led to this newer
13021;;; package).
13022(define-public ruby-concurrent
13023 (deprecated-package "ruby-concurrent" ruby-concurrent-ruby))
13024
13025(define-public ruby-concurrent-ruby-ext
13026 (package
13027 (inherit ruby-concurrent-ruby)
13028 (name "ruby-concurrent-ruby-ext")
13029 (arguments
13030 (list
13031 #:tests? #f ;tested as part of concurrent-ruby-edge
13032 #:phases
13033 #~(modify-phases %standard-phases
13034 (add-after 'unpack 'delete-unwanted-gemspecs
13035 (lambda _
13036 (for-each delete-file
13037 '("concurrent-ruby.gemspec"
13038 "concurrent-ruby-edge.gemspec")))))))
13039 (native-inputs (list ruby-rake-compiler))
13040 (propagated-inputs (list ruby-concurrent-ruby))
13041 (synopsis "C extensions for concurrent-ruby")
13042 (description "This package provides C extensions to optimize the
13043concurrent-ruby gem when running under the Matz's Ruby Interpreter (MRI, also
13044known as CRuby).")))
13045
13046(define-public ruby-concurrent-ruby-edge
13047 (package
13048 (inherit ruby-concurrent-ruby)
13049 (name "ruby-concurrent-ruby-edge")
13050 (arguments
13051 (list
13052 #:phases
13053 #~(modify-phases %standard-phases
13054 (add-after 'unpack 'delete-unwanted-gemspecs
13055 (lambda _
13056 (for-each delete-file
13057 '("concurrent-ruby.gemspec"
13058 "concurrent-ruby-ext.gemspec"))))
13059 ;; The tests rely on the Gem being installed, so move the check
13060 ;; phase after the install phase.
13061 (delete 'check)
13062 (add-after 'install 'check
13063 (lambda* (#:key tests? #:allow-other-keys)
13064 (setenv "GEM_PATH" (string-append
13065 (getenv "GEM_PATH") ":"
13066 #$output "/lib/ruby/vendor_ruby"))
13067 (when tests?
13068 (invoke "rake" "ci")))))))
13069 (native-inputs
13070 (list ruby-rake-compiler
13071 ruby-rake-compiler-dock
13072 ruby-rspec
13073 ruby-timecop
13074 ruby-yard))
13075 (propagated-inputs
13076 (list ruby-concurrent-ruby ruby-concurrent-ruby-ext))
13077 (synopsis "Edge features and additions to the @code{concurrent-ruby} gem")
13078 (description "The @code{concurrent-ruby-edge} gem includes
13079@code{concurrent-ruby} features that are under active development and may
13080change frequently. They are expected not to keep backward
13081compatibility (there may also lack tests and documentation), although semantic
13082versions are obeyed though. Features developed in @code{concurrent-ruby-edge}
13083are expected to move to @code{concurrent-ruby} when final.")))
13084
13085(define-public ruby-pkg-config
13086 (package
13087 (name "ruby-pkg-config")
13088 (version "1.2.5")
13089 (source
13090 (origin
13091 (method url-fetch)
13092 (uri (rubygems-uri "pkg-config" version))
13093 (sha256
13094 (base32
13095 "056mzqdh4yjznsg36fi0xiq76f24vxlhzh2n4az919l3x5k318ar"))))
13096 (build-system ruby-build-system)
13097 (arguments
13098 ;; Tests require extra files not included in the gem.
13099 `(#:tests? #f))
13100 (synopsis "Detect libraries for compiling Ruby native extensions")
13101 (description
13102 "@code{pkg-config} can be used in your extconf.rb to properly detect need
13103libraries for compiling Ruby native extensions.")
13104 (home-page "https://github.com/ruby-gnome2/pkg-config")
13105 (license license:lgpl2.0+)))
13106
13107(define-public ruby-net-http-digest-auth
13108 (package
13109 (name "ruby-net-http-digest-auth")
13110 (version "1.4.1")
13111 (source
13112 (origin
13113 (method url-fetch)
13114 (uri (rubygems-uri "net-http-digest_auth" version))
13115 (sha256
13116 (base32
13117 "1nq859b0gh2vjhvl1qh1zrk09pc7p54r9i6nnn6sb06iv07db2jb"))))
13118 (build-system ruby-build-system)
13119 (native-inputs
13120 (list ruby-hoe
13121 ruby-minitest))
13122 (synopsis "RFC 2617 HTTP digest authentication library")
13123 (description
13124 "This library implements HTTP's digest authentication scheme based on
13125RFC 2617. This enables the use of the digest authentication scheme instead
13126of the more insecure basic authentication scheme.")
13127 (home-page "https://github.com/drbrain/net-http-digest_auth")
13128 (license license:expat)))
13129
13130(define-public ruby-mail
13131 (package
13132 (name "ruby-mail")
13133 (version "2.8.1")
13134 (source
13135 (origin
13136 (method url-fetch)
13137 (uri (rubygems-uri "mail" version))
13138 (sha256
13139 (base32 "1bf9pysw1jfgynv692hhaycfxa8ckay1gjw5hz3madrbrynryfzc"))))
13140 (build-system ruby-build-system)
13141 (propagated-inputs
13142 (list ruby-mini-mime))
13143 (arguments
13144 '(#:tests? #f)) ; no rakefile
13145 (synopsis "Mail library for Ruby")
13146 (description
13147 "Mail is an internet library for Ruby that is designed to handle email
13148generation, parsing and sending. The purpose of this library is to provide
13149a single point of access to handle all email functions, including sending
13150and receiving emails. All network type actions are done through proxy
13151methods to @code{Net::SMTP}, @code{Net::POP3} etc.
13152
13153Mail has been designed with a very simple object oriented system that
13154really opens up the email messages you are parsing, if you know what you
13155are doing, you can fiddle with every last bit of your email directly.")
13156 (home-page "https://github.com/mikel/mail")
13157 (license license:expat)))
13158
13159(define-public ruby-net-protocol
13160 (package
13161 (name "ruby-net-protocol")
13162 (version "0.2.1")
13163 (source (origin
13164 (method git-fetch)
13165 (uri (git-reference
13166 (url "https://github.com/ruby/net-protocol")
13167 (commit (string-append "v" version))))
13168 (file-name (git-file-name name version))
13169 (sha256
13170 (base32
13171 "0niivmjx7bc6vsylc1ag17mw6mnvjxw02s7cin1f0422xyr8msq9"))))
13172 (build-system ruby-build-system)
13173 (propagated-inputs (list ruby-timeout))
13174 (synopsis "Abstract interface for Ruby network clients")
13175 (description "This Ruby library provides an abstract interface for network
13176clients.")
13177 (home-page "https://github.com/ruby/net-protocol")
13178 (license (list license:bsd-2))))
13179
13180(define-public ruby-email-reply-trimmer
13181 (package
13182 (name "ruby-email-reply-trimmer")
13183 (version "0.1.13")
13184 (source
13185 (origin
13186 (method url-fetch)
13187 (uri (rubygems-uri "email_reply_trimmer" version))
13188 (sha256
13189 (base32
13190 "1jgcxifm48xq5dz9k47q43pqm5bfnf14l62l3bqhmv8f6z8dw4ki"))))
13191 (build-system ruby-build-system)
13192 (synopsis "Trim replies from plain text email")
13193 (description "EmailReplyTrimmer is a Ruby small library to trim replies
13194from plain text email.")
13195 (home-page "https://github.com/discourse/email_reply_trimmer")
13196 (license license:expat)))
13197
13198(define-public ruby-mathn
13199 (package
13200 (name "ruby-mathn")
13201 (version "0.1.0")
13202 (source
13203 (origin
13204 (method url-fetch)
13205 (uri (rubygems-uri "mathn" version))
13206 (sha256
13207 (base32
13208 "1wn812llln9jzgybz2d7536q39z3gi99i6fi0j1dapcpzvhgrr0p"))))
13209 (build-system ruby-build-system)
13210 (native-inputs
13211 (list bundler ruby-rake-compiler))
13212 (synopsis "Extends math operations for increased precision")
13213 (description
13214 "This gem makes mathematical operations more precise in Ruby and
13215integrates other mathematical standard libraries. Prior to Ruby 2.5,
13216@code{mathn} was part of the Ruby standard library.")
13217 (home-page "https://github.com/ruby/mathn")
13218 (license license:bsd-2)))
13219
13220(define-public ruby-code-statistics
13221 (package
13222 (name "ruby-code-statistics")
13223 (version "0.2.13")
13224 (source
13225 (origin
13226 (method url-fetch)
13227 (uri (rubygems-uri "code_statistics" version))
13228 (sha256
13229 (base32
13230 "07rdpsbwbmh4vp8nxyh308cj7am2pbrfhv9v5xr2d5gq8hnnsm93"))))
13231 (build-system ruby-build-system)
13232 (arguments
13233 `(#:tests? #f)) ; Not all test code is included in gem.
13234 (synopsis "Port of the rails 'rake stats' method")
13235 (description
13236 "This gem is a port of the rails 'rake stats' method so it can be made
13237more robust and work for non rails projects.")
13238 (home-page "https://github.com/danmayer/code_statistics")
13239 (license license:expat)))
13240
13241(define-public ruby-ruby2-keywords
13242 (package
13243 (name "ruby-ruby2-keywords")
13244 (version "0.0.5")
13245 (source (origin
13246 (method git-fetch)
13247 (uri (git-reference
13248 (url "https://github.com/ruby/ruby2_keywords")
13249 (commit (string-append "v" version))))
13250 (file-name (git-file-name name version))
13251 (sha256
13252 (base32
13253 "1jhqb152zfr2yrxj6j8rzakkwdkg5viggwnnqrrfxwwy63msdi97"))))
13254 (build-system ruby-build-system)
13255 (arguments
13256 (list
13257 #:phases
13258 #~(modify-phases %standard-phases
13259 (add-after 'unpack 'delete-extraneous-rake-files
13260 (lambda _
13261 (for-each delete-file '("rakelib/changelogs.rake"
13262 "rakelib/epoch.rake"
13263 "rakelib/version.rake"))))
13264 (add-after 'extract-gemspec 'adjust-files
13265 (lambda _
13266 (substitute* "ruby2_keywords.gemspec"
13267 ;; This file is not present in the git checkout.
13268 ((".*\"ChangeLog\",.*") "")))))))
13269 (synopsis "Shim library for Module#ruby2_keywords")
13270 (description "Provides empty @code{Module#ruby2_keywords} method, for the
13271forward source-level compatibility against @command{ruby2.7} and
13272@command{ruby3}.")
13273 (home-page "https://github.com/ruby/ruby2_keywords")
13274 (license license:bsd-2)))
13275
13276(define-public ruby-rubypants
13277 (package
13278 (name "ruby-rubypants")
13279 (version "0.6.0")
13280 (source (origin
13281 (method url-fetch)
13282 (uri (rubygems-uri "rubypants" version))
13283 (sha256
13284 (base32
13285 "0xpqkslan2wkyal2h9qhplkr5d4sdn7q6csigrhnljjpp8j4qfsh"))))
13286 (build-system ruby-build-system)
13287 (arguments
13288 '(#:tests? #f)) ; need Codecov
13289 (synopsis "Port of the smart-quotes library SmartyPants")
13290 (description
13291 "RubyPants is a Ruby port of the smart-quotes library SmartyPants. The
13292original SmartyPants is a web publishing plug-in for Movable Type, Blosxom,
13293and BBEdit that easily translates plain ASCII punctuation characters into
13294smart typographic punctuation HTML entities.")
13295 (home-page "https://github.com/jmcnevin/rubypants")
13296 (license license:bsd-2)))
13297
13298(define-public ruby-org-ruby
13299 (package
13300 (name "ruby-org-ruby")
13301 (version "0.9.12")
13302 (source (origin
13303 (method url-fetch)
13304 (uri (rubygems-uri "org-ruby" version))
13305 (sha256
13306 (base32
13307 "0x69s7aysfiwlcpd9hkvksfyld34d8kxr62adb59vjvh8hxfrjwk"))))
13308 (build-system ruby-build-system)
13309 (arguments
13310 '(#:tests? #f)) ; no rakefile
13311 (propagated-inputs
13312 (list ruby-rubypants))
13313 (synopsis "Org-mode parser written in Ruby")
13314 (description
13315 "Org-ruby is an org-mode parser written in Ruby. The most significant
13316thing this library does today is convert org-mode files to HTML or Textile or
13317Markdown.")
13318 (home-page "https://github.com/wallyqs/org-ruby")
13319 (license license:expat)))
13320
13321(define-public ruby-rake
13322 (package
13323 (name "ruby-rake")
13324 (version "13.0.6")
13325 (source
13326 (origin
13327 (method git-fetch) ;for tests
13328 (uri (git-reference
13329 (url "https://github.com/ruby/rake")
13330 (commit (string-append "v" version))))
13331 (file-name (git-file-name name version))
13332 (sha256
13333 (base32
13334 "0c77xyl677s966f8yvk8yv7l31c1ffa1yl4kcwiram219h0s76in"))))
13335 (build-system ruby-build-system)
13336 (native-inputs
13337 (list bundler))
13338 (synopsis "Rake is a Make-like program implemented in Ruby")
13339 (description
13340 "Rake is a Make-like program where tasks and dependencies are specified
13341in standard Ruby syntax.")
13342 (home-page "https://github.com/ruby/rake")
13343 (license license:expat)))
13344
13345(define-public ruby-rake-manifest
13346 (package
13347 (name "ruby-rake-manifest")
13348 (version "0.2.3")
13349 (source (origin
13350 (method git-fetch)
13351 (uri (git-reference
13352 (url "https://github.com/mvz/rake-manifest")
13353 (commit (string-append "v" version))))
13354 (file-name (git-file-name name version))
13355 (sha256
13356 (base32
13357 "16k2yvg773c25kp2vhzhp01rhf53k0nhrcmpv34k1fridw90r2k8"))))
13358 (build-system ruby-build-system)
13359 (arguments
13360 (list
13361 #:test-target "default"
13362 #:phases
13363 #~(modify-phases %standard-phases
13364 (delete 'check) ;moved after the install phase
13365 (add-after 'install 'check
13366 (assoc-ref %standard-phases 'check))
13367 (add-before 'check 'set-GEM_PATH
13368 (lambda _
13369 (setenv "GEM_PATH" (string-append
13370 (getenv "GEM_PATH") ":"
13371 #$output "/lib/ruby/vendor_ruby")))))))
13372 (native-inputs (list ruby-rspec ruby-simplecov))
13373 (synopsis "Rake tasks to generate and check a manifest file")
13374 (description "This package provides Rake tasks to generate and check a
13375manifest file.")
13376 (home-page "https://github.com/mvz/rake-manifest")
13377 (license license:expat)))
13378
13379(define-public ruby-sfl
13380 (package
13381 (name "ruby-sfl")
13382 (version "2.3")
13383 (source (origin
13384 (method url-fetch)
13385 (uri (rubygems-uri "sfl" version))
13386 (sha256
13387 (base32
13388 "1qm4hvhq9pszi9zs1cl9qgwx1n4wxq0af0hq9sbf6qihqd8rwwwr"))))
13389 (build-system ruby-build-system)
13390 (arguments
13391 `(#:tests? #f ;; some tests fail, gem is a dummy for ruby >= 1.9 anyway
13392 #:test-target "spec"))
13393 (synopsis "Spawn for Ruby 1.8")
13394 (description "This pure ruby library provides @code{spawn()} which is
13395almost perfectly compatible with ruby 1.9's.")
13396 (home-page "https://github.com/ujihisa/spawn-for-legacy")
13397 (license license:bsd-2)))
13398
13399(define-public ruby-childprocess
13400 (package
13401 (name "ruby-childprocess")
13402 (version "4.1.0")
13403 (source
13404 (origin
13405 (method url-fetch)
13406 (uri (rubygems-uri "childprocess" version))
13407 (sha256
13408 (base32
13409 "1lvcp8bsd35g57f7wz4jigcw2sryzzwrpcgjwwf3chmjrjcww5in"))))
13410 (build-system ruby-build-system)
13411 (arguments
13412 `(#:tests? #f ;; one failing test, even with fixes below
13413 #:test-target "spec"
13414 #:phases
13415 (modify-phases %standard-phases
13416 (add-after 'unpack 'patch
13417 (lambda _
13418 (substitute* "spec/spec_helper.rb"
13419 (("#!/bin/sh\\\\n") (string-append "#!" (which "sh") "\\n"))))))))
13420 (native-inputs
13421 (list ruby-coveralls ruby-rspec))
13422 (synopsis "Control external programs running in the background, in Ruby")
13423 (description "@code{childprocess} provides a gem to control external
13424programs running in the background, in Ruby.")
13425 (home-page "https://github.com/enkessler/childprocess")
13426 (license license:expat)))
13427
13428(define-public ruby-public-suffix
13429 (package
13430 (name "ruby-public-suffix")
13431 (version "4.0.5")
13432 (source (origin
13433 (method url-fetch)
13434 (uri (rubygems-uri "public_suffix" version))
13435 (sha256
13436 (base32
13437 "0vywld400fzi17cszwrchrzcqys4qm6sshbv73wy5mwcixmrgg7g"))))
13438 (build-system ruby-build-system)
13439 (arguments
13440 '(#:phases
13441 (modify-phases %standard-phases
13442 ;; Remove the requirement on Rubocop, as it isn't useful to run, and
13443 ;; including it as an input can lead to circular dependencies.
13444 (add-after 'unpack 'remove-rubocop-from-Rakefile
13445 (lambda _
13446 (substitute* "Rakefile"
13447 (("require \"rubocop/rake\\_task\"") "")
13448 (("RuboCop::RakeTask\\.new") "")))))))
13449 (native-inputs
13450 (list bundler ruby-yard/minimal ruby-mocha ruby-minitest-reporters))
13451 (home-page "https://simonecarletti.com/code/publicsuffix-ruby/")
13452 (synopsis "Domain name parser")
13453 (description "The gem @code{public_suffix} is a domain name parser,
13454written in Ruby, and based on the @dfn{Public Suffix List}. A public suffix
13455is one under which Internet users can (or historically could) directly
13456register names. Some examples of public suffixes are @code{.com},
13457@code{.co.uk} and @code{pvt.k12.ma.us}. The Public Suffix List is a list of
13458all known public suffixes.")
13459 (license license:expat)))
13460
13461(define-public ruby-addressable
13462 (package
13463 (name "ruby-addressable")
13464 (version "2.8.1")
13465 (source (origin
13466 (method url-fetch)
13467 (uri (rubygems-uri "addressable" version))
13468 (sha256
13469 (base32
13470 "1ypdmpdn20hxp5vwxz3zc04r5xcwqc25qszdlg41h8ghdqbllwmw"))))
13471 (build-system ruby-build-system)
13472 (arguments
13473 '(#:test-target "spec"
13474 #:phases
13475 (modify-phases %standard-phases
13476 (add-after 'unpack 'disable-bundler
13477 (lambda _
13478 (substitute* "spec/spec_helper.rb"
13479 (("require 'bundler/setup'") ""))))
13480 (add-after 'unpack 'remove-unnecessary-dependencies-from-Gemfile
13481 (lambda _
13482 (substitute* "Gemfile"
13483 (("git: 'https://github.com/sporkmonger/rack-mount.git',") "")
13484 ((".*launchy.*") "")
13485 ((".*rake.*") "gem 'rake'\n")
13486 ((".*redcarpet.*") ""))))
13487 (add-before 'check 'delete-network-dependent-test
13488 (lambda _
13489 (delete-file "spec/addressable/net_http_compat_spec.rb"))))))
13490 (native-inputs
13491 (list bundler
13492 ruby-idn-ruby
13493 ruby-rspec
13494 ruby-rspec-its-minimal
13495 ruby-simplecov
13496 ruby-sporkmonger-rack-mount
13497 ruby-yard/minimal))
13498 (propagated-inputs
13499 (list ruby-public-suffix))
13500 (home-page "https://github.com/sporkmonger/addressable")
13501 (synopsis "Alternative URI implementation")
13502 (description "Addressable is a replacement for the URI implementation that
13503is part of Ruby's standard library. It more closely conforms to RFC 3986,
13504RFC 3987, and RFC 6570 (level 4), providing support for IRIs and URI templates.")
13505 (license license:asl2.0)))
13506
13507(define-public ruby-colorize
13508 (package
13509 (name "ruby-colorize")
13510 (version "0.8.1")
13511 (source (origin
13512 (method url-fetch)
13513 (uri (rubygems-uri "colorize" version))
13514 (sha256
13515 (base32
13516 "133rqj85n400qk6g3dhf2bmfws34mak1wqihvh3bgy9jhajw580b"))))
13517 (build-system ruby-build-system)
13518 (arguments
13519 '(#:phases (modify-phases %standard-phases
13520 (add-before 'check 'remove-codeclimate-dependency
13521 (lambda _
13522 (substitute* "test/test_colorize.rb"
13523 ;; Do not hook the tests into the online CodeClimate
13524 ;; service which is unnecessary for these tests.
13525 (("require 'codeclimate-test-reporter'")
13526 "")
13527 (("CodeClimate.*") "")))))))
13528 (synopsis "Add color effects to the @code{String} class")
13529 (description
13530 "This package extends the @code{String} class and adds a
13531@code{ColorizedString} with methods to set text color, background color,
13532and text effects.")
13533 (home-page "https://github.com/fazibear/colorize")
13534 (license license:gpl2+)))
13535
13536(define-public ruby-colorator
13537 (package
13538 (name "ruby-colorator")
13539 (version "1.1.0")
13540 (source (origin
13541 (method url-fetch)
13542 (uri (rubygems-uri "colorator" version))
13543 (sha256
13544 (base32
13545 "0f7wvpam948cglrciyqd798gdc6z3cfijciavd0dfixgaypmvy72"))))
13546 (build-system ruby-build-system)
13547 (arguments
13548 ;; No test target
13549 `(#:tests? #f))
13550 (home-page "http://octopress.org/colorator/")
13551 (synopsis "Terminal color library")
13552 (description "Colorator is a Ruby gem that helps you colorize your text
13553for the terminal.")
13554 (license license:expat)))
13555
13556(define-public ruby-command-line-reporter
13557 (package
13558 (name "ruby-command-line-reporter")
13559 (version "4.0.1")
13560 (source (origin
13561 (method url-fetch)
13562 (uri (rubygems-uri "command_line_reporter" version))
13563 (sha256
13564 (base32
13565 "1l0zxkh5n9dxfw46lpkg416ljpldlq1bgdhqh0d118dk338nz4ll"))))
13566 (build-system ruby-build-system)
13567 (arguments
13568 ;; No Rakefile
13569 `(#:tests? #f
13570 #:phases
13571 (modify-phases %standard-phases
13572 (add-before 'build 'fix-dependencies
13573 (lambda _
13574 (substitute* ".gemspec"
13575 ;; colored is unmaintained
13576 (("colored") "colorator")
13577 ;; colorator version
13578 (("= 1.2") "= 1.1")))))))
13579 (propagated-inputs (list ruby-colorator))
13580 (home-page "https://github.com/wbailey/command_line_reporter")
13581 (synopsis "Report production while executing Ruby scripts")
13582 (description "This gem provides a DSL that makes it easy to write reports
13583of various types in ruby. It eliminates the need to litter your source with
13584puts statements, instead providing a more readable, expressive interface to
13585your application.")
13586 (license license:asl2.0)))
13587
13588(define-public ruby-command-line-reporter-3
13589 (package
13590 (inherit ruby-command-line-reporter)
13591 (version "3.3.6")
13592 (source (origin
13593 (method url-fetch)
13594 (uri (rubygems-uri "command_line_reporter" version))
13595 (sha256
13596 (base32
13597 "1h39zqqxp3k4qk49ajpx0jps1vmvxgkh43mqkb6znk583bl0fv71"))))))
13598
13599(define-public ruby-kpeg
13600 (package
13601 (name "ruby-kpeg")
13602 (version "1.3.3")
13603 (source
13604 (origin
13605 (method url-fetch)
13606 (uri (rubygems-uri "kpeg" version))
13607 (sha256
13608 (base32
13609 "0jxddpyb23digcd8b1b02gn94057a7mw17680c3c8s3bcb5xqfnp"))))
13610 (build-system ruby-build-system)
13611 (native-inputs
13612 (list ruby-hoe))
13613 (synopsis "PEG library for Ruby")
13614 (description "KPeg is a simple PEG library for Ruby. It provides an API as
13615well as native grammar to build the grammar. KPeg supports direct left
13616recursion of rules via the
13617@uref{http://www.vpri.org/pdf/tr2008003_experimenting.pdf,OMeta memoization}
13618technique.")
13619 (home-page "https://github.com/evanphx/kpeg")
13620 (license license:expat)))
13621
13622(define-public ruby-rdoc
13623 (package
13624 (name "ruby-rdoc")
13625 (version "6.7.0")
13626 (source
13627 (origin
13628 (method git-fetch)
13629 (uri (git-reference
13630 (url "https://github.com/ruby/rdoc")
13631 (commit (string-append "v" version))))
13632 (file-name (git-file-name name version))
13633 (sha256
13634 (base32
13635 "0dy997zi7k17c2yjlq1y7zl9yaiym1f4jgfh84qqzhwl1qm6v41j"))))
13636 (build-system ruby-build-system)
13637 (arguments
13638 `(#:phases
13639 (modify-phases %standard-phases
13640 (add-before 'build 'generate
13641 ;; 'gem build' doesn't honor Rakefile dependencies (see:
13642 ;; https://github.com/ruby/rdoc/issues/432#issuecomment-650808977).
13643 (lambda _
13644 (invoke "rake" "generate"))))))
13645 (native-inputs (list bundler ruby-kpeg ruby-racc ruby-rubocop
13646 ruby-test-unit-ruby-core))
13647 (home-page "https://ruby.github.io/rdoc/")
13648 (synopsis "HTML and command-line documentation utility")
13649 (description "RDoc produces HTML and command-line documentation for Ruby
13650projects. RDoc includes the +rdoc+ and +ri+ tools for generating and displaying
13651documentation from the command-line.")
13652 (license license:gpl2+)))
13653
13654(define-public ruby-sass-listen
13655 (package
13656 (name "ruby-sass-listen")
13657 (version "4.0.0")
13658 (source (origin
13659 (method url-fetch)
13660 (uri (rubygems-uri "sass-listen" version))
13661 (sha256
13662 (base32
13663 "0xw3q46cmahkgyldid5hwyiwacp590zj2vmswlll68ryvmvcp7df"))))
13664 (build-system ruby-build-system)
13665 (arguments
13666 ;; No test target
13667 `(#:tests? #f))
13668 (propagated-inputs
13669 (list ruby-rb-fsevent ruby-rb-inotify))
13670 (home-page "https://github.com/sass/listen")
13671 (synopsis "File modification notification library")
13672 (description "The Listen gem listens to file modifications and notifies you
13673about the changes.")
13674 (license license:expat)))
13675
13676(define-public ruby-terminfo
13677 (let ((commit "f4a597d92dcc465e7b343f9afb8cd45607c8e969")
13678 (revision "0"))
13679 (package
13680 (name "ruby-terminfo")
13681 (version (git-version "0.2" revision commit))
13682 (source
13683 (origin
13684 (method git-fetch)
13685 (uri
13686 (git-reference
13687 (url "https://github.com/genki/ruby-terminfo")
13688 (commit commit)))
13689 (file-name (git-file-name name version))
13690 (sha256
13691 (base32 "0b24sqf0jwj8m106nh35hjayw1kiyrpramb6vg7fnz32mqni6hdi"))))
13692 (build-system ruby-build-system)
13693 (arguments
13694 (list
13695 #:phases
13696 #~(modify-phases %standard-phases
13697 (delete 'replace-git-ls-files)
13698 (replace 'build
13699 (lambda _
13700 (invoke "ruby" "extconf.rb")
13701 (invoke "make")))
13702 (replace 'check
13703 (lambda* (#:key tests? #:allow-other-keys)
13704 (when tests?
13705 (for-each (lambda (f)
13706 (invoke "ruby" "-Ilib:test" "-Ilib:." f))
13707 (find-files "test" "^test_.*\\.rb$")))))
13708 (replace 'install
13709 (lambda _
13710 (invoke "make" "install" (string-append "prefix=" #$output)))))))
13711 (inputs
13712 (list ncurses))
13713 (native-inputs
13714 (list ruby-rubygems-tasks ruby-rdoc))
13715 (home-page "http://www.a-k-r.org/ruby-terminfo/")
13716 (synopsis "Terminfo binding for Ruby")
13717 (description "Ruby-terminfo provides terminfo binding for Ruby.")
13718 (license license:bsd-3))))
13719
13720(define-public ruby-diffy
13721 (package
13722 (name "ruby-diffy")
13723 (version "3.2.1")
13724 (source
13725 (origin
13726 (method url-fetch)
13727 (uri (rubygems-uri "diffy" version))
13728 (sha256
13729 (base32
13730 "119imrkn01agwhx5raxhknsi331y5i4yda7r0ws0an6905ximzjg"))))
13731 (build-system ruby-build-system)
13732 (arguments
13733 ;; No tests
13734 `(#:tests? #f))
13735 (native-inputs
13736 (list ruby-rspec))
13737 (home-page "https://github.com/samg/diffy")
13738 (synopsis "Convenient diffing in ruby")
13739 (description "Diffy provides a convenient way to generate a diff from two
13740strings or files.")
13741 (license license:expat)))
13742
13743(define-public ruby-sass-spec
13744 (package
13745 (name "ruby-sass-spec")
13746 (version "3.5.4")
13747 (source
13748 (origin
13749 (method git-fetch)
13750 (uri (git-reference
13751 (url "https://github.com/sass/sass-spec")
13752 (commit (string-append "v" version))))
13753 (file-name (git-file-name name version))
13754 (sha256
13755 (base32 "1zsw66830w0xlc7kxz6fm4b5nyb44vdsdgm9mgy06s5aixx83pwr"))))
13756 (build-system ruby-build-system)
13757 (propagated-inputs
13758 (list ruby-command-line-reporter-3
13759 ruby-diffy))
13760 (arguments
13761 (list
13762 ;; This package contains tests for a sass implementation, and the to
13763 ;; avoid any circular dependencies, the tests are not run here
13764 #:tests? #f
13765 #:phases
13766 #~(modify-phases %standard-phases
13767 (add-after 'unpack 'patch-test
13768 (lambda _
13769 (delete-file "spec/values/colors/alpha_hex-3.5/error")
13770 (substitute* "spec/values/colors/alpha_hex-3.5/expected_output.css"
13771 (("string") "color")))))))
13772 (home-page "https://github.com/sass/sass-spec")
13773 (synopsis "Test suite for Sass")
13774 (description "Sass Spec is a test suite for Sass. Test cases are all in
13775the @file{spec} directory.")
13776 (license license:expat)))
13777
13778(define-public ruby-sass
13779 (package
13780 (name "ruby-sass")
13781 (version "3.7.4")
13782 (source
13783 (origin
13784 (method git-fetch)
13785 (uri (git-reference
13786 (url "https://github.com/sass/ruby-sass")
13787 (commit version)))
13788 (file-name (git-file-name name version))
13789 (sha256
13790 (base32 "03215h9jkni3l9w6lq28p8adaj3qzb47qgxd20l6kldjnm1a1yky"))))
13791 (build-system ruby-build-system)
13792 (arguments
13793 (list #:test-target "test:ruby"))
13794 (propagated-inputs
13795 (list ruby-sass-listen))
13796 (native-inputs
13797 (list ruby-sass-spec ruby-mathn ruby-cmath))
13798 (home-page "https://sass-lang.com/")
13799 (synopsis "CSS extension language")
13800 (description "Sass is a CSS extension language. It extends CSS with
13801features that don't exist yet like variables, nesting, mixins and inheritance.")
13802 (license license:expat)))
13803
13804(define-public ruby-sassc
13805 (package
13806 (name "ruby-sassc")
13807 (version "2.4.0")
13808 (source
13809 (origin
13810 (method url-fetch)
13811 (uri (rubygems-uri "sassc" version))
13812 (sha256
13813 (base32
13814 "0gpqv48xhl8mb8qqhcifcp0pixn206a7imc07g48armklfqa4q2c"))))
13815 (build-system ruby-build-system)
13816 (arguments
13817 '(#:modules ((guix build ruby-build-system)
13818 (guix build utils)
13819 (ice-9 textual-ports))
13820 #:phases
13821 (modify-phases %standard-phases
13822 ;; TODO: This would be better as a snippet, but the ruby-build-system
13823 ;; doesn't seem to support that
13824 (add-after 'unpack 'remove-libsass
13825 (lambda _
13826 (delete-file-recursively "ext")
13827 (with-atomic-file-replacement "sassc.gemspec"
13828 (lambda (in out)
13829 (let* ((gemspec (get-string-all in))
13830 (index (string-contains gemspec "libsass_dir")))
13831 (display (string-append
13832 (string-take gemspec index)
13833 "\nend\n")
13834 out))))))
13835 (add-after 'unpack 'dont-check-the-libsass-version
13836 (lambda _
13837 (substitute* "test/native_test.rb"
13838 (("assert_equal.*Native\\.version") ""))))
13839 (add-after 'unpack 'remove-git-from-gemspec
13840 (lambda _
13841 (substitute* "sassc.gemspec"
13842 (("`git ls-files -z`") "`find . -type f -print0 |sort -z`"))))
13843 (add-after 'unpack 'remove-extensions-from-gemspec
13844 (lambda _
13845 (substitute* "sassc.gemspec"
13846 (("\\[\"ext/extconf.rb\"\\]") "[]"))))
13847 (add-after 'unpack 'fix-Rakefile
13848 (lambda _
13849 (substitute* "Rakefile"
13850 (("test: 'compile:libsass'") ":test"))))
13851 (add-after 'unpack 'remove-unnecessary-dependencies
13852 (lambda _
13853 (substitute* "test/test_helper.rb"
13854 (("require \"pry\"") ""))))
13855 (add-before 'build 'patch-native.rb
13856 (lambda* (#:key inputs #:allow-other-keys)
13857 (substitute* "lib/sassc/native.rb"
13858 ((".*gem_root = spec.gem_dir") "")
13859 (("ffi_lib .*\n")
13860 (string-append
13861 "ffi_lib '" (assoc-ref inputs "libsass") "/lib/libsass.so'")))))
13862 ;; The gemspec still references the libsass files, so just keep the
13863 ;; one in the gem.
13864 (delete 'extract-gemspec))))
13865 (propagated-inputs
13866 (list ruby-ffi ruby-rake))
13867 (inputs
13868 (list libsass))
13869 (native-inputs
13870 (list bundler ruby-rake-compiler ruby-minitest-around
13871 ruby-test-construct))
13872 (synopsis "Use libsss from Ruby")
13873 (description
13874 "This library provides Ruby q@acronym{FFI, Foreign Function Interface}
13875bindings to the libsass library. This enables rendering
13876@acronym{SASS,Syntactically awesome style sheets} from Ruby code.")
13877 (home-page "https://github.com/sass/sassc-ruby")
13878 (license license:expat)))
13879
13880(define-public ruby-jekyll-sass-converter
13881 (package
13882 (name "ruby-jekyll-sass-converter")
13883 (version "2.1.0")
13884 (source (origin
13885 (method url-fetch)
13886 (uri (rubygems-uri "jekyll-sass-converter" version))
13887 (sha256
13888 (base32
13889 "04ncr44wrilz26ayqwlg7379yjnkb29mvx4j04i62b7czmdrc9dv"))))
13890 (build-system ruby-build-system)
13891 (propagated-inputs
13892 (list ruby-sass))
13893 (arguments
13894 ;; No rakefile
13895 `(#:tests? #f))
13896 (home-page "https://github.com/jekyll/jekyll-sass-converter")
13897 (synopsis "Sass converter for Jekyll")
13898 (description "This gem provide built-in support for the Sass converter
13899in Jekyll.")
13900 (license license:expat)))
13901
13902(define-public ruby-jekyll-watch
13903 (package
13904 (name "ruby-jekyll-watch")
13905 (version "2.1.2")
13906 (source (origin
13907 (method url-fetch)
13908 (uri (rubygems-uri "jekyll-watch" version))
13909 (sha256
13910 (base32
13911 "1s9ly83sp8albvgdff12xy2h4xd8lm6z2fah4lzmk2yvp85jzdzv"))))
13912 (build-system ruby-build-system)
13913 (propagated-inputs
13914 (list ruby-listen))
13915 (arguments
13916 ;; No rakefile
13917 `(#:tests? #f))
13918 (home-page "https://github.com/jekyll/jekyll-watch")
13919 (synopsis "Jekyll auto-rebuild support")
13920 (description "This gems add the @code{--watch} switch to the jekyll CLI
13921interface. It allows Jekyll to rebuild your site when a file changes.")
13922 (license license:expat)))
13923
13924(define-public ruby-parallel
13925 (package
13926 (name "ruby-parallel")
13927 (version "1.21.0")
13928 (source
13929 (origin
13930 (method git-fetch)
13931 (uri (git-reference
13932 (url "https://github.com/grosser/parallel")
13933 (commit (string-append "v" version))))
13934 (file-name (git-file-name name version))
13935 (sha256
13936 (base32
13937 "1xqjcvl3gq3shvrqp8wc3fbqibzh4mf1yczq6np9gd79558dwj3w"))))
13938 (build-system ruby-build-system)
13939 (arguments
13940 `(;; TODO 3 test failures
13941 ;; rspec ./spec/parallel_spec.rb:190 # Parallel.in_processes does not
13942 ;; open unnecessary pipes
13943 ;; rspec './spec/parallel_spec.rb[1:9:7]' # Parallel.each works with
13944 ;; SQLite in processes
13945 ;; rspec './spec/parallel_spec.rb[1:9:16]' # Parallel.each works with
13946 ;; SQLite in threads
13947 #:tests? #f
13948 #:test-target "rspec-rerun:spec"
13949 #:phases
13950 (modify-phases %standard-phases
13951 (add-after 'unpack 'patch-Gemfile
13952 (lambda _
13953 (substitute* "Gemfile"
13954 (("gem 'rspec-legacy_formatters'") "")
13955 (("gem 'activerecord.*$") "gem 'activerecord'\n"))))
13956 (add-before 'check 'delete-Gemfile.lock
13957 (lambda _
13958 ;; Bundler isn't being used for fetching dependencies, so
13959 ;; delete the Gemfile.lock
13960 (delete-file "Gemfile.lock")))
13961 (add-before 'build 'patch-gemspec
13962 (lambda _
13963 (substitute* "parallel.gemspec"
13964 (("git ls-files") "find")))))))
13965 (native-inputs
13966 (list ruby-rspec
13967 ruby-rspec-rerun
13968 bundler
13969 ruby-activerecord
13970 ruby-progressbar
13971 ruby-bump
13972 procps
13973 lsof
13974 ruby-mysql2
13975 ruby-sqlite3
13976 ruby-i18n))
13977 (home-page "https://github.com/grosser/parallel")
13978 (synopsis "Parallel processing in Ruby")
13979 (description "Parallel allows you to run any code in parallel Processes
13980(to use all CPUs) or Threads(to speedup blocking operations). It is best
13981suited for map-reduce or e.g. parallel downloads/uploads.")
13982 (license license:expat)))
13983
13984(define-public ruby-cabin
13985 (package
13986 (name "ruby-cabin")
13987 (version "0.9.0")
13988 (source (origin
13989 (method url-fetch)
13990 (uri (rubygems-uri "cabin" version))
13991 (sha256
13992 (base32
13993 "0b3b8j3iqnagjfn1261b9ncaac9g44zrx1kcg81yg4z9i513kici"))))
13994 (build-system ruby-build-system)
13995 (arguments (list #:tests? #f)) ;no Rakefile in released gem
13996 (synopsis "Structured and contextual logging experiments in Ruby")
13997 (description "This Ruby library provides an experimental logging system
13998that tries to make logging more flexible and more consumable than plain-text
13999logging.")
14000 (home-page "https://github.com/jordansissel/ruby-cabin")
14001 (license license:asl2.0)))
14002
14003(define-public ruby-capybara
14004 (package
14005 (name "ruby-capybara")
14006 (version "3.38.0")
14007 (source (origin
14008 (method url-fetch)
14009 (uri (rubygems-uri "capybara" version))
14010 (sha256
14011 (base32
14012 "123198zk2ak8mziwa5jc3ckgpmsg08zn064n3aywnqm9s1bwjv3v"))))
14013 (build-system ruby-build-system)
14014 (arguments
14015 (list #:tests? #f ;sinatra is currently broken with rack 3
14016 #:phases
14017 #~(modify-phases %standard-phases
14018 (add-after 'extract-gemspec 'remove-extraneous-requirements
14019 (lambda _
14020 (substitute* "spec/spec_helper.rb"
14021 ((".*require 'selenium_statistics'.*") "")
14022 ((".*SeleniumStatistics.print_results.*") ""))))
14023 (replace 'check
14024 (lambda* (#:key tests? #:allow-other-keys)
14025 (when tests?
14026 (invoke "rspec" "spec")))))))
14027 (native-inputs
14028 (list ruby-puma
14029 ruby-rspec
14030 ruby-selenium-webdriver
14031 ruby-sinatra))
14032 (propagated-inputs
14033 (list ruby-addressable
14034 ruby-launchy
14035 ruby-matrix
14036 ruby-mini-mime
14037 ruby-nokogiri
14038 ruby-rack
14039 ruby-rack-test
14040 ruby-regexp-parser
14041 ruby-xpath))
14042 (synopsis "Integration testing tool for rack-based web applications")
14043 (description "Capybara is an integration testing tool for rack based web
14044applications. It simulates how a user would interact with a website.")
14045 (home-page "https://github.com/teamcapybara/capybara")
14046 (license license:expat)))
14047
14048(define-public ruby-cane
14049 (package
14050 (name "ruby-cane")
14051 (version "3.0.0")
14052 (source (origin
14053 (method url-fetch)
14054 (uri (rubygems-uri "cane" version))
14055 (sha256
14056 (base32
14057 "0yf5za3l7lhrqa3g56sah73wh33lbxy5y3cb7ij0a2bp1b4kwhih"))))
14058 (build-system ruby-build-system)
14059 (arguments `(#:tests? #f)); No rakefile
14060 (home-page "https://github.com/square/cane")
14061 (propagated-inputs
14062 (list ruby-parallel))
14063 (synopsis "Code quality threshold checking")
14064 (description "Cane fails your build if code quality thresholds are not met.")
14065 (license license:asl2.0)))
14066
14067(define-public ruby-morecane
14068 (package
14069 (name "ruby-morecane")
14070 (version "0.2.0")
14071 (source (origin
14072 (method url-fetch)
14073 (uri (rubygems-uri "morecane" version))
14074 (sha256
14075 (base32
14076 "0w70vb8z5bdhvr21h660aa43m5948pv0bd27z7ngai2iwdvqd771"))))
14077 (build-system ruby-build-system)
14078 (home-page "https://github.com/yob/morecane")
14079 (arguments `(#:tests? #f)); No rakefile
14080 (propagated-inputs
14081 (list ruby-parallel))
14082 (synopsis "Extra checks for cane")
14083 (description "The cane gem provides a great framework for running quality
14084checks over your ruby project as part of continuous integration build. It
14085comes with a few checks out of the box, but also provides an API for loading
14086custom checks. This gem provides a set of additional checks.")
14087 (license license:expat)))
14088
14089(define-public ruby-pdf-reader
14090 (package
14091 (name "ruby-pdf-reader")
14092 (version "2.4.0")
14093 (source (origin
14094 (method git-fetch) ;no test in distributed gem archive
14095 (uri (git-reference
14096 (url "https://github.com/yob/pdf-reader")
14097 (commit (string-append "v" version))))
14098 (file-name (git-file-name name version))
14099 (sha256
14100 (base32
14101 "1yh8yrlssf5ppnkvk4m78vmh5r5vqwdcd0gm3lqipw162llz0rai"))))
14102 (build-system ruby-build-system)
14103 (arguments `(#:test-target "spec"
14104 #:phases (modify-phases %standard-phases
14105 (add-after 'unpack 'do-not-use-bundler
14106 (lambda _
14107 (substitute* "spec/spec_helper.rb"
14108 ((".*[Bb]undler.*") "")))))))
14109 (native-inputs
14110 (list ruby-rspec ruby-cane ruby-morecane))
14111 (propagated-inputs
14112 (list ruby-afm ruby-ascii85 ruby-hashery ruby-rc4 ruby-ttfunk))
14113 (home-page "https://github.com/yob/pdf-reader")
14114 (synopsis "PDF parser in Ruby")
14115 (description "The PDF::Reader library implements a PDF parser conforming as
14116much as possible to the PDF specification from Adobe. It provides programmatic
14117access to the contents of a PDF file with a high degree of flexibility.")
14118 (license license:gpl3+)))
14119
14120(define-public ruby-pdf-inspector
14121 (let ((revision "1")
14122 (commit "00ee4c92ff917118785ebec188e81effc968abeb"))
14123 (package
14124 (name "ruby-pdf-inspector")
14125 (version (git-version "1.3.0" revision commit))
14126 (source (origin
14127 (method git-fetch)
14128 (uri (git-reference
14129 (url "https://github.com/prawnpdf/pdf-inspector")
14130 (commit commit)))
14131 (file-name (git-file-name name version))
14132 (sha256
14133 (base32
14134 "0h9w81ddd0gvkh5n2cvny9ddb5qiac1si0dhinkk0xxh5382qs0m"))))
14135 (build-system ruby-build-system)
14136 (arguments
14137 `(#:test-target "spec"
14138 #:phases (modify-phases %standard-phases
14139 (add-before 'build 'drop-signing-key-requirement
14140 (lambda _
14141 (substitute* "pdf-inspector.gemspec"
14142 (("spec.signing_key =.*")
14143 "spec.signing_key = nil"))))
14144 (replace 'check
14145 (lambda _
14146 (substitute* "pdf-inspector.gemspec"
14147 ((".*rubocop.*") "")
14148 ((".*yard.*") ""))
14149 (invoke "rspec"))))))
14150 (native-inputs
14151 (list ruby-rspec))
14152 (propagated-inputs
14153 (list ruby-pdf-reader))
14154 (home-page "https://github.com/prawnpdf/pdf-inspector")
14155 (synopsis "Analysis classes for inspecting PDF output")
14156 (description "This library provides a number of PDF::Reader based tools for
14157use in testing PDF output. Presently, the primary purpose of this tool is to
14158support the tests found in Prawn, a pure Ruby PDF generation library.")
14159 (license %prawn-project-licenses))))
14160
14161(define-public ruby-pdf-core
14162 (package
14163 (name "ruby-pdf-core")
14164 (version "0.9.0")
14165 (source (origin
14166 (method url-fetch)
14167 (uri (rubygems-uri "pdf-core" version))
14168 (sha256
14169 (base32
14170 "1fz0yj4zrlii2j08kaw11j769s373ayz8jrdhxwwjzmm28pqndjg"))))
14171 (build-system ruby-build-system)
14172 (arguments
14173 ; No test target
14174 `(#:tests? #f))
14175 (home-page "https://github.com/prawnpdf/pdf-core")
14176 (synopsis "Low level PDF features for Prawn")
14177 (description "This is an experimental gem that extracts low-level PDF
14178functionality from Prawn.")
14179 (license license:gpl3+)))
14180
14181(define-public ruby-prawn-dev
14182 (package
14183 (name "ruby-prawn-dev")
14184 (version "0.3.0")
14185 (source (origin
14186 (method url-fetch)
14187 (uri (rubygems-uri "prawn-dev" version))
14188 (sha256
14189 (base32
14190 "1hbzzgm0nwc6h8pyv8h9xx068bf676rispxcz4a0sm8nykz54z4x"))))
14191 (build-system ruby-build-system)
14192 (arguments
14193 (list
14194 #:tests? #f ;no test suite
14195 #:phases
14196 #~(modify-phases %standard-phases
14197 (add-after 'extract-gemspec 'drop-rubocop-dependency
14198 ;; Rubocop depends on Prawn. Remove it to avoid the
14199 ;; dependency cycle when using this tool to build
14200 ;; Prawn components.
14201 (lambda _
14202 (substitute* "lib/prawn/dev/tasks.rb"
14203 (("require 'rubocop/rake_task'")
14204 "")
14205 (("RuboCop::RakeTask.new")
14206 ""))
14207 (substitute* ".gemspec"
14208 ((".*add.*dependency.*(rubocop|simplecov).*")
14209 "")))))))
14210 (propagated-inputs (list ruby-rake ruby-rspec ruby-yard))
14211 (synopsis "Shared tools for Prawn projects development")
14212 (description "Prawn-dev contains tools to aid the development of the
14213various Prawn projects.")
14214 (home-page "https://prawnpdf.org/")
14215 (license license:expat)))
14216
14217(define-public ruby-prawn
14218 ;; There hasn't been a new release since 2017/03/17.
14219 (package
14220 (name "ruby-prawn")
14221 (version "2.4.0")
14222 (source (origin
14223 (method git-fetch)
14224 (uri (git-reference
14225 (url "https://github.com/prawnpdf/prawn")
14226 (commit version)))
14227 (file-name (git-file-name name version))
14228 (sha256
14229 (base32
14230 "1h1gww12wcdscij0lnd21p9zcbwrwc3miini5ppannc2birmj9ja"))))
14231 (build-system ruby-build-system)
14232 (arguments
14233 (list
14234 #:phases
14235 #~(modify-phases %standard-phases
14236 (add-before 'build 'drop-signing-key-requirement
14237 (lambda _
14238 (substitute* "prawn.gemspec"
14239 (("spec.signing_key =.*")
14240 "spec.signing_key = nil"))))
14241 (replace 'check
14242 (lambda* (#:key tests? #:allow-other-keys)
14243 (when tests?
14244 ;; The Prawn manual test fails (see:
14245 ;; https://github.com/prawnpdf/prawn/issues/1163), so exclude
14246 ;; it.
14247 (invoke "rspec"
14248 "--exclude-pattern" "prawn_manual_spec.rb")))))))
14249 (propagated-inputs
14250 (list ruby-matrix
14251 ruby-pdf-core
14252 ruby-ttfunk))
14253 (native-inputs
14254 (list ruby-pdf-inspector
14255 ruby-prawn-manual-builder
14256 ruby-prawn-dev))
14257 (home-page "https://prawnpdf.org/api-docs/2.0/")
14258 (synopsis "PDF generation for Ruby")
14259 (description "Prawn is a pure Ruby PDF generation library.")
14260 (license %prawn-project-licenses)))
14261
14262(define-public ruby-prawn-table
14263 (package
14264 (name "ruby-prawn-table")
14265 (version "0.2.2")
14266 (source (origin
14267 (method url-fetch)
14268 (uri (rubygems-uri "prawn-table" version))
14269 (sha256
14270 (base32
14271 "1nxd6qmxqwl850icp18wjh5k0s3amxcajdrkjyzpfgq0kvilcv9k"))))
14272 (build-system ruby-build-system)
14273 (propagated-inputs
14274 (list ruby-prawn ruby-pdf-inspector))
14275 (native-inputs
14276 `(("bundler" ,bundler)
14277 ("ruby-yard" ,ruby-yard)
14278 ("ruby-mocha" ,ruby-mocha)
14279 ("ruby-coderay" ,ruby-coderay)
14280 ("ruby-prawn-manual-builder" ,ruby-prawn-manual-builder)
14281 ("ruby-simplecov" ,ruby-simplecov)
14282 ("ruby-rspec-2" ,ruby-rspec-2)))
14283 (arguments
14284 '(;; TODO: 1 test fails
14285 ;; Failure/Error: pdf.page_count.should == 1
14286 ;; expected: 1
14287 ;; got: 2 (using ==)
14288 ;; # ./spec/table_spec.rb:1308
14289 ;;
14290 ;; 225 examples, 1 failure
14291 #:tests? #f
14292 #:phases
14293 (modify-phases %standard-phases
14294 (add-before 'check 'patch-gemspec
14295 (lambda _
14296 (substitute* "prawn-table.gemspec"
14297 ;; Loosen the requirement for pdf-inspector
14298 (("~> 1\\.1\\.0") ">= 0")
14299 ;; Loosen the requirement for pdf-reader
14300 (("~> 1\\.2") ">= 0"))))
14301 (replace 'check
14302 (lambda* (#:key tests? #:allow-other-keys)
14303 (when tests?
14304 (invoke "rspec")))))))
14305 (home-page "https://github.com/prawnpdf/prawn-table")
14306 (synopsis "Tables support for Prawn")
14307 (description "This gem provides tables support for Prawn.")
14308 (license license:gpl3+)))
14309
14310(define-public ruby-kramdown
14311 (package
14312 (name "ruby-kramdown")
14313 (version "2.3.1")
14314 (source (origin
14315 (method url-fetch)
14316 (uri (rubygems-uri "kramdown" version))
14317 (sha256
14318 (base32
14319 "0jdbcjv4v7sj888bv3vc6d1dg4ackkh7ywlmn9ln2g9alk7kisar"))))
14320 (build-system ruby-build-system)
14321 (arguments `(#:tests? #f)); FIXME: some test failures
14322 (native-inputs
14323 (list ruby-prawn ruby-prawn-table))
14324 (home-page "https://kramdown.gettalong.org/")
14325 (synopsis "Markdown parsing and converting library")
14326 (description "Kramdown is a library for parsing and converting a superset
14327of Markdown. It is completely written in Ruby, supports standard Markdown
14328(with some minor modifications) and various extensions that have been made
14329popular by the PHP @code{Markdown Extra} package and @code{Maruku}.")
14330 (license license:expat)))
14331
14332(define-public ruby-kramdown-parser-gfm
14333 (package
14334 (name "ruby-kramdown-parser-gfm")
14335 (version "1.1.0")
14336 (source
14337 (origin
14338 (method url-fetch)
14339 (uri (rubygems-uri "kramdown-parser-gfm" version))
14340 (sha256
14341 (base32 "0a8pb3v951f4x7h968rqfsa19c8arz21zw1vaj42jza22rap8fgv"))))
14342 (build-system ruby-build-system)
14343 (arguments
14344 `(#:tests? #f)) ;no rakefile
14345 (propagated-inputs
14346 (list ruby-kramdown))
14347 (synopsis "Kramdown parser for the GFM dialect of Markdown")
14348 (description
14349 "This is a parser for kramdown that converts Markdown documents in the
14350GFM dialect to HTML.")
14351 (home-page "https://github.com/kramdown/parser-gfm")
14352 (license license:expat)))
14353
14354(define-public ruby-http-parser.rb
14355 (package
14356 (name "ruby-http-parser.rb")
14357 (version "0.6.0")
14358 (source
14359 (origin
14360 (method url-fetch)
14361 (uri (rubygems-uri "http_parser.rb" version))
14362 (sha256
14363 (base32
14364 "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi"))))
14365 (build-system ruby-build-system)
14366 (arguments
14367 ;; No tests
14368 `(#:tests? #f))
14369 (native-inputs
14370 (list ruby-rake-compiler ruby-rspec))
14371 (home-page "https://github.com/tmm1/http_parser.rb")
14372 (synopsis "HTTP parser un Ruby")
14373 (description "This gem is a simple callback-based HTTP request/response
14374parser for writing http servers, clients and proxies.")
14375 (license license:expat)))
14376
14377(define-public ruby-excon
14378 (package
14379 (name "ruby-excon")
14380 (version "0.109.0")
14381 (source (origin
14382 (method git-fetch) ;for tests
14383 (uri (git-reference
14384 (url "https://github.com/excon/excon")
14385 (commit (string-append "v" version))))
14386 (file-name (git-file-name name version))
14387 (sha256
14388 (base32
14389 "199niqbpzj70k3n6ybg4vbcw3qm76kwic4nl9747l1n0v49aaj24"))))
14390 (build-system ruby-build-system)
14391 (arguments
14392 (list
14393 #:tests? #f ;; some tests require DNS
14394 #:phases
14395 #~(modify-phases %standard-phases
14396 (replace 'replace-git-ls-files
14397 (lambda _
14398 (substitute* "excon.gemspec"
14399 (("`git ls-files -- data/. lib/.`")
14400 "`find data lib -type f`"))))
14401 (add-before 'check 'disable-server-spec-checks
14402 (lambda _ ;; TODO: Remove this if ruby-unicorn is available.
14403 ;; Some of the tests in this file require ruby-unicorn, which is
14404 ;; not yet packaged for guix and would pull in a lot of other
14405 ;; dependencies.
14406 (delete-file "spec/excon/test/server_spec.rb"))))))
14407 (native-inputs
14408 (list
14409 ruby-activesupport
14410 ruby-eventmachine
14411 ruby-json
14412 ruby-open4
14413 ruby-puma
14414 ruby-rspec
14415 ruby-shindo
14416 ruby-sinatra
14417 ruby-webrick))
14418 (synopsis "Usable, fast, simple Ruby HTTP 1.1")
14419 (description "Excon was designed to be simple, fast and performant. It
14420works great as a general HTTP(s) client and is particularly well suited to
14421usage in API clients.")
14422 (home-page "https://github.com/excon/excon")
14423 (license license:expat)))
14424
14425(define-public ruby-em-websocket
14426 (package
14427 (name "ruby-em-websocket")
14428 (version "0.5.1")
14429 (source
14430 (origin
14431 (method url-fetch)
14432 (uri (rubygems-uri "em-websocket" version))
14433 (sha256
14434 (base32
14435 "1bsw8vjz0z267j40nhbmrvfz7dvacq4p0pagvyp17jif6mj6v7n3"))))
14436 (build-system ruby-build-system)
14437 (arguments
14438 ;; No tests
14439 `(#:tests? #f))
14440 (propagated-inputs
14441 (list ruby-eventmachine ruby-http-parser.rb))
14442 (native-inputs
14443 (list bundler ruby-rspec))
14444 (home-page "https://github.com/igrigorik/em-websocket")
14445 (synopsis "EventMachine based WebSocket server")
14446 (description "Em-websocket is an EventMachine based WebSocket server
14447implementation.")
14448 (license license:expat)))
14449
14450(define-public ruby-rouge
14451 (package
14452 (name "ruby-rouge")
14453 (version "3.26.1")
14454 (source (origin
14455 (method url-fetch)
14456 (uri (rubygems-uri "rouge" version))
14457 (sha256
14458 (base32
14459 "197k0vskf72wxx0gzwld2jzg27bb7982xlvnzy9adlvkzp7nh8vf"))))
14460 (build-system ruby-build-system)
14461 (arguments `(#:tests? #f)); No rakefile
14462 (home-page "http://rouge.jneen.net/")
14463 (synopsis "Code highlighter")
14464 (description "Rouge is a code highlighter written in Ruby. It supports more
14465than 100 languages and outputs HTML or ANSI 256-color text. Its HTML output
14466is compatible with stylesheets designed for pygments.")
14467 (license (list
14468 ;; rouge is licensed under expat
14469 license:expat
14470 ;; pygments is licensed under bsd-2
14471 license:bsd-2))))
14472
14473(define-public ruby-hashie
14474 (let ((commit "73510552ba580867e9882fe092568916cbcd810b")
14475 (revision "0"))
14476 (package
14477 (name "ruby-hashie")
14478 (version (git-version "5.0.0" revision commit))
14479 (source (origin
14480 (method git-fetch) ;for tests
14481 (uri (git-reference
14482 (url "https://github.com/hashie/hashie")
14483 (commit commit)))
14484 (file-name (git-file-name name version))
14485 (sha256
14486 (base32
14487 "08rpx040h6vgx6ynk6w029f7z7c8aj2p4v135k2l1zxvnw617ddw"))))
14488 (build-system ruby-build-system)
14489 (arguments
14490 (list #:test-target "spec"
14491 #:phases #~(modify-phases %standard-phases
14492 (add-after 'unpack 'disable-bundler
14493 (lambda _
14494 (substitute* "Rakefile"
14495 ((".*require 'bundler'.*") "")
14496 ((".*Bundler.setup.*") "")
14497 (("Bundler::GemHelper\\.install_tasks") ""))))
14498 (add-after 'unpack 'disable-rubocop
14499 (lambda _
14500 (substitute* "Rakefile"
14501 (("require 'rubocop/rake_task'") "")
14502 (("RuboCop::RakeTask.new") ""))))
14503 (add-after 'unpack 'relax-requirements
14504 (lambda _
14505 ;; Contains multiple extraneous dependencies.
14506 (delete-file "Gemfile"))))))
14507 (native-inputs (list ruby-json ruby-pry ruby-rspec ruby-rspec-pending-for))
14508 (home-page "https://github.com/hashie/hashie")
14509 (synopsis "Extensions to Ruby Hashes")
14510 (description "Hashie is a collection of classes and mixins that make Ruby
14511hashes more powerful.")
14512 (license license:expat))))
14513
14514(define-public ruby-heredoc-unindent
14515 (package
14516 (name "ruby-heredoc-unindent")
14517 (version "1.2.0")
14518 (source (origin
14519 (method url-fetch)
14520 (uri (rubygems-uri "heredoc_unindent" version))
14521 (sha256
14522 (base32
14523 "14ijr2fsjwhrkjkcaz81d5xnfa4vvgvcflrff83avqw9klm011yw"))))
14524 (build-system ruby-build-system)
14525 (native-inputs
14526 (list ruby-hoe-3))
14527 (home-page "https://github.com/adrianomitre/heredoc_unindent")
14528 (synopsis "Heredoc indentation cleaner")
14529 (description "This gem removes common margin from indented strings, such
14530as the ones produced by indented heredocs. In other words, it strips out
14531leading whitespace chars at the beginning of each line, but only as much as
14532the line with the smallest margin.
14533
14534It is acknowledged that many strings defined by heredocs are just code and
14535fact is that most parsers are insensitive to indentation. If, however, the
14536strings are to be used otherwise, be it for printing or testing, the extra
14537indentation will probably be an issue and hence this gem.")
14538 (license license:expat)))
14539
14540(define-public ruby-safe-yaml
14541 (package
14542 (name "ruby-safe-yaml")
14543 (version "1.0.5")
14544 (source
14545 (origin
14546 (method git-fetch)
14547 (uri (git-reference
14548 (url "https://github.com/dtao/safe_yaml")
14549 (commit version)))
14550 (file-name (git-file-name name version))
14551 (sha256
14552 (base32
14553 "1a0wh7y3va2m7bjza95na2snw0vrdh9syz40mpjvjphbc4ph3pzg"))))
14554 (build-system ruby-build-system)
14555 (native-inputs
14556 (list ruby-rspec ruby-hashie ruby-heredoc-unindent))
14557 (arguments
14558 (list
14559 ;; Tests are broken since the move to ruby@3.
14560 ;; There's ongoing effort on the Jekyll dependent
14561 ;; to remove this orphan dependency.
14562 #:tests? #f ; broken since move to ruby@3
14563 #:test-target "spec"
14564 #:phases
14565 #~(modify-phases %standard-phases
14566 (add-before 'check 'set-TZ
14567 (lambda _
14568 ;; This test is dependent on the timezone
14569 ;; spec/transform/to_date_spec.rb:35
14570 ;; # SafeYAML::Transform::ToDate converts times to the local
14571 ;; timezone
14572 (setenv "TZ" "UTC-11"))))))
14573 (home-page "https://github.com/dtao/safe_yaml")
14574 (synopsis "YAML parser")
14575 (description "The SafeYAML gem provides an alternative implementation of
14576YAML.load suitable for accepting user input in Ruby applications.")
14577 (license license:expat)))
14578
14579(define-public ruby-yaml-lint
14580 ;; No tags for releases.
14581 (let ((commit "d6a253f7d33234a9c24660d582cf7014e882c0c2")
14582 (revision "0"))
14583 (package
14584 (name "ruby-yaml-lint")
14585 (version (git-version "0.1.2" revision commit))
14586 (source
14587 (origin
14588 (method git-fetch)
14589 (uri (git-reference
14590 (url "https://github.com/Pryz/yaml-lint")
14591 (commit commit)))
14592 (file-name (git-file-name name version))
14593 (sha256
14594 (base32 "0zk0jwzmcaaiyixjvkzdb54xhiqcnjkma72nkv0vm5csaphfdjkx"))))
14595 (build-system ruby-build-system)
14596 (arguments
14597 `(#:phases
14598 (modify-phases %standard-phases
14599 (replace 'check
14600 (lambda* (#:key tests? #:allow-other-keys)
14601 (when tests?
14602 (invoke "rspec")))))))
14603 (native-inputs
14604 (list ruby-coveralls ruby-rspec ruby-simplecov))
14605 (synopsis "Simple YAML check tool")
14606 (description
14607 "@code{yaml-lint} will simply try to load the YAML file with the built-in
14608Ruby yaml library.")
14609 (home-page "https://github.com/Pryz/yaml-lint")
14610 (license license:expat))))
14611
14612(define-public ruby-matrix
14613 (package
14614 (name "ruby-matrix")
14615 (version "0.4.2")
14616 (source (origin
14617 (method git-fetch) ;for tests
14618 (uri (git-reference
14619 (url "https://github.com/ruby/matrix")
14620 (commit (string-append "v" version))))
14621 (file-name (git-file-name name version))
14622 (sha256
14623 (base32
14624 "1asxr0jzh39lk5f8a9wm5avykrcy0v2wgd1bl3cszjczh99xy5k2"))))
14625 (build-system ruby-build-system)
14626 (synopsis "@code{Matrix} and @code{Vector} classes implementation for Ruby")
14627 (description "This Ruby library provides an implementation of the
14628@code{Matrix} and @code{Vector} classes. The @code{Matrix} class represents a
14629mathematical matrix. It provides methods for creating matrices, operating on
14630them arithmetically and algebraically, and determining their mathematical
14631properties (trace, rank, inverse, determinant, eigensystem, etc.). The
14632@code{Vector} class represents a mathematical vector, which is useful in its
14633own right, and also constitutes a row or column of a @code{Matrix}.")
14634 (home-page "https://github.com/ruby/matrix")
14635 (license license:bsd-2)))
14636
14637(define-public ruby-m
14638 (package
14639 (name "ruby-m")
14640 (version "1.6.1")
14641 (source (origin
14642 (method git-fetch) ;for tests
14643 (uri (git-reference
14644 (url "https://github.com/qrush/m")
14645 (commit (string-append "v" version))))
14646 (file-name (git-file-name name version))
14647 (sha256
14648 (base32
14649 "1aycfc8l1bsln1y300fv75fknn4amjcvc4rm2kd8hb6cqivjq5rg"))))
14650 (build-system ruby-build-system)
14651 (arguments
14652 (list
14653 #:phases
14654 #~(modify-phases %standard-phases
14655 (add-after 'unpack 'sanitize-dependencies
14656 (lambda _
14657 (delete-file "Gemfile")
14658 (delete-file "Gemfile.lock")
14659 ;; Rocco is unmaintained as of 2023/01/08; avoid depending on
14660 ;; it.
14661 (substitute* "m.gemspec"
14662 ;; The rdiscount and rocco dependencies are used for
14663 ;; generating the documentation.
14664 ((".*rdiscount.*") "")
14665 ((".*rocco.*") "")
14666 ((".*appraisal.*") "")
14667 ((".*coveralls.*") ""))
14668 (substitute* "Rakefile"
14669 ;; ruby-appraisal is not packaged, and is used to test against
14670 ;; various dependencies; circumvent its use.
14671 ((".*require 'appraisal'.*") "")
14672 ((".*require 'coveralls'.*") "")
14673 (("appraisal [:graphic:]+ rake")
14674 "rake")
14675 (("Coveralls.push!") ""))))
14676 (add-before 'replace-git-ls-files 'pre-replace-git-ls-files
14677 (lambda _
14678 (substitute* "m.gemspec"
14679 (("git ls-files -- bin/\\*")
14680 "find bin -type f -not -regex '.*\\.gem$' | sort")
14681 (("git ls-files -- \\{test,spec,features}/\\*")
14682 "find test -type f -not -regex '.*\\.gem$' | sort"))))
14683 (delete 'check)
14684 (add-after 'install 'check
14685 (lambda* (#:key tests? #:allow-other-keys)
14686 (setenv "GEM_PATH" (string-append
14687 (getenv "GEM_PATH") ":"
14688 #$output "/lib/ruby/vendor_ruby"))
14689 (when tests?
14690 (invoke "rake" "test")))))))
14691 (native-inputs (list ruby-activesupport))
14692 (propagated-inputs (list ruby-method-source ruby-rake))
14693 (synopsis "Ruby test runner that can run tests by line number")
14694 (description "@code{m} stands for metal, a better test/unit and
14695@code{minitest} test runner that can run tests by line number.")
14696 (home-page "https://github.com/qrush/m")
14697 (license license:expat)))
14698
14699(define-public ruby-mercenary
14700 (package
14701 (name "ruby-mercenary")
14702 (version "0.4.0")
14703 (source (origin
14704 (method url-fetch)
14705 (uri (rubygems-uri "mercenary" version))
14706 (sha256
14707 (base32
14708 "0f2i827w4lmsizrxixsrv2ssa3gk1b7lmqh8brk8ijmdb551wnmj"))))
14709 (build-system ruby-build-system)
14710 (arguments `(#:test-target "spec"))
14711 (native-inputs
14712 (list bundler))
14713 (home-page "https://github.com/jekyll/mercenary")
14714 (synopsis "Command-line apps library in Ruby")
14715 (description "Mercenary is a lightweight and flexible library for writing
14716command-line apps in Ruby.")
14717 (license license:expat)))
14718
14719(define-public ruby-launchy
14720 (package
14721 (name "ruby-launchy")
14722 (version "2.5.2")
14723 (source (origin
14724 (method url-fetch)
14725 (uri (rubygems-uri "launchy" version))
14726 (sha256
14727 (base32
14728 "06r43899384das2bkbrpsdxsafyyqa94il7111053idfalb4984a"))))
14729 (build-system ruby-build-system)
14730 (native-inputs (list curl links ruby-simplecov))
14731 (propagated-inputs (list ruby-addressable))
14732 (synopsis "Ruby helper class for launching applications")
14733 (description
14734 "Launchy is helper class for launching applications in a fire and forget
14735manner. The aim of Launchy is to provide a common approach to launching
14736external applications from within Ruby programs.")
14737 (home-page "https://github.com/copiousfreetime/launchy")
14738 (license license:isc)))
14739
14740(define-public ruby-liquid
14741 (package
14742 (name "ruby-liquid")
14743 (version "5.4.0")
14744 (source (origin
14745 (method git-fetch) ;for tests
14746 (uri (git-reference
14747 (url "https://github.com/Shopify/liquid")
14748 (commit (string-append "v" version))))
14749 (file-name (git-file-name name version))
14750 (sha256
14751 (base32
14752 "1qdnvd1f9zs6wyilcgxyh93wis7ikbpimjxfpbkpk2ngr1m2c8la"))))
14753 (build-system ruby-build-system)
14754 (arguments
14755 (list
14756 #:phases
14757 #~(modify-phases %standard-phases
14758 (delete 'check) ;moved after the install phase
14759 (add-after 'install 'check
14760 (assoc-ref %standard-phases 'check))
14761 (add-before 'check 'set-GEM_PATH
14762 (lambda _
14763 (setenv "GEM_PATH" (string-append
14764 (getenv "GEM_PATH") ":"
14765 #$output "/lib/ruby/vendor_ruby"))))
14766 (add-before 'check 'delete-problematic-tests
14767 (lambda _
14768 ;; The following test fails with 'Unknown tag' errors (see:
14769 ;; https://github.com/Shopify/liquid/issues/1699).
14770 (delete-file "test/integration/tags/inline_comment_test.rb"))))))
14771 (native-inputs (list ruby-liquid-c-bootstrap ruby-rspec ruby-stackprof))
14772 (home-page "https://shopify.github.io/liquid/")
14773 (synopsis "Template language")
14774 (description "Liquid is a template language written in Ruby. It is used
14775to load dynamic content on storefronts.")
14776 (license license:expat)))
14777
14778(define-public ruby-liquid-4
14779 (package
14780 (inherit ruby-liquid)
14781 (name "ruby-liquid")
14782 (version "4.0.4")
14783 (source (origin
14784 (method git-fetch) ;for tests
14785 (uri (git-reference
14786 (url "https://github.com/Shopify/liquid")
14787 (commit (string-append "v" version))))
14788 (file-name (git-file-name name version))
14789 (sha256
14790 (base32
14791 "0cr321nd0zkbxirgdfmz37xx7j26zfnicjh585fi20vx60frry83"))))
14792 (arguments (list #:tests? #f)))) ;avoid required an older ruby-liquid-c
14793
14794;;; This variant is purposefully incomplete, lacking ruby-liquid so that it
14795;;; can be used for ruby-liquid's test suite.
14796(define ruby-liquid-c-bootstrap
14797 (package
14798 (name "ruby-liquid-c-bootstrap")
14799 (version "4.1.0")
14800 (source (origin
14801 (method url-fetch)
14802 (uri (rubygems-uri "liquid-c" version))
14803 (sha256
14804 (base32
14805 "0jl37jz9hbfbhknryx4myxqx4n1f5dzyzmf1sapkcbw93xyrmkch"))))
14806 (build-system ruby-build-system)
14807 (arguments (list #:tests? #f))
14808 (native-inputs (list ruby-rake-compiler))
14809 (synopsis "Liquid performance extension in C")
14810 (description "This package provides a Partial native implementation of the
14811liquid ruby gem in C that makes it operate about three times faster.")
14812 (home-page "https://github.com/shopify/liquid-c")
14813 (license license:expat)))
14814
14815(define-public ruby-liquid-c
14816 (package/inherit ruby-liquid-c-bootstrap
14817 (name "ruby-liquid-c")
14818 (arguments
14819 (list
14820 ;; Only run the unit tests, because the test:integration target fails
14821 ;; with "File does not exist: test_helper" (see:
14822 ;; https://github.com/Shopify/liquid-c/issues/188).
14823 #:test-target "test:unit"
14824 #:phases
14825 #~(modify-phases %standard-phases
14826 (add-after 'extract-gemspec 'relax-requirements
14827 (lambda _
14828 (substitute* "Gemfile"
14829 ;; Do not attempt to fetch a gem from git.
14830 (("git_source\\(:github) do \\|repo_name\\|")
14831 "if false")
14832 ((", github: \"Shopify/liquid\", ref: \"master\"")
14833 "")
14834 ;; Remove extraneous dependencies.
14835 ((".*byebug.*") "")
14836 ((".*rubocop.*") "")
14837 ;; Relax spy version specification.
14838 (("gem \"spy\", \"0.4.1\"")
14839 "gem \"spy\", \">= 0.4.1\"")))))))
14840 (native-inputs
14841 (list ruby-benchmark-ips
14842 ruby-rake-compiler
14843 ruby-ruby-memcheck
14844 ruby-spy
14845 ruby-stackprof))
14846 (propagated-inputs
14847 (list ruby-liquid))))
14848
14849(define-public ruby-localhost
14850 (package
14851 (name "ruby-localhost")
14852 (version "1.1.10")
14853 (source (origin
14854 (method git-fetch) ;for tests
14855 (uri (git-reference
14856 (url "https://github.com/socketry/localhost")
14857 (commit (string-append "v" version))))
14858 (file-name (git-file-name name version))
14859 (sha256
14860 (base32
14861 "1yp70w15wpfk613ap5f4y15yx4n2qqwa67vqc2f4lv7npf3llcz0"))))
14862 (build-system ruby-build-system)
14863 (arguments
14864 ;; XXX: The test suite requires sus-fixtures-async, which requires async,
14865 ;; only available for Ruby 3.0.
14866 (list #:tests? #f
14867 #:phases
14868 #~(modify-phases %standard-phases
14869 (add-before 'build 'remove-missing-signing-key
14870 (lambda _
14871 ;; Otherwise, the build fails with ENOENT.
14872 (substitute* "localhost.gemspec"
14873 ((".*spec.signing_key.*") "")))))))
14874 (synopsis "API for generating per-user self-signed root certificates")
14875 (description "This package provides @code{localhost}, a Ruby library for
14876Managing a local certificate authority for self-signed, localhost development
14877servers.")
14878 (home-page "https://github.com/socketry/localhost")
14879 (license license:expat)))
14880
14881(define-public ruby-forwardable-extended
14882 (package
14883 (name "ruby-forwardable-extended")
14884 (version "2.6.0")
14885 (source (origin
14886 (method url-fetch)
14887 (uri (rubygems-uri "forwardable-extended" version))
14888 (sha256
14889 (base32
14890 "15zcqfxfvsnprwm8agia85x64vjzr2w0xn9vxfnxzgcv8s699v0v"))))
14891 (build-system ruby-build-system)
14892 (arguments `(#:tests? #f)); Cyclic dependency on luna-rspec-formatters
14893 (home-page "https://github.com/envygeeks/forwardable-extended")
14894 (synopsis "Delegation to hashes and instance variables in Forwardable")
14895 (description "Forwardable Extended provides more @code{Forwardable}
14896methods for your source as @code{Forwardable::Extended}.")
14897 (license license:expat)))
14898
14899(define-public ruby-pathutil
14900 (package
14901 (name "ruby-pathutil")
14902 (version "0.16.2")
14903 (source (origin
14904 (method url-fetch)
14905 (uri (rubygems-uri "pathutil" version))
14906 (sha256
14907 (base32
14908 "12fm93ljw9fbxmv2krki5k5wkvr7560qy8p4spvb9jiiaqv78fz4"))))
14909 (build-system ruby-build-system)
14910 (propagated-inputs
14911 (list ruby-forwardable-extended))
14912 (native-inputs
14913 (list bundler ruby-rspec))
14914 ;; Fails with: cannot load such file --
14915 ;; /tmp/guix-build-ruby-pathutil-0.16.0.drv-0/gem/benchmark/support/task
14916 (arguments `(#:tests? #f))
14917 (home-page "https://github.com/envygeeks/pathutil")
14918 (synopsis "Extended implementation of Pathname")
14919 (description "Pathutil tries to be a faster pure Ruby implementation of
14920Pathname.")
14921 (license license:expat)))
14922
14923(define-public ruby-terminal-table
14924 (package
14925 (name "ruby-terminal-table")
14926 (version "3.0.2")
14927 (source (origin
14928 (method git-fetch)
14929 (uri (git-reference
14930 (url "https://github.com/tj/terminal-table")
14931 (commit (string-append "v" version))))
14932 (file-name (git-file-name name version))
14933 (sha256
14934 (base32
14935 "1c3f7ng3lxq962n8sbmlsvjx6srh5i801wzsyhxmfz2g880f5jps"))))
14936 (arguments
14937 '(#:phases
14938 (modify-phases %standard-phases
14939 (add-before 'check 'remove-unnecessary-dependencies
14940 (lambda _
14941 (substitute* "terminal-table.gemspec"
14942 (("s.add_runtime_dependency.*") "\n")
14943 (("s.add_development_dependency.*") "\n"))
14944 (substitute* "Gemfile"
14945 ((".*tins.*") "\n"))))
14946 (replace 'check
14947 (lambda* (#:key tests? #:allow-other-keys)
14948 (when tests?
14949 (invoke "rspec")))))))
14950 (build-system ruby-build-system)
14951 (propagated-inputs
14952 (list ruby-unicode-display-width))
14953 (native-inputs
14954 (list ruby-rspec ruby-term-ansicolor))
14955 (home-page "https://github.com/tj/terminal-table")
14956 (synopsis "Simple, feature rich ASCII table generation library")
14957 (description
14958 "Terminal Table is a fast and simple, yet feature rich
14959table generator written in Ruby. It supports ASCII and
14960Unicode formatted tables.")
14961 (license license:expat)))
14962
14963(define-public jekyll
14964 (package
14965 (name "jekyll")
14966 (version "4.3.4")
14967 (source (origin
14968 (method git-fetch) ;for tests
14969 (uri (git-reference
14970 (url "https://github.com/jekyll/jekyll")
14971 (commit (string-append "v" version))))
14972 (file-name (git-file-name name version))
14973 (sha256
14974 (base32
14975 "0sz285x5ppbifrnixi9sdzv28kg4x3qbzds3qniiwh1ip9hi1yk4"))))
14976 (build-system ruby-build-system)
14977 (arguments
14978 (list #:modules '((guix build ruby-build-system)
14979 (guix build utils)
14980 (ice-9 ftw)
14981 (srfi srfi-26))
14982 ;; The cucumber acceptance suite is not run as it depends on an old
14983 ;; version (5).
14984 #:test-target "spec"
14985 #:phases
14986 #~(modify-phases %standard-phases
14987 (add-before 'check 'disable-problematic-tests
14988 ;; TODO: Package the missing test inputs.
14989 (lambda _
14990 (with-directory-excursion "test"
14991 ;; Requires 'jekyll-coffeescript'.
14992 (delete-file "test_coffeescript.rb")
14993 ;; Requires 'tomlrb'.
14994 (delete-file "test_configuration.rb")
14995 (substitute* "test_filters.rb"
14996 ;; The sassify tests fail due to white space
14997 ;; differences (see:
14998 ;; https://github.com/jekyll/jekyll/issues/9322).
14999 ((".*s?ssify with simple string.*" all)
15000 (string-append all
15001 " skip('fails on guix')\n")))
15002 ;; Requires kramdown-syntax-coderay.
15003 (delete-file "test_kramdown.rb")
15004 ;; Requires 'test-theme', usually made available from the
15005 ;; local checkout via Bundler (not used here).
15006 (delete-file "test_layout_reader.rb")
15007 ;; Requires a large amount of un-packaged dependencies.
15008 (delete-file "test_plugin_manager.rb")
15009 ;; Requires 'classifier-reborn'.
15010 (delete-file "test_related_posts.rb")
15011 ;; This one causes a test failure similar to the ones for
15012 ;; sassify above.
15013 (delete-file "test_sass.rb")
15014 ;; This would require running the tests via 'bundle
15015 ;; exec', but the Gemfile contains too many (extraneous)
15016 ;; dependencies.
15017 (delete-file "test_site.rb")
15018 ;; Delete the theme tests, as they require 'test-theme',
15019 ;; usually made available from the local checkout via the
15020 ;; Gemfile/bundler (not used here).
15021 (for-each delete-file
15022 (scandir
15023 "." (cut string-prefix? "test_theme" <>)))
15024 ;; This one also relies on 'test-theme'.
15025 (delete-file "test_liquid_renderer.rb")
15026 ;; This test assumes internet connectivity, negate it, as
15027 ;; there's no Internet in the build container.
15028 (substitute* "test_utils.rb"
15029 (("assert Utils::Internet\\.connected\\?")
15030 "refute Utils::Internet.connected?"))
15031 ;; These tests fail non-deterministically (see:
15032 ;; https://github.com/jekyll/jekyll/issues/9323).
15033 (delete-file "test_new_command.rb")
15034 (delete-file "test_collections.rb"))))
15035 (replace 'check
15036 (lambda* (#:key tests? #:allow-other-keys)
15037 (when tests?
15038 ;; Invoke the test scripts manually, as 'rake test'
15039 ;; doesn't show any failure details, making debugging
15040 ;; needlessly difficult.
15041 (for-each (lambda (f)
15042 (invoke "ruby" "-I" "test" f))
15043 (find-files "test" "^test_.*\\.rb$"))))))))
15044 (native-inputs
15045 (list bundler
15046 ruby-httpclient
15047 ruby-minitest-profile
15048 ruby-minitest-reporters
15049 ruby-nokogiri
15050 ruby-rspec
15051 ruby-rspec-mocks
15052 ruby-shoulda
15053 ruby-simplecov))
15054 (propagated-inputs
15055 (list ruby-addressable
15056 ruby-colorator
15057 ruby-em-websocket
15058 ruby-i18n
15059 ruby-jekyll-sass-converter
15060 ruby-jekyll-watch
15061 ruby-kramdown-parser-gfm
15062 ruby-liquid-4
15063 ruby-mercenary
15064 ruby-pathutil
15065 ruby-rouge
15066 ruby-safe-yaml
15067 ruby-sassc
15068 ruby-terminal-table
15069 ruby-webrick))
15070 (home-page "https://jekyllrb.com/")
15071 (synopsis "Static site generator")
15072 (description "Jekyll is a simple, blog aware, static site generator.")
15073 (license license:expat)))
15074
15075(define-public ruby-jekyll-paginate-v2
15076 (package
15077 (name "ruby-jekyll-paginate-v2")
15078 (version "3.0.0")
15079 (source (origin
15080 (method url-fetch)
15081 (uri (rubygems-uri "jekyll-paginate-v2" version))
15082 (sha256
15083 (base32
15084 "1qzlqhpiqz28624fp0ak76hfy7908w6kpx62v7z43aiwjv0yc6q0"))))
15085 (build-system ruby-build-system)
15086 (propagated-inputs
15087 (list jekyll))
15088 (home-page "https://github.com/sverrirs/jekyll-paginate-v2")
15089 (synopsis "Pagination Generator for Jekyll 3")
15090 (description "The Pagination Generator forms the core of the pagination
15091logic in Jekyll. It calculates and generates the pagination pages.")
15092 (license license:expat)))
15093
15094(define-public ruby-faraday-net-http
15095 (package
15096 (name "ruby-faraday-net-http")
15097 (version "3.0.2")
15098 (source (origin
15099 (method url-fetch)
15100 (uri (rubygems-uri "faraday-net_http" version))
15101 (sha256
15102 (base32
15103 "13byv3mp1gsjyv8k0ih4612y6vw5kqva6i03wcg4w2fqpsd950k8"))))
15104 (build-system ruby-build-system)
15105 ;; Do not run the test suite here as it would introduce a dependency cycle
15106 ;; with ruby-faraday, which uses it as part of its test suite.
15107 (arguments (list #:tests? #f))
15108 (synopsis "Faraday adapter for Net::HTTP")
15109 (description "This gem is a Faraday adapter for the @code{Net::HTTP}
15110library. Faraday is an HTTP client library that provides a common interface
15111over many adapters.")
15112 (home-page "https://github.com/lostisland/faraday-net_http")
15113 (license license:expat)))
15114
15115(define-public ruby-faraday
15116 (package
15117 (name "ruby-faraday")
15118 (version "2.7.4")
15119 (source (origin
15120 (method git-fetch)
15121 (uri (git-reference
15122 (url "https://github.com/lostisland/faraday")
15123 (commit (string-append "v" version))))
15124 (file-name (git-file-name name version))
15125 (sha256
15126 (base32
15127 "0ya6jqa7ryr4i62mmzjjxzd8i8y0pyw0cbhifd758rs6lvkzmxa3"))))
15128 (build-system ruby-build-system)
15129 (arguments (list #:test-target "spec"))
15130 (native-inputs
15131 (list ruby-coveralls
15132 ruby-pry
15133 ruby-rack
15134 ruby-rspec
15135 ruby-simplecov
15136 ruby-webmock))
15137 ;; Propagate faraday-net-http as this is the default adapter used, and
15138 ;; many Ruby projects assumes it is available.
15139 (propagated-inputs (list ruby-ruby2-keywords ruby-faraday-net-http))
15140 (synopsis "Ruby HTTP/REST API client library")
15141 (description "Faraday is a HTTP/REST API client library which provides a
15142common interface over different adapters.")
15143 (home-page "https://github.com/lostisland/faraday")
15144 (license license:expat)))
15145
15146(define-public ruby-nio4r
15147 (package
15148 (name "ruby-nio4r")
15149 (version "2.5.2")
15150 (source
15151 (origin
15152 (method url-fetch)
15153 (uri (rubygems-uri "nio4r" version))
15154 (sha256
15155 (base32
15156 "0gnmvbryr521r135yz5bv8354m7xn6miiapfgpg1bnwsvxz8xj6c"))))
15157 (build-system ruby-build-system)
15158 (arguments
15159 '(#:phases
15160 (modify-phases %standard-phases
15161 (add-after 'unpack 'remove-unnecessary-dependencies
15162 (lambda _
15163 (substitute* "spec/spec_helper.rb"
15164 ;; Coveralls is for uploading test coverage information to an
15165 ;; online service, and thus unnecessary for building the Guix
15166 ;; package
15167 (("require \"coveralls\"") "")
15168 (("Coveralls\\.wear!") "")
15169 ;; Remove rspec/retry as we are not retrying the tests
15170 (("require \"rspec/retry\"") "")
15171 (("config\\.display_try_failure_messages = true") "")
15172 (("config\\.verbose_retry = true") ""))))
15173 (add-before 'check 'compile
15174 (lambda _
15175 (invoke "rake" "compile")))
15176 (replace 'check
15177 (lambda* (#:key tests? #:allow-other-keys)
15178 (when tests?
15179 (invoke "rspec")))))))
15180 (native-inputs
15181 (list bundler ruby-rake-compiler ruby-rspec ruby-rubocop))
15182 (synopsis "New I/O for Ruby")
15183 (description
15184 "@code{nio} provides cross-platform asynchronous I/O primitives in Ruby
15185for scalable network clients and servers.")
15186 (home-page "https://github.com/socketry/nio4r")
15187 (license license:expat)))
15188
15189(define-public ruby-language-server-protocol
15190 (package
15191 (name "ruby-language-server-protocol")
15192 (version "3.17.0.3")
15193 (source (origin
15194 (method git-fetch) ;for tests
15195 (uri (git-reference
15196 (url "https://github.com/mtsmfm/language_server-protocol-ruby")
15197 (commit (string-append "v" version))))
15198 (file-name (git-file-name name version))
15199 (sha256
15200 (base32
15201 "0f2g301fz99c6nkca39s9227brlycznv8a9r4b4i99rg25m91lc6"))))
15202 (build-system ruby-build-system)
15203 (arguments
15204 (list
15205 #:phases
15206 #~(modify-phases %standard-phases
15207 (add-after 'unpack 'remove-unnecessary-dependencies
15208 (lambda _
15209 (substitute* "Gemfile"
15210 (("gem \"pry-byebug\"") ""))))
15211 (replace 'replace-git-ls-files
15212 (lambda _
15213 (substitute* "language_server-protocol.gemspec"
15214 (("git ls-files -z([^`]*)" _ files)
15215 (string-append "find " files
15216 " -type f -not -regex '.*\\.gem$'"
15217 " -print0 | sort -z"))))))))
15218 (native-inputs
15219 (list ruby-activesupport
15220 ruby-benchmark-ips
15221 ruby-m
15222 ruby-minitest
15223 ruby-minitest-power-assert))
15224 (synopsis "Language Server Protocol (LSP) development kit for Ruby")
15225 (description "This package provides a Language Server Protocol (LSP)
15226development kit for Ruby.")
15227 (home-page "https://github.com/mtsmfm/language_server-protocol-ruby")
15228 (license license:expat)))
15229
15230(define-public ruby-spy
15231 (package
15232 (name "ruby-spy")
15233 (version "1.0.5")
15234 (source (origin
15235 (method url-fetch)
15236 (uri (rubygems-uri "spy" version))
15237 (sha256
15238 (base32
15239 "0g2mma8q17m26k5s864ndlvvqllhcivwg2wdigjvb7z06iw17gds"))))
15240 (build-system ruby-build-system)
15241 (arguments
15242 (list #:phases #~(modify-phases %standard-phases
15243 (add-after 'extract-gemspec 'relax-requirements
15244 (lambda _
15245 (substitute* "spy.gemspec"
15246 ((".*pry-byebug.*") ""))
15247 (substitute* "test/test_helper.rb"
15248 ((".*pry-byebug.*") ""))
15249 (substitute* "Gemfile"
15250 ((".*redcarpet.*") "")
15251 ((".*yard.*") "")))))))
15252 (native-inputs
15253 (list ruby-coveralls
15254 ruby-minitest-reporters
15255 ruby-pry
15256 ruby-rspec-core
15257 ruby-rspec-expectations))
15258 (synopsis "Mocking library for Ruby")
15259 (description "Spy is a mocking library. By default, it will raise an
15260error if you attempt to stub a method that doesn't exist or call the stubbed
15261method with the wrong arity.")
15262 (home-page "https://github.com/ryanong/spy")
15263 (license license:expat)))
15264
15265(define-public ruby-subprocess
15266 (package
15267 (name "ruby-subprocess")
15268 (version "1.5.6")
15269 (source (origin
15270 (method url-fetch)
15271 (uri (rubygems-uri "subprocess" version))
15272 (sha256
15273 (base32
15274 "0v49ahfx9b75qg42sl8a3l367g2vihc16g8z5f2raxpxjl1wh2s2"))))
15275 (build-system ruby-build-system)
15276 ;; Do not run the test suite, as there its test dependency ruby-sord would
15277 ;; introduce a cycle with ruby-sorbet-runtime.
15278 (arguments (list #:tests? #f))
15279 (native-inputs (list ruby-minitest ruby-pry))
15280 (synopsis "Ruby library to control and communicate with spawned processes")
15281 (description "This Ruby library is controlling and communicating with
15282spawned processes. It is designed after Python's @code{subprocess} module.")
15283 (home-page "https://github.com/stripe/subprocess")
15284 (license license:expat)))
15285
15286(define-public ruby-sus
15287 (package
15288 (name "ruby-sus")
15289 (version "0.20.3")
15290 (source (origin
15291 (method git-fetch) ;for gems.rb
15292 (uri (git-reference
15293 (url "https://github.com/ioquatix/sus")
15294 (commit (string-append "v" version))))
15295 (file-name (git-file-name name version))
15296 (sha256
15297 (base32
15298 "0j4rkh9li79674h3lfkxlcdygscmb22l77i7hwhxl3gw103gkpdr"))))
15299 (build-system ruby-build-system)
15300 (arguments
15301 (list #:phases
15302 #~(modify-phases %standard-phases
15303 (add-before 'build 'prune-gems.rb
15304 (lambda _
15305 (substitute* "gems.rb"
15306 (("gem \"bake-modernize\"") "")
15307 (("gem \"bake-gem\"") "")
15308 (("gem \"utopia-project\"") ""))))
15309 (add-before 'build 'remove-missing-signing-key
15310 (lambda _
15311 ;; Otherwise, the build fails with ENOENT.
15312 (substitute* "sus.gemspec"
15313 ((".*spec.signing_key.*") ""))))
15314 (delete 'check) ;moved after install
15315 (add-after 'install 'check
15316 (lambda* (#:key tests? #:allow-other-keys)
15317 (when tests?
15318 (setenv "CONSOLE_LEVEL" "debug")
15319 (setenv "HOME" "/tmp")
15320 ;; 'bundle exec' must be used to workaround a problem
15321 ;; when using bake test and GEM_PATH (see:
15322 ;; https://github.com/ioquatix/bake/issues/11).
15323 (invoke "bundle" "exec" "bake" "test"))))
15324 (add-before 'check 'set-paths
15325 (lambda _
15326 (setenv "PATH" (string-append (getenv "PATH") ":"
15327 #$output "/bin"))
15328 (setenv "GEM_PATH" (string-append
15329 (getenv "GEM_PATH") ":"
15330 #$output "/lib/ruby/vendor_ruby")))))))
15331 (native-inputs (list ruby-bake-test ruby-bake-test-external ruby-covered))
15332 (synopsis "Fast and scalable test runner for Ruby")
15333 (description "This package provides a fast and scalable test runner for Ruby.")
15334 (home-page "https://github.com/ioquatix/sus")
15335 (license license:expat)))
15336
15337(define-public ruby-syntax-tree
15338 (package
15339 (name "ruby-syntax-tree")
15340 (version "6.1.1")
15341 (source (origin
15342 (method git-fetch) ;for tests
15343 (uri (git-reference
15344 (url "https://github.com/ruby-syntax-tree/syntax_tree")
15345 (commit (string-append "v" version))))
15346 (file-name (git-file-name name version))
15347 (sha256
15348 (base32
15349 "0356lgvqp22nkqlrgszf7myfdg4arclg278awh34zyby1cx6hb2k"))))
15350 (build-system ruby-build-system)
15351 (arguments
15352 (list
15353 #:phases
15354 #~(modify-phases %standard-phases
15355 ;; The tests rely on the Gem being installed, so move the check
15356 ;; phase after the install phase.
15357 (delete 'check)
15358 (add-after 'install 'check
15359 (lambda* (#:key tests? #:allow-other-keys)
15360 (setenv "GEM_PATH" (string-append
15361 #$output "/lib/ruby/vendor_ruby:"
15362 (getenv "GEM_PATH")))
15363 (when tests?
15364 (invoke "rake" "test")))))))
15365 (native-inputs (list ruby-rubocop-ast ruby-simplecov))
15366 (propagated-inputs (list ruby-prettier-print))
15367 (synopsis "Fast Ruby parser and formatter")
15368 (description "Syntax Tree is a suite of tools built on top of the internal
15369CRuby parser. It provides the ability to generate a syntax tree from source,
15370as well as the tools necessary to inspect and manipulate that syntax tree. It
15371can be used to build formatters, linters, language servers, and more.")
15372 (home-page "https://github.com/ruby-syntax-tree/syntax_tree")
15373 (license license:expat)))
15374
15375(define-public ruby-stringio
15376 (package
15377 (name "ruby-stringio")
15378 (version "3.1.0")
15379 (source (origin
15380 (method git-fetch)
15381 (uri (git-reference
15382 (url "https://github.com/ruby/stringio")
15383 (commit (string-append "v" version))))
15384 (file-name (git-file-name name version))
15385 (sha256
15386 (base32
15387 "1jgi2w5y0z0x9mfapr2pdlag4wvn03fpf5kbai8bscyh8nn79yka"))))
15388 (build-system ruby-build-system)
15389 (native-inputs (list ruby-rake-compiler ruby-test-unit-ruby-core))
15390 (synopsis "Pseudo `IO` class from and to `String`")
15391 (description "Pseudo `IO` class from and to `String`.")
15392 (home-page "https://github.com/ruby/stringio")
15393 (license license:bsd-2)))
15394
15395(define-public ruby-stream
15396 (package
15397 (name "ruby-stream")
15398 (version "0.5.5")
15399 (source (origin
15400 (method url-fetch)
15401 (uri (rubygems-uri "stream" version))
15402 (sha256
15403 (base32
15404 "016m9v81vpj14d8g5ins91zc4pzl7vf5f1gxl7jhfsfy601k7cv2"))))
15405 (build-system ruby-build-system)
15406 (arguments
15407 '(#:phases
15408 (modify-phases %standard-phases
15409 (add-before 'check 'remove-version-constraints
15410 (lambda _
15411 (delete-file "Gemfile.lock"))))))
15412 (native-inputs (list bundler ruby-stringio ruby-webrick ruby-yard))
15413 (synopsis "Interface for external iterators")
15414 (description "Module Stream defines an interface for external iterators.")
15415 (home-page "https://github.com/monora/stream")
15416 (license license:bsd-2)))
15417
15418(define sorbet-version "0.5.10610.20230106174520-1fa668010")
15419
15420(define sorbet-monorepo
15421 (origin
15422 (method git-fetch)
15423 (uri (git-reference
15424 (url "https://github.com/sorbet/sorbet")
15425 (commit sorbet-version)))
15426 (file-name (string-append "sorbet-" sorbet-version "-checkout"))
15427 (sha256
15428 (base32
15429 "0f21dl06alxwn6xgdxyrkd58plmmsv04z2bcls9ld4cfzsrs5537"))))
15430
15431(define (make-sorbet-gem-source gem)
15432 "Return the source of GEM, a sub-directory."
15433 (computed-file
15434 (string-append "ruby-sorbet-" gem "-" sorbet-version "-checkout")
15435 (with-imported-modules (source-module-closure '((guix build utils)))
15436 #~(begin
15437 (use-modules (guix build utils))
15438 (copy-recursively (string-append #$sorbet-monorepo
15439 "/gems/sorbet-" #$gem)
15440 #$output)))))
15441
15442(define-public ruby-sorbet-runtime
15443 (package
15444 (name "ruby-sorbet-runtime")
15445 (version sorbet-version)
15446 (source (make-sorbet-gem-source "runtime"))
15447 (build-system ruby-build-system)
15448 ;; 25 out of 841 tests currently fail, seemingly due to invalid
15449 ;; assumptions about file names in the build environment (see:
15450 ;; https://github.com/sorbet/sorbet/issues/6650).
15451 (arguments (list #:tests? #f))
15452 (native-inputs
15453 (list ruby-minitest
15454 ruby-mocha
15455 ruby-rubocop
15456 ruby-rubocop-performance
15457 ruby-concurrent-ruby
15458 ruby-pry
15459 ruby-parser
15460 ruby-subprocess))
15461 (synopsis "Runtime type checking component for Sorbet")
15462 (description "Sorbet's runtime type checking component. Sorbet is a
15463powerful type checker for Ruby.")
15464 (home-page "https://sorbet.org")
15465 (license license:asl2.0)))
15466
15467(define-public ruby-mustache
15468 (package
15469 (name "ruby-mustache")
15470 (version "1.1.1")
15471 (source
15472 (origin
15473 (method url-fetch)
15474 (uri (rubygems-uri "mustache" version))
15475 (sha256
15476 (base32 "1l0p4wx15mi3wnamfv92ipkia4nsx8qi132c6g51jfdma3fiz2ch"))))
15477 (build-system ruby-build-system)
15478 (native-inputs
15479 `(("ruby-simplecov" ,ruby-simplecov)
15480 ("test-patch"
15481 ,(search-patch "ruby-mustache-1.1.1-fix-race-condition-tests.patch"))))
15482 (arguments
15483 `(#:phases
15484 (modify-phases %standard-phases
15485 (add-after 'unpack 'patch-tests
15486 (lambda* (#:key inputs #:allow-other-keys)
15487 (invoke "patch" "-p1" "--batch" "-i"
15488 (assoc-ref inputs "test-patch")))))))
15489 (synopsis "Framework-agnostic way to render logic-free views")
15490 (description
15491 "Mustache is a framework-agnostic way to render logic-free views.
15492Think of Mustache as a replacement for your views. Instead of views
15493consisting of ERB or HAML with random helpers and arbitrary logic,
15494your views are broken into two parts: a Ruby class and an HTML
15495template.")
15496 (home-page "https://github.com/mustache/mustache")
15497 (license license:expat)))
15498
15499(define-public ruby-mustermann
15500 (package
15501 (name "ruby-mustermann")
15502 (version "3.0.0")
15503 (source
15504 (origin
15505 (method url-fetch)
15506 (uri (rubygems-uri "mustermann" version))
15507 (sha256
15508 (base32
15509 "0rwbq20s2gdh8dljjsgj5s6wqqfmnbclhvv2c2608brv7jm6jdbd"))))
15510 (build-system ruby-build-system)
15511 (arguments
15512 ;; No tests.
15513 '(#:tests? #f))
15514 (synopsis "Library implementing patterns that behave like regular expressions")
15515 (description "Given a string pattern, Mustermann will turn it into an
15516object that behaves like a regular expression and has comparable performance
15517characteristics.")
15518 (home-page "https://github.com/sinatra/mustermann")
15519 (license license:expat)))
15520
15521(define-public ruby-prettier-print
15522 (package
15523 (name "ruby-prettier-print")
15524 (version "1.2.1")
15525 (source (origin
15526 (method git-fetch) ;for tests
15527 (uri (git-reference
15528 (url "https://github.com/ruby-syntax-tree/prettier_print")
15529 (commit (string-append "v" version))))
15530 (file-name (git-file-name name version))
15531 (sha256
15532 (base32
15533 "00cg40jc0il1hpsrpsrqwhsxmx7day9lxp1ksrm08zxzsrz9ykqz"))))
15534 (build-system ruby-build-system)
15535 (native-inputs (list ruby-simplecov))
15536 (synopsis "Compatible and featureful implementation of @code{prettyprint}")
15537 (description "This package provides a drop-in replacement for the
15538@code{prettyprint} gem, with more functionality.")
15539 (home-page "https://github.com/ruby-syntax-tree/prettier_print")
15540 (license license:expat)))
15541
15542(define-public ruby-html-proofer
15543 (package
15544 (name "ruby-html-proofer")
15545 (version "5.0.3")
15546 (source
15547 (origin
15548 (method git-fetch)
15549 (uri (git-reference
15550 (url "https://github.com/gjtorikian/html-proofer")
15551 (commit (string-append "v" version))))
15552 (file-name (git-file-name name version))
15553 (sha256
15554 (base32
15555 "01ksss3ikppc45z2q33bx8bb9785bqlp1rdqascaqg9mhs392adk"))))
15556 (build-system ruby-build-system)
15557 (arguments
15558 (list
15559 ;; Tests require vcr, which is under the Hippocratic license, which is
15560 ;; not a free software license (see:
15561 ;; https://www.gnu.org/licenses/license-list.html#hippocratic).
15562 #:tests? #f
15563 #:phases
15564 #~(modify-phases %standard-phases
15565 (add-after 'extract-gemspec 'relax-requirements
15566 (lambda _
15567 (substitute* "html-proofer.gemspec"
15568 (("required_ruby_version = \\[\">= 3.1\"")
15569 "required_ruby_version = [\">= 2.6\""))))
15570 (replace 'replace-git-ls-files
15571 (lambda _
15572 ;; The html-proofer.gemspec file contains 'all_files = %x(git
15573 ;; ls-files -z).split("\x0")', but the original phase matches on
15574 ;; `git ls-files -z`.
15575 ;; TODO: Improve ruby-build-system patterns on core-updates.
15576 (substitute* "html-proofer.gemspec"
15577 (("git ls-files -z")
15578 "find . -type f -not -regex '.*\\.gem$' -print0 \
15579| sort -z | cut -zc3-")))))))
15580 (propagated-inputs
15581 (list ruby-addressable
15582 ruby-mercenary
15583 ruby-nokogiri
15584 ruby-parallel
15585 ruby-rainbow
15586 ruby-typhoeus
15587 ruby-yell))
15588 (synopsis "Test your rendered HTML files to make sure they're accurate")
15589 (description
15590 "HTMLProofer is a set of tests to validate your HTML output. These
15591tests check if your image references are legitimate, if they have alt tags,
15592if your internal links are working, and so on. It's intended to be an
15593all-in-one checker for your output.")
15594 (home-page "https://github.com/gjtorikian/html-proofer")
15595 (license license:expat)))
15596
15597(define-public ruby-htmlentities
15598 (package
15599 (name "ruby-htmlentities")
15600 (version "4.3.4")
15601 (source
15602 (origin
15603 (method url-fetch)
15604 (uri (rubygems-uri "htmlentities" version))
15605 (sha256
15606 (base32
15607 "1nkklqsn8ir8wizzlakncfv42i32wc0w9hxp00hvdlgjr7376nhj"))))
15608 (build-system ruby-build-system)
15609 (arguments
15610 `(#:phases
15611 (modify-phases %standard-phases
15612 (replace 'check
15613 (lambda _
15614 (map (lambda (file)
15615 (invoke "ruby" "-Itest" file))
15616 (find-files "./test" ".*_test\\.rb")))))))
15617 (synopsis "Encode and decode (X)HTML entities")
15618 (description
15619 "This package provides a module for encoding and decoding (X)HTML
15620entities.")
15621 (home-page "https://github.com/threedaymonk/htmlentities")
15622 (license license:expat)))
15623
15624;;; FIXME: Currently broken with rack 3, awaiting the merge for
15625;;; https://github.com/sinatra/sinatra/pull/1857 and a new release.
15626(define-public ruby-sinatra
15627 (package
15628 (name "ruby-sinatra")
15629 (version "3.0.5")
15630 (source
15631 (origin
15632 (method url-fetch)
15633 (uri (rubygems-uri "sinatra" version))
15634 (sha256
15635 (base32
15636 "1ryfja9yd3fq8n1p5yi3qnd0pjk7bkycmxxmbb1bj0axlr1pdv20"))))
15637 (build-system ruby-build-system)
15638 (propagated-inputs
15639 (list ruby-mustermann ruby-rack ruby-rack-protection ruby-tilt))
15640 (synopsis "DSL for quick web applications creation in Ruby")
15641 (description
15642 "Sinatra is a DSL for quickly creating web applications in Ruby with
15643minimal effort.")
15644 (home-page "https://sinatrarb.com/")
15645 (license license:expat)))
15646
15647(define-public ruby-timeout
15648 (package
15649 (name "ruby-timeout")
15650 (version "0.4.3")
15651 (source (origin
15652 (method git-fetch) ;for tests
15653 (uri (git-reference
15654 (url "https://github.com/ruby/timeout")
15655 (commit (string-append "v" version))))
15656 (file-name (git-file-name name version))
15657 (sha256
15658 (base32
15659 "1mw2dwyp2j05fl2gmw8cj132kk145sbxj5i0whpxcnddlc8gw781"))))
15660 (build-system ruby-build-system)
15661 (native-inputs (list ruby-test-unit-ruby-core))
15662 (synopsis "Timeout library for Ruby")
15663 (description "Timeout provides a way to auto-terminate a potentially
15664long-running operation if it hasn't finished in a fixed amount of time.")
15665 (home-page "https://github.com/ruby/timeout")
15666 (license (list license:bsd-2))))
15667
15668(define-public ruby-thin
15669 (package
15670 (name "ruby-thin")
15671 (version "1.7.2")
15672 (source
15673 (origin
15674 (method url-fetch)
15675 (uri (rubygems-uri "thin" version))
15676 (sha256
15677 (base32
15678 "0nagbf9pwy1vg09k6j4xqhbjjzrg5dwzvkn4ffvlj76fsn6vv61f"))))
15679 (build-system ruby-build-system)
15680 (arguments
15681 ;; No tests.
15682 '(#:tests? #f))
15683 (propagated-inputs
15684 (list ruby-daemons ruby-eventmachine ruby-rack))
15685 (synopsis "Thin and fast web server for Ruby")
15686 (description "Thin is a Ruby web server that glues together 3 Ruby libraries:
15687@itemize
15688@item the Mongrel parser,
15689@item Event Machine, a network I/O library with high scalability, performance
15690and stability,
15691@item Rack, a minimal interface between webservers and Ruby frameworks.
15692@end itemize\n")
15693 (home-page "https://github.com/macournoyer/thin")
15694 (license license:ruby)))
15695
15696(define-public ruby-truthy
15697 (package
15698 (name "ruby-truthy")
15699 (version "1.0.0")
15700 (source (origin
15701 (method url-fetch)
15702 (uri (rubygems-uri "truthy" version))
15703 (sha256
15704 (base32
15705 "19silgd65j3qwfk5w891p9wcmzdmi9ddm2kg5zbvvqn2h9lkfzmd"))))
15706 (build-system ruby-build-system)
15707 (arguments (list #:phases #~(modify-phases %standard-phases
15708 (replace 'check
15709 (lambda* (#:key tests? #:allow-other-keys)
15710 (when tests?
15711 (substitute* "spec/spec_helper.rb"
15712 (("require 'spec'")
15713 "require 'rspec'"))
15714 (invoke "rspec")))))))
15715 (native-inputs (list ruby-rspec))
15716 (synopsis "Object truthiness-related Ruby library")
15717 (description "This library makes it easier to discover the truth values of
15718various Ruby objects.")
15719 (home-page "https://github.com/ymendel/truthy")
15720 (license license:expat)))
15721
15722(define-public ruby-skinny
15723 (package
15724 (name "ruby-skinny")
15725 (version "0.2.4")
15726 (source
15727 (origin
15728 (method url-fetch)
15729 (uri (rubygems-uri "skinny" version))
15730 (sha256
15731 (base32
15732 "1y3yvx88ylgz4d2s1wskjk5rkmrcr15q3ibzp1q88qwzr5y493a9"))))
15733 (build-system ruby-build-system)
15734 (arguments
15735 '(#:tests? #f ; No included tests
15736 #:phases
15737 (modify-phases %standard-phases
15738 (add-before 'build 'patch-gemspec
15739 (lambda _
15740 (substitute* ".gemspec"
15741 (("<eventmachine>.freeze, \\[\\\"~> 1.0.0\"")
15742 "<eventmachine>, [\">= 1.0.0\"")
15743 (("<thin>.freeze, \\[\\\"< 1.7\", ") "<thin>, [")))))))
15744 (propagated-inputs
15745 (list ruby-eventmachine ruby-thin))
15746 (synopsis "Simple, upgradable WebSockets for Ruby Thin")
15747 (description "Skinny is a simple, upgradable WebSockets for Ruby, using
15748the Thin library.")
15749 (home-page "https://github.com/sj26/skinny")
15750 (license license:expat)))
15751
15752(define-public ruby-sys-filesystem
15753 (package
15754 (name "ruby-sys-filesystem")
15755 (version "1.3.4")
15756 (source (origin
15757 (method url-fetch)
15758 (uri (rubygems-uri "sys-filesystem" version))
15759 (sha256
15760 (base32
15761 "0mizqnsiagagmracadr16s5na2ks2j3ih1w0f3gp4ssrda6szl01"))))
15762 (build-system ruby-build-system)
15763 (arguments
15764 '(#:phases (modify-phases %standard-phases
15765 (add-before 'check 'set-HOME
15766 (lambda _
15767 ;; Some tests attempt to stat $HOME. Let them.
15768 (setenv "HOME" "/tmp"))))))
15769 (propagated-inputs
15770 (list ruby-ffi))
15771 (native-inputs
15772 (list ruby-mkmf-lite))
15773 (synopsis "Gather file system information")
15774 (description
15775 "The @code{sys-filesystem} library provides a cross-platform interface
15776for gathering file system information, such as disk space and mount points.")
15777 (home-page "https://github.com/djberg96/sys-filesystem")
15778 (license license:asl2.0)))
15779
15780(define-public mailcatcher
15781 (package
15782 (name "mailcatcher")
15783 (version "0.7.1")
15784 (source
15785 (origin
15786 (method url-fetch)
15787 (uri (rubygems-uri "mailcatcher" version))
15788 (sha256
15789 (base32
15790 "02w1ycyfv7x0sh9799lz7xa65p5qvl5z4pa8a7prb68h2zwkfq0n"))))
15791 (build-system ruby-build-system)
15792 (arguments
15793 ;; Tests require web/assets which is not included in the output. We
15794 ;; might be able to fix this by adding the Git repository to the GEM_PATH
15795 ;; of the tests. See ruby-mysql2.
15796 '(#:tests? #f
15797 #:phases
15798 (modify-phases %standard-phases
15799 (add-before 'build 'patch-gemspec
15800 (lambda _
15801 (substitute* ".gemspec"
15802 (("<eventmachine>.freeze, \\[\\\"= 1.0.9.1")
15803 "<eventmachine>, [\">= 1.0.9.1")
15804 (("<rack>.freeze, \\[\\\"~> 1.5") "<rack>, [\">= 1.5")
15805 (("<thin>.freeze, \\[\\\"~> 1.5.0") "<thin>, [\">= 1.5.0")
15806 (("<sinatra>.freeze, \\[\\\"~> 1.2") "<sinatra>, [\">= 1.2"))))
15807 (add-before 'build 'loosen-dependency-contraint
15808 (lambda _
15809 (substitute* "lib/mail_catcher.rb"
15810 (("\"eventmachine\", \"1.0.9.1\"") "\"eventmachine\", \">= 1.0.9.1\"")
15811 (("\"rack\", \"~> 1.5\"") "\"rack\", \">= 1.5\"")
15812 (("\"thin\", \"~> 1.5.0\"") "\"thin\", \">= 1.5.0\"")
15813 (("\"sinatra\", \"~> 1.2\"") "\"sinatra\", \">= 1.2\"")))))))
15814 (inputs
15815 (list ruby-eventmachine
15816 ruby-mail
15817 ruby-rack
15818 ruby-sinatra
15819 ruby-skinny
15820 ruby-sqlite3
15821 ruby-thin))
15822 (synopsis "SMTP server which catches messages to display them a browser")
15823 (description
15824 "MailCatcher runs a super simple SMTP server which catches any message
15825sent to it to display in a web interface. Run mailcatcher, set your favourite
15826app to deliver to smtp://127.0.0.1:1025 instead of your default SMTP server,
15827then check out http://127.0.0.1:1080 to see the mail.")
15828 (home-page "https://mailcatcher.me")
15829 (license license:expat)))
15830
15831(define-public ruby-backport
15832 (package
15833 (name "ruby-backport")
15834 (version "1.1.2")
15835 (source
15836 (origin
15837 ;; The gem does not include test code, so fetch from the Git repository.
15838 (method git-fetch)
15839 (uri (git-reference
15840 (url "https://github.com/castwide/backport")
15841 (commit (string-append "v" version))))
15842 (file-name (git-file-name name version))
15843 (sha256
15844 (base32 "18fpg1n7n2z02ykz9v1x1q0cqa2lvivf8ygka768s01q1r9wfwv2"))))
15845 (build-system ruby-build-system)
15846 (arguments
15847 `(#:test-target "spec"))
15848 (native-inputs
15849 (list bundler ruby-rspec))
15850 (inputs
15851 (list ruby-simplecov))
15852 (synopsis "Pure Ruby library for event-driven IO")
15853 (description
15854 "This package provides a pure Ruby library for event-driven IO.")
15855 (home-page "https://github.com/castwide/backport")
15856 (license license:expat)))
15857
15858(define-public ruby-json-schema
15859 (package
15860 (name "ruby-json-schema")
15861 (version "2.8.1")
15862 (source
15863 (origin
15864 (method url-fetch)
15865 (uri (rubygems-uri "json-schema" version))
15866 (sha256
15867 (base32
15868 "1yv5lfmr2nzd14af498xqd5p89f3g080q8wk0klr3vxgypsikkb5"))))
15869 (build-system ruby-build-system)
15870 (arguments
15871 `(#:tests? #f ; no tests
15872 #:phases
15873 (modify-phases %standard-phases
15874 (replace 'build
15875 (lambda _
15876 (invoke "gem" "build" ".gemspec"))))))
15877 (propagated-inputs
15878 (list ruby-addressable))
15879 (synopsis "Ruby JSON Schema Validator")
15880 (description "This library provides Ruby with an interface for validating
15881JSON objects against a JSON schema conforming to JSON Schema Draft 4. Legacy
15882support for JSON Schema Draft 3, JSON Schema Draft 2, and JSON Schema Draft 1
15883is also included.")
15884 (home-page "https://github.com/ruby-json-schema/json-schema")
15885 (license license:expat)))
15886
15887(define-public swagger-diff
15888 (package
15889 (name "swagger-diff")
15890 (version "2.0.0")
15891 (source
15892 (origin
15893 (method url-fetch)
15894 (uri (rubygems-uri "swagger-diff" version))
15895 (sha256
15896 (base32
15897 "18kbrijkafs3vfsbaqz0cqfj7jrz3aj8xr4fgn5if63wlximybv2"))))
15898 (build-system ruby-build-system)
15899 (arguments
15900 (list
15901 #:test-target "spec"
15902 #:phases
15903 #~(modify-phases %standard-phases
15904 ;; Don't run or require rubocop, the code linting tool, as this is a
15905 ;; bit unnecessary.
15906 (add-after 'unpack 'dont-run-rubocop
15907 (lambda _
15908 (substitute* "Rakefile"
15909 ((".*rubocop.*") "")
15910 ((".*RuboCop.*") "")))))))
15911 (propagated-inputs
15912 (list ruby-json-schema))
15913 (native-inputs
15914 (list bundler ruby-rspec-core ruby-rspec-expectations))
15915 (synopsis
15916 "Compare Open API Initiative specification files")
15917 (description
15918 "Swagger::Diff is a utility for comparing two different Open API
15919Initiative (OAI) specifications (formerly known as Swagger specifications).
15920It is intended to determine whether a newer API specification is
15921backwards-compatible with an older API specification.")
15922 (home-page "https://github.com/civisanalytics/swagger-diff")
15923 (license license:bsd-3)))
15924
15925(define-public ruby-reverse-markdown
15926 (package
15927 (name "ruby-reverse-markdown")
15928 (version "1.1.0")
15929 (source
15930 (origin
15931 (method url-fetch)
15932 (uri (rubygems-uri "reverse_markdown" version))
15933 (sha256
15934 (base32
15935 "0w7y5n74daajvl9gixr91nh8670d7mkgspkk3ql71m8azq3nffbg"))))
15936 (build-system ruby-build-system)
15937 (propagated-inputs
15938 (list ruby-nokogiri))
15939 (native-inputs
15940 (list bundler ruby-rspec ruby-kramdown ruby-simplecov))
15941 (arguments
15942 `(#:phases
15943 (modify-phases %standard-phases
15944 (replace 'check
15945 (lambda* (#:key tests? #:allow-other-keys)
15946 (when tests?
15947 (invoke "rspec")))))))
15948 (synopsis "Convert HTML into Markdown")
15949 (description
15950 "This Ruby module allows you to map simple HTML back into
15951Markdown---e.g., if you want to import existing HTML data in your
15952application.")
15953 (home-page "https://github.com/xijo/reverse_markdown")
15954 (license license:wtfpl2)))
15955
15956(define-public ruby-solargraph
15957 (package
15958 (name "ruby-solargraph")
15959 (version "0.40.3")
15960 (source
15961 (origin
15962 (method url-fetch)
15963 (uri (rubygems-uri "solargraph" version))
15964 (sha256
15965 (base32
15966 "1gf049rm0yvw4r8r5yyi890idbfg8qh0dikqx5prvkh11srl73bz"))))
15967 (build-system ruby-build-system)
15968 (propagated-inputs
15969 (list ruby-backport
15970 bundler
15971 ruby-benchmark
15972 ruby-e2mmap
15973 ruby-jaro-winkler
15974 ruby-kramdown
15975 ruby-kramdown-parser-gfm
15976 ruby-maruku
15977 ruby-nokogiri
15978 ruby-parser
15979 ruby-reverse-markdown
15980 ruby-rubocop
15981 ruby-thor
15982 ruby-tilt
15983 ruby-yard))
15984 (native-inputs
15985 (list ruby-rspec ruby-pry ruby-simplecov ruby-webmock))
15986 ;; FIXME: can't figure out how to run the tests properly:
15987
15988 ;; An error occurred while loading spec_helper.
15989 ;; Failure/Error: return gem_original_require(path)
15990 ;; LoadError:
15991 ;; cannot load such file -- spec_helper
15992 (arguments
15993 '(#:tests? #f
15994 #:phases
15995 (modify-phases %standard-phases
15996 (replace 'check
15997 (lambda* (#:key tests? #:allow-other-keys)
15998 (when tests?
15999 (invoke "rspec")))))))
16000 (synopsis
16001 "IDE tools for code completion, inline documentation, and static analysis")
16002 (description
16003 "Solargraph provides a comprehensive suite of tools for Ruby
16004programming: intellisense, diagnostics, inline documentation, and type
16005checking.")
16006 (home-page "https://solargraph.org/")
16007 (license license:expat)))
16008
16009(define-public ruby-wayback-machine-downloader
16010 (package
16011 (name "ruby-wayback-machine-downloader")
16012 (version "2.2.1")
16013 (source
16014 (origin
16015 (method url-fetch)
16016 (uri (rubygems-uri
16017 "wayback_machine_downloader"
16018 version))
16019 (sha256
16020 (base32
16021 "12kb1qmvmmsaihqab1prn6cmynkn6cgb4vf41mgv22wkcgv5wgk2"))))
16022 (build-system ruby-build-system)
16023 (arguments
16024 '(#:tests? #f)) ; no tests
16025 (synopsis "Download archived websites from the Wayback Machine")
16026 (description
16027 "Wayback Machine Downloader is a command line tool for downloading
16028websites from the Internet Archive's Wayback Machine (archive.org).
16029It allows fine grained control over what to download by specifying
16030which snapshots to consider and what files to include.")
16031 (home-page
16032 "https://github.com/hartator/wayback-machine-downloader")
16033 (license license:expat)))
16034
16035(define-public ruby-zeitwerk
16036 (package
16037 (name "ruby-zeitwerk")
16038 (version "2.7.1")
16039 (source
16040 (origin
16041 (method git-fetch) ;for tests
16042 (uri (git-reference
16043 (url "https://github.com/fxn/zeitwerk")
16044 (commit (string-append "v" version))))
16045 (file-name (git-file-name name version))
16046 (sha256
16047 (base32
16048 "19qmcdpbh4bl878zd1w19064yjkpb8sxaydcasqfa7p8cfg3hnsr"))))
16049 (build-system ruby-build-system)
16050 (native-inputs
16051 (list ruby-minitest
16052 ruby-minitest-focus
16053 ruby-minitest-proveit
16054 ruby-minitest-reporters
16055 ruby-warning))
16056 (synopsis "Efficient and thread-safe code loader for Ruby")
16057 (description
16058 "Zeitwerk implements constant autoloading with Ruby semantics. Each gem
16059and application may have their own independent autoloader, with its own
16060configuration, inflector, and logger. Supports autoloading, reloading, and
16061eager loading.")
16062 (home-page "https://github.com/fxn/zeitwerk")
16063 (license license:expat)))
16064
16065(define-public ruby-warning
16066 (package
16067 (name "ruby-warning")
16068 (version "1.5.0")
16069 (source
16070 (origin
16071 (method url-fetch)
16072 (uri (rubygems-uri "warning" version))
16073 (sha256
16074 (base32 "0lwcf7fsz1sda1fdbqq1i4q9kzg4f5vwrzgfg1vpa1hcxagw84hg"))))
16075 (build-system ruby-build-system)
16076 (arguments '(#:tests? #f)) ; No tests bundled.
16077 (synopsis "Custom processing for warnings")
16078 (description
16079 "This package adds custom processing for warnings for Ruby, including the
16080ability to ignore specific warning messages, ignore warnings in specific
16081files/directories, include backtraces with warnings, treat warnings as errors,
16082deduplicate warnings, and add custom handling for all warnings in specific
16083files/directories.")
16084 (home-page "https://github.com/jeremyevans/ruby-warning")
16085 (license license:expat)))
16086
16087(define-public ruby-wwtd
16088 (package
16089 (name "ruby-wwtd")
16090 (version "1.4.1")
16091 (home-page "https://github.com/grosser/wwtd")
16092 (source (origin
16093 (method git-fetch)
16094 (uri (git-reference
16095 (url home-page)
16096 (commit (string-append "v" version))))
16097 (file-name (git-file-name name version))
16098 (sha256
16099 (base32
16100 "0gw7vfnbb41cy67yw82zji3jkhfsgmzcgzaszm99ax77y18wclf2"))
16101 (modules '((guix build utils)))
16102 (snippet
16103 '(begin
16104 ;; Remove bundled library.
16105 (delete-file "spec/rake-12.3.0.gem")))))
16106 (build-system ruby-build-system)
16107 (arguments
16108 '(;; XXX: Tests need multiple versions of ruby, wants to run
16109 ;; `bundle install`, etc.
16110 #:tests? #f
16111 #:phases (modify-phases %standard-phases
16112 (replace 'replace-git-ls-files
16113 (lambda _
16114 (substitute* "wwtd.gemspec"
16115 (("git ls-files lib/ bin/`")
16116 "find lib/ bin/ -type f |sort`"))))
16117 (add-before 'check 'remove-version-constraints
16118 (lambda _
16119 (delete-file "Gemfile.lock")))
16120 (replace 'check
16121 (lambda* (#:key tests? #:allow-other-keys)
16122 (if tests?
16123 (invoke "rspec" "spec/")
16124 (format #t "test suite not run~%")))))))
16125 (native-inputs
16126 (list ruby-bump ruby-rspec))
16127 (synopsis "Run @file{.travis.yml} files locally")
16128 (description
16129 "WWTD is a @dfn{Travis Simulator} that lets you run test matrices
16130defined in @file{.travis.yml} on your local machine, using @code{rvm},
16131@code{rbenv}, or @code{chruby} to test different versions of Ruby.")
16132 (license license:expat)))
16133
16134(define-public ruby-rugged
16135 ;; The last release is old and doesn't build anymore (see:
16136 ;; https://github.com/libgit2/rugged/issues/951).
16137 (let ((commit "6379f23cedd5f527cf6a5c229627e366b590a22d")
16138 (revision "0"))
16139 (package
16140 (name "ruby-rugged")
16141 (version (git-version "1.6.2" revision commit))
16142 (source (origin
16143 (method git-fetch)
16144 (uri (git-reference
16145 (url "https://github.com/libgit2/rugged")
16146 (commit commit)))
16147 (file-name (git-file-name name version))
16148 (sha256
16149 (base32
16150 "0yac7vm0l2jsdsxf2k7xbny4iyzsy8fhiy2g5sphhffp7xgynny8"))))
16151 (build-system ruby-build-system)
16152 (arguments
16153 (list #:gem-flags
16154 #~(list "--" "--use-system-libraries")
16155 #:phases
16156 #~(modify-phases %standard-phases
16157 (add-after 'unpack 'adjust-extconf.rb
16158 (lambda _
16159 ;; Neither using --with-git2-dir=$prefix nor providing
16160 ;; pkg-config allows locating the libgit2 prefix (see:
16161 ;; https://github.com/libgit2/rugged/issues/955).
16162 (substitute* "ext/rugged/extconf.rb"
16163 (("LIBGIT2_DIR = File.join.*'vendor', 'libgit2'.*")
16164 (format #f "LIBGIT2_DIR = ~s~%"
16165 #$(this-package-input "libgit2"))))))
16166 (delete 'check) ;moved after the install phase
16167 (add-after 'install 'check
16168 (assoc-ref %standard-phases 'check))
16169 (add-before 'check 'set-GEM_PATH
16170 (lambda _
16171 (setenv "GEM_PATH" (string-append
16172 (getenv "GEM_PATH") ":"
16173 #$output "/lib/ruby/vendor_ruby"))))
16174 (add-before 'check 'disable-problematic-tests
16175 (lambda _
16176 (with-directory-excursion "test"
16177 (for-each delete-file
16178 ;; These tests require an actual libgit2 git
16179 ;; repository checkout.
16180 '("blame_test.rb"
16181 "blob_test.rb"
16182 "cherrypick_test.rb"
16183 "config_test.rb"
16184 "commit_test.rb"
16185 "diff_test.rb"
16186 "index_test.rb"
16187 "merge_test.rb"
16188 "note_test.rb"
16189 "object_test.rb"
16190 "patch_test.rb"
16191 "rebase_test.rb"
16192 "reference_test.rb"
16193 "remote_test.rb"
16194 "repo_apply_test.rb"
16195 "repo_ignore_test.rb"
16196 "repo_pack_test.rb"
16197 "repo_reset_test.rb"
16198 "repo_test.rb"
16199 "revert_test.rb"
16200 "settings_test.rb"
16201 "status_test.rb"
16202 "submodule_test.rb"
16203 "tag_test.rb"
16204 "tree_test.rb"
16205 "walker_test.rb"))
16206 (delete-file-recursively "online")))))))
16207 (native-inputs (list git-minimal/pinned ruby-rake-compiler))
16208 (inputs (list libgit2))
16209 (synopsis "Ruby bindings to the libgit2 linkable C Git library")
16210 (description "Rugged is a library for accessing libgit2 in Ruby. It gives
16211you the speed and portability of libgit2 with the beauty of the Ruby
16212language.")
16213 (home-page "https://www.rubydoc.info/gems/rugged")
16214 (license license:expat))))
16215
16216(define-public ruby-yell
16217 (package
16218 (name "ruby-yell")
16219 (version "2.2.2")
16220 (source
16221 (origin
16222 (method url-fetch)
16223 (uri (rubygems-uri "yell" version))
16224 (sha256
16225 (base32
16226 "1g16kcdhdfvczn7x81jiq6afg3bdxmb73skqjyjlkp5nqcy6y5hx"))))
16227 (build-system ruby-build-system)
16228 (arguments
16229 `(#:phases
16230 (modify-phases %standard-phases
16231 (replace 'check
16232 (lambda _
16233 (invoke "rake" "examples")))))) ; there is no test target.
16234 (synopsis
16235 "Extensible logging library for Ruby")
16236 (description
16237 "Yell is a comprehensive logging replacement for Ruby. It defines
16238multiple adapters, various log level combinations and message formatting
16239options.")
16240 (home-page "https://github.com/rudionrails/yell")
16241 (license license:expat)))
16242
16243(define-public ruby-e2mmap
16244 (package
16245 (name "ruby-e2mmap")
16246 (version "0.1.0")
16247 (source
16248 (origin
16249 (method url-fetch)
16250 (uri (rubygems-uri "e2mmap" version))
16251 (sha256
16252 (base32
16253 "0n8gxjb63dck3vrmsdcqqll7xs7f3wk78mw8w0gdk9wp5nx6pvj5"))))
16254 (build-system ruby-build-system)
16255 (arguments
16256 `(#:tests? #f)) ;; There is a rakefile but no tests
16257 (synopsis
16258 "Module for defining custom exceptions with specific messages")
16259 (description
16260 "Exception2MessageMapper (e2mmap) is a helper module for easily defining
16261exceptions with predefined messages.")
16262 (home-page "https://github.com/ruby/e2mmap")
16263 (license license:bsd-2)))
16264
16265(define-public ruby-benchmark
16266 (package
16267 (name "ruby-benchmark")
16268 (version "0.4.0")
16269 (source
16270 (origin
16271 (method url-fetch)
16272 (uri (rubygems-uri "benchmark" version))
16273 (sha256
16274 (base32
16275 "0jl71qcgamm96dzyqk695j24qszhcc7liw74qc83fpjljp2gh4hg"))))
16276 (build-system ruby-build-system)
16277 (synopsis "Performance benchmarking library")
16278 (description "This package provides methods for benchmarking Ruby code,
16279giving detailed reports on the time taken for each task.")
16280 (home-page "https://github.com/ruby/benchmark")
16281 (license license:bsd-2)))
16282
16283(define-public ruby-jekyll-feed
16284 (package
16285 (name "ruby-jekyll-feed")
16286 (version "0.15.1")
16287 (source
16288 (origin
16289 (method url-fetch)
16290 (uri (rubygems-uri "jekyll-feed" version))
16291 (sha256
16292 (base32
16293 "1zxqkrnix0xiw98531h5ga6h69jhzlx2jh9qhvcl67p8nq3sgza9"))))
16294 (build-system ruby-build-system)
16295 (arguments
16296 `(#:tests? #false)) ;there are none
16297 (propagated-inputs
16298 (list jekyll))
16299 (synopsis
16300 "Jekyll plugin to generate an Atom feed of your Jekyll posts")
16301 (description
16302 "This package provides a Jekyll plugin to generate an Atom feed
16303of your Jekyll posts.")
16304 (home-page
16305 "https://github.com/jekyll/jekyll-feed")
16306 (license license:expat)))
16307
16308(define-public ruby-jekyll-sitemap
16309 (package
16310 (name "ruby-jekyll-sitemap")
16311 (version "1.4.0")
16312 (source
16313 (origin
16314 (method url-fetch)
16315 (uri (rubygems-uri "jekyll-sitemap" version))
16316 (sha256
16317 (base32
16318 "0622rwsn5i0m5xcyzdn86l68wgydqwji03lqixdfm1f1xdfqrq0d"))))
16319 (build-system ruby-build-system)
16320 (arguments
16321 `(#:tests? #false)) ;there are none
16322 (propagated-inputs
16323 (list jekyll))
16324 (synopsis
16325 "Automatically generate a sitemap.xml for your Jekyll site")
16326 (description
16327 "This package provides a Jekyll plugin to silently generate
16328a sitemaps.org compliant sitemap for your Jekyll site.")
16329 (home-page
16330 "https://github.com/jekyll/jekyll-sitemap")
16331 (license license:expat)))
16332
16333(define-public ruby-jekyll-seo-tag
16334 (package
16335 (name "ruby-jekyll-seo-tag")
16336 (version "2.7.1")
16337 (source
16338 (origin
16339 (method url-fetch)
16340 (uri (rubygems-uri "jekyll-seo-tag" version))
16341 (sha256
16342 (base32
16343 "0fsi75hymk2wswy216fs224p5ycrzjw1kshw1bsl5czhv42wr2w3"))))
16344 (build-system ruby-build-system)
16345 (arguments
16346 `(#:tests? #false))
16347 (propagated-inputs
16348 (list jekyll))
16349 (synopsis
16350 "Jekyll plugin to add metadata tags for search engines and social networks")
16351 (description
16352 "This package provides a Jekyll plugin to add metadata tags for search engines
16353and social networks to better index and display your site's content.")
16354 (home-page
16355 "https://github.com/jekyll/jekyll-seo-tag")
16356 (license license:expat)))
16357
16358(define-public ruby-taskjuggler
16359 (package
16360 (name "ruby-taskjuggler")
16361 (version "3.8.1")
16362 (source
16363 (origin
16364 (method url-fetch)
16365 (uri (rubygems-uri "taskjuggler" version))
16366 (sha256
16367 (base32
16368 "16d5vgz54all8vl3haqy6j69plny3np4kc3wq7wy3xa3i0h7v60z"))))
16369 (build-system ruby-build-system)
16370 (native-inputs (list ruby-rspec tzdata-for-tests))
16371 (propagated-inputs
16372 (list ruby-mail ruby-term-ansicolor))
16373 (arguments
16374 '(#:phases (modify-phases %standard-phases
16375 (replace 'replace-git-ls-files
16376 (lambda _
16377 (substitute* "tasks/rdoc.rake"
16378 (("`git ls-files -- lib`")
16379 "`find lib/ -type f |sort`"))))
16380 (add-before 'check 'tzdir-setup
16381 (lambda* (#:key inputs #:allow-other-keys)
16382 (setenv "TZDIR"
16383 (string-append (assoc-ref inputs "tzdata")
16384 "/share/zoneinfo"))))
16385 (add-before 'check 'delete-test-BatchProcessor
16386 ;; test_BatchProcessor fails with exception:
16387 ;; run> terminated with exception (report_on_exception is true)
16388 (lambda _
16389 (delete-file "test/test_BatchProcessor.rb"))))))
16390 (synopsis
16391 "Project management command line tool with a domain specific language")
16392 (description
16393 "TaskJuggler (tj3) is a project management tool for project planning and
16394tracking using a domain specific language; projects are plain text files
16395written using your favourite text editor. It includes reporting in HTML, CSV
16396or iCalendar format and an email based status tracking system to send and
16397receive time sheets from collaborators.
16398
16399It covers the complete spectrum of project management tasks from the first
16400idea to the completion of the project. It assists you during project scoping,
16401resource assignment, cost and revenue planning, risk and communication
16402management, status tracking and reporting.")
16403 (home-page "https://taskjuggler.org")
16404 (license license:gpl2)))
16405
16406(define-public ruby-cmath
16407 (package
16408 (name "ruby-cmath")
16409 (version "1.0.0")
16410 (source
16411 (origin
16412 (method url-fetch)
16413 (uri (rubygems-uri "cmath" version))
16414 (sha256
16415 (base32
16416 "1xkz6xyhpkjbdvpdib8450w62rls1mjryz0gzbbnadxkxn82nb8m"))))
16417 (build-system ruby-build-system)
16418 (arguments
16419 `(#:tests? #false))
16420 (native-inputs
16421 (list bundler ruby-rake-compiler))
16422 (synopsis "Trigonometric functions for complex numbers")
16423 (description
16424 "This gem is a library that provides trigonometric and transcendental
16425functions for complex numbers. The functions in this module accept integers,
16426floating-point numbers or complex numbers as arguments.")
16427 (home-page "https://github.com/ruby/cmath")
16428 (license license:bsd-2)))
16429
16430(define-public ruby-sucker-punch
16431 (package
16432 (name "ruby-sucker-punch")
16433 (version "3.1.0")
16434 (source
16435 (origin
16436 (method url-fetch)
16437 (uri (rubygems-uri "sucker_punch" version))
16438 (sha256
16439 (base32 "12by9vx8q6l4i56q62k1s1ymaxbpg4rny5zngj5i5h09kyh2yp4p"))))
16440 (build-system ruby-build-system)
16441 (arguments
16442 `(#:phases
16443 (modify-phases %standard-phases
16444 (add-after 'extract-gemspec 'less-strict-dependencies
16445 (lambda _
16446 (substitute* "sucker_punch.gemspec"
16447 (("1.0.0") "1.0")))))))
16448 (native-inputs
16449 (list
16450 ruby-pry))
16451 (propagated-inputs
16452 (list
16453 ruby-concurrent))
16454 (home-page "https://github.com/brandonhilkert/sucker_punch")
16455 (synopsis "Asynchronous processing library for Ruby")
16456 (description "Sucker Punch is a single-process Ruby asynchronous processing
16457library. It is perfect for asynchronous processes like emailing, data crunching
16458or social platform manipulation; and generally recommended for jobs that are
16459fast and non-mission critical like logs, emails, etc.")
16460 (license license:expat)))
16461
16462(define-public ruby-countdownlatch
16463 (package
16464 (name "ruby-countdownlatch")
16465 (version "1.0.0")
16466 (source
16467 (origin
16468 (method url-fetch)
16469 (uri (rubygems-uri "countdownlatch" version))
16470 (sha256
16471 (base32 "1v6pbay6z07fp7yvnba1hmyacbicvmjndd8rn2h1b5rmpcb5s0j3"))))
16472 (build-system ruby-build-system)
16473 (home-page "https://github.com/benlangfeld/countdownlatch")
16474 (synopsis "Thread synchronization aid Ruby")
16475 (description "CountDownLatch is a synchronization aid that allows one or
16476more threads to wait until a set of operations being performed in other threads
16477completes.")
16478 (license license:expat)))
16479
16480(define-public ruby-value-semantics
16481 (package
16482 (name "ruby-value-semantics")
16483 (version "3.6.1")
16484 (source
16485 (origin
16486 (method url-fetch)
16487 (uri (rubygems-uri "value_semantics" version))
16488 (sha256
16489 (base32 "1vdwai8wf6r1fkvdpyz1vzxm89q7ghjvb3pqpg2kvwibwzd99dnx"))))
16490 (build-system ruby-build-system)
16491 (arguments
16492 `(#:phases
16493 (modify-phases %standard-phases
16494 (replace 'check
16495 (lambda* (#:key tests? #:allow-other-keys)
16496 (when tests?
16497 (invoke "rspec")))))))
16498 (native-inputs
16499 (list
16500 ruby-rspec))
16501 (home-page "https://github.com/tomdalling/value_semantics")
16502 (synopsis "Ruby gem for making value classes")
16503 (description "ValueSemantics generates modules that provide conventional
16504value semantics for a given set of attributes. The behaviour is similar to an
16505immutable Struct class, plus extensible, lightweight validation and coercion.")
16506 (license license:expat)))
16507
16508(define-public ruby-promise
16509 (package
16510 (name "ruby-promise")
16511 (version "0.7.4")
16512 (source
16513 (origin
16514 (method url-fetch)
16515 (uri (rubygems-uri "promise.rb" version))
16516 (sha256
16517 (base32 "0a819sikcqvhi8hck1y10d1nv2qkjvmmm553626fmrh51h2i089d"))))
16518 (build-system ruby-build-system)
16519 (arguments
16520 `(#:test-target "spec"
16521 #:phases
16522 (modify-phases %standard-phases
16523 (add-after 'extract-gemspec 'less-strict-dependencies
16524 (lambda _
16525 (substitute* "Rakefile"
16526 (("if Gem.ruby_version.*") "if false\n"))
16527 (substitute* "spec/spec_helper.rb"
16528 ((".*devtools/spec_helper.*") "\n")))))))
16529 (native-inputs
16530 (list
16531 ruby-rspec
16532 ruby-rspec-its
16533 ruby-awesome-print
16534 ruby-fuubar))
16535 (home-page "https://github.com/lgierth/promise.rb")
16536 (synopsis "Asynchronous operation library for Ruby")
16537 (description "Promise is a Ruby implementation of the Promises/A+
16538specification. It provides 100% mutation coverage, tested on MRI 1.9, 2.0, 2.1,
165392.2, Rubinius, and JRuby.")
16540 (license license:unlicense)))
16541
16542(define-public ruby-multicodecs
16543 (package
16544 (name "ruby-multicodecs")
16545 (version "0.2.1")
16546 (source
16547 (origin
16548 (method url-fetch)
16549 (uri (rubygems-uri "multicodecs" version))
16550 (sha256
16551 (base32 "0drq267di57l9zqw6zvqqimilz42rbc8z7392dwkk8wslq30s7v8"))))
16552 (build-system ruby-build-system)
16553 (home-page "https://github.com/SleeplessByte/ruby-multicodec")
16554 (synopsis "Ruby implementation of multiformats/multicodec")
16555 (description "Multicodecs is the ruby implementation of
16556multiformats/multicodec, a canonical table of of codecs used by various
16557multiformats.")
16558 (license license:expat)))
16559
16560(define-public ruby-multihashes
16561 (package
16562 (name "ruby-multihashes")
16563 (version "0.2.0")
16564 (source
16565 (origin
16566 (method url-fetch)
16567 (uri (rubygems-uri "multihashes" version))
16568 (sha256
16569 (base32 "17wiyy3fiv8rpgdv9ca01yncsmaaf8yg15bg18wc7m9frss1vgqg"))))
16570 (build-system ruby-build-system)
16571 (propagated-inputs
16572 (list
16573 ruby-multicodecs))
16574 (home-page "https://github.com/multiformats/ruby-multihash")
16575 (synopsis "Multihash implementation for Ruby")
16576 (description "Multihashes provides a simple, low-level multihash
16577implementation for Ruby. A multihash is a digest with an embedded hash function
16578code")
16579 (license license:expat)))
16580
16581(define-public ruby-lazy-object
16582 (package
16583 (name "ruby-lazy-object")
16584 (version "0.0.3")
16585 (source
16586 (origin
16587 (method url-fetch)
16588 (uri (rubygems-uri "lazy_object" version))
16589 (sha256
16590 (base32 "08px15lahc28ik9smvw1hgamf792gd6gq0s4k94yq1h7jq25wjn8"))))
16591 (build-system ruby-build-system)
16592 (arguments
16593 `(#:test-target "spec"))
16594 (home-page "https://github.com/HornsAndHooves/lazy_object")
16595 (synopsis "Object wrapper that forwards all calls to the reference object")
16596 (description "LazyObject is an object wrapper that forwards all calls to the
16597reference object. This object is not created until the first method dispatch.")
16598 (license license:expat)))
16599
16600(define-public ruby-citrus
16601 (package
16602 (name "ruby-citrus")
16603 (version "3.0.2")
16604 (source
16605 (origin
16606 (method git-fetch)
16607 ;; Download from GitHub because the rubygems version does not contain
16608 ;; files needed for tests.
16609 (uri (git-reference
16610 (url "https://github.com/mjackson/citrus")
16611 (commit (string-append "v" version))))
16612 (file-name (git-file-name name version))
16613 (sha256
16614 (base32 "197wrgqrddgm1xs3yvjvd8vkvil4h4mdrcp16jmd4b57rxrrr769"))))
16615 (build-system ruby-build-system)
16616 (home-page "https://mjackson.github.io/citrus/")
16617 (synopsis "Parsing Expressions for Ruby")
16618 (description "Citrus is a parsing library for Ruby that combines the
16619expressiveness of the language with the parsing expressions.")
16620 (license license:expat)))
16621
16622(define-public ruby-cbor
16623 (package
16624 (name "ruby-cbor")
16625 (version "0.5.9.6")
16626 (source
16627 (origin
16628 (method url-fetch)
16629 (uri (rubygems-uri "cbor" version))
16630 (sha256
16631 (base32 "0511idr8xps9625nh3kxr68sdy6l3xy2kcz7r57g47fxb1v18jj3"))))
16632 (build-system ruby-build-system)
16633 (arguments
16634 `(#:test-target "spec"))
16635 (native-inputs
16636 (list
16637 ruby-rspec
16638 ruby-rake-compiler
16639 ruby-yard))
16640 (home-page "https://cbor.io/")
16641 (synopsis "Concise Binary Object Representation")
16642 (description "CBOR is a library for the
16643@acronym{CBOR, Concise Binary Object Representation} format, based on
16644Sadayuki Furuhashi's MessagePack library.")
16645 (license license:asl2.0)))
16646
16647(define-public ruby-gem-release
16648 (package
16649 (name "ruby-gem-release")
16650 (version "2.2.2")
16651 (source
16652 (origin
16653 (method url-fetch)
16654 (uri (rubygems-uri "gem-release" version))
16655 (sha256
16656 (base32 "108rrfaiayi14zrqbb6z0cbwcxh8n15am5ry2a86v7c8c3niysq9"))))
16657 (build-system ruby-build-system)
16658 (arguments
16659 ;; No rakefile
16660 `(#:tests? #f))
16661 (home-page "https://github.com/svenfuchs/gem-release")
16662 (synopsis "Ruby gem plugin for release management")
16663 (description "GemRelease is a gem plugin that aims at making gem development
16664easier by automating repetitive work based on conventions, configuration, and
16665templates.")
16666 (license license:expat)))
16667
16668(define-public ruby-base32
16669 (package
16670 (name "ruby-base32")
16671 (version "0.3.4")
16672 (source
16673 (origin
16674 (method url-fetch)
16675 (uri (rubygems-uri "base32" version))
16676 (sha256
16677 (base32 "1fjs0l3c5g9qxwp43kcnhc45slx29yjb6m6jxbb2x1krgjmi166b"))))
16678 (build-system ruby-build-system)
16679 (native-inputs
16680 (list
16681 ruby-gem-release))
16682 (home-page "https://github.com/stesla/base32")
16683 (synopsis "Ruby extension for base32 encoding and decoding")
16684 (description "Base32 is a library which provides base32 decoding and
16685encoding.")
16686 (license license:expat)))
16687
16688(define-public ruby-dhall
16689 (package
16690 (name "ruby-dhall")
16691 (version "0.5.2")
16692 (source
16693 (origin
16694 (method url-fetch)
16695 (uri (rubygems-uri "dhall" version))
16696 (sha256
16697 (base32 "09wcq8xc1ynld04r2f332bx8cn7rjc4afaq8hm1dr2fc35jlpn6m"))))
16698 (build-system ruby-build-system)
16699 (arguments
16700 ;; No test in gem archive
16701 `(#:tests? #f))
16702 (propagated-inputs
16703 (list
16704 ruby-base32
16705 ruby-cbor
16706 ruby-citrus
16707 ruby-lazy-object
16708 ruby-multihashes
16709 ruby-promise
16710 ruby-value-semantics))
16711 (home-page "https://git.sr.ht/~singpolyma/dhall-ruby")
16712 (synopsis "Ruby implementation of the Dhall configuration language")
16713 (description "Dhall.rb is a Ruby implementation of the Dhall configuration
16714language. Dhall is a memory safe and non-Turing-complete configuration
16715language.")
16716 (license license:gpl3+)))
16717
16718(define-public ruby-money
16719 (package
16720 (name "ruby-money")
16721 (version "6.16.0")
16722 (source
16723 (origin
16724 (method url-fetch)
16725 (uri (rubygems-uri "money" version))
16726 (sha256
16727 (base32 "0jkmsj5ymadik7bvl670bqwmvhsdyv7hjr8gq9z293hq35gnyiyg"))))
16728 (build-system ruby-build-system)
16729 (arguments
16730 ;; No rakefile.
16731 `(#:tests? #f))
16732 (propagated-inputs
16733 (list
16734 ruby-i18n))
16735 (home-page "https://rubymoney.github.io/money/")
16736 (synopsis "Currency conversion library for Ruby")
16737 (description "RubyMoney provides a library for dealing with money and
16738currency conversion. Its features are:
16739@itemize
16740@item
16741Provides a Money class which encapsulates all information about a certain
16742amount of money, such as its value and its currency.
16743@item
16744Provides a Money::Currency class which encapsulates all information about a
16745monetary unit.
16746@item
16747Represents monetary values as integers, in cents; so avoids floating point
16748rounding errors.
16749@item
16750Represents currency as Money::Currency instances providing a high level of
16751flexibility.
16752@item Provides APIs for exchanging money from one currency to another.
16753@end itemize")
16754 (license license:expat)))
16755
16756(define-public ruby-monetize
16757 (package
16758 (name "ruby-monetize")
16759 (version "1.11.0")
16760 (source
16761 (origin
16762 (method url-fetch)
16763 (uri (rubygems-uri "monetize" version))
16764 (sha256
16765 (base32 "0cna2myxdbwfq0gn6k2hgrh368dq7wld3jklm96443ysykd0difn"))))
16766 (build-system ruby-build-system)
16767 (arguments
16768 `(#:test-target "spec"))
16769 (native-inputs
16770 (list
16771 ruby-rspec))
16772 (propagated-inputs
16773 (list
16774 ruby-money))
16775 (home-page "https://github.com/RubyMoney/monetize")
16776 (synopsis "Convert various objects into Money objects")
16777 (description "Monetize provides a library for converting various objects
16778into Money objects.")
16779 (license license:expat)))
16780
16781(define-public ruby-money-open-exchange-rates
16782 (package
16783 (name "ruby-money-open-exchange-rates")
16784 (version "1.4.0")
16785 (source
16786 (origin
16787 (method git-fetch)
16788 ;; Download from GitHub because the rubygems version does not contain
16789 ;; Rakefile.
16790 (uri (git-reference
16791 (url "https://github.com/spk/money-open-exchange-rates")
16792 (commit (string-append "v" version))))
16793 (file-name (git-file-name name version))
16794 (sha256
16795 (base32 "11xwqli8snr19k48yh8h77sal5vxd4snzq9gxg08v61f0574m3gw"))))
16796 (build-system ruby-build-system)
16797 (native-inputs
16798 (list
16799 ruby-minitest
16800 ruby-mocha
16801 ruby-monetize
16802 ruby-rake
16803 ruby-rubocop
16804 ruby-timecop
16805 ruby-webmock))
16806 (propagated-inputs
16807 (list
16808 ruby-money))
16809 (home-page "https://spk.github.io/money-open-exchange-rates/")
16810 (synopsis "Money open exchange rates for Ruby")
16811 (description "This package provides a gem that calculates the exchange rate
16812using published rates from open-exchange-rates. Compatible with the money gem.")
16813 (license license:expat)))
16814
16815(define-public ruby-roda
16816 (package
16817 (name "ruby-roda")
16818 (version "3.57.0")
16819 (source
16820 (origin
16821 (method url-fetch)
16822 (uri (rubygems-uri "roda" version))
16823 (sha256
16824 (base32 "0nkfxnbcfnriywvx9kpamp850cwjmqv8ssajc95d0aiyjr4kdrfy"))))
16825 (build-system ruby-build-system)
16826 (arguments
16827 ;; No rakefile
16828 `(#:tests? #f))
16829 (propagated-inputs (list ruby-rack))
16830 (home-page "https://roda.jeremyevans.net")
16831 (synopsis "Routing Tree Web Toolkit")
16832 (description "Roda is a routing tree web toolkit, designed for building fast
16833and maintainable web applications in ruby.")
16834 (license license:expat)))
16835
16836(define-public ruby-nori
16837 (package
16838 (name "ruby-nori")
16839 (version "2.6.0")
16840 (source
16841 (origin
16842 (method url-fetch)
16843 (uri (rubygems-uri "nori" version))
16844 (sha256
16845 (base32 "066wc774a2zp4vrq3k7k8p0fhv30ymqmxma1jj7yg5735zls8agn"))))
16846 (build-system ruby-build-system)
16847 (arguments
16848 ;; Tests require too old version of rspec
16849 `(#:tests? #f))
16850 (native-inputs
16851 (list ruby-nokogiri
16852 ruby-rake
16853 ruby-rspec))
16854 (home-page "https://github.com/savonrb/nori")
16855 (synopsis "XML to Hash translator")
16856 (description "Nori is a simple XML parsing ripped from Crack which in-turn
16857ripped from Merb. It supports pluggable parsers and ships with both REXML and
16858Nokogiri implementations.")
16859 (license license:expat)))
16860
16861;; This package is deprecated per upstream and should be phased out.
16862(define-public ruby-faraday-middleware
16863 (package
16864 (name "ruby-faraday-middleware")
16865 (version "1.2.0")
16866 (source
16867 (origin
16868 (method url-fetch)
16869 (uri (rubygems-uri "faraday_middleware" version))
16870 (sha256
16871 (base32 "1bw8mfh4yin2xk7138rg3fhb2p5g2dlmdma88k82psah9mbmvlfy"))))
16872 (build-system ruby-build-system)
16873 (arguments `(#:tests? #f))
16874 (propagated-inputs (list ruby-faraday))
16875 (home-page "https://github.com/lostisland/faraday_middleware")
16876 (synopsis "Various middleware for Faraday")
16877 (description "Faraday_Middleware is a collection of middleware for the
16878Faraday-based API wrappers.")
16879 (license license:expat)))
16880
16881(define-public ruby-faraday-multipart
16882 (package
16883 (name "ruby-faraday-multipart")
16884 (version "1.0.4")
16885 (source (origin
16886 (method git-fetch)
16887 (uri (git-reference
16888 (url "https://github.com/lostisland/faraday-multipart")
16889 (commit (string-append "v" version))))
16890 (file-name (git-file-name name version))
16891 (sha256
16892 (base32
16893 "0ywxhff40a688n50lxrn4d8y096l8sbrwp1jfz4zd3kdiiygclka"))))
16894 (build-system ruby-build-system)
16895 (arguments (list #:test-target "spec"))
16896 (native-inputs (list ruby-faraday ruby-multipart-parser ruby-rspec))
16897 (propagated-inputs (list ruby-multipart-post))
16898 (synopsis "Multipart-post requests extension for Faraday")
16899 (description "This Ruby gem extends Faraday to perform multipart-post
16900requests.")
16901 (home-page "https://github.com/lostisland/faraday-multipart")
16902 (license license:expat)))
16903
16904(define-public ruby-bandwidth-iris
16905 (package
16906 (name "ruby-bandwidth-iris")
16907 (version "7.0.0")
16908 (source
16909 (origin
16910 (method url-fetch)
16911 (uri (rubygems-uri "ruby-bandwidth-iris" version))
16912 (sha256
16913 (base32 "131c4jhyvnrwbhizkks17fi9g85cwsq5f1p8zi408zyf63n7230d"))))
16914 (build-system ruby-build-system)
16915 (arguments
16916 ;; XXX: Tests don't require helper for some reason, so all fail.
16917 `(#:tests? #f))
16918 (native-inputs
16919 (list ruby-rspec
16920 ruby-yard))
16921 (propagated-inputs
16922 (list ruby-activesupport
16923 ruby-builder
16924 ruby-faraday
16925 ruby-faraday-middleware
16926 ruby-nori))
16927 (home-page "https://github.com/Bandwidth/ruby-bandwidth-iris")
16928 (synopsis "Gem for integrating to Bandwidth's Iris API")
16929 (description "Bandwidth IRIS is a Ruby SDK for Bandwidth Phone Number
16930Dashboard. It is a Ruby Client library for IRIS / BBS API.")
16931 (license license:expat)))
16932
16933(define-public ruby-securerandom
16934 (package
16935 (name "ruby-securerandom")
16936 (version "0.4.1")
16937 (source
16938 (origin
16939 (method url-fetch)
16940 (uri (rubygems-uri "securerandom" version))
16941 (sha256
16942 (base32 "1cd0iriqfsf1z91qg271sm88xjnfd92b832z49p1nd542ka96lfc"))))
16943 (build-system ruby-build-system)
16944 (arguments '(#:tests? #f)) ; No tests found.
16945 (synopsis "Interface for secure random number generator")
16946 (description "This package provides a Ruby interface for secure random
16947number generators.")
16948 (home-page "https://github.com/ruby/securerandom")
16949 (license (list license:bsd-2))))
16950
16951(define-public ruby-selenium-webdriver
16952 (package
16953 (name "ruby-selenium-webdriver")
16954 (version "4.22.0")
16955 (source (origin
16956 (method url-fetch)
16957 (uri (rubygems-uri "selenium-webdriver" version))
16958 (sha256
16959 (base32
16960 "0rjxlivsh32xvjq78p1m1sr366aa04wms4hwb2r187ygrnmp0hv4"))))
16961 (build-system ruby-build-system)
16962 ;; FIXME: The gem release lacks test files, and the git checkout lacks
16963 ;; JavaScript source that is generated using Bazel, which isn't available
16964 ;; in Guix yet, so disable the test suite for now.
16965 (arguments (list #:tests? #f))
16966 (propagated-inputs (list ruby-base64
16967 ruby-rexml
16968 ruby-rubyzip
16969 ruby-websocket))
16970 (synopsis "Selenium browser automation bindings for Ruby")
16971 (description "Selenium implements the W3C WebDriver protocol to automate
16972popular browsers. It aims to mimic the behaviour of a real user as it
16973interacts with the application's HTML. It's primarily intended for web
16974application testing, but any web-based task can be automated. This package
16975provides the Ruby bindings of Selenium.")
16976 (home-page "https://www.selenium.dev/")
16977 (license license:asl2.0)))
16978
16979(define-public ruby-sentry-core
16980 (package
16981 (name "ruby-sentry-core")
16982 (version "5.3.1")
16983 (source
16984 (origin
16985 (method url-fetch)
16986 (uri (rubygems-uri "sentry-ruby-core" version))
16987 (sha256
16988 (base32 "141mrw8wghhsjvln9m6ld3hap3xc5v901jjiz007xywy25725hyd"))))
16989 (build-system ruby-build-system)
16990 (arguments
16991 ;; No rakefile in gem.
16992 `(#:tests? #f))
16993 (propagated-inputs
16994 (list ruby-concurrent
16995 ruby-faraday))
16996 (home-page "https://sentry.io/for/ruby/")
16997 (synopsis "Client interface for the Sentry error logger")
16998 (description "Sentry-Core provides a gem that provides a client
16999interface for the Sentry error logger.")
17000 (license license:expat)))
17001
17002(define-public ruby-sentry
17003 (package
17004 (name "ruby-sentry")
17005 (version "5.3.1")
17006 (source
17007 (origin
17008 (method url-fetch)
17009 (uri (rubygems-uri "sentry-ruby" version))
17010 (sha256
17011 (base32 "0by9mvw8rklzpyx59vfija8h3ssfvxvf5nbqxfmygfy6lm1vdngz"))))
17012 (build-system ruby-build-system)
17013 (arguments
17014 ;; No rakefile in gem
17015 `(#:tests? #f))
17016 (propagated-inputs
17017 (list ruby-concurrent
17018 ruby-faraday
17019 ruby-sentry-core))
17020 (home-page "https://sentry.io/for/ruby/")
17021 (synopsis "Client interface for the Sentry error logger")
17022 (description "Sentry provides a gem that provides a client
17023interface for the Sentry error logger.")
17024 (license license:expat)))
17025
17026(define-public ruby-webrick
17027 (package
17028 (name "ruby-webrick")
17029 (version "1.8.1")
17030 (source (origin
17031 (method git-fetch) ;for tests
17032 (uri (git-reference
17033 (url "https://github.com/ruby/webrick")
17034 (commit (string-append "v" version))))
17035 (file-name (git-file-name name version))
17036 (sha256
17037 (base32
17038 "1xb0mk3cghdir65nmj0mblprbf21blli7267b6yyvxclh307yp6s"))))
17039 (build-system ruby-build-system)
17040 (arguments
17041 (list #:phases
17042 #~(modify-phases %standard-phases
17043 (add-after 'extract-gemspec 'delete-problematic-tests
17044 (lambda _
17045 ;; The httresponse tests fail for
17046 ;; unknown reasons (see:
17047 ;; https://github.com/ruby/webrick/issues/112).
17048 (delete-file "test/webrick/test_httpresponse.rb"))))))
17049 (home-page "https://github.com/ruby/webrick")
17050 (synopsis "HTTP server toolkit")
17051 (description "WEBrick is an HTTP server toolkit that can be configured as an
17052HTTPS server, a proxy server, and a virtual-host server.")
17053 (license license:bsd-2)))
17054
17055(define-public ruby-websocket
17056 (let ((commit "950e416a19a76c7e6a673a7e5baa6283476dbec1")
17057 (revision "1"))
17058 (package
17059 (name "ruby-websocket")
17060 (version (git-version "1.2.9" revision commit))
17061 (source (origin
17062 (method git-fetch)
17063 (uri (git-reference
17064 (url "https://github.com/imanel/websocket-ruby")
17065 (commit commit)))
17066 (sha256
17067 (base32
17068 "1i6r0glpxy47zdf76aqgcpjgcgydla0733hfdhp628pmrinnkgwv"))
17069 (file-name (git-file-name name version))))
17070 (build-system ruby-build-system)
17071 (arguments (list #:test-target "spec"
17072 #:phases #~(modify-phases %standard-phases
17073 (add-after 'unpack 'disable-rubocop
17074 (lambda _
17075 (substitute* "Rakefile"
17076 (("require 'rubocop/rake_task'") "")
17077 (("RuboCop::RakeTask.new") "")))))))
17078 (native-inputs
17079 (list ruby-rspec
17080 ruby-webrick))
17081 (synopsis "WebSocket protocol Ruby library")
17082 (description "This package provides a Ruby library to handle the WebSocket
17083protocol.")
17084 (home-page "https://github.com/imanel/websocket-ruby")
17085 (license license:expat))))
17086
17087(define-public ruby-braintree
17088 (package
17089 (name "ruby-braintree")
17090 (version "4.12.0")
17091 (source
17092 (origin
17093 (method git-fetch) ;for tests
17094 (uri (git-reference
17095 (url "https://github.com/braintree/braintree_ruby")
17096 (commit version)))
17097 (file-name (git-file-name name version))
17098 (sha256
17099 (base32 "0gfgkymy3655drwgs42bj9ap9qib1l30sajxmypmp6s75m9w3gsh"))))
17100 (build-system ruby-build-system)
17101 (arguments
17102 (list
17103 #:test-target "test:unit"
17104 #:phases
17105 #~(modify-phases %standard-phases
17106 (add-after 'unpack 'disable-rubocop
17107 (lambda _
17108 (substitute* "Rakefile"
17109 (("sh \"rubocop\"") ""))))
17110 (add-after 'unpack 'relax-requirements
17111 (lambda _
17112 (substitute* "Gemfile"
17113 (("gem \"pry\".*") "gem 'pry'\n")
17114 (("gem \"rake\".*") "gem 'rake'\n")
17115 (("gem \"libxml-ruby\", \"3.2.0\"")
17116 "gem \"libxml-ruby\", \"~> 3.0.0\"")
17117 (("gem \"rspec\", \"3.9.0\"")
17118 "gem \"rspec\", \">= 3.9.0\"")
17119 (("gem \"webrick\", \"~>1.7.0\"")
17120 "gem \"webrick\", \">=1.7.0\"")
17121 ((".*gem \"rubocop\".*") "")
17122 ((".*gem \"rspec_junit_formatter\".*") "")))))))
17123 (native-inputs
17124 (list ruby-libxml
17125 ruby-pry
17126 ruby-rake
17127 ruby-rspec
17128 ruby-webrick))
17129 (propagated-inputs
17130 (list ruby-builder
17131 ruby-rexml))
17132 (home-page "https://www.braintreepayments.com/")
17133 (synopsis "Integration access to the Braintree Gateway")
17134 (description "Braintree provides resources and tools for developers to
17135integrate Braintree's global payments platform.")
17136 (license license:expat)))
17137
17138(define-public ruby-niceogiri
17139 (package
17140 (name "ruby-niceogiri")
17141 (version "1.1.2")
17142 (source
17143 (origin
17144 (method url-fetch)
17145 (uri (rubygems-uri "niceogiri" version))
17146 (sha256
17147 (base32 "1ha93211bc9cvh23s9w89zz7rq8irpf64ccd9arvg8v1sxg2798a"))))
17148 (build-system ruby-build-system)
17149 (arguments
17150 `(#:test-target "spec"
17151 #:phases
17152 (modify-phases %standard-phases
17153 (add-after 'extract-gemspec 'less-strict-dependencies
17154 (lambda _
17155 (substitute* "niceogiri.gemspec"
17156 (("2\\.7") "3.8") ;rspec
17157 ((".*dependency.*bundler.*") "\n")
17158 ((".*dependency.*guard-rspec.*") "\n")))))))
17159 (native-inputs
17160 (list ruby-rspec
17161 ruby-yard))
17162 (propagated-inputs (list ruby-nokogiri))
17163 (home-page "https://github.com/benlangfeld/Niceogiri")
17164 (synopsis "Supplement for Nokogiri")
17165 (description "Niceogiri provides wrappers and helpers for XML manipulation
17166using Nokogiri.")
17167 (license license:expat)))
17168
17169(define-public ruby-blather
17170 (package
17171 (name "ruby-blather")
17172 (version "2.0.0")
17173 (source
17174 (origin
17175 (method url-fetch)
17176 (uri (rubygems-uri "blather" version))
17177 (sha256
17178 (base32 "05ry2x835fj4pzk61282pcz86n018cr39zbgwbi213md74i90s7c"))))
17179 (build-system ruby-build-system)
17180 (arguments
17181 ;; XXX: Tests require too old version of rspec.
17182 `(#:tests? #f))
17183 (native-inputs
17184 (list ruby-countdownlatch
17185 ruby-mocha
17186 ruby-rb-fsevent
17187 ruby-rspec
17188 ruby-yard))
17189 (propagated-inputs
17190 (list ruby-activesupport
17191 ruby-eventmachine
17192 ruby-niceogiri
17193 ruby-nokogiri
17194 ruby-sucker-punch))
17195 (home-page "https://github.com/adhearsion/blather")
17196 (synopsis "XMPP Domain Specific Language for Ruby")
17197 (description "Blather is a XMPP DSL for Ruby written on top of EventMachine
17198and Nokogiri.")
17199 (license license:expat)))
17200
17201(define-public ruby-wapiti
17202 (package
17203 (name "ruby-wapiti")
17204 (version "2.1.0")
17205 ;; the gem archive lacks tests
17206 (source (origin
17207 (method git-fetch)
17208 (uri (git-reference
17209 (url "https://github.com/inukshuk/wapiti-ruby")
17210 (commit (string-append "v" version))))
17211 (file-name (git-file-name name version))
17212 (sha256
17213 (base32
17214 "1273dqvn6flq2qv9qbp104rgc7zp1gqx4096s0v0z5f0qnhzc7d6"))))
17215 (build-system ruby-build-system)
17216 (propagated-inputs
17217 (list ruby-builder
17218 ruby-rexml))
17219 (native-inputs
17220 (list ruby-pry
17221 ruby-rake-compiler
17222 ruby-rspec
17223 ruby-simplecov))
17224 (arguments
17225 (list
17226 #:test-target "spec"
17227 #:phases
17228 #~(modify-phases %standard-phases
17229 (add-after 'replace-git-ls-files 'replace-another-git-ls-files
17230 (lambda args
17231 (substitute* "wapiti.gemspec"
17232 (("`git ls-files spec`")
17233 "`find spec -type f | sort`"))))
17234 (add-before 'build 'compile
17235 (lambda args
17236 (invoke "rake" "compile"))))))
17237 (home-page "https://github.com/inukshuk/wapiti-ruby")
17238 (synopsis "Wicked fast Conditional Random Fields for Ruby")
17239 (description
17240 "The Wapiti-Ruby gem provides a wicked fast linear-chain @acronym{CRF,
17241Conditional Random Fields} API for sequence segmentation and labelling. It is
17242based on the codebase of @url{https://wapiti.limsi.fr, Wapiti}.")
17243 (license license:bsd-2)))
17244
17245(define-public ruby-namae
17246 (package
17247 (name "ruby-namae")
17248 (version "1.1.1")
17249 (source (origin
17250 (method url-fetch)
17251 (uri (rubygems-uri "namae" version))
17252 (sha256
17253 (base32
17254 "1j3nl1klkx3gymrdxfc1hlq4a8qlvhhl9aj5v1v08b9fz27sky0l"))))
17255 (build-system ruby-build-system)
17256 (native-inputs
17257 (list ruby-cucumber
17258 ruby-rspec
17259 ruby-simplecov))
17260 (arguments
17261 (list
17262 #:phases
17263 #~(modify-phases %standard-phases
17264 (add-after 'extract-gemspec 'allow-newer-cucumber
17265 (lambda args
17266 (substitute* "Gemfile"
17267 (("'cucumber', '[^']*'")
17268 "'cucumber'"))))
17269 (replace 'check
17270 ;; Avoid 'rake' so we don't need jeweler.
17271 (lambda* (#:key tests? #:allow-other-keys)
17272 (when tests?
17273 (apply invoke
17274 "rspec"
17275 (find-files "spec" "_spec\\.rb$"))))))))
17276 (home-page "https://github.com/berkmancenter/namae")
17277 (synopsis "Parser for human names")
17278 (description
17279 "Namae (名前) is a parser for human names. It recognizes personal names
17280of various cultural backgrounds and tries to split them into their component
17281parts (e.g., given and family names, honorifics etc.).")
17282 (license (list license:bsd-2 license:agpl3+))))
17283
17284(define-public ruby-latex-decode
17285 (package
17286 (name "ruby-latex-decode")
17287 (version "0.4.0")
17288 (source (origin
17289 (method git-fetch)
17290 (uri (git-reference
17291 (url "https://github.com/inukshuk/latex-decode")
17292 (commit (string-append "v" version))))
17293 (sha256
17294 (base32
17295 "1f5j67ayd04pjkmzvn0hk7cr8yqvn0gyg9ns6a0vhzj2gwna9ihy"))
17296 (file-name (git-file-name name version))))
17297 (build-system ruby-build-system)
17298 (native-inputs
17299 (list ruby-cucumber
17300 ruby-rspec))
17301 (arguments
17302 (list
17303 #:test-target "cucumber"
17304 #:phases
17305 #~(modify-phases %standard-phases
17306 (add-after 'extract-gemspec 'avoid-bundler
17307 (lambda args
17308 (substitute* "Rakefile"
17309 (("require 'bundler" orig)
17310 (string-append "# " orig " # patched for Guix"))
17311 (("Cucumber::Rake::Task\\.new[(]:cucumber[)]" orig)
17312 (string-append orig " do |c|\n"
17313 " c.bundler = false # patched for Guix\n"
17314 "end"))
17315 (("Bundler\\.setup" orig)
17316 (string-append "true # " orig " # patched for Guix")))
17317 (substitute* "cucumber.yml"
17318 ;; thanks to avoiding bundler, we can't use this option
17319 ((" --publish-quiet")
17320 ""))))
17321 (add-after 'replace-git-ls-files 'replace-another-git-ls-files
17322 (lambda args
17323 (substitute* "latex-decode.gemspec"
17324 (("`git ls-files -- [{]test,spec,features[}]/\\*`")
17325 "`find {test,spec,features} -type f | sort`")))))))
17326 (home-page "https://github.com/inukshuk/latex-decode")
17327 (synopsis "Convert LaTeX to Unicode")
17328 (description
17329 "This package provides a gem to convert LaTeX input to Unicode. Its
17330original use was as an input filter for BibTeX-Ruby, but it can be used
17331independently to decode LaTeX. Many of the patterns used by this Ruby gem are
17332based on François Charette's equivalent Perl module @code{LaTeX::Decode}.")
17333 (license license:gpl3+)))
17334
17335(define-public ruby-link-header
17336 (package
17337 (name "ruby-link-header")
17338 (version "0.0.8")
17339 (source (origin
17340 (method url-fetch)
17341 (uri (rubygems-uri "link_header" version))
17342 (sha256
17343 (base32
17344 "1yamrdq4rywmnpdhbygnkkl9fdy249fg5r851nrkkxr97gj5rihm"))))
17345 (build-system ruby-build-system)
17346 (home-page "https://github.com/asplake/link_header")
17347 (synopsis "Parse and format HTTP @code{Link} headers")
17348 (description
17349 "This gem provides the classes @code{LinkHeader} and
17350@code{LinkHeader::Link}, which represent HTTP @code{Link} headers conforming
17351to RFC 5988. Objects can be constructed from and converted to text or a
17352JSON-friendly @code{Array} representation. They can also be used to generate
17353corresponding HTML @code{link} elements.")
17354 (license license:expat)))
17355
17356(define-public ruby-lint-roller
17357 (package
17358 (name "ruby-lint-roller")
17359 (version "1.1.0")
17360 (source
17361 (origin
17362 (method url-fetch)
17363 (uri (rubygems-uri "lint_roller" version))
17364 (sha256
17365 (base32 "11yc0d84hsnlvx8cpk4cbj6a4dz9pk0r1k29p0n1fz9acddq831c"))))
17366 (build-system ruby-build-system)
17367 (arguments '(#:tests? #f)) ;Circular dependency on ruby-standard.
17368 (native-inputs (list ruby-minitest))
17369 (synopsis "Specification for linter and formatter rulesets")
17370 (description
17371 "This package provides a plugin specification for Ruby linter and
17372formatter rulesets.")
17373 (home-page "https://github.com/standardrb/lint_roller")
17374 (license license:expat)))
17375
17376(define-public ruby-rdf
17377 (package
17378 (name "ruby-rdf")
17379 (version "3.2.8")
17380 (source (origin
17381 (method url-fetch)
17382 (uri (rubygems-uri "rdf" version))
17383 (sha256
17384 (base32
17385 "1cj0k8ryd8hgbkgqb5swvy6fiygxny3y5bln0my5gv6dbfv3gm20"))))
17386 (build-system ruby-build-system)
17387 (propagated-inputs (list ruby-link-header))
17388 (arguments
17389 (list #:tests? #f)) ;; tests have many cyclic dependencies
17390 (home-page "https://ruby-rdf.github.io/")
17391 (synopsis "Linked Data for Ruby")
17392 (description
17393 "This gem contains the core algorithms and classes used for doing basic
17394programming with @acronym{RDF, Resource Description Framework} data,
17395implemented in pure Ruby.")
17396 (license license:unlicense)))
17397
17398(define-public ruby-rdf-vocab
17399 (package
17400 (name "ruby-rdf-vocab")
17401 (version "3.2.1")
17402 (source (origin
17403 (method url-fetch)
17404 (uri (rubygems-uri "rdf-vocab" version))
17405 (sha256
17406 (base32
17407 "1bqmp9rfjvd56ajjz68ij6jla1wjf1fqg7bi4dpnjrsmn4pwaq7l"))))
17408 (build-system ruby-build-system)
17409 (propagated-inputs
17410 (list ruby-rdf))
17411 (arguments
17412 (list #:tests? #f)) ;; tests have many cyclic dependencies
17413 (home-page "https://github.com/ruby-rdf/rdf-vocab")
17414 (synopsis "Common RDF vocabularies")
17415 (description
17416 "This gem extends @code{ruby-rdf} with several common @acronym{RDF,
17417Resource Description Framework} vocabularies.")
17418 (license license:unlicense)))
17419
17420(define-public ruby-rdiscount
17421 (package
17422 (name "ruby-rdiscount")
17423 (version "2.2.7")
17424 (source (origin
17425 (method git-fetch) ;for the full test suite
17426 (uri (git-reference
17427 (url "https://github.com/davidfstr/rdiscount")
17428 (commit version)))
17429 (file-name (git-file-name name version))
17430 (sha256
17431 (base32
17432 "1lpfxq3gv0dgmnki9jgfnc8n9k4x9vyq9miqdxv6g4kp90qyfifc"))))
17433 (build-system ruby-build-system)
17434 (native-inputs (list perl))
17435 (synopsis "Discount Markdown Processor for Ruby")
17436 (description "Discount is an implementation of John Gruber's Markdown
17437markup language in C. It implements all of the language described in the
17438markdown syntax document and passes the Markdown 1.0 test suite.")
17439 (home-page "https://dafoster.net/projects/rdiscount/")
17440 (license license:bsd-3)))
17441
17442(define-public ruby-bibtex-ruby
17443 (package
17444 (name "ruby-bibtex-ruby")
17445 (version "6.0.0")
17446 (source (origin
17447 (method url-fetch)
17448 (uri (rubygems-uri "bibtex-ruby" version))
17449 (sha256
17450 (base32
17451 "0vynqa8q9hwghw6sdljr304b5gh11nqzy5nwqqwxmgy7pqyf7qw5"))))
17452 (build-system ruby-build-system)
17453 (propagated-inputs
17454 (list ruby-latex-decode
17455 ruby-rdf
17456 ruby-rdf-vocab))
17457 (native-inputs
17458 (list ruby-cucumber
17459 ruby-minitest
17460 ruby-yard))
17461 (arguments
17462 (list
17463 #:phases
17464 #~(modify-phases %standard-phases
17465 (add-after 'extract-gemspec 'avoid-bundler
17466 (lambda args
17467 (substitute* "Rakefile"
17468 (("require 'bundler" orig)
17469 (string-append "# " orig " # patched for Guix"))
17470 (("Bundler\\.setup" orig)
17471 (string-append "true # " orig " # patched for Guix"))))))))
17472 (home-page "https://github.com/inukshuk/bibtex-ruby")
17473 (synopsis "Rubyist's Swiss Army knife for all things BibTeX")
17474 (description
17475 "BibTeX-Ruby is the Rubyist's Swiss Army knife for all things BibTeX.
17476It includes a parser for all common BibTeX objects and a sophisticated name
17477parser that tokenizes correctly formatted names. BibTeX-Ruby recognizes
17478BibTeX string replacements, joins values containing multiple strings or
17479variables, supports cross-references, and decodes common LaTeX formatting
17480instructions to unicode. If you are in a hurry, it also allows for easy
17481export/conversion to formats such as YAML, JSON, CSL, and XML (BibTeXML).")
17482 (license license:gpl3+)))
17483
17484(define-public ruby-unicode-scripts
17485 (package
17486 (name "ruby-unicode-scripts")
17487 (version "1.8.0")
17488 (source (origin
17489 (method url-fetch)
17490 (uri (rubygems-uri "unicode-scripts" version))
17491 (sha256
17492 (base32
17493 "0rl6mn908yryhrg8j3mmna54gnrid2nph2kym00lbz6jwdih2a1b"))))
17494 (build-system ruby-build-system)
17495 (native-inputs (list ruby-minitest))
17496 (arguments (list #:test-target "spec"))
17497 (home-page "https://github.com/janlelis/unicode-scripts")
17498 (synopsis "Unicode script classification library")
17499 (description "This gem provides a simple interface for classifying Ruby
17500strings using the Unicode @code{Script} and @code{Script_Extensions}
17501properties.")
17502 (license license:expat)))
17503
17504(define-public ruby-citeproc
17505 (package
17506 (name "ruby-citeproc")
17507 (version "1.0.10")
17508 (source (origin
17509 (method url-fetch)
17510 (uri (rubygems-uri "citeproc" version))
17511 (sha256
17512 (base32
17513 "13vl5sjmksk5a8kjcqnjxh7kn9gn1n4f9p1rvqfgsfhs54p0m6l2"))))
17514 (build-system ruby-build-system)
17515 (propagated-inputs
17516 (list ruby-namae))
17517 (arguments
17518 (list #:tests? #f)) ;; tests have a cyclic dependency
17519 (home-page "https://github.com/inukshuk/citeproc")
17520 (synopsis "Interface for Ruby citation processors")
17521 (description
17522 "CiteProc is a citation processor interface and citation data API based
17523on the @acronym{CSL, Citation Style Language} specifications. To actually
17524process citations, a dedicated processor engine is required: a pure Ruby
17525engine is available in the @code{citeproc-ruby} gem.")
17526 (license (list license:agpl3+ license:bsd-2))))
17527
17528(define-public ruby-ed25519
17529 (package
17530 (name "ruby-ed25519")
17531 (version "1.3.0")
17532 (source (origin
17533 (method git-fetch)
17534 (uri (git-reference
17535 (url "https://github.com/RubyCrypto/ed25519")
17536 (commit (string-append "v" version))))
17537 (file-name (git-file-name name version))
17538 (sha256
17539 (base32
17540 "1jm5w2dyhyrndcx0d02v0gjbzl1abhbx2wkp3gxzwcndghmkz98r"))))
17541 (build-system ruby-build-system)
17542 (arguments
17543 (list
17544 #:test-target "spec"
17545 #:phases
17546 #~(modify-phases %standard-phases
17547 (add-before 'build 'compile
17548 (lambda _
17549 (invoke "rake" "compile")))
17550 (add-after 'unpack 'remove-unnecessary-dependencies
17551 (lambda _
17552 ;; Coveralls relates to a network service, and RuboCop to code
17553 ;; linting and both are unnecessary to run the tests
17554 (substitute* "Gemfile"
17555 ((".*coveralls.*")
17556 "\n")
17557 ((".*rubocop.*")
17558 "\n"))
17559 (substitute* "spec/spec_helper.rb"
17560 (("require \"coveralls\"")
17561 "")
17562 (("Coveralls.wear!")
17563 ""))
17564 (substitute* "Rakefile"
17565 (("require \"rubocop/rake_task\"")
17566 "")
17567 (("RuboCop::RakeTask.new")
17568 "")))))))
17569 (native-inputs (list ruby-rake-compiler ruby-rspec))
17570 (synopsis
17571 "Ruby binding to the Ed25519 elliptic curve public-key signature system")
17572 (description
17573 "This package provides a Ruby binding to the Ed25519 elliptic curve
17574public-key signature system described in
17575@url{https://www.ietf.org/rfc/rfc8032.txt, RFC 8032}.")
17576 (home-page "https://github.com/RubyCrypto/ed25519")
17577 (license license:expat)))
17578
17579(define-public ruby-edtf
17580 (package
17581 (name "ruby-edtf")
17582 (version "3.1.0")
17583 (source (origin
17584 (method git-fetch)
17585 (uri (git-reference
17586 (url "https://github.com/inukshuk/edtf-ruby")
17587 (commit (string-append "v" version))))
17588 (sha256
17589 (base32
17590 "18j8xq8zmrn41cs2gpd1i87agi9905asvnjqndky2cqb5zg3q14g"))
17591 (snippet
17592 ;; remove generated file
17593 #~(delete-file "lib/edtf/parser.rb"))
17594 (file-name (git-file-name name version))))
17595 (build-system ruby-build-system)
17596 (propagated-inputs
17597 (list ruby-activesupport))
17598 (native-inputs
17599 (list ruby-cucumber
17600 ruby-rspec))
17601 (arguments
17602 (list
17603 #:phases
17604 #~(modify-phases %standard-phases
17605 (add-after 'extract-gemspec 'avoid-bundler
17606 (lambda args
17607 (substitute* "Rakefile"
17608 (("require 'bundler" orig)
17609 (string-append "# " orig " # patched for Guix"))
17610 (("bundle exec racc")
17611 "racc")
17612 (("Cucumber::Rake::Task\\.new[(]:cucumber[)]" orig)
17613 (string-append orig " do |c|\n"
17614 " c.bundler = false # patched for Guix\n"
17615 "end"))
17616 (("Bundler\\.setup" orig)
17617 (string-append "true # " orig " # patched for Guix")))))
17618 (add-after 'avoid-bundler 'patch-cucumber-options
17619 (lambda args
17620 (substitute* "cucumber.yml"
17621 ;; this option is not supported, at least in our configuration
17622 ((" --publish-quiet")
17623 ""))))
17624 (add-before 'build 'compile
17625 (lambda args
17626 (invoke "rake" "racc")))
17627 (replace 'check
17628 (lambda* (#:key tests? #:allow-other-keys)
17629 (when tests?
17630 (invoke "rake")))))))
17631 (home-page "https://github.com/inukshuk/edtf-ruby")
17632 (synopsis "Ruby implementation of Extended Date/Time Format")
17633 (description
17634 "EDTF-Ruby provides a parser and an API for the @acronym{EDTF, Extended
17635Date/Time Format} standard, implemented as an extension to Ruby's @code{Date}
17636class.")
17637 (license license:bsd-2)))
17638
17639(define-public ruby-gli
17640 (package
17641 (name "ruby-gli")
17642 (version "2.21.0")
17643 (source (origin
17644 (method git-fetch)
17645 (uri (git-reference
17646 (url "https://github.com/davetron5000/gli")
17647 (commit (string-append "v" version))))
17648 (sha256
17649 (base32
17650 "09b1r9hlx4dy2yq036nk7hc2nbswhia6q3na9v11z94yibc8mgja"))
17651 (file-name (git-file-name name version))))
17652 (build-system ruby-build-system)
17653 (native-inputs
17654 (list ruby-minitest
17655 ruby-rainbow
17656 ruby-rdoc
17657 ruby-sdoc))
17658 (arguments
17659 (list
17660 #:phases
17661 #~(modify-phases %standard-phases
17662 (add-after 'extract-gemspec 'patch-gemspec-version
17663 (lambda args
17664 (substitute* "gli.gemspec"
17665 ;; this trick fails in our build environment
17666 (("require File\\.join[(]\\[" orig)
17667 (string-append "# patched for Guix # " orig))
17668 (("s\\.version = GLI::VERSION")
17669 #$(string-append "s.version = '"
17670 (package-version this-package)
17671 "' # patched for Guix")))))
17672 (add-after 'replace-git-ls-files 'replace-another-git-ls-files
17673 (lambda args
17674 (substitute* "gli.gemspec"
17675 (("`git ls-files -- [{]test,spec,features[}]/\\*`")
17676 "`find {test,spec,features} -type f | sort`"))))
17677 (add-after 'replace-another-git-ls-files 'fix-rubyopt
17678 (lambda args
17679 (substitute* "Rakefile"
17680 (("ENV\\[\"RUBYOPT\"]")
17681 "(ENV['RUBYOPT'] || '')")))))))
17682 (home-page "https://davetron5000.github.io/gli/")
17683 (synopsis "Git-Like Interface command-line parser")
17684 (description
17685 "GLI allows you to create command-line applications in Ruby with Git-Like
17686Interfaces: that is, they take subcommands in the style of @command{git} and
17687@command{gem}. GLI uses a simple domain-specific language, but retains all
17688the power of the built-in @code{OptionParser}.")
17689 (license license:asl2.0)))
17690
17691(define-public ruby-anystyle-data
17692 (package
17693 (name "ruby-anystyle-data")
17694 (version "1.3.0")
17695 (source (origin
17696 (method git-fetch)
17697 (uri (git-reference
17698 (url "https://github.com/inukshuk/anystyle-data")
17699 (commit (string-append "v" version))))
17700 (sha256
17701 (base32
17702 "1jh880310m3gjdrk4m8rwwnsf0824zkf26clpr8p64sac2fyy907"))
17703 (snippet
17704 ;; remove pre-built file
17705 #~(delete-file "lib/anystyle/data/dict.txt.gz"))
17706 (patches
17707 (search-patches "ruby-anystyle-data-immutable-install.patch"))
17708 (file-name (git-file-name name version))))
17709 (build-system ruby-build-system)
17710 (arguments
17711 (list
17712 #:tests? #f ;; there are none
17713 #:modules
17714 `((guix build ruby-build-system)
17715 (guix build utils)
17716 (srfi srfi-26))
17717 #:phases
17718 #~(modify-phases %standard-phases
17719 (add-after 'replace-git-ls-files 'replace-another-git-ls-files
17720 (lambda args
17721 (substitute* "anystyle-data.gemspec"
17722 (("`git ls-files lib README\\.md LICENSE`\\.split[(][^)]*[)]")
17723 (string-append
17724 "["
17725 (string-join
17726 (map (cut string-append "\"" <> "\"")
17727 `("README.md"
17728 "LICENSE"
17729 "lib/anystyle/data.rb"
17730 "lib/anystyle/data/dict.txt.gz"
17731 "lib/anystyle/data/setup.rb"
17732 "lib/anystyle/data/version.rb"))
17733 ", ")
17734 "]")))))
17735 (add-before 'build 'compile-dict
17736 (lambda args
17737 (invoke "rake" "compile"))))))
17738 (home-page "https://anystyle.io")
17739 (synopsis "AnyStyle parser dictionary data")
17740 (description
17741 "This gem provides parser dictionary data for AnyStyle.")
17742 (license license:bsd-2)))
17743
17744(define-public ruby-anystyle
17745 (package
17746 (name "ruby-anystyle")
17747 (version "1.4.2")
17748 (source (origin
17749 (method git-fetch)
17750 (uri (git-reference
17751 (url "https://github.com/inukshuk/anystyle")
17752 (commit (string-append "v" version))))
17753 (sha256
17754 (base32
17755 "0xhy7wj8v7iahikck6vxbdpncaz5w2gb11b32kmvg5ckgi2kz23p"))
17756 (snippet
17757 ;; There is an optional dependency on
17758 ;; <https://github.com/feedbackmine/language_detector>, which
17759 ;; seems like it was intended to be free software, but
17760 ;; doesn't have a clear license statement. Maybe someone can
17761 ;; do more sleuthing, or else find a replacement? See also
17762 ;; <https://github.com/inukshuk/anystyle/issues/186>. For
17763 ;; now, patch it out, but leave a pointer to follow up.
17764 #~(begin
17765 (use-modules (guix build utils))
17766 (substitute* "Gemfile"
17767 (("gem 'language_detector', github: '[^']*'" orig)
17768 (string-append "# " orig " # unclear license")))
17769 (substitute* "spec/anystyle/parser_spec.rb"
17770 (("language: 'en'," orig)
17771 (string-append "# " orig " # no lanugage_detector")))))
17772 (patches
17773 (search-patches
17774 "ruby-anystyle-fix-dictionary-populate.patch"))
17775 (file-name (git-file-name name version))))
17776 (build-system ruby-build-system)
17777 (propagated-inputs
17778 (list ruby-anystyle-data
17779 ruby-bibtex-ruby
17780 ruby-namae
17781 ruby-wapiti))
17782 (native-inputs
17783 (list ruby-byebug
17784 ruby-citeproc
17785 ruby-edtf
17786 ruby-gdbm
17787 ruby-rspec
17788 ruby-unicode-scripts))
17789 (arguments
17790 (list
17791 #:test-target "spec"
17792 #:phases
17793 #~(modify-phases %standard-phases
17794 (add-after 'extract-gemspec 'avoid-bundler
17795 (lambda args
17796 (substitute* "Rakefile"
17797 (("require 'bundler" orig)
17798 (string-append "# " orig " # patched for Guix"))
17799 (("Bundler\\.setup" orig)
17800 (string-append "true # " orig " # patched for Guix")))))
17801 (add-after 'replace-git-ls-files 'replace-another-git-ls-files
17802 (lambda args
17803 (substitute* "anystyle.gemspec"
17804 (("`git ls-files spec`")
17805 "`find spec -type f | sort`"))))
17806 (add-after 'wrap 'populate-dictionaries
17807 (lambda args
17808 ;; We must initialize these files here, or they will never be
17809 ;; usable with the default settings. A more flexible approach
17810 ;; might use something like `Gem.find_files()` or
17811 ;; XDG_DATA_DIRS.
17812 (with-output-to-file "initialize-dictionaries.rb"
17813 (lambda ()
17814 (display "\
17815require 'anystyle/dictionary' # must come before 'anystyle/data'
17816require 'anystyle/data'
17817[:marshal, :gdbm].each do |adapter|
17818 AnyStyle::Dictionary.create({adapter: adapter}).open().close()
17819end
17820")))
17821 (let* ((old-gems (getenv "GEM_PATH"))
17822 (new-gems (string-append #$output
17823 "/lib/ruby/vendor_ruby:"
17824 old-gems)))
17825 (dynamic-wind
17826 (lambda ()
17827 (setenv "GEM_PATH" new-gems))
17828 (lambda ()
17829 (invoke "ruby" "initialize-dictionaries.rb"))
17830 (lambda ()
17831 (setenv "GEM_PATH" old-gems)))))))))
17832 (home-page "https://anystyle.io")
17833 (synopsis "Fast and smart citation reference parsing (Ruby library)")
17834 (description
17835 "AnyStyle is a very fast and smart parser for academic reference lists
17836and bibliographies. AnyStyle uses powerful machine learning heuristics based
17837on Conditional Random Fields and aims to make it easy to train the model with
17838data that is relevant to your parsing needs.
17839
17840This package provides the Ruby module @code{AnyStyle}. AnyStyle can also be
17841used via the @command{anystyle} command-line utility or a web application,
17842though the later has not yet been packaged for Guix.")
17843 (license license:bsd-2)))
17844
17845(define-public anystyle
17846 (package
17847 (name "anystyle")
17848 (version "1.4.5")
17849 (source (origin
17850 (method git-fetch)
17851 (uri (git-reference
17852 (url "https://github.com/inukshuk/anystyle-cli")
17853 (commit (string-append "v" version))))
17854 (sha256
17855 (base32
17856 "10jx830mx9vh7rsz87ndvz8w5b5azd9s231vwyb0dqxs921v6qwy"))
17857 (file-name (git-file-name name version))))
17858 (build-system ruby-build-system)
17859 (propagated-inputs
17860 (list ruby-anystyle
17861 ruby-bibtex-ruby
17862 ruby-gli))
17863 (native-inputs
17864 (list ruby-gdbm
17865 txt2man))
17866 (arguments
17867 (list
17868 #:modules
17869 `((guix build ruby-build-system)
17870 (ice-9 popen)
17871 (srfi srfi-1)
17872 (guix build utils))
17873 #:phases
17874 #~(modify-phases %standard-phases
17875 (add-after 'extract-gemspec 'less-strict-dependencies
17876 (lambda args
17877 (substitute* "anystyle-cli.gemspec"
17878 (("'bibtex-ruby', '[^']*'")
17879 "'bibtex-ruby'"))))
17880 (add-before 'build 'change-default-dictionary-adapter
17881 (lambda args
17882 ;; Since we always have gdbm available, using it will give a
17883 ;; faster startup time, which is particularly worth-while for
17884 ;; a command-line tool.
17885 (substitute* "bin/anystyle"
17886 (("default_value: 'ruby',")
17887 "default_value: 'gdbm', # patched for Guix"))))
17888 (replace 'check
17889 (lambda* (#:key tests? #:allow-other-keys)
17890 ;; There are no tests, but let's use this opportunity to do a
17891 ;; basic test of our own that things run ok. It works especially
17892 ;; well to test this here since we know the 'ruby-anystile'
17893 ;; package is in its final, immutable installed form.
17894 (when tests?
17895 (let ((common
17896 `("require 'anystyle'"
17897 ,(string-append
17898 "pp AnyStyle.parse 'Derrida, J. (1967). L’écriture"
17899 " et la différence (1 éd.). Paris: Éditions du"
17900 " Seuil.'"))))
17901 (for-each
17902 (lambda (lines)
17903 (apply invoke "ruby"
17904 (fold-right (lambda (line lst)
17905 (cons* "-e" line lst))
17906 '()
17907 lines)))
17908 `(,common
17909 ("require 'anystyle/dictionary'"
17910 "AnyStyle::Dictionary.defaults[:adapter] = :gdbm"
17911 ,@common)))))))
17912 (add-after 'wrap 'check-cli
17913 (lambda* (#:key tests? outputs #:allow-other-keys)
17914 (when tests?
17915 (with-output-to-file "check-cli.in"
17916 (lambda ()
17917 (for-each
17918 display
17919 '("Derrida, J. (1967). L’écriture et la différence "
17920 "(1 éd.). Paris: Éditions du Seuil.\n"))))
17921 (invoke (search-input-file outputs "/bin/anystyle")
17922 "parse"
17923 "check-cli.in"))))
17924 (add-after 'wrap 'generate-man-page
17925 ;; generating a man page also tests that the command actually runs
17926 (lambda args
17927 (define (run-with-output-file file command . args)
17928 (format (current-output-port)
17929 "running: ~s\nwith output to: ~s\n"
17930 (cons command args)
17931 file)
17932 (unless (zero?
17933 (with-output-to-file file
17934 (lambda ()
17935 (status:exit-val
17936 (close-pipe
17937 (apply open-pipe* OPEN_WRITE command args))))))
17938 (error "command failed")))
17939 (let ((anystyle (string-append #$output "/bin/anystyle")))
17940 (run-with-output-file "intro.txt"
17941 anystyle "--help")
17942 (for-each (lambda (cmd)
17943 (let ((file (string-append cmd ".txt")))
17944 (run-with-output-file file
17945 anystyle cmd "--help")
17946 ;; indent headings to create subsections
17947 (substitute* file
17948 (("^[A-Z]" orig)
17949 (string-append " " orig)))
17950 ;; generate a section heading
17951 (call-with-output-file
17952 (string-append "section-" file)
17953 (lambda (out)
17954 (format out "\n\n~a COMMAND\n\n"
17955 (string-upcase cmd))))))
17956 '("check" "find" "parse" "train"))
17957 (substitute* `("intro.txt"
17958 "check.txt" "find.txt" "parse.txt" "train.txt")
17959 ;; format "tag list" for txt2man"
17960 ((" - ")
17961 " ")
17962 ;; restore formatting of the "name" sections
17963 (("(anystyle|check|find|parse|train) ([A-Z])" _ cmd post)
17964 (string-append cmd " - " post)))
17965 (run-with-output-file "anystyle.txt"
17966 "cat"
17967 "intro.txt"
17968 "section-check.txt" "check.txt"
17969 "section-find.txt" "find.txt"
17970 "section-parse.txt" "parse.txt"
17971 "section-train.txt" "train.txt")
17972 (run-with-output-file
17973 "anystyle.1"
17974 "txt2man"
17975 "-v" "General Commands Manual" "-t" "anystyle" "-s" "1"
17976 "-r" #$(string-append "anystyle-cli "
17977 (package-version this-package))
17978 "-B" "check" "-B" "find" "-B" "parse" "-B" "train"
17979 "anystyle.txt")
17980 (install-file "anystyle.1"
17981 (string-append #$output "/share/man/man1"))))))))
17982 (home-page "https://anystyle.io")
17983 (synopsis "Fast and smart citation reference parsing")
17984 (description
17985 "AnyStyle is a very fast and smart parser for academic reference lists
17986and bibliographies. AnyStyle uses powerful machine learning heuristics based
17987on Conditional Random Fields and aims to make it easy to train the model with
17988data that is relevant to your parsing needs.
17989
17990This package provides the @command{anystyle} command-line utility. AnyStyle
17991can also be used as a Ruby library or as a web application, though the later
17992has not yet been packaged for Guix.")
17993 (license license:bsd-2)
17994 (properties `((upstream-name . "anystyle-cli")))))
17995
17996(define-public ruby-google-protobuf
17997 (package
17998 (name "ruby-google-protobuf")
17999 (version "3.25.3")
18000 (source (origin
18001 (method url-fetch)
18002 (uri (rubygems-uri "google-protobuf" version))
18003 (sha256
18004 (base32
18005 "1mnxzcq8kmyfb9bkzqnp019d1hx1vprip3yzdkkha6b3qz5rgg9r"))))
18006 (build-system ruby-build-system)
18007 (arguments
18008 `(#:tests? #f)) ;; has no tests
18009 (native-inputs (list ruby-rake))
18010 (synopsis "Protocol Buffers are Google's data interchange format")
18011 (description "This library contains the Ruby extension that implements
18012Protocol Buffers functionality in Ruby.
18013
18014The Ruby extension makes use of generated Ruby code that defines message and
18015enum types in a Ruby DSL. You may write definitions in this DSL directly, but
18016we recommend using protoc's Ruby generation support with @code{.proto} files.
18017The build process in this directory only installs the extension; you need to
18018install @code{protoc} (in package ruby-grpc-tools) as well to have Ruby code
18019generation functionality.")
18020 (home-page "https://protobuf.dev")
18021 (license license:bsd-3)))
18022
18023(define-public ruby-googleapis-common-protos-types
18024 (package
18025 (name "ruby-googleapis-common-protos-types")
18026 (version "1.13.0")
18027 (source (origin
18028 (method url-fetch)
18029 (uri (rubygems-uri "googleapis-common-protos-types" version))
18030 (sha256
18031 (base32
18032 "1zrxnv9s2q39f2nh32x7nbfi8lpwzmmn3ji4adglg8dlfr1xrz16"))))
18033 (build-system ruby-build-system)
18034 (arguments
18035 `(#:tests? #f)) ;; has no tests
18036 (propagated-inputs (list ruby-google-protobuf))
18037 (synopsis "Common protocol buffer types used by Google APIs")
18038 (description "Common protocol buffer types used by Google APIs")
18039 (home-page "https://github.com/googleapis/common-protos-ruby")
18040 (license license:asl2.0)))
18041
18042(define-public ruby-grpc
18043 (package
18044 (name "ruby-grpc")
18045 (version "1.62.0")
18046 (source (origin
18047 (method url-fetch)
18048 (uri (rubygems-uri "grpc" version))
18049 (sha256
18050 (base32
18051 "03z8yq0z228g6xxxq6s2mmslpv6psrdmi30dpmhysr4px16d897n"))))
18052 (build-system ruby-build-system)
18053 (arguments
18054 `(#:tests? #f)) ;; has no tests
18055 ;; TODO remove third-party sources (zlib, upb, utf8-range, re2, c-ares,
18056 ;; boringssl-with-bazel, address_sorting, abseil-cpp), see Makefile
18057 (propagated-inputs (list ruby-google-protobuf
18058 ruby-googleapis-common-protos-types))
18059 (synopsis "GRPC system in Ruby")
18060 (description "GRPC is a high performance, open-source universal RPC
18061framework. This package provides a ruby interface for it.")
18062 (home-page "https://github.com/grpc/grpc/tree/master/src/ruby")
18063 (license license:asl2.0)))
18064
18065;;; 322;;;
18066;;; Avoid adding new packages to the end of this file. To reduce the chances 323;;; Avoid adding new packages to the end of this file. To reduce the chances
18067;;; of a merge conflict, place them above by existing packages with similar 324;;; of a merge conflict, place them above by existing packages with similar
diff --git a/gnu/packages/shellutils.scm b/gnu/packages/shellutils.scm
index 954e8a0c554..33336e66944 100644
--- a/gnu/packages/shellutils.scm
+++ b/gnu/packages/shellutils.scm
@@ -74,6 +74,8 @@
74 #:use-module (gnu packages python-xyz) 74 #:use-module (gnu packages python-xyz)
75 #:use-module (gnu packages readline) 75 #:use-module (gnu packages readline)
76 #:use-module (gnu packages ruby) 76 #:use-module (gnu packages ruby)
77 #:use-module (gnu packages ruby-check)
78 #:use-module (gnu packages ruby-xyz)
77 #:use-module (gnu packages shells) 79 #:use-module (gnu packages shells)
78 #:use-module (gnu packages textutils) 80 #:use-module (gnu packages textutils)
79 #:use-module (gnu packages tmux) 81 #:use-module (gnu packages tmux)
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index c5825742d2e..c7d707213b5 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -96,7 +96,8 @@
96 #:use-module (gnu packages python-science) 96 #:use-module (gnu packages python-science)
97 #:use-module (gnu packages python-xyz) 97 #:use-module (gnu packages python-xyz)
98 #:use-module (gnu packages readline) 98 #:use-module (gnu packages readline)
99 #:use-module (gnu packages ruby) 99 #:use-module (gnu packages ruby-check)
100 #:use-module (gnu packages ruby-xyz)
100 #:use-module (gnu packages shells) 101 #:use-module (gnu packages shells)
101 #:use-module (gnu packages sphinx) 102 #:use-module (gnu packages sphinx)
102 #:use-module (gnu packages ssh) 103 #:use-module (gnu packages ssh)
diff --git a/gnu/packages/syndication.scm b/gnu/packages/syndication.scm
index e8d4d09a561..2130cfb0da7 100644
--- a/gnu/packages/syndication.scm
+++ b/gnu/packages/syndication.scm
@@ -65,7 +65,7 @@
65 #:use-module (gnu packages python-xyz) 65 #:use-module (gnu packages python-xyz)
66 #:use-module (gnu packages python-web) 66 #:use-module (gnu packages python-web)
67 #:use-module (gnu packages qt) 67 #:use-module (gnu packages qt)
68 #:use-module (gnu packages ruby) 68 #:use-module (gnu packages ruby-check)
69 #:use-module (gnu packages rust) 69 #:use-module (gnu packages rust)
70 #:use-module (gnu packages sqlite) 70 #:use-module (gnu packages sqlite)
71 #:use-module (gnu packages time) 71 #:use-module (gnu packages time)
@@ -252,8 +252,8 @@ cards.")
252 openssl 252 openssl
253 pkg-config) 253 pkg-config)
254 ;; For building documentation. 254 ;; For building documentation.
255 (if (supported-package? ruby-asciidoctor) 255 (if (supported-package? ruby-asciidoctor/minimal)
256 (list ruby-asciidoctor) 256 (list ruby-asciidoctor/minimal)
257 '()))) 257 '())))
258 (inputs 258 (inputs
259 (list curl 259 (list curl
diff --git a/gnu/packages/task-management.scm b/gnu/packages/task-management.scm
index a383dc8c5d8..342bffde38c 100644
--- a/gnu/packages/task-management.scm
+++ b/gnu/packages/task-management.scm
@@ -59,7 +59,7 @@
59 #:use-module (gnu packages python-xyz) 59 #:use-module (gnu packages python-xyz)
60 #:use-module (gnu packages qt) 60 #:use-module (gnu packages qt)
61 #:use-module (gnu packages readline) 61 #:use-module (gnu packages readline)
62 #:use-module (gnu packages ruby) 62 #:use-module (gnu packages ruby-check)
63 #:use-module (gnu packages time) 63 #:use-module (gnu packages time)
64 #:use-module (gnu packages tls) 64 #:use-module (gnu packages tls)
65 #:use-module (gnu packages version-control) 65 #:use-module (gnu packages version-control)
@@ -280,7 +280,7 @@ execution, and libreadline support.")
280 "../timew-1.4.3/completion/timew-completion.bash" 280 "../timew-1.4.3/completion/timew-completion.bash"
281 (string-append bash-completion-install-dir "/timew")))))))) 281 (string-append bash-completion-install-dir "/timew"))))))))
282 (native-inputs 282 (native-inputs
283 (list ruby-asciidoctor)) 283 (list ruby-asciidoctor/minimal))
284 (inputs 284 (inputs
285 (list gnutls python `(,util-linux "lib"))) 285 (list gnutls python `(,util-linux "lib")))
286 (home-page "https://timewarrior.net") 286 (home-page "https://timewarrior.net")
diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm
index 8ff396c50eb..dc353ac678e 100644
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@ -98,6 +98,7 @@
98 #:use-module (gnu packages qt) 98 #:use-module (gnu packages qt)
99 #:use-module (gnu packages readline) 99 #:use-module (gnu packages readline)
100 #:use-module (gnu packages ruby) 100 #:use-module (gnu packages ruby)
101 #:use-module (gnu packages ruby-xyz)
101 #:use-module (gnu packages shells) 102 #:use-module (gnu packages shells)
102 #:use-module (gnu packages tcl) 103 #:use-module (gnu packages tcl)
103 #:use-module (gnu packages time) 104 #:use-module (gnu packages time)
diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm
index 4ec548b6d40..b4468f71389 100644
--- a/gnu/packages/text-editors.scm
+++ b/gnu/packages/text-editors.scm
@@ -121,7 +121,6 @@
121 #:use-module (gnu packages python-xyz) 121 #:use-module (gnu packages python-xyz)
122 #:use-module (gnu packages qt) 122 #:use-module (gnu packages qt)
123 #:use-module (gnu packages regex) 123 #:use-module (gnu packages regex)
124 #:use-module (gnu packages ruby)
125 #:use-module (gnu packages sdl) 124 #:use-module (gnu packages sdl)
126 #:use-module (gnu packages slang) 125 #:use-module (gnu packages slang)
127 #:use-module (gnu packages sqlite) 126 #:use-module (gnu packages sqlite)
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 35144f94209..a24545a17a7 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -164,7 +164,7 @@
164 #:use-module (gnu packages python-xyz) 164 #:use-module (gnu packages python-xyz)
165 #:use-module (gnu packages readline) 165 #:use-module (gnu packages readline)
166 #:use-module (gnu packages rsync) 166 #:use-module (gnu packages rsync)
167 #:use-module (gnu packages ruby) 167 #:use-module (gnu packages ruby-check)
168 #:use-module (gnu packages sqlite) 168 #:use-module (gnu packages sqlite)
169 #:use-module (gnu packages texinfo) 169 #:use-module (gnu packages texinfo)
170 #:use-module (gnu packages text-editors) 170 #:use-module (gnu packages text-editors)
@@ -4202,8 +4202,8 @@ will reconstruct the object along its delta-base chain and return it.")
4202 go-golang-org-x-sync 4202 go-golang-org-x-sync
4203 go-golang-org-x-sys) 4203 go-golang-org-x-sys)
4204 ;; make `ronn` available during build for man page generation 4204 ;; make `ronn` available during build for man page generation
4205 (if (supported-package? ruby-asciidoctor) 4205 (if (supported-package? ruby-asciidoctor/minimal)
4206 (list ronn-ng ruby-asciidoctor) 4206 (list ronn-ng ruby-asciidoctor/minimal)
4207 '()))) 4207 '())))
4208 (home-page "https://git-lfs.github.com/") 4208 (home-page "https://git-lfs.github.com/")
4209 (synopsis "Git extension for versioning large files") 4209 (synopsis "Git extension for versioning large files")
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index df61065c9dd..9b5fb7d9a27 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -149,6 +149,8 @@
149 #:use-module (gnu packages python-xyz) 149 #:use-module (gnu packages python-xyz)
150 #:use-module (gnu packages readline) 150 #:use-module (gnu packages readline)
151 #:use-module (gnu packages ruby) 151 #:use-module (gnu packages ruby)
152 #:use-module (gnu packages ruby-check)
153 #:use-module (gnu packages ruby-xyz)
152 #:use-module (gnu packages rsync) 154 #:use-module (gnu packages rsync)
153 #:use-module (gnu packages sdl) 155 #:use-module (gnu packages sdl)
154 #:use-module (gnu packages selinux) 156 #:use-module (gnu packages selinux)