gnu: icedove: Update to 78.5.0.
[jackhill/guix/guix.git] / gnu / packages / ruby.scm
CommitLineData
6ef8c59a 1;;; GNU Guix --- Functional package management for GNU
37ab3aba 2;;; Copyright © 2014, 2015 Pjotr Prins <pjotr.guix@thebird.nl>
402b03e6 3;;; Copyright © 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
f586c877 4;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
37ab3aba 5;;; Copyright © 2014, 2015 David Thompson <davet@gnu.org>
6742c6f6 6;;; Copyright © 2015, 2019 Ricardo Wurmus <rekado@elephly.net>
cba53c60 7;;; Copyright © 2015, 2016, 2017 Ben Woodcroft <donttrustben@gmail.com>
3c986a7d 8;;; Copyright © 2017 Nikita <nikita@n0.is>
3cc8e029 9;;; Copyright © 2017, 2019, 2020 Marius Bakke <mbakke@fastmail.com>
d0af85b1 10;;; Copyright © 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
a7b7817d 11;;; Copyright © 2017, 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
6a9d2266 12;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
433e3154 13;;; Copyright © 2017, 2018, 2019 Christopher Baines <mail@cbaines.net>
4db80f8b 14;;; Copyright © 2018 Vasile Dumitrascu <va511e@yahoo.com>
8ef06557 15;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
3355e49c 16;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
fc4f7c45 17;;; Copyright © 2019 Mikhail Kirillov <w96k.ru@gmail.com>
369faa59 18;;; Copyright © 2019 Jelle Licht <jlicht@fsfe.org>
9e065a8a 19;;; Copyright © 2019 Brian Leung <bkleung89@gmail.com>
9c4cb1ef 20;;; Copyright © 2019 Collin J. Doering <collin@rekahsoft.ca>
0c558aa9 21;;; Copyright © 2019 Diego N. Barbato <dnbarbato@posteo.de>
fd248cb8 22;;; Copyright © 2019 Brett Gilio <brettg@posteo.de>
a8cdfd53 23;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
49994222 24;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
b7e76699 25;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
6ef8c59a
PP
26;;;
27;;; This file is part of GNU Guix.
28;;;
29;;; GNU Guix is free software; you can redistribute it and/or modify it
30;;; under the terms of the GNU General Public License as published by
31;;; the Free Software Foundation; either version 3 of the License, or (at
32;;; your option) any later version.
33;;;
34;;; GNU Guix is distributed in the hope that it will be useful, but
35;;; WITHOUT ANY WARRANTY; without even the implied warranty of
36;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
37;;; GNU General Public License for more details.
38;;;
39;;; You should have received a copy of the GNU General Public License
40;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
41
42(define-module (gnu packages ruby)
43 #:use-module ((guix licenses) #:prefix license:)
44 #:use-module (gnu packages)
1db791d5 45 #:use-module (gnu packages base)
933dad91 46 #:use-module (gnu packages bison)
24be6751 47 #:use-module (gnu packages c)
15b16c2c 48 #:use-module (gnu packages check)
6ef8c59a 49 #:use-module (gnu packages compression)
2a9ce5cb 50 #:use-module (gnu packages crypto)
4a9e0585 51 #:use-module (gnu packages databases)
255d1bbe 52 #:use-module (gnu packages dbm)
c41fba01 53 #:use-module (gnu packages rails)
6ef8c59a 54 #:use-module (gnu packages readline)
6ef8c59a 55 #:use-module (gnu packages autotools)
c84dd8d4 56 #:use-module (gnu packages haskell-xyz)
ad79eb55 57 #:use-module (gnu packages java)
6ef8c59a 58 #:use-module (gnu packages libffi)
f3d7bb93 59 #:use-module (gnu packages libidn)
c41fba01
CB
60 #:use-module (gnu packages linux)
61 #:use-module (gnu packages lsof)
34138e42 62 #:use-module (gnu packages maths)
0c8eedc1 63 #:use-module (gnu packages ncurses)
fe5dd5f4 64 #:use-module (gnu packages networking)
3ca43524 65 #:use-module (gnu packages node)
dff5392f 66 #:use-module (gnu packages protobuf)
ac09beba 67 #:use-module (gnu packages python)
44d10b1f 68 #:use-module (gnu packages python-xyz)
763624f5 69 #:use-module (gnu packages ragel)
30f08487 70 #:use-module (gnu packages rsync)
cd0322a3 71 #:use-module (gnu packages sqlite)
cc2b77df 72 #:use-module (gnu packages tls)
66e20863 73 #:use-module (gnu packages version-control)
6ef8c59a
PP
74 #:use-module (guix packages)
75 #:use-module (guix download)
bda0c139 76 #:use-module (guix git-download)
6ef8c59a 77 #:use-module (guix utils)
acf735f2 78 #:use-module (guix build-system gnu)
e920bfca 79 #:use-module (gnu packages xml)
c2c4e5b2 80 #:use-module (gnu packages web)
15b16c2c
CB
81 #:use-module (guix build-system ruby)
82 #:use-module ((srfi srfi-1) #:select (alist-delete)))
6ef8c59a 83
9622928d
MC
84(define %prawn-project-licenses
85 ;; This set of licenses applies to most (all?) components of the Prawn
86 ;; project (it is triple licensed).
87 (list license:ruby
88 license:gpl2+
89 license:gpl3+))
90
6ef8c59a
PP
91(define-public ruby
92 (package
93 (name "ruby")
4914c157 94 (version "2.6.5")
6ef8c59a
PP
95 (source
96 (origin
97 (method url-fetch)
6becfdff
MW
98 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
99 (version-major+minor version)
12d39eb5 100 "/ruby-" version ".tar.xz"))
6ef8c59a
PP
101 (sha256
102 (base32
4914c157 103 "0qhsw2mr04f3lqinkh557msr35pb5rdaqy4vdxcj91flgxqxmmnm"))
65e84e31
BW
104 (modules '((guix build utils)))
105 (snippet `(begin
106 ;; Remove bundled libffi
c033c195 107 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
65e84e31 108 #t))))
6ef8c59a
PP
109 (build-system gnu-build-system)
110 (arguments
111 `(#:test-target "test"
fd248cb8 112 #:configure-flags '("--enable-shared") ; dynamic linking
6ef8c59a 113 #:phases
9656b8be 114 (modify-phases %standard-phases
65e84e31 115 (add-before 'configure 'replace-bin-sh-and-remove-libffi
9656b8be
BW
116 (lambda _
117 (substitute* '("Makefile.in"
118 "ext/pty/pty.c"
119 "io.c"
120 "lib/mkmf.rb"
121 "process.c"
122 "test/rubygems/test_gem_ext_configure_builder.rb"
123 "test/rdoc/test_rdoc_parser.rb"
124 "test/ruby/test_rubyoptions.rb"
125 "test/ruby/test_process.rb"
126 "test/ruby/test_system.rb"
127 "tool/rbinstall.rb")
128 (("/bin/sh") (which "sh")))
129 #t)))))
6ef8c59a
PP
130 (inputs
131 `(("readline" ,readline)
6ef8c59a
PP
132 ("openssl" ,openssl)
133 ("libffi" ,libffi)
4914c157
CB
134 ("gdbm" ,gdbm)))
135 (propagated-inputs
136 `(("zlib" ,zlib)))
6ef8c59a
PP
137 (native-search-paths
138 (list (search-path-specification
139 (variable "GEM_PATH")
3cb3fa67 140 (files (list (string-append "lib/ruby/vendor_ruby"))))))
6becfdff 141 (synopsis "Programming language interpreter")
6ef8c59a
PP
142 (description "Ruby is a dynamic object-oriented programming language with
143a focus on simplicity and productivity.")
bf3be6a5 144 (home-page "https://www.ruby-lang.org")
6ef8c59a
PP
145 (license license:ruby)))
146
1cc7d340
RP
147(define-public ruby-2.7
148 (package
149 (inherit ruby)
763e6133 150 (version "2.7.2")
1cc7d340
RP
151 (source
152 (origin
153 (method url-fetch)
763e6133 154 (uri (string-append "https://cache.ruby-lang.org/pub/ruby/"
1cc7d340
RP
155 (version-major+minor version)
156 "/ruby-" version ".tar.gz"))
157 (sha256
158 (base32
763e6133 159 "1m63461mxi3fg4y3bspbgmb0ckbbb1ldgf9xi0piwkpfsk80cmvf"))
1cc7d340
RP
160 (modules '((guix build utils)))
161 (snippet `(begin
162 ;; Remove bundled libffi
163 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
164 #t))))
165 (arguments
166 `(#:test-target "test"
167 #:configure-flags '("--enable-shared") ; dynamic linking
168 #:phases
169 (modify-phases %standard-phases
170 (add-before 'configure 'replace-bin-sh-and-remove-libffi
171 (lambda _
172 (substitute* '("configure.ac"
173 "template/Makefile.in"
174 "lib/rubygems/installer.rb"
175 "ext/pty/pty.c"
176 "io.c"
177 "lib/mkmf.rb"
178 "process.c"
179 "test/rubygems/test_gem_ext_configure_builder.rb"
180 "test/rdoc/test_rdoc_parser.rb"
181 "test/ruby/test_rubyoptions.rb"
182 "test/ruby/test_process.rb"
183 "test/ruby/test_system.rb"
184 "tool/rbinstall.rb")
185 (("/bin/sh") (which "sh")))
186 #t)))))
187 (native-inputs
188 `(("autoconf" ,autoconf)))))
189
227fab3e
CB
190(define-public ruby-2.5
191 (package
192 (inherit ruby)
a09ff632 193 (version "2.5.8")
227fab3e
CB
194 (source
195 (origin
196 (method url-fetch)
197 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
198 (version-major+minor version)
199 "/ruby-" version ".tar.xz"))
200 (sha256
201 (base32
a09ff632 202 "0vad5ah1lrdhxsyqr5iqc8c7r7qczpmm76cz8rsf4crimpzv5483"))
227fab3e
CB
203 (modules '((guix build utils)))
204 (snippet `(begin
205 ;; Remove bundled libffi
206 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
207 #t))))))
208
93cae02f
CB
209(define-public ruby-2.4
210 (package
211 (inherit ruby)
dfe211f9 212 (version "2.4.10")
93cae02f
CB
213 (source
214 (origin
215 (method url-fetch)
216 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
217 (version-major+minor version)
218 "/ruby-" version ".tar.xz"))
219 (sha256
220 (base32
dfe211f9 221 "1prhqlgik1zmw9lakl6hkriqslspw48pvhxff17h7ns42p8qwrnm"))
93cae02f
CB
222 (modules '((guix build utils)))
223 (snippet `(begin
224 ;; Remove bundled libffi
225 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
226 #t))))))
227
933dad91
RW
228(define-public mruby
229 (package
230 (name "mruby")
231 (version "2.0.0")
232 (source
233 (origin
234 (method git-fetch)
235 (uri (git-reference
b0e7b699 236 (url "https://github.com/mruby/mruby")
933dad91
RW
237 (commit version)))
238 (file-name (git-file-name name version))
239 (sha256
240 (base32
241 "1r6w1asjshff43ymdwa6xmrkggza99mi2kw88k7ic6ag2j81hcj5"))))
242 (build-system gnu-build-system)
243 (arguments
244 `(#:test-target "test"
245 #:phases
246 (modify-phases %standard-phases
247 (delete 'configure)
248 (add-after 'unpack 'enable-verbose-tests
249 (lambda _
250 (substitute* "Makefile"
251 (("ruby ./minirake" m)
252 (string-append m " --verbose")))
253 #t))
254 (add-after 'unpack 'disable-broken-tests
255 (lambda _
256 (substitute* "mrbgems/mruby-io/test/io.rb"
257 (("assert\\('IO.popen.+$" m)
258 (string-append m "skip \"Hangs in the Guix build environment\"\n"))
259 (("assert\\('IO#isatty.+$" m)
260 (string-append m "skip \"Disable for Guix; there is no /dev/tty\"\n"))
261 ;; This one is really weird. The *expected* output is all wrong.
262 (("assert\\('`cmd`.*" m)
263 (string-append m "skip \"Disable for Guix\"\n"))
264 (("echo foo")
265 (string-append (which "echo") " foo")))
266 #t))
267 ;; There is no install target
268 (replace 'install
269 (lambda* (#:key outputs #:allow-other-keys)
270 (let* ((out (assoc-ref outputs "out"))
271 (bin (string-append out "/bin"))
272 (lib (string-append out "/lib")))
273 (mkdir-p bin)
274 (copy-recursively "build/host/bin" bin)
275 (mkdir-p lib)
276 (copy-recursively "build/host/lib" lib))
277 #t)))))
278 (native-inputs
279 `(("ruby" ,ruby)
280 ("bison" ,bison)))
281 (home-page "https://github.com/mruby/mruby")
282 (synopsis "Lightweight Ruby")
283 (description "mruby is the lightweight implementation of the Ruby
284language. Its syntax is Ruby 1.9 compatible. mruby can be linked and
285embedded within your application.")
286 (license license:expat)))
287
34372d39
RW
288(define-public ruby-commander
289 (package
290 (name "ruby-commander")
291 (version "4.4.7")
292 (source
293 (origin
294 (method url-fetch)
295 (uri (rubygems-uri "commander" version))
296 (sha256
297 (base32
298 "1pxakz596fjqak3cdbha6iva1dlqis86i3kjrgg6lf3sp8i5vhwg"))))
299 (build-system ruby-build-system)
300 (arguments
301 `(#:test-target "spec"
302 #:phases
303 (modify-phases %standard-phases
304 ;; Don't run or require rubocop, the code linting tool, as this is a
305 ;; bit unnecessary.
306 (add-after 'unpack 'dont-run-rubocop
307 (lambda _
308 (substitute* "Rakefile"
309 ((".*rubocop.*") "")
310 ((".*RuboCop.*") ""))
311 #t)))))
312 (propagated-inputs
313 `(("ruby-highline" ,ruby-highline)))
314 (native-inputs
315 `(("bundler" ,bundler)
316 ("ruby-rspec-core" ,ruby-rspec-core)
317 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
318 ("ruby-rspec-mocks" ,ruby-rspec-mocks)
319 ("ruby-simplecov" ,ruby-simplecov)))
320 (home-page "https://github.com/commander-rb/commander")
321 (synopsis "Library for building Ruby command-line executables")
322 (description
323 "Commander aims to be a complete solution for Ruby command-line
324executables. Commander bridges the gap between other terminal related
325libraries (OptionParser, HighLine), while providing many new features, and an
326elegant API.")
327 (license license:expat)))
328
823ed097
CB
329(define-public ruby-highline
330 (package
331 (name "ruby-highline")
6742c6f6 332 (version "2.0.1")
823ed097
CB
333 (source
334 (origin
335 (method url-fetch)
336 (uri (rubygems-uri "highline" version))
337 (sha256
338 (base32
6742c6f6 339 "0gr6pckj2jayxw1gdgh9193j5jag5zrrqqlrnl4jvcwpyd3sn2zc"))))
823ed097
CB
340 (build-system ruby-build-system)
341 (arguments
342 `(#:tests? #f)) ;; TODO: NameError: uninitialized constant SPEC
343 (native-inputs
344 `(("bundler" ,bundler)
345 ("ruby-code-statistics" ,ruby-code-statistics)))
346 (synopsis
347 "HighLine helps you build command-line interfaces")
348 (description
349 "HighLine provides a high-level IO library that provides validation,
350type conversion, and more for command-line interfaces. HighLine also includes
351a menu system for providing multiple options to the user.")
352 (home-page "https://github.com/JEG2/highline")
353 (license (list license:gpl2 license:ruby))))
354
bda0c139
DT
355(define-public ruby-hoe
356 (package
357 (name "ruby-hoe")
d0d2dd24 358 (version "3.21.0")
bda0c139 359 (source (origin
e83c6d00
DT
360 (method url-fetch)
361 (uri (rubygems-uri "hoe" version))
bda0c139
DT
362 (sha256
363 (base32
d0d2dd24 364 "0qid0n56mgsjvq5ksxajv0gb92akky8imwgvw22ajms5g4fd6nf4"))))
bda0c139 365 (build-system ruby-build-system)
d0d2dd24
CB
366 (arguments
367 '(#:phases
368 (modify-phases %standard-phases
369 ;; One of the tests fails if the SOURCE_DATE_EPOCH environment
370 ;; variable is set, so unset it for the duration of the tests.
371 ;;
372 ;; TestHoe#test_possibly_better
373 ;; [/tmp/guix-build-ruby-hoe-3.20.0.drv-0/gem/test/test_hoe.rb:250]:
374 ;; Expected: 2019-11-12 00:00:00 UTC
375 ;; Actual: 1970-01-01 00:00:00 UTC
376 (add-before 'check 'unset-SOURCE-DATE-EPOCH
377 (lambda _
378 (unsetenv "SOURCE_DATE_EPOCH")
379 #t))
380 (add-after 'check 'set-SOURCE-DATE-EPOCH-again
381 (lambda _
382 (setenv "SOURCE_DATE_EPOCH" "1")
383 #t)))))
bda0c139
DT
384 (synopsis "Ruby project management helper")
385 (description
386 "Hoe is a rake/rubygems helper for project Rakefiles. It helps manage,
387maintain, and release projects and includes a dynamic plug-in system allowing
388for easy extensibility. Hoe ships with plug-ins for all the usual project
389tasks including rdoc generation, testing, packaging, deployment, and
390announcement.")
2f3800e5 391 (home-page "https://www.zenspider.com/projects/hoe.html")
bda0c139
DT
392 (license license:expat)))
393
022170dc
PP
394(define-public ruby-rake-compiler
395 (package
396 (name "ruby-rake-compiler")
7ac6bd00 397 (version "1.1.0")
022170dc
PP
398 (source (origin
399 (method url-fetch)
e83c6d00 400 (uri (rubygems-uri "rake-compiler" version))
022170dc
PP
401 (sha256
402 (base32
7ac6bd00 403 "0l4hg21v0phfrfsc2hilgmwvn2imxr0byqh8dv16bya1s5d3km0q"))))
022170dc
PP
404 (build-system ruby-build-system)
405 (arguments
e83c6d00 406 '(#:tests? #f)) ; needs cucumber
022170dc 407 (synopsis "Building and packaging helper for Ruby native extensions")
e881752c 408 (description "Rake-compiler provides a framework for building and
022170dc
PP
409packaging native C and Java extensions in Ruby.")
410 (home-page "https://github.com/rake-compiler/rake-compiler")
411 (license license:expat)))
412
30f08487
RW
413(define-public ruby-rsync
414 (package
415 (name "ruby-rsync")
416 (version "1.0.9")
417 (source
418 (origin
419 (method url-fetch)
420 (uri (rubygems-uri "rsync" version))
421 (sha256
422 (base32
423 "0p8b27q1gvxilqfq2528xpwglzcm2myikkjxpqk7mwbwg9r6knxv"))))
424 (build-system ruby-build-system)
425 (arguments
426 '(#:test-target "spec"
427 #:phases
428 (modify-phases %standard-phases
429 (add-after 'unpack 'remove-coveralls-requirement
430 (lambda _
431 (substitute* "spec/spec_helper.rb"
432 (("require 'coveralls'") "")
433 (("Coveralls.wear!") ""))
434 #t)))))
435 (native-inputs
436 `(("bundler" ,bundler)
437 ("rsync" ,rsync)
438 ("ruby-rspec-core" ,ruby-rspec-core)
439 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
440 ("ruby-rspec-mocks" ,ruby-rspec-mocks)))
441 (home-page "https://github.com/jbussdieker/ruby-rsync")
442 (synopsis "Ruby wrapper around rsync")
443 (description
444 "Ruby Rsync is a Ruby library that can synchronize files between remote
445hosts by wrapping the @file{rsync} binary.")
446 (license license:expat)))
447
acf735f2
DT
448(define-public ruby-i18n
449 (package
450 (name "ruby-i18n")
92dddf6b 451 (version "1.7.0")
acf735f2
DT
452 (source (origin
453 (method url-fetch)
e83c6d00 454 (uri (rubygems-uri "i18n" version))
acf735f2
DT
455 (sha256
456 (base32
92dddf6b 457 "0hmypvx9iyc0b4hski7aic2xzm09cg1c7q1qlpnk3k8s5acxzyhl"))))
acf735f2
DT
458 (build-system ruby-build-system)
459 (arguments
0bfdfd37 460 '(#:tests? #f)) ; no tests
cbb50182 461 (propagated-inputs `(("concurrent-ruby" ,ruby-concurrent)))
acf735f2
DT
462 (synopsis "Internationalization library for Ruby")
463 (description "Ruby i18n is an internationalization and localization
464solution for Ruby programs. It features translation and localization,
465interpolation of values to translations, pluralization, customizable
466transliteration to ASCII, flexible defaults, bulk lookup, lambdas as
467translation data, custom key/scope separator, custom exception handlers, and
468an extensible architecture with a swappable backend.")
92dddf6b 469 (home-page "https://github.com/ruby-i18n/i18n")
acf735f2 470 (license license:expat)))
eb0c2dd6 471
62b138ca
CB
472(define-public ruby-iruby
473 (package
474 (name "ruby-iruby")
475 (version "0.3")
476 (source
477 (origin
478 (method url-fetch)
479 (uri (rubygems-uri "iruby" version))
480 (sha256
481 (base32
482 "1wdf2c0x8y6cya0n3y0p3p7b1sxkb2fdavdn2k58rf4rs37s7rzn"))))
483 (build-system ruby-build-system)
484 (arguments
485 ;; TODO: Tests currently fail.
486 ;;
487 ;; Finished in 1.764405s, 1.1335 runs/s, 5.1009 assertions/s.
488 ;;
489 ;; 1) Failure:
490 ;; IntegrationTest#test_interaction [/tmp/guix-build-ruby-iruby-0.3.drv-0/gem/test/integration_test.rb:25]:
491 ;; In [ expected
492 ;;
493 ;; 2 runs, 9 assertions, 1 failures, 0 errors, 0 skips
494 '(#:tests? #f
495 #:phases
496 (modify-phases %standard-phases
497 (add-after 'unpack 'patch-ipython
498 (lambda* (#:key inputs #:allow-other-keys)
499 (substitute* "lib/iruby/command.rb"
500 (("version = `")
501 (string-append
502 "version = `"
503 (assoc-ref inputs "python-ipython")
504 "/bin/"))
505 (("Kernel\\.exec\\('")
506 (string-append
507 "Kernel.exec('"
508 (assoc-ref inputs "python-ipython")
509 "/bin/")))
510 #t)))))
511 (inputs
512 `(("python-ipython" ,python-ipython)))
513 (propagated-inputs
514 `(("ruby-bond" ,ruby-bond)
515 ("ruby-data_uri" ,ruby-data_uri)
516 ("ruby-mimemagic" ,ruby-mimemagic)
517 ("ruby-multi-json" ,ruby-multi-json)
518 ("ruby-cztop" ,ruby-cztop)
519 ;; Optional inputs
520 ("ruby-pry" ,ruby-pry)))
521 (synopsis "Ruby kernel for Jupyter/IPython")
522 (description
523 "This package provides a Ruby kernel for Jupyter/IPython frontends (e.g.
524notebook).")
525 (home-page "https://github.com/SciRuby/iruby")
526 (license license:expat)))
527
eb0c2dd6
DT
528;; RSpec is the dominant testing library for Ruby projects. Even RSpec's
529;; dependencies use RSpec for their test suites! To avoid these circular
530;; dependencies, we disable tests for all of the RSpec-related packages.
87688ff3 531(define-public ruby-rspec-support
eb0c2dd6
DT
532 (package
533 (name "ruby-rspec-support")
bee67d18 534 (version "3.8.0")
eb0c2dd6
DT
535 (source (origin
536 (method url-fetch)
e83c6d00 537 (uri (rubygems-uri "rspec-support" version))
eb0c2dd6
DT
538 (sha256
539 (base32
bee67d18 540 "0p3m7drixrlhvj2zpc38b11x145bvm311x6f33jjcxmvcm0wq609"))))
eb0c2dd6
DT
541 (build-system ruby-build-system)
542 (arguments
543 '(#:tests? #f)) ; avoid dependency cycles
544 (synopsis "RSpec support library")
545 (description "Support utilities for RSpec gems.")
546 (home-page "https://github.com/rspec/rspec-support")
547 (license license:expat)))
548
549(define-public ruby-rspec-core
550 (package
551 (name "ruby-rspec-core")
bee67d18 552 (version "3.8.0")
eb0c2dd6
DT
553 (source (origin
554 (method url-fetch)
e83c6d00 555 (uri (rubygems-uri "rspec-core" version))
eb0c2dd6
DT
556 (sha256
557 (base32
bee67d18 558 "1p1s5bnbqp3sxk67y0fh0x884jjym527r0vgmhbm81w7aq6b7l4p"))))
eb0c2dd6
DT
559 (build-system ruby-build-system)
560 (arguments
561 '(#:tests? #f)) ; avoid dependency cycles
562 (propagated-inputs
563 `(("ruby-rspec-support" ,ruby-rspec-support)))
564 (synopsis "RSpec core library")
565 (description "Rspec-core provides the RSpec test runner and example
566groups.")
567 (home-page "https://github.com/rspec/rspec-core")
568 (license license:expat)))
e6962009 569
64c318f2
BW
570(define-public ruby-rspec-core-2
571 (package (inherit ruby-rspec-core)
572 (version "2.14.8")
573 (source (origin
574 (method url-fetch)
575 (uri (rubygems-uri "rspec-core" version))
576 (sha256
577 (base32
578 "0psjy5kdlz3ph39br0m01w65i1ikagnqlg39f8p65jh5q7dz8hwc"))))
579 (propagated-inputs `())))
580
20c05ea9 581(define-public ruby-diff-lcs
e6962009
DT
582 (package
583 (name "ruby-diff-lcs")
e2fcef39 584 (version "1.3")
e6962009
DT
585 (source (origin
586 (method url-fetch)
e83c6d00 587 (uri (rubygems-uri "diff-lcs" version))
e6962009
DT
588 (sha256
589 (base32
e2fcef39 590 "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza"))))
e6962009
DT
591 (build-system ruby-build-system)
592 (arguments
593 '(#:tests? #f)) ; avoid dependency cycles
594 (synopsis "Compute the difference between two Enumerable sequences")
595 (description "Diff::LCS computes the difference between two Enumerable
596sequences using the McIlroy-Hunt longest common subsequence (LCS) algorithm.
597It includes utilities to create a simple HTML diff output format and a
598standard diff-like tool.")
599 (home-page "https://github.com/halostatue/diff-lcs")
600 (license license:expat)))
601
602(define-public ruby-rspec-expectations
603 (package
604 (name "ruby-rspec-expectations")
bee67d18 605 (version "3.8.2")
e6962009
DT
606 (source (origin
607 (method url-fetch)
e83c6d00 608 (uri (rubygems-uri "rspec-expectations" version))
e6962009
DT
609 (sha256
610 (base32
bee67d18 611 "18l21hy1zdc2pgc2yb17k3n2al1khpfr0z6pijlm852iz6vj0dkm"))))
e6962009
DT
612 (build-system ruby-build-system)
613 (arguments
614 '(#:tests? #f)) ; avoid dependency cycles
615 (propagated-inputs
616 `(("ruby-rspec-support" ,ruby-rspec-support)
20c05ea9 617 ("ruby-diff-lcs" ,ruby-diff-lcs)))
e881752c 618 (synopsis "RSpec expectations library")
e6962009
DT
619 (description "Rspec-expectations provides a simple API to express expected
620outcomes of a code example.")
621 (home-page "https://github.com/rspec/rspec-expectations")
622 (license license:expat)))
4f2a0cac 623
fb157f25
BW
624(define-public ruby-rspec-expectations-2
625 (package (inherit ruby-rspec-expectations)
626 (version "2.14.5")
627 (source (origin
628 (method url-fetch)
629 (uri (rubygems-uri "rspec-expectations" version))
630 (sha256
631 (base32
632 "1ni8kw8kjv76jvwjzi4jba00k3qzj9f8wd94vm6inz0jz3gwjqf9"))))
633 (propagated-inputs
634 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
635
818b402c
MC
636(define-public ruby-sorcerer
637 (package
638 (name "ruby-sorcerer")
639 (version "2.0.1")
640 (source
641 (origin
642 (method url-fetch)
643 (uri (rubygems-uri "sorcerer" version))
644 (sha256
645 (base32
646 "0d32ha9pp9slpmsm027pkdpbr9vc5jn2m8rl6hwwx6a87m8cr58h"))))
647 (build-system ruby-build-system)
648 (synopsis "Ripper-style abstract syntax tree to Ruby source generator")
649 (description "Sorcerer generates Ruby code from a Ripper-like abstract
650syntax tree (i.e. S-Expressions). Sorcerer is targeted mainly at small
7230f6d5
TGR
651snippets of Ruby code, expressible in a single line. Longer examples may be
652re-sourced, but they will be rendered in a single-line format.")
818b402c
MC
653 (home-page "https://github.com/rspec-given/sorcerer")
654 (license license:expat)))
655
906b9a14
MC
656(define-public ruby-given-core
657 (package
658 (name "ruby-given-core")
659 (version "3.8.0")
660 (source
661 (origin
662 (method url-fetch)
663 (uri (rubygems-uri "given_core" version))
664 (sha256
665 (base32
666 "1lzyqllbbv6as3qgwz2007mvy7wy247bgkch9adnmh1zfa73bkrg"))))
667 (build-system ruby-build-system)
668 (arguments '(#:tests? #f)) ;no test suite for the core package
669 (propagated-inputs
670 `(("ruby-sorcerer" ,ruby-sorcerer)))
671 (synopsis "Core abstractions used by rspec-given and minitest-given")
672 (description "Given_core is the basic functionality behind rspec-given and
673minitest-given, extensions that allow the use of Given/When/Then terminology
674when defining specifications.")
675 (home-page "https://github.com/rspec-given/rspec-given")
676 (license license:expat)))
677
9c171558
MC
678(define-public ruby-rspec-given
679 (package
680 (name "ruby-rspec-given")
681 (version "3.8.0")
682 (source
683 (origin
684 (method url-fetch)
685 (uri (rubygems-uri "rspec-given" version))
686 (sha256
687 (base32
688 "1783bazja10kbha8hk15khvybsq88siyax02cpkk688604h54nji"))))
689 (build-system ruby-build-system)
690 (arguments
691 `(#:test-target "rs"
692 #:phases
693 (modify-phases %standard-phases
694 (add-after 'unpack 'fix-rakefile
695 (lambda _
696 (substitute* '("Rakefile" "rakelib/gemspec.rake")
697 (("require '\\./lib/given/.*") "")
698 (("Given::VERSION") (format #f "~s" ,version))
699 ;; Fix the error: "cannot load such file -- example_helper"
700 (("sh \"rspec")
701 "sh \"rspec -Ilib:examples"))
702 #t))
703 (add-after 'extract-gemspec 'delete-failing-tests
704 ;; See: https://github.com/jimweirich/rspec-given/issues/57.
705 (lambda _
706 (substitute* ".gemspec"
707 (("\"spec/lib/given/natural_assertion_spec.rb\".freeze, ")
708 "")
709 (("\"examples/integration/failing_messages_spec.rb\".freeze, ")
710 ""))
711 (delete-file "spec/lib/given/natural_assertion_spec.rb")
712 (delete-file "examples/integration/failing_messages_spec.rb")
713 #t)))))
714 (native-inputs
715 `(("ruby-rspec" ,ruby-rspec)
716 ("ruby-minitest" ,ruby-minitest)))
717 (propagated-inputs
718 `(("ruby-given-core" ,ruby-given-core)
719 ("ruby-rspec" ,ruby-rspec)))
720 (synopsis "Given/When/Then for RSpec and Minitest")
721 (description "Given is an RSpec extension that allows the use of
722Given/When/Then terminology when defining specifications, in a way similar to
723the Cucumber Gherkin language.")
724 (home-page "https://github.com/rspec-given/rspec-given")
725 (license license:expat)))
726
999ffb26
DM
727(define-public ruby-rspec-its
728 (package
729 (name "ruby-rspec-its")
b2244c68 730 (version "1.3.0")
999ffb26
DM
731 (source
732 (origin
3306f02a
CB
733 (method git-fetch)
734 (uri (git-reference
b0e7b699 735 (url "https://github.com/rspec/rspec-its")
3306f02a
CB
736 (commit (string-append "v" version))))
737 (file-name (git-file-name name version))
999ffb26
DM
738 (sha256
739 (base32
b2244c68 740 "02mlsc9d4d1cjj5vahi8v3q8hyn9fyiv8nnlidhgfh186qp20g1p"))))
999ffb26
DM
741 (build-system ruby-build-system)
742 (arguments
3306f02a
CB
743 `(#:test-target "spec"
744 #:phases
745 (modify-phases %standard-phases
746 (add-after 'unpack 'dont-install-gems-from-gemfile
747 (lambda _
748 (substitute* "Gemfile"
749 (("rspec rspec-core rspec-expectations rspec-mocks rspec-support")
750 ""))
751 #t))
7c8eb479 752 (add-before 'build 'loosen-ffi-requirement
b2244c68 753 (lambda _
7c8eb479 754 ;; Accept any version of ruby-ffi.
b2244c68 755 (substitute* "Gemfile"
7c8eb479
MB
756 ((" gem 'ffi', '~> 1\\.9\\.25'")
757 " gem 'ffi'"))
b2244c68 758 #t))
3306f02a
CB
759 (add-before 'build 'remove-unnecessary-dependency-versions-from-gemfile
760 (lambda _
761 (substitute* "rspec-its.gemspec"
762 (("rake.*") "rake'\n")
b2244c68
BH
763 (("spec.add_development_dependency 'cucumber'.*")
764 "spec.add_development_dependency 'cucumber'\n")
3306f02a 765 (("bundler.*") "bundler'\n")
b2244c68 766 (("\"aruba.*") "'aruba'\n"))
3306f02a 767 #t)))))
999ffb26
DM
768 (propagated-inputs
769 `(("ruby-rspec-core" ,ruby-rspec-core)
770 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
3306f02a
CB
771 (native-inputs
772 `(("bundler" ,bundler)
773 ("ruby-cucumber" ,ruby-cucumber)
b2244c68 774 ("ruby-ffi" ,ruby-ffi)
3306f02a
CB
775 ("ruby-aruba" ,ruby-aruba)))
776 (synopsis "RSpec extension that provides the @code{its} method")
777 (description
778 "RSpec::Its provides the its method as a short-hand to specify the expected
779value of an attribute. For example, one can use @code{its(:size)\\{should
780eq(1)\\}}.")
999ffb26
DM
781 (home-page "https://github.com/rspec/rspec-its")
782 (license license:expat)))
783
d7bd7016
MC
784;;; This variant is used to break a cycle with ruby-protobuf.
785(define-public ruby-rspec-its-minimal
786 (hidden-package
787 (package
788 (inherit ruby-rspec-its)
789 (arguments
790 (substitute-keyword-arguments (package-arguments ruby-rspec-its)
791 ((#:tests? _ #f) #f)))
792 (native-inputs '()))))
793
4f2a0cac
DT
794(define-public ruby-rspec-mocks
795 (package
796 (name "ruby-rspec-mocks")
bee67d18 797 (version "3.8.0")
4f2a0cac
DT
798 (source (origin
799 (method url-fetch)
e83c6d00 800 (uri (rubygems-uri "rspec-mocks" version))
4f2a0cac
DT
801 (sha256
802 (base32
bee67d18 803 "06y508cjqycb4yfhxmb3nxn0v9xqf17qbd46l1dh4xhncinr4fyp"))))
4f2a0cac
DT
804 (build-system ruby-build-system)
805 (arguments
806 '(#:tests? #f)) ; avoid dependency cycles
807 (propagated-inputs
808 `(("ruby-rspec-support" ,ruby-rspec-support)
20c05ea9 809 ("ruby-diff-lcs" ,ruby-diff-lcs)))
4f2a0cac
DT
810 (synopsis "RSpec stubbing and mocking library")
811 (description "Rspec-mocks provides RSpec's \"test double\" framework, with
812support for stubbing and mocking.")
813 (home-page "https://github.com/rspec/rspec-mocks")
814 (license license:expat)))
d4fde1f2 815
6da9adeb
BW
816(define-public ruby-rspec-mocks-2
817 (package (inherit ruby-rspec-mocks)
818 (version "2.14.6")
819 (source (origin
820 (method url-fetch)
821 (uri (rubygems-uri "rspec-mocks" version))
822 (sha256
823 (base32
824 "1fwsmijd6w6cmqyh4ky2nq89jrpzh56hzmndx9wgkmdgfhfakv30"))))
825 (propagated-inputs
826 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
827
198bc648
CB
828(define-public ruby-rspec-rerun
829 (package
830 (name "ruby-rspec-rerun")
831 (version "1.1.0")
832 (source
833 (origin
834 (method url-fetch)
835 (uri (rubygems-uri "rspec-rerun" version))
836 (sha256
837 (base32
838 "1gy7znkcaqhpccfnk2nvaqbsvgxy3q57cmjwkl9fi1zabaq5lbkj"))))
839 (build-system ruby-build-system)
840 (arguments
841 '(;; No included tests
842 #:tests? #f))
843 (propagated-inputs `(("ruby-rspec" ,ruby-rspec)))
844 (synopsis "Track failed RSpec tests to re-run them")
845 (description
846 "This package provides an automated way to track, and then re-run failed
847RSpec tests.")
848 (home-page "https://github.com/dblock/rspec-rerun")
849 (license license:expat)))
850
9c4cb1ef
CD
851(define-public ruby-rspec-wait
852 (package
853 (name "ruby-rspec-wait")
854 (version "0.0.9")
855 (source
856 (origin
857 (method url-fetch)
858 (uri (rubygems-uri "rspec-wait" version))
859 (sha256
860 (base32
861 "0gvj1bp5ccx001dyvcgk2j49s5sl6vs9fdaqqb08z3bd1554hsww"))))
862 (build-system ruby-build-system)
863 (arguments
864 '(#:phases
865 (modify-phases %standard-phases
866 (replace 'check
867 (lambda _
868 (invoke "rake" "spec"))))))
869 (native-inputs
870 `(("bundler" ,bundler)))
871 (propagated-inputs
872 `(("ruby-rspec" ,ruby-rspec)))
873 (home-page "https://github.com/laserlemon/rspec-wait")
874 (synopsis "Wait for conditions in RSpec")
875 (description
876 "RSpec::Wait strives to make it easier to test asynchronous or slow
877interactions.")
878 (license license:expat)))
879
d4fde1f2
DT
880(define-public ruby-rspec
881 (package
882 (name "ruby-rspec")
bee67d18 883 (version "3.8.0")
d4fde1f2
DT
884 (source (origin
885 (method url-fetch)
e83c6d00 886 (uri (rubygems-uri "rspec" version))
d4fde1f2
DT
887 (sha256
888 (base32
bee67d18 889 "15ppasvb9qrscwlyjz67ppw1lnxiqnkzx5vkx1bd8x5n3dhikxc3"))))
d4fde1f2
DT
890 (build-system ruby-build-system)
891 (arguments
892 '(#:tests? #f)) ; avoid dependency cycles
893 (propagated-inputs
894 `(("ruby-rspec-core" ,ruby-rspec-core)
895 ("ruby-rspec-mocks" ,ruby-rspec-mocks)
896 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
897 (synopsis "Behavior-driven development framework for Ruby")
898 (description "RSpec is a behavior-driven development (BDD) framework for
899Ruby. This meta-package includes the RSpec test runner, along with the
900expectations and mocks frameworks.")
35739712 901 (home-page "https://rspec.info/")
d4fde1f2 902 (license license:expat)))
2cbc105b 903
5ac984b3
BW
904(define-public ruby-rspec-2
905 (package (inherit ruby-rspec)
906 (version "2.14.1")
907 (source (origin
908 (method url-fetch)
909 (uri (rubygems-uri "rspec" version))
910 (sha256
911 (base32
912 "134y4wzk1prninb5a0bhxgm30kqfzl8dg06af4js5ylnhv2wd7sg"))))
913 (propagated-inputs
914 `(("ruby-rspec-core" ,ruby-rspec-core-2)
915 ("ruby-rspec-mocks" ,ruby-rspec-mocks-2)
916 ("ruby-rspec-expectations" ,ruby-rspec-expectations-2)))))
917
2cbc105b
DT
918;; Bundler is yet another source of circular dependencies, so we must disable
919;; its test suite as well.
920(define-public bundler
921 (package
922 (name "bundler")
cbee8e31 923 (version "2.1.4")
2cbc105b
DT
924 (source (origin
925 (method url-fetch)
e83c6d00 926 (uri (rubygems-uri "bundler" version))
2cbc105b
DT
927 (sha256
928 (base32
cbee8e31 929 "12glbb1357x91fvd004jgkw7ihlkpc9dwr349pd7j83isqhls0ah"))))
2cbc105b
DT
930 (build-system ruby-build-system)
931 (arguments
932 '(#:tests? #f)) ; avoid dependency cycles
933 (synopsis "Ruby gem bundler")
934 (description "Bundler automatically downloads and installs a list of gems
935specified in a \"Gemfile\", as well as their dependencies.")
2f3800e5 936 (home-page "https://bundler.io/")
2cbc105b 937 (license license:expat)))
98b87b82 938
cf36174f
RW
939(define-public ruby-builder
940 (package
941 (name "ruby-builder")
42b48db2 942 (version "3.2.3")
cf36174f
RW
943 (source (origin
944 (method url-fetch)
945 (uri (rubygems-uri "builder" version))
946 (sha256
947 (base32
42b48db2 948 "0qibi5s67lpdv1wgcj66wcymcr04q6j4mzws6a479n0mlrmh5wr1"))))
cf36174f
RW
949 (build-system ruby-build-system)
950 (arguments
951 `(#:phases
952 (modify-phases %standard-phases
953 (add-after 'unpack 'do-not-use-rvm
954 (lambda _
955 (substitute* "rakelib/tags.rake"
956 (("RVM_GEMDIR = .*") "RVM_GEMDIR = 'no-rvm-please'\n"))
957 #t)))))
958 (synopsis "Ruby library to create structured data")
959 (description "Builder provides a number of builder objects that make it
960easy to create structured data. Currently the following builder objects are
961supported: XML Markup and XML Events.")
962 (home-page "https://github.com/jimweirich/builder")
963 (license license:expat)))
964
566f71f8
CB
965(define-public ruby-bump
966 (package
967 (name "ruby-bump")
968 (version "0.7.0")
969 (source
970 (origin
971 (method url-fetch)
972 (uri (rubygems-uri "bump" version))
973 (sha256
974 (base32
975 "1xinbr9rzh6cj75x24niwgqcnbhdxc68a8bc41lk8xv6fd906fym"))))
976 (build-system ruby-build-system)
977 (arguments
978 '(;; No included tests
979 #:tests? #f))
980 (synopsis "Tool for working with Rubygems")
981 (description
982 "Bump provides commands to manage Rubygem versioning, updating to the
983next patch version for example.")
984 (home-page "https://github.com/gregorym/bump")
985 (license license:expat)))
986
ad79eb55
RW
987(define-public ruby-rjb
988 (package
989 (name "ruby-rjb")
aeb4e61e 990 (version "1.5.5")
ad79eb55
RW
991 (source (origin
992 (method url-fetch)
993 (uri (rubygems-uri "rjb" version))
994 (sha256
995 (base32
aeb4e61e 996 "1ppj8rbicj3w0nhh7f73mflq19yd7pzdzkh2a91hcvphriy5b0ca"))))
ad79eb55
RW
997 (build-system ruby-build-system)
998 (arguments
999 `(#:tests? #f ; no rakefile
1000 #:phases
1001 (modify-phases %standard-phases
1002 (add-before 'build 'set-java-home
1003 (lambda* (#:key inputs #:allow-other-keys)
1004 (setenv "JAVA_HOME" (assoc-ref inputs "jdk"))
1005 #t)))))
1006 (native-inputs
d2540f80 1007 `(("jdk" ,icedtea "jdk")))
ad79eb55
RW
1008 (synopsis "Ruby-to-Java bridge using the Java Native Interface")
1009 (description "RJB is a bridge program that connects Ruby and Java via the
1010Java Native Interface.")
2f3800e5 1011 (home-page "https://www.artonx.org/collabo/backyard/?RubyJavaBridge")
ad79eb55
RW
1012 (license license:lgpl2.1+)))
1013
f9ae2c06
PP
1014(define-public ruby-log4r
1015 (package
1016 (name "ruby-log4r")
1017 (version "1.1.10")
1018 (source
1019 (origin
1020 (method url-fetch)
1021 (uri (rubygems-uri "log4r" version))
1022 (sha256
1023 (base32
1024 "0ri90q0frfmigkirqv5ihyrj59xm8pq5zcmf156cbdv4r4l2jicv"))))
1025 (build-system ruby-build-system)
1026 (arguments
1027 '(#:tests? #f)) ; no Rakefile in gem
1028 (synopsis "Flexible logging library for Ruby")
1029 (description "Comprehensive and flexible logging library written
1030in Ruby for use in Ruby programs. It features a hierarchical logging
1031system of any number of levels, custom level names, logger
1032inheritance, multiple output destinations per log event, execution
1033tracing, custom formatting, thread safteyness, XML and YAML
1034configuration, and more.")
1035 (home-page "http://log4r.rubyforge.org/")
1036 (license license:bsd-3)))
1037
71a03c29
RW
1038(define-public ruby-atoulme-antwrap
1039 (package
1040 (name "ruby-atoulme-antwrap")
1041 (version "0.7.5")
1042 (source (origin
1043 (method url-fetch)
1044 (uri (rubygems-uri "atoulme-Antwrap" version))
1045 (sha256
1046 (base32
1047 "05s3iw44lqa81f8nfy5f0xjj808600h82zb9bsh46b9kcq2w2kmz"))))
1048 (build-system ruby-build-system)
1049 ;; Test data required for most of the tests are not included.
1050 (arguments `(#:tests? #f))
1051 (native-inputs
1052 `(("ruby-hoe" ,ruby-hoe)))
1053 (inputs
1054 `(("ruby-rjb" ,ruby-rjb)))
1055 (synopsis "Ruby wrapper for the Ant build tool")
1056 (description "Antwrap is a Ruby module that wraps the Apache Ant build
1057tool. Antwrap can be used to invoke Ant tasks from a Ruby or a JRuby
1058script.")
1059 (home-page "http://rubyforge.org/projects/antwrap/")
1060 (license license:expat)))
1061
fe1ddad5
RW
1062(define-public ruby-atoulme-saikuro
1063 (package
1064 (name "ruby-atoulme-saikuro")
1065 (version "1.2.1")
1066 (source (origin
1067 (method url-fetch)
1068 (uri (rubygems-uri "atoulme-Saikuro" version))
1069 (sha256
1070 (base32
1071 "0kvd2nsxffbza61d3q4j94wrbnbv50r1zy3a7q26f6k706fw1f19"))))
1072 (build-system ruby-build-system)
1073 ;; FIXME: There are no unit tests. The tests are demonstrations of the
1074 ;; "saikuro" tool.
1075 (arguments `(#:tests? #f))
1076 (synopsis "Cyclomatic complexity analyzer")
1077 (description "Saikuro is a Ruby cyclomatic complexity analyzer. When
1078given Ruby source code Saikuro will generate a report listing the cyclomatic
1079complexity of each method found. In addition, Saikuro counts the number of
1080lines per method and can generate a listing of the number of tokens on each
1081line of code.")
1082 (home-page "http://www.github.com/atoulme/Saikuro")
1083 ;; File headers contain the BSD-3 license and the README.rdoc says that
1084 ;; "Saikuro uses the BSD license", but the LICENSE file contains the text
1085 ;; of the Expat license.
1086 (license license:bsd-3)))
1087
c84dd8d4
MC
1088(define-public ruby-pandoc-ruby
1089 (package
1090 (name "ruby-pandoc-ruby")
1091 (version "2.1.4")
1092 (source
1093 (origin
1094 (method git-fetch) ;the gem lacks many test files
1095 (uri (git-reference
b0e7b699 1096 (url "https://github.com/xwmx/pandoc-ruby")
c84dd8d4
MC
1097 (commit version)))
1098 (file-name (git-file-name name version))
1099 (sha256
1100 (base32
1101 "03a11clhycyn0jhc7g9davpqd83sn60jqwjy1y145ag9sq6sp935"))))
1102 (build-system ruby-build-system)
1103 (arguments
1104 `(#:phases
1105 (modify-phases %standard-phases
1106 (add-after 'unpack 'disable-failing-tests
1107 ;; TODO: Remove this phase after ghc-pandoc gets upgraded to 2.9.2+
1108 ;; (see: https://github.com/xwmx/pandoc-ruby/issues/39).
1109 (lambda _
1110 (substitute* "test/test_conversions.rb"
1111 (("next if from == to.*" all)
1112 (string-append
1113 all
1114 " next if ['plain', 'beamer'].include? to\n")))
1115 #t))
1116 (add-after 'unpack 'patch-pandoc-path
1117 (lambda* (#:key inputs #:allow-other-keys)
8cc8e584 1118 (let ((pandoc (string-append (assoc-ref inputs "pandoc")
c84dd8d4
MC
1119 "/bin/pandoc")))
1120 (substitute* "lib/pandoc-ruby.rb"
1121 (("@@pandoc_path = 'pandoc'")
1122 (format #f "@@pandoc_path = '~a'" pandoc)))
1123 (substitute* "test/test_pandoc_ruby.rb"
1124 (("('|\")pandoc" _ quote)
1125 (string-append quote pandoc))
1126 (("\\^pandoc")
1127 ".*pandoc"))
1128 #t)))
1129 (add-after 'extract-gemspec 'remove-Gemfile.lock
1130 (lambda _
1131 (delete-file "Gemfile.lock")
1132 (substitute* "pandoc-ruby.gemspec"
1133 (("Gemfile\\.lock") ""))
1134 #t)))))
1135 (native-inputs
1136 `(("ruby-mocha" ,ruby-mocha)))
1137 (inputs
8cc8e584 1138 `(("pandoc" ,pandoc)))
c84dd8d4
MC
1139 (synopsis "Ruby wrapper for Pandoc")
1140 (description "PandocRuby is a wrapper for Pandoc, a Haskell library with
1141command line tools for converting one markup format to another. Pandoc can
1142convert documents from a variety of formats including markdown,
1143reStructuredText, textile, HTML, DocBook, LaTeX, and MediaWiki markup to a
1144variety of other formats, including markdown, reStructuredText, HTML, LaTeX,
1145ConTeXt, PDF, RTF, DocBook XML, OpenDocument XML, ODT, GNU Texinfo, MediaWiki
1146markup, groff man pages, HTML slide shows, EPUB, Microsoft Word docx, and
1147more.")
1148 (home-page "https://github.com/xwmx/pandoc-ruby")
1149 (license license:expat)))
1150
fef0564c
MC
1151(define-public ruby-slim
1152 (package
1153 (name "ruby-slim")
1154 (version "4.1.0")
1155 (source
1156 (origin
1157 (method url-fetch)
1158 (uri (rubygems-uri "slim" version))
1159 (sha256
1160 (base32
1161 "0gjx30g84c82qzg32bd7giscvb4206v7mvg56kc839w9wjagn36n"))))
1162 (build-system ruby-build-system)
1163 (arguments
1164 `(#:phases
1165 (modify-phases %standard-phases
1166 ;; See: https://github.com/slim-template/slim/issues/857 and
1167 ;; https://github.com/slim-template/slim/issues/858.
1168 (add-after 'unpack 'skip-broken-tests
1169 (lambda _
1170 (substitute* "test/core/test_embedded_engines.rb"
1171 (("def test_render_with_markdown")
1172 "def skipped_test_render_with_markdown"))
1173 (substitute* "test/translator/test_translator.rb"
1174 (("raise (\"Missing test for.*)" _ tail)
1175 (string-append "print " tail)))
1176 #t))
1177 ;; See: https://salsa.debian.org/ruby-team/ruby-slim/-/commit/
1178 ;; 824862bd99d1675bc699d8fc71ba965a785c1f44.
1179 (add-after 'unpack 'prevent-bundler-interference
1180 (lambda _
1181 (substitute* "Rakefile"
1182 (("require 'bundler/setup'") "nil")
1183 (("Bundler::GemHelper\\.install_tasks") "nil"))
1184 #t)))))
1185 (native-inputs
1186 `(("ruby-rack-test" ,ruby-rack-test)
1187 ("ruby-sinatra" ,ruby-sinatra)))
1188 (propagated-inputs
1189 `(("ruby-temple" ,ruby-temple)
1190 ("ruby-tilt" ,ruby-tilt)))
1191 (synopsis "Minimalist template language for Ruby")
1192 (description "Slim is a template language for Ruby that aims to reduce the
1193syntax to the minimum while remaining clear.")
1194 (home-page "http://slim-lang.com/")
1195 (license license:expat)))
1196
34138e42
BW
1197(define-public ruby-asciidoctor
1198 (package
751bf33d 1199 (name "ruby-asciidoctor")
5df1126c 1200 (version "2.0.10")
751bf33d
MC
1201 (source
1202 (origin
5df1126c
MC
1203 (method git-fetch) ;the gem release lacks a Rakefile
1204 (uri (git-reference
b0e7b699 1205 (url "https://github.com/asciidoctor/asciidoctor")
5df1126c
MC
1206 (commit (string-append "v" version))))
1207 (file-name (git-file-name name version))
751bf33d 1208 (sha256
34138e42 1209 (base32
5df1126c 1210 "0jaxpnsdnx3qyjw5p2lsx1swny12q1i2vxw2kgdp4vlsyjv95z95"))))
751bf33d
MC
1211 (build-system ruby-build-system)
1212 (arguments
1213 `(#:test-target "test:all"
1214 #:phases
1215 (modify-phases %standard-phases
5df1126c 1216 (replace 'replace-git-ls-files
751bf33d 1217 (lambda _
5df1126c
MC
1218 ;; TODO: Remove after the fix of using 'cut' to better mimic the
1219 ;; git ls-files output is merged in ruby-build-system.
1220 (substitute* "asciidoctor.gemspec"
1221 (("`git ls-files -z`")
1222 "`find . -type f -print0 |sort -z|cut -zc3-`"))
1223 #t))
1224 (add-after 'extract-gemspec 'strip-version-requirements
1225 (lambda _
1226 (delete-file "Gemfile")
1227 (substitute* "asciidoctor.gemspec"
1228 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
1229 (string-append stripped "\n")))
751bf33d
MC
1230 #t)))))
1231 (native-inputs
5df1126c
MC
1232 `(("ruby-erubis" ,ruby-erubis)
1233 ("ruby-minitest" ,ruby-minitest)
751bf33d
MC
1234 ("ruby-nokogiri" ,ruby-nokogiri)
1235 ("ruby-asciimath" ,ruby-asciimath)
5df1126c
MC
1236 ("ruby-coderay" ,ruby-coderay)
1237 ("ruby-cucumber" ,ruby-cucumber)
1238 ("ruby-haml" ,ruby-haml)
1239 ("ruby-rouge" ,ruby-rouge)
1240 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
1241 ("ruby-simplecov" ,ruby-simplecov)
1242 ("ruby-slim" ,ruby-slim)
1243 ("ruby-tilt" ,ruby-tilt)))
751bf33d
MC
1244 (synopsis "Converter from AsciiDoc content to other formats")
1245 (description "Asciidoctor is a text processor and publishing toolchain for
1246converting AsciiDoc content to HTML5, DocBook 5 (or 4.5), PDF, and other
1247formats.")
1248 (home-page "https://asciidoctor.org")
1249 (license license:expat)))
34138e42 1250
15b188c3
MC
1251(define-public ruby-prawn-icon
1252 (package
1253 (name "ruby-prawn-icon")
1254 (version "2.5.0")
1255 (source
1256 (origin
1257 (method url-fetch)
1258 (uri (rubygems-uri "prawn-icon" version))
1259 (sha256
1260 (base32
1261 "1ivkdf8rdf92hhy97vbmc2a4w97vcvqd58jcj4z9hz3hfsb1526w"))))
1262 (build-system ruby-build-system)
1263 (arguments
1264 `(#:test-target "spec"
1265 #:phases (modify-phases %standard-phases
1266 (add-after 'unpack 'remove-unnecessary-dependencies
1267 (lambda _
1268 (substitute* '("Rakefile" "spec/spec_helper.rb")
1269 ((".*[Bb]undler.*") "")
1270 (("^require 'rubocop.*") "")
1271 (("^RuboCop.*") ""))
1272 #t)))))
1273 (native-inputs
1274 `(("ruby-pdf-inspector" ,ruby-pdf-inspector)
1275 ("ruby-pdf-reader" ,ruby-pdf-reader)
1276 ("ruby-rspec" ,ruby-rspec)
1277 ("ruby-simplecov" ,ruby-simplecov)))
1278 (propagated-inputs
1279 `(("ruby-prawn" ,ruby-prawn)))
1280 (synopsis "Icon fonts for use with the Prawn PDF toolkit")
1281 (description "@code{Prawn::Icon} provides various icon fonts including
1282FontAwesome, PaymentFont and Foundation Icons for use with the Prawn PDF
1283toolkit.")
1284 (home-page "https://github.com/jessedoyle/prawn-icon/")
1285 (license %prawn-project-licenses)))
1286
2d877f6e
MC
1287(define-public ruby-css-parser
1288 (package
1289 (name "ruby-css-parser")
1290 (version "1.7.1")
1291 (source
1292 (origin
1293 (method url-fetch)
1294 (uri (rubygems-uri "css_parser" version))
1295 (sha256
1296 (base32
1297 "04c4dl8cm5rjr50k9qa6yl9r05fk9zcb1zxh0y0cdahxlsgcydfw"))))
1298 (build-system ruby-build-system)
1299 (arguments `(#:tests? #f)) ;gem doesn't ship with test suite
1300 (propagated-inputs
1301 `(("ruby-addressable" ,ruby-addressable)))
1302 (synopsis "Ruby Cascading Style Sheets (CSS) parser")
1303 (description "This package allows loading, parsing and cascading Cascading
1304Style Sheets (CSS) rule sets in Ruby.")
1305 (home-page "https://github.com/premailer/css_parser")
1306 (license license:expat)))
1307
95692655
MC
1308(define-public ruby-prawn-svg
1309 (package
1310 (name "ruby-prawn-svg")
1311 (version "0.30.0")
1312 (source
1313 (origin
1314 (method url-fetch)
1315 (uri (rubygems-uri "prawn-svg" version))
1316 (sha256
1317 (base32
1318 "0df3l49cy3xpwi0b73hmi2ykbjg9kjwrvhk0k3z7qhh5ghmmrn77"))))
1319 (build-system ruby-build-system)
1320 (arguments
1321 `(#:phases (modify-phases %standard-phases
1322 (add-after 'unpack 'do-not-use-bundler
1323 (lambda _
1324 (substitute* "spec/spec_helper.rb"
1325 ((".*[Bb]undler.*") ""))
1326 #t))
1327 (replace 'check
1328 (lambda* (#:key tests? #:allow-other-keys)
1329 (when tests?
1330 (invoke "rspec" "-Ilib" "-rprawn-svg"))
1331 #t)))))
1332 (native-inputs
1333 `(("ruby-rspec" ,ruby-rspec)))
1334 (propagated-inputs
1335 `(("ruby-css-parser" ,ruby-css-parser)
1336 ("ruby-prawn" ,ruby-prawn)))
1337 (synopsis "SVG renderer for the Prawn PDF library")
1338 (description "This library allows rendering Scalable Vector Graphics (SVG)
1339graphics directly into a Portable Document Format (PDF) document using the
1340Prawn module.")
1341 (home-page "https://github.com/mogest/prawn-svg")
1342 (license license:expat)))
1343
ce52f2b1
MC
1344(define-public ruby-prawn-templates
1345 (package
1346 (name "ruby-prawn-templates")
1347 (version "0.1.2")
1348 (source
1349 (origin
1350 (method git-fetch)
1351 (uri (git-reference
1352 (url "https://github.com/prawnpdf/prawn-templates.git")
1353 (commit version)))
1354 (file-name (git-file-name name version))
1355 (sha256
1356 (base32
1357 "0wll54wxxwixpwazfn4ffbqvqbfrl01cfsv8y11vnlzy7isx5xvl"))))
1358 (build-system ruby-build-system)
1359 (arguments
1360 `(#:phases (modify-phases %standard-phases
1361 (add-after 'unpack 'do-not-use-bundler
1362 (lambda _
1363 (substitute* "spec/spec_helper.rb"
1364 ((".*[Bb]undler.*") ""))
1365 #t))
1366 (replace 'check
1367 (lambda* (#:key tests? #:allow-other-keys)
1368 (when tests?
1369 (invoke "rspec"))
1370 #t)))))
1371 (native-inputs
1372 `(("ruby-pdf-inspector" ,ruby-pdf-inspector)
1373 ("ruby-rspec" ,ruby-rspec)))
1374 (propagated-inputs
1375 `(("ruby-pdf-reader" ,ruby-pdf-reader)
1376 ("ruby-prawn" ,ruby-prawn)))
1377 (synopsis "Prawn extension to include or combine PDF documents")
1378 (description "This @strong{unmaintained} package provides a Prawn
1379extension that allows including other Portable Document Format (PDF) documents
1380as background or combining several PDF documents into one. This functionality
1381used to be part of Prawn itself, but was extracted from Prawn 0.15.0 because
1382of its many longstanding issues.")
1383 (home-page "https://github.com/prawnpdf/prawn-templates")
1384 (license %prawn-project-licenses)))
1385
f949b60e
MC
1386(define-public ruby-polyglot
1387 (package
1388 (name "ruby-polyglot")
1389 (version "0.3.5")
1390 (source
1391 (origin
1392 (method url-fetch)
1393 (uri (rubygems-uri "polyglot" version))
1394 (sha256
1395 (base32
1396 "1bqnxwyip623d8pr29rg6m8r0hdg08fpr2yb74f46rn1wgsnxmjr"))))
1397 (build-system ruby-build-system)
1398 (arguments `(#:tests? #f)) ;no test suite
1399 (synopsis "Augment @code{require} to load non-Ruby file types")
1400 (description "The Polyglot library allows a Ruby module to register a
1401loader for the file type associated with a filename extension, and it augments
1402@code{require} to find and load matching files.")
1403 (home-page "https://github.com/cjheath/polyglot")
1404 (license license:expat)))
1405
1f183ca0
MC
1406(define-public ruby-treetop
1407 (package
1408 (name "ruby-treetop")
1409 (version "1.6.10")
1410 (source
1411 (origin
1412 (method git-fetch) ;no test suite in distributed gem
1413 (uri (git-reference
1414 (url "https://github.com/cjheath/treetop.git")
1415 (commit (string-append "v" version))))
1416 (file-name (git-file-name name version))
1417 (sha256
1418 (base32
1419 "1dmk94z6ivhrz5hsq68vl5vgydhkz89n394rha1ymddw3rymbfcv"))))
1420 (build-system ruby-build-system)
1421 (arguments
1422 `(#:test-target "spec"
1423 #:phases
1424 (modify-phases %standard-phases
1425 (replace 'replace-git-ls-files
1426 (lambda _
1427 ;; TODO: Remove after the fix of using 'cut' to better mimic the
1428 ;; git ls-files output is merged in ruby-build-system.
1429 (substitute* "treetop.gemspec"
1430 (("`git ls-files -z`")
1431 "`find . -type f -print0 |sort -z|cut -zc3-`"))
1432 #t)))))
1433 (native-inputs
1434 `(("ruby-activesupport" ,ruby-activesupport)
1435 ("ruby-rr" ,ruby-rr)
1436 ("ruby-rspec" ,ruby-rspec)))
1437 (propagated-inputs
1438 `(("ruby-polyglot" ,ruby-polyglot)))
1439 (synopsis "Ruby-based parsing DSL based on parsing expression grammars")
1440 (description "This package provides a Ruby-based Parsing Expression
1441Grammar (PEG) parser generator Domain Specific Language (DSL).")
1442 (home-page "https://github.com/cjheath/treetop")
1443 (license license:expat)))
1444
66861792
MC
1445(define-public ruby-rubocop-performance
1446 (package
1447 (name "ruby-rubocop-performance")
1448 (version "1.7.1")
1449 (source
1450 (origin
1451 (method url-fetch)
1452 (uri (rubygems-uri "rubocop-performance" version))
1453 (sha256
1454 (base32
1455 "04r8d4x62ygv17spvz9yyfxbmbf8qxwhijs0xycfvzr0q4pyg9sw"))))
1456 (build-system ruby-build-system)
1457 (arguments
1458 `(#:tests? #f)) ;no test suite in the distributed gem
1459 (propagated-inputs
1460 `(("ruby-rubocop" ,ruby-rubocop)))
1461 (synopsis "Performance optimizations checkers for Ruby code")
1462 (description "This package provides a collection of RuboCop cops to check
1463for performance optimizations in Ruby code.")
1464 (home-page "https://docs.rubocop.org/rubocop-performance/")
1465 (license license:expat)))
1466
c7ab342a
MC
1467(define-public ruby-gimme
1468 (let ((revision "1")
1469 (commit "4e71f0236f1271871916dd403261d26533db34c0"))
1470 (package
1471 (name "ruby-gimme")
1472 (version (git-version "0.5.0" revision commit))
1473 (source
1474 (origin
1475 (method git-fetch)
1476 (uri (git-reference
1477 (url "https://github.com/searls/gimme.git")
1478 (commit commit)))
1479 (file-name (git-file-name name version))
1480 (sha256
1481 (base32
1482 "0hrd32ygvf3i7h47ak8f623cz8ns9q7g60nnnvvlnywbggjaz3h6"))))
1483 (build-system ruby-build-system)
1484 (native-inputs
1485 `(("ruby-coveralls" ,ruby-coveralls)
1486 ("ruby-cucumber" ,ruby-cucumber)
1487 ("ruby-pry" ,ruby-pry)
1488 ("ruby-simplecov" ,ruby-simplecov)
1489 ("ruby-rspec-given" ,ruby-rspec-given)))
1490 (arguments
1491 `(;; The cucumber task fails with error: "index 3 out of matches
1492 ;; (IndexError)", apparently due to our newer Cucumber version.
1493 ;; TODO: Try the "default" task with a future release.
1494 #:test-target "spec"
1495 #:phases
1496 (modify-phases %standard-phases
1497 (add-after 'extract-gemspec 'prepare-for-tests
1498 (lambda _
1499 ;; Delete failing tests (possibly due to our newer rspec
1500 ;; version).
1501 (delete-file "spec/gimme/gives_class_methods_spec.rb")
1502 (delete-file "spec/gimme/rspec_adapter_spec.rb")
1503 (delete-file "spec/gimme/verifies_class_methods_spec.rb")
1504 ;; Fix duplicate version requirements and de-register files.
1505 (delete-file "Gemfile")
1506 (delete-file "Gemfile.lock")
1507 (substitute* "gimme.gemspec"
1508 ((".*\"Gemfile\".*") "")
1509 ((".*\"Gemfile\\.lock\",.*") "")
1510 ((".*(rspec|cucumber).*\">= 0\".*") "")
1511 (("\"spec/gimme/gives_class_methods_spec.rb\",") "")
1512 (("\"spec/gimme/rspec_adapter_spec.rb\",") "")
1513 (("\"spec/gimme/verifies_class_methods_spec.rb\",") "")
1514 ;; All of these gems relate to development, and are
1515 ;; unnecessary when running the tests.
1516 ((".*(add|gem).*guard-.*") "")
1517 ((".*(add|gem).*jeweler.*") "")
1518 ((".*(add|gem).*pry.*") "")
1519 ((".*(add|gem).*growl.*") "")
1520 ((".*(add|gem).*rb-fsevent.*") ""))
1521 #t)))))
1522 (synopsis "Lightweight test double library for Ruby")
1523 (description "Gimme is a very lightweight test double library for Ruby,
1524based on Mockito (a mocking framework for Java). It is an opinionated (but
1525not noisy) means to facilitate test-driving by enabling the authors to specify
1526only what they care about.")
1527 (home-page "https://github.com/searls/gimme")
1528 (license license:expat))))
1529
97295c2a
MC
1530(define-public ruby-standard
1531 (package
1532 (name "ruby-standard")
1533 (version "0.4.7")
1534 (source
1535 (origin
1536 (method git-fetch) ;no test suite in distributed gem
1537 (uri (git-reference
1538 (url "https://github.com/testdouble/standard.git")
1539 (commit (string-append "v" version))))
1540 (file-name (git-file-name name version))
1541 (sha256
1542 (base32
1543 "0ylx0lm2pbbgr5h7fban592w96bl3wxmvfcpcdfrhkxnpg5kiwgv"))))
1544 (build-system ruby-build-system)
1545 (arguments
1546 ;; TODO: the tests are currently broken due to using a newer Rubocop.
1547 `(#:tests? #f
1548 #:phases
1549 (modify-phases %standard-phases
1550 (add-after 'unpack 'relax-version-requiremens
1551 (lambda _
1552 (delete-file "Gemfile")
1553 (delete-file "Gemfile.lock")
1554 #t))
1555 (replace 'replace-git-ls-files
1556 (lambda _
1557 ;; TODO: Remove after the fix of using 'cut' to better mimic the
1558 ;; git ls-files output is merged in ruby-build-system.
1559 (substitute* "standard.gemspec"
1560 (("`git ls-files -z`")
1561 "`find . -type f -not -regex '.*\\.gem$' -print0 \
1562|sort -z|cut -zc3-`"))
1563 #t)))))
1564 (native-inputs
1565 `(("ruby-gimme" ,ruby-gimme)
1566 ("ruby-pry" ,ruby-pry)
1567 ("ruby-simplecov" ,ruby-simplecov)))
1568 (propagated-inputs
1569 `(("ruby-rubocop" ,ruby-rubocop)
1570 ("ruby-rubocop-performance" ,ruby-rubocop-performance)))
1571 (synopsis "Ruby Style Guide, with linter & automatic code fixer")
1572 (description "Standard is a port of StandardJS. Like StandardJS, it aims
1573to save time in the following ways:
1574@itemize
1575@item No configuration.
1576@item Automatically format code.
1577@item Catch style issues and programmer errors early.
1578@end itemize")
1579 (home-page "https://github.com/testdouble/standard")
1580 (license license:expat)))
1581
db9f951b 1582(define-public ruby-chunky-png
4c91f184
MC
1583 (package
1584 (name "ruby-chunky-png")
d065517b 1585 (version "1.3.14")
4c91f184
MC
1586 (source
1587 (origin
1588 (method git-fetch)
1589 (uri (git-reference
1590 (url "https://github.com/wvanbergen/chunky_png.git")
1591 (commit (string-append "v" version))))
1592 (file-name (git-file-name name version))
1593 (sha256
d065517b 1594 (base32 "1m7y11ix38h5a2pj5v81qdmvqh980ql9hp62hk2dxwkwsa4nh22h"))))
4c91f184
MC
1595 (build-system ruby-build-system)
1596 (arguments
1597 `(#:test-target "spec"
1598 #:phases
1599 (modify-phases %standard-phases
1600 (add-after 'unpack 'disable-bundler
1601 (lambda _
1602 (substitute* (find-files "." "\\.rb$")
1603 (("require.*bundler/setup.*") ""))
1604 #t))
1605 (replace 'replace-git-ls-files
1606 (lambda _
1607 ;; TODO: Remove after the fix of using 'cut' to better mimic the
1608 ;; git ls-files output is merged in ruby-build-system.
1609 (substitute* "chunky_png.gemspec"
1610 (("`git ls-files`")
1611 "`find . -type f -not -regex '.*\\.gem$' |sort |cut -c3-`"))
1612 #t)))))
1613 (native-inputs
1614 `(("bundler" ,bundler)
1615 ("ruby-rspec" ,ruby-rspec)
1616 ("ruby-standard" ,ruby-standard)
1617 ("ruby-yard" ,ruby-yard)))
1618 (synopsis "Ruby library to handle PNG images")
1619 (description "ChunkyPNG is a pure Ruby library that can read and write
db9f951b
MC
1620Portable Network Graphics (PNG) images without depending on an external image
1621library. It tries to be memory efficient and reasonably fast. It has
1622features such as:
1623@itemize
1624@item
1625Decoding support for any image that the PNG standard allows. This includes all
1626standard color modes, all bit depths, all transparency, and interlacing and
1627filtering options.
1628@item
1629Encoding support for images of all color modes (true color, grayscale, and
1630indexed) and transparency for all these color modes. The best color mode is
1631chosen automatically, based on the amount of used colors.
1632@item Read/write access to the image's pixels.
1633@item Read/write access to all image metadata that is stored in chunks.
1634@item
1635Memory efficiency: @code{fixnum} are used, i.e. 4 or 8 bytes of memory per
1636pixel, depending on the hardware).
1637@item
1638Performance: ChunkyPNG is reasonably fast for Ruby standards, by only using
1639integer math and a highly optimized saving routine.
1640@item Interoperability with RMagick.
ed02857b
TGR
1641@end itemize
1642
1643ChunkyPNG is vulnerable to decompression bombs and can run out of memory when
1644loading a specifically crafted PNG file. This is hard to fix in pure Ruby.
1645Deal with untrusted images in a separate process, e.g., by using @code{fork}
1646or a background processing library.")
4c91f184
MC
1647 (home-page "https://github.com/wvanbergen/chunky_png/wiki")
1648 (license license:expat)))
db9f951b 1649
f421785b
MC
1650(define-public ruby-text-hyphen
1651 (package
1652 (name "ruby-text-hyphen")
1653 (version "1.4.1")
1654 (source
1655 (origin
1656 (method url-fetch)
1657 (uri (rubygems-uri "text-hyphen" version))
1658 (sha256
1659 (base32
1660 "1gj4awvs9ryf960m0iawg43jyjmfwcqgfwrbcfp890a57b9ag7q1"))))
1661 (build-system ruby-build-system)
1662 (native-inputs
1663 `(("ruby-hoe" ,ruby-hoe)))
1664 (synopsis "Ruby library to hyphenate words in various languages")
1665 (description "Text::Hyphen is a Ruby library to hyphenate words in various
1666languages using Ruby-fied versions of TeX hyphenation patterns. It will
1667properly hyphenate various words according to the rules of the language the
1668word is written in. The algorithm is based on that of the TeX typesetting
1669system by Donald E. Knuth.")
1670 (home-page "https://github.com/halostatue/text-hyphen")
1671 ;; The whole is licensed under the Expat license, but parts use various
1672 ;; versions of the LaTeX Project Public License.
1673 (license license:expat)))
1674
7d94616d
MC
1675(define-public ruby-open-uri-cached
1676 (package
1677 (name "ruby-open-uri-cached")
1678 (version "0.0.5")
1679 (source
1680 (origin
1681 (method url-fetch)
1682 (uri (rubygems-uri "open-uri-cached" version))
1683 (sha256
1684 (base32
1685 "13xy2vhrgz9mdxhklw5fszhamsdxh8ysf3l40g92hqm4hm288wap"))))
1686 (build-system ruby-build-system)
1687 (arguments
1688 `(#:tests? #f)) ;no test suite
1689 (synopsis "OpenURI with transparent disk caching")
1690 (description "OpenURI with transparent disk caching, which is
1691useful to avoid making excessive queries, for example when scraping
1692web pages.")
1693 (home-page "https://github.com/tigris/open-uri-cached")
1694 (license license:expat)))
1695
9c5a7d00
MC
1696(define-public ruby-asciidoctor-pdf
1697 ;; Use the latest commit, as the last tag doesn't build with the
1698 ;; latest Ruby dependencies in Guix.
1699 (let ((revision "1")
1700 (commit "d257440df895d1595a3825ef58b32e4b290ba1c3"))
1701 (package
1702 (name "ruby-asciidoctor-pdf")
1703 (version (git-version "1.5.3" revision commit))
1704 (source
1705 (origin
1706 (method git-fetch) ;no test suite in the distributed gem
1707 (uri (git-reference
1708 (url "https://github.com/asciidoctor/asciidoctor-pdf.git")
1709 (commit commit)))
1710 (file-name (git-file-name name version))
1711 (sha256
1712 (base32
1713 "1563d11ghzsrsg4inwfwj6b9hb5sk5b429f49fwq5qg3sq76kgjj"))))
1714 (build-system ruby-build-system)
1715 (arguments
1716 `(#:test-target "spec"
1717 #:phases
1718 (modify-phases %standard-phases
1719 (add-after 'unpack 'remove-failing-tests
1720 ;; Two tests module fail for unknown reasons, *only* when
1721 ;; ran in the build container (see:
1722 ;; https://github.com/asciidoctor/asciidoctor-pdf/issues/1725#issuecomment-658777965).
1723 (lambda _
1724 (delete-file "spec/audio_spec.rb")
1725 (delete-file "spec/video_spec.rb")
1726 #t))
1727 (add-after 'extract-gemspec 'strip-version-requirements
1728 (lambda _
1729 (substitute* "asciidoctor-pdf.gemspec"
1730 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
1731 (string-append stripped "\n")))
1732 #t))
1733 (replace 'replace-git-ls-files
1734 ;; TODO: Remove after the fix of using 'cut' to better mimic the
1735 ;; git ls-files output is merged in ruby-build-system.
1736 (lambda _
1737 (substitute* "asciidoctor-pdf.gemspec"
1738 (("`git ls-files -z`")
1739 "`find . -type f -not -regex '.*\\.gem$' -print0 \
1740|sort -z|cut -zc3-`"))
1741 #t))
1742 ;; The tests rely on the Gem being installed, so move the check phase
1743 ;; after the install phase.
1744 (delete 'check)
1745 (add-after 'install 'check
1746 (lambda* (#:key outputs tests? #:allow-other-keys)
1747 (let ((new-gem (string-append (assoc-ref outputs "out")
1748 "/lib/ruby/vendor_ruby")))
1749 (setenv "GEM_PATH"
1750 (string-append (getenv "GEM_PATH") ":" new-gem))
1751 (when tests?
1752 (invoke "rspec" "-t" "~visual" "-t" "~cli" "-t" "~network"))
1753 #t))))))
1754 (native-inputs
1755 `(("ruby-chunky-png" ,ruby-chunky-png)
1756 ("ruby-coderay" ,ruby-coderay)
1757 ("ruby-pdf-inspector" ,ruby-pdf-inspector)
1758 ("ruby-rouge" ,ruby-rouge)
1759 ("ruby-rspec" ,ruby-rspec)))
1760 (propagated-inputs
1761 `(("ruby-asciidoctor" ,ruby-asciidoctor)
1762 ("ruby-concurrent-ruby" ,ruby-concurrent)
1763 ("ruby-open-uri-cached" ,ruby-open-uri-cached)
1764 ("ruby-prawn" ,ruby-prawn)
1765 ("ruby-prawn-icon" ,ruby-prawn-icon)
1766 ("ruby-prawn-svg" ,ruby-prawn-svg)
1767 ("ruby-prawn-table" ,ruby-prawn-table)
1768 ("ruby-prawn-templates" ,ruby-prawn-templates)
1769 ("ruby-safe-yaml" ,ruby-safe-yaml)
1770 ("ruby-text-hyphen" ,ruby-text-hyphen)
1771 ("ruby-thread-safe" ,ruby-thread-safe)
1772 ("ruby-treetop" ,ruby-treetop)
1773 ("ruby-ttfunk" ,ruby-ttfunk)))
1774 (synopsis"AsciiDoc to Portable Document Format (PDF)} converter")
1775 (description "Asciidoctor PDF is an extension for Asciidoctor that
1776converts AsciiDoc documents to Portable Document Format (PDF) using the Prawn
1777PDF library. It has features such as:
1778@itemize
1779@item Direct AsciiDoc to PDF conversion
1780@item Configuration-driven theme (style and layout)
1781@item Scalable Vector Graphics (SVG) support
1782@item PDF document outline (i.e., bookmarks)
1783@item Table of contents page(s)
1784@item Document metadata (title, authors, subject, keywords, etc.)
1785@item Internal cross reference links
1786@item Syntax highlighting with Rouge, Pygments, or CodeRay
1787@item Page numbering
1788@item Customizable running content (header and footer)
1789@item
1790“Keep together” blocks (i.e., page breaks avoided in certain block content)
1791@item Orphaned section titles avoided
1792@item Autofit verbatim blocks (as permitted by base_font_size_min setting)
1793@item Table border settings honored
1794@item Font-based icons
1795@item Custom TrueType (TTF) fonts
1796@item Double-sided printing mode (margins alternate on recto and verso pages)
1797@end itemize")
1798 (home-page "https://asciidoctor.org/docs/asciidoctor-pdf")
1799 (license license:expat))))
1800
d5840f77
CB
1801(define-public ruby-ast
1802 (package
1803 (name "ruby-ast")
308104f8 1804 (version "2.4.1")
d5840f77
CB
1805 (source
1806 (origin
308104f8
MC
1807 (method git-fetch) ;no test included in gem from v2.4.1
1808 (uri (git-reference
1809 (url "https://github.com/whitequark/ast")
1810 (commit (string-append "v" version))))
1811 (file-name (git-file-name name version))
d5840f77
CB
1812 (sha256
1813 (base32
308104f8 1814 "0k8vya256chimy473g818gim06m5rjgh6mz5sc5g8xz3csh3rysi"))))
d5840f77
CB
1815 (build-system ruby-build-system)
1816 (arguments
1817 '(#:phases
1818 (modify-phases %standard-phases
1819 (add-after 'unpack 'remove-coveralls-requirement
1820 (lambda _
1821 (substitute* "test/helper.rb"
1822 (("require 'coveralls'") "")
1823 (("Coveralls::SimpleCov::Formatter") ""))
1824 #t))
1825 (add-after 'extract-gemspec 'remove-unnecessary-requirements
1826 (lambda _
1827 (substitute* "ast.gemspec"
1828 ((".*coveralls.*") "\n")
1829 (("%q<rest-client>.*") "%q<rest-client>.freeze, [\">= 0\"])\n")
1830 (("%q<mime-types>.*") "%q<mime-types>.freeze, [\">= 0\"])\n")
1831 (("%q<rake>.*") "%q<rake>.freeze, [\">= 0\"])\n"))
1832 #t)))))
1833 (native-inputs
1834 `(("bundler" ,bundler)
1835 ("ruby-simplecov" ,ruby-simplecov)
1836 ("ruby-json-pure" ,ruby-json-pure)
1837 ("ruby-mime-times" ,ruby-mime-types)
1838 ("ruby-yard" ,ruby-yard)
1839 ("ruby-kramdown" ,ruby-kramdown)
1840 ("ruby-rest-client" ,ruby-rest-client)
1841 ("ruby-bacon" ,ruby-bacon)
1842 ("ruby-bacon-colored-output" ,ruby-bacon-colored-output)
1843 ("ruby-racc" ,ruby-racc)))
1844 (synopsis "Library for working with Abstract Syntax Trees")
1845 (description
1846 "@code{ast} is a Ruby library for working with Abstract Syntax Trees.
1847It does this through immutable data structures.")
1848 (home-page "https://whitequark.github.io/ast/")
1849 (license license:expat)))
1850
b88502c9
BW
1851(define-public ruby-sporkmonger-rack-mount
1852 ;; Testing the addressable gem requires a newer commit than that released, so
1853 ;; use an up to date version.
1854 (let ((revision "1")
1855 (commit "076aa2c47d9a4c081f1e9bcb56a826a9e72bd5c3"))
1856 (package
1857 (name "ruby-sporkmonger-rack-mount")
1858 (version (git-version "0.8.3" revision commit))
1859 (source (origin
1860 (method git-fetch)
1861 (uri (git-reference
b0e7b699 1862 (url "https://github.com/sporkmonger/rack-mount")
b88502c9
BW
1863 (commit commit)))
1864 (file-name (git-file-name name version))
1865 (sha256
1866 (base32
1867 "1scx273g3xd93424x9lxc4zyvcp2niknbw5mkz6wkivpf7xsyxdq"))))
1868 (build-system ruby-build-system)
1869 (arguments
1870 ;; Tests currently fail so disable them.
1871 ;; https://github.com/sporkmonger/rack-mount/pull/1
1872 `(#:tests? #f))
1873 (propagated-inputs `(("ruby-rack" ,ruby-rack)))
1874 (synopsis "Stackable dynamic tree based Rack router")
1875 (description
1876 "@code{Rack::Mount} supports Rack's @code{X-Cascade} convention to
1877continue trying routes if the response returns pass. This allows multiple
1878routes to be nested or stacked on top of each other.")
1879 (home-page "https://github.com/sporkmonger/rack-mount")
1880 (license license:expat))))
1881
2f9e0b68
RW
1882(define-public ruby-ci-reporter
1883 (package
1884 (name "ruby-ci-reporter")
1885 (version "2.0.0")
1886 (source (origin
1887 (method url-fetch)
1888 (uri (rubygems-uri "ci_reporter" version))
1889 (sha256
1890 (base32
1891 "17fm20jmw3ajdryhkkxpjahcfx7bgswqzxrskivlkns2718ayyyg"))))
1892 (build-system ruby-build-system)
1893 (arguments
1894 `(#:test-target "rspec"))
1895 (propagated-inputs
1896 `(("ruby-builder" ,ruby-builder)))
1897 (native-inputs
1898 `(("bundler" ,bundler)
1899 ("ruby-rspec" ,ruby-rspec)))
1900 (synopsis "Generate XML reports of runs test")
1901 (description
1902 "@code{CI::Reporter} is an add-on to Ruby testing frameworks that allows
1903you to generate XML reports of your test runs. The resulting files can be
1904read by a continuous integration system that understands Ant's JUnit report
1905format.")
1906 (home-page "https://github.com/nicksieger/ci_reporter")
1907 (license license:expat)))
1908
2ed201c1
CB
1909(define-public ruby-contracts
1910 (package
1911 (name "ruby-contracts")
1912 (version "0.16.0")
1913 (source
1914 (origin
1915 (method url-fetch)
1916 (uri (rubygems-uri "contracts" version))
1917 (sha256
1918 (base32
1919 "119f5p1n6r5svbx8h09za6a4vrsnj5i1pzr9cqdn9hj3wrxvyl3a"))))
1920 (build-system ruby-build-system)
1921 (arguments
1922 '(#:test-target "spec"
1923 #:phases
1924 (modify-phases %standard-phases
1925 ;; Don't run or require rubocop, the code linting tool, as this is a
1926 ;; bit unnecessary.
1927 (add-after 'unpack 'dont-run-rubocop
1928 (lambda _
1929 (substitute* "Rakefile"
1930 ((".*rubocop.*") "")
1931 ((".*RuboCop.*") ""))
1932 #t)))))
1933 (native-inputs
1934 `(("ruby-rspec" ,ruby-rspec)))
1935 (synopsis "Method contracts for Ruby")
1936 (description
1937 "This library provides contracts for Ruby. A contract describes the
1938correct inputs and output for a method, and will raise an error if a incorrect
1939value is found.")
1940 (home-page "https://github.com/egonSchiele/contracts.ruby")
1941 (license license:bsd-2)))
1942
6f8bf0eb
CB
1943(define-public ruby-crack
1944 (package
1945 (name "ruby-crack")
1946 (version "0.4.3")
1947 (source
1948 (origin
1949 (method url-fetch)
1950 (uri (rubygems-uri "crack" version))
1951 (sha256
1952 (base32
1953 "0abb0fvgw00akyik1zxnq7yv391va148151qxdghnzngv66bl62k"))))
1954 (build-system ruby-build-system)
1955 (arguments
1956 `(#:phases
1957 (modify-phases %standard-phases
1958 (replace 'check
1959 (lambda* (#:key tests? #:allow-other-keys)
1960 (when tests?
1961 (for-each (lambda (file)
1962 (display file)(display "\n")
1963 (invoke "ruby" "-Ilib" "-Itest" "-rrubygems" file))
1964 (find-files "test" ".*rb$")))
1965 #t)))))
1966 (propagated-inputs
1967 `(("ruby-safe-yaml" ,ruby-safe-yaml)))
1968 (synopsis "Simple JSON and XML parsing for Ruby")
1969 (description
1970 "@code{crack} provides really simple JSON and XML parsing, extracted from
1971code in Merb and Rails.")
1972 (home-page "https://github.com/jnunemaker/crack")
1973 (license license:expat)))
1974
bef3506e
CB
1975(define-public ruby-cliver
1976 (package
1977 (name "ruby-cliver")
1978 (version "0.3.2")
1979 (source
1980 (origin
1981 (method url-fetch)
1982 (uri (rubygems-uri "cliver" version))
1983 (sha256
1984 (base32
1985 "096f4rj7virwvqxhkavy0v55rax10r4jqf8cymbvn4n631948xc7"))))
1986 (build-system ruby-build-system)
1987 (arguments
1988 '(#:phases
1989 (modify-phases %standard-phases
1990 ;; Avoid a incompatibility between rspec@2 and rake. Using rspec@3
1991 ;; would be nice, but the tests look to be incompatible:
1992 ;;
1993 ;; NoMethodError: undefined method `last_comment'
1994 (replace 'check
1995 (lambda* (#:key tests? #:allow-other-keys)
1996 (when tests?
1997 (invoke "rspec"))
1998 #t)))))
1999 (native-inputs
2000 `(("bundler" ,bundler)
2001 ("ruby-rspec" ,ruby-rspec-2)))
2002 (synopsis "Assertions for command-line dependencies in Ruby")
2003 (description
2004 "@code{cliver} provides a way to detect missing command-line
2005dependencies, including versions.")
2006 (home-page "https://github.com/yaauie/cliver")
2007 (license license:expat)))
2008
fe5dd5f4
CB
2009(define-public ruby-czmq-ffi-gen
2010 (package
2011 (name "ruby-czmq-ffi-gen")
2012 (version "0.13.0")
2013 (source
2014 (origin
2015 (method url-fetch)
2016 (uri (rubygems-uri "czmq-ffi-gen" version))
2017 (sha256
2018 (base32
2019 "1yf719dmf4mwks1hqdsy6i5kzfvlsha69sfnhb2fr2cgk2snbys3"))))
2020 (build-system ruby-build-system)
2021 (arguments
2022 '(#:tests? #f ;; Tests are not included in the release on rubygems.org
2023 #:phases
2024 (modify-phases %standard-phases
2025 (add-after 'unpack 'patch-lib_dirs
2026 (lambda* (#:key inputs #:allow-other-keys)
2027 (substitute* "lib/czmq-ffi-gen/czmq/ffi.rb"
2028 (("lib\\_dirs = \\[.*\\]")
2029 (string-append "lib_dirs = ['"
2030 (assoc-ref inputs "czmq") "/lib"
2031 "']")))
2032 (substitute* "lib/czmq-ffi-gen/libzmq.rb"
2033 (("lib\\_dirs = \\[.*\\]")
2034 (string-append "lib_dirs = ['"
2035 (assoc-ref inputs "zeromq") "/lib"
2036 "']"))))))))
2037 (inputs
2038 `(("zeromq" ,zeromq)
2039 ("czmq" ,czmq)))
2040 (propagated-inputs `(("ruby-ffi" ,ruby-ffi)))
2041 (synopsis "Low-level Ruby bindings for CZMQ (generated using zproject)")
2042 (description
2043 "These Ruby bindings are not intended to be directly used, but rather
2044used by higher level bindings like those provided by CZTop.")
2045 (home-page
2046 "https://github.com/paddor/czmq-ffi-gen")
2047 (license license:isc)))
2048
d0afff26
CB
2049(define-public ruby-cztop
2050 (package
2051 (name "ruby-cztop")
2052 (version "0.12.2")
2053 (source
2054 (origin
2055 (method url-fetch)
2056 (uri (rubygems-uri "cztop" version))
2057 (sha256
2058 (base32
2059 "0yqbpaiw5d7f271d73lyrsh8xpx6n4zi6xqwfgi00dacxrq3s3fa"))))
2060 (build-system ruby-build-system)
2061 (arguments
2062 '(#:test-target "spec"
2063 #:phases
2064 (modify-phases %standard-phases
2065 (add-after 'unpack 'patch-lib_paths
2066 (lambda* (#:key inputs #:allow-other-keys)
2067 (substitute* "lib/cztop/poller/zmq.rb"
2068 (("lib\\_paths = \\[.*\\]")
2069 (string-append "lib_paths = ['"
2070 (assoc-ref inputs "zeromq") "/lib"
2071 "']"))))))))
2072 (native-inputs
2073 `(("bundler" ,bundler)
2074 ("ruby-rspec" ,ruby-rspec)))
2075 (inputs
2076 `(("zeromq" ,zeromq)))
2077 (propagated-inputs
2078 `(("ruby-czmq-ffi-gen" ,ruby-czmq-ffi-gen)))
2079 (synopsis "CZMQ Ruby bindings")
2080 (description
2081 "CZMQ Ruby bindings, based on the generated low-level FFI bindings of
2082CZMQ. The focus of of CZTop is on being easy to use and providing first class
2083support for security mechanisms.")
2084 (home-page "https://github.com/paddor/cztop")
2085 (license license:isc)))
2086
b004fb6a
RW
2087(define-public ruby-saikuro-treemap
2088 (package
2089 (name "ruby-saikuro-treemap")
2090 (version "0.2.0")
2091 (source (origin
2092 (method url-fetch)
2093 (uri (rubygems-uri "saikuro_treemap" version))
2094 (sha256
2095 (base32
2096 "0w70nmh43mwfbpq20iindl61siqqr8acmf7p3m7n5ipd61c24950"))))
2097 (build-system ruby-build-system)
2098 ;; Some of the tests fail because the generated JSON has keys in a
2099 ;; different order. This is a problem with the test suite rather than any
2100 ;; of the involved libraries.
2101 (arguments `(#:tests? #f))
2102 (propagated-inputs
2103 `(("ruby-json-pure" ,ruby-json-pure)
2104 ("ruby-atoulme-saikuro" ,ruby-atoulme-saikuro)))
2105 (synopsis "Generate complexity treemap based on saikuro analysis")
2106 (description
2107 "This gem generates a treemap showing the complexity of Ruby code on
2108which it is run. It uses Saikuro under the covers to analyze Ruby code
2109complexity.")
7bf837fd 2110 (home-page "https://github.com/ThoughtWorksStudios/saikuro_treemap")
b004fb6a
RW
2111 (license license:expat)))
2112
92b37500
CB
2113(define-public ruby-oauth2
2114 (package
2115 (name "ruby-oauth2")
5dd10be5 2116 (version "1.4.2")
92b37500
CB
2117 (source
2118 (origin
2119 (method url-fetch)
2120 (uri (rubygems-uri "oauth2" version))
2121 (sha256
5dd10be5 2122 (base32 "15i9z4j5pcjkr30lkcd79xzbr4kpmy0bqgwa436fqyqk646fv036"))))
92b37500
CB
2123 (build-system ruby-build-system)
2124 (arguments
5dd10be5 2125 '(#:tests? #f)) ; no included tests
92b37500
CB
2126 (propagated-inputs
2127 `(("ruby-faraday" ,ruby-faraday)
2128 ("ruby-jwt" ,ruby-jwt)
2129 ("ruby-multi-json" ,ruby-multi-json)
2130 ("ruby-multi-xml" ,ruby-multi-xml)
2131 ("ruby-rack" ,ruby-rack)))
2132 (synopsis "Ruby wrapper for the OAuth 2.0")
2133 (description
2134 "This package provides a Ruby wrapper for the OAuth 2.0 protocol built
2135with a similar style to the original OAuth spec.")
2136 (home-page "https://github.com/oauth-xx/oauth2")
2137 (license license:expat)))
2138
29dc4823
CB
2139(define-public ruby-omniauth
2140 (package
2141 (name "ruby-omniauth")
a7b7817d 2142 (version "1.9.1")
29dc4823
CB
2143 (source
2144 (origin
2145 (method url-fetch)
2146 (uri (rubygems-uri "omniauth" version))
2147 (sha256
a7b7817d 2148 (base32 "002vi9gwamkmhf0dsj2im1d47xw2n1jfhnzl18shxf3ampkqfmyz"))))
29dc4823
CB
2149 (build-system ruby-build-system)
2150 (arguments
2151 '(#:tests? #f)) ; No included tests
2152 (propagated-inputs
2153 `(("ruby-hashie" ,ruby-hashie)
2154 ("ruby-rack" ,ruby-rack)))
2155 (synopsis "Generalized Rack framework for multiple-provider authentication")
2156 (description
2157 "This package provides a generalized Rack framework for multiple-provider
2158authentication.")
2159 (home-page "https://github.com/omniauth/omniauth")
2160 (license license:expat)))
2161
d6084cdb
CB
2162(define-public ruby-omniauth-oauth2
2163 (package
2164 (name "ruby-omniauth-oauth2")
2165 (version "1.6.0")
2166 (source
2167 (origin
2168 (method url-fetch)
2169 (uri (rubygems-uri "omniauth-oauth2" version))
2170 (sha256
2171 (base32
2172 "11mi36l9d97r77q99jnafdc1yaa0a9wahhpp7dj7ank8q52g7g79"))))
2173 (build-system ruby-build-system)
2174 (arguments
2175 '(#:phases
2176 (modify-phases %standard-phases
2177 (add-after 'unpack 'remove-unnecessary-dependencies
2178 (lambda _
2179 ;; The coveralls gem submits coverage information to an online
2180 ;; service, and is unnecessary when running the tests
2181 (substitute* "Gemfile"
2182 ((".*coveralls\"") ""))
2183 (substitute* "spec/helper.rb"
2184 (("require \"coveralls\"") "")
2185 (("Coveralls::SimpleCov::Formatter") ""))
2186 #t)))))
2187 (propagated-inputs
2188 `(("ruby-oauth2" ,ruby-oauth2)
2189 ("ruby-omniauth" ,ruby-omniauth)))
2190 (native-inputs
2191 `(("bundler" ,bundler)
2192 ("ruby-rspec" ,ruby-rspec)
2193 ("ruby-simplecov" ,ruby-simplecov)
2194 ("ruby-rack-test" ,ruby-rack-test)
2195 ("ruby-webmock" ,ruby-webmock-2)))
2196 (synopsis "Abstract OAuth2 strategy for OmniAuth")
2197 (description
2198 "This library provides a generic OAuth2 strategy for OmniAuth. It
2199doesn't provide a way to gather user information, so should be used as a
2200building block for authentication strategies.")
2201 (home-page "https://github.com/omniauth/omniauth-oauth2")
2202 (license license:expat)))
2203
433e3154
CB
2204(define-public ruby-open4
2205 (package
2206 (name "ruby-open4")
2207 (version "1.3.4")
2208 (source
2209 (origin
2210 (method url-fetch)
2211 (uri (rubygems-uri "open4" version))
2212 (sha256
2213 (base32
2214 "1cgls3f9dlrpil846q0w7h66vsc33jqn84nql4gcqkk221rh7px1"))))
2215 (build-system ruby-build-system)
2216 (arguments
2217 '(#:phases
2218 (modify-phases %standard-phases
2219 (add-after 'unpack 'patch
2220 (lambda _
2221 (substitute* "rakefile"
2222 ;; Update the Rakefile so it works
2223 (("-rubygems") "-rrubygems")
2224 (("Config") "RbConfig"))
2225 #t))
2226 (add-before 'check 'set-LIB
2227 (lambda _
2228 ;; This is used in the rakefile when running the tests
2229 (setenv "LIB" "open4")
2230 #t)))))
2231 (synopsis "Open child processes from Ruby and manage them easily")
2232 (description
2233 "@code{Open4} is a Ruby library to run child processes and manage their
2234input and output.")
2235 (home-page "https://github.com/ahoward/open4")
2236 (license license:ruby)))
2237
cef87ed6
CB
2238(define-public ruby-options
2239 (package
2240 (name "ruby-options")
2241 (version "2.3.2")
2242 (source
2243 (origin
2244 (method url-fetch)
2245 (uri (rubygems-uri "options" version))
2246 (sha256
2247 (base32
2248 "1s650nwnabx66w584m1cyw82icyym6hv5kzfsbp38cinkr5klh9j"))))
2249 (build-system ruby-build-system)
2250 (arguments
2251 '(#:tests? #f ;; TODO: NameError: uninitialized constant Config
2252 #:phases
2253 (modify-phases %standard-phases
2254 (add-before 'check 'set-LIB
2255 (lambda _
2256 ;; This is used in the Rakefile, and setting it avoids an issue
2257 ;; with running the tests.
fe27238c
CB
2258 (setenv "LIB" "options")
2259 #t)))))
cef87ed6
CB
2260 (synopsis "Ruby library to parse options from *args cleanly")
2261 (description
2262 "The @code{options} library helps with parsing keyword options in Ruby
2263functions.")
2264 (home-page "https://github.com/ahoward/options")
2265 (license license:ruby)))
2266
d15dbe83
CB
2267(define-public ruby-erubi
2268 (package
2269 (name "ruby-erubi")
2270 (version "1.8.0")
2271 (source
2272 (origin
2273 (method url-fetch)
2274 (uri (rubygems-uri "erubi" version))
2275 (sha256
2276 (base32
2277 "1kagnf6ziahj0d781s6ryy6fwqwa3ad4xbzzj84p9m4nv4c2jir1"))))
2278 (build-system ruby-build-system)
2279 (synopsis "ERB template engine for Ruby")
2280 (description
2281 "Erubi is a ERB template engine for Ruby. It is a simplified fork of
2282Erubis")
2283 (home-page "https://github.com/jeremyevans/erubi")
2284 (license license:expat)))
2285
d64ebebd
BW
2286(define-public ruby-erubis
2287 (package
2288 (name "ruby-erubis")
2289 (version "2.7.0")
2290 (source
2291 (origin
2292 (method url-fetch)
2293 (uri (rubygems-uri "erubis" version))
2294 (sha256
2295 (base32
2296 "1fj827xqjs91yqsydf0zmfyw9p4l2jz5yikg3mppz6d7fi8kyrb3"))))
2297 (build-system ruby-build-system)
2298 (arguments
2299 '(#:tests? #f)) ; tests do not run properly with Ruby 2.0
2300 (synopsis "Implementation of embedded Ruby (eRuby)")
2301 (description
2302 "Erubis is a fast implementation of embedded Ruby (eRuby) with several
2303features such as multi-language support, auto escaping, auto trimming spaces
2304around @code{<% %>}, a changeable embedded pattern, and Ruby on Rails
2305support.")
2306 (home-page "http://www.kuwata-lab.com/erubis/")
2307 (license license:expat)))
2308
3ca43524
CB
2309(define-public ruby-execjs
2310 (package
2311 (name "ruby-execjs")
2312 (version "2.7.0")
2313 (source
2314 (origin
2315 ;; fetch from github as the gem does not contain testing code
2316 (method git-fetch)
2317 (uri (git-reference
b0e7b699 2318 (url "https://github.com/rails/execjs")
3ca43524
CB
2319 (commit (string-append "v" version))))
2320 (file-name (git-file-name name version))
2321 (sha256
2322 (base32
2323 "0c0vd2mmqq3ar4plbwi2wsbr31vn4h45i19r5km66skydnnbp1y6"))))
2324 (build-system ruby-build-system)
2325 (native-inputs
2326 `(("bundler" ,bundler)
2327 ;; The test suite tests all the available backends. Currenly, this just
2328 ;; means the node backend.
2329 ;;
2330 ;; PASSED: test:node
2331 ;; SKIPPED: test:duktape, ;; test:javascriptcore, test:jscript,
2332 ;; test:miniracer, test:rubyracer, ;; test:rubyrhino, test:v8
2333 ("node" ,node)))
2334 (synopsis "Run JavaScript code from Ruby")
2335 (description
2336 "ExecJS lets you run JavaScript code from Ruby. It automatically picks a
2337runtime to evaluate your JavaScript program, then returns the result to you as
2338a Ruby object.")
2339 (home-page "https://github.com/rails/execjs")
2340 (license license:expat)))
2341
6623a151
MB
2342(define-public ruby-fakefs
2343 (package
2344 (name "ruby-fakefs")
2345 (version "1.2.2")
2346 (home-page "https://github.com/fakefs/fakefs")
2347 (source (origin
2348 ;; The Rubygems release does not contain tests.
2349 (method git-fetch)
2350 (uri (git-reference
2351 (url home-page)
2352 (commit (string-append "v" version))))
2353 (file-name (git-file-name name version))
2354 (sha256
2355 (base32
2356 "008dq9knyip2bfbl0mrk8b8r7bv0k3bf128wcfqsgy1rqal4mgwk"))))
2357 (build-system ruby-build-system)
2358 (arguments
2359 '(#:phases (modify-phases %standard-phases
2360 (replace 'replace-git-ls-files
2361 (lambda _
2362 (substitute* "fakefs.gemspec"
2363 (("`git ls-files lib README.md LICENSE`")
2364 "`find lib README.md LICENSE -type f | sort`"))
2365 #t))
2366 (add-before 'check 'remove-version-constraints
2367 (lambda _
2368 ;; Drop hard version requirements for test dependencies.
2369 (substitute* "fakefs.gemspec"
2370 (("(.*add_development_dependency .*), .*" _ dep)
2371 (string-append dep "\n")))
a011f67b 2372 #t)))))
6623a151
MB
2373 (native-inputs
2374 `(("ruby-bump" ,ruby-bump)
2375 ("ruby-maxitest" ,ruby-maxitest)
2376 ("ruby-rubocop" ,ruby-rubocop)
2377 ("ruby-rspec" ,ruby-rspec)))
2378 (synopsis "Fake file system for Ruby")
2379 (description
2380 "This package provides a fake file system for use in test suites. It
2381avoids the need for manually creating temporary directories, or dealing
2382with platform intricacies in @code{File} and @code{FileUtils}.")
2383 (license license:expat)))
2384
cc53e630
RW
2385(define-public ruby-orderedhash
2386 (package
2387 (name "ruby-orderedhash")
2388 (version "0.0.6")
2389 (source (origin
2390 (method url-fetch)
2391 (uri (rubygems-uri "orderedhash" version))
2392 (sha256
2393 (base32
2394 "0fryy7f9jbpx33jq5m402yqj01zcg563k9fsxlqbhmq638p4bzd7"))))
2395 (build-system ruby-build-system)
2396 (arguments
2397 '(#:tests? #f)) ; no test suite
2398 (synopsis "Ruby library providing an order-preserving hash")
2399 (description "Orderedhash is a Ruby library providing a hash
2400implementation that preserves the order of items and features some array-like
2401extensions.")
2402 (home-page "http://codeforpeople.com/lib/ruby/orderedhash/")
2403 (license license:public-domain)))
2404
28c5d42d
PP
2405(define-public ruby-libxml
2406 (package
2407 (name "ruby-libxml")
acbc5062 2408 (version "3.0.0")
28c5d42d
PP
2409 (source
2410 (origin
2411 (method url-fetch)
2412 (uri (rubygems-uri "libxml-ruby" version))
2413 (sha256
2414 (base32
acbc5062 2415 "0xy8wmjwjcnv36zi042678ncjzpxvy351ccbv7mzkns2n3kxfp54"))))
28c5d42d
PP
2416 (build-system ruby-build-system)
2417 (inputs
2418 `(("zlib" ,zlib)
2419 ("libxml2" ,libxml2)))
2420 (arguments
2421 '(#:tests? #f ; test suite hangs for unknown reason
2422 #:gem-flags
5b98944d
CB
2423 (list "--no-document" ; TODO: Re-enable when documentation
2424 ; generation works
2425 "--"
28c5d42d
PP
2426 (string-append "--with-xml2-include="
2427 (assoc-ref %build-inputs "libxml2")
2428 "/include/libxml2" ))))
2429 (synopsis "Ruby bindings for GNOME Libxml2")
2430 (description "The Libxml-Ruby project provides Ruby language bindings for
2431the GNOME Libxml2 XML toolkit.")
2f3800e5 2432 (home-page "https://xml4r.github.com/libxml-ruby")
28c5d42d
PP
2433 (license license:expat)))
2434
b3222518
CB
2435(define-public ruby-lino
2436 (package
2437 (name "ruby-lino")
2438 (version "1.1.0")
2439 (source
2440 (origin
2441 (method url-fetch)
2442 (uri (rubygems-uri "lino" version))
2443 (sha256
2444 (base32
2445 "11d29g0fk372b9fcpyr0k6hxm2b4j4igpysmi542hgbbgqgp9cd3"))))
2446 (build-system ruby-build-system)
2447 (arguments
2448 '(#:tests? #f)) ; No included tests
2449 (propagated-inputs
2450 `(("ruby-hamster" ,ruby-hamster)
2451 ("ruby-open4" ,ruby-open4)))
2452 (synopsis "Build and execute commands in Ruby")
2453 (description
2454 "@code{Lino} provides an interface to run external commands. It provides
2455an interface to add options as well as managing the standard input, output and
2456error streams.")
2457 (home-page "https://github.com/tobyclemson/lino")
2458 (license license:expat)))
2459
8b9bde07
RW
2460(define-public ruby-xml-simple
2461 (package
2462 (name "ruby-xml-simple")
2463 (version "1.1.5")
2464 (source (origin
2465 (method url-fetch)
2466 (uri (rubygems-uri "xml-simple" version))
2467 (sha256
2468 (base32
2469 "0xlqplda3fix5pcykzsyzwgnbamb3qrqkgbrhhfz2a2fxhrkvhw8"))))
2470 (build-system ruby-build-system)
2471 (arguments
2472 '(#:tests? #f)) ; no test suite
2473 (synopsis "Simple Ruby library for XML processing")
2474 (description "This library provides a simple API for XML processing in
2475Ruby.")
2476 (home-page "https://github.com/maik/xml-simple")
2477 (license license:ruby)))
2478
2cb3ab48
RW
2479(define-public ruby-thor
2480 (package
2481 (name "ruby-thor")
bb719d6a 2482 (version "1.0.1")
2cb3ab48 2483 (source (origin
bb719d6a
MB
2484 ;; Pull from git because the gem has no tests.
2485 (method git-fetch)
2486 (uri (git-reference
2487 (url "https://github.com/erikhuda/thor")
2488 (commit (string-append "v" version))))
2489 (file-name (git-file-name name version))
2cb3ab48
RW
2490 (sha256
2491 (base32
bb719d6a 2492 "1anrx5vynk57hn5c8ig5pgkmcsbj9q5mvckd5rviw1jid7n89k57"))))
2cb3ab48
RW
2493 (build-system ruby-build-system)
2494 (arguments
bb719d6a
MB
2495 '(#:phases (modify-phases %standard-phases
2496 (add-after 'unpack 'fix-readline-tests
2497 (lambda _
2498 ;; Ensure Readline is initialized before running the
2499 ;; test to avoid a type clash with the mock ::Readline.
2500 ;; See <https://github.com/erikhuda/thor/pull/717>.
2501 (substitute* "spec/line_editor/readline_spec.rb"
2502 (("unless defined\\? ::Readline" all)
2503 (string-append "Thor::LineEditor::Readline.available?\n"
2504 all)))
2505 #t))
2506 (add-after 'unpack 'remove-coveralls-dependency
2507 (lambda _
2508 ;; Do not hook the test suite into the online
2509 ;; coveralls service.
2510 (substitute* "Gemfile"
2511 ((".*coveralls.*") ""))
2512 (substitute* "spec/helper.rb"
2513 (("require \"coveralls\"") "")
2514 (("Coveralls::SimpleCov::Formatter") "")
2515 ;; Also drop the WebMock dependency which is only
2516 ;; present to allow a coveralls.io connection, and
2517 ;; would otherwise introduce a circular dependency.
2518 (("require \"webmock/rspec\"") "")
2519 (("WebMock\\.disable_net_connect.*") ""))
2520 #t))
2521 (add-after 'unpack 'disable-network-tests
2522 (lambda _
2523 ;; These tests attempt to look up example.com.
2524 (substitute* "spec/actions/file_manipulation_spec.rb"
2525 (("it \"accepts (https?) remote sources" _ proto)
2526 (string-append "xit \"accepts " proto " remote sources")))
2527 #t))
2528 (add-after 'unpack 'disable-quality-tests
2529 (lambda _
2530 ;; These tests attempt to check the git repository for
2531 ;; tabs vs spaces, double vs single quotes, etc, and
2532 ;; depend on the git checkout.
2533 (delete-file "spec/quality_spec.rb")
2534 #t))
2535 (add-before 'check 'make-files-writable
2536 (lambda _
2537 ;; The tests needs rw access to the test suite.
2538 (for-each make-file-writable (find-files "spec"))
2539 #t))
2540 (replace 'check
2541 (lambda _
2542 (invoke "rspec" "spec"))))))
2cb3ab48 2543 (native-inputs
bb719d6a
MB
2544 `(("ruby-rspec" ,ruby-rspec)
2545 ("ruby-simplecov" ,ruby-simplecov)))
2cb3ab48
RW
2546 (synopsis "Ruby toolkit for building command-line interfaces")
2547 (description "Thor is a toolkit for building powerful command-line
2548interfaces.")
2549 (home-page "http://whatisthor.com/")
2550 (license license:expat)))
2551
ec79018e
RW
2552(define-public ruby-lumberjack
2553 (package
2554 (name "ruby-lumberjack")
41700efa 2555 (version "1.0.13")
ec79018e
RW
2556 (source (origin
2557 (method url-fetch)
2558 (uri (rubygems-uri "lumberjack" version))
2559 (sha256
2560 (base32
41700efa 2561 "06im7gcg42x77yhz2w5da2ly9xz0n0c36y5ks7xs53v0l9g0vf5n"))))
ec79018e
RW
2562 (build-system ruby-build-system)
2563 (native-inputs
8be62d3f
BW
2564 `(("ruby-rspec" ,ruby-rspec)
2565 ("ruby-timecop" ,ruby-timecop)))
ec79018e
RW
2566 (synopsis "Logging utility library for Ruby")
2567 (description "Lumberjack is a simple logging utility that can be a drop in
2568replacement for Logger or ActiveSupport::BufferedLogger. It provides support
2569for automatically rolling log files even with multiple processes writing the
2570same log file.")
7bf837fd 2571 (home-page "https://github.com/bdurand/lumberjack")
ec79018e
RW
2572 (license license:expat)))
2573
2a9ce5cb
CB
2574(define-public ruby-rbnacl
2575 (package
2576 (name "ruby-rbnacl")
2577 (version "6.0.1")
2578 (source
2579 (origin
2580 (method url-fetch)
2581 (uri (rubygems-uri "rbnacl" version))
2582 (sha256
2583 (base32
2584 "0ajxy5kj2jw09wdsla3jmha8w07vj5l14288xr9djpl327g3lzhn"))))
2585 (build-system ruby-build-system)
2586 (arguments
2587 `(#:phases
2588 (modify-phases %standard-phases
2589 (add-after 'unpack 'remove-unnecessary-dependencies
2590 (lambda _
2591 ;; Coveralls relates to a network service, and Rubocop to code
2592 ;; linting and both are unnecessary to run the tests
2593 (substitute* "Gemfile"
2594 ((".*rubocop.*") "\n")
2595 ((".*guard-rspec.*") "\n")
2596 ((".*coveralls.*") "\n"))
2597 (substitute* "spec/spec_helper.rb"
2598 (("require \"coveralls\"") "")
2599 (("Coveralls.wear!") ""))
2600 #t))
2601 (add-after 'unpack 'use-libsodium-from-store
2602 (lambda* (#:key inputs #:allow-other-keys)
2603 (substitute* '("lib/rbnacl/init.rb"
2604 "lib/rbnacl/sodium.rb")
2605 (("ffi_lib \\[.+\\]")
2606 (string-append "ffi_lib [\""
2607 (assoc-ref inputs "libsodium") "/lib/libsodium.so"
2608 "\"]")))
2609 #t))
2610 ;; Run Rspec directly to avoid the Rubocop dependency in the Rakefile
2611 (replace 'check
2612 (lambda* (#:key tests? #:allow-other-keys)
2613 (when tests?
2614 (invoke "rspec"))
2615 #t)))))
2616 (propagated-inputs
2617 `(("ruby-ffi" ,ruby-ffi)))
2618 (inputs
2619 `(("libsodium" ,libsodium)))
2620 (native-inputs
2621 `(("bundler" ,bundler)
2622 ("ruby-rspec" ,ruby-rspec)))
2623 (synopsis "Ruby FFI binding to libsodium")
2624 (description
2625 "This package provides Ruby FFI bindings to the Networking and
2626Cryptography (NaCl) library, also known as libsodium. This provides a
2627high-level toolkit for building cryptographic systems and protocols.")
2628 (home-page "https://github.com/crypto-rb/rbnacl")
2629 (license license:expat)))
2630
70b4cf38
RW
2631(define-public ruby-nenv
2632 (package
2633 (name "ruby-nenv")
12313cd0 2634 (version "0.3.0")
70b4cf38
RW
2635 (source (origin
2636 (method url-fetch)
2637 (uri (rubygems-uri "nenv" version))
2638 (sha256
2639 (base32
12313cd0 2640 "0r97jzknll9bhd8yyg2bngnnkj8rjhal667n7d32h8h7ny7nvpnr"))))
70b4cf38
RW
2641 (build-system ruby-build-system)
2642 (arguments
2643 `(#:tests? #f)) ; no tests included
2644 (native-inputs
2645 `(("ruby-rspec" ,ruby-rspec)
2646 ("bundler" ,bundler)))
2647 (synopsis "Ruby interface for modifying the environment")
2648 (description "Nenv provides a convenient wrapper for Ruby's ENV to modify
2649and inspect the environment.")
2650 (home-page "https://github.com/e2/nenv")
2651 (license license:expat)))
2652
af59d4b4
MB
2653(define-public ruby-ptools
2654 (package
2655 (name "ruby-ptools")
2656 (version "1.3.5")
2657 (source (origin
2658 (method url-fetch)
2659 (uri (rubygems-uri "ptools" version))
2660 (sha256
2661 (base32
2662 "1jb1h1nsk9zwykpniw8filbsk26kjsdlpk5wz6w0zyamcd41h87j"))))
2663 (build-system ruby-build-system)
2664 (arguments
2665 '(#:phases (modify-phases %standard-phases
2666 (add-after 'unpack 'patch-/bin/ls
2667 (lambda _
2668 (substitute* "test/test_binary.rb"
2669 (("/bin/ls")
2670 (which "ls")))
2671 #t))
2672 (add-before 'install 'create-gem
2673 (lambda _
2674 ;; Do not attempt to sign the gem.
2675 (substitute* "Rakefile"
2676 (("spec\\.signing_key = .*")
2677 ""))
2678 (invoke "rake" "gem:create"))))))
2679 (synopsis "Extra methods for Ruby's @code{File} class")
2680 (description
2681 "The @dfn{ptools} (power tools) library extends Ruby's core @code{File}
2682class with many additional methods modelled after common POSIX tools, such as
2683@code{File.which} for finding executables, @code{File.tail} to print the last
2684lines of a file, @code{File.wc} to count words, and so on.")
2685 (home-page "https://github.com/djberg96/ptools")
2686 (license license:artistic2.0)))
2687
8d9e9f28
RW
2688(define-public ruby-permutation
2689 (package
2690 (name "ruby-permutation")
2691 (version "0.1.8")
2692 (source (origin
2693 (method url-fetch)
2694 (uri (rubygems-uri "permutation" version))
2695 (sha256
2696 (base32
2697 "13crwk2vfbzv99czva7881027dbcnidihmvx2jc58z2vm3bp9sl8"))))
2698 (build-system ruby-build-system)
2699 (arguments
2700 `(#:phases
2701 (modify-phases %standard-phases
2702 (add-after 'unpack 'fix-rakefile
2703 (lambda _
2704 (substitute* "Rakefile"
2705 (("require 'rake/gempackagetask'")
2706 "require 'rubygems/package_task'")
2707 (("include Config") ""))
2708 #t))
2709 (replace 'check
2710 (lambda _
9923d5a4 2711 (invoke "ruby" "-Ilib" "test/test.rb"))))))
8d9e9f28
RW
2712 (synopsis "Library to perform operations with sequence permutations")
2713 (description "This package provides a Ruby library to perform different
2714operations with permutations of sequences, such as strings and arrays.")
2f3800e5 2715 (home-page "https://flori.github.io/permutation")
8d9e9f28
RW
2716 (license license:gpl2))) ; GPL 2 only
2717
c5d14d42
RW
2718(define-public ruby-shellany
2719 (package
2720 (name "ruby-shellany")
2721 (version "0.0.1")
2722 (source (origin
2723 (method url-fetch)
2724 (uri (rubygems-uri "shellany" version))
2725 (sha256
2726 (base32
2727 "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf"))))
2728 (build-system ruby-build-system)
2729 (arguments
2730 `(#:test-target "default"
2731 #:phases
2732 (modify-phases %standard-phases
2733 (add-after 'unpack 'fix-version-test
2734 (lambda _
2735 (substitute* "spec/shellany_spec.rb"
2736 (("^RSpec") "require \"shellany\"\nRSpec"))
2737 #t)))))
2738 (native-inputs
2739 `(("ruby-rspec" ,ruby-rspec)
2740 ("ruby-nenv" ,ruby-nenv)
2741 ("bundler" ,bundler)))
2742 (synopsis "Capture command output")
2743 (description "Shellany is a Ruby library providing functions to capture
2744the output produced by running shell commands.")
2745 (home-page "https://rubygems.org/gems/shellany")
2746 (license license:expat)))
2747
d152162f
RW
2748(define-public ruby-notiffany
2749 (package
2750 (name "ruby-notiffany")
8c1e4a4f 2751 (version "0.1.3")
d152162f
RW
2752 (source (origin
2753 (method url-fetch)
2754 (uri (rubygems-uri "notiffany" version))
2755 (sha256
2756 (base32
8c1e4a4f 2757 "0f47h3bmg1apr4x51szqfv3rh2vq58z3grh4w02cp3bzbdh6jxnk"))))
d152162f
RW
2758 (build-system ruby-build-system)
2759 ;; Tests are not included in the gem.
2760 (arguments `(#:tests? #f))
2761 (propagated-inputs
2762 `(("ruby-shellany" ,ruby-shellany)
2763 ("ruby-nenv" ,ruby-nenv)))
2764 (native-inputs
2765 `(("bundler" ,bundler)))
01eb17de
VC
2766 (synopsis "Wrapper library for notification libraries")
2767 (description "Notiffany is a Ruby wrapper library for notification
d152162f
RW
2768libraries such as Libnotify.")
2769 (home-page "https://github.com/guard/notiffany")
2770 (license license:expat)))
2771
96bf7521
MB
2772(define-public ruby-forking-test-runner
2773 (package
2774 (name "ruby-forking-test-runner")
2775 (version "1.6.0")
2776 (home-page "https://github.com/grosser/forking_test_runner")
2777 (source (origin
2778 (method git-fetch)
2779 (uri (git-reference (url home-page)
2780 (commit (string-append "v" version))))
2781 (file-name (git-file-name name version))
2782 (sha256
2783 (base32
2784 "1mrglzkj2nrgisccf2f30zbfmcs0awv1g3lw994b2az90fl39x8m"))))
2785 (build-system ruby-build-system)
2786 (arguments
2787 '(#:test-target "spec"
2788 ;; FIXME: ActiveRecord depends on sqlite3 1.3.6, but Guix has
2789 ;; 1.4.1, which in turn breaks the tests that use ActiveRecord.
2790 #:tests? #f
2791 #:phases (modify-phases %standard-phases
2792 (replace 'replace-git-ls-files
2793 (lambda _
2794 (substitute* "forking_test_runner.gemspec"
2795 (("`git ls-files lib/ bin/ MIT-LICENSE`")
2796 "`find lib/ bin/ MIT-LICENSE -type f | sort`"))
2797 #t))
2798 (add-before 'check 'remove-version-constraints
2799 (lambda _
2800 ;; Ignore hard coded version constraints for the tests.
2801 (delete-file "Gemfile.lock")
2802 #t))
2803 (add-before 'check 'set-HOME
2804 (lambda _
2805 ;; Many tests invoke Bundler, and fails when Bundler
2806 ;; warns that /homeless-shelter does not exist.
2807 (setenv "HOME" "/tmp")
2808 #t)))))
2809 (native-inputs
2810 `(("ruby-activerecord" ,ruby-activerecord)
2811 ("ruby-bump" ,ruby-bump)
2812 ("ruby-rspec" ,ruby-rspec)
2813 ("ruby-sqlite3" ,ruby-sqlite3)
2814 ("ruby-wwtd" ,ruby-wwtd)))
2815 (propagated-inputs
2816 `(("ruby-parallel-tests" ,ruby-parallel-tests)))
2817 (synopsis "Run every test in a fork")
2818 (description
2819 "This package is a wrapper around @code{parallel_tests} that runs every
2820test in a fork to avoid pollution and get clean output per test.")
2821 (license license:expat)))
2822
8528365b
RW
2823(define-public ruby-formatador
2824 (package
2825 (name "ruby-formatador")
2826 (version "0.2.5")
2827 (source (origin
2828 (method url-fetch)
2829 (uri (rubygems-uri "formatador" version))
2830 (sha256
2831 (base32
2832 "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0"))))
2833 (build-system ruby-build-system)
2834 ;; Circular dependency: Tests require ruby-shindo, which requires
2835 ;; ruby-formatador at runtime.
2836 (arguments `(#:tests? #f))
2837 (synopsis "Ruby library to format text on stdout")
2838 (description "Formatador is a Ruby library to format text printed to the
2839standard output stream.")
7bf837fd 2840 (home-page "https://github.com/geemus/formatador")
8528365b
RW
2841 (license license:expat)))
2842
5437c741
CB
2843(define-public ruby-fuubar
2844 (package
2845 (name "ruby-fuubar")
2846 (version "2.3.2")
2847 (source
2848 (origin
2849 ;; Fetch from the git repository, as the gem package doesn't include
2850 ;; the tests.
2851 (method git-fetch)
2852 (uri (git-reference
b0e7b699 2853 (url "https://github.com/thekompanee/fuubar")
5437c741
CB
2854 (commit (string-append "releases/v" version))))
2855 (file-name (git-file-name name version))
2856 (sha256
2857 (base32
2858 "0jm1x2xp13csbnadixaikj7mlkp5yk4byx51npm56zi13izp7259"))))
2859 (build-system ruby-build-system)
2860 (arguments
2861 '(;; TODO: Some tests fail, unsure why.
2862 ;; 21 examples, 7 failures
2863 #:tests? #f
2864 #:phases
2865 (modify-phases %standard-phases
2866 (add-before 'build 'delete-certificate
2867 (lambda _
2868 ;; Remove 's.cert_chain' as we do not build with a private key
2869 (substitute* "fuubar.gemspec"
2870 ((".*cert_chain.*") "")
2871 ((".*signing_key.*") ""))
2872 #t))
2873 (replace 'check
2874 (lambda* (#:key tests? #:allow-other-keys)
2875 (when tests?
2876 (invoke "rspec"))
2877 #t)))))
2878 (native-inputs
2879 `(("bundler" ,bundler)))
2880 (propagated-inputs
2881 `(("ruby-rspec-core" ,ruby-rspec-core)
2882 ("ruby-progressbar" ,ruby-progressbar)))
2883 (synopsis "Fuubar is an RSpec formatter that uses a progress bar")
2884 (description
2885 "Fuubar is an RSpec formatter that uses a progress bar instead of a
2886string of letters and dots as feedback. It also stops on the first test
2887failure.")
2888 (home-page "https://github.com/thekompanee/fuubar")
2889 (license license:expat)))
2890
8ea991e3
CB
2891(define-public ruby-haml
2892 (package
2893 (name "ruby-haml")
2894 (version "5.0.4")
2895 (source
2896 (origin
2897 (method url-fetch)
2898 (uri (rubygems-uri "haml" version))
2899 (sha256
2900 (base32
2901 "1q0a9fvqh8kn6wm97fcks6qzbjd400bv8bx748w8v87m7p4klhac"))))
2902 (build-system ruby-build-system)
2903 (arguments
2904 '(#:tests? #f)) ; No included tests
2905 (propagated-inputs
2906 `(("ruby-tilt" ,ruby-tilt)
2907 ("ruby-temple" ,ruby-temple)))
2908 (synopsis "Haml is a Ruby library to generate HTML documents")
2909 (description
2910 "@acronym{Haml, HTML Abstraction Markup Language} is a layer on top of
2911HTML or XML that is designed to express the structure of documents using
2912indentation rather than closing tags. It was originally envisioned as a
2913plugin for Ruby on Rails, but it can function as a stand-alone templating
2914engine.")
2915 (home-page "http://haml.info/")
2916 (license license:expat)))
2917
353b7eb8
CB
2918(define-public ruby-hamster
2919 (package
2920 (name "ruby-hamster")
2921 (version "3.0.0")
2922 (source
2923 (origin
2924 (method url-fetch)
2925 (uri (rubygems-uri "hamster" version))
2926 (sha256
2927 (base32
2928 "1n1lsh96vnyc1pnzyd30f9prcsclmvmkdb3nm5aahnyizyiy6lar"))))
2929 (build-system ruby-build-system)
2930 (arguments
2931 '(#:phases
2932 (modify-phases %standard-phases
2933 (add-after 'unpack 'remove-unnecessary-dependencies
2934 (lambda _
2935 ;; pry is a debugging tool, and is unnecessary when running the
2936 ;; tests
2937 (substitute* "spec/lib/hamster/vector/insert_spec.rb"
2938 (("require 'pry'") ""))
2939 (substitute* "spec/spec_helper.rb"
2940 (("require \"pry\"") "")
2941 ;; CodeClimate is an online service, and is unnecessary for
2942 ;; running the tests
2943 (("require \"codeclimate-test-reporter\"") "")
2944 (("CodeClimate.*\n") ""))
2945 #t))
2946 ;; No Rakefile is included, so run rspec directly.
2947 (replace 'check
2948 (lambda* (#:key tests? #:allow-other-keys)
2949 (when tests?
2950 (invoke "rspec"))
2951 #t)))))
2952 (propagated-inputs
2953 `(("ruby-concurrent" ,ruby-concurrent)))
2954 (native-inputs
2955 `(("ruby-rspec" ,ruby-rspec)))
2956 (synopsis "Efficient, immutable, thread-safe collection classes for Ruby")
2957 (description
2958 "Hamster provides 6 persistent data structures: @code{Hash}, @code{Vector},
2959@code{Set}, @code{SortedSet}, @code{List}, and @code{Deque} (which works as an
2960immutable queue or stack).")
2961 (home-page "https://github.com/hamstergem/hamster")
2962 (license license:expat)))
2963
21781436
CB
2964(define-public ruby-hashdiff
2965 (package
2966 (name "ruby-hashdiff")
2967 (version "0.3.8")
2968 (source
2969 (origin
2970 (method url-fetch)
2971 (uri (rubygems-uri "hashdiff" version))
2972 (sha256
2973 (base32
2974 "19ykg5pax8798nh1yv71adkx0zzs7gn2rxjj86v7nsw0jba5lask"))))
2975 (build-system ruby-build-system)
2976 (arguments
2977 '(#:phases
2978 (modify-phases %standard-phases
2979 ;; Run tests directly via rspec to avoid Rake issue:
2980 ;; NoMethodError: undefined method `last_comment'
2981 (replace 'check
2982 (lambda* (#:key tests? #:allow-other-keys)
2983 (when tests?
2984 (invoke "rspec"))
2985 #t)))))
2986 (native-inputs
2987 `(("bundler" ,bundler)
2988 ("ruby-rspec" ,ruby-rspec-2)))
2989 (synopsis "HashDiff computes the smallest difference between two hashes")
2990 (description
2991 "HashDiff is a Ruby library to compute the smallest difference between
2992two hashes.")
2993 (home-page "https://github.com/liufengyun/hashdiff")
2994 (license license:expat)))
2995
3cc8e029
MB
2996(define-public ruby-hydra
2997 ;; No releases yet.
2998 (let ((commit "5abfa378743756ae4d9306cc134bcc482f5c9525")
2999 (revision "0"))
3000 (package
3001 (name "ruby-hydra")
3002 (version (git-version "0.0" revision commit))
3003 (home-page "https://github.com/hyphenation/hydra")
3004 (source (origin
3005 (method git-fetch)
3006 (uri (git-reference (url home-page) (commit commit)))
3007 (file-name (git-file-name name version))
3008 (sha256
3009 (base32
3010 "1cik398l2765y3d9sdhjzki3303hkry58ac6jlkiy7iy62nm529f"))))
3011 (build-system ruby-build-system)
3012 (arguments
3013 '(#:phases (modify-phases %standard-phases
3014 (add-after 'unpack 'make-files-writable
3015 (lambda _
3016 (for-each make-file-writable (find-files "."))
3017 #t))
3018 (replace 'check
3019 (lambda _
3020 (invoke "rspec"))))))
3021 (native-inputs
3022 `(("ruby-rspec" ,ruby-rspec)))
3023 (propagated-inputs
3024 `(("ruby-byebug" ,ruby-byebug)))
3025 (synopsis "Ruby hyphenation patterns")
3026 (description
3027 "ruby-hydra is a Ruby library for working with hyphenation patterns.")
3028 (license license:expat))))
3029
7ac4610f
RW
3030(define-public ruby-shindo
3031 (package
3032 (name "ruby-shindo")
3033 (version "0.3.8")
3034 (source (origin
3035 (method url-fetch)
3036 (uri (rubygems-uri "shindo" version))
3037 (sha256
3038 (base32
3039 "0s8v1jbz8i0jh92f2fgxb3p51l1azrpkc8nv4mhrqy4vndpvd7wq"))))
3040 (build-system ruby-build-system)
3041 (arguments
3042 `(#:test-target "shindo_tests"
3043 #:phases
3044 (modify-phases %standard-phases
3045 (add-after 'unpack 'fix-tests
0b060e34
CB
3046 (lambda _
3047 (substitute* "tests/tests_helper.rb"
3048 (("-rubygems") ""))
3049 (substitute* "Rakefile"
3050 (("system \"shindo") "system \"./bin/shindo")
3051 ;; This test doesn't work, so we disable it.
3052 (("fail \"The build_error test should fail") "#")
3053 ((" -rubygems") ""))
3054 #t)))))
7ac4610f
RW
3055 (propagated-inputs
3056 `(("ruby-formatador" ,ruby-formatador)))
3057 (synopsis "Simple depth first Ruby testing")
3058 (description "Shindo is a simple depth first testing library for Ruby.")
3059 (home-page "https://github.com/geemus/shindo")
3060 (license license:expat)))
3061
f13636f2
RW
3062(define-public ruby-rubygems-tasks
3063 (package
3064 (name "ruby-rubygems-tasks")
f0f5f2d3 3065 (version "0.2.5")
f13636f2
RW
3066 (source (origin
3067 (method url-fetch)
3068 (uri (rubygems-uri "rubygems-tasks" version))
3069 (sha256
3070 (base32
f0f5f2d3 3071 "1x3sz3n2dlknd3v7w1mrq6f0ag6pwzhjvg7z29p75w3p42ma1gbx"))))
f13636f2
RW
3072 (build-system ruby-build-system)
3073 ;; Tests need Internet access.
3074 (arguments `(#:tests? #f))
3075 (native-inputs
3076 `(("ruby-rspec" ,ruby-rspec)
3077 ("ruby-yard" ,ruby-yard)))
3078 (synopsis "Rake tasks for managing and releasing Ruby Gems")
3079 (description "Rubygems-task provides Rake tasks for managing and releasing
3080Ruby Gems.")
3081 (home-page "https://github.com/postmodern/rubygems-tasks")
3082 (license license:expat)))
3083
cb6bc5df
CB
3084(define-public ruby-rubyzip
3085 (package
3086 (name "ruby-rubyzip")
3087 (version "1.2.1")
3088 (source
3089 (origin
3090 (method url-fetch)
3091 (uri (rubygems-uri "rubyzip" version))
3092 (sha256
3093 (base32
3094 "06js4gznzgh8ac2ldvmjcmg9v1vg9llm357yckkpylaj6z456zqz"))))
3095 (build-system ruby-build-system)
3096 (arguments
3097 '(#:phases
3098 (modify-phases %standard-phases
3099 (add-before 'check 'patch-tests
3100 (lambda* (#:key inputs #:allow-other-keys)
3101 (substitute* "test/gentestfiles.rb"
3102 (("/usr/bin/zip")
3103 (string-append
3104 (assoc-ref inputs "zip") "/bin/zip")))
3105 (substitute* "test/input_stream_test.rb"
3106 (("/usr/bin/env ruby") (which "ruby")))
3107 #t)))))
3108 (native-inputs
3109 `(("bundler" ,bundler)
3110 ("ruby-simplecov" ,ruby-simplecov)
3111 ("zip" ,zip)
3112 ("unzip" ,unzip)))
3113 (synopsis "Ruby module is for reading and writing zip files")
3114 (description
3115 "The rubyzip module provides ways to read from and create zip files.")
702a1012 3116 (home-page "https://github.com/rubyzip/rubyzip")
cb6bc5df
CB
3117 (license license:bsd-2)))
3118
58b59742
RW
3119(define-public ruby-simplecov-html
3120 (package
3121 (name "ruby-simplecov-html")
53fd476f 3122 (version "0.10.2")
58b59742
RW
3123 (source (origin
3124 (method url-fetch)
3125 (uri (rubygems-uri "simplecov-html" version))
3126 (sha256
3127 (base32
53fd476f 3128 "1lihraa4rgxk8wbfl77fy9sf0ypk31iivly8vl3w04srd7i0clzn"))))
58b59742 3129 (build-system ruby-build-system)
8b749cf3 3130 (arguments `(#:tests? #f)) ; there are no tests
58b59742
RW
3131 (native-inputs
3132 `(("bundler" ,bundler)))
3133 (synopsis "Default HTML formatter for SimpleCov code coverage tool")
3134 (description "This package provides the default HTML formatter for
3135the SimpleCov code coverage tool for Ruby version 1.9 and above.")
3136 (home-page "https://github.com/colszowka/simplecov-html")
3137 (license license:expat)))
3138
a84fa2ad
RW
3139(define-public ruby-simplecov
3140 (package
3141 (name "ruby-simplecov")
d432682b 3142 (version "0.17.1")
a84fa2ad
RW
3143 (source (origin
3144 (method url-fetch)
3145 (uri (rubygems-uri "simplecov" version))
3146 (sha256
3147 (base32
d432682b 3148 "1135k46nik05sdab30yxb8264lqiz01c8v000g16cl9pjc4mxrdw"))))
a84fa2ad
RW
3149 (build-system ruby-build-system)
3150 ;; Simplecov depends on rubocop for code style checking at build time.
3151 ;; Rubocop needs simplecov at build time.
3152 (arguments `(#:tests? #f))
3153 (propagated-inputs
3154 `(("ruby-json" ,ruby-json)
3155 ("ruby-docile" ,ruby-docile)
3156 ("ruby-simplecov-html" ,ruby-simplecov-html)))
3157 (native-inputs
3158 `(("bundler" ,bundler)))
3159 (synopsis "Code coverage framework for Ruby")
3160 (description "SimpleCov is a code coverage framework for Ruby with a
3161powerful configuration library and automatic merging of coverage across test
3162suites.")
7bf837fd 3163 (home-page "https://github.com/colszowka/simplecov")
a84fa2ad
RW
3164 (license license:expat)))
3165
98b87b82
DT
3166(define-public ruby-useragent
3167 (package
3168 (name "ruby-useragent")
959d908d 3169 (version "0.16.10")
98b87b82
DT
3170 (source (origin
3171 (method url-fetch)
e83c6d00 3172 (uri (rubygems-uri "useragent" version))
98b87b82
DT
3173 (sha256
3174 (base32
959d908d 3175 "1fv5kvq494swy0p17h9qya9r50w15xsi9zmvhzb8gh55kq6ki50p"))))
98b87b82
DT
3176 (build-system ruby-build-system)
3177 (arguments
e83c6d00 3178 '(#:tests? #f)) ; no test suite
98b87b82
DT
3179 (synopsis "HTTP user agent parser for Ruby")
3180 (description "UserAgent is a Ruby library that parses and compares HTTP
3181User Agents.")
3182 (home-page "https://github.com/gshutler/useragent")
3183 (license license:expat)))
96086cc5 3184
f7e9b2f3
CB
3185(define-public ruby-backports
3186 (package
3187 (name "ruby-backports")
3188 (version "3.11.4")
3189 (source
3190 (origin
3191 (method url-fetch)
3192 (uri (rubygems-uri "backports" version))
3193 (sha256
3194 (base32
3195 "1hshjxww2h7s0dk57njrygq4zpp0nlqrjfya7zwm27iq3rhc3y8g"))))
3196 (build-system ruby-build-system)
3197 (arguments
3198 '(;; TODO: This should be default, but there is one test failure
3199 #:test-target "all_spec"))
3200 (native-inputs
3201 `(("ruby-mspec" ,ruby-mspec)
3202 ("ruby-activesupport" ,ruby-activesupport)))
3203 (synopsis "Backports of the features in newer Ruby versions")
3204 (description
3205 "Backports enables more compatibility across Ruby versions by providing
3206backports of some features.")
3207 (home-page "https://github.com/marcandre/backports")
3208 (license license:expat)))
3209
96086cc5
DT
3210(define-public ruby-bacon
3211 (package
3212 (name "ruby-bacon")
e83c6d00 3213 (version "1.2.0")
96086cc5
DT
3214 (source (origin
3215 (method url-fetch)
e83c6d00 3216 (uri (rubygems-uri "bacon" version))
96086cc5
DT
3217 (sha256
3218 (base32
e83c6d00 3219 "1f06gdj77bmwzc1k5iragl1595hbn67yc7sqvs56ca8plrr2vmai"))))
96086cc5 3220 (build-system ruby-build-system)
96086cc5
DT
3221 (synopsis "Small RSpec clone")
3222 (description "Bacon is a small RSpec clone providing all essential
3223features.")
3224 (home-page "https://github.com/chneukirchen/bacon")
3225 (license license:expat)))
de59d316 3226
a8d2bf3c
CB
3227(define-public ruby-bacon-bits
3228 (package
3229 (name "ruby-bacon-bits")
3230 (version "0.1.0")
3231 (source
3232 (origin
3233 (method url-fetch)
3234 (uri (rubygems-uri "bacon-bits" version))
3235 (sha256
3236 (base32
3237 "1ghpj8ja94lhi8rgi872hqk4fd2amz2k7g9znd64z5dj7v6l0dmx"))))
3238 (build-system ruby-build-system)
3239 (arguments
3240 ;; No tests
3241 '(#:tests? #f))
3242 (propagated-inputs `(("ruby-bacon" ,ruby-bacon)))
3243 (synopsis "Extensions to Bacon, for disabling tests, before and after
3244blocks and more")
3245 (description
3246 "This extends the bacon testing framework with useful extensions to
3247disable tests, have before and after blocks that run once and more.")
3248 (home-page "https://github.com/cldwalker/bacon-bits")
3249 (license license:expat)))
3250
65f65889
CB
3251(define-public ruby-bacon-colored-output
3252 (package
3253 (name "ruby-bacon-colored-output")
3254 (version "1.1.1")
3255 (source
3256 (origin
3257 (method url-fetch)
3258 (uri (rubygems-uri "bacon-colored_output" version))
3259 (sha256
3260 (base32
3261 "1znyh3vkfdlmf19p3k4zip88ibym41dn5g4p4n5hmks2iznb7qpx"))))
3262 (build-system ruby-build-system)
3263 (arguments
3264 '(;; No included tests
3265 #:tests? #f))
3266 (propagated-inputs
3267 `(("ruby-bacon" ,ruby-bacon)))
3268 (synopsis "Colored output for Bacon test framework")
3269 (description
3270 "This package adds color through ANSI escape codes to Bacon test
3271output.")
3272 (home-page "https://github.com/whitequark/bacon-colored_output")
3273 (license license:expat)))
3274
e259bdf0
DT
3275(define-public ruby-connection-pool
3276 (package
3277 (name "ruby-connection-pool")
58021db4 3278 (version "2.2.2")
e259bdf0
DT
3279 (source (origin
3280 (method url-fetch)
e83c6d00 3281 (uri (rubygems-uri "connection_pool" version))
e259bdf0
DT
3282 (sha256
3283 (base32
58021db4 3284 "0lflx29mlznf1hn0nihkgllzbj8xp5qasn8j7h838465pi399k68"))))
e259bdf0
DT
3285 (build-system ruby-build-system)
3286 (native-inputs
3287 `(("bundler" ,bundler)))
3288 (synopsis "Generic connection pool for Ruby")
3289 (description "Connection_pool provides a generic connection pooling
3290interface for Ruby programs.")
3291 (home-page "https://github.com/mperham/connection_pool")
3292 (license license:expat)))
4c0aeb44 3293
4a98314d
MB
3294(define-public ruby-fast-gettext
3295 (package
3296 (name "ruby-fast-gettext")
c3beb7ce 3297 (version "2.0.3")
4a98314d
MB
3298 (home-page "https://github.com/grosser/fast_gettext")
3299 (source (origin
3300 (method git-fetch)
3301 (uri (git-reference (url home-page)
3302 (commit (string-append "v" version))))
3303 (file-name (git-file-name name version))
3304 (sha256
3305 (base32
c3beb7ce 3306 "1dg14apq5sfjshhcq0idphhs7aq9ikzswhqmn689p1h76mxqr1v6"))))
4a98314d
MB
3307 (build-system ruby-build-system)
3308 (arguments
3309 '(#:test-target "spec"
3310 #:phases (modify-phases %standard-phases
3311 (add-before 'check 'remove-version-constraints
3312 (lambda _
3313 (delete-file "Gemfile.lock")
3314 #t))
3315 (add-before 'check 'remove-activerecord-test
3316 (lambda _
3317 ;; FIXME: This test fails because ActiveRecord depends on
3318 ;; a different version of ruby-sqlite than the currently
3319 ;; available one.
3320 (delete-file
3321 "spec/fast_gettext/translation_repository/db_spec.rb")
3322 #t))
3323 (add-before 'check 'disable-i18n-test
3324 (lambda _
3325 ;; XXX: This test checks i18n intricasies with Rails 3 and
3326 ;; automatically disables itself for Rails 4.0, but does
3327 ;; not know about newer versions as it has not been updated
3328 ;; since 2014. Disable for later versions of Rails too.
3329 (substitute* "spec/fast_gettext/vendor/string_spec.rb"
3330 (((string-append "ActiveRecord::VERSION::MAJOR == 4 and "
3331 "ActiveRecord::VERSION::MINOR == 0"))
3332 "ActiveRecord::VERSION::MAJOR >= 4"))
3333 #t)))))
3334 (native-inputs
3335 `(;; For tests.
3336 ("ruby-activerecord" ,ruby-activerecord)
3337 ("ruby-activesupport" ,ruby-activesupport)
3338 ("ruby-bump" ,ruby-bump)
3339 ("ruby-forking-test-runner" ,ruby-forking-test-runner)
3340 ("ruby-i18n" ,ruby-i18n)
3341 ("ruby-rubocop" ,ruby-rubocop)
3342 ("ruby-rspec" ,ruby-rspec)
3343 ("ruby-single-cov" ,ruby-single-cov)
3344 ("ruby-sqlite3" ,ruby-sqlite3)
3345 ("ruby-wwtd" ,ruby-wwtd)))
3346 (synopsis "Fast implementation of @code{GetText}")
3347 (description
3348 "This package provides an alternative implementation of the Ruby
3349@code{GetText} library that is approximately 12x faster yet thread safe.")
3350 ;; Some parts are covered by the Ruby license, see file headers.
3351 (license (list license:expat license:ruby))))
3352
4c0aeb44
DT
3353(define-public ruby-net-http-persistent
3354 (package
3355 (name "ruby-net-http-persistent")
185ea446 3356 (version "3.0.0")
4c0aeb44
DT
3357 (source (origin
3358 (method url-fetch)
e83c6d00 3359 (uri (rubygems-uri "net-http-persistent" version))
4c0aeb44
DT
3360 (sha256
3361 (base32
185ea446 3362 "156rv95bgxfz6qw5y1r7c7bswr77918hygl8dyl14qzbqc5vyp18"))))
4c0aeb44 3363 (build-system ruby-build-system)
4c0aeb44
DT
3364 (native-inputs
3365 `(("ruby-connection-pool" ,ruby-connection-pool)
3366 ("ruby-hoe" ,ruby-hoe)))
3367 (synopsis "Persistent HTTP connection manager")
3368 (description "Net::HTTP::Persistent manages persistent HTTP connections
3369using Net::HTTP, supporting reconnection and retry according to RFC 2616.")
3370 (home-page "https://github.com/drbrain/net-http-persistent")
3371 (license license:expat)))
afbbdf77 3372
f88bacaf
RW
3373(define-public ruby-power-assert
3374 (package
3375 (name "ruby-power-assert")
6754323b 3376 (version "1.1.5")
f88bacaf
RW
3377 (source (origin
3378 (method url-fetch)
3379 (uri (rubygems-uri "power_assert" version))
3380 (sha256
3381 (base32
6754323b 3382 "1dii0wkfa0jm8sk9b20zl1z4980dmrjh0zqnii058485pp3ws10s"))))
f88bacaf 3383 (build-system ruby-build-system)
6754323b
CB
3384 (arguments
3385 '(#:tests? #f)) ; No included tests
f88bacaf
RW
3386 (native-inputs
3387 `(("bundler" ,bundler)))
3388 (synopsis "Assert library with descriptive assertion messages")
3389 (description "Power-assert is an assertion library providing descriptive
3390assertion messages for tests.")
3391 (home-page "https://github.com/k-tsj/power_assert")
3392 (license (list license:bsd-2 license:ruby))))
3393
e42e3bfa
CB
3394(define-public ruby-powerpack
3395 (package
3396 (name "ruby-powerpack")
3397 (version "0.1.2")
3398 (source
3399 (origin
3400 (method url-fetch)
3401 (uri (rubygems-uri "powerpack" version))
3402 (sha256
3403 (base32
3404 "1r51d67wd467rpdfl6x43y84vwm8f5ql9l9m85ak1s2sp3nc5hyv"))))
3405 (build-system ruby-build-system)
3406 (arguments
3407 '(#:test-target "spec"))
3408 (native-inputs
3409 `(("bundler" ,bundler)
3410 ("ruby-rspec" ,ruby-rspec)
3411 ("ruby-yard" ,ruby-yard)))
3412 (synopsis "Useful extensions to core Ruby classes")
3413 (description
3414 "This package provides a few useful extensions to core Ruby classes,
3415including @code{Array}, @code{Enumerable}, @code{Hash}, @code{Numeric}, and
3416@code{String}.")
3417 (home-page "https://github.com/bbatsov/powerpack")
3418 (license license:expat)))
3419
347eb21e
RW
3420(define-public ruby-locale
3421 (package
3422 (name "ruby-locale")
3423 (version "2.1.2")
3424 (source (origin
3425 (method url-fetch)
3426 (uri (rubygems-uri "locale" version))
3427 (sha256
3428 (base32
3429 "1sls9bq4krx0fmnzmlbn64dw23c4d6pz46ynjzrn9k8zyassdd0x"))))
3430 (build-system ruby-build-system)
3431 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
3432 ;; which needs ruby-gettext, which needs ruby-locale. To break the
3433 ;; dependency cycle we disable tests.
3434 (arguments `(#:tests? #f))
3435 (native-inputs
3436 `(("bundler" ,bundler)
3437 ("ruby-yard" ,ruby-yard)))
3438 (synopsis "Ruby library providing basic localization APIs")
3439 (description
3440 "Ruby-Locale is the pure ruby library which provides basic APIs for
3441localization.")
3442 (home-page "https://github.com/ruby-gettext/locale")
3443 (license (list license:lgpl3+ license:ruby))))
3444
09e2b0af
CB
3445(define-public ruby-temple
3446 (package
3447 (name "ruby-temple")
b1c79cab 3448 (version "0.8.2")
09e2b0af
CB
3449 (source
3450 (origin
3451 (method url-fetch)
3452 (uri (rubygems-uri "temple" version))
3453 (sha256
3454 (base32
b1c79cab 3455 "060zzj7c2kicdfk6cpnn40n9yjnhfrr13d0rsbdhdij68chp2861"))))
09e2b0af
CB
3456 (build-system ruby-build-system)
3457 (native-inputs
3458 `(("ruby-tilt" ,ruby-tilt)
3459 ("ruby-bacon" ,ruby-bacon)
3460 ("ruby-erubis" ,ruby-erubis)))
3461 (synopsis "Template compilation framework in Ruby")
3462 (description
3463 "Temple is an abstraction and framework for compiling templates to pure
3464Ruby.")
3465 (home-page "https://github.com/judofyr/temple")
3466 (license license:expat)))
3467
e2333ea3
RW
3468(define-public ruby-text
3469 (package
3470 (name "ruby-text")
3471 (version "1.3.1")
3472 (source (origin
3473 (method url-fetch)
3474 (uri (rubygems-uri "text" version))
3475 (sha256
3476 (base32
3477 "1x6kkmsr49y3rnrin91rv8mpc3dhrf3ql08kbccw8yffq61brfrg"))))
3478 (build-system ruby-build-system)
3479 (synopsis "Collection of text algorithms for Ruby")
3480 (description
3481 "This package provides a collection of text algorithms: Levenshtein,
3482Soundex, Metaphone, Double Metaphone, Porter Stemming.")
7bf837fd 3483 (home-page "https://github.com/threedaymonk/text")
e2333ea3
RW
3484 (license license:expat)))
3485
c1f52261
RW
3486(define-public ruby-gettext
3487 (package
3488 (name "ruby-gettext")
3489 (version "3.1.7")
3490 (source (origin
3491 (method url-fetch)
3492 (uri (rubygems-uri "gettext" version))
3493 (sha256
3494 (base32
3495 "1hg9islkm324mb4sd4za1fgafj1hqnm3bdvzj3k4fqpnzqnbcfiq"))))
3496 (build-system ruby-build-system)
3497 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
3498 ;; which needs ruby-gettext. To break the dependency cycle we disable
3499 ;; tests.
3500 (arguments `(#:tests? #f))
3501 (propagated-inputs
3502 `(("ruby-locale" ,ruby-locale)
3503 ("ruby-text" ,ruby-text)))
3504 (native-inputs
3505 `(("bundler" ,bundler)
3506 ("ruby-yard" ,ruby-yard)))
3507 (synopsis "GNU gettext-like program for Ruby")
3508 (description
3509 "Gettext is a GNU gettext-like program for Ruby. The catalog
3510file (po-file) used is the same as that used by GNU gettext, allowing you to
3511use GNU gettext tools for maintenance.")
2f3800e5 3512 (home-page "https://ruby-gettext.github.com/")
c1f52261
RW
3513 (license (list license:lgpl3+ license:ruby))))
3514
cc5aeb8c
RW
3515(define-public ruby-packnga
3516 (package
3517 (name "ruby-packnga")
1d60c436 3518 (version "1.0.4")
cc5aeb8c
RW
3519 (source (origin
3520 (method url-fetch)
3521 (uri (rubygems-uri "packnga" version))
3522 (sha256
3523 (base32
1d60c436 3524 "1vv2j0i43s4xid2km5hgrrxqlqpwgq8nlm8kaxfg2531c1vwfsd4"))))
cc5aeb8c
RW
3525 (build-system ruby-build-system)
3526 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga.
3527 ;; To break the dependency cycle we disable tests.
3528 (arguments `(#:tests? #f))
3529 (propagated-inputs
3530 `(("ruby-gettext" ,ruby-gettext)
3531 ("ruby-yard" ,ruby-yard)))
3532 (native-inputs
3533 `(("bundler" ,bundler)))
3534 (synopsis "Utility library to package internationalized libraries")
3535 (description
3536 "Packnga is a library to translate to many languages using YARD.")
3537 (home-page "http://ranguba.org/packnga/")
3538 (license license:lgpl2.0+)))
3539
93dc8684
CB
3540(define-public ruby-test-construct
3541 (package
3542 (name "ruby-test-construct")
3543 (version "2.0.1")
3544 (source
3545 (origin
3546 (method url-fetch)
3547 (uri (rubygems-uri "test_construct" version))
3548 (sha256
3549 (base32
3550 "1a2ym3l068d0pxzzr95kvqx87zpdsarxslz9ygd4qfm9frrz0kgj"))))
3551 (build-system ruby-build-system)
3552 (native-inputs
3553 `(("bundler" ,bundler)
3554 ("ruby-mocha" ,ruby-mocha)
3555 ("ruby-rspec" ,ruby-rspec)))
3556 (synopsis "Creates temporary files and directories for testing")
3557 (description
3558 "TestConstruct is a @acronym{DSL, Domain Specific Language} for creating
3559temporary files and directories during tests.")
3560 (home-page "https://github.com/bhb/test_construct")
3561 (license license:expat)))
3562
3383f5bd
RW
3563(define-public ruby-test-unit
3564 (package
3565 (name "ruby-test-unit")
d74d96e4 3566 (version "3.2.5")
3383f5bd
RW
3567 (source (origin
3568 (method url-fetch)
3569 (uri (rubygems-uri "test-unit" version))
3570 (sha256
3571 (base32
d74d96e4 3572 "05bx36fw01iqz0xqhvjfrwjgnj1zx3b2vn6w1fzp19rchd7zqc52"))))
3383f5bd
RW
3573 (build-system ruby-build-system)
3574 (propagated-inputs
3575 `(("ruby-power-assert" ,ruby-power-assert)))
3576 (native-inputs
3577 `(("bundler" ,bundler)
3578 ("ruby-packnga" ,ruby-packnga)
3579 ("ruby-yard" ,ruby-yard)))
3580 (synopsis "Unit testing framework for Ruby")
3581 (description "@code{Test::Unit} is unit testing framework for Ruby, based
3582on xUnit principles. These were originally designed by Kent Beck, creator of
3583extreme programming software development methodology, for Smalltalk's SUnit.
3584It allows writing tests, checking results and automated testing in Ruby.")
2f3800e5 3585 (home-page "https://test-unit.github.io/")
3383f5bd
RW
3586 (license (list license:psfl license:ruby))))
3587
76b732fb
CB
3588(define-public ruby-markaby
3589 (package
3590 (name "ruby-markaby")
3591 (version "0.9.0")
3592 (source
3593 (origin
3594 (method url-fetch)
3595 (uri (rubygems-uri "markaby" version))
3596 (sha256
3597 (base32
3598 "1j4jc31ycydbkh5h3q6zwidzpavg3g5mbb5lqyaczd3jrq78rd7i"))))
3599 (build-system ruby-build-system)
3600 (arguments
3601 '(#:phases
3602 (modify-phases %standard-phases
3603 ;; Run rspec manually without using the Rakefile, as the versions of
3604 ;; Rake and RSpec 2 are incompatible:
3605 ;;
3606 ;; NoMethodError: undefined method `last_comment'
3607 (replace 'check
3608 (lambda* (#:key tests? #:allow-other-keys)
3609 (when tests?
3610 (invoke "rspec"))
3611 #t)))))
3612 (propagated-inputs
3613 `(("ruby-builder" ,ruby-builder)))
3614 (native-inputs
3615 `(("bundler" ,bundler)
3616 ("ruby-rspec" ,ruby-rspec-2)))
3617 (synopsis "Write HTML pages in pure Ruby")
3618 (description
3619 "Markaby allows writing HTML packages in pure Ruby. This is similar to
e54af322 3620the functionality provided by @acronym{ERB, Embedded Ruby}, but without the
76b732fb 3621mixture of HTML and additional ERB syntax.")
41181b76 3622 (home-page "https://markaby.github.io/")
76b732fb
CB
3623 (license license:expat)))
3624
b9511aa9
CB
3625(define-public ruby-maruku
3626 (package
3627 (name "ruby-maruku")
3628 (version "0.7.3")
3629 (source
3630 (origin
3631 (method url-fetch)
3632 (uri (rubygems-uri "maruku" version))
3633 (sha256
3634 (base32
3635 "1r7bxpgnx2hp3g12bjrmdrpv663dfqxsdp0af69kjhxmaxpia56x"))))
3636 (build-system ruby-build-system)
3637 (arguments
3638 '(;; TODO: 3 tests seem to fail due to HTML encoding issues
3639 #:tests? #f
3640 #:phases
3641 (modify-phases %standard-phases
3642 (replace 'check
3643 (lambda* (#:key tests? #:allow-other-keys)
3644 (when tests?
3645 (invoke "rspec"))
3646 #t)))))
3647 (native-inputs
3648 `(("ruby-rspec" ,ruby-rspec)
3649 ("ruby-simplecov" ,ruby-simplecov)
3650 ("ruby-nokogiri-diff" ,ruby-nokogiri-diff)))
3651 (synopsis "Markdown interpreter in Ruby")
3652 (description
3653 "Maruku is a Markdown interpreter in Ruby. It can export Markdown to
3654HTML, and PDF through LaTeX.")
3655 (home-page "https://github.com/bhollis/maruku")
3656 (license license:expat)))
3657
25d6d49b
RW
3658(define-public ruby-metaclass
3659 (package
3660 (name "ruby-metaclass")
3661 (version "0.0.4")
3662 (source (origin
3663 (method url-fetch)
3664 (uri (rubygems-uri "metaclass" version))
3665 (sha256
3666 (base32
3667 "0hp99y2b1nh0nr8pc398n3f8lakgci6pkrg4bf2b2211j1f6hsc5"))))
3668 (build-system ruby-build-system)
3669 (arguments
3670 `(#:phases
3671 (modify-phases %standard-phases
3672 (add-after 'unpack 'add-test-unit-to-search-path
761e7042 3673 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 3674 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
761e7042
BW
3675 (substitute* "Rakefile"
3676 (("t\\.libs << \"test\"" line)
3677 (string-append line "; t.libs << \""
3cb3fa67 3678 test-unit "/lib/ruby/vendor_ruby"
761e7042
BW
3679 "/gems/test-unit-"
3680 ,(package-version ruby-test-unit)
3681 "/lib\""))))
3682 #t)))))
25d6d49b
RW
3683 (native-inputs
3684 `(("bundler" ,bundler)
3685 ("ruby-test-unit" ,ruby-test-unit)))
3686 (synopsis "Ruby library adding metaclass method to all objects")
3687 (description
3688 "Metaclass is a Ruby library adding a @code{metaclass} method to all Ruby
3689objects.")
7bf837fd 3690 (home-page "https://github.com/floehopper/metaclass")
25d6d49b
RW
3691 (license license:expat)))
3692
fae1c866
MB
3693(define-public ruby-mkmf-lite
3694 (package
3695 (name "ruby-mkmf-lite")
3696 (version "0.3.2")
3697 (source (origin
3698 (method url-fetch)
3699 (uri (rubygems-uri "mkmf-lite" version))
3700 (sha256
3701 (base32
3702 "0br9k6zijj1zc25n8p7f2j1mwl58nfgdknf3q13h9k156jvrir06"))))
3703 (build-system ruby-build-system)
3704 (propagated-inputs
3705 `(("ruby-ptools" ,ruby-ptools)))
3706 (synopsis "Lightweight alternative to @code{mkmf}")
3707 (description
3708 "@code{mkmf-lite} is a light version of Ruby's @code{mkmf.rb} designed
3709for use as a library. It does not create packages, builds, or log files of
3710any kind. Instead, it provides mixin methods that you can use in FFI or tests
3711to check for the presence of header files, constants, and so on.")
3712 (home-page "https://github.com/djberg96/mkmf-lite")
3713 (license license:asl2.0)))
3714
1d1d20b0
CB
3715(define-public ruby-mspec
3716 (package
3717 (name "ruby-mspec")
3718 (version "1.9.1")
3719 (source
3720 (origin
3721 (method url-fetch)
3722 (uri (rubygems-uri "mspec" version))
3723 (sha256
3724 (base32
3725 "0wmyh2n40m4srwdx9z6h6g6p46k02pzyhcsja3hqcw5h5b0hfmhd"))))
3726 (build-system ruby-build-system)
3727 (arguments
3728 '(;; TODO: 3 test failures
3729 ;; ./spec/mocks/mock_spec.rb:82
3730 ;; ./spec/utils/name_map_spec.rb:151
3731 ;; ./spec/utils/name_map_spec.rb:155
3732 #:tests? #f
3733 #:phases
3734 (modify-phases %standard-phases
3735 (add-after 'extract-gemspec 'change-dependency-constraints
3736 (lambda _
3737 (substitute* "mspec.gemspec"
3738 (("rake.*") "rake>)\n")
3739 (("rspec.*") "rspec>)\n"))
3740 #t))
3741 (replace 'check
3742 (lambda* (#:key tests? #:allow-other-keys)
3743 (when tests?
3744 (invoke "rspec" "spec"))
3745 #t)))))
3746 (native-inputs
3747 `(("bundler" ,bundler)
3748 ("ruby-rake" ,ruby-rake)
3749 ("ruby-rspec" ,ruby-rspec)))
3750 (synopsis "MSpec is a specialized framework for RubySpec")
3751 (description
3752 "MSpec is a specialized framework that is syntax-compatible with RSpec 2
3753for basic features. MSpec contains additional features that assist in writing
3754specs for Ruby implementations in ruby/spec.")
3755 (home-page "http://rubyspec.org")
3756 (license license:expat)))
3757
b8aecc31
CB
3758(define-public ruby-mysql2
3759 (package
3760 (name "ruby-mysql2")
3761 (version "0.5.2")
3762 (source
3763 (origin
3764 (method git-fetch)
3765 (uri (git-reference
b0e7b699 3766 (url "https://github.com/brianmario/mysql2")
b8aecc31
CB
3767 (commit version)))
3768 (file-name (git-file-name name version))
3769 (sha256
3770 (base32
3771 "11lvfgc2rmvkm52jp0nbi6pvhk06klznghr7llldfw8basl9n5wv"))))
3772 (build-system ruby-build-system)
3773 (arguments
3774 '(;; TODO: Tests require a running MySQL/MariaDB service
3775 #:tests? #f
3776 #:phases
3777 (modify-phases %standard-phases
3778 (replace 'replace-git-ls-files
3779 (lambda _
3780 (substitute* "mysql2.gemspec"
3781 (("git ls-files .*`") "find . -type f |sort`"))
3782 #t))
3783 (add-before 'install 'set-MAKEFLAGS
3784 (lambda* (#:key outputs #:allow-other-keys)
3785 (setenv "MAKEFLAGS"
3786 (string-append
3787 "V=1 "
3788 "prefix=" (assoc-ref outputs "out")))
3789 #t))
3790 ;; Move the 'check phase to after 'install, as then you can test
3791 ;; using the installed mysql2 gem in the store.
3792 (delete 'check)
3793 (add-after 'install 'check
3794 (lambda* (#:key outputs tests? #:allow-other-keys)
3795 (setenv "GEM_PATH"
3796 (string-append
3797 (getenv "GEM_PATH")
3798 ":"
3799 (assoc-ref outputs "out") "/lib/ruby/vendor_ruby"))
3800 (when tests?
3801 (invoke "rspec"))
3802 #t)))))
3803 (inputs
2b8491fb
JL
3804 `(("mariadb" ,mariadb "lib")
3805 ("mariadb-dev" ,mariadb "dev")
b8aecc31
CB
3806 ("zlib" ,zlib)))
3807 (native-inputs
3808 `(("ruby-rspec" ,ruby-rspec)
3809 ("ruby-rake-compiler" ,ruby-rake-compiler)))
3810 (synopsis "MySQL library for Ruby, binding to libmysql")
3811 (description
3812 "This package provides a simple, fast MySQL library for Ruby, binding to
3813libmysql.")
3814 (home-page "https://github.com/brianmario/mysql2")
3815 (license license:expat)))
3816
21f7b7bd
RW
3817(define-public ruby-blankslate
3818 (package
3819 (name "ruby-blankslate")
3820 (version "3.1.3")
3821 (source (origin
3822 (method url-fetch)
3823 (uri (rubygems-uri "blankslate" version))
3824 (sha256
3825 (base32
3826 "0fwkb4d1j9gc7vdwn2nxvwgy2g5wlag4c4bp7bl85jvq0kgp6cyx"))))
3827 (build-system ruby-build-system)
3828 (arguments
3829 `(#:phases
3830 (modify-phases %standard-phases
3831 (replace 'check
9923d5a4 3832 (lambda _ (invoke "rspec" "spec/"))))))
21f7b7bd
RW
3833 (native-inputs
3834 `(("bundler" ,bundler)
3835 ("ruby-rspec" ,ruby-rspec)))
3836 (synopsis "Abstract base class with no predefined methods")
3837 (description
3838 "BlankSlate provides an abstract base class with no predefined
3839methods (except for @code{__send__} and @code{__id__}). BlankSlate is useful
3840as a base class when writing classes that depend upon
3841@code{method_missing} (e.g. dynamic proxies).")
7bf837fd 3842 (home-page "https://github.com/masover/blankslate")
21f7b7bd
RW
3843 (license license:expat)))
3844
afdb437c
CB
3845(define-public ruby-bond
3846 (package
3847 (name "ruby-bond")
3848 (version "0.5.1")
3849 (source
3850 (origin
3851 (method url-fetch)
3852 (uri (rubygems-uri "bond" version))
3853 (sha256
3854 (base32
3855 "1r19ifc4skyl2gxnifrxa5jvbbay9fb2in79ppgv02b6n4bhsw90"))))
3856 (build-system ruby-build-system)
18a29cb3
MC
3857 (arguments
3858 ;; The test suite fails (see:
3859 ;; https://github.com/cldwalker/bond/issues/46).
3860 `(#:tests? #f))
afdb437c
CB
3861 (native-inputs
3862 `(("ruby-bacon" ,ruby-bacon)
3863 ("ruby-bacon-bits" ,ruby-bacon-bits)
3864 ("ruby-mocha-on-bacon" ,ruby-mocha-on-bacon)))
3865 (synopsis "Bond can provide custom autocompletion for arguments, methods
3866and more")
3867 (description
3868 "Bond can autocomplete argument(s) to methods, uniquely completing per
3869module, per method and per argument. Bond provides a configuration system and
3870a DSL for creating custom completions and completion rules. Bond can also
3871load completions that ship with gems. Bond is able to offer more than irb's
3872completion since it uses the full line of input when completing as opposed to
3873irb's last-word approach.")
3874 (home-page "http://tagaholic.me/bond/")
3875 (license license:expat)))
3876
f3d7bb93
CB
3877(define-public ruby-idn-ruby
3878 (package
3879 (name "ruby-idn-ruby")
3880 (version "0.1.0")
3881 (source
3882 (origin
3883 (method url-fetch)
3884 (uri (rubygems-uri "idn-ruby" version))
3885 (sha256
3886 (base32
3887 "07vblcyk3g72sbq12xz7xj28snpxnh3sbcnxy8bglqbfqqhvmawr"))))
3888 (build-system ruby-build-system)
3889 (arguments
3890 '(#:phases
3891 (modify-phases %standard-phases
3892 (delete 'check)
3893 (add-after 'install 'check
3894 (lambda* (#:key tests? outputs #:allow-other-keys)
3895 (when tests?
3896 (let* ((gem-file (cadr (find-files "." "\\.gem")))
3897 (name-and-version (basename gem-file ".gem")))
3898 (apply invoke
3899 "ruby" "--verbose"
3900 (string-append "-I"
3901 (assoc-ref outputs "out")
3902 "/lib/ruby/vendor_ruby/gems/"
3903 name-and-version
3904 "/lib")
3905 (find-files "./test" ".*\\.rb"))))
3906 #t)))))
3907 (inputs
3908 `(("libidn" ,libidn)))
3909 (synopsis "Ruby Bindings for the GNU LibIDN library")
3910 (description
3911 "Ruby Bindings for the GNU LibIDN library, an implementation of the
3912Stringprep, Punycode and IDNA specifications. These are used to encode and
3913decode internationalized domain + names according to the IDNA2003
3914specifications.
3915
3916Included are the most important parts of the Stringprep, Punycode and IDNA
3917APIs like performing Stringprep processings, encoding to and decoding from
3918Punycode strings and converting entire domain names to and from the ACE
3919encoded form.")
3920 (home-page "https://github.com/deepfryed/idn-ruby")
3921 (license license:asl2.0)))
3922
4016ba3f
RW
3923(define-public ruby-instantiator
3924 (package
3925 (name "ruby-instantiator")
688c9076 3926 (version "0.0.7")
4016ba3f
RW
3927 (source (origin
3928 (method url-fetch)
3929 (uri (rubygems-uri "instantiator" version))
3930 (sha256
3931 (base32
688c9076 3932 "0w07w3gkyqr7m0vz5h13vm8b411660qywjm2xxxgdjv4wb3fazbr"))))
4016ba3f
RW
3933 (build-system ruby-build-system)
3934 (arguments
3935 `(#:phases
3936 (modify-phases %standard-phases
3937 (add-after 'unpack 'add-test-unit-to-search-path
761e7042 3938 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 3939 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
761e7042
BW
3940 (substitute* "Rakefile"
3941 (("t\\.libs << \"test\"" line)
3942 (string-append line "; t.libs << \""
3cb3fa67 3943 test-unit "/lib/ruby/vendor_ruby"
761e7042
BW
3944 "/gems/test-unit-"
3945 ,(package-version ruby-test-unit)
3946 "/lib\""))))
3947 #t)))))
4016ba3f
RW
3948 (propagated-inputs
3949 `(("ruby-blankslate" ,ruby-blankslate)))
3950 (native-inputs
3951 `(("bundler" ,bundler)
3952 ("ruby-test-unit" ,ruby-test-unit)))
3953 (synopsis "Instantiate an arbitrary Ruby class")
3954 (description
3955 "Instantiator lets you instantiate an arbitrary Ruby class without
3956knowing anything about the constructor.")
3957 (home-page "https://github.com/floehopper/instantiator")
3958 (license license:expat)))
3959
97aee8d3
RW
3960(define-public ruby-introspection
3961 (package
3962 (name "ruby-introspection")
98ff58a5 3963 (version "0.0.4")
97aee8d3
RW
3964 (source (origin
3965 (method url-fetch)
3966 (uri (rubygems-uri "introspection" version))
3967 (sha256
3968 (base32
98ff58a5 3969 "1y2nbijkc0zlfmn9ss6588ilarq2kbn2i7w7pwwsli66dj84zgca"))))
97aee8d3
RW
3970 (build-system ruby-build-system)
3971 (arguments
3972 `(#:phases
3973 (modify-phases %standard-phases
3974 (add-after 'unpack 'add-test-unit-to-search-path
3975 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 3976 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
761e7042
BW
3977 (substitute* "Rakefile"
3978 (("t\\.libs << \"test\"" line)
3979 (string-append line "; t.libs << \""
3cb3fa67 3980 test-unit "/lib/ruby/vendor_ruby"
761e7042
BW
3981 "/gems/test-unit-"
3982 ,(package-version ruby-test-unit)
3983 "/lib\""))))
97aee8d3
RW
3984 #t)))))
3985 (propagated-inputs
3986 `(("ruby-instantiator" ,ruby-instantiator)
3987 ("ruby-metaclass" ,ruby-metaclass)))
3988 (native-inputs
3989 `(("bundler" ,bundler)
3990 ("ruby-blankslate" ,ruby-blankslate)
3991 ("ruby-test-unit" ,ruby-test-unit)))
3992 (synopsis "Dynamic inspection of the method hierarchy on a Ruby object")
3993 (description
3994 "Introspection provides tools to inspect the hierarchy of method
3995definitions on a Ruby object.")
3996 (home-page "https://github.com/floehopper/introspection")
3997 (license license:expat)))
3998
d93062fd
RW
3999(define-public ruby-redcarpet
4000 (package
4001 (name "ruby-redcarpet")
ba4084bb 4002 (version "3.5.0")
d93062fd
RW
4003 (source (origin
4004 (method url-fetch)
4005 (uri (rubygems-uri "redcarpet" version))
4006 (sha256
4007 (base32
ba4084bb 4008 "0skcyx1h8b5ms0rp2zm3ql6g322b8c1adnkwkqyv7z3kypb4bm7k"))))
d93062fd
RW
4009 (build-system ruby-build-system)
4010 (arguments
4011 `(#:phases
4012 (modify-phases %standard-phases
4013 ;; The gem archive does not include the conformance tests.
4014 (add-after 'unpack 'disable-conformance-tests
4015 (lambda _
4016 (substitute* "Rakefile"
4017 (("task :test => %w\\[test:unit test:conformance\\]")
4018 "task :test => %w[test:unit]"))
4019 #t)))))
4020 (native-inputs
4021 `(("bundler" ,bundler)
4022 ("ruby-test-unit" ,ruby-test-unit)
4023 ("ruby-rake-compiler" ,ruby-rake-compiler)))
4024 (synopsis "Extensible Markdown to (X)HTML converter")
4025 (description
4026 "Redcarpet is an extensible Ruby library for Markdown processing and
4027conversion to (X)HTML.")
7bf837fd 4028 (home-page "https://github.com/vmg/redcarpet")
d93062fd
RW
4029 (license license:expat)))
4030
09924294
CB
4031(define-public ruby-rerun
4032 (package
4033 (name "ruby-rerun")
4034 (version "0.13.0")
4035 (source
4036 (origin
4037 (method url-fetch)
4038 (uri (rubygems-uri "rerun" version))
4039 (sha256
4040 (base32
4041 "1cskvxk8z8vmfail8na7hj91hs0qnvds9nydj04zi3dbddgnbmvz"))))
4042 (build-system ruby-build-system)
4043 (arguments
4044 '(#:tests? #f)) ; No included tests
4045 (propagated-inputs
4046 `(("ruby-listen" ,ruby-listen)))
4047 (synopsis "Run a process, and restart when some monitored files change")
4048 (description
52beae7b 4049 "Rerun is a tool to launch programs, then monitor the file system, and
09924294
CB
4050restart the program when any of the monitored files change. It's written in
4051Ruby, but can be used for all programs.")
4052 (home-page "https://github.com/alexch/rerun/")
4053 (license license:expat)))
4054
8d85543b
MB
4055(define-public ruby-maxitest
4056 (package
4057 (name "ruby-maxitest")
4058 (version "3.6.0")
4059 (home-page "https://github.com/grosser/maxitest")
4060 (source (origin
4061 ;; Pull from git because the gem does not contain tests.
4062 (method git-fetch)
4063 (uri (git-reference
4064 (url home-page)
4065 (commit (string-append "v" version))))
4066 (file-name (git-file-name name version))
4067 (sha256
4068 (base32
4069 "07b3j0bv3dx5j42jlvpvl07aaxplyi6wq688y3jl8y528ww2hjz8"))))
4070 (build-system ruby-build-system)
4071 (arguments
4072 '(#:test-target "default"
4073 #:phases (modify-phases %standard-phases
4074 (replace 'replace-git-ls-files
4075 (lambda _
4076 (substitute* "maxitest.gemspec"
4077 (("`git ls-files lib/ bin/ MIT-LICENSE Readme.md`")
4078 "`find lib/ bin/ MIT-LICENSE Readme.md -type f | sort`"))
4079 #t))
4080 (add-before 'check 'remove-version-constraints
4081 (lambda _
4082 ;; Don't use specific versions of dependencies, instead
4083 ;; take whatever is available in Guix.
4084 (delete-file "Gemfile.lock")
4085 #t))
4086 (add-before 'check 'add-mtest-on-PATH
4087 (lambda _
4088 ;; Tests use 'mtest' which is not automatically added on
4089 ;; PATH.
4090 (setenv "PATH" (string-append (getcwd) "/bin:"
4091 (getenv "PATH")))
4092 #t)))))
4093 (native-inputs
4094 `(("ps" ,procps)
4095 ("ruby-bump" ,ruby-bump)
4096 ("ruby-byebug" ,ruby-byebug)
4097 ("ruby-rspec" ,ruby-rspec)
4098 ("ruby-wwtd" ,ruby-wwtd)))
4099 (propagated-inputs
4100 `(("ruby-minitest" ,ruby-minitest)))
4101 (synopsis "Minitest with extra features")
4102 (description
4103 "Maxitest is a wrapper around Minitest with extra functionality such
4104as timeouts, an @command{mtest} executable that can run tests by line
4105number, support for interrupted tests, better backtraces, and more.")
4106 (license license:expat)))
4107
4f2a52ae
RW
4108(define-public ruby-mocha
4109 (package
4110 (name "ruby-mocha")
2fc3cc24 4111 (version "1.11.2")
4f2a52ae
RW
4112 (source (origin
4113 (method url-fetch)
4114 (uri (rubygems-uri "mocha" version))
4115 (sha256
4116 (base32
2fc3cc24 4117 "0hxmkm8qxd04vwj8mqnpyrf2dwy7g1k9zipdfhl4y71cw7ijm9n4"))))
4f2a52ae
RW
4118 (build-system ruby-build-system)
4119 (arguments
4120 `(#:phases
4121 (modify-phases %standard-phases
2fc3cc24
MB
4122 (add-before 'check 'remove-rubocop-dependency
4123 (lambda _
4124 ;; Disable dependency on Rubocop, which is just a linter,
4125 ;; and would introduce a circular dependency.
4126 (substitute* "mocha.gemspec"
4127 ((".*rubocop.*")
4128 "true\n"))
4129 #t)))))
4f2a52ae 4130 (native-inputs
2fc3cc24 4131 `(("ruby-introspection" ,ruby-introspection)))
4f2a52ae
RW
4132 (synopsis "Mocking and stubbing library for Ruby")
4133 (description
4134 "Mocha is a mocking and stubbing library with JMock/SchMock syntax, which
4135allows mocking and stubbing of methods on real (non-mock) classes.")
4136 (home-page "http://gofreerange.com/mocha/docs")
e3febab5
MB
4137 ;; Mocha can be used with either license at the users choice.
4138 (license (list license:expat license:ruby))))
4f2a52ae 4139
cf646acf
CB
4140(define-public ruby-mocha-on-bacon
4141 (package
4142 (name "ruby-mocha-on-bacon")
4143 (version "0.2.3")
4144 (source
4145 (origin
4146 (method url-fetch)
4147 (uri (rubygems-uri "mocha-on-bacon" version))
4148 (sha256
4149 (base32
4150 "1h49b33rq889hn8x3wp9byczl91va16jh1w4d2wyy4yj23icdrcp"))))
4151 (build-system ruby-build-system)
4152 (arguments
4153 ;; rubygems.org release missing tests
4154 '(#:tests? #f))
4155 (propagated-inputs `(("ruby-mocha" ,ruby-mocha)))
4156 (synopsis "Mocha adapter for Bacon")
4157 (description
4158 "This package provides a Mocha adapter for Bacon, allowing you to use the
4159Mocha stubbing and mocking library with Bacon, a small RSpec clone.")
4160 (home-page
4161 "https://github.com/alloy/mocha-on-bacon")
4162 (license license:expat)))
4163
2c84ba7e
RW
4164(define-public ruby-net-ssh
4165 (package
4166 (name "ruby-net-ssh")
5803f872 4167 (version "4.2.0")
2c84ba7e
RW
4168 (source (origin
4169 (method url-fetch)
4170 (uri (rubygems-uri "net-ssh" version))
4171 (sha256
4172 (base32
5803f872 4173 "07c4v97zl1daabmri9zlbzs6yvkl56z1q14bw74d53jdj0c17nhx"))))
2c84ba7e
RW
4174 (build-system ruby-build-system)
4175 (native-inputs
a7938625
MB
4176 `(("bundler" ,bundler)
4177 ("ruby-mocha" ,ruby-mocha)
2c84ba7e
RW
4178 ("ruby-test-unit" ,ruby-test-unit)))
4179 (synopsis "Ruby implementation of the SSH2 client protocol")
4180 (description "@code{Net::SSH} is a pure-Ruby implementation of the SSH2
4181client protocol. It allows you to write programs that invoke and interact
4182with processes on remote servers, via SSH2.")
4183 (home-page "https://github.com/net-ssh/net-ssh")
4184 (license license:expat)))
4185
d38755cb
DM
4186(define-public ruby-net-scp
4187 (package
4188 (name "ruby-net-scp")
4189 ;; The 1.2.1 release would be incompatible with ruby-net-ssh >= 4.
4190 (version "1.2.2.rc2")
4191 (source
4192 (origin
e405f996
TGR
4193 (method git-fetch)
4194 (uri (git-reference
b0e7b699 4195 (url "https://github.com/net-ssh/net-scp")
e405f996
TGR
4196 (commit (string-append "v" version))))
4197 (file-name (git-file-name name version))
d38755cb 4198 (sha256
e405f996 4199 (base32 "1nyn17sy71fn7zs3y6wbgcn35318c10flqgc0582409095x4h0sx"))))
d38755cb
DM
4200 (build-system ruby-build-system)
4201 (native-inputs
4202 `(("bundler" ,bundler)
4203 ("ruby-test-unit" ,ruby-test-unit)
4204 ("ruby-mocha" ,ruby-mocha)))
4205 (propagated-inputs
4206 `(("ruby-net-ssh" ,ruby-net-ssh)))
4207 (synopsis "Pure-Ruby SCP client library")
4208 (description "@code{Net::SCP} is a pure-Ruby implementation of the SCP
4209client protocol.")
4210 (home-page "https://github.com/net-ssh/net-scp")
4211 (license license:expat)))
4212
2206e948
DT
4213(define-public ruby-minitest
4214 (package
4215 (name "ruby-minitest")
88a105c1 4216 (version "5.11.3")
2206e948 4217 (source (origin
e83c6d00
DT
4218 (method url-fetch)
4219 (uri (rubygems-uri "minitest" version))
2206e948
DT
4220 (sha256
4221 (base32
88a105c1 4222 "0icglrhghgwdlnzzp4jf76b0mbc71s80njn5afyfjn4wqji8mqbq"))))
2206e948 4223 (build-system ruby-build-system)
2206e948
DT
4224 (native-inputs
4225 `(("ruby-hoe" ,ruby-hoe)))
4226 (synopsis "Small test suite library for Ruby")
4227 (description "Minitest provides a complete suite of Ruby testing
4228facilities supporting TDD, BDD, mocking, and benchmarking.")
4229 (home-page "https://github.com/seattlerb/minitest")
4230 (license license:expat)))
4231
1db6e09f
RW
4232;; This is the last release of Minitest 4, which is used by some packages.
4233(define-public ruby-minitest-4
4234 (package (inherit ruby-minitest)
4235 (version "4.7.5")
4236 (source (origin
4237 (method url-fetch)
4238 (uri (rubygems-uri "minitest" version))
4239 (sha256
4240 (base32
4241 "03p6iban9gcpcflzp4z901s1hgj9369p6515h967ny6hlqhcf2iy"))))
4242 (arguments
4243 `(#:phases
4244 (modify-phases %standard-phases
4245 (add-after 'unpack 'remove-unsupported-method
4246 (lambda _
4247 (substitute* "Rakefile"
4248 (("self\\.rubyforge_name = .*") ""))
9a7017eb
BW
4249 #t))
4250 (add-after 'build 'exclude-failing-tests
4251 (lambda _
4252 ;; Some tests are failing on Ruby 2.4 due to the deprecation of
4253 ;; Fixnum.
4254 (delete-file "test/minitest/test_minitest_spec.rb")
4255 #t)))))))
1db6e09f 4256
450a3f7f
CB
4257(define-public ruby-minitest-around
4258 (package
4259 (name "ruby-minitest-around")
4260 (version "0.5.0")
4261 (source
4262 (origin
4263 (method url-fetch)
4264 (uri (rubygems-uri "minitest-around" version))
4265 (sha256
4266 (base32
4267 "15ywnqx0719jl9c25yqfshmwcir57i5f4hr1ra9v9vay9ylcwndr"))))
4268 (build-system ruby-build-system)
4269 (arguments
4270 '(#:phases
4271 (modify-phases %standard-phases
4272 (add-after 'extract-gemspec 'remove-unnecessary-dependency-versions
4273 (lambda _
4274 (substitute* "minitest-around.gemspec"
4275 (("%q<cucumber>.*") "%q<cucumber>, [\">= 0\"])\n"))
4276 #t)))))
4277 (propagated-inputs
4278 `(("ruby-minitest" ,ruby-minitest)))
4279 (native-inputs
4280 `(("bundler" ,bundler)
4281 ("ruby-cucumber" ,ruby-cucumber)
4282 ("ruby-bump" ,ruby-bump)
4283 ("ruby-test-construct" ,ruby-test-construct)))
4284 (synopsis "Run code around tests in Minitest")
4285 (description
4286 "This library provides a way to run code around tests in Minitest,
4287written using either the unit test or spec style.")
4288 (home-page "https://github.com/splattael/minitest-around")
4289 (license license:expat)))
4290
35130835
DT
4291(define-public ruby-minitest-sprint
4292 (package
4293 (name "ruby-minitest-sprint")
4294 (version "1.1.0")
4295 (source (origin
e83c6d00
DT
4296 (method url-fetch)
4297 (uri (rubygems-uri "minitest-sprint" version))
35130835
DT
4298 (sha256
4299 (base32
e83c6d00 4300 "179d6pj56l9xzm46fqsqj10mzjkr1f9fv4cxa8wvchs97hqz33w1"))))
35130835 4301 (build-system ruby-build-system)
35130835
DT
4302 (native-inputs
4303 `(("ruby-hoe" ,ruby-hoe)
4304 ("ruby-minitest" ,ruby-minitest)))
4305 (synopsis "Fast test suite runner for minitest")
4306 (description "Minitest-sprint is a test runner for minitest that makes it
4307easier to re-run individual failing tests.")
4308 (home-page "https://github.com/seattlerb/minitest-sprint")
4309 (license license:expat)))
4310
0808e361
DT
4311(define-public ruby-minitest-bacon
4312 (package
4313 (name "ruby-minitest-bacon")
6f9652b0 4314 (version "1.0.3")
0808e361 4315 (source (origin
e83c6d00
DT
4316 (method url-fetch)
4317 (uri (rubygems-uri "minitest-bacon" version))
0808e361
DT
4318 (sha256
4319 (base32
6f9652b0 4320 "0zhdwcl6bgha61qiyfvr7zs7ywaxc33wmj9xhxl8jdmpdvifvfaj"))))
0808e361 4321 (build-system ruby-build-system)
0808e361
DT
4322 (native-inputs
4323 `(("ruby-hoe" ,ruby-hoe)))
4324 (inputs
4325 `(("ruby-minitest" ,ruby-minitest)))
4326 (synopsis "Bacon compatibility library for minitest")
4327 (description "Minitest-bacon extends minitest with bacon-like
4328functionality, making it easier to migrate test suites from bacon to minitest.")
4329 (home-page "https://github.com/seattlerb/minitest-bacon")
4330 (license license:expat)))
4331
39dc0eb5
BW
4332(define-public ruby-minitest-focus
4333 (package
4334 (name "ruby-minitest-focus")
4335 (version "1.1.2")
4336 (source
4337 (origin
4338 (method url-fetch)
4339 (uri (rubygems-uri "minitest-focus" version))
4340 (sha256
4341 (base32
4342 "1zgjslp6d7dzcn8smj595idymgd5j603p9g2jqkfgi28sqbhz6m0"))))
4343 (build-system ruby-build-system)
4344 (propagated-inputs
4345 `(("ruby-minitest" ,ruby-minitest)))
4346 (native-inputs
4347 `(("ruby-hoe" ,ruby-hoe)))
4348 (synopsis "Allows a few specific tests to be focused on")
4349 (description
4350 "@code{minitest-focus} gives the ability focus on a few tests with ease
4351without having to use command-line arguments. It introduces a @code{focus}
4352class method for use in testing classes, specifying that the next defined test
4353is to be run.")
4354 (home-page "https://github.com/seattlerb/minitest-focus")
4355 (license license:expat)))
4356
99fc5cd5
BW
4357(define-public ruby-minitest-pretty-diff
4358 ;; Use git reference because gem is out of date and does not contain testing
4359 ;; script. There are no releases on GitHub.
4360 (let ((commit "11f32e930f574225432f42e5e1ef6e7471efe572"))
4361 (package
4362 (name "ruby-minitest-pretty-diff")
4363 (version (string-append "0.1-1." (string-take commit 8)))
4364 (source (origin
4365 (method git-fetch)
4366 (uri (git-reference
b0e7b699 4367 (url "https://github.com/adammck/minitest-pretty_diff")
99fc5cd5
BW
4368 (commit commit)))
4369 (file-name (string-append name "-" version "-checkout"))
4370 (sha256
4371 (base32
4372 "13y5dhmcckhzd83gj1nfwh41iykbjcm2w7y4pr6j6rpqa5as122r"))))
4373 (build-system ruby-build-system)
4374 (arguments
4375 `(#:phases
4376 (modify-phases %standard-phases
4377 (replace 'check
4378 (lambda _
9923d5a4 4379 (invoke "script/test"))))))
99fc5cd5
BW
4380 (native-inputs
4381 `(("bundler" ,bundler)
4382 ("ruby-turn" ,ruby-turn)))
4383 (synopsis "Pretty-print hashes and arrays in MiniTest")
4384 (description
4385 "@code{minitest-pretty_diff} monkey-patches
4386@code{MiniTest::Assertions#mu_pp} to pretty-print hashes and arrays before
4387diffing them. This makes it easier to spot differences between nested
4388structures when tests fail.")
4389 (home-page "https://github.com/adammck/minitest-pretty_diff")
4390 (license license:expat))))
4391
685d0d2f
BW
4392(define-public ruby-minitest-moar
4393 (package
4394 (name "ruby-minitest-moar")
4395 (version "0.0.4")
4396 (source
4397 (origin
4398 (method url-fetch)
4399 (uri (rubygems-uri "minitest-moar" version))
4400 (sha256
4401 (base32
4402 "0nb83blrsab92gcy6nfpw39njys7zisia8pw4igzzfzfl51cis0x"))))
4403 (build-system ruby-build-system)
4404 (arguments
4405 `(#:phases
4406 (modify-phases %standard-phases
4407 (add-before 'check 'clean-dependencies
4408 (lambda _
4409 ;; Remove all gems defined in the Gemfile because these are not
4410 ;; truly needed.
4411 (substitute* "Gemfile"
4412 (("gem .*") ""))
4413 ;; Remove byebug as not needed to run tests.
4414 (substitute* "test/test_helper.rb"
4415 (("require 'byebug'") ""))
4416 #t)))))
4417 (native-inputs
4418 `(("bundler" ,bundler)
4419 ("ruby-minitest" ,ruby-minitest)))
4420 (synopsis "Extra features and changes to MiniTest")
4421 (description "@code{MiniTest Moar} add some additional features and
4422changes some default behaviours in MiniTest. For instance, Moar replaces the
4423MiniTest @code{Object#stub} with a global @code{stub} method.")
4424 (home-page "https://github.com/dockyard/minitest-moar")
4425 (license license:expat)))
4426
e07ef1d6
BW
4427(define-public ruby-minitest-bonus-assertions
4428 (package
4429 (name "ruby-minitest-bonus-assertions")
c9e261b7 4430 (version "3.0")
e07ef1d6
BW
4431 (source
4432 (origin
4433 (method url-fetch)
4434 (uri (rubygems-uri "minitest-bonus-assertions" version))
4435 (sha256
4436 (base32
c9e261b7 4437 "1hbq9jk904xkz868yha1bqcm6azm7kmjsll2k4pn2nrcib508h2a"))))
e07ef1d6
BW
4438 (build-system ruby-build-system)
4439 (arguments
4440 `(#:phases
4441 (modify-phases %standard-phases
4442 (add-before 'check 'clean-dependencies
4443 (lambda _
4444 ;; Remove unneeded require statement that would entail another
4445 ;; dependency.
4446 (substitute* "test/minitest_config.rb"
4447 (("require 'minitest/bisect'") ""))
4448 #t)))))
4449 (native-inputs
4450 `(("ruby-hoe" ,ruby-hoe)
4451 ("ruby-minitest-pretty-diff" ,ruby-minitest-pretty-diff)
4452 ("ruby-minitest-focus" ,ruby-minitest-focus)
4453 ("ruby-minitest-moar" ,ruby-minitest-moar)))
4454 (synopsis "Bonus assertions for @code{Minitest}")
4455 (description
4456 "Minitest bonus assertions provides extra MiniTest assertions. For
4457instance, it provides @code{assert_true}, @code{assert_false} and
4458@code{assert_set_equal}.")
4459 (home-page "https://github.com/halostatue/minitest-bonus-assertions")
4460 (license license:expat)))
4461
e2c9a9cc
CB
4462(define-public ruby-minitest-reporters
4463 (package
4464 (name "ruby-minitest-reporters")
4465 (version "1.3.6")
4466 (source
4467 (origin
4468 (method url-fetch)
4469 (uri (rubygems-uri "minitest-reporters" version))
4470 (sha256
4471 (base32
4472 "1a3das80rwgys5rj48i5ly144nvszyqyi748bk9bss74jblcf5ay"))))
4473 (build-system ruby-build-system)
4474 (arguments
4475 '(#:phases
4476 (modify-phases %standard-phases
4477 ;; Remove the requirement on Rubocop, as it isn't useful to run, and
4478 ;; including it as an input can lead to circular dependencies.
4479 (add-after 'unpack 'remove-rubocop-from-Rakefile
4480 (lambda _
4481 (substitute* "Rakefile"
4482 (("require 'rubocop/rake\\_task'") "")
4483 (("RuboCop::RakeTask\\.new\\(:rubocop\\)") "[].each"))
4484 #t))
4485 (add-after 'extract-gemspec 'remove-rubocop-from-gemspec
4486 (lambda _
4487 (substitute* "minitest-reporters.gemspec"
4488 ((".*%q<rubocop>.*") "\n"))
4489 #t)))))
4490 (propagated-inputs
4491 `(("ruby-ansi" ,ruby-ansi)
4492 ("ruby-builder" ,ruby-builder)
4493 ("ruby-minitest" ,ruby-minitest)
4494 ("ruby-progressbar" ,ruby-progressbar)))
4495 (native-inputs
4496 `(("bundler" ,bundler)
4497 ("ruby-maruku" ,ruby-maruku)))
4498 (synopsis "Enhanced reporting for Minitest tests")
4499 (description
4500 "@code{minitest/reporters} provides a custom Minitest runner to improve
4501how the test state is reported. A number of different reporters are
4502available, including a spec reporter, progress bar reporter, a HTML
4503reporter.")
4504 (home-page "https://github.com/kern/minitest-reporters")
4505 (license license:expat)))
4506
e582fa93
BW
4507(define-public ruby-minitest-rg
4508 (package
4509 (name "ruby-minitest-rg")
4510 (version "5.2.0")
4511 (source
4512 (origin
4513 (method url-fetch)
4514 (uri (rubygems-uri "minitest-rg" version))
4515 (sha256
4516 (base32
4517 "0sq509ax1x62rd0w10b0hcydcxyk5bxxr3fwrgxv02r8drq2r354"))))
4518 (build-system ruby-build-system)
4519 (arguments
4520 ;; Some tests fail even outside Guix, so disable tests.
4521 ;; https://github.com/blowmage/minitest-rg/issues/12
4522 ;; https://github.com/blowmage/minitest-rg/pull/13
4523 `(#:tests? #f))
4524 (propagated-inputs
4525 `(("ruby-minitest" ,ruby-minitest)))
4526 (synopsis "Coloured output for Minitest")
4527 (description
4528 "@code{minitest-rg} changes the colour of the output from Minitest.")
8e486e80 4529 (home-page "https://blowmage.com/minitest-rg/")
e582fa93
BW
4530 (license license:expat)))
4531
ff9d33a9
CB
4532(define-public ruby-minitest-global-expectations
4533 (package
4534 (name "ruby-minitest-global-expectations")
4535 (version "1.0.1")
4536 (source
4537 (origin
4538 (method url-fetch)
4539 (uri (rubygems-uri "minitest-global_expectations"
4540 version))
4541 (sha256
4542 (base32
4543 "1pp3k2608spj4kvqy2y16hs18an917g6vwgvphrfhjviac83090x"))))
4544 (build-system ruby-build-system)
4545 (propagated-inputs
4546 `(("ruby-minitest" ,ruby-minitest)))
4547 (synopsis "Adjust minitest behaviour for calling expectation methods")
4548 (description
4549 "Minitest-global_expectations allows continued use of expectation methods
4550on all objects. Calling expectation methods on all objects was deprecated in
4551minitest 5.12, and is planned to be removed from minitest 6.")
4552 (home-page "https://github.com/jeremyevans/minitest-global_expectations")
4553 (license license:expat)))
4554
2a96dbe6
BW
4555(define-public ruby-minitest-hooks
4556 (package
4557 (name "ruby-minitest-hooks")
eaaf8b12 4558 (version "1.4.2")
2a96dbe6
BW
4559 (source
4560 (origin
4561 (method url-fetch)
4562 (uri (rubygems-uri "minitest-hooks" version))
4563 (sha256
4564 (base32
eaaf8b12 4565 "0lnpvzijbjrvxjc43d155jnbk2mkfshrz22an711wh004scavlzc"))))
2a96dbe6
BW
4566 (build-system ruby-build-system)
4567 (arguments
4568 '(#:test-target "spec"))
4569 (native-inputs
4570 `(("ruby-sequel" ,ruby-sequel)
4571 ("ruby-sqlite3" ,ruby-sqlite3)))
4572 (synopsis "Hooks for the minitest framework")
4573 (description
4574 "Minitest-hooks adds @code{around}, @code{before_all}, @code{after_all},
4575@code{around_all} hooks for Minitest. This allows, for instance, running each
4576suite of specs inside a database transaction, running each spec inside its own
4577savepoint inside that transaction. This can significantly speed up testing
4578for specs that share expensive database setup code.")
7bf837fd 4579 (home-page "https://github.com/jeremyevans/minitest-hooks")
2a96dbe6
BW
4580 (license license:expat)))
4581
afbbdf77
DT
4582(define-public ruby-daemons
4583 (package
4584 (name "ruby-daemons")
f03153db 4585 (version "1.2.5")
afbbdf77
DT
4586 (source (origin
4587 (method url-fetch)
e83c6d00 4588 (uri (rubygems-uri "daemons" version))
afbbdf77
DT
4589 (sha256
4590 (base32
f03153db 4591 "15smbsg0gxb7nf0nrlnplc68y0cdy13dm6fviavpmw7c630sring"))))
afbbdf77
DT
4592 (build-system ruby-build-system)
4593 (arguments
4594 `(#:tests? #f)) ; no test suite
4595 (synopsis "Daemonize Ruby programs")
4596 (description "Daemons provides a way to wrap existing Ruby scripts to be
4597run as a daemon and to be controlled by simple start/stop/restart commands.")
4598 (home-page "https://github.com/thuehlinger/daemons")
4599 (license license:expat)))
b03eb6ac
CB
4600
4601(define-public ruby-data_uri
4602 (package
4603 (name "ruby-data_uri")
4604 (version "0.1.0")
4605 (source
4606 (origin
4607 (method url-fetch)
4608 (uri (rubygems-uri "data_uri" version))
4609 (sha256
4610 (base32
4611 "0fzkxgdxrlbfl4537y3n9mjxbm28kir639gcw3x47ffchwsgdcky"))))
4612 (build-system ruby-build-system)
4613 (synopsis "URI class for parsing data URIs")
4614 (description
4615 "Data @acronym{URI, universal resource idenfitier}s allow resources to be
4616embedded inside a URI. The URI::Data class provides support for parsing these
4617URIs using the normal URI.parse method.")
4618 (home-page "https://github.com/dball/data_uri")
4619 (license license:expat)))
66e20863 4620
72c785f9
MB
4621(define-public ruby-deep-merge
4622 (package
4623 (name "ruby-deep-merge")
4624 (version "1.2.1")
4625 (home-page "https://github.com/danielsdeleo/deep_merge")
4626 ;; The Rubygem source does not contain the gemspec required for tests.
4627 (source (origin
4628 (method git-fetch)
4629 (uri (git-reference (url home-page) (commit version)))
4630 (file-name (git-file-name name version))
4631 (sha256
4632 (base32
4633 "0c9rk23ilhc0n4489y6lda2wzphpzh6ish6fahlbpjhxn82wb931"))))
4634 (build-system ruby-build-system)
4635 (native-inputs
4636 `(("ruby-minitest" ,ruby-minitest)))
4637 (synopsis "Recursively merge hashes")
4638 (description
4639 "Deep Merge is a set of utility functions for @code{Hash}. It permits
4640you to merge elements inside a hash together recursively.")
4641 (license license:expat)))
4642
66e20863
DT
4643(define-public ruby-git
4644 (package
4645 (name "ruby-git")
ceaff59e 4646 (version "1.3.0")
66e20863
DT
4647 (source (origin
4648 (method url-fetch)
e83c6d00 4649 (uri (rubygems-uri "git" version))
66e20863
DT
4650 (sha256
4651 (base32
ceaff59e 4652 "1waikaggw7a1d24nw0sh8fd419gbf7awh000qhsf411valycj6q3"))))
66e20863
DT
4653 (build-system ruby-build-system)
4654 (arguments
e83c6d00
DT
4655 `(#:tests? #f ; no tests
4656 #:phases (modify-phases %standard-phases
4657 (add-after 'install 'patch-git-binary
4658 (lambda* (#:key inputs outputs #:allow-other-keys)
66e20863
DT
4659 ;; Make the default git binary an absolute path to the
4660 ;; store.
e83c6d00
DT
4661 (let ((git (string-append (assoc-ref inputs "git")
4662 "/bin/git"))
3cb3fa67
CB
4663 (config (string-append
4664 (assoc-ref outputs "out")
4665 "/lib/ruby/vendor_ruby/gems/git-"
4666 ,version "/lib/git/config.rb")))
e83c6d00 4667 (substitute* (list config)
66e20863
DT
4668 (("'git'")
4669 (string-append "'" git "'")))
e83c6d00 4670 #t))))))
66e20863
DT
4671 (inputs
4672 `(("git" ,git)))
4673 (synopsis "Ruby wrappers for Git")
4674 (description "Ruby/Git is a Ruby library that can be used to create, read
4675and manipulate Git repositories by wrapping system calls to the git binary.")
4676 (home-page "https://github.com/schacon/ruby-git")
4677 (license license:expat)))
71d3e2c2 4678
95598153
MB
4679(define-public ruby-hocon
4680 (package
4681 (name "ruby-hocon")
fd13ec5f 4682 (version "1.3.1")
95598153
MB
4683 (home-page "https://github.com/puppetlabs/ruby-hocon")
4684 (source (origin
4685 (method git-fetch)
4686 (uri (git-reference (url home-page) (commit version)))
4687 (file-name (git-file-name name version))
4688 (sha256
4689 (base32
fd13ec5f 4690 "172hh2zr0n9nnszv0qvlgwszgkrq84yahrg053m68asy79zpmbqr"))))
95598153
MB
4691 (build-system ruby-build-system)
4692 (arguments
4693 '(#:phases (modify-phases %standard-phases
4694 (replace 'check
4695 (lambda* (#:key tests? #:allow-other-keys)
4696 (if tests?
4697 (invoke "rspec")
4698 (format #t "test suite not run~%"))
4699 #t)))))
4700 (native-inputs
4701 `(("bundler" ,bundler)
4702 ("ruby-rspec" ,ruby-rspec)))
4703 (synopsis "HOCON config library")
4704 (description
4705 "This package provides Ruby support for the @acronym{HOCON,
4706Human-Optimized Config Object Notation} configuration file format. It
4707supports parsing and modifying HOCON and JSON files, and rendering parsed
4708objects back to a @code{String}.")
4709 (license license:asl2.0)))
4710
71d3e2c2
DT
4711(define-public ruby-slop
4712 (package
4713 (name "ruby-slop")
d14e5eaa 4714 (version "4.5.0")
71d3e2c2
DT
4715 (source (origin
4716 (method url-fetch)
e83c6d00 4717 (uri (rubygems-uri "slop" version))
71d3e2c2
DT
4718 (sha256
4719 (base32
d14e5eaa 4720 "0bfm8535g0rkn9cbjndkckf0f7a3wj0rg4rqhrpsgxnbfdf2lm0p"))))
71d3e2c2
DT
4721 (build-system ruby-build-system)
4722 (native-inputs
4723 `(("ruby-minitest" ,ruby-minitest)))
4724 (synopsis "Ruby command line option parser")
4725 (description "Slop provides a Ruby domain specific language for gathering
4726options and parsing command line flags.")
4727 (home-page "https://github.com/leejarvis/slop")
4728 (license license:expat)))
e778a549 4729
5337f8b9
DT
4730(define-public ruby-slop-3
4731 (package (inherit ruby-slop)
4732 (version "3.6.0")
4733 (source (origin
4734 (method url-fetch)
4735 (uri (rubygems-uri "slop" version))
4736 (sha256
4737 (base32
4738 "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n"))))))
4739
ca914b5b
CB
4740(define-public ruby-multi-xml
4741 (package
4742 (name "ruby-multi-xml")
4743 (version "0.6.0")
4744 (source
4745 (origin
4746 (method url-fetch)
4747 (uri (rubygems-uri "multi_xml" version))
4748 (sha256
4749 (base32
4750 "0lmd4f401mvravi1i1yq7b2qjjli0yq7dfc4p1nj5nwajp7r6hyj"))))
4751 (build-system ruby-build-system)
4752 (arguments
4753 '(#:tests? #f)) ; No included tests
4754 (synopsis "Swappable XML backends for Ruby")
4755 (description
4756 "@code{MultiXml} provides swappable XML backends utilizing either LibXML,
4757Nokogiri, Ox, or REXML.")
4758 (home-page "https://github.com/sferik/multi_xml")
4759 (license license:expat)))
4760
e778a549
DT
4761(define-public ruby-multipart-post
4762 (package
4763 (name "ruby-multipart-post")
4764 (version "2.0.0")
4765 (source (origin
4766 (method url-fetch)
e83c6d00 4767 (uri (rubygems-uri "multipart-post" version))
e778a549
DT
4768 (sha256
4769 (base32
e83c6d00 4770 "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x"))))
e778a549
DT
4771 (build-system ruby-build-system)
4772 (native-inputs
4773 `(("bundler" ,bundler)))
4774 (synopsis "Multipart POST library for Ruby")
4775 (description "Multipart-Post Adds multipart POST capability to Ruby's
4776net/http library.")
4777 (home-page "https://github.com/nicksieger/multipart-post")
4778 (license license:expat)))
f8da3af0 4779
9a97e7ce
CB
4780(define-public ruby-multi-json
4781 (package
4782 (name "ruby-multi-json")
1b6f5475 4783 (version "1.13.1")
9a97e7ce
CB
4784 (source
4785 (origin
b872b47b 4786 (method git-fetch)
1b6f5475
BW
4787 ;; Tests are not distributed at rubygems.org so download from GitHub
4788 ;; instead.
b872b47b
EF
4789 (uri (git-reference
4790 (url "https://github.com/intridea/multi_json")
4791 (commit (string-append "v" version))))
4792 (file-name (git-file-name name version))
9a97e7ce
CB
4793 (sha256
4794 (base32
b872b47b 4795 "18wpb6p01rrkl4v33byh70vxj2a5jxkfxzv3pz8z6pssy4ymwkm4"))))
9a97e7ce
CB
4796 (build-system ruby-build-system)
4797 (arguments
1b6f5475
BW
4798 `(#:phases
4799 (modify-phases %standard-phases
4800 (add-after 'unpack 'remove-signing-key-reference
4801 (lambda _
4802 (substitute* "multi_json.gemspec"
4803 ((".*spec.signing_key.*") ""))
4804 #t)))))
4805 (native-inputs
4806 `(("bundler" ,bundler)
4807 ("ruby-rspec" ,ruby-rspec)
4808 ("ruby-yard" ,ruby-yard)
4809 ("ruby-json-pure" ,ruby-json-pure)
4810 ("ruby-oj" ,ruby-oj)
4811 ("ruby-yajl-ruby" ,ruby-yajl-ruby)))
9a97e7ce
CB
4812 (synopsis "Common interface to multiple JSON libraries for Ruby")
4813 (description
4814 "This package provides a common interface to multiple JSON libraries,
4815including Oj, Yajl, the JSON gem (with C-extensions), the pure-Ruby JSON gem,
4816NSJSONSerialization, gson.rb, JrJackson, and OkJson.")
1b6f5475 4817 (home-page "https://github.com/intridea/multi_json")
9a97e7ce
CB
4818 (license license:expat)))
4819
5edef88b
BW
4820(define-public ruby-multi-test
4821 (package
4822 (name "ruby-multi-test")
4823 (version "0.1.2")
4824 (source
4825 (origin
4826 (method url-fetch)
4827 (uri (rubygems-uri "multi_test" version))
4828 (sha256
4829 (base32
4830 "1sx356q81plr67hg16jfwz9hcqvnk03bd9n75pmdw8pfxjfy1yxd"))))
4831 (build-system ruby-build-system)
4832 (arguments
4833 '(;; Tests require different sets of specific gem versions to be available,
4834 ;; and there is no gemfile that specifies the newest versions of
4835 ;; dependencies to be tested.
4836 #:tests? #f))
4837 (synopsis
4838 "Interface to testing libraries loaded into a running Ruby process")
4839 (description
4840 "@code{multi_test} provides a uniform interface onto whatever testing
4841libraries that have been loaded into a running Ruby process to help control
4842rogue test/unit/autorun requires.")
4843 (home-page "https://github.com/cucumber/multi_test")
9a97e7ce
CB
4844 (license license:expat)))
4845
f8da3af0
DT
4846(define-public ruby-arel
4847 (package
4848 (name "ruby-arel")
aecd533d 4849 (version "9.0.0")
f8da3af0
DT
4850 (source (origin
4851 (method url-fetch)
4852 (uri (rubygems-uri "arel" version))
4853 (sha256
4854 (base32
aecd533d 4855 "1jk7wlmkr61f6g36w9s2sn46nmdg6wn2jfssrhbhirv5x9n95nk0"))))
f8da3af0
DT
4856 (build-system ruby-build-system)
4857 (arguments '(#:tests? #f)) ; no tests
4858 (home-page "https://github.com/rails/arel")
4859 (synopsis "SQL AST manager for Ruby")
6f23e2fb
TGR
4860 (description "Arel is an SQL @dfn{Abstract Syntax Tree} (AST) manager for
4861Ruby. It simplifies the generation of complex SQL queries and adapts to
4862various relational database implementations.")
f8da3af0 4863 (license license:expat)))
616eaead 4864
554bf4f6
CB
4865(define-public ruby-marcel
4866 (package
4867 (name "ruby-marcel")
4868 (version "0.3.3")
4869 (source
4870 (origin
4871 (method url-fetch)
4872 (uri (rubygems-uri "marcel" version))
4873 (sha256
4874 (base32
4875 "1nxbjmcyg8vlw6zwagf17l9y2mwkagmmkg95xybpn4bmf3rfnksx"))))
4876 (build-system ruby-build-system)
4877 (arguments
4878 '(;; No included tests
4879 #:tests? #f))
4880 (propagated-inputs
4881 `(("ruby-mimemagic" ,ruby-mimemagic)))
4882 (synopsis "MIME type detection using magic numbers, filenames and extensions")
4883 (description
4884 "@code{marcel} provides @acronym{MIME, Multipurpose Internet Mail
4885Extensions} type detection using magic numbers, filenames, and extensions")
4886 (home-page "https://github.com/basecamp/marcel")
4887 (license license:expat)))
4888
616eaead 4889(define-public ruby-minitar
bfaf8efd
BW
4890 ;; We package from the GitHub source to fix the security issue reported at
4891 ;; https://github.com/halostatue/minitar/issues/16.
4892 (let ((commit "e25205ecbb6277ae8a3df1e6a306d7ed4458b6e4"))
4893 (package
4894 (name "ruby-minitar")
4895 (version (string-append "0.5.4-1." (string-take commit 8)))
4896 (source
4897 (origin
4898 (method git-fetch)
4899 (uri (git-reference
b0e7b699 4900 (url "https://github.com/halostatue/minitar")
bfaf8efd
BW
4901 (commit commit)))
4902 (file-name (string-append name "-" version "-checkout"))
4903 (sha256
4904 (base32
4905 "1iywfx07jgjqcmixzkxk9zdwfmij1fyg1z2jlwzj15cj7s99qlfv"))))
4906 (build-system ruby-build-system)
4907 (arguments
4908 '(#:tests? #f)) ; missing a gemspec
4909 (synopsis "Ruby library and utility for handling tar archives")
4910 (description
4911 "Archive::Tar::Minitar is a pure-Ruby library and command-line utility
616eaead 4912that provides the ability to deal with POSIX tar archive files.")
bfaf8efd
BW
4913 (home-page "http://www.github.com/atoulme/minitar")
4914 (license (list license:gpl2+ license:ruby)))))
bea1c0e2
DT
4915
4916(define-public ruby-mini-portile
4917 (package
4918 (name "ruby-mini-portile")
4919 (version "0.6.2")
4920 (source
4921 (origin
4922 (method url-fetch)
4923 (uri (rubygems-uri "mini_portile" version))
4924 (sha256
4925 (base32
4926 "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w"))))
4927 (build-system ruby-build-system)
4928 (arguments
4929 '(#:tests? #f)) ; tests require network access
4930 (synopsis "Ports system for Ruby developers")
4931 (description "Mini-portile is a port/recipe system for Ruby developers.
4932It provides a standard way to compile against specific versions of libraries
4933to reproduce user environments.")
7bf837fd 4934 (home-page "https://github.com/flavorjones/mini_portile")
bea1c0e2 4935 (license license:expat)))
e920bfca 4936
d000fc92
BW
4937(define-public ruby-mini-portile-2
4938 (package (inherit ruby-mini-portile)
a88ac044 4939 (version "2.4.0")
d000fc92
BW
4940 (source (origin
4941 (method url-fetch)
4942 (uri (rubygems-uri "mini_portile2" version))
4943 (sha256
4944 (base32
a88ac044 4945 "15zplpfw3knqifj9bpf604rb3wc1vhq6363pd6lvhayng8wql5vy"))))))
d000fc92 4946
e920bfca
DT
4947(define-public ruby-nokogiri
4948 (package
4949 (name "ruby-nokogiri")
62cc7344 4950 (version "1.10.9")
e920bfca
DT
4951 (source (origin
4952 (method url-fetch)
4953 (uri (rubygems-uri "nokogiri" version))
4954 (sha256
4955 (base32
62cc7344 4956 "12j76d0bp608932xkzmfi638c7aqah57l437q8494znzbj610qnm"))))
e920bfca
DT
4957 (build-system ruby-build-system)
4958 (arguments
4959 ;; Tests fail because Nokogiri can only test with an installed extension,
4960 ;; and also because many test framework dependencies are missing.
7b01f250 4961 `(#:tests? #f
e920bfca
DT
4962 #:gem-flags (list "--" "--use-system-libraries"
4963 (string-append "--with-xml2-include="
4964 (assoc-ref %build-inputs "libxml2")
5e7f1b0b
BW
4965 "/include/libxml2" ))
4966 #:phases
4967 (modify-phases %standard-phases
7b01f250
BW
4968 (add-before 'build 'patch-extconf
4969 ;; 'pkg-config' is not included in the GEM_PATH during
4970 ;; installation, so we add it directly to the load path.
4971 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 4972 (let* ((pkg-config (assoc-ref inputs "ruby-pkg-config")))
7b01f250
BW
4973 (substitute* "ext/nokogiri/extconf.rb"
4974 (("gem 'pkg-config'.*")
4975 (string-append "$:.unshift '"
3cb3fa67 4976 pkg-config "/lib/ruby/vendor_ruby"
7b01f250
BW
4977 "/gems/pkg-config-"
4978 ,(package-version ruby-pkg-config)
4979 "/lib'\n"))))
5e7f1b0b 4980 #t)))))
e920bfca 4981 (native-inputs
7b01f250 4982 `(("ruby-hoe" ,ruby-hoe)))
e920bfca
DT
4983 (inputs
4984 `(("zlib" ,zlib)
4985 ("libxml2" ,libxml2)
4986 ("libxslt" ,libxslt)))
4987 (propagated-inputs
7b01f250
BW
4988 `(("ruby-mini-portile" ,ruby-mini-portile-2)
4989 ("ruby-pkg-config" ,ruby-pkg-config)))
e920bfca
DT
4990 (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
4991 (description "Nokogiri (鋸) parses and searches XML/HTML, and features
4992both CSS3 selector and XPath 1.0 support.")
4993 (home-page "http://www.nokogiri.org/")
4994 (license license:expat)))
30b0b725
DT
4995
4996(define-public ruby-method-source
4997 (package
4998 (name "ruby-method-source")
ec08f469 4999 (version "1.0.0")
30b0b725
DT
5000 (source
5001 (origin
5002 (method url-fetch)
5003 (uri (rubygems-uri "method_source" version))
5004 (sha256
5005 (base32
ec08f469 5006 "1pnyh44qycnf9mzi1j6fywd5fkskv3x7nmsqrrws0rjn5dd4ayfp"))))
30b0b725 5007 (build-system ruby-build-system)
c8355037
BW
5008 (arguments
5009 `(#:test-target "spec"))
30b0b725 5010 (native-inputs
c8355037 5011 `(("ruby-rspec" ,ruby-rspec)
30b0b725
DT
5012 ("git" ,git)))
5013 (synopsis "Retrieve the source code for Ruby methods")
5014 (description "Method_source retrieves the source code for Ruby methods.
5015Additionally, it can extract source code from Proc and Lambda objects or just
5016extract comments.")
5017 (home-page "https://github.com/banister/method_source")
5018 (license license:expat)))
2e3fdea4
DT
5019
5020(define-public ruby-coderay
5021 (package
5022 (name "ruby-coderay")
5cf0997a 5023 (version "1.1.2")
2e3fdea4
DT
5024 (source
5025 (origin
5026 (method url-fetch)
5027 (uri (rubygems-uri "coderay" version))
5028 (sha256
5029 (base32
5cf0997a 5030 "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y"))))
2e3fdea4
DT
5031 (build-system ruby-build-system)
5032 (arguments
5033 '(#:tests? #f)) ; missing test files
5034 (synopsis "Ruby syntax highlighting library")
5035 (description "Coderay is a Ruby library that provides syntax highlighting
5036for select languages.")
5037 (home-page "http://coderay.rubychan.de")
5038 (license license:expat)))
96e76083 5039
f9083965
MC
5040(define-public ruby-cuke-modeler
5041 (package
5042 (name "ruby-cuke-modeler")
5043 (version "3.1.0")
5044 (source
5045 (origin
5046 (method url-fetch)
5047 (uri (rubygems-uri "cuke_modeler" version))
5048 (sha256
5049 (base32
5050 "19smj3g3wvz0203l549sadpcxgh0ir350a6k78gq0bmlv9cchmjb"))))
5051 (build-system ruby-build-system)
5052 (arguments `(#:tests? #f)) ;no test suite in gem
5053 (propagated-inputs
5054 `(("ruby-gherkin" ,ruby-gherkin)))
5055 (synopsis "Gherkin test suite analysis tool")
5056 (description "CukeModeler facilitates modeling a test suite that is
5057written in Gherkin (e.g. Cucumber, SpecFlow, Lettuce, etc.). It does this by
5058providing an abstraction layer on top of the Abstract Syntax Tree (AST) that
5059the @code{cucumber-gherkin} generates when parsing features, as well as
5060providing models for feature files and directories in order to be able to have
5061a fully traversable model tree of a test suite's structure. These models can
5062then be analyzed or manipulated more easily than the underlying AST layer.")
5063 (home-page "https://github.com/enkessler/cuke_modeler")
5064 (license license:expat)))
5065
2156cc9c
MB
5066(define-public ruby-parallel-tests
5067 (package
5068 (name "ruby-parallel-tests")
8a01e2fa 5069 (version "3.0.0")
2156cc9c
MB
5070 (home-page "https://github.com/grosser/parallel_tests")
5071 (source (origin
5072 (method git-fetch)
5073 (uri (git-reference
5074 (url home-page)
5075 (commit (string-append "v" version))))
5076 (file-name (string-append name version))
5077 (sha256
5078 (base32
8a01e2fa 5079 "08a6ndqn2dqacmc7yg48k0dh2rfrynvhkd5hiay16dl9m1r9q8pz"))))
2156cc9c
MB
5080 (build-system ruby-build-system)
5081 (arguments
5082 '(#:test-target "default"
5083 #:phases (modify-phases %standard-phases
5084 (add-after 'patch-source-shebangs 'patch-shell-invokations
5085 (lambda _
5086 (substitute* '("lib/parallel_tests/tasks.rb"
5087 "spec/parallel_tests/tasks_spec.rb")
5088 (("/bin/sh") (which "sh"))
5089 (("/bin/bash") (which "bash")))
5090 #t))
5091 (add-before 'check 'remove-version-constraints
5092 (lambda _
5093 ;; Remove hard coded version constraints, instead just
5094 ;; use whatever versions are available in Guix.
5095 (delete-file "Gemfile.lock")
5096 (substitute* "Gemfile"
5097 (("'minitest',.*")
5098 "'minitest'\n")
5099 (("'cucumber',.*")
5100 "'cucumber'\n"))
5101 #t))
5102 (add-before 'check 'disable-rails-test
5103 (lambda _
5104 ;; XXX: This test attempts to download and run the test
5105 ;; suites of multiple Rails versions(!) directly.
5106 (delete-file "spec/rails_spec.rb")
5107 #t))
5108 (add-before 'check 'set-HOME
5109 (lambda _
5110 ;; Some tests check the output of Bundler, and fail when
5111 ;; Bundler warns that /homeless-shelter does not exist.
5112 (setenv "HOME" "/tmp")
5113 #t)))))
5114 (native-inputs
5115 `(("ruby-bump" ,ruby-bump)
5116 ("ruby-cucumber" ,ruby-cucumber)
8a01e2fa 5117 ("ruby-cuke-modeler" ,ruby-cuke-modeler)
2156cc9c
MB
5118 ("ruby-minitest" ,ruby-minitest)
5119 ("ruby-rake" ,ruby-rake)
5120 ("ruby-rspec" ,ruby-rspec)
5121 ("ruby-spinach" ,ruby-spinach)))
5122 (propagated-inputs
5123 `(("ruby-parallel" ,ruby-parallel)))
5124 (synopsis "Run tests in parallel")
5125 (description
5126 "This package can speed up @code{Test::Unit}, @code{RSpec},
5127@code{Cucumber}, and @code{Spinach} tests by running them concurrently
5128across multiple CPU cores.")
5129 (license license:expat)))
5130
54993457
CB
5131(define-public ruby-parser
5132 (package
5133 (name "ruby-parser")
9fc61da9 5134 (version "2.7.1.4")
54993457
CB
5135 (source
5136 (origin
5137 (method url-fetch)
5138 (uri (rubygems-uri "parser" version))
5139 (sha256
5140 (base32
9fc61da9 5141 "1030znhvhkfn39svwbj6qn4xb6hgl94gnvg57k4d3r76f9bryqmn"))))
54993457
CB
5142 (build-system ruby-build-system)
5143 (native-inputs
5144 `(("bundler" ,bundler)
5145 ("ruby-cliver" ,ruby-cliver)
5146 ("ruby-simplecov" ,ruby-simplecov)
5147 ("ruby-racc" ,ruby-racc)))
5148 (inputs
5149 `(("ragel" ,ragel)))
5150 (propagated-inputs
5151 `(("ruby-ast" ,ruby-ast)))
5152 (synopsis "Ruby parser written in pure Ruby")
5153 (description
5154 "This package provides a Ruby parser written in pure Ruby.")
5155 (home-page "https://github.com/whitequark/parser")
5156 (license license:expat)))
5157
a8cdfd53
MC
5158(define-public ruby-sexp-processor
5159 (package
5160 (name "ruby-sexp-processor")
5161 (version "4.15.0")
5162 (source
5163 (origin
5164 (method url-fetch)
5165 (uri (rubygems-uri "sexp_processor" version))
5166 (sha256
5167 (base32
5168 "0d1vks77xnd0m3s94a58f9bkdwlaml5qdkmprx279m2s0pc2gv55"))))
5169 (build-system ruby-build-system)
5170 (native-inputs
5171 ;; TODO: Add ruby-minitest-proveit once available.
5172 `(("hoe" ,ruby-hoe)))
5173 (synopsis "ParseTree fork which includes generic S-exp processing tools")
5174 (description "The sexp_processor package is derived from ParseTree, but
5175contrary to ParseTree, it includes all the generic S-exp processing tools.
5176Amongst the included tools are @code{Sexp}, @code{SexpProcessor} and
5177@code{Environment}")
5178 (home-page "https://github.com/seattlerb/sexp_processor")
5179 (license license:expat)))
5180
24be6751
MC
5181(define-public ruby-ruby-parser
5182 (package
5183 (name "ruby-ruby-parser")
5184 (version "3.14.2")
5185 (source
5186 (origin
5187 (method url-fetch)
5188 (uri (rubygems-uri "ruby_parser" version))
5189 (sha256
5190 (base32
5191 "09qcdyjjw3p7g6cjm5m9swkms1xnv35ndiy7yw24cas16qrhha6c"))))
5192 (build-system ruby-build-system)
5193 (native-inputs
5194 `(("hoe" ,ruby-hoe)
5195 ("racc" ,ruby-racc)
5196 ("unifdef" ,unifdef)))
5197 (propagated-inputs
5198 `(("ruby-sexp-processor" ,ruby-sexp-processor)))
5199 (home-page "https://github.com/seattlerb/ruby_parser/")
5200 (synopsis "Ruby parser written in pure Ruby")
5201 (description "The ruby_parser (RP) package provides a Ruby parser written
5202in pure Ruby. It outputs S-expressions which can be manipulated and converted
5203back to Ruby via the @code{ruby2ruby} library.")
5204 (license license:expat)))
5205
16f423cb
CB
5206(define-public ruby-prawn-manual-builder
5207 (package
5208 (name "ruby-prawn-manual-builder")
1d4f0019 5209 (version "0.3.1")
16f423cb
CB
5210 (source
5211 (origin
5212 (method url-fetch)
5213 (uri (rubygems-uri "prawn-manual_builder" version))
5214 (sha256
1d4f0019 5215 (base32 "1vlg5w7wq43g2hgpgra2nrcxj1kb4ayqliz4gmja2rhs037j2vzs"))))
16f423cb
CB
5216 (build-system ruby-build-system)
5217 (arguments
1d4f0019 5218 '(#:tests? #f ; no included tests
16f423cb
CB
5219 #:phases
5220 (modify-phases %standard-phases
5221 (add-after 'extract-gemspec 'patch-gemspec
5222 (lambda _
5223 (substitute* ".gemspec"
5224 ;; Loosen the requirement for pdf-inspector
5225 (("~> 1\\.0\\.7") ">= 0")))))))
5226 (propagated-inputs
5227 `(("ruby-coderay" ,ruby-coderay)))
5228 (synopsis "Tool for writing manuals for Prawn and Prawn accessories")
5229 (description
5230 "This package provides a tool for writing manuals for Prawn and Prawn
5231accessories")
5232 (home-page "https://github.com/prawnpdf/prawn-manual_builder")
cc10ca33 5233 (license %prawn-project-licenses)))
16f423cb 5234
268643b9
CB
5235(define-public ruby-progress_bar
5236 (package
5237 (name "ruby-progress_bar")
5238 (version "1.1.0")
5239 (source
5240 (origin
5241 (method url-fetch)
5242 (uri (rubygems-uri "progress_bar" version))
5243 (sha256
5244 (base32
5245 "1qc40mr6p1z9a3vlpnsg1zfgk1qswviql2a31y63wpv3vr6b5f48"))))
5246 (build-system ruby-build-system)
5247 (arguments
5248 '(#:test-target "spec"))
5249 (propagated-inputs
5250 `(("ruby-highline" ,ruby-highline)
5251 ("ruby-options" ,ruby-options)))
5252 (native-inputs
5253 `(("bundler" ,bundler)
5254 ("ruby-rspec" ,ruby-rspec)
5255 ("ruby-timecop" ,ruby-timecop)))
5256 (synopsis
5257 "Ruby library for displaying progress bars")
5258 (description
5259 "ProgressBar is a simple library for displaying progress bars. The
5260maximum value is configurable, and additional information can be displayed
5261like the percentage completion, estimated time remaining, elapsed time and
5262rate.")
5263 (home-page "https://github.com/paul/progress_bar")
5264 (license license:wtfpl2)))
5265
95f85d44
CB
5266(define-public ruby-dep
5267 (package
5268 (name "ruby-dep")
5269 (version "1.5.0")
5270 (source
5271 (origin
5272 (method url-fetch)
5273 (uri (rubygems-uri "ruby_dep" version))
5274 (sha256
5275 (base32
5276 "1c1bkl97i9mkcvkn1jks346ksnvnnp84cs22gwl0vd7radybrgy5"))))
5277 (build-system ruby-build-system)
5278 (arguments
5279 '(#:tests? #f)) ; No included tests
5280 (synopsis "Creates a version constraint of supported Rubies")
5281 (description
5282 "This package helps create a version constraint of supported Rubies,
5283suitable for a gemspec file.")
5284 (home-page "https://github.com/e2/ruby_dep")
5285 (license license:expat)))
5286
158a9253
CB
5287(define-public ruby-progressbar
5288 (package
5289 (name "ruby-progressbar")
2d2a2363 5290 (version "1.10.1")
158a9253
CB
5291 (source
5292 (origin
5293 (method url-fetch)
5294 (uri (rubygems-uri "ruby-progressbar" version))
5295 (sha256
2d2a2363 5296 (base32 "1k77i0d4wsn23ggdd2msrcwfy0i376cglfqypkk2q77r2l3408zf"))))
158a9253
CB
5297 (build-system ruby-build-system)
5298 (arguments
5299 '(;; TODO: There looks to be a circular dependency with ruby-fuubar.
5300 #:tests? #f))
5301 (synopsis "Text progress bar library for Ruby")
5302 (description
5303 "Ruby/ProgressBar is an flexible text progress bar library for Ruby.
5304The output can be customized with a formatting system.")
5305 (home-page "https://github.com/jfelchner/ruby-progressbar")
5306 (license license:expat)))
5307
96e76083
DT
5308(define-public ruby-pry
5309 (package
5310 (name "ruby-pry")
a0d93c17 5311 (version "0.13.1")
96e76083
DT
5312 (source
5313 (origin
5314 (method url-fetch)
5315 (uri (rubygems-uri "pry" version))
5316 (sha256
5317 (base32
a0d93c17 5318 "0iyw4q4an2wmk8v5rn2ghfy2jaz9vmw2nk8415nnpx2s866934qk"))))
96e76083
DT
5319 (build-system ruby-build-system)
5320 (arguments
5321 '(#:tests? #f)) ; no tests
5322 (propagated-inputs
5323 `(("ruby-coderay" ,ruby-coderay)
1960d4fd 5324 ("ruby-method-source" ,ruby-method-source)))
96e76083
DT
5325 (synopsis "Ruby REPL")
5326 (description "Pry is an IRB alternative and runtime developer console for
5327Ruby. It features syntax highlighting, a plugin architecture, runtime
5328invocation, and source and documentation browsing.")
a0d93c17 5329 (home-page "https://cobaltbluemedia.com/pryrepl/")
96e76083 5330 (license license:expat)))
1415792a 5331
def7908a
MB
5332(define-public ruby-single-cov
5333 (package
5334 (name "ruby-single-cov")
5335 (version "1.3.2")
5336 (home-page "https://github.com/grosser/single_cov")
5337 (source (origin
5338 (method git-fetch)
5339 (uri (git-reference (url home-page)
5340 (commit (string-append "v" version))))
5341 (file-name (git-file-name name version))
5342 (sha256
5343 (base32
5344 "05qdzpcai1p23a120gb9bxkfl4y73k9hicx34ch2lsk31lgi9bl7"))))
5345 (build-system ruby-build-system)
5346 (arguments
5347 '(#:test-target "default"
5348 #:phases (modify-phases %standard-phases
5349 (replace 'replace-git-ls-files
5350 (lambda _
5351 (substitute* "single_cov.gemspec"
5352 (("`git ls-files lib/ bin/ MIT-LICENSE`")
5353 "`find lib/ bin/ MIT-LICENSE -type f | sort`"))
5354 #t))
5355 (add-before 'check 'remove-version-constraints
5356 (lambda _
5357 (delete-file "Gemfile.lock")
5358 #t))
5359 (add-before 'check 'make-files-writable
5360 (lambda _
5361 ;; Tests need to create local directories and open files
5362 ;; with write permissions.
5363 (for-each make-file-writable
5364 (find-files "specs" #:directories? #t))
5365 #t))
5366 (add-before 'check 'disable-failing-test
5367 (lambda _
5368 ;; XXX: This test copies assets from minitest, but can
5369 ;; not cope with the files being read-only. Just skip
5370 ;; it for now.
5371 (substitute* "specs/single_cov_spec.rb"
5372 (("it \"complains when coverage is bad\"")
5373 "xit \"complains when coverage is bad\""))
5374 #t)))))
5375 (native-inputs
5376 `(("ruby-bump" ,ruby-bump)
5377 ("ruby-minitest" ,ruby-minitest)
5378 ("ruby-rspec" ,ruby-rspec)
5379 ("ruby-simplecov" ,ruby-simplecov)))
5380 (synopsis "Code coverage reporting tool")
5381 (description
5382 "This package provides actionable code coverage reports for Ruby
5383projects. It has very little overhead and can be easily integrated with
5384development tools to catch coverage problems early.")
5385 (license license:expat)))
5386
051deeb7
RW
5387(define-public ruby-guard
5388 (package
5389 (name "ruby-guard")
5390 (version "2.13.0")
5391 (source (origin
3c6128f6 5392 (method git-fetch)
051deeb7
RW
5393 ;; The gem does not include a Rakefile, nor does it contain a
5394 ;; gemspec file, nor does it come with the tests. This is why
5395 ;; we fetch the tarball from Github.
3c6128f6
EF
5396 (uri (git-reference
5397 (url "https://github.com/guard/guard")
5398 (commit (string-append "v" version))))
5399 (file-name (git-file-name name version))
051deeb7
RW
5400 (sha256
5401 (base32
3c6128f6 5402 "16pxcszr0g2jnl3090didxh1d8z5m2mly14m3w4rspb8fmclsnjs"))))
051deeb7
RW
5403 (build-system ruby-build-system)
5404 (arguments
5405 `(#:tests? #f ; tests require cucumber
5406 #:phases
5407 (modify-phases %standard-phases
5408 (add-after 'unpack 'remove-git-ls-files
5409 (lambda* (#:key outputs #:allow-other-keys)
5410 (substitute* "guard.gemspec"
5411 (("git ls-files -z") "find . -type f -print0"))
5412 #t))
5413 (replace 'build
5414 (lambda _
9923d5a4 5415 (invoke "gem" "build" "guard.gemspec"))))))
051deeb7
RW
5416 (propagated-inputs
5417 `(("ruby-formatador" ,ruby-formatador)
5418 ("ruby-listen" ,ruby-listen)
5419 ("ruby-lumberjack" ,ruby-lumberjack)
5420 ("ruby-nenv" ,ruby-nenv)
5421 ("ruby-notiffany" ,ruby-notiffany)
5422 ("ruby-pry" ,ruby-pry)
5423 ("ruby-shellany" ,ruby-shellany)
5424 ("ruby-thor" ,ruby-thor)))
5425 (native-inputs
5426 `(("bundler" ,bundler)
5427 ("ruby-rspec" ,ruby-rspec)))
5428 (synopsis "Tool to handle events on file system modifications")
5429 (description
5430 "Guard is a command line tool to easily handle events on file system
5431modifications. Guard automates various tasks by running custom rules whenever
5432file or directories are modified.")
3c6128f6 5433 (home-page "https://guardgem.org/")
051deeb7
RW
5434 (license license:expat)))
5435
c09bc60d
MB
5436(define-public ruby-spinach
5437 (package
5438 (name "ruby-spinach")
5439 (version "0.11.0")
702a1012 5440 (home-page "https://github.com/codegram/spinach")
c09bc60d
MB
5441 (source (origin
5442 (method url-fetch)
5443 (uri (rubygems-uri "spinach" version))
5444 (sha256
5445 (base32
5446 "1mv053mqz9c8ngqa6wp1ymk2fax6j0yqzax6918akrdr7c3fx3c6"))))
5447 (build-system ruby-build-system)
5448 (arguments
5449 ;; FIXME: Disable tests altogether because they depend on 'capybara'
5450 ;; which in turn depends on many other unpackaged gems. Enable once
5451 ;; capybara is available.
5452 '(#:tests? #f))
5453 (propagated-inputs
5454 `(("ruby-colorize" ,ruby-colorize)
5455 ("ruby-gherkin-ruby" ,ruby-gherkin-ruby)
5456 ("ruby-json" ,ruby-json)))
5457 (synopsis "Gherkin-based BDD framework")
5458 (description
5459 "Spinach is a high-level @acronym{BDD, Behavior-driven development}
5460framework that leverages the expressive @code{Gherkin} language to help you
5461define executable specifications of your code.")
5462 (license license:expat)))
5463
bcbb3cc9
CB
5464(define-public ruby-tilt
5465 (package
5466 (name "ruby-tilt")
c3f15f54 5467 (version "2.0.10")
bcbb3cc9
CB
5468 (source
5469 (origin
c3f15f54
MC
5470 (method git-fetch) ;the distributed gem lacks tests
5471 (uri (git-reference
b0e7b699 5472 (url "https://github.com/rtomayko/tilt")
c3f15f54
MC
5473 (commit (string-append "v" version))))
5474 (file-name (git-file-name name version))
bcbb3cc9
CB
5475 (sha256
5476 (base32
c3f15f54 5477 "0adb7fg7925n2rd9a8kkqz3mgylw2skp9hkh9qc1rnph72mqsm6r"))))
bcbb3cc9
CB
5478 (build-system ruby-build-system)
5479 (arguments
5480 '(#:phases
5481 (modify-phases %standard-phases
5482 (add-after 'unpack 'remove-some-dependencies
5483 (lambda _
5484 (substitute* "Gemfile"
5485 ;; TODO ronn is used for generating the manual
5486 (("gem 'ronn'.*") "\n")
5487 ;; ruby-haml has a runtime dependency on ruby-tilt, so don't
5488 ;; pass it in as a native-input
5489 (("gem 'haml'.*") "\n")
5490 ;; TODO Not all of these gems are packaged for Guix yet:
5491 ;; less, coffee-script, livescript, babel-transpiler,
5492 ;; typescript-node
5493 (("if can_execjs") "if false")
5494 ;; Disable the secondary group to reduce the number of
5495 ;; dependencies. None of the normal approaches work, so patch
5496 ;; the Gemfile instead.
5497 (("group :secondary") "[].each"))
5498 #t)))))
cfa4a318
MC
5499 (propagated-inputs
5500 `(("ruby-pandoc-ruby" ,ruby-pandoc-ruby)
5501 ("ruby-sassc" ,ruby-sassc)))
bcbb3cc9
CB
5502 (native-inputs
5503 `(("bundler" ,bundler)
5504 ("ruby-yard" ,ruby-yard)
5505 ("ruby-builder" ,ruby-builder)
5506 ("ruby-erubis" ,ruby-erubis)
cfa4a318 5507 ("ruby-markaby" ,ruby-markaby)))
bcbb3cc9
CB
5508 (synopsis "Generic interface to multiple Ruby template engines")
5509 (description
5510 "Tilt is a thin interface over a number of different Ruby template
5511engines in an attempt to make their usage as generic as possible.")
5512 (home-page "https://github.com/rtomayko/tilt/")
5513 (license license:expat)))
5514
1415792a
DT
5515(define-public ruby-thread-safe
5516 (package
5517 (name "ruby-thread-safe")
313dd5dd 5518 (version "0.3.6")
1415792a
DT
5519 (source
5520 (origin
5521 (method url-fetch)
5522 (uri (rubygems-uri "thread_safe" version))
5523 (sha256
5524 (base32
313dd5dd 5525 "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy"))))
1415792a
DT
5526 (build-system ruby-build-system)
5527 (arguments
5528 '(#:tests? #f)) ; needs simplecov, among others
5529 (synopsis "Thread-safe utilities for Ruby")
5530 (description "The thread_safe library provides thread-safe collections and
5531utilities for Ruby.")
5532 (home-page "https://github.com/ruby-concurrency/thread_safe")
5533 (license license:asl2.0)))
08a1b701
DT
5534
5535(define-public ruby-tzinfo
5536 (package
5537 (name "ruby-tzinfo")
4237af85 5538 (version "1.2.4")
08a1b701
DT
5539 (source
5540 (origin
5541 (method url-fetch)
5542 (uri (rubygems-uri "tzinfo" version))
5543 (sha256
5544 (base32
4237af85 5545 "09dpbrih054mn42flbbcdpzk2727mzfvjrgqb12zdafhx7p9rrzp"))))
08a1b701 5546 (build-system ruby-build-system)
740fea08
CB
5547 (arguments
5548 '(#:phases
5549 (modify-phases %standard-phases
5550 (add-after 'unpack 'skip-safe-tests
5551 (lambda _
5552 (substitute* "test/test_utils.rb"
5553 (("def safe_test\\(options = \\{\\}\\)")
5554 "def safe_test(options = {})
5555 skip('The Guix build environment has an unsafe load path')"))
5556 #t)))))
08a1b701
DT
5557 (propagated-inputs
5558 `(("ruby-thread-safe" ,ruby-thread-safe)))
5559 (synopsis "Time zone library for Ruby")
5560 (description "TZInfo is a Ruby library that provides daylight savings
5561aware transformations between times in different time zones.")
2f3800e5 5562 (home-page "https://tzinfo.github.io")
1e12924a
BW
5563 (license license:expat)))
5564
5565(define-public ruby-tzinfo-data
5566 (package
5567 (name "ruby-tzinfo-data")
92513191 5568 (version "1.2017.3")
1e12924a
BW
5569 (source
5570 (origin
bb1e7ed0 5571 (method git-fetch)
1e12924a
BW
5572 ;; Download from GitHub because the rubygems version does not contain
5573 ;; Rakefile or tests.
bb1e7ed0
EF
5574 (uri (git-reference
5575 (url "https://github.com/tzinfo/tzinfo-data")
5576 (commit (string-append "v" version))))
5577 (file-name (git-file-name name version))
1e12924a
BW
5578 (sha256
5579 (base32
bb1e7ed0 5580 "0v3phl5l3jrm6waxcszqmj2dkjhqawxfsxb6mss7vkp1hlckqcdp"))
1e12924a
BW
5581 ;; Remove the known test failure.
5582 ;; https://github.com/tzinfo/tzinfo-data/issues/10
5583 ;; https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1587128
5584 (patches (search-patches
5585 "ruby-tzinfo-data-ignore-broken-test.patch"))))
5586 (build-system ruby-build-system)
5587 (propagated-inputs
5588 `(("ruby-tzinfo" ,ruby-tzinfo)))
5589 (synopsis "Data from the IANA Time Zone database")
5590 (description
5591 "This library provides @code{TZInfo::Data}, which contains data from the
5592IANA Time Zone database packaged as Ruby modules for use with @code{TZInfo}.")
2f3800e5 5593 (home-page "https://tzinfo.github.io")
08a1b701 5594 (license license:expat)))
c99e2247 5595
48e6851f
RW
5596(define-public ruby-rb-inotify
5597 (package
5598 (name "ruby-rb-inotify")
32bbfea8 5599 (version "0.9.10")
48e6851f
RW
5600 (source
5601 (origin
5602 (method url-fetch)
5603 (uri (rubygems-uri "rb-inotify" version))
5604 (sha256
5605 (base32
32bbfea8 5606 "0yfsgw5n7pkpyky6a9wkf1g9jafxb0ja7gz0qw0y14fd2jnzfh71"))))
48e6851f
RW
5607 (build-system ruby-build-system)
5608 (arguments
5609 '(#:tests? #f ; there are no tests
5610 #:phases
5611 (modify-phases %standard-phases
5612 ;; Building the gemspec with rake is not working here since it is
5613 ;; generated with Jeweler. It is also unnecessary because the
5614 ;; existing gemspec does not use any development tools to generate a
5615 ;; list of files.
5616 (replace 'build
5617 (lambda _
9923d5a4 5618 (invoke "gem" "build" "rb-inotify.gemspec"))))))
48e6851f
RW
5619 (propagated-inputs
5620 `(("ruby-ffi" ,ruby-ffi)))
5621 (native-inputs
5622 `(("ruby-yard" ,ruby-yard)))
5623 (synopsis "Ruby wrapper for Linux's inotify")
5624 (description "rb-inotify is a simple wrapper over the @code{inotify} Linux
5625kernel subsystem for monitoring changes to files and directories.")
5626 (home-page "https://github.com/nex3/rb-inotify")
5627 (license license:expat)))
5628
a75bdfce
RW
5629(define-public ruby-pry-editline
5630 (package
5631 (name "ruby-pry-editline")
5632 (version "1.1.2")
5633 (source (origin
5634 (method url-fetch)
5635 (uri (rubygems-uri "pry-editline" version))
5636 (sha256
5637 (base32
5638 "1pjxyvdxvw41xw3yyl18pwzix8hbvn6lgics7qcfhjfsf1zs8x1z"))))
5639 (build-system ruby-build-system)
5640 (arguments `(#:tests? #f)) ; no tests included
5641 (native-inputs
5642 `(("bundler" ,bundler)))
5643 (synopsis "Open the current REPL line in an editor")
5644 (description
5645 "This gem provides a plugin for the Ruby REPL to enable opening the
5646current line in an external editor.")
5647 (home-page "https://github.com/tpope/pry-editline")
5648 (license license:expat)))
5649
d3b20a02
RW
5650(define-public ruby-sdoc
5651 (package
5652 (name "ruby-sdoc")
6700dc33 5653 (version "1.1.0")
d3b20a02
RW
5654 (source (origin
5655 (method url-fetch)
5656 (uri (rubygems-uri "sdoc" version))
5657 (sha256
5658 (base32
6700dc33 5659 "1am73dldx1fqlw2xny5vyk00pgkisg6bvs0pa8jjd7c19drjczrd"))))
d3b20a02
RW
5660 (build-system ruby-build-system)
5661 (arguments
5662 `(#:phases
5663 (modify-phases %standard-phases
fc29d5e6 5664 (add-before 'check 'set-rubylib-and-patch-gemfile
d3b20a02 5665 (lambda _
fdf3a68d 5666 (setenv "RUBYLIB" "lib")
fc29d5e6
BW
5667 (substitute* "sdoc.gemspec"
5668 (("s.add_runtime_dependency.*") "\n")
5669 (("s.add_dependency.*") "\n"))
5670 (substitute* "Gemfile"
5671 (("gem \"rake\".*")
5672 "gem 'rake'\ngem 'rdoc'\ngem 'json'\n"))
d3b20a02
RW
5673 #t)))))
5674 (propagated-inputs
5675 `(("ruby-json" ,ruby-json)))
5676 (native-inputs
5677 `(("bundler" ,bundler)
fdf3a68d
BW
5678 ("ruby-minitest" ,ruby-minitest)
5679 ("ruby-hoe" ,ruby-hoe)))
d3b20a02
RW
5680 (synopsis "Generate searchable RDoc documentation")
5681 (description
5682 "SDoc is an RDoc documentation generator to build searchable HTML
5683documentation for Ruby code.")
7bf837fd 5684 (home-page "https://github.com/voloko/sdoc")
d3b20a02
RW
5685 (license license:expat)))
5686
70b002aa
RW
5687(define-public ruby-tins
5688 (package
5689 (name "ruby-tins")
fbefd6ff 5690 (version "1.15.0")
70b002aa
RW
5691 (source (origin
5692 (method url-fetch)
5693 (uri (rubygems-uri "tins" version))
5694 (sha256
5695 (base32
fbefd6ff 5696 "09whix5a7ics6787zrkwjmp16kqyh6560p9f317syks785805f7s"))))
70b002aa
RW
5697 (build-system ruby-build-system)
5698 ;; This gem needs gem-hadar at development time, but gem-hadar needs tins
5699 ;; at runtime. To avoid the dependency on gem-hadar we disable rebuilding
5700 ;; the gemspec.
5701 (arguments
5702 `(#:tests? #f ; there are no tests
5703 #:phases
5704 (modify-phases %standard-phases
5705 (replace 'build
5706 (lambda _
5707 ;; "lib/spruz" is a symlink. Leaving it in the gemspec file
5708 ;; causes an error.
5709 (substitute* "tins.gemspec"
5710 (("\"lib/spruz\", ") ""))
9923d5a4 5711 (invoke "gem" "build" "tins.gemspec"))))))
70b002aa
RW
5712 (synopsis "Assorted tools for Ruby")
5713 (description "Tins is a Ruby library providing assorted tools.")
5714 (home-page "https://github.com/flori/tins")
5715 (license license:expat)))
5716
bc8277e4
RW
5717(define-public ruby-gem-hadar
5718 (package
5719 (name "ruby-gem-hadar")
3fd577e3 5720 (version "1.9.1")
bc8277e4
RW
5721 (source (origin
5722 (method url-fetch)
5723 (uri (rubygems-uri "gem_hadar" version))
5724 (sha256
5725 (base32
3fd577e3 5726 "1zxvd9l95rbks7x3cxn396w0sn7nha5542bf97v8akkn4vm7nby9"))))
bc8277e4
RW
5727 (build-system ruby-build-system)
5728 ;; This gem needs itself at development time. We disable rebuilding of the
5729 ;; gemspec to avoid this loop.
5730 (arguments
5731 `(#:tests? #f ; there are no tests
5732 #:phases
5733 (modify-phases %standard-phases
5734 (replace 'build
5735 (lambda _
9923d5a4 5736 (invoke "gem" "build" "gem_hadar.gemspec"))))))
bc8277e4
RW
5737 (propagated-inputs
5738 `(("git" ,git)
5739 ("ruby-tins" ,ruby-tins)
3fd577e3 5740 ("ruby-yard" ,ruby-yard)))
bc8277e4
RW
5741 (synopsis "Library for the development of Ruby gems")
5742 (description
5743 "This library contains some useful functionality to support the
5744development of Ruby gems.")
5745 (home-page "https://github.com/flori/gem_hadar")
5746 (license license:expat)))
5747
d8cafe29
RW
5748(define-public ruby-minitest-tu-shim
5749 (package
5750 (name "ruby-minitest-tu-shim")
5751 (version "1.3.3")
5752 (source (origin
5753 (method url-fetch)
5754 (uri (rubygems-uri "minitest_tu_shim" version))
5755 (sha256
5756 (base32
5757 "0xlyh94iirvssix157ng2akr9nqhdygdd0c6094hhv7dqcfrn9fn"))))
5758 (build-system ruby-build-system)
5759 (arguments
5760 `(#:phases
5761 (modify-phases %standard-phases
5762 (add-after 'unpack 'fix-test-include-path
5763 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 5764 (let* ((minitest (assoc-ref inputs "ruby-minitest-4")))
761e7042
BW
5765 (substitute* "Rakefile"
5766 (("Hoe\\.add_include_dirs .*")
5767 (string-append "Hoe.add_include_dirs \""
3cb3fa67 5768 minitest "/lib/ruby/vendor_ruby"
761e7042
BW
5769 "/gems/minitest-"
5770 ,(package-version ruby-minitest-4)
5771 "/lib" "\""))))
5772 #t))
d8cafe29
RW
5773 (add-before 'check 'fix-test-assumptions
5774 (lambda _
5775 ;; The test output includes the file name, so a couple of tests
5776 ;; fail. Changing the regular expressions slightly fixes this
5777 ;; problem.
5778 (substitute* "test/test_mini_test.rb"
5779 (("output.sub!\\(.*, 'FILE:LINE'\\)")
5780 "output.sub!(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')")
5781 (("gsub\\(/.*, 'FILE:LINE'\\)")
5782 "gsub(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')"))
5783 #t)))))
5784 (propagated-inputs
5785 `(("ruby-minitest-4" ,ruby-minitest-4)))
5786 (native-inputs
5787 `(("ruby-hoe" ,ruby-hoe)))
5788 (synopsis "Adapter library between minitest and test/unit")
5789 (description
5790 "This library bridges the gap between the small and fast minitest and
5791Ruby's large and slower test/unit.")
5792 (home-page "https://rubygems.org/gems/minitest_tu_shim")
5793 (license license:expat)))
5794
fd83a212
RW
5795(define-public ruby-term-ansicolor
5796 (package
5797 (name "ruby-term-ansicolor")
f3a6311a 5798 (version "1.6.0")
fd83a212
RW
5799 (source (origin
5800 (method url-fetch)
5801 (uri (rubygems-uri "term-ansicolor" version))
5802 (sha256
5803 (base32
f3a6311a 5804 "1b1wq9ljh7v3qyxkk8vik2fqx2qzwh5lval5f92llmldkw7r7k7b"))))
fd83a212
RW
5805 (build-system ruby-build-system)
5806 ;; Rebuilding the gemspec seems to require git, even though this is not a
5807 ;; git repository, so we just build the gem from the existing gemspec.
5808 (arguments
5809 `(#:phases
5810 (modify-phases %standard-phases
39ecb977
CB
5811 (add-after 'unpack 'fix-test
5812 (lambda -
5813 (substitute* "tests/hsl_triple_test.rb"
5814 (("0\\\\\\.0%")
5815 "0\\.?0?%"))))
fd83a212
RW
5816 (replace 'build
5817 (lambda _
9923d5a4 5818 (invoke "gem" "build" "term-ansicolor.gemspec"))))))
fd83a212
RW
5819 (propagated-inputs
5820 `(("ruby-tins" ,ruby-tins)))
5821 (native-inputs
5822 `(("ruby-gem-hadar" ,ruby-gem-hadar)
5823 ("ruby-minitest-tu-shim" ,ruby-minitest-tu-shim)))
5824 (synopsis "Ruby library to control the attributes of terminal output")
5825 (description
5826 "This Ruby library uses ANSI escape sequences to control the attributes
5827of terminal output.")
2f3800e5 5828 (home-page "https://flori.github.io/term-ansicolor/")
fd83a212
RW
5829 ;; There is no mention of the "or later" clause.
5830 (license license:gpl2)))
5831
a714c30f
CB
5832(define-public ruby-terraform
5833 (package
5834 (name "ruby-terraform")
5835 (version "0.22.0")
5836 (source
5837 (origin
5838 (method url-fetch)
5839 (uri (rubygems-uri "ruby-terraform" version))
5840 (sha256
5841 (base32
5842 "13zjkp71cd19j2ds2h9rqwcfr1zdg5nsh63p89l6qcsc9z39z324"))))
5843 (build-system ruby-build-system)
5844 (arguments
5845 '(#:tests? #f)) ; No included tests
5846 (propagated-inputs
5847 `(("ruby-lino" ,ruby-lino)))
5848 (synopsis "Ruby wrapper around the Terraform command line interface")
5849 (description
5850 "This package provides a Ruby wrapper around the Terraform command line
5851interface so that Terraform can be more easily invoked from Ruby code.")
5852 (home-page "https://github.com/infrablocks/ruby_terraform")
5853 (license license:expat)))
5854
6e376ca4
RW
5855(define-public ruby-pstree
5856 (package
5857 (name "ruby-pstree")
5858 (version "0.1.0")
5859 (source (origin
5860 (method url-fetch)
5861 (uri (rubygems-uri "pstree" version))
5862 (sha256
5863 (base32
5864 "1mig1sv5qx1cdyhjaipy8jlh9j8pnja04vprrzihyfr54x0215p1"))))
5865 (build-system ruby-build-system)
5866 (native-inputs
5867 `(("ruby-gem-hadar" ,ruby-gem-hadar)
5868 ("bundler" ,bundler)))
5869 (synopsis "Create a process tree data structure")
5870 (description
5871 "This library uses the output of the @code{ps} command to create a
5872process tree data structure for the current host.")
2f3800e5 5873 (home-page "https://github.com/flori/pstree")
6e376ca4
RW
5874 ;; There is no mention of the "or later" clause.
5875 (license license:gpl2)))
5876
53239b5f
RW
5877(define-public ruby-utils
5878 (package
5879 (name "ruby-utils")
cd698b6e 5880 (version "0.9.0")
53239b5f
RW
5881 (source (origin
5882 (method url-fetch)
5883 (uri (rubygems-uri "utils" version))
5884 (sha256
5885 (base32
cd698b6e 5886 "196zhgcygrnx09bb9mh22qas03rl9avzx8qs0wnxznpin4pffwcl"))))
53239b5f
RW
5887 (build-system ruby-build-system)
5888 (propagated-inputs
5889 `(("ruby-tins" ,ruby-tins)
5890 ("ruby-term-ansicolor" ,ruby-term-ansicolor)
5891 ("ruby-pstree" ,ruby-pstree)
5892 ("ruby-pry-editline" ,ruby-pry-editline)))
5893 (native-inputs
5894 `(("ruby-gem-hadar" ,ruby-gem-hadar)
5895 ("bundler" ,bundler)))
5896 (synopsis "Command line tools for working with Ruby")
5897 (description
5898 "This package provides assorted command line tools that may be useful
5899when working with Ruby code.")
5900 (home-page "https://github.com/flori/utils")
5901 ;; There is no mention of the "or later" clause.
5902 (license license:gpl2)))
5903
433f10b5
CB
5904(define-public ruby-jaro-winkler
5905 (package
5906 (name "ruby-jaro-winkler")
37b23e44 5907 (version "1.5.4")
433f10b5
CB
5908 (source
5909 (origin
5910 (method url-fetch)
5911 (uri (rubygems-uri "jaro_winkler" version))
5912 (sha256
37b23e44 5913 (base32 "1y8l6k34svmdyqxya3iahpwbpvmn3fswhwsvrz0nk1wyb8yfihsh"))))
433f10b5
CB
5914 (build-system ruby-build-system)
5915 (arguments
37b23e44 5916 '(#:tests? #f)) ; no included tests
433f10b5
CB
5917 (synopsis "Ruby implementation of Jaro-Winkler distance algorithm")
5918 (description
5919 "@code{jaro_winkler} is an implementation of Jaro-Winkler distance
5920algorithm. It is written as a C extension and will fallback to a pure Ruby
5921implementation on platforms where this is unsupported.")
5922 (home-page "https://github.com/tonytonyjan/jaro_winkler")
5923 (license license:expat)))
5924
c99e2247
DT
5925(define-public ruby-json
5926 (package
5927 (name "ruby-json")
a281acce 5928 (version "2.1.0")
c99e2247
DT
5929 (source
5930 (origin
5931 (method url-fetch)
5932 (uri (rubygems-uri "json" version))
5933 (sha256
5934 (base32
a281acce 5935 "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp"))))
c99e2247
DT
5936 (build-system ruby-build-system)
5937 (arguments '(#:tests? #f)) ; dependency cycle with sdoc
5938 (synopsis "JSON library for Ruby")
5939 (description "This Ruby library provides a JSON implementation written as
5940a native C extension.")
5941 (home-page "http://json-jruby.rubyforge.org/")
5942 (license (list license:ruby license:gpl2)))) ; GPL2 only
5ff89a1b 5943
763624f5
RW
5944(define-public ruby-json-pure
5945 (package
5946 (name "ruby-json-pure")
1c65d99f 5947 (version "2.2.0")
763624f5
RW
5948 (source (origin
5949 (method url-fetch)
5950 (uri (rubygems-uri "json_pure" version))
5951 (sha256
5952 (base32
1c65d99f 5953 "0m0j1mfwv0mvw72kzqisb26xjl236ivqypw1741dkis7s63b8439"))))
763624f5
RW
5954 (build-system ruby-build-system)
5955 (arguments
ac01cb07 5956 `(#:phases
763624f5 5957 (modify-phases %standard-phases
ac01cb07 5958 (add-after 'unpack 'fix-rakefile
763624f5 5959 (lambda _
ac01cb07
BW
5960 (substitute* "Rakefile"
5961 ;; Since this is not a git repository, do not call 'git'.
5962 (("`git ls-files`") "`find . -type f |sort`")
5963 ;; Loosen dependency constraint.
5964 (("'test-unit', '~> 2.0'") "'test-unit', '>= 2.0'"))
5965 #t))
5966 (add-after 'replace-git-ls-files 'regenerate-gemspec
5967 (lambda _
5968 ;; Regenerate gemspec so loosened dependency constraints are
5969 ;; propagated.
17cfb7ae
CB
5970 (invoke "rake" "gemspec")))
5971 (add-after 'regenerate-gemspec 'fix-json-java.gemspec
5972 (lambda _
5973 ;; This gemspec doesn't look to be generated by the above
5974 ;; command, so patch it separately.
5975 (substitute* "json-java.gemspec"
5976 (("%q<test-unit>\\.freeze, \\[\"~> 2\\.0\"\\]")
5977 "%q<test-unit>.freeze, [\">= 2.0\"]"))
5978 #t)))))
763624f5 5979 (native-inputs
ac01cb07 5980 `(("bundler" ,bundler)
0c9f73cd
TGR
5981 ("ragel" ,ragel)
5982 ("ruby-simplecov" ,ruby-simplecov)
5983 ("ruby-test-unit" ,ruby-test-unit)))
763624f5
RW
5984 (synopsis "JSON implementation in pure Ruby")
5985 (description
5986 "This package provides a JSON implementation written in pure Ruby.")
1c65d99f 5987 (home-page "https://flori.github.com/json/")
763624f5
RW
5988 (license license:ruby)))
5989
2a8581ac
CB
5990(define-public ruby-jwt
5991 (package
5992 (name "ruby-jwt")
5993 (version "2.1.0")
5994 (source
5995 (origin
5996 (method url-fetch)
5997 (uri (rubygems-uri "jwt" version))
5998 (sha256
5999 (base32
6000 "1w0kaqrbl71cq9sbnixc20x5lqah3hs2i93xmhlfdg2y3by7yzky"))))
6001 (build-system ruby-build-system)
6002 (arguments
6003 '(#:test-target "test"
6004 #:phases
6005 (modify-phases %standard-phases
6006 (add-after 'unpack 'remove-unnecessary-dependencies
6007 (lambda _
6008 (substitute* "spec/spec_helper.rb"
6009 (("require 'simplecov.*") "\n")
6010 ;; Use [].each to disable running the SimpleCov configuration
6011 ;; block
6012 (("SimpleCov\\.configure") "[].each")
6013 (("require 'codeclimate-test-reporter'") "")
6014 (("require 'codacy-coverage'") "")
6015 (("Codacy::Reporter\\.start") ""))
6016 #t)))))
6017 (native-inputs
6018 `(("bundler" ,bundler)
6019 ("ruby-rspec" ,ruby-rspec)
6020 ("ruby-rbnacl" ,ruby-rbnacl)))
6021 (synopsis "Ruby implementation of the JSON Web Token standard")
6022 (description
6023 "This package provides a pure Ruby implementation of the RFC 7519 OAuth
6024@acronym{JWT, JSON Web Token} standard.")
6025 (home-page "https://github.com/jwt/ruby-jwt")
6026 (license license:expat)))
6027
16b324cd
RW
6028;; Even though this package only provides bindings for a Mac OSX API it is
6029;; required by "ruby-listen" at runtime.
6030(define-public ruby-rb-fsevent
6031 (package
6032 (name "ruby-rb-fsevent")
b0ef15ed 6033 (version "0.10.3")
16b324cd
RW
6034 (source (origin
6035 (method url-fetch)
6036 (uri (rubygems-uri "rb-fsevent" version))
6037 (sha256
6038 (base32
b0ef15ed 6039 "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8"))))
16b324cd
RW
6040 (build-system ruby-build-system)
6041 ;; Tests need "guard-rspec", which needs "guard". However, "guard" needs
6042 ;; "listen", which needs "rb-fsevent" at runtime.
6043 (arguments `(#:tests? #f))
6044 (synopsis "FSEvents API with signals catching")
6045 (description
6046 "This library provides Ruby bindings for the Mac OSX FSEvents API.")
6047 (home-page "https://rubygems.org/gems/rb-fsevent")
6048 (license license:expat)))
6049
b86be2ad
RW
6050(define-public ruby-listen
6051 (package
6052 (name "ruby-listen")
12341d34 6053 (version "3.2.0")
b86be2ad
RW
6054 (source
6055 (origin
35602819
CB
6056 ;; The gem does not include a Rakefile, so fetch from the Git
6057 ;; repository.
6058 (method git-fetch)
6059 (uri (git-reference
b0e7b699 6060 (url "https://github.com/guard/listen")
35602819
CB
6061 (commit (string-append "v" version))))
6062 (file-name (git-file-name name version))
b86be2ad
RW
6063 (sha256
6064 (base32
12341d34 6065 "1hkp1g6hk5clsmbd001gkc12ma6s459x820piajyasv61m87if24"))))
b86be2ad 6066 (build-system ruby-build-system)
35602819
CB
6067 (arguments
6068 `(#:test-target "spec"
6069 #:phases
6070 (modify-phases %standard-phases
6071 (add-after 'unpack 'fix-files-in-gemspec
6072 (lambda _
6073 (substitute* "listen.gemspec"
6074 (("`git ls-files -z`") "`find . -type f -printf '%P\\\\0' |sort -z`"))
6075 #t))
6076 (add-before 'check 'remove-unnecessary-dependencies'
6077 (lambda _
6078 (substitute* "Rakefile"
6079 ;; Rubocop is for code linting, and is unnecessary for running
6080 ;; the tests.
6081 ((".*rubocop.*") ""))
6082 #t)))))
6083 (native-inputs
6084 `(("bundler" ,bundler)
6085 ("ruby-rspec" ,ruby-rspec)))
6086 (inputs
6087 `(;; ruby-thor is used for the command line interface, and is referenced
6088 ;; in the wrapper, and therefore just needs to be an input.
6089 ("ruby-thor" ,ruby-thor)))
b86be2ad 6090 (propagated-inputs
35602819
CB
6091 `(("ruby-rb-fsevent" ,ruby-rb-fsevent)
6092 ("ruby-rb-inotify" ,ruby-rb-inotify)
6093 ("ruby-dep" ,ruby-dep)))
b86be2ad
RW
6094 (synopsis "Listen to file modifications")
6095 (description "The Listen gem listens to file modifications and notifies
6096you about the changes.")
6097 (home-page "https://github.com/guard/listen")
6098 (license license:expat)))
6099
8d3c5ff6
CB
6100(define-public ruby-loofah
6101 (package
6102 (name "ruby-loofah")
6103 (version "2.2.3")
6104 (source
6105 (origin
6106 (method url-fetch)
6107 (uri (rubygems-uri "loofah" version))
6108 (sha256
6109 (base32
6110 "1ccsid33xjajd0im2xv941aywi58z7ihwkvaf1w2bv89vn5bhsjg"))))
6111 (build-system ruby-build-system)
6112 (arguments
6113 '(#:phases
6114 (modify-phases %standard-phases
6115 (add-after 'unpack 'remove-unnecessary-dependencies
6116 (lambda _
6117 ;; concourse is a development tool which is unused, so remove it
6118 ;; so it's not required.
6119 (substitute* "Gemfile"
6120 ((".*\"concourse\".*") "\n"))
6121 (substitute* "Rakefile"
6122 (("require 'concourse'") "")
6123 (("Concourse\\.new.*") "\n"))
6124 #t)))))
6125 (native-inputs
6126 `(("ruby-hoe" ,ruby-hoe)
6127 ("ruby-rr" ,ruby-rr)))
6128 (propagated-inputs
6129 `(("ruby-nokogiri" ,ruby-nokogiri)
6130 ("ruby-crass" ,ruby-crass)))
6131 (synopsis "Ruby library for manipulating and transforming HTML/XML")
6132 (description
6133 "Loofah is a general library for manipulating and transforming HTML/XML
6134documents and fragments. It's built on top of Nokogiri and libxml2.")
6135 (home-page "https://github.com/flavorjones/loofah")
6136 (license license:expat)))
6137
5ff89a1b
DT
6138(define-public ruby-activesupport
6139 (package
6140 (name "ruby-activesupport")
bcf1fe5b 6141 (version "5.2.2.1")
5ff89a1b
DT
6142 (source
6143 (origin
6144 (method url-fetch)
6145 (uri (rubygems-uri "activesupport" version))
6146 (sha256
6147 (base32
bcf1fe5b 6148 "161bp4p01v1a1lvszrhd1a02zf9x1p1l1yhw79a3rix1kvzkkdqb"))))
5ff89a1b
DT
6149 (build-system ruby-build-system)
6150 (arguments
2af45e50
BW
6151 `(#:phases
6152 (modify-phases %standard-phases
6153 (replace 'check
6154 (lambda _
9923d5a4
TGR
6155 ;; There are no tests, instead attempt to load the library.
6156 (invoke "ruby" "-Ilib" "-r" "active_support"))))))
5ff89a1b 6157 (propagated-inputs
2af45e50
BW
6158 `(("ruby-concurrent" ,ruby-concurrent)
6159 ("ruby-i18n" ,ruby-i18n)
5ff89a1b 6160 ("ruby-minitest" ,ruby-minitest)
606ee9a1
BW
6161 ("ruby-tzinfo" ,ruby-tzinfo)
6162 ("ruby-tzinfo-data" ,ruby-tzinfo-data)))
5ff89a1b
DT
6163 (synopsis "Ruby on Rails utility library")
6164 (description "ActiveSupport is a toolkit of support libraries and Ruby
6165core extensions extracted from the Rails framework. It includes support for
6166multibyte strings, internationalization, time zones, and testing.")
6167 (home-page "http://www.rubyonrails.org")
6168 (license license:expat)))
f847ad7b 6169
3996f0aa
RW
6170(define-public ruby-crass
6171 (package
6172 (name "ruby-crass")
a84a185a
MB
6173 (version "1.0.6")
6174 (home-page "https://github.com/rgrove/crass")
3996f0aa 6175 (source (origin
a84a185a
MB
6176 ;; The gem does not contain tests, so pull from git.
6177 (method git-fetch)
6178 (uri (git-reference
6179 (url home-page)
6180 (commit (string-append "v" version))))
6181 (file-name (git-file-name name version))
3996f0aa
RW
6182 (sha256
6183 (base32
a84a185a 6184 "1gbsb81psgb6xhnwpx4s409jc0mk0gijh039sy5xyi8jpaaadp40"))))
3996f0aa 6185 (build-system ruby-build-system)
3996f0aa
RW
6186 (synopsis "Pure Ruby CSS parser")
6187 (description
6188 "Crass is a pure Ruby CSS parser based on the CSS Syntax Level 3 spec.")
3996f0aa
RW
6189 (license license:expat)))
6190
c2c4e5b2 6191(define-public ruby-nokogumbo
2e366b0a
MB
6192 (package
6193 (name "ruby-nokogumbo")
6194 (version "2.0.2")
6195 (source (origin
6196 ;; We use the git reference, because there's no Rakefile in the
6197 ;; published gem and the tarball on Github is outdated.
6198 (method git-fetch)
6199 (uri (git-reference
b0e7b699 6200 (url "https://github.com/rubys/nokogumbo")
2e366b0a
MB
6201 (commit (string-append "v" version))))
6202 (file-name (string-append name "-" version "-checkout"))
6203 (sha256
6204 (base32
6205 "1qg0iyw450lw6d0j1ghzg79a6l60nm1m4qmrzwzybi585861jxcx"))))
6206 (build-system ruby-build-system)
6207 (native-inputs
6208 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
6209 (inputs
6210 `(("gumbo-parser" ,gumbo-parser)))
6211 (propagated-inputs
6212 `(("ruby-nokogiri" ,ruby-nokogiri)))
6213 (synopsis "Ruby bindings to the Gumbo HTML5 parser")
6214 (description
6215 "Nokogumbo allows a Ruby program to invoke the Gumbo HTML5 parser and
c2c4e5b2 6216access the result as a Nokogiri parsed document.")
2e366b0a
MB
6217 (home-page "https://github.com/rubys/nokogumbo/")
6218 (license license:asl2.0)))
c2c4e5b2 6219
d56ff88b
RW
6220(define-public ruby-sanitize
6221 (package
6222 (name "ruby-sanitize")
f362b53c
MB
6223 (version "5.1.0")
6224 (home-page "https://github.com/rgrove/sanitize")
d56ff88b 6225 (source (origin
f362b53c 6226 (method git-fetch)
d56ff88b 6227 ;; The gem does not include the Rakefile, so we download the
f362b53c
MB
6228 ;; source from Github.
6229 (uri (git-reference
6230 (url home-page)
6231 (commit (string-append "v" version))))
6232 (file-name (git-file-name name version))
6233 (patches (search-patches "ruby-sanitize-system-libxml.patch"))
d56ff88b
RW
6234 (sha256
6235 (base32
f362b53c 6236 "0lj0q9yhjp0q0in5majkshnki07mw8m2vxgndx4m5na6232aszl0"))))
d56ff88b
RW
6237 (build-system ruby-build-system)
6238 (propagated-inputs
6239 `(("ruby-crass" ,ruby-crass)
6240 ("ruby-nokogiri" ,ruby-nokogiri)
6241 ("ruby-nokogumbo" ,ruby-nokogumbo)))
6242 (native-inputs
f362b53c 6243 `(("ruby-minitest" ,ruby-minitest)))
d56ff88b
RW
6244 (synopsis "Whitelist-based HTML and CSS sanitizer")
6245 (description
6246 "Sanitize is a whitelist-based HTML and CSS sanitizer. Given a list of
6247acceptable elements, attributes, and CSS properties, Sanitize will remove all
6248unacceptable HTML and/or CSS from a string.")
d56ff88b
RW
6249 (license license:expat)))
6250
ed4b6b18
BW
6251(define-public ruby-oj
6252 (package
6253 (name "ruby-oj")
93dfdec5 6254 (version "3.10.1")
ed4b6b18
BW
6255 (source
6256 (origin
b09ef660 6257 (method git-fetch)
ed4b6b18
BW
6258 ;; Version on rubygems.org does not contain Rakefile, so download from
6259 ;; GitHub instead.
b09ef660
EF
6260 (uri (git-reference
6261 (url "https://github.com/ohler55/oj")
6262 (commit (string-append "v" version))))
6263 (file-name (git-file-name name version))
ed4b6b18
BW
6264 (sha256
6265 (base32
93dfdec5 6266 "0i5xjx4sh816zx2c1a4d1q67k7vllg5jnnc4jy6zhbmwi1dvp5vw"))))
ed4b6b18
BW
6267 (build-system ruby-build-system)
6268 (arguments
6269 '(#:test-target "test_all"
6270 #:phases
6271 (modify-phases %standard-phases
6272 (add-before 'check 'disable-bundler
6273 (lambda _
6274 (substitute* "Rakefile"
6275 (("Bundler\\.with_clean_env") "1.times")
6276 (("bundle exec ") "")))))))
6277 (native-inputs
6278 `(("bundler" ,bundler)
6279 ("ruby-rspec" ,ruby-rspec)
6280 ("ruby-rake-compiler" ,ruby-rake-compiler)))
6281 (synopsis "JSON parser for Ruby optimized for speed")
6282 (description
6283 "Oj is a JSON parser and generator for Ruby, where the encoding and
6284decoding of JSON is implemented as a C extension to Ruby.")
b09ef660 6285 (home-page "http://www.ohler.com/oj/")
ed4b6b18
BW
6286 (license (list license:expat ; Ruby code
6287 license:bsd-3)))) ; extension code
6288
f847ad7b
DT
6289(define-public ruby-ox
6290 (package
6291 (name "ruby-ox")
263c0dbf 6292 (version "2.6.0")
f847ad7b
DT
6293 (source
6294 (origin
6295 (method url-fetch)
6296 (uri (rubygems-uri "ox" version))
6297 (sha256
6298 (base32
263c0dbf 6299 "0fmk62b1h2i79dfzjj8wmf8qid1rv5nhwfc17l489ywnga91xl83"))))
f847ad7b
DT
6300 (build-system ruby-build-system)
6301 (arguments
6302 '(#:tests? #f)) ; no tests
6303 (synopsis "Optimized XML library for Ruby")
6304 (description
6305 "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
6306written as a native C extension. It was designed to be an alternative to
6307Nokogiri and other Ruby XML parsers for generic XML parsing and as an
6308alternative to Marshal for Object serialization. ")
6309 (home-page "http://www.ohler.com/ox")
6310 (license license:expat)))
4a9e0585 6311
0c4e7625
RW
6312(define-public ruby-redcloth
6313 (package
6314 (name "ruby-redcloth")
2a91494e 6315 (version "4.3.2")
0c4e7625
RW
6316 (source (origin
6317 (method url-fetch)
6318 (uri (rubygems-uri "RedCloth" version))
6319 (sha256
6320 (base32
2a91494e 6321 "0m9dv7ya9q93r8x1pg2gi15rxlbck8m178j1fz7r5v6wr1avrrqy"))))
0c4e7625
RW
6322 (build-system ruby-build-system)
6323 (arguments
6324 `(#:tests? #f ; no tests
6325 #:phases
6326 (modify-phases %standard-phases
6327 ;; Redcloth has complicated rake tasks to build various versions for
6328 ;; multiple targets using RVM. We don't want this so we just use the
6329 ;; existing gemspec.
6330 (replace 'build
6331 (lambda _
9923d5a4 6332 (invoke "gem" "build" "redcloth.gemspec"))))))
0c4e7625
RW
6333 (native-inputs
6334 `(("bundler" ,bundler)
6335 ("ruby-diff-lcs" ,ruby-diff-lcs)
6336 ("ruby-rspec-2" ,ruby-rspec-2)))
6337 (synopsis "Textile markup language parser for Ruby")
6338 (description
6339 "RedCloth is a Ruby parser for the Textile markup language.")
6340 (home-page "http://redcloth.org")
6341 (license license:expat)))
6342
4a9e0585
DT
6343(define-public ruby-pg
6344 (package
6345 (name "ruby-pg")
ffc4869e 6346 (version "1.1.4")
4a9e0585
DT
6347 (source
6348 (origin
6349 (method url-fetch)
6350 (uri (rubygems-uri "pg" version))
6351 (sha256
6352 (base32
ffc4869e 6353 "0fmnyxcyrvgdbgq7m09whgn9i8rwfybk0w8aii1nc4g5kqw0k2jy"))))
4a9e0585
DT
6354 (build-system ruby-build-system)
6355 (arguments
6356 '(#:test-target "spec"))
6357 (native-inputs
6358 `(("ruby-rake-compiler" ,ruby-rake-compiler)
6359 ("ruby-hoe" ,ruby-hoe)
6360 ("ruby-rspec" ,ruby-rspec)))
6361 (inputs
ffc4869e 6362 `(("postgresql" ,postgresql)))
4a9e0585
DT
6363 (synopsis "Ruby interface to PostgreSQL")
6364 (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
4db80f8b 6365with PostgreSQL 9.0 and later.")
4a9e0585
DT
6366 (home-page "https://bitbucket.org/ged/ruby-pg")
6367 (license license:ruby)))
468e5657
DT
6368
6369(define-public ruby-byebug
6370 (package
6371 (name "ruby-byebug")
d5489a61 6372 (version "9.0.6")
468e5657
DT
6373 (source
6374 (origin
6375 (method url-fetch)
6376 (uri (rubygems-uri "byebug" version))
6377 (sha256
6378 (base32
d5489a61 6379 "1kbfcn65rgdhi72n8x9l393b89rvi5z542459k7d1ggchpb0idb0"))))
468e5657
DT
6380 (build-system ruby-build-system)
6381 (arguments
6382 '(#:tests? #f)) ; no tests
6383 (synopsis "Debugger for Ruby 2")
6384 (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
6385TracePoint C API for execution control and the Debug Inspector C API for call
6386stack navigation. The core component provides support that front-ends can
6387build on. It provides breakpoint handling and bindings for stack frames among
6388other things and it comes with a command line interface.")
7bf837fd 6389 (home-page "https://github.com/deivid-rodriguez/byebug")
468e5657 6390 (license license:bsd-2)))
64b6ccc3 6391
7aa00628
MC
6392;;; TODO: Make it the default byebug in core-updates.
6393(define-public ruby-byebug-11
6394 (package
6395 (inherit ruby-byebug)
6396 (name "ruby-byebug")
6397 (version "11.1.3")
6398 (source
6399 (origin
6400 (method git-fetch)
6401 (uri (git-reference
b0e7b699 6402 (url "https://github.com/deivid-rodriguez/byebug")
7aa00628
MC
6403 (commit (string-append "v" version))))
6404 (file-name (git-file-name name version))
6405 (sha256
6406 (base32
6407 "0vyy3k2s7dcndngj6m8kxhs1vxc2c93dw8b3yyand3srsg9ffpij"))
6408 (modules '((guix build utils)))
6409 (snippet
6410 '(begin
6411 ;; Remove wrappers that try to setup a bundle environment.
6412 (with-directory-excursion "bin"
6413 (for-each delete-file '("bundle" "rake" "rubocop"))
6414 ;; ruby-minitest doesn't come with a launcher, so fix the one
6415 ;; provided.
6416 (substitute* "minitest"
6417 (("load File\\.expand_path\\(\"bundle\".*") "")
6418 (("require \"bundler/setup\".*") "")))
6419 #t))))
6420 (arguments
6421 `(#:tests? #t
6422 #:phases
6423 (modify-phases %standard-phases
6424 (add-after 'unpack 'skip-tmp-path-sensitive-test
6425 (lambda _
6426 (substitute* "test/commands/where_test.rb"
6427 (("unless /cygwin\\|mswin\\|mingw\\|darwin/.*")
6428 "unless true\n"))
6429 #t))
6430 (add-before 'build 'compile
6431 (lambda _
6432 (invoke "rake" "compile")))
6433 (add-before 'check 'set-home
6434 (lambda _
6435 (setenv "HOME" (getcwd))
6436 #t)))))
6437 (native-inputs
6438 `(("bundler" ,bundler)
6439 ("ruby-chandler" ,ruby-chandler)
6440 ("ruby-minitest" ,ruby-minitest)
6441 ("ruby-pry" ,ruby-pry)
6442 ("ruby-rake-compiler" ,ruby-rake-compiler)
6443 ("ruby-rubocop" ,ruby-rubocop)
6444 ("ruby-yard" ,ruby-yard)))))
6445
5799bc2b
RW
6446(define-public ruby-netrc
6447 (package
6448 (name "ruby-netrc")
6449 (version "0.11.0")
6450 (source (origin
6451 (method url-fetch)
6452 (uri (rubygems-uri "netrc" version))
6453 (sha256
6454 (base32
6455 "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y"))))
6456 (build-system ruby-build-system)
6457 (arguments
6458 `(#:phases
6459 (modify-phases %standard-phases
6460 (replace 'check
6461 ;; There is no Rakefile and minitest can only run one file at once,
6462 ;; so we have to iterate over all test files.
6463 (lambda _
b23c1f50
MW
6464 (for-each (lambda (file)
6465 (invoke "ruby" "-Itest" file))
6466 (find-files "./test" "test_.*\\.rb"))
6467 #t)))))
5799bc2b
RW
6468 (native-inputs
6469 `(("ruby-minitest" ,ruby-minitest)))
6470 (synopsis "Library to read and update netrc files")
6471 (description
6472 "This library can read and update netrc files, preserving formatting
6473including comments and whitespace.")
6474 (home-page "https://github.com/geemus/netrc")
6475 (license license:expat)))
6476
3a6989ce
RW
6477(define-public ruby-unf-ext
6478 (package
6479 (name "ruby-unf-ext")
14db8f19 6480 (version "0.0.7.6")
3a6989ce
RW
6481 (source (origin
6482 (method url-fetch)
6483 (uri (rubygems-uri "unf_ext" version))
6484 (sha256
6485 (base32
14db8f19 6486 "1ll6w64ibh81qwvjx19h8nj7mngxgffg7aigjx11klvf5k2g4nxf"))))
3a6989ce 6487 (build-system ruby-build-system)
b809cc9a
RW
6488 (arguments
6489 `(#:phases
6490 (modify-phases %standard-phases
6491 (add-after 'build 'build-ext
14db8f19
MB
6492 (lambda _ (invoke "rake" "compile:unf_ext")))
6493 (add-before 'check 'lose-rake-compiler-dock-dependency
6494 (lambda _
6495 ;; rake-compiler-dock is listed in the gemspec, but only
6496 ;; required when cross-compiling.
6497 (substitute* "unf_ext.gemspec"
6498 ((".*rake-compiler-dock.*") ""))
6499 #t)))))
3a6989ce
RW
6500 (native-inputs
6501 `(("bundler" ,bundler)
6502 ("ruby-rake-compiler" ,ruby-rake-compiler)
6503 ("ruby-test-unit" ,ruby-test-unit)))
6504 (synopsis "Unicode normalization form support library")
6505 (description
6506 "This package provides unicode normalization form support for Ruby.")
6507 (home-page "https://github.com/knu/ruby-unf_ext")
6508 (license license:expat)))
6509
2632a067 6510(define-public ruby-tdiff
5071f17b
BW
6511 ;; Use a newer than released snapshot so that rspec-2 is not required.
6512 (let ((commit "b662a6048f08abc45c1a834e5f34dd1c662935e2"))
6513 (package
6514 (name "ruby-tdiff")
6515 (version (string-append "0.3.3-1." (string-take commit 8)))
6516 (source (origin
6517 (method git-fetch)
6518 (uri (git-reference
b0e7b699 6519 (url "https://github.com/postmodern/tdiff")
5071f17b
BW
6520 (commit commit)))
6521 (file-name (string-append name "-" version "-checkout"))
6522 (sha256
6523 (base32
6524 "0n3gq8rx49f7ln6zqlshqfg2mgqyy30rsdjlnki5mv307ykc7ad4"))))
6525 (build-system ruby-build-system)
6526 (native-inputs
6527 `(("ruby-rspec" ,ruby-rspec)
6528 ("ruby-yard" ,ruby-yard)
6529 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
6530 (synopsis "Calculate the differences between two tree-like structures")
6531 (description
6532 "This library provides functions to calculate the differences between two
2632a067 6533tree-like structures. It is similar to Ruby's built-in @code{TSort} module.")
5071f17b
BW
6534 (home-page "https://github.com/postmodern/tdiff")
6535 (license license:expat))))
2632a067 6536
f60f5002 6537(define-public ruby-nokogiri-diff
5b0c223a
BW
6538 ;; Use a newer than released snapshot so that rspec-2 is not required.
6539 (let ((commit "a38491e4d8709b7406f2cae11a50226d927d06f5"))
6540 (package
6541 (name "ruby-nokogiri-diff")
6542 (version (string-append "0.2.0-1." (string-take commit 8)))
6543 (source (origin
6544 (method git-fetch)
6545 (uri (git-reference
b0e7b699 6546 (url "https://github.com/postmodern/nokogiri-diff")
5b0c223a
BW
6547 (commit commit)))
6548 (file-name (string-append name "-" version "-checkout"))
6549 (sha256
6550 (base32
6551 "1ah2sfjh9n1p0ln2wkqzfl448ml7j4zfy6dhp1qgzq2m41php6rf"))))
6552 (build-system ruby-build-system)
6553 (propagated-inputs
6554 `(("ruby-tdiff" ,ruby-tdiff)
6555 ("ruby-nokogiri" ,ruby-nokogiri)))
6556 (native-inputs
6557 `(("ruby-rspec" ,ruby-rspec)
6558 ("ruby-yard" ,ruby-yard)
6559 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
6560 (synopsis "Calculate the differences between two XML/HTML documents")
6561 (description
6562 "@code{Nokogiri::Diff} adds the ability to calculate the
f60f5002 6563differences (added or removed nodes) between two XML/HTML documents.")
5b0c223a
BW
6564 (home-page "https://github.com/postmodern/nokogiri-diff")
6565 (license license:expat))))
f60f5002 6566
6dc21310
CB
6567(define-public ruby-racc
6568 (package
6569 (name "ruby-racc")
6570 (version "1.4.14")
6571 (source
6572 (origin
6573 (method url-fetch)
6574 (uri (rubygems-uri "racc" version))
6575 (sha256
6576 (base32
6577 "00yhs2ag7yy5v83mqvkbnhk9bvsh6mx3808k53n61ddzx446v1zl"))))
6578 (build-system ruby-build-system)
6579 (native-inputs
6580 `(("ruby-hoe" ,ruby-hoe)
6581 ("ruby-rake-compiler" ,ruby-rake-compiler)))
6582 (synopsis "LALR(1) parser generator for Ruby")
6583 (description
6584 "Racc is a LALR(1) parser generator. It is written in Ruby itself, and
6585generates Ruby program.")
6586 (home-page "http://i.loveruby.net/en/projects/racc/")
6587 (license (list
6588 ;; Generally licensed under the LGPL2.1, and some files also
6589 ;; available under the same license as Ruby.
6590 license:lgpl2.1
6591 license:ruby))))
6592
64b6ccc3
DT
6593(define-public ruby-rack
6594 (package
6595 (name "ruby-rack")
288d2480 6596 (version "2.0.6")
64b6ccc3
DT
6597 (source
6598 (origin
83870c32 6599 (method git-fetch)
1db791d5 6600 ;; Download from GitHub so that the patch can be applied.
83870c32
EF
6601 (uri (git-reference
6602 (url "https://github.com/rack/rack")
6603 (commit version)))
6604 (file-name (git-file-name name version))
64b6ccc3
DT
6605 (sha256
6606 (base32
83870c32 6607 "1n7z4g1x6yxip096cdc04wq7yk7ywpinq28g2xjb46r4nlv5h0j6"))
1db791d5
BW
6608 ;; Ignore test which fails inside the build environment but works
6609 ;; outside.
6610 (patches (search-patches "ruby-rack-ignore-failing-test.patch"))))
64b6ccc3
DT
6611 (build-system ruby-build-system)
6612 (arguments
6613 '(#:phases
6614 (modify-phases %standard-phases
6615 (add-before 'check 'fix-tests
6616 (lambda _
6617 ;; A few of the tests use the length of a file on disk for
6618 ;; Content-Length and Content-Range headers. However, this file
6619 ;; has a shebang in it which an earlier phase patches, growing
6620 ;; the file size from 193 to 239 bytes when the store prefix is
6621 ;; "/gnu/store".
6622 (let ((size-diff (- (string-length (which "ruby"))
6623 (string-length "/usr/bin/env ruby"))))
6624 (substitute* '("test/spec_file.rb")
6625 (("193")
6626 (number->string (+ 193 size-diff)))
6627 (("bytes(.)22-33" all delimiter)
6628 (string-append "bytes"
6629 delimiter
6630 (number->string (+ 22 size-diff))
6631 "-"
6632 (number->string (+ 33 size-diff))))))
83870c32
EF
6633 #t))
6634 (add-before 'reset-gzip-timestamps 'make-files-writable
6635 (lambda* (#:key outputs #:allow-other-keys)
6636 ;; Make sure .gz files are writable so that the
6637 ;; 'reset-gzip-timestamps' phase can do its work.
6638 (let ((out (assoc-ref outputs "out")))
6639 (for-each make-file-writable
6640 (find-files out "\\.gz$"))
6641 #t))))))
64b6ccc3 6642 (native-inputs
1db791d5
BW
6643 `(("ruby-minitest" ,ruby-minitest)
6644 ("ruby-minitest-sprint" ,ruby-minitest-sprint)
6645 ("which" ,which)))
6646 (propagated-inputs
6647 `(("ruby-concurrent" ,ruby-concurrent)))
64b6ccc3
DT
6648 (synopsis "Unified web application interface for Ruby")
6649 (description "Rack provides a minimal, modular and adaptable interface for
6650developing web applications in Ruby. By wrapping HTTP requests and responses,
6651it unifies the API for web servers, web frameworks, and software in between
6652into a single method call.")
2f3800e5 6653 (home-page "https://rack.github.io/")
64b6ccc3 6654 (license license:expat)))
62e4cc5a 6655
20a0f804
BW
6656(define-public ruby-rack-test
6657 (package
6658 (name "ruby-rack-test")
6659 (version "0.8.3")
6660 (source
6661 (origin
6662 (method url-fetch)
6663 (uri (rubygems-uri "rack-test" version))
6664 (sha256
6665 (base32
6666 "14ij39zywvr1i9f6jsixfg4zxi2q1m1n1nydvf47f0b6sfc9mv1g"))))
6667 (build-system ruby-build-system)
6668 (arguments
6669 ;; Disable tests because of circular dependencies: requires sinatra,
6670 ;; which requires rack-protection, which requires rack-test. Instead
6671 ;; simply require the library.
6672 `(#:phases
6673 (modify-phases %standard-phases
6674 (replace 'check
6675 (lambda _
6676 (invoke "ruby" "-Ilib" "-r" "rack/test"))))))
6677 (propagated-inputs
6678 `(("ruby-rack" ,ruby-rack)))
6679 (synopsis "Testing API for Rack applications")
6680 (description
6681 "Rack::Test is a small, simple testing API for Rack applications. It can
6682be used on its own or as a reusable starting point for Web frameworks and
6683testing libraries to build on.")
6684 (home-page "https://github.com/rack-test/rack-test")
6685 (license license:expat)))
6686
a0a7e690
BW
6687(define-public ruby-rack-protection
6688 (package
6689 (name "ruby-rack-protection")
3355e49c 6690 (version "2.0.5")
a0a7e690
BW
6691 (source
6692 (origin
6693 (method url-fetch)
6694 (uri (rubygems-uri "rack-protection" version))
6695 (sha256
6696 (base32
3355e49c 6697 "15167q25rmxipqwi6hjqj3i1byi9iwl3xq9b7mdar7qiz39pmjsk"))))
a0a7e690
BW
6698 (build-system ruby-build-system)
6699 (arguments
fafeeaa2 6700 '(;; Tests missing from the gem.
a0a7e690
BW
6701 #:tests? #f))
6702 (propagated-inputs
6703 `(("ruby-rack" ,ruby-rack)))
6704 (native-inputs
6705 `(("bundler" ,bundler)
6706 ("ruby-rspec" ,ruby-rspec-2)
6707 ("ruby-rack-test" ,ruby-rack-test)))
6708 (synopsis "Rack middleware that protects against typical web attacks")
6709 (description "Rack middleware that can be used to protect against typical
6710web attacks. It can protect all Rack apps, including Rails. For instance, it
6711protects against cross site request forgery, cross site scripting,
6712clickjacking, directory traversal, session hijacking and IP spoofing.")
6713 (home-page "https://github.com/sinatra/sinatra/tree/master/rack-protection")
6714 (license license:expat)))
6715
6edabcb2
CB
6716(define-public ruby-rainbow
6717 (package
6718 (name "ruby-rainbow")
6719 (version "3.0.0")
6720 (source
6721 (origin
6722 (method url-fetch)
6723 (uri (rubygems-uri "rainbow" version))
6724 (sha256
6725 (base32
6726 "0bb2fpjspydr6x0s8pn1pqkzmxszvkfapv0p4627mywl7ky4zkhk"))))
6727 (build-system ruby-build-system)
6728 (arguments
6729 '(#:phases
6730 (modify-phases %standard-phases
6731 ;; Run rspec directly, to avoid requiring Rubocop which is used from
6732 ;; the Rakefile.
6733 (replace 'check
6734 (lambda* (#:key tests? #:allow-other-keys)
6735 (when tests?
6736 (invoke "rspec"))
6737 #t)))))
6738 (native-inputs
6739 `(("bundler" ,bundler)
6740 ("ruby-rspec" ,ruby-rspec)))
6741 (synopsis "Colorize printed text on ANSI terminals")
6742 (description
6743 "@code{rainbow} provides a string presenter object to colorize strings by
6744wrapping them in ANSI escape codes.")
6745 (home-page "https://github.com/sickill/rainbow")
79193b20
CB
6746 (license license:expat)))
6747
6188d643
CB
6748(define-public ruby-rr
6749 (package
6750 (name "ruby-rr")
6751 (version "1.2.1")
6752 (source
6753 (origin
6754 (method url-fetch)
6755 (uri (rubygems-uri "rr" version))
6756 (sha256
6757 (base32
6758 "1n9g78ba4c2zzmz8cdb97c38h1xm0clircag00vbcxwqs4dq0ymp"))))
6759 (build-system ruby-build-system)
6760 (arguments
6761 '(#:tests? #f)) ; test files not included
6762 (native-inputs
6763 `(("bundler" ,bundler)
6764 ("ruby-rspec" ,ruby-rspec)))
6765 (synopsis "Ruby test double framework")
6766 (description
6767 "RR is a test double framework that features a rich selection of double
6768techniques and a terse syntax.")
6769 (home-page "https://rr.github.io/rr/")
6770 (license license:expat)))
6771
79193b20
CB
6772(define-public ruby-rest-client
6773 (package
6774 (name "ruby-rest-client")
6775 (version "2.0.2")
6776 (source
6777 (origin
6778 (method url-fetch)
6779 (uri (rubygems-uri "rest-client" version))
6780 (sha256
6781 (base32
6782 "1hzcs2r7b5bjkf2x2z3n8z6082maz0j8vqjiciwgg3hzb63f958j"))))
6783 (build-system ruby-build-system)
6784 (arguments
6785 '(#:phases
6786 (modify-phases %standard-phases
6787 (add-before 'check 'remove-unnecessary-development-dependencies
6788 (lambda _
6789 (substitute* "rest-client.gemspec"
6790 ;; Remove rubocop as it's unused. Rubocop also indirectly
6791 ;; depends on this package through ruby-parser and ruby-ast so
6792 ;; this avoids a dependency loop.
6793 ((".*rubocop.*") "\n")
6794 ;; Remove pry as it's unused, it's a debugging tool
6795 ((".*pry.*") "\n")
6796 ;; Remove an unnecessarily strict rdoc dependency
6797 ((".*rdoc.*") "\n"))
6798 #t))
6799 (add-before 'check 'delete-network-dependent-tests
6800 (lambda _
6801 (delete-file "spec/integration/request_spec.rb")
6802 (delete-file "spec/integration/httpbin_spec.rb")
6803 #t)))))
6804 (propagated-inputs
6805 `(("ruby-http-cookie" ,ruby-http-cookie)
6806 ("ruby-mime-types" ,ruby-mime-types)
6807 ("ruby-netrc" ,ruby-netrc)))
6808 (native-inputs
6809 `(("bundler" ,bundler)
eea094cc
TGR
6810 ("ruby-webmock" ,ruby-webmock-2)
6811 ("ruby-rspec" ,ruby-rspec)))
79193b20
CB
6812 (synopsis "Simple HTTP and REST client for Ruby")
6813 (description
6814 "@code{rest-client} provides a simple HTTP and REST client for Ruby,
6815inspired by the Sinatra microframework style of specifying actions:
6816@code{get}, @code{put}, @code{post}, @code{delete}.")
6817 (home-page "https://github.com/rest-client/rest-client")
6edabcb2
CB
6818 (license license:expat)))
6819
5c4c28f8
MC
6820(define-public ruby-rubocop-ast
6821 (package
6822 (name "ruby-rubocop-ast")
d0af85b1 6823 (version "0.3.0")
5c4c28f8
MC
6824 (source
6825 (origin
6826 (method git-fetch) ;no test suite in distributed gem
6827 (uri (git-reference
6828 (url "https://github.com/rubocop-hq/rubocop-ast.git")
6829 (commit (string-append "v" version))))
6830 (file-name (git-file-name name version))
6831 (sha256
6832 (base32
d0af85b1 6833 "1ycf6qcj8nbzk2js72priim4642lkn56w5kbny1nlryjkckxgm04"))))
5c4c28f8
MC
6834 (build-system ruby-build-system)
6835 (arguments
6836 `(#:test-target "spec"
6837 #:phases (modify-phases %standard-phases
6838 (add-after 'unpack 'disable-bundler
6839 (lambda _
6840 (substitute* "Rakefile"
6841 (("Bundler\\.setup.*") "nil\n"))
6842 #t))
6843 (replace 'replace-git-ls-files
6844 (lambda _
6845 (substitute* "rubocop-ast.gemspec"
6846 (("`git ls-files(.*)`" _ files)
6847 (format #f "`find ~a -type f| sort`" files)))
6848 #t)))))
6849 (native-inputs
6850 `(("ruby-bump" ,ruby-bump)
6851 ("ruby-rspec" ,ruby-rspec)))
6852 (propagated-inputs
6853 `(("ruby-parser" ,ruby-parser)))
6854 (synopsis "RuboCop's AST extensions and NodePattern functionality")
6855 (description "Rubocop::AST extends @code{ruby-parser} with classes used
6856by RuboCop to deal with Ruby's Abstract Syntax Tree (AST), in particular:
6857@itemize
6858@item @code{RuboCop::AST::Node}
6859@item @code{RuboCop::AST::NodePattern}
6860@end itemize")
6861 (home-page "https://rubocop.org/")
6862 (license license:expat)))
6863
e098bdae
MC
6864(define-public ruby-rexml
6865 (package
6866 (name "ruby-rexml")
6867 (version "3.2.4")
6868 (source
6869 (origin
6870 (method git-fetch) ;no tests in distributed gem
6871 (uri (git-reference
6872 (url "https://github.com/ruby/rexml.git")
6873 (commit (string-append "v" version))))
6874 (file-name (git-file-name name version))
6875 (sha256
6876 (base32
6877 "0rhjjbkaq2f2cs8hyr2i4yjqpcyl8m0wmr2cypa401m3fvz4221i"))))
6878 (build-system ruby-build-system)
6879 (synopsis "XML toolkit for Ruby")
6880 (description "Inspired by Electric XML library for Java, REXML aims to be
6881easy-to-use API, small and fast. It supports both tree and stream document
6882parsing.")
6883 (home-page "https://github.com/ruby/rexml")
6884 (license license:bsd-2)))
6885
93ec41c6
MC
6886(define-public ruby-character-set
6887 (package
6888 (name "ruby-character-set")
6889 (version "1.4.0")
6890 (source
6891 (origin
6892 (method url-fetch)
6893 (uri (rubygems-uri "character_set" version))
6894 (sha256
6895 (base32
6896 "0affq9n77vwy897ri2zhmfinfagf37hcwwimrccy1bcxan9mj3h3"))))
6897 (build-system ruby-build-system)
6898 (arguments '(#:tests? #f)) ;avoid a cycle with ruby-regexp-parser
6899 (synopsis "Ruby library to manipulate Unicode")
6900 (description "CharacterSet is a C-extended Ruby library to work with sets
6901of Unicode code points. It can read and write these sets in various formats
6902and implements the @code{stdlib} @code{Set} interface for them. It also
6903offers an alternate paradigm of @code{String} processing which grants much
6904better performance than @code{Regexp} and @code{String} methods from the
6905@code{stdlib} where applicable. Many parts can be used independently, e.g.:
6906@itemize
6907@item @code{CharacterSet::Character}
6908@item @code{CharacterSet::Parser}
6909@item @code{CharacterSet::Writer}
6910@item @code{RangeCompressor}
6911@end itemize")
6912 (home-page "https://github.com/jaynetics/character_set")
6913 (license license:expat)))
6914
ac75f1df
MC
6915(define-public ruby-range-compressor
6916 (package
6917 (name "ruby-range-compressor")
6918 (version "1.0.0")
6919 (source
6920 (origin
6921 (method git-fetch)
6922 (uri (git-reference
6923 (url "https://github.com/janosch-x/range_compressor.git")
6924 (commit (string-append "v" version))))
6925 (file-name (git-file-name name version))
6926 (sha256
6927 (base32
6928 "0y8slri2msyyg2szgwgriqd6qw9hkxycssdrcl5lk2dbcq5zvn54"))))
6929 (build-system ruby-build-system)
6930 (arguments
6931 `(#:test-target "spec"
6932 #:phases (modify-phases %standard-phases
6933 (add-after 'extract-gemspec 'strip-version-requirements
6934 (lambda _
6935 (substitute* "range_compressor.gemspec"
6936 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
6937 (string-append stripped "\n")))
6938 #t)))))
6939 (native-inputs
6940 `(("ruby-rspec" ,ruby-rspec)))
6941 (synopsis "Simple arrays of objects to arrays of ranges compressor")
6942 (description "RangeCompresses is a tiny library that allows compressing
6943arrays of objects into arrays of ranges. For example, it can turn the
6944following: @code{[1, 2, 3, 4, 6, 8, 9, 10]} into @code{[1..4, 6..6, 8..10]}.")
6945 (home-page "https://github.com/janosch-x/range_compressor")
6946 (license license:expat)))
6947
8aba0333
MC
6948(define-public ruby-regexp-property-values
6949 (package
6950 (name "ruby-regexp-property-values")
6951 (version "1.0.0")
6952 (source
6953 (origin
6954 (method git-fetch)
6955 (uri (git-reference ;no test suite in distributed gem
6956 (url "https://github.com/jaynetics/regexp_property_values.git")
6957 (commit (string-append "v" version))))
6958 (file-name (git-file-name name version))
6959 (sha256
6960 (base32
6961 "0l3fjmscg1wxn7kc6bl022cc6k5d91pwb7daq1b5w36kvsx52w1j"))))
6962 (build-system ruby-build-system)
6963 (arguments
6964 '(#:test-target "default"))
6965 (native-inputs
6966 `(("ruby-character-set" ,ruby-character-set)
6967 ("ruby-rake-compiler" ,ruby-rake-compiler)
6968 ("ruby-range-compressor" ,ruby-range-compressor)
6969 ("ruby-rspec" ,ruby-rspec)))
6970 (synopsis "Inspect Ruby's regex engine property values")
6971 (description "This small library lets you see which property values are
6972supported by the regular expression engine of the Ruby version you are running
6973and can directly read out their code point ranges. In other words, it
6974determines all supported values for @code{\\p{value}} expressions and what
6975they match.")
6976 (home-page "https://github.com/jaynetics/regexp_property_values")
6977 (license license:expat)))
6978
b6f2a8d1
MC
6979(define-public ruby-regexp-parser
6980 (package
6981 (name "ruby-regexp-parser")
6982 (version "1.7.1")
6983 (source
6984 (origin
6985 (method git-fetch) ;bin/test missing from gem
6986 (uri (git-reference
6987 (url "https://github.com/ammar/regexp_parser.git")
6988 (commit (string-append "v" version))))
6989 (file-name (git-file-name name version))
6990 (sha256
6991 (base32
6992 "0dk9d4vpw31cc06s29fqyr1kq0kipym1mydifkcrnppvpl3pd53r"))))
6993 (build-system ruby-build-system)
6994 (arguments
6995 '(#:test-target "default"
6996 #:phases (modify-phases %standard-phases
6997 (add-before 'build 'compile-scanner.rb
6998 (lambda _
6999 (invoke "rake" "build")
7000 ;; XXX: This is needed otherwise the install
7001 ;; phase fails to delete the installed cached
7002 ;; gem file.
7003 (delete-file-recursively "pkg")
7004 #t)))))
7005 (native-inputs
7006 `(("ragel" ,ragel)
7007 ("ruby-regexp-property-values" ,ruby-regexp-property-values)
7008 ("ruby-rspec" ,ruby-rspec)))
7009 (synopsis "A regular expression parser library for Ruby ")
7010 (description "A Ruby gem for tokenizing, parsing, and transforming regular
7011expressions. It comprises the following components:
7012@itemize
7013@item A scanner/tokenizer based on Ragel,
7014@item A lexer that produces a stream of token objects,
7015@item A parser that produces a tree of Expression objects.
7016@end itemize")
7017 (home-page "https://github.com/ammar/regexp_parser")
7018 (license license:expat)))
7019
12ed6da4
MC
7020(define-public ruby-test-queue
7021 (package
7022 (name "ruby-test-queue")
7023 (version "0.4.2")
7024 (source
7025 (origin
7026 (method url-fetch)
7027 (uri (rubygems-uri "test-queue" version))
7028 (sha256
7029 (base32
7030 "0hvm3n1qrqxqilhqk4rjivw3gcrd08zz1i6am9qzg1ppjxv6f36f"))))
7031 (build-system ruby-build-system)
7032 (arguments
7033 '(#:phases
7034 (modify-phases %standard-phases
7035 (replace 'check
7036 (lambda* (#:key tests? #:allow-other-keys)
7037 (when tests?
7038 (invoke "rspec"))
7039 #t)))))
7040 (native-inputs
7041 `(("ruby-rspec" ,ruby-rspec)))
7042 (synopsis "Minitest/RSpec parallel test runner for CI environments")
7043 (description "The test-queue module is a parallel test runner,
7044built using a centralized queue to ensure optimal distribution of
7045tests between workers. It is specifically optimized for Continuous
7046Integration (CI) environments: build statistics from each run are
7047stored locally and used to sort the queue at the beginning of the next
7048run.")
7049 (home-page "https://github.com/tmm1/test-queue")
7050 (license license:expat)))
7051
5d8fe6de
CB
7052(define-public ruby-rubocop
7053 (package
7054 (name "ruby-rubocop")
c164c402 7055 (version "0.88.0")
5d8fe6de
CB
7056 (source
7057 (origin
c164c402
MC
7058 (method git-fetch) ;no tests in distributed gem
7059 (uri (git-reference
7060 (url "https://github.com/rubocop-hq/rubocop.git")
7061 (commit (string-append "v" version))))
7062 (file-name (git-file-name name version))
5d8fe6de
CB
7063 (sha256
7064 (base32
c164c402
MC
7065 "1d06893jp8pd85fvgp5d16vqcf31bafi430v4f4y746ihyvhzz5r"))
7066 (patches (search-patches "ruby-rubocop-break-dependency-cycle.patch"))))
5d8fe6de
CB
7067 (build-system ruby-build-system)
7068 (arguments
c164c402
MC
7069 '(#:test-target "default"
7070 #:phases
7071 (modify-phases %standard-phases
7072 (add-after 'unpack 'remove-problematic-tests
7073 ;; These tests depend on Rubocop extensions, which cannot be
7074 ;; included as they cause a dependency cycle with Rubocop itself.
7075 (lambda _
7076 (delete-file "spec/rubocop/config_loader_spec.rb")
7077 (substitute* "Gemfile"
7078 ((".*'rubocop-performance'.*") "")
7079 ((".*'rubocop-rspec'.*") ""))
7080 ;; Prevent "Unnecessary disabling of RSpec/* (unknown cop)"
7081 ;; errors.
7082 (substitute* (find-files "spec/rubocop/cop/" "_spec\\.rb$")
7083 (("# (rubocop:(enable|disable) RSpec.*)" _ what)
7084 (string-append "# Disabled: " what)))
7085 #t))
7086 (add-after 'unpack 'disable-bundler
7087 (lambda _
7088 (substitute* "Rakefile"
7089 (("Bundler\\.setup.*") "nil\n"))
7090 #t))
7091 (replace 'replace-git-ls-files
7092 (lambda _
7093 (substitute* "rubocop.gemspec"
7094 (("`git ls-files(.*)`" _ files)
7095 (format #f "`find ~a -type f| sort`" files)))
7096 #t))
7097 (add-before 'check 'set-home
7098 (lambda _
7099 (setenv "HOME" (getcwd))
7100 #t))
7101 (add-before 'check 'make-adoc-files-writable
7102 (lambda _
7103 (let ((adoc-files (find-files "docs/modules/ROOT/pages"
7104 "\\.adoc$")))
7105 (for-each make-file-writable adoc-files))
7106 #t)))))
7107 (native-inputs
7108 `(("ruby-bump" ,ruby-bump)
7109 ("ruby-pry" ,ruby-pry)
7110 ("ruby-rspec" ,ruby-rspec)
7111 ("ruby-test-queue" ,ruby-test-queue)
7112 ("ruby-webmock" ,ruby-webmock-2)
7113 ("ruby-yard" ,ruby-yard)))
5d8fe6de 7114 (propagated-inputs
c164c402
MC
7115 `(("ruby-parallel" ,ruby-parallel)
7116 ("ruby-parser" ,ruby-parser)
5d8fe6de 7117 ("ruby-rainbow" ,ruby-rainbow)
c164c402
MC
7118 ("ruby-regexp-parser" ,ruby-regexp-parser)
7119 ("ruby-rexml" ,ruby-rexml)
7120 ("ruby-rubocop-ast" ,ruby-rubocop-ast)
5d8fe6de 7121 ("ruby-progressbar" ,ruby-progressbar)
5d8fe6de
CB
7122 ("ruby-unicode-display-width" ,ruby-unicode-display-width)))
7123 (synopsis "Ruby code style checking tool")
7124 (description
7125 "@code{rubocop} is a Ruby code style checking tool. It aims to enforce
7126the community-driven Ruby Style Guide.")
7127 (home-page "https://github.com/rubocop-hq/rubocop")
7128 (license license:expat)))
7129
6ef85256
BW
7130(define-public ruby-contest
7131 (package
7132 (name "ruby-contest")
7133 (version "0.1.3")
7134 (source
7135 (origin
7136 (method url-fetch)
7137 (uri (rubygems-uri "contest" version))
7138 (sha256
7139 (base32
7140 "1p9f2292b7b0fbrcjswvj9v01z7ig5ig52328wyqcabgb553qsdf"))))
7141 (build-system ruby-build-system)
7142 (synopsis "Write declarative tests using nested contexts")
7143 (description
7144 "Contest allows writing declarative @code{Test::Unit} tests using nested
7145contexts without performance penalties.")
7146 (home-page "https://github.com/citrusbyte/contest")
7147 (license license:expat)))
7148
c4550f75
BW
7149(define-public ruby-creole
7150 (package
7151 (name "ruby-creole")
7152 (version "0.5.0")
7153 (source
7154 (origin
7155 (method url-fetch)
7156 (uri (rubygems-uri "creole" version))
7157 (sha256
7158 (base32
7159 "00rcscz16idp6dx0dk5yi5i0fz593i3r6anbn5bg2q07v3i025wm"))))
7160 (build-system ruby-build-system)
7161 (native-inputs
7162 `(("ruby-bacon" ,ruby-bacon)))
7163 (synopsis "Creole markup language converter")
7164 (description
7165 "Creole is a lightweight markup language and this library for converting
7166creole to @code{HTML}.")
7167 (home-page "https://github.com/minad/creole")
7168 (license license:ruby)))
7169
6aaa815e
PP
7170(define-public ruby-docile
7171 (package
7172 (name "ruby-docile")
7173 (version "1.1.5")
7174 (source
7175 (origin
7176 (method url-fetch)
7177 (uri (rubygems-uri "docile" version))
7178 (sha256
7179 (base32
7180 "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx"))))
7181 (build-system ruby-build-system)
7182 (arguments
7183 '(#:tests? #f)) ; needs github-markup, among others
7184 (synopsis "Ruby EDSL helper library")
7185 (description "Docile is a Ruby library that provides an interface for
7186creating embedded domain specific languages (EDSLs) that manipulate existing
7187Ruby classes.")
7188 (home-page "https://ms-ati.github.io/docile/")
7189 (license license:expat)))
7190
fab8fed3
MC
7191(define-public ruby-middleware
7192 (package
7193 (name "ruby-middleware")
7194 (version "0.1.0")
7195 (source
7196 (origin
7197 (method url-fetch)
7198 (uri (rubygems-uri "middleware" version))
7199 (sha256
7200 (base32
7201 "0703nkf2v371wqr41c04x5qid7ww45cxqv3hnlg07if3b3xrm9xl"))))
7202 (build-system ruby-build-system)
7203 (arguments '(#:tests? #f)) ;no test suite
7204 (synopsis "Implementation of a middleware abstraction for Ruby")
7205 (description "Middleware is a generalized implementation of a middleware
7206abstraction for Ruby.")
7207 (home-page "https://github.com/mitchellh/middleware")
7208 (license license:expat)))
7209
1d537c71
MC
7210(define-public ruby-benchmark-ips
7211 (package
7212 (name "ruby-benchmark-ips")
7213 (version "2.8.2")
7214 (source
7215 (origin
7216 (method url-fetch)
7217 (uri (rubygems-uri "benchmark-ips" version))
7218 (sha256
7219 (base32
7220 "1n9397j7kh4vvikfann1467qgksc679imlr50hax3lk1q3af8kdw"))))
7221 (build-system ruby-build-system)
7222 (native-inputs
7223 `(("ruby-hoe" ,ruby-hoe)))
7224 (synopsis "Iterations per second enhancement for the Ruby Benchmark module")
7225 (description "Benchmark-ips enhances the Ruby Benchmark module with the
7226iterations per second count. For short snippets of code, it can automatically
7227figure out how many times to run the code to get interesting data.")
7228 (home-page "https://github.com/evanphx/benchmark-ips")
7229 (license license:expat)))
7230
fc5d1c5a
MC
7231(define-public ruby-ffi-rzmq-core
7232 (package
7233 (name "ruby-ffi-rzmq-core")
7234 (version "1.0.7")
7235 (source
7236 (origin
7237 (method url-fetch)
7238 (uri (rubygems-uri "ffi-rzmq-core" version))
7239 (sha256
7240 (base32
7241 "0amkbvljpjfnv0jpdmz71p1i3mqbhyrnhamjn566w0c01xd64hb5"))))
7242 (build-system ruby-build-system)
7243 (arguments
7244 `(#:phases
7245 (modify-phases %standard-phases
7246 (add-after 'unpack 'patch-libzmq-search-path
7247 (lambda* (#:key inputs #:allow-other-keys)
7248 (let ((zeromq (assoc-ref inputs "zeromq")))
7249 (substitute* "lib/ffi-rzmq-core/libzmq.rb"
7250 (("/usr/local/lib")
7251 (string-append zeromq "/lib")))
7252 #t)))
7253 (replace 'check
7254 (lambda _
7255 (invoke "rspec"))))))
7256 (native-inputs
7257 `(("ruby-rspec" ,ruby-rspec)))
7258 (inputs
7259 `(("zeromq" ,zeromq)))
7260 (propagated-inputs `(("ruby-ffi" ,ruby-ffi)))
7261 (synopsis "Low-level Ruby FFI wrapper for the ZeroMQ networking library")
7262 (description "This library only provides the FFI wrapper for the ZeroMQ
7263networking library. It can be used to implement a Ruby API for the ZeroMQ
7264library.")
7265 (home-page "https://github.com/chuckremes/ffi-rzmq-core")
7266 (license license:expat)))
7267
7a503516
MC
7268(define-public ruby-ffi-rzmq
7269 (package
7270 (name "ruby-ffi-rzmq")
7271 (version "2.0.7")
7272 (source
7273 (origin
7274 (method url-fetch)
7275 (uri (rubygems-uri "ffi-rzmq" version))
7276 (sha256
7277 (base32
7278 "14a5kxfnf8l3ngyk8hgmk30z07aj1324ll8i48z67ps6pz2kpsrg"))))
7279 (build-system ruby-build-system)
7280 (arguments '(#:tests? #t
7281 #:phases (modify-phases %standard-phases
7282 (replace 'check
7283 (lambda _
7284 (invoke "rspec"))))))
7285 (native-inputs
7286 `(("ruby-rspec" ,ruby-rspec)))
7287 (propagated-inputs
7288 `(("ruby-ffi-rzmq-core" ,ruby-ffi-rzmq-core)))
7289 (synopsis "High-level Ruby wrapper for the ZeroMQ networking library")
7290 (description "This library provides a high-level API that wraps the ZeroMQ
7291networking library using the Ruby foreign function interface (FFI). It is a
7292pure Ruby wrapper, hence is compatible with any Ruby runtime that has support
7293for FFI.")
7294 (home-page "https://github.com/chuckremes/ffi-rzmq")
7295 (license license:expat)))
7296
03a0f98a
MC
7297(define-public ruby-sawyer
7298 (package
7299 (name "ruby-sawyer")
7300 (version "0.8.2")
7301 (source
7302 (origin
7303 (method url-fetch)
7304 (uri (rubygems-uri "sawyer" version))
7305 (sha256
7306 (base32
7307 "0yrdchs3psh583rjapkv33mljdivggqn99wkydkjdckcjn43j3cz"))))
7308 (build-system ruby-build-system)
7309 (propagated-inputs
7310 `(("ruby-addressable" ,ruby-addressable)
7311 ("ruby-faraday" ,ruby-faraday)))
7312 (synopsis "Experimental hypermedia agent for Ruby")
7313 (description "Sawyer is an experimental hypermedia agent for Ruby built on
7314top of Faraday.")
7315 (home-page "https://github.com/lostisland/sawyer")
7316 (license license:expat)))
7317
aa3c76b1
MC
7318(define-public ruby-octokit
7319 (package
7320 (name "ruby-octokit")
7321 (version "4.18.0")
7322 (source
7323 (origin
7324 (method url-fetch)
7325 (uri (rubygems-uri "octokit" version))
7326 (sha256
7327 (base32
7328 "0zvfr9njmj5svi39fcsi2b0g7pcxb0vamw9dlyas8bg814jlzhi6"))))
7329 (build-system ruby-build-system)
7330 (arguments '(#:tests? #f)) ;no test suite in the gem release
7331 (propagated-inputs
7332 `(("ruby-faraday" ,ruby-faraday)
7333 ("ruby-sawyer" ,ruby-sawyer)))
7334 (synopsis "Ruby toolkit for the GitHub API")
7335 (description "Octokit wraps the GitHub API in a flat API client that
7336follows Ruby conventions and requires little knowledge of REST.")
7337 (home-page "https://github.com/octokit/octokit.rb")
7338 (license license:expat)))
7339
1157d2f8
MC
7340(define-public ruby-chandler
7341 (package
7342 (name "ruby-chandler")
7343 (version "0.9.0")
7344 (source
7345 (origin
7346 (method url-fetch)
7347 (uri (rubygems-uri "chandler" version))
7348 (sha256
7349 (base32
7350 "1n8a4mr2jkcz5vaaps45g2rxa2pzy1wb7cylgw85xmmyyp14lnrr"))))
7351 (build-system ruby-build-system)
7352 (native-inputs
7353 `(("ruby-rubocop" ,ruby-rubocop)))
7354 (propagated-inputs
7355 `(("ruby-netrc" ,ruby-netrc)
7356 ("ruby-octokit" ,ruby-octokit)))
7357 (synopsis "Sync CHANGELOG entries to GitHub's release notes")
7358 (description "Chandler syncs a project's CHANGELOG file entries to
7359GitHub's release notes to remove the need of manually entering release
7360notes.")
7361 (home-page "https://github.com/mattbrictson/chandler")
7362 (license license:expat)))
7363
acb28876
MC
7364(define-public ruby-pry-byebug
7365 (package
7366 (name "ruby-pry-byebug")
7367 (version "3.9.0")
7368 (source
7369 (origin
7370 (method git-fetch)
7371 (uri (git-reference
b0e7b699 7372 (url "https://github.com/deivid-rodriguez/pry-byebug")
acb28876
MC
7373 (commit (string-append "v" version))))
7374 (file-name (git-file-name name version))
7375 (sha256
7376 (base32
7377 "1kchrwccai92068p50zyd6mh524ywqnm0jw5g3lks7iwmf0xkmgc"))))
7378 (build-system ruby-build-system)
7379 (arguments
7380 `(#:phases (modify-phases %standard-phases
7381 (add-before 'check 'set-home
7382 (lambda _
7383 (setenv "HOME" (getcwd))
7384 #t)))))
7385 (native-inputs
7386 `(("ruby-chandler" ,ruby-chandler)
7387 ("ruby-rubocop" ,ruby-rubocop)
7388 ("ruby-simplecov" ,ruby-simplecov)))
7389 (propagated-inputs
7390 `(("ruby-byebug" ,ruby-byebug-11)
7391 ("ruby-pry" ,ruby-pry)))
7392 (synopsis "Step-by-step debugging and stack navigation in Pry")
7393 (description "This package adds step-by-step debugging and stack
7394navigation capabilities to @code{pry}, using @code{byebug}.")
7395 (home-page "https://github.com/deivid-rodriguez/pry-byebug")
7396 (license license:expat)))
7397
4d31fe6b
MC
7398(define-public ruby-binding-of-caller
7399 (package
7400 (name "ruby-binding-of-caller")
7401 (version "0.8.0")
7402 (source
7403 (origin
7404 (method url-fetch)
7405 (uri (rubygems-uri "binding_of_caller" version))
7406 (sha256
7407 (base32
7408 "05syqlks7463zsy1jdfbbdravdhj9hpj5pv2m74blqpv8bq4vv5g"))))
7409 (build-system ruby-build-system)
7410 ;; Attempting to run the test suite fails with a rake deprecation error
7411 ;; (see: https://github.com/banister/binding_of_caller/issues/76).
7412 (arguments '(#:tests? #f))
7413 (propagated-inputs
7414 `(("ruby-debug-inspector" ,ruby-debug-inspector)))
7415 (synopsis "Retrieve the binding of a method's caller")
7416 (description "The @code{binding_of_caller} module provides the
7417@code{Binding#of_caller} method. It allows accessing bindings from upper
7418frames in the call stack and can evaluate code in that context.")
7419 (home-page "https://github.com/banister/binding_of_caller")
7420 (license license:expat)))
7421
f4699abc
MC
7422(define-public ruby-pry-stack-explorer
7423 (package
7424 (name "ruby-pry-stack-explorer")
7425 (version "0.5.1")
7426 (source
7427 (origin
7428 (method url-fetch)
7429 (uri (rubygems-uri "pry-stack_explorer" version))
7430 (sha256
7431 (base32
7432 "157rd2n9pfvcmmicm0xkq8z4p6famaj13syrpra6b4032qpb1wn0"))))
7433 (build-system ruby-build-system)
7434 (arguments '(#:tests? #f)) ;no test suite in gem release
7435 (propagated-inputs
7436 `(("ruby-binding-of-caller" ,ruby-binding-of-caller)
7437 ("ruby-pry" ,ruby-pry)))
7438 (synopsis "Call-stack navigation plugin for the Pry REPL")
7439 (description "@code{pry-stack_explorer} is a plugin for the Pry REPL that
7440add support to navigate the call-stack.")
7441 (home-page "https://github.com/pry/pry-stack_explorer")
7442 (license license:expat)))
7443
1f014c97
MC
7444(define-public ruby-varint
7445 (package
7446 (name "ruby-varint")
7447 (version "0.1.1")
7448 (source
7449 (origin
7450 (method url-fetch)
7451 (uri (rubygems-uri "varint" version))
7452 (sha256
7453 (base32
7454 "1y0l2qc64cwsyv76ygg9bbjnk86riz2kq73kmn87gdrlmpiyrdac"))))
7455 (build-system ruby-build-system)
7456 (arguments '(#:tests? #f)) ;no test suite
7457 (synopsis "Variable length integers (varint) C extension for Ruby")
7458 (description "This package provides a small C extension to speed up
7459variable length integers (varint) in Ruby Protocol Buffers.")
7460 (home-page "https://github.com/liquidm/varint")
7461 (license license:bsd-3)))
7462
1b214174
MC
7463(define-public ruby-ruby-prof
7464 (package
7465 (name "ruby-ruby-prof")
7466 (version "1.4.1")
7467 (source
7468 (origin
7469 (method url-fetch)
7470 (uri (rubygems-uri "ruby-prof" version))
7471 (sha256
7472 (base32
7473 "12cd91m08ih0imfpy4k87618hd4mhyz291a6bx2hcskza4nf6d27"))))
7474 (build-system ruby-build-system)
7475 (arguments
7476 `(#:phases
7477 (modify-phases %standard-phases
7478 (add-after 'unpack 'patch-rakefile
7479 ;; This fixes the following error: "NameError: uninitialized
7480 ;; constant Bundler::GemHelper" (see:
7481 ;; https://github.com/ruby-prof/ruby-prof/issues/274).
7482 (lambda _
7483 (substitute* "Rakefile"
7484 ((".*require \"bundler/setup\".*" all)
7485 (string-append all " require 'bundler/gem_tasks'\n")))
7486 #t))
661ad8d7
MC
7487 ;; The LineNumbersTest test fails non-deterministically (see:
7488 ;; https://github.com/ruby-prof/ruby-prof/issues/276).
7489 (add-after 'extract-gemspec 'delete-flaky-test
7490 (lambda _
7491 (delete-file "test/line_number_test.rb")
7492 (substitute* "ruby-prof.gemspec"
7493 (("\"test/line_number_test\\.rb\"\\.freeze, ") ""))
7494 #t))
1b214174
MC
7495 (add-before 'check 'compile
7496 (lambda _
7497 (invoke "rake" "compile"))))))
7498 (native-inputs
7499 `(("bundler" ,bundler)
7500 ("ruby-minitest" ,ruby-minitest)
7501 ("ruby-rake-compiler" ,ruby-rake-compiler)
7502 ("ruby-rdoc" ,ruby-rdoc)))
7503 (synopsis "Fast code profiler for Ruby")
7504 (description "RubyProf is a fast code profiler for Ruby. Its features
7505include:
7506@table @asis
7507@item Speed
7508Being a C extension, it is many times faster than the standard Ruby profiler.
7509@item Measurement Modes
7510It can measure program wall time, process time, object allocations and memory
7511usage.
7512@item Reports
7513A variety of text and cross-referenced HTML reports can be generated.
7514@item Threads
7515Profiling multiple threads simultaneously is supported.
7516@end table")
7517 (home-page "https://github.com/ruby-prof/ruby-prof")
7518 (license license:bsd-2)))
7519
dff5392f
MC
7520(define-public ruby-cucumber-messages
7521 (package
7522 (name "ruby-cucumber-messages")
7523 (version "12.2.0")
7524 (source (origin
7525 (method git-fetch)
7526 (uri (git-reference
b0e7b699 7527 (url "https://github.com/cucumber/messages-ruby")
dff5392f
MC
7528 (commit "12cd07eac87bce7843fd1bb0bf64bc4da09f097c")))
7529 (file-name (git-file-name name version))
7530 (sha256
7531 (base32
7532 "16wwqfpsq7crvxc3q08lphgyh12cl2d83p1c79p312q4jmy9cn5a"))))
7533 (build-system ruby-build-system)
7534 (arguments
7535 `(#:phases (modify-phases %standard-phases
7536 (add-after 'unpack 'patch-protobuf.rb
7537 (lambda _
7538 (substitute* "rake/protobuf.rb"
7539 (("load 'protobuf/tasks/compile.rake'")
7540 "require 'protobuf/tasks'"))
7541 #t))
7542 (add-before 'build 'compile
7543 (lambda _
7544 (substitute* "Makefile"
7545 (("bundle exec ") "")
7546 (("include default.mk.*" all)
7547 (string-append "#" all)))
7548 (invoke "make")))
7549 (replace 'check
7550 (lambda _
7551 (invoke "rspec"))))))
7552 (propagated-inputs
7553 `(("ruby-protobuf" ,ruby-protobuf-cucumber)))
7554 (native-inputs
7555 `(("ruby-rspec" ,ruby-rspec)))
7556 (home-page "https://github.com/cucumber/messages-ruby")
7557 (synopsis "Cucumber Messages for Ruby (Protocol Buffers)")
7558 (description "Cucumber Messages for Ruby is a library which allows
7559serialization and deserialization of the protocol buffer messages used in
7560Cucumber.")
7561 (license license:expat)))
7562
44514637 7563(define-public ruby-gherkin
62e4cc5a 7564 (package
44514637 7565 (name "ruby-gherkin")
cfef316f
MC
7566 (version "14.0.1")
7567 (source (origin
7568 (method git-fetch)
7569 (uri (git-reference
7570 (url "https://github.com/cucumber/gherkin-ruby")
7571 (commit (string-append "v" version))))
7572 (file-name (git-file-name name version))
7573 (sha256
7574 (base32
7575 "1dwa8632nc6kijv8p257jl64rsjmc0fimlaqvxlkdi2h9n1nympb"))))
62e4cc5a
PP
7576 (build-system ruby-build-system)
7577 (native-inputs
cfef316f
MC
7578 `(("ruby-cucumber-messages" ,ruby-cucumber-messages)
7579 ("ruby-rspec" ,ruby-rspec)))
62e4cc5a 7580 (arguments
cfef316f 7581 `(#:test-target "spec"))
62e4cc5a 7582 (synopsis "Gherkin parser for Ruby")
44514637 7583 (description "Gherkin is a parser and compiler for the Gherkin language.
aada5f6f
CB
7584It is intended be used by all Cucumber implementations to parse
7585@file{.feature} files.")
cfef316f 7586 (home-page "https://github.com/cucumber/gherkin-ruby")
62e4cc5a 7587 (license license:expat)))
cd89fecb 7588
8f85018d
MB
7589(define-public ruby-gherkin-ruby
7590 (package
7591 (name "ruby-gherkin-ruby")
7592 (version "0.3.2")
702a1012 7593 (home-page "https://github.com/codegram/gherkin-ruby")
8f85018d
MB
7594 (source (origin
7595 (method url-fetch)
7596 (uri (rubygems-uri "gherkin-ruby" version))
7597 (sha256
7598 (base32
7599 "18ay7yiibf4sl9n94k7mbi4k5zj2igl4j71qcmkswv69znyx0sn1"))))
7600 (build-system ruby-build-system)
7601 (synopsis "Pure Ruby Gherkin parser")
7602 (description
7603 "Gherkin-ruby is a Gherkin parser written in pure Ruby and less than
7604200 lines of code.")
7605 ;; XXX: No license information anywhere but Readme.md.
7606 (license license:expat)))
7607
15b16c2c
CB
7608(define-public ruby-aruba
7609 (package
7610 (name "ruby-aruba")
cf7201c4 7611 (version "0.14.14")
15b16c2c
CB
7612 (source
7613 (origin
7614 (method url-fetch)
7615 (uri (rubygems-uri "aruba" version))
7616 (sha256
7617 (base32
cf7201c4 7618 "0l2mfpdxc03gdrbwc2hv4vdhjhqhfcdp6d02j05j64ncpi9srlqn"))))
15b16c2c
CB
7619 (build-system ruby-build-system)
7620 (arguments
7621 '(#:test-target "spec"
7622 #:phases
7623 (modify-phases %standard-phases
7624 (add-after 'unpack 'patch
7625 (lambda _
7626 (substitute* "spec/aruba/api_spec.rb"
7627 ;; This resolves some errors in the specs
7628 ;;
7629 ;; undefined method `parse' for Time:Class
7630 (("require 'spec_helper'")
7631 "require 'spec_helper'\nrequire 'time'"))
7632 ;; Avoid shebang issues in this spec file
7633 (substitute* "spec/aruba/matchers/command_spec.rb"
7634 (("/usr/bin/env bash")
7635 (which "bash")))
7636 #t))
7637 (add-before 'check 'remove-unnecessary-dependencies
7638 (lambda _
7639 (substitute* "Gemfile"
7640 ((".*byebug.*") "\n")
7641 ((".*pry.*") "\n")
7642 ((".*yaml.*") "\n")
7643 ((".*bcat.*") "\n")
7644 ((".*kramdown.*") "\n")
7645 ((".*rubocop.*") "\n")
7646 ((".*cucumber-pro.*") "\n")
7647 ((".*cucumber.*") "\n")
7648 ((".*license_finder.*") "\n")
7649 ((".*rake.*") "gem 'rake'\n")
15b16c2c 7650 ((".*relish.*") "\n"))
15b16c2c
CB
7651 (substitute* "aruba.gemspec"
7652 (("spec\\.add\\_runtime\\_dependency 'cucumber'.*")
7653 "spec.add_runtime_dependency 'cucumber'"))
7654 #t))
7655 (add-before 'check 'set-home
7656 (lambda _ (setenv "HOME" "/tmp") #t)))))
7657 (native-inputs
7658 `(("bundler" ,bundler)
7659 ("ruby-rspec" ,ruby-rspec)
cf7201c4
CB
7660 ("ruby-fuubar" ,ruby-fuubar)
7661 ("ruby-simplecov" ,ruby-simplecov)))
15b16c2c
CB
7662 (propagated-inputs
7663 `(("ruby-childprocess" ,ruby-childprocess)
7664 ("ruby-contracts" ,ruby-contracts)
7665 ("ruby-cucumber" ,ruby-cucumber)
7666 ("ruby-ffi" ,ruby-ffi)
7667 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
7668 ("ruby-thor" ,ruby-thor)
7669 ("ruby-yard" ,ruby-yard)))
7670 (synopsis "Test command-line applications with Cucumber, RSpec or Minitest")
7671 (description
7672 "Aruba is an extension for Cucumber, RSpec and Minitest for testing
7673command-line applications. It supports applications written in any
7674language.")
7675 (home-page "https://github.com/cucumber/aruba")
7676 (license license:expat)))
7677
7678;; A version of ruby-aruba without tests run so that circular dependencies can
7679;; be avoided.
7680(define ruby-aruba-without-tests
7681 (package
7682 (inherit ruby-aruba)
7683 (arguments '(#:tests? #f))
7684 (propagated-inputs
7685 `(("ruby-cucumber" ,ruby-cucumber-without-tests)
7686 ,@(alist-delete "ruby-cucumber"
7687 (package-propagated-inputs ruby-aruba))))
7688 (native-inputs '())))
7689
fd6577b4
MC
7690(define-public ruby-sys-uname
7691 (package
7692 (name "ruby-sys-uname")
7693 (version "1.2.1")
7694 (source
7695 (origin
7696 (method url-fetch)
7697 (uri (rubygems-uri "sys-uname" version))
7698 (sha256
7699 (base32
7700 "00p3wwvkdbg6pl38bchaagncv3i4fq4y0ks470imwykjanpy2ic0"))))
7701 (build-system ruby-build-system)
7702 (arguments
7703 `(#:test-target "spec"))
7704 (propagated-inputs `(("ruby-ffi" ,ruby-ffi)))
7705 (native-inputs `(("ruby-rspec" ,ruby-rspec)))
7706 (synopsis "Ruby interface for gathering system information")
7707 (description "The sys-uname library provides an interface for gathering
7708information about your current platform. It allows retrieving information
7709such as the OS name, OS version, system name, etc.")
7710 (home-page "https://github.com/djberg96/sys-uname")
7711 (license license:asl2.0)))
7712
ac3ec612
MC
7713(define-public ruby-cucumber-create-meta
7714 (package
7715 (name "ruby-cucumber-create-meta")
7716 (version "1.0.0")
7717 (source
7718 (origin
7719 (method url-fetch)
7720 (uri (rubygems-uri "cucumber-create-meta" version))
7721 (sha256
7722 (base32
7723 "0i0i3arymjrnjk72mg79w1a11607x4d0lrqafm9sz2gq9l52zasw"))))
7724 (build-system ruby-build-system)
7725 (arguments
7726 `(#:phases (modify-phases %standard-phases
7727 (add-after 'extract-gemspec 'relax-version-requirements
7728 (lambda _
7729 (substitute* ".gemspec"
7730 ((" 12\\.2")
7731 " 12.1"))
7732 #t))
7733 (replace 'check
7734 (lambda _
7735 (invoke "rspec"))))))
7736 (native-inputs
7737 `(("ruby-rspec" ,ruby-rspec)))
7738 (propagated-inputs
7739 `(("ruby-cucumber-messages" ,ruby-cucumber-messages)
7740 ("ruby-sys-uname" ,ruby-sys-uname)))
7741 (synopsis "Function to create @code{Meta} messages for Cucumber Ruby")
7742 (description "The @code{createMeta} utility function allows generating
7743system-specific @code{Meta} messages for Cucumber Ruby.")
7744 (home-page "https://github.com/cucumber/cucumber/tree/master/create-meta/ruby")
7745 (license license:expat)))
7746
f3574624
MC
7747(define-public ruby-cucumber-html-formatter
7748 (package
7749 (name "ruby-cucumber-html-formatter")
7750 (version "7.0.0")
7751 (source
7752 (origin
7753 (method url-fetch)
7754 (uri (rubygems-uri "cucumber-html-formatter" version))
7755 (sha256
7756 (base32
7757 "0lshj4sw9jw7687wrhknyb9kffblai3l843zgrznyqij3ga0bc62"))))
7758 (build-system ruby-build-system)
7759 (arguments
7760 `(#:phases (modify-phases %standard-phases
7761 (replace 'check
7762 (lambda _
7763 (invoke "rspec"))))))
7764 (native-inputs
7765 `(("ruby-rspec" ,ruby-rspec)))
7766 (propagated-inputs
7767 `(("ruby-cucumber-messages" ,ruby-cucumber-messages)))
7768 (synopsis "HTML formatter for Cucumber")
7769 (description "Cucumber HTML Formatter produces a HTML report for Cucumber
7770runs. It is built on top of cucumber-react and works with any Cucumber
7771implementation with a protocol buffer formatter that outputs Cucumber
7772messages.")
7773 (home-page "https://github.com/cucumber/cucumber/tree/\
7774master/html-formatter/ruby")
7775 (license license:expat)))
7776
15b16c2c
CB
7777(define-public ruby-cucumber
7778 (package
7779 (name "ruby-cucumber")
92ebbaad 7780 (version "4.1.0")
15b16c2c
CB
7781 (source
7782 (origin
7783 (method git-fetch)
7784 (uri (git-reference
b0e7b699 7785 (url "https://github.com/cucumber/cucumber-ruby")
15b16c2c
CB
7786 (commit (string-append "v" version))))
7787 (file-name (git-file-name name version))
7788 (sha256
7789 (base32
92ebbaad 7790 "0g9rqfslbzkkrq2kvl14fgknrhfbji3bjjpjxff5nc9wzd3hd549"))))
15b16c2c
CB
7791 (build-system ruby-build-system)
7792 (arguments
fa8e4dbf 7793 '(#:test-target "default"
15b16c2c
CB
7794 #:phases
7795 (modify-phases %standard-phases
fa8e4dbf
MC
7796 (add-after 'unpack 'disable-rubocop
7797 ;; Rubocop lint check fails with our more recent version.
7798 (lambda _
7799 (substitute* "Rakefile"
7800 (("spec cucumber rubocop")
7801 "spec cucumber"))
7802 #t))
92ebbaad 7803 (add-after 'extract-gemspec 'strip-version-requirements
15b16c2c 7804 (lambda _
fa8e4dbf 7805 (delete-file "Gemfile") ;do not use Bundler
92ebbaad
MC
7806 (substitute* "cucumber.gemspec"
7807 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
7808 (string-append stripped "\n")))
fa8e4dbf
MC
7809 #t))
7810 (add-before 'check 'set-home
7811 (lambda _
7812 (setenv "HOME" (getcwd))
15b16c2c
CB
7813 #t)))))
7814 (propagated-inputs
7815 `(("ruby-builder" ,ruby-builder)
7816 ("ruby-cucumber-core" ,ruby-cucumber-core)
92ebbaad
MC
7817 ("ruby-cucumber-create-meta" ,ruby-cucumber-create-meta)
7818 ("ruby-cucumber-html-formatter" ,ruby-cucumber-html-formatter)
7819 ("ruby-cucumber-messages" ,ruby-cucumber-messages)
15b16c2c 7820 ("ruby-cucumber-wire" ,ruby-cucumber-wire)
15b16c2c
CB
7821 ("ruby-diff-lcs" ,ruby-diff-lcs)
7822 ("ruby-gherkin" ,ruby-gherkin)
7823 ("ruby-multi-json" ,ruby-multi-json)
7824 ("ruby-multi-test" ,ruby-multi-test)))
7825 (native-inputs
92ebbaad 7826 `(;; Use a untested version of aruba, to avoid a circular dependency, as
15b16c2c 7827 ;; ruby-aruba depends on ruby-cucumber.
1628d57b 7828 ("ruby-aruba" ,ruby-aruba-without-tests)
15b16c2c
CB
7829 ("ruby-rspec" ,ruby-rspec)
7830 ("ruby-pry" ,ruby-pry)
92ebbaad
MC
7831 ("ruby-nokogiri" ,ruby-nokogiri)
7832 ("ruby-rubocop" ,ruby-rubocop)))
15b16c2c 7833 (synopsis "Describe automated tests in plain language")
92ebbaad
MC
7834 (description "Cucumber is a tool for running automated tests written in
7835plain language. It's designed to support a Behaviour Driven Development (BDD)
15b16c2c
CB
7836software development workflow.")
7837 (home-page "https://cucumber.io/")
7838 (license license:expat)))
7839
7840(define ruby-cucumber-without-tests
7841 (package (inherit ruby-cucumber)
7842 (arguments
7843 '(#:tests? #f))
7844 (native-inputs
7845 '())))
7846
f048ef52
MC
7847(define-public ruby-coveralls
7848 (package
7849 (name "ruby-coveralls")
7850 (version "0.8.23")
7851 (source
7852 (origin
7853 (method url-fetch)
7854 (uri (rubygems-uri "coveralls" version))
7855 (sha256
7856 (base32
7857 "1mv4fn5lfxhy7bc2f1lpnc5yp9mvv97az77j4r7jgrxcqwn8fqxc"))))
7858 (build-system ruby-build-system)
7859 ;; The test suite depends on ruby-vcr, which cannot be included in Guix
fe9993b1
MC
7860 ;; because of its nonfree, Hippocratic-derived license.
7861 (arguments
7862 `(#:tests? #f
7863 #:phases (modify-phases %standard-phases
7864 (add-after 'extract-gemspec 'strip-version-requirements
7865 ;; Keeping strict version requirements can cause problems
7866 ;; to users of the library, such as: Gem::ConflictError:
7867 ;; Unable to activate coveralls-0.8.23, because
7868 ;; simplecov-0.17.1 conflicts with simplecov (~> 0.16.1).
7869 (lambda _
7870 (substitute* "coveralls-ruby.gemspec"
7871 (("(.*add_.*dependency\\([^,]+), .*" _ stripped)
7872 (string-append stripped ")\n")))
7873 #t)))))
f048ef52
MC
7874 (propagated-inputs
7875 `(("ruby-json" ,ruby-json)
7876 ("ruby-term-ansicolor" ,ruby-term-ansicolor)
7877 ("ruby-thor" ,ruby-thor)
7878 ("ruby-tins" ,ruby-tins)))
7879 (synopsis "Ruby implementation of the Coveralls API")
7880 (description "This package provides a Ruby implementation of the Coveralls
7881API.")
7882 (home-page "https://coveralls.io")
7883 (license license:expat)))
f2a1b7fa
MC
7884
7885(define-public ruby-unindent
7886 (package
7887 (name "ruby-unindent")
7888 (version "1.0")
7889 (source
7890 (origin
7891 (method url-fetch)
7892 (uri (rubygems-uri "unindent" version))
7893 (sha256
7894 (base32
7895 "1wqh3rzv8589yzibigminxx3qpmj2nqj28f90xy1sczk1pijmcrd"))))
7896 (build-system ruby-build-system)
7897 (synopsis "Ruby method to unindent strings")
7898 (description "This module provides a @code{String#unindent} Ruby method to
7899unindent strings, which can be useful to unindent multiline strings embedded
7900in already-indented code.")
7901 (home-page "https://github.com/mynyml/unindent")
7902 (license license:expat)))
f048ef52 7903
cd89fecb
PP
7904(define-public ruby-cucumber-core
7905 (package
7906 (name "ruby-cucumber-core")
95a5d992 7907 (version "7.1.0")
cd89fecb
PP
7908 (source
7909 (origin
95a5d992
MC
7910 (method git-fetch)
7911 (uri (git-reference
b0e7b699 7912 (url "https://github.com/cucumber/cucumber-ruby-core")
95a5d992
MC
7913 (commit (string-append "v" version))))
7914 (file-name (git-file-name name version))
cd89fecb
PP
7915 (sha256
7916 (base32
95a5d992 7917 "1p5wb6wbggbw37ariyag4kxpiczznvgm3c8cnz1744dmbj79q1rn"))))
cd89fecb 7918 (build-system ruby-build-system)
95a5d992
MC
7919 (arguments
7920 `(#:test-target "spec"
7921 #:phases
7922 (modify-phases %standard-phases
7923 (add-after 'extract-gemspec 'relax-version-requirements
7924 (lambda _
7925 (substitute* "cucumber-core.gemspec"
7926 (("'cucumber-tag-expressions',.*")
7927 "'cucumber-tag-expressions', '>=2.0.0'\n"))
7928 #t)))))
7929 (native-inputs
7930 `(("ruby-rspec" ,ruby-rspec)
7931 ("ruby-coveralls" ,ruby-coveralls)
7932 ("ruby-rubocop" ,ruby-rubocop)
7933 ("ruby-simplecov" ,ruby-simplecov)
7934 ("ruby-unindent" ,ruby-unindent)))
cd89fecb 7935 (propagated-inputs
95a5d992 7936 `(("ruby-cucumber-messages" ,ruby-cucumber-messages)
5cd047e8
CB
7937 ("ruby-gherkin" ,ruby-gherkin)
7938 ("ruby-cucumber-tag-expressions" ,ruby-cucumber-tag-expressions)))
cd89fecb
PP
7939 (synopsis "Core library for the Cucumber BDD app")
7940 (description "Cucumber is a tool for running automated tests
7941written in plain language. Because they're written in plain language,
7942they can be read by anyone on your team. Because they can be read by
7943anyone, you can use them to help improve communication, collaboration
7944and trust on your team.")
7945 (home-page "https://cucumber.io/")
7946 (license license:expat)))
212d563d 7947
fb1a8954
CB
7948(define-public ruby-cucumber-expressions
7949 (package
7950 (name "ruby-cucumber-expressions")
4ada4a42 7951 (version "10.2.0")
fb1a8954
CB
7952 (source
7953 (origin
4ada4a42
MC
7954 (method git-fetch)
7955 (uri (git-reference
b0e7b699 7956 (url "https://github.com/cucumber/cucumber-expressions-ruby")
4ada4a42
MC
7957 (commit (string-append "v" version))))
7958 (file-name (git-file-name name version))
fb1a8954
CB
7959 (sha256
7960 (base32
4ada4a42 7961 "1aivhcpjrmbvp9bg0y7g6zxh2swfvylvg0sapq5jc4i1y74k8npd"))))
fb1a8954
CB
7962 (build-system ruby-build-system)
7963 (arguments
7964 '(#:test-target "spec"))
7965 (native-inputs
4ada4a42 7966 `(("ruby-rspec" ,ruby-rspec)
fb1a8954
CB
7967 ("ruby-simplecov" ,ruby-simplecov)))
7968 (synopsis "Simpler alternative to Regular Expressions")
7969 (description "Cucumber Expressions offer similar functionality to Regular
7970Expressions, with a syntax that is easier to read and write. Cucumber
7971Expressions are extensible with parameter types.")
7972 (home-page "https://github.com/cucumber/cucumber-expressions-ruby")
7973 (license license:expat)))
7974
ce872770
CB
7975(define-public ruby-cucumber-wire
7976 (package
7977 (name "ruby-cucumber-wire")
6516827e 7978 (version "3.1.0")
ce872770
CB
7979 (source
7980 (origin
7981 (method url-fetch)
7982 (uri (rubygems-uri "cucumber-wire" version))
7983 (sha256
7984 (base32
6516827e 7985 "0z1n13lqv70zb2lcrvs2263lm0gsb3gz8gbv890kxzwp8cvd433k"))))
ce872770
CB
7986 (build-system ruby-build-system)
7987 (arguments
6516827e 7988 '(#:tests? #f ;tests use cucumber, causing a cycle
ce872770
CB
7989 #:phases
7990 (modify-phases %standard-phases
6516827e 7991 (add-after 'extract-gemspec 'relax-version-requirements
ce872770 7992 (lambda _
6516827e
MC
7993 (substitute* ".gemspec"
7994 ((" 10\\.1") " 10.2"))
ce872770 7995 #t)))))
6516827e
MC
7996 (propagated-inputs
7997 `(("ruby-cucumber-core" ,ruby-cucumber-core)
7998 ("ruby-cucumber-expressions" ,ruby-cucumber-expressions)
7999 ("ruby-cucumber-messages" ,ruby-cucumber-messages)))
ce872770 8000 (synopsis "Cucumber wire protocol plugin")
6516827e
MC
8001 (description "Cucumber's wire protocol allows step definitions to be
8002implemented and invoked on any platform.")
ce872770
CB
8003 (home-page "https://github.com/cucumber/cucumber-ruby-wire")
8004 (license license:expat)))
8005
0ce8f344
CB
8006(define-public ruby-cucumber-tag-expressions
8007 (package
8008 (name "ruby-cucumber-tag-expressions")
0d2c45ce 8009 (version "3.0.0")
0ce8f344
CB
8010 (source
8011 (origin
0d2c45ce
MC
8012 (method git-fetch)
8013 (uri (git-reference
b0e7b699 8014 (url "https://github.com/cucumber/tag-expressions-ruby")
0d2c45ce
MC
8015 (commit (string-append "v" version))))
8016 (file-name (git-file-name name version))
0ce8f344
CB
8017 (sha256
8018 (base32
0d2c45ce 8019 "15dw4w0npd4m6aw7zhqkjxxzngp42kswrkwfygxkxcxnhy5zl1vx"))))
0ce8f344
CB
8020 (build-system ruby-build-system)
8021 (arguments
0d2c45ce 8022 `(#:test-target "spec"))
0ce8f344
CB
8023 (native-inputs
8024 `(("ruby-rspec" ,ruby-rspec)))
8025 (synopsis "Cucumber tag expressions for Ruby")
0d2c45ce
MC
8026 (description "Cucumber tag expression parser for Ruby. A tag expression
8027is an infix boolean expression used by Cucumber.")
0ce8f344
CB
8028 (home-page "https://github.com/cucumber/tag-expressions-ruby")
8029 (license license:expat)))
8030
73a5aff7
CB
8031(define-public ruby-bindex
8032 (package
8033 (name "ruby-bindex")
8034 (version "0.5.0")
8035 (source
8036 (origin
8037 (method url-fetch)
8038 (uri (rubygems-uri "bindex" version))
8039 (sha256
8040 (base32
8041 "1wvhf4v8sk5x8li03pcc0v0wglmyv7ikvvg05bnms83dfy7s4k8i"))))
8042 (build-system ruby-build-system)
8043 (arguments
8044 '(#:test-target "default"))
8045 (native-inputs
8046 `(("bundler" ,bundler)
8047 ("ruby-rake-compiler" ,ruby-rake-compiler)))
8048 (synopsis "Provides access for bindings relating to Ruby exceptions")
8049 (description
8050 "@code{bindex} provides a way to access the bindings that relate to
8051exceptions in Ruby, providing more information about the context in which the
8052exception occurred.")
8053 (home-page "https://github.com/gsamokovarov/bindex")
8054 (license license:expat)))
8055
212d563d
PP
8056(define-public ruby-bio-logger
8057 (package
8058 (name "ruby-bio-logger")
8059 (version "1.0.1")
8060 (source
8061 (origin
8062 (method url-fetch)
8063 (uri (rubygems-uri "bio-logger" version))
8064 (sha256
8065 (base32
8066 "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
8067 (build-system ruby-build-system)
8068 (arguments
8069 `(#:tests? #f)) ; rake errors, missing shoulda
8070 (propagated-inputs
8071 `(("ruby-log4r" ,ruby-log4r)))
8072 (synopsis "Log4r wrapper for Ruby")
8073 (description "Bio-logger is a wrapper around Log4r adding extra logging
8074features such as filtering and fine grained logging.")
8075 (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
8076 (license license:expat)))
07f61cb2 8077
2db0f9c8
BW
8078(define-public ruby-yajl-ruby
8079 (package
8080 (name "ruby-yajl-ruby")
8081 (version "1.4.1")
8082 (source
8083 (origin
8084 (method url-fetch)
8085 (uri (rubygems-uri "yajl-ruby" version))
8086 (sha256
8087 (base32
8088 "16v0w5749qjp13xhjgr2gcsvjv6mf35br7iqwycix1n2h7kfcckf"))))
8089 (build-system ruby-build-system)
8090 (arguments
8091 '(#:test-target "spec"
8092 #:phases
8093 (modify-phases %standard-phases
8094 (add-before 'check 'patch-test-to-update-load-path
8095 (lambda _
8096 (substitute* "spec/parsing/large_number_spec.rb"
8097 (("require \"yajl\"")
8098 "$LOAD_PATH << 'lib'; require 'yajl'"))
8099 #t)))))
8100 (native-inputs
8101 `(("ruby-rake-compiler" ,ruby-rake-compiler)
8102 ("ruby-rspec" ,ruby-rspec)))
8103 (synopsis "Streaming JSON parsing and encoding library for Ruby")
8104 (description
8105 "Ruby C bindings to the Yajl JSON stream-based parser library. The API
8106is compatible with the JSON gem, so yajl-ruby can act as a drop in
8107replacement.
8108
8109A modified copy of yajl is used, and included in the package.")
8110 (home-page "https://github.com/brianmario/yajl-ruby")
8111 (license (list license:expat ; Ruby code, yajl_ext.c and yajl_ext.h
8112 license:bsd-3)))) ; Included, modified copy of yajl
8113
07f61cb2 8114(define-public ruby-yard
6499893e
BW
8115 (package
8116 (name "ruby-yard")
7eb8ff0b 8117 (version "0.9.25")
6499893e
BW
8118 (source
8119 (origin
f3fd70c0 8120 (method git-fetch)
6499893e 8121 ;; Tests do not pass if we build from the distributed gem.
f3fd70c0 8122 (uri (git-reference
65a61239
MC
8123 (url "https://github.com/lsegal/yard")
8124 (commit (string-append "v" version))))
f3fd70c0 8125 (file-name (git-file-name name version))
6499893e
BW
8126 (sha256
8127 (base32
7eb8ff0b 8128 "1x7y4s557hrnq439lih7nqg1y7ximardw75jx9i92x3yzpviqqwa"))))
6499893e
BW
8129 (build-system ruby-build-system)
8130 (arguments
65a61239
MC
8131 ;; Note: Tests are willfully disabled to alleviate dependency cycle
8132 ;; problems.
479c0324
MC
8133 `(#:tests? #f
8134 #:phases (modify-phases %standard-phases
8135 (add-after 'unpack 'do-not-set-date-in-gemspec
8136 ;; Fix a reproducibility issue (see:
8137 ;; https://github.com/lsegal/yard/issues/1343).
8138 (lambda _
8139 (substitute* "yard.gemspec"
8140 ((".*s\\.date.*") ""))
8141 #t)))))
6499893e 8142 (synopsis "Documentation generation tool for Ruby")
65a61239
MC
8143 (description "YARD is a documentation generation tool for the Ruby
8144programming language. It enables the user to generate consistent, usable
8145documentation that can be exported to a number of formats very easily, and
8146also supports extending for custom Ruby constructs such as custom class level
8147definitions.")
2f3800e5 8148 (home-page "https://yardoc.org")
6499893e 8149 (license license:expat)))
2cbcd23a 8150
df32ab11
MC
8151(define-public ruby-yard-with-tests
8152 (package
8153 (inherit ruby-yard)
8154 (name "ruby-yard-with-tests")
8155 (arguments
8156 (substitute-keyword-arguments (package-arguments ruby-yard)
8157 ((#:tests? _ #t) #t)
8158 ((#:test-target _ "default") "default")
8159 ((#:phases phases '%standard-phases)
8160 `(modify-phases ,phases
8161 (add-before 'check 'prepare-for-tests
8162 (lambda* (#:key tests? #:allow-other-keys)
8163 (when tests?
8164 (substitute* "Rakefile"
8165 ((".*[Ss]amus.*") ""))
8166 ;; Delete the Gemfile to avoid errors relating to it.
8167 (delete-file "Gemfile")
8168 ;; $HOME needs to be set to somewhere writeable for tests to
8169 ;; run.
8170 (setenv "HOME" "/tmp"))
8171 #t))))))
8172 (native-inputs
8173 `(("ruby-rspec" ,ruby-rspec)
8174 ("ruby-rack" ,ruby-rack)
8175 ("ruby-redcloth" ,ruby-redcloth)
8176 ("ruby-asciidoc" ,ruby-asciidoctor)))))
8177
908df675
MC
8178(define-public ruby-spectroscope
8179 (package
8180 (name "ruby-spectroscope")
8181 (version "0.1.0")
8182 (source
8183 (origin
8184 (method url-fetch)
8185 (uri (rubygems-uri "spectroscope" version))
8186 (sha256
8187 (base32
8188 "0iiid9sm110qhx0i1zkds710cvsnmhd308wbqa7slkzbq2akrb3y"))))
8189 (build-system ruby-build-system)
8190 (arguments
8191 `(#:phases
8192 (modify-phases %standard-phases
8193 (replace 'check
8194 (lambda _
8195 (with-output-to-file ".test"
8196 (lambda _
8197 (display
8198 "\
8199require 'ae/should'
8200require 'rspec'
8201
8202include RSpec
8203
8204Test.run :default do |run|
8205 run.files << 'spec/*_spec.rb'
8206end")))
8207 (invoke "ruby" "-Ilib" "-rrubytest" ".test"))))))
8208 (native-inputs
8209 `(("ruby-ae" ,ruby-ae)
8210 ("ruby-rspec" ,ruby-rspec)))
8211 (propagated-inputs
8212 `(("ruby-rubytest" ,ruby-rubytest)))
8213 (synopsis "Behavior-Driven Development (BDD) framework built on RubyTest")
8214 (description "Spectroscope is a Behavior-Driven Development (BDD)
8215framework built on RubyTest, designed to emulate RSpec in most respects. It
8216is assertion framework independent so any number of assertion systems can be
8217used, such as Assay or AE.")
8218 (home-page "http://rubyworks.github.com/spectroscope/")
8219 (license license:bsd-2)))
8220
24ffd91b
MC
8221(define-public ruby-tomparse
8222 (package
8223 (name "ruby-tomparse")
8224 (version "0.4.2")
8225 (source
8226 (origin
8227 (method url-fetch)
8228 (uri (rubygems-uri "tomparse" version))
8229 (sha256
8230 (base32
8231 "06xakk41f1kgj6j1ahkwn4r6cvidixvm4phhlrvmwb7c3pr8ygc8"))))
8232 (build-system ruby-build-system)
8233 ;; TODO: Tests require citron and rulebow, not yet packaged.
8234 (arguments '(#:tests? #f))
8235 (synopsis "TomDoc parser for Ruby")
8236 (description "TomParse is a TomDoc parser for Ruby. It takes a code
8237comment as input and parses it into a convenient object-oriented structure in
8238accordance with the TomDoc standard. See
8239@url{https://github.com/mojombo/tomdoc, TomDoc} for more information about the
8240TomDoc format.")
8241 (home-page "http://rubyworks.github.com/tomparse/")
8242 (license license:bsd-2)))
8243
257dee50
MC
8244(define-public ruby-yard-tomdoc
8245 (package
8246 (name "ruby-yard-tomdoc")
8247 (version "0.7.1")
8248 (source
8249 (origin
8250 (method url-fetch)
8251 (uri (rubygems-uri "yard-tomdoc" version))
8252 (sha256
8253 (base32
8254 "1725gs8b8klpwhrvnf2wwp7dw3zxs9vz2la983l2d8c4r4fn1j2z"))))
8255 (build-system ruby-build-system)
8256 (arguments
8257 `(#:phases (modify-phases %standard-phases
8258 (replace 'check
8259 (lambda _
8260 (invoke "rubytest" "-Ilib" "-Itest" "test/"))))))
8261 (native-inputs
8262 `(("ruby-rubytest-cli" ,ruby-rubytest-cli)
8263 ("ruby-spectroscope" ,ruby-spectroscope)
8264 ("ruby-ae" ,ruby-ae)))
8265 (propagated-inputs
8266 `(("ruby-tomparse" ,ruby-tomparse)
8267 ("ruby-yard" ,ruby-yard)))
8268 (synopsis "TomDoc syntax for YARD")
8269 (description "This module adds support for the TomDoc documentation format
8270to YARD, a documentation generation tool for Ruby.")
8271 (home-page "http://rubyworks.github.com/yard-tomdoc/")
8272 (license license:expat)))
8273
ad686ef3
RW
8274(define-public ruby-clap
8275 (package
8276 (name "ruby-clap")
8277 (version "1.0.0")
8278 (source (origin
8279 (method url-fetch)
8280 (uri (rubygems-uri "clap" version))
8281 (sha256
8282 (base32
8283 "190m05k3pca72c1h8k0fnvby15m303zi0lpb9c478ad19wqawa5q"))))
8284 (build-system ruby-build-system)
8285 ;; Clap needs cutest for running tests, but cutest needs clap.
8286 (arguments `(#:tests? #f))
8287 (synopsis "Command line argument parsing for simple applications")
8288 (description
8289 "Clap provides command line argument parsing features. It covers the
8290simple case of executing code based on the flags or parameters passed.")
8291 (home-page "https://github.com/djanowski/cutest")
0c80451e
RW
8292 (license license:expat)))
8293
8294(define-public ruby-cutest
8295 (package
8296 (name "ruby-cutest")
8297 (version "1.2.2")
8298 (source (origin
8299 (method url-fetch)
8300 (uri (rubygems-uri "cutest" version))
8301 (sha256
8302 (base32
8303 "1mldhjn62g53vx4gq2qdqg2lgjvyrqxa8d0khf8347bbfgi16d32"))))
8304 (build-system ruby-build-system)
8305 (propagated-inputs
8306 `(("ruby-clap" ,ruby-clap)))
8307 (synopsis "Run tests in separate processes")
8308 (description
8309 "Cutest runs tests in separate processes to avoid shared state.")
8310 (home-page "https://github.com/djanowski/cutest")
ad686ef3
RW
8311 (license license:expat)))
8312
ac09beba
RW
8313(define-public ruby-pygmentize
8314 (package
8315 (name "ruby-pygmentize")
8316 (version "0.0.3")
8317 (source (origin
8318 (method url-fetch)
8319 (uri (rubygems-uri "pygmentize" version))
8320 (sha256
8321 (base32
8322 "1pxryhkiwvsz6xzda3bvqwz5z8ggzl1cdglf8qbcf4bb7akirdpb"))))
8323 (build-system ruby-build-system)
8324 (arguments
8325 `(#:phases
8326 (modify-phases %standard-phases
8327 (add-after 'unpack 'fix-pygmentize-path
8328 (lambda _
8329 (substitute* "lib/pygmentize.rb"
8330 (("\"/usr/bin/env python.*")
8331 (string-append "\"" (which "pygmentize") "\"\n")))
8332 #t))
8333 (add-after 'build 'do-not-use-vendor-directory
8334 (lambda _
8335 ;; Remove bundled pygments sources
8336 ;; FIXME: ruby-build-system does not support snippets.
8337 (delete-file-recursively "vendor")
8338 (substitute* "pygmentize.gemspec"
8339 (("\"vendor/\\*\\*/\\*\",") ""))
8340 #t)))))
8341 (inputs
8342 `(("pygments" ,python-pygments)))
8343 (native-inputs
8344 `(("ruby-cutest" ,ruby-cutest)
8345 ("ruby-nokogiri" ,ruby-nokogiri)))
8346 (synopsis "Thin Ruby wrapper around pygmentize")
8347 (description
8348 "Pygmentize provides a simple way to call pygmentize from within a Ruby
8349application.")
8350 (home-page "https://github.com/djanowski/pygmentize")
8351 (license license:expat)))
8352
2cbcd23a
DT
8353(define-public ruby-eventmachine
8354 (package
8355 (name "ruby-eventmachine")
c207fa5e 8356 (version "1.2.7")
2cbcd23a
DT
8357 (source
8358 (origin
8359 (method url-fetch)
8360 (uri (rubygems-uri "eventmachine" version))
8361 (sha256
8362 (base32
c207fa5e 8363 "0wh9aqb0skz80fhfn66lbpr4f86ya2z5rx6gm5xlfhd05bj1ch4r"))))
2cbcd23a
DT
8364 (build-system ruby-build-system)
8365 (arguments
c5d269fb 8366 '(#:tests? #f)) ; test suite tries to connect to google.com
2cbcd23a
DT
8367 (native-inputs
8368 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
8369 (synopsis "Single-threaded network event framework for Ruby")
8370 (description
8371 "EventMachine implements a single-threaded engine for arbitrary network
8372communications. EventMachine wraps all interactions with sockets, allowing
8373programs to concentrate on the implementation of network protocols. It can be
8374used to create both network servers and clients.")
24a26227
TGR
8375 ;; The ‘official’ rubyeventmachine.com domain is now registrar-squatted.
8376 (home-page "https://github.com/eventmachine/eventmachine")
2cbcd23a 8377 (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT
7d3a1a2d 8378
e218b0c8
BW
8379(define-public ruby-ruby-engine
8380 (package
8381 (name "ruby-ruby-engine")
77d098bf 8382 (version "2.0.0")
e218b0c8
BW
8383 (source
8384 (origin
8385 (method url-fetch)
8386 (uri (rubygems-uri "ruby_engine" version))
8387 (sha256
8388 (base32
77d098bf 8389 "0wqdcv8gxybp1y7kjhh18g3r9dczacs62d4ahcvyhz32bih8c9fm"))))
e218b0c8
BW
8390 (build-system ruby-build-system)
8391 (arguments
8392 `(#:phases
8393 (modify-phases %standard-phases
77d098bf 8394 (add-after 'extract-gemspec 'clean-up
e218b0c8
BW
8395 (lambda _
8396 (delete-file "Gemfile.lock")
8397 (substitute* "ruby_engine.gemspec"
8398 ;; Remove unnecessary imports that would entail further
8399 ;; dependencies.
8400 ((".*<rdoc.*") "")
8401 ((".*<rubygems-tasks.*") "")
8402 ;; Remove extraneous .gem file
77d098bf
MC
8403 (("\"pkg/ruby_engine-[0-9.]+\\.gem\".freeze, ") "")
8404 (("\"Gemfile.lock\".freeze, ") "")
e218b0c8 8405 ;; Soften rake dependency
77d098bf 8406 (("%q<rake>.freeze, \\[\"~> 10.0\"\\]")
e218b0c8
BW
8407 "%q<rake>.freeze, [\">= 10.0\"]")
8408 ;; Soften the rspec dependency
77d098bf 8409 (("%q<rspec>.freeze, \\[\"~> 2.4\"\\]")
e218b0c8
BW
8410 "%q<rspec>.freeze, [\">= 2.4\"]"))
8411 (substitute* "Rakefile"
8412 (("require 'rubygems/tasks'") "")
8413 (("Gem::Tasks.new") ""))
8414 ;; Remove extraneous .gem file that otherwise gets installed.
77d098bf 8415 (delete-file-recursively "pkg")
e218b0c8
BW
8416 #t)))))
8417 (native-inputs
8418 `(("bundler" ,bundler)
8419 ("ruby-rake" ,ruby-rake)
8420 ("ruby-rspec" ,ruby-rspec)))
8421 (synopsis "Simplifies checking for Ruby implementation")
8422 (description
8423 "@code{ruby_engine} provides an RubyEngine class that can be used to
8424check which implementation of Ruby is in use. It can provide the interpreter
8425name and provides query methods such as @{RubyEngine.mri?}.")
8426 (home-page "https://github.com/janlelis/ruby_engine")
8427 (license license:expat)))
8428
8092e333
BW
8429(define-public ruby-turn
8430 (package
8431 (name "ruby-turn")
8432 (version "0.9.7")
8433 (source
8434 (origin
8435 (method url-fetch)
8436 (uri (rubygems-uri "turn" version))
8437 (sha256
8438 (base32
8439 "1691rc2sq04cw8mxxh340k2j04ll90kwgcy8ddrp6rligmfrf8fw"))))
8440 (build-system ruby-build-system)
8441 (arguments
8442 `(#:phases
8443 (modify-phases %standard-phases
8444 ;; Tests fail because turn changes its environment so can no longer
8445 ;; find test/unit. Instead simply test if the executable runs
8446 ;; without issue.
8447 (replace 'check
8448 (lambda _
9923d5a4 8449 (invoke "ruby" "-Ilib" "bin/turn" "-h"))))))
8092e333
BW
8450 (propagated-inputs
8451 `(("ruby-ansi" ,ruby-ansi)
8452 ("ruby-minitest" ,ruby-minitest-4)))
8453 (synopsis "Alternate set of alternative runners for MiniTest")
8454 (description
8455 "TURN provides a set of alternative runners for MiniTest which are both
8456colorful and informative. TURN displays each test on a separate line with
8457failures being displayed immediately instead of at the end of the tests. Note
8458that TURN is no longer being maintained.")
f433b662 8459 (home-page "https://rubygems.org/gems/turn")
8092e333
BW
8460 (license license:expat)))
8461
8279b1d3
CB
8462(define-public ruby-mimemagic
8463 (package
8464 (name "ruby-mimemagic")
60bc8952 8465 (version "0.3.3")
8279b1d3
CB
8466 (source
8467 (origin
8468 (method url-fetch)
8469 (uri (rubygems-uri "mimemagic" version))
8470 (sha256
60bc8952 8471 (base32 "04cp5sfbh1qx82yqxn0q75c7hlcx8y1dr5g3kyzwm4mx6wi2gifw"))))
8279b1d3
CB
8472 (build-system ruby-build-system)
8473 (arguments
8474 '(#:phases
8475 (modify-phases %standard-phases
8476 ;; This phase breaks the tests, as it patches some of the test data.
8477 (delete 'patch-source-shebangs))))
8478 (native-inputs
8479 `(("ruby-bacon" ,ruby-bacon)))
8480 (synopsis "Ruby library for MIME detection by extension or content")
8481 (description
8482 "@acronym{MIME, Multipurpose Internet Mail Extensions} detection by
8483extension or content, using the freedesktop.org.xml shared-mime-info
8484database.")
8485 (home-page "https://github.com/minad/mimemagic")
8486 (license license:expat)))
8487
32d1c06f
BW
8488(define-public ruby-mime-types-data
8489 (package
8490 (name "ruby-mime-types-data")
f49511db 8491 (version "3.2016.0521")
32d1c06f
BW
8492 (source
8493 (origin
8494 (method url-fetch)
8495 (uri (rubygems-uri "mime-types-data" version))
8496 (sha256
8497 (base32
f49511db 8498 "04my3746hwa4yvbx1ranhfaqkgf6vavi1kyijjnw8w3dy37vqhkm"))))
32d1c06f
BW
8499 (build-system ruby-build-system)
8500 (native-inputs
8501 `(("ruby-hoe" ,ruby-hoe)))
8502 (synopsis "Registry for information about MIME media type definitions")
8503 (description
8504 "@code{mime-types-data} provides a registry for information about
8505Multipurpose Internet Mail Extensions (MIME) media type definitions. It can
8506be used with the Ruby mime-types library or other software to determine
8507defined filename extensions for MIME types, or to use filename extensions to
8508look up the likely MIME type definitions.")
8509 (home-page "https://github.com/mime-types/mime-types-data/")
8510 (license license:expat)))
8511
d39b606c
BW
8512(define-public ruby-mime-types
8513 (package
8514 (name "ruby-mime-types")
803bcc81 8515 (version "3.1")
d39b606c
BW
8516 (source
8517 (origin
8518 (method url-fetch)
8519 (uri (rubygems-uri "mime-types" version))
8520 (sha256
8521 (base32
803bcc81 8522 "0087z9kbnlqhci7fxh9f6il63hj1k02icq2rs0c6cppmqchr753m"))))
d39b606c
BW
8523 (build-system ruby-build-system)
8524 (propagated-inputs
8525 `(("ruby-mime-types-data" ,ruby-mime-types-data)))
8526 (native-inputs
8527 `(("ruby-hoe" ,ruby-hoe)
8528 ("ruby-fivemat" ,ruby-fivemat)
8529 ("ruby-minitest-focus" ,ruby-minitest-focus)
8530 ("ruby-minitest-rg" ,ruby-minitest-rg)
803bcc81
BW
8531 ("ruby-minitest-bonus-assertions" ,ruby-minitest-bonus-assertions)
8532 ("ruby-minitest-hooks" ,ruby-minitest-hooks)))
d39b606c
BW
8533 (synopsis "Library and registry for MIME content type definitions")
8534 (description "The mime-types library provides a library and registry for
8535information about Multipurpose Internet Mail Extensions (MIME) content type
8536definitions. It can be used to determine defined filename extensions for MIME
8537types, or to use filename extensions to look up the likely MIME type
8538definitions.")
8539 (home-page "https://github.com/mime-types/ruby-mime-types")
8540 (license license:expat)))
8541
eb5e0bd9
BW
8542(define-public ruby-fivemat
8543 (package
8544 (name "ruby-fivemat")
c664ebcc 8545 (version "1.3.7")
eb5e0bd9
BW
8546 (source
8547 (origin
8548 (method url-fetch)
8549 (uri (rubygems-uri "fivemat" version))
8550 (sha256
8551 (base32
c664ebcc 8552 "0pzlycasvwmg4bbx7plllpqnhd9zlmmff8l2w3yii86nrm2nvf9n"))))
eb5e0bd9
BW
8553 (build-system ruby-build-system)
8554 (arguments
8555 `(#:tests? #f)) ; no tests
8556 (synopsis "Each test file given its own line of dots")
8557 (description
8558 "Fivemat is a MiniTest/RSpec/Cucumber formatter that gives each test file
8559its own line of dots during testing. It aims to provide test output that is
8560neither too verbose nor too minimal.")
8561 (home-page "https://github.com/tpope/fivemat")
8562 (license license:expat)))
8563
4fea500b
BW
8564(define-public ruby-sqlite3
8565 (package
8566 (name "ruby-sqlite3")
e7cdba61 8567 (version "1.4.2")
4fea500b
BW
8568 (source
8569 (origin
8570 (method url-fetch)
8571 (uri (rubygems-uri "sqlite3" version))
8572 (sha256
8573 (base32
e7cdba61 8574 "0lja01cp9xd5m6vmx99zwn4r7s97r1w5cb76gqd8xhbm1wxyzf78"))))
4fea500b
BW
8575 (build-system ruby-build-system)
8576 (arguments
8577 `(#:phases
8578 (modify-phases %standard-phases
8579 (add-before 'check 'add-gemtest-file
8580 ;; This file exists in the repository but is not distributed.
9923d5a4 8581 (lambda _ (invoke "touch" ".gemtest"))))))
4fea500b
BW
8582 (inputs
8583 `(("sqlite" ,sqlite)))
8584 (native-inputs
8585 `(("ruby-hoe" ,ruby-hoe)
8586 ("ruby-rake-compiler" ,ruby-rake-compiler)
8587 ("ruby-mini-portile" ,ruby-mini-portile)))
8588 (synopsis "Interface with SQLite3 databases")
8589 (description
8590 "This module allows Ruby programs to interface with the SQLite3 database
8591engine.")
8592 (home-page
8593 "https://github.com/sparklemotion/sqlite3-ruby")
8594 (license license:bsd-3)))
8595
4dfa39cc
BW
8596(define-public ruby-shoulda-context
8597 (package
8598 (name "ruby-shoulda-context")
e7d1d472 8599 (version "1.2.2")
4dfa39cc
BW
8600 (source
8601 (origin
8602 (method url-fetch)
8603 (uri (rubygems-uri "shoulda-context" version))
8604 (sha256
8605 (base32
e7d1d472 8606 "1l0ncsxycb4s8n47dml97kdnixw4mizljbkwqc3rh05r70csq9bc"))))
4dfa39cc
BW
8607 (build-system ruby-build-system)
8608 (arguments
8609 `(#:phases
8610 (modify-phases %standard-phases
8611 (replace 'check
8612 (lambda _
8613 ;; Do not run tests to avoid circular dependence with rails.
8614 ;; Instead just import the library to test.
9923d5a4 8615 (invoke "ruby" "-Ilib" "-r" "shoulda-context"))))))
4dfa39cc
BW
8616 (synopsis "Test::Unit context framework extracted from Shoulda")
8617 (description
8618 "@code{shoulda-context} is the context framework extracted from Shoulda.
8619Instead of writing Ruby methods with lots_of_underscores, shoulda-context adds
8620context, setup, and should blocks combine to produce natural test method
8621names.")
8622 (home-page "https://github.com/thoughtbot/shoulda-context")
8623 (license license:expat)))
8624
e4fea008
BW
8625(define-public ruby-shoulda-matchers
8626 (package
8627 (name "ruby-shoulda-matchers")
d1c1f368 8628 (version "3.1.2")
e4fea008
BW
8629 (source
8630 (origin
8631 (method url-fetch)
8632 (uri (rubygems-uri "shoulda-matchers" version))
8633 (sha256
8634 (base32
d1c1f368 8635 "1zvv94pqk5b5my3w1shdz7h34xf2ldhg5k4qfdpbwi2iy0j9zw2a"))))
e4fea008
BW
8636 (build-system ruby-build-system)
8637 (arguments
8638 `(#:phases
8639 (modify-phases %standard-phases
e4fea008
BW
8640 (replace 'check
8641 (lambda _
8642 ;; Do not run tests to avoid circular dependence with rails. Instead
8643 ;; just import the library to test.
9923d5a4 8644 (invoke "ruby" "-Ilib" "-r" "shoulda-matchers"))))))
e4fea008
BW
8645 (propagated-inputs
8646 `(("ruby-activesupport" ,ruby-activesupport)))
8647 (synopsis "Collection of testing matchers extracted from Shoulda")
8648 (description
8649 "Shoulda Matchers provides RSpec- and Minitest-compatible one-liners that
8650test common Rails functionality. These tests would otherwise be much longer,
8651more complex, and error-prone.")
8652 (home-page "https://github.com/thoughtbot/shoulda-matchers")
8653 (license license:expat)))
8654
3885c58b
BW
8655(define-public ruby-shoulda-matchers-2
8656 (package
8657 (inherit ruby-shoulda-matchers)
8658 (version "2.8.0")
8659 (source (origin
8660 (method url-fetch)
8661 (uri (rubygems-uri "shoulda-matchers" version))
8662 (sha256
8663 (base32
8664 "0d3ryqcsk1n9y35bx5wxnqbgw4m8b3c79isazdjnnbg8crdp72d0"))))))
8665
6f390716
BW
8666(define-public ruby-shoulda
8667 (package
8668 (name "ruby-shoulda")
8669 (version "3.5.0")
8670 (source
8671 (origin
8672 (method url-fetch)
8673 (uri (rubygems-uri "shoulda" version))
8674 (sha256
8675 (base32
8676 "0csmf15a7mcinfq54lfa4arp0f4b2jmwva55m0p94hdf3pxnjymy"))))
8677 (build-system ruby-build-system)
8678 (arguments
8679 `(#:phases
8680 (modify-phases %standard-phases
8681 (replace 'check
8682 ;; Don't run tests to avoid circular dependence with rails. Instead
8683 ;; just import the library to test.
9923d5a4 8684 (lambda _ (invoke "ruby" "-Ilib" "-r" "shoulda"))))))
6f390716
BW
8685 (propagated-inputs
8686 `(("ruby-shoulda-context" ,ruby-shoulda-context)
8687 ("ruby-shoulda-matchers" ,ruby-shoulda-matchers-2)))
8688 (synopsis "Context framework and matchers for testing")
8689 (description
8690 "@code{shoulda} is a meta-package combining @code{shoulda-context} and
8691@code{shoulda-matchers} providing tools for writing tests.")
8692 (home-page "https://github.com/thoughtbot/shoulda")
8693 (license license:expat)))
8694
3b44bcdf
BW
8695(define-public ruby-unf
8696 (package
8697 (name "ruby-unf")
8698 (version "0.1.4")
8699 (source
8700 (origin
8701 (method url-fetch)
8702 (uri (rubygems-uri "unf" version))
8703 (sha256
8704 (base32
8705 "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9"))))
8706 (build-system ruby-build-system)
8707 (arguments
8708 `(#:phases
8709 (modify-phases %standard-phases
8710 (add-before 'check 'add-dependency-to-bundler
8711 (lambda _
8712 ;; test-unit is required but not provided by the bundler
8713 ;; environment. This is fixed in the upstream repository but fix
8714 ;; has not been released.
8715 (substitute* "Gemfile"
8716 (("^gemspec") "gem 'test-unit'\ngemspec"))
8717 #t)))))
8718 (propagated-inputs
8719 `(("ruby-unf-ext" ,ruby-unf-ext)))
8720 (native-inputs
8721 `(("ruby-shoulda" ,ruby-shoulda)
8722 ("bundler" ,bundler)
8723 ("ruby-test-unit" ,ruby-test-unit)))
8724 (synopsis "Unicode Normalization Form support to Ruby and JRuby")
8725 (description
8726 "@code{ruby-unf} is a wrapper library to bring Unicode Normalization Form
8727support to both Ruby and JRuby. It uses @code{unf_ext} on CRuby and
8728@code{java.text.Normalizer} on JRuby.")
8729 (home-page "https://github.com/knu/ruby-unf")
8730 (license license:bsd-2)))
8731
e32c99d2
CB
8732(define-public ruby-warden
8733 (package
8734 (name "ruby-warden")
8735 (version "1.2.8")
8736 (source
8737 (origin
8738 (method url-fetch)
8739 (uri (rubygems-uri "warden" version))
8740 (sha256
8741 (base32
8742 "1fr9n9i9r82xb6i61fdw4xgc7zjv7fsdrr4k0njchy87iw9fl454"))))
8743 (build-system ruby-build-system)
8744 (arguments
8745 '(#:tests? #f)) ; No included tests
8746 (propagated-inputs
8747 `(("ruby-rack" ,ruby-rack)))
8748 (synopsis "Rack middleware providing authentication")
8749 (description
8750 "Warden is a Rack-based middleware that provides a mechanism for
8751authentication in Ruby web applications.")
8752 (home-page "https://github.com/wardencommunity/warden")
8753 (license license:expat)))
8754
e42eecdb
CB
8755(define-public ruby-warden-oauth2
8756 (package
8757 (name "ruby-warden-oauth2")
8758 (version "0.0.1")
8759 (source
8760 (origin
8761 (method url-fetch)
8762 (uri (rubygems-uri "warden-oauth2" version))
8763 (sha256
8764 (base32
8765 "1z9154lvzrnnfjbjkmirh4n811nygp6pm2fa6ikr7y1ysa4zv3cz"))))
8766 (build-system ruby-build-system)
8767 (arguments
8768 '(#:test-target "spec"
8769 #:phases
8770 (modify-phases %standard-phases
8771 (add-after 'unpack 'remove-unnecessary-dependencies
8772 (lambda _
8773 (substitute* "Gemfile"
8774 ;; All of these gems relate to development, and are unnecessary
8775 ;; when running the tests
8776 (("gem 'guard-bundler'") "")
8777 (("gem 'guard'") "")
8778 (("gem 'guard-rspec'") "")
8779 (("gem 'rb-fsevent'") "")
8780 (("gem 'pry'") "")
8781 (("gem 'growl'") ""))
8782 #t))
8783 ;; The test suite doesn't work with rspec@2, and this is incompatible
8784 ;; with the current version of Rake, so invoke Rspec directly
8785 (replace 'check
8786 (lambda* (#:key tests? #:allow-other-keys)
8787 (when tests?
8788 (invoke "bundle" "exec" "rspec"))
8789 #t)))))
8790 (propagated-inputs
8791 `(("ruby-warden" ,ruby-warden)))
8792 (native-inputs
8793 `(("bundler" ,bundler)
8794 ("ruby-rspec" ,ruby-rspec-2)
8795 ("ruby-rack-test" ,ruby-rack-test)))
8796 (synopsis "OAuth 2.0 strategies for Warden")
8797 (description
8798 "This library extends Warden to support OAuth 2.0 authorized API
8799requests.")
8800 (home-page "https://github.com/opperator/warden-oauth2")
8801 (license license:expat)))
8802
8c7ae384
CB
8803(define-public ruby-webmock-2
8804 (package
8805 (name "ruby-webmock")
8806 (version "2.3.2")
8807 (source
8808 (origin
8809 (method url-fetch)
8810 (uri (rubygems-uri "webmock" version))
8811 (sha256
8812 (base32
8813 "04hkcqsmbfnp8g237pisnc834vpgildklicbjbyikqg0bg1rwcy5"))))
8814 (build-system ruby-build-system)
8815 (native-inputs
8816 `(("bundler" ,bundler)
8817 ("ruby-rspec" ,ruby-rspec)))
8818 (propagated-inputs
8819 `(("ruby-addressable" ,ruby-addressable)
8820 ("ruby-crack" ,ruby-crack)
8821 ("ruby-hashdiff" ,ruby-hashdiff)))
8822 (synopsis "Allows stubbing and setting expectations on HTTP requests")
8823 (description
8824 "WebMock allows stubbing HTTP requests and setting expectations on HTTP
8825requests. This is useful when testing software.")
8826 (home-page "https://github.com/bblimke/webmock")
8827 (license license:expat)))
8828
d8c189ed
CB
8829(define-public ruby-unicode-display-width
8830 (package
8831 (name "ruby-unicode-display-width")
216ccced 8832 (version "1.6.0")
d8c189ed
CB
8833 (source
8834 (origin
8835 (method url-fetch)
8836 (uri (rubygems-uri "unicode-display_width" version))
8837 (sha256
8838 (base32
216ccced 8839 "08kfiniak1pvg3gn5k6snpigzvhvhyg7slmm0s2qx5zkj62c1z2w"))))
d8c189ed
CB
8840 (build-system ruby-build-system)
8841 (arguments
8842 '(;; Test data not included.
8843 #:tests? #f))
8844 (synopsis "Determine the monospace display width of Ruby strings")
8845 (description
8846 "@code{Unicode::DisplayWidth} is a Ruby library which can determine the
8847display width of strings in Ruby.")
8848 (home-page "https://github.com/janlelis/unicode-display_width")
8849 (license license:expat)))
8850
6120589f
CB
8851;; There is another gem called 'ruby-version' so we use an underscore in this
8852;; name
8853(define-public ruby_version
8854 (package
8855 (name "ruby_version")
1097fdbe 8856 (version "1.0.2")
6120589f
CB
8857 (source
8858 (origin
8859 (method url-fetch)
8860 (uri (rubygems-uri "ruby_version" version))
8861 (sha256
8862 (base32
1097fdbe 8863 "0lvc7bd5ps3w2vq2wb02i0pi3vfcx2rnckx2ix4rjym1qf52kb2j"))))
6120589f
CB
8864 (build-system ruby-build-system)
8865 (arguments
1097fdbe 8866 `(#:phases
6120589f
CB
8867 (modify-phases %standard-phases
8868 (add-before 'check 'fix-dependencies
8869 (lambda _
8870 ;; Remove the Gemfile.lock, as we want to use Guix packages at
8871 ;; whatever versions.
8872 (delete-file "Gemfile.lock")
1097fdbe
MC
8873 ;; Remove the included gem files as they unnecessary.
8874 (delete-file-recursively "pkg/")
8875 ;; Accept any version of rake, rdoc and rspec
6120589f 8876 (substitute* "ruby_version.gemspec"
6120589f 8877 (("%q<rake.*") "%q<rake>)\n")
1097fdbe 8878 (("%q<rdoc.*") "%q<rdoc>)\n")
6120589f 8879 (("%q<rspec.*") "%q<rspec>)\n"))
1097fdbe 8880 ;; Do not use bundler.
6120589f 8881 (substitute* "Rakefile"
1097fdbe 8882 (("Bundler\\.setup.*") "nil\n"))
6120589f
CB
8883 #t)))))
8884 (native-inputs
1097fdbe
MC
8885 `(("ruby-rdoc" ,ruby-rdoc)
8886 ("ruby-rspec" ,ruby-rspec)
1628d57b 8887 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
6120589f 8888 (synopsis "Ruby library to help check the Ruby version")
1097fdbe 8889 (description "@code{ruby_version} provides a @code{RubyVersion} module to simplify
6120589f
CB
8890checking for the right Ruby version in software.")
8891 (home-page "https://github.com/janlelis/ruby_version")
8892 (license license:expat)))
8893
a229acff
CB
8894(define-public ruby-websocket-driver
8895 (package
8896 (name "ruby-websocket-driver")
9d1cf6d4 8897 (version "0.7.1")
a229acff
CB
8898 (source
8899 (origin
8900 (method url-fetch)
8901 (uri (rubygems-uri "websocket-driver" version))
8902 (sha256
9d1cf6d4 8903 (base32 "1bxamwqldmy98hxs5pqby3andws14hl36ch78g0s81gaz9b91nj2"))))
a229acff
CB
8904 (build-system ruby-build-system)
8905 (arguments
9d1cf6d4 8906 '(#:tests? #f)) ; no included tests
a229acff
CB
8907 (propagated-inputs
8908 `(("ruby-websocket-extensions" ,ruby-websocket-extensions)))
8909 (synopsis "WebSocket protocol handler with pluggable I/O")
8910 (description
8911 "@code{websocket-driver} provides a complete implementation of the
8912WebSocket protocols that can be hooked up to any TCP library")
8913 (home-page "https://github.com/faye/websocket-driver-ruby")
8914 (license license:expat)))
8915
52b015a9
CB
8916(define-public ruby-websocket-extensions
8917 (package
8918 (name "ruby-websocket-extensions")
8919 (version "0.1.3")
8920 (source
8921 (origin
8922 (method url-fetch)
8923 (uri (rubygems-uri "websocket-extensions" version))
8924 (sha256
8925 (base32
8926 "034sdr7fd34yag5l6y156rkbhiqgmy395m231dwhlpcswhs6d270"))))
8927 (build-system ruby-build-system)
8928 (arguments
8929 '(;; No included tests
8930 #:tests? #f))
8931 (synopsis "Generic extension manager for WebSocket connections")
8932 (description
8933 "@code{websocket-extensions} provides a container for registering
8934extension plugins.")
8935 (home-page "https://github.com/faye/websocket-extensions-ruby")
8936 (license license:expat)))
8937
5799aadd
BW
8938(define-public ruby-domain-name
8939 (package
8940 (name "ruby-domain-name")
cce2988d 8941 (version "0.5.20190701")
5799aadd
BW
8942 (source
8943 (origin
8944 (method url-fetch)
8945 (uri (rubygems-uri "domain_name" version))
8946 (sha256
cce2988d 8947 (base32 "0lcqjsmixjp52bnlgzh4lg9ppsk52x9hpwdjd53k8jnbah2602h0"))))
5799aadd
BW
8948 (build-system ruby-build-system)
8949 (arguments
8950 `(#:phases
8951 (modify-phases %standard-phases
8952 (add-before 'check 'fix-versions
8953 (lambda _
8954 ;; Fix NameError that appears to already be fixed upstream.
8955 (substitute* "Rakefile"
8956 (("DomainName::VERSION")
8957 "Bundler::GemHelper.gemspec.version"))
8958 ;; Loosen unnecessarily strict test-unit version specification.
8959 (substitute* "domain_name.gemspec"
71596c3c 8960 (("<test-unit>.freeze, \\[\\\"~> 2.5.5") "<test-unit>, [\">0"))
5799aadd
BW
8961 #t)))))
8962 (propagated-inputs
8963 `(("ruby-unf" ,ruby-unf)))
8964 (native-inputs
8965 `(("ruby-shoulda" ,ruby-shoulda)
8966 ("bundler" ,bundler)
8967 ("ruby-test-unit" ,ruby-test-unit)))
8968 (synopsis "Domain name manipulation library")
8969 (description
8970 "@code{domain_name} is a Domain name manipulation library. It parses a
8971domain name ready for extracting the registered domain and TLD (Top Level
8972Domain). It can also be used for cookie domain validation based on the Public
8973Suffix List.")
8974 (home-page "https://github.com/knu/ruby-domain_name")
8975 (license license:bsd-2)))
8976
d114ceeb
BW
8977(define-public ruby-http-cookie
8978 (package
8979 (name "ruby-http-cookie")
2a2eb07d 8980 (version "1.0.3")
d114ceeb
BW
8981 (source
8982 (origin
8983 (method url-fetch)
8984 (uri (rubygems-uri "http-cookie" version))
8985 (sha256
8986 (base32
2a2eb07d 8987 "004cgs4xg5n6byjs7qld0xhsjq3n6ydfh897myr2mibvh6fjc49g"))))
d114ceeb
BW
8988 (build-system ruby-build-system)
8989 (arguments
8990 `(#:phases
8991 (modify-phases %standard-phases
8992 (add-before 'check 'add-dependency-to-bundler
8993 (lambda _
8994 ;; Fix NameError
8995 (substitute* "Rakefile"
8996 (("HTTP::Cookie::VERSION")
8997 "Bundler::GemHelper.gemspec.version"))
8998 #t)))))
8999 (propagated-inputs
9000 `(("ruby-domain-name" ,ruby-domain-name)))
9001 (native-inputs
9002 `(("rubysimplecov" ,ruby-simplecov)
9003 ("bundler" ,bundler)
9004 ("ruby-sqlite3" ,ruby-sqlite3)
9005 ("ruby-test-unit" ,ruby-test-unit)))
9006 (synopsis "Handle HTTP Cookies based on RFC 6265")
9007 (description
9008 "@code{HTTP::Cookie} is a Ruby library to handle HTTP Cookies based on
9009RFC 6265. It has been designed with security, standards compliance and
9010compatibility in mind, to behave just the same as today's major web browsers.
9011It has built-in support for the legacy @code{cookies.txt} and
9012@code{cookies.sqlite} formats of Mozilla Firefox.")
9013 (home-page "https://github.com/sparklemotion/http-cookie")
9014 (license license:expat)))
9015
1c8e6fd3
CB
9016(define-public ruby-httpclient
9017 (package
9018 (name "ruby-httpclient")
9019 (version "2.8.3")
9020 (source
9021 (origin
9022 (method url-fetch)
9023 (uri (rubygems-uri "httpclient" version))
9024 (sha256
9025 (base32
9026 "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99"))))
9027 (build-system ruby-build-system)
9028 (arguments
9029 '(;; TODO: Some tests currently fail
9030 ;; ------
9031 ;; 211 tests, 729 assertions, 13 failures, 4 errors, 0 pendings,
9032 ;; 2 omissions, 0 notifications
9033 ;; 91.866% passed
9034 ;; ------
9035 ;; 6.49 tests/s, 22.41 assertions/s
9036 #:tests? #f
9037 #:phases
9038 (modify-phases %standard-phases
9039 (replace 'check
9040 (lambda* (#:key tests? #:allow-other-keys)
9041 (if tests?
9923d5a4
TGR
9042 (invoke "ruby"
9043 "-Ilib"
9044 "test/runner.rb")
0076f5a9 9045 #t))))))
1c8e6fd3
CB
9046 (native-inputs
9047 `(("ruby-rack" ,ruby-rack)))
9048 (synopsis
9049 "Make HTTP requests with support for HTTPS, Cookies, authentication and more")
9050 (description
9051 "The @code{httpclient} ruby library provides functionality related to
9052HTTP. Compared to the @code{net/http} library, @{httpclient} also provides
9053Cookie, multithreading and authentication (digest, NTLM) support.
9054
9055Also provided is a @command{httpclient} command, which can perform HTTP
9056requests either using arguments or with an interactive prompt.")
9057 (home-page "https://github.com/nahi/httpclient")
9058 (license license:ruby)))
9059
7d3a1a2d
BW
9060(define-public ruby-ansi
9061 (package
9062 (name "ruby-ansi")
9063 (version "1.5.0")
9064 (source
9065 (origin
3d30c332 9066 (method git-fetch)
7d3a1a2d 9067 ;; Fetch from GitHub as the gem does not contain testing code.
3d30c332
EF
9068 (uri (git-reference
9069 (url "https://github.com/rubyworks/ansi")
9070 (commit version)))
9071 (file-name (git-file-name name version))
7d3a1a2d
BW
9072 (sha256
9073 (base32
3d30c332 9074 "1wsz7xxwl3vkh277jb7fd7akqnqqgbvalxzpjwniiqk8ghfprbi5"))))
7d3a1a2d
BW
9075 (build-system ruby-build-system)
9076 (arguments
9077 `(#:phases
9078 (modify-phases %standard-phases
9079 ;; Disable testing to break the cycle ansi, ae, ansi, as well as the
9080 ;; cycle ansi, qed, ansi. Instead simply test that the library can
9081 ;; be require'd.
9082 (replace 'check
9083 (lambda _
9923d5a4 9084 (invoke "ruby" "-Ilib" "-r" "ansi")))
0899352f
MB
9085 (add-before 'validate-runpath 'replace-broken-symlink
9086 (lambda* (#:key outputs #:allow-other-keys)
9087 (let* ((out (assoc-ref outputs "out"))
3cb3fa67
CB
9088 (file (string-append
9089 out "/lib/ruby/vendor_ruby/gems/ansi-"
9090 ,version "/lib/ansi.yml")))
0899352f
MB
9091 ;; XXX: This symlink is broken since ruby 2.4.
9092 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
9093 (delete-file file)
9094 (symlink "../.index" file)
9095 #t))))))
7d3a1a2d
BW
9096 (synopsis "ANSI escape code related libraries")
9097 (description
9098 "This package is a collection of ANSI escape code related libraries
9099enabling ANSI colorization and stylization of console output. Included in the
9100library are the @code{Code} module, which defines ANSI codes as constants and
9101methods, a @code{Mixin} module for including color methods, a @code{Logger}, a
9102@code{ProgressBar}, and a @code{String} subclass. The library also includes a
9103@code{Terminal} module which provides information about the current output
9104device.")
3d30c332 9105 (home-page "https://rubyworks.github.io/ansi/")
7d3a1a2d 9106 (license license:bsd-2)))
7c033c46
BW
9107
9108(define-public ruby-systemu
9109 (package
9110 (name "ruby-systemu")
9111 (version "2.6.5")
9112 (source
9113 (origin
9114 (method url-fetch)
9115 (uri (rubygems-uri "systemu" version))
9116 (sha256
9117 (base32
9118 "0gmkbakhfci5wnmbfx5i54f25j9zsvbw858yg3jjhfs5n4ad1xq1"))))
9119 (build-system ruby-build-system)
9120 (arguments
9121 `(#:phases
9122 (modify-phases %standard-phases
9123 (add-before 'check 'set-version
9124 (lambda _
9125 (setenv "VERSION" ,version)
9126 #t)))))
9127 (synopsis "Capture of stdout/stderr and handling of child processes")
9128 (description
9129 "Systemu can be used on any platform to return status, stdout, and stderr
9130of any command. Unlike other methods like @code{open3} and @code{popen4}
9131there is no danger of full pipes or threading issues hanging your process or
9132subprocess.")
9133 (home-page "https://github.com/ahoward/systemu")
9134 (license license:ruby)))
3d84a99e
BW
9135
9136(define-public ruby-bio-commandeer
9137 (package
9138 (name "ruby-bio-commandeer")
37b08547 9139 (version "0.4.0")
3d84a99e
BW
9140 (source
9141 (origin
9142 (method url-fetch)
9143 (uri (rubygems-uri "bio-commandeer" version))
9144 (sha256
9145 (base32
37b08547 9146 "0khpfw1yl5l3d2m8nxpkk32ybc4c3pa5hic3agd160jdfjjjnlni"))))
3d84a99e
BW
9147 (build-system ruby-build-system)
9148 (arguments
9149 `(#:phases
9150 (modify-phases %standard-phases
9151 (replace 'check
9152 ;; Run test without calling 'rake' so that jeweler is
9153 ;; not required as an input.
9154 (lambda _
9923d5a4 9155 (invoke "rspec" "spec/bio-commandeer_spec.rb"))))))
3d84a99e
BW
9156 (propagated-inputs
9157 `(("ruby-bio-logger" ,ruby-bio-logger)
9158 ("ruby-systemu" ,ruby-systemu)))
9159 (native-inputs
9160 `(("bundler" ,bundler)
9161 ("ruby-rspec" ,ruby-rspec)))
9162 (synopsis "Simplified running of shell commands from within Ruby")
9163 (description
9164 "Bio-commandeer provides an opinionated method of running shell commands
9165from within Ruby. The advantage of bio-commandeer over other methods of
9166running external commands is that when something goes wrong, messages printed
9167to the @code{STDOUT} and @code{STDERR} streams are reported, giving extra
9168detail to ease debugging.")
7bf837fd 9169 (home-page "https://github.com/wwood/bioruby-commandeer")
3d84a99e 9170 (license license:expat)))
7c8131c7
BW
9171
9172(define-public ruby-rubytest
9173 (package
9174 (name "ruby-rubytest")
9175 (version "0.8.1")
9176 (source
9177 (origin
9178 (method url-fetch)
9179 (uri (rubygems-uri "rubytest" version))
9180 (sha256
9181 (base32
9182 "19jydsdnkl81i9dhdcr4dc34j0ilm68ff2ngnka1hi38xiw4p5qz"))))
9183 (build-system ruby-build-system)
9184 (arguments
9185 ;; Disable regular testing to break the cycle rubytest, qed, brass,
9186 ;; rubytest, as well as the cycle rubytest, qed, ansi, rubytest. Instead
9187 ;; simply test that the library can be require'd.
9188 `(#:phases
9189 (modify-phases %standard-phases
9190 (replace 'check
9191 (lambda _
9923d5a4 9192 (invoke "ruby" "-Ilib" "-r" "rubytest"))))))
7c8131c7
BW
9193 (propagated-inputs
9194 `(("ruby-ansi" ,ruby-ansi)))
9195 (synopsis "Universal test harness for Ruby")
9196 (description
9197 "Rubytest is a testing meta-framework for Ruby. It can handle any
9198compliant test framework and can run tests from multiple frameworks in a
9199single pass.")
2f3800e5 9200 (home-page "https://rubyworks.github.io/rubytest")
7c8131c7 9201 (license license:bsd-2)))
90fcedf2
BW
9202
9203(define-public ruby-brass
9204 (package
9205 (name "ruby-brass")
9206 (version "1.2.1")
9207 (source
9208 (origin
9209 (method url-fetch)
9210 (uri (rubygems-uri "brass" version))
9211 (sha256
9212 (base32
9213 "154lp8rp1vmg60ri1j4cb8hqlw37z7bn575h899v8hzxwi11sxka"))))
9214 (build-system ruby-build-system)
9215 (arguments
9216 ;; Disable tests to break the cycle brass, lemon, ae, qed, brass.
9217 ;; Instead simply test that the library can be require'd.
9218 `(#:phases
9219 (modify-phases %standard-phases
9220 (replace 'check
9221 (lambda _
9923d5a4 9222 (invoke "ruby" "-Ilib" "-r" "brass"))))))
90fcedf2
BW
9223 (synopsis "Basic foundational assertions framework")
9224 (description
9225 "BRASS (Bare-Metal Ruby Assertion System Standard) is a basic
9226foundational assertions framework for other assertion and test frameworks to
9227make use of.")
2f3800e5 9228 (home-page "https://rubyworks.github.io/brass")
90fcedf2 9229 (license license:bsd-2)))
120fc74b
BW
9230
9231(define-public ruby-qed
9232 (package
9233 (name "ruby-qed")
9234 (version "2.9.2")
9235 (source
9236 (origin
9237 (method url-fetch)
9238 (uri (rubygems-uri "qed" version))
9239 (sha256
9240 (base32
9241 "03h4lmlxpcya8j7s2cnyscqlx8v3xl1xgsw5y1wk1scxcgz2vbmr"))))
9242 (build-system ruby-build-system)
9243 (arguments
9244 ;; Disable testing to break the cycle qed, ansi, qed, among others.
9245 ;; Instead simply test that the executable runs using --copyright.
9246 `(#:phases
9247 (modify-phases %standard-phases
9248 (replace 'check
9249 (lambda _
9923d5a4 9250 (invoke "ruby" "-Ilib" "bin/qed" "--copyright"))))))
120fc74b
BW
9251 (propagated-inputs
9252 `(("ruby-ansi" ,ruby-ansi)
9253 ("ruby-brass" ,ruby-brass)))
9254 (synopsis "Test framework utilizing literate programming techniques")
9255 (description
9256 "@dfn{Quality Ensured Demonstrations} (QED) is a test framework for
9257@dfn{Test Driven Development} (TDD) and @dfn{Behaviour Driven
9258Development} (BDD) utilizing Literate Programming techniques. QED sits
9259somewhere between lower-level testing tools like @code{Test::Unit} and
9260requirement specifications systems like Cucumber.")
2f3800e5 9261 (home-page "https://rubyworks.github.io/qed")
120fc74b 9262 (license license:bsd-2)))
9273ee8f 9263
dbbe88d3
CB
9264(define-public ruby-que
9265 (package
9266 (name "ruby-que")
9267 (version "1.0.0.beta3")
9268 (source
9269 (origin
9270 (method url-fetch)
9271 (uri (rubygems-uri "que" version))
9272 (sha256
9273 (base32
9274 "0gr9pb814d4qj3ds98g6cjrdk7wv0yg8aqbm7c1lmgl87jkg8q04"))))
9275 (build-system ruby-build-system)
9276 (arguments
9277 '(#:tests? #f)) ; No included tests
9278 (synopsis "Job queue using PostgreSQL written in Ruby")
9279 (description
9280 "This package provides a job queue that uses PostgreSQL for storing jobs
9281and locking between worker processes.")
9282 (home-page "https://github.com/chanks/que")
9283 (license license:expat)))
9284
9273ee8f
BW
9285(define-public ruby-ae
9286 (package
9287 (name "ruby-ae")
9288 (version "1.8.2")
9289 (source
9290 (origin
11d1b318 9291 (method git-fetch)
9273ee8f 9292 ;; Fetch from github so tests are included.
11d1b318
EF
9293 (uri (git-reference
9294 (url "https://github.com/rubyworks/ae")
9295 (commit version)))
9296 (file-name (git-file-name name version))
9273ee8f
BW
9297 (sha256
9298 (base32
11d1b318 9299 "11299jj5ma8mi7b4majkyjy70y6zlqpgl8aql1c5lvfjavlpwmlp"))))
9273ee8f
BW
9300 (build-system ruby-build-system)
9301 (arguments
9302 `(#:phases
9303 (modify-phases %standard-phases
9304 (replace 'check
9923d5a4 9305 (lambda _ (invoke "qed")))
de6f6efd
MB
9306 (add-before 'validate-runpath 'replace-broken-symlink
9307 (lambda* (#:key outputs #:allow-other-keys)
9308 (let* ((out (assoc-ref outputs "out"))
3cb3fa67
CB
9309 (file (string-append
9310 out "/lib/ruby/vendor_ruby/gems/ae-"
9311 ,version "/lib/ae.yml")))
de6f6efd
MB
9312 ;; XXX: This symlink is broken since ruby 2.4.
9313 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
9314 (delete-file file)
9315 (symlink "../.index" file)
9316 #t))))))
9273ee8f
BW
9317 (propagated-inputs
9318 `(("ruby-ansi" ,ruby-ansi)))
9319 (native-inputs
9320 `(("ruby-qed" ,ruby-qed)))
9321 (synopsis "Assertions library")
9322 (description
9323 "Assertive Expressive (AE) is an assertions library specifically designed
9324for reuse by other test frameworks.")
11d1b318 9325 (home-page "https://rubyworks.github.io/ae/")
9273ee8f 9326 (license license:bsd-2)))
78bb471f
BW
9327
9328(define-public ruby-lemon
9329 (package
9330 (name "ruby-lemon")
9331 (version "0.9.1")
9332 (source
9333 (origin
9334 (method url-fetch)
9335 (uri (rubygems-uri "lemon" version))
9336 (sha256
9337 (base32
9338 "0gqhpgjavgpvx23rqpfqcv3d5bs8gc7lr9yvj8kxgp7mfbdc2jcm"))))
9339 (build-system ruby-build-system)
9340 (arguments
9341 `(#:phases
9342 (modify-phases %standard-phases
9923d5a4 9343 (replace 'check (lambda _ (invoke "qed"))))))
78bb471f
BW
9344 (propagated-inputs
9345 `(("ruby-ae" ,ruby-ae)
9346 ("ruby-ansi" ,ruby-ansi)
9347 ("ruby-rubytest" ,ruby-rubytest)))
9348 (native-inputs
9349 `(("ruby-qed" ,ruby-qed)))
9350 (synopsis "Test framework correlating code structure and test unit")
9351 (description
9352 "Lemon is a unit testing framework that enforces highly formal
9353case-to-class and unit-to-method test construction. This enforcement can help
9354focus concern on individual units of behavior.")
2f3800e5 9355 (home-page "https://rubyworks.github.io/lemon")
78bb471f 9356 (license license:bsd-2)))
0832804e
BW
9357
9358(define-public ruby-rubytest-cli
9359 (package
9360 (name "ruby-rubytest-cli")
9361 (version "0.2.0")
9362 (source
9363 (origin
9364 (method url-fetch)
9365 (uri (rubygems-uri "rubytest-cli" version))
9366 (sha256
9367 (base32
9368 "0n7hv4k1ba4fm3i98c6ydbsqhkxgbp52mhi70ba1x3mqzfvk438p"))))
9369 (build-system ruby-build-system)
9370 (arguments
9371 `(#:tests? #f)) ; no tests
9372 (propagated-inputs
9373 `(("ruby-ansi" ,ruby-ansi)
9374 ("ruby-rubytest" ,ruby-rubytest)))
9375 (synopsis "Command-line interface for rubytest")
9376 (description
9377 "Rubytest CLI is a command-line interface for running tests for
9378Rubytest-based test frameworks. It provides the @code{rubytest} executable.")
2f3800e5 9379 (home-page "https://rubyworks.github.io/rubytest-cli")
0832804e 9380 (license license:bsd-2)))
72ccbfe3
BW
9381
9382(define-public ruby-hashery
9383 (package
9384 (name "ruby-hashery")
cba96208 9385 (version "2.1.2")
72ccbfe3
BW
9386 (source
9387 (origin
9388 (method url-fetch)
9389 (uri (rubygems-uri "hashery" version))
9390 (sha256
9391 (base32
cba96208 9392 "0qj8815bf7q6q7llm5rzdz279gzmpqmqqicxnzv066a020iwqffj"))))
72ccbfe3
BW
9393 (build-system ruby-build-system)
9394 (arguments
9395 `(#:phases
9396 (modify-phases %standard-phases
9397 (replace 'check
9398 (lambda _
9923d5a4
TGR
9399 (invoke "qed")
9400 (invoke "rubytest" "-Ilib" "-Itest" "test/"))))))
72ccbfe3
BW
9401 (native-inputs
9402 `(("ruby-rubytest-cli" ,ruby-rubytest-cli)
9403 ("ruby-qed" ,ruby-qed)
9404 ("ruby-lemon" ,ruby-lemon)))
9405 (synopsis "Hash-like classes with extra features")
9406 (description
9407 "The Hashery is a tight collection of @code{Hash}-like classes.
9408Included are the auto-sorting @code{Dictionary} class, the efficient
9409@code{LRUHash}, the flexible @code{OpenHash} and the convenient
9410@code{KeyHash}. Nearly every class is a subclass of the @code{CRUDHash} which
9411defines a CRUD (Create, Read, Update and Delete) model on top of Ruby's
9412standard @code{Hash} making it possible to subclass and augment to fit any
9413specific use case.")
2f3800e5 9414 (home-page "https://rubyworks.github.io/hashery")
72ccbfe3 9415 (license license:bsd-2)))
1f1d71e0
BW
9416
9417(define-public ruby-rc4
9418 (package
9419 (name "ruby-rc4")
9420 (version "0.1.5")
9421 (source
9422 (origin
9423 (method url-fetch)
9424 (uri (rubygems-uri "ruby-rc4" version))
9425 (sha256
9426 (base32
9427 "00vci475258mmbvsdqkmqadlwn6gj9m01sp7b5a3zd90knil1k00"))))
9428 (build-system ruby-build-system)
9429 (arguments
9430 `(#:phases
9431 (modify-phases %standard-phases
9432 (replace 'check
9433 (lambda _
9923d5a4 9434 (invoke "rspec" "spec/rc4_spec.rb"))))))
1f1d71e0
BW
9435 (native-inputs
9436 `(("ruby-rspec" ,ruby-rspec-2)))
9437 (synopsis "Implementation of the RC4 algorithm")
9438 (description
9439 "RubyRC4 is a pure Ruby implementation of the RC4 algorithm.")
9440 (home-page "https://github.com/caiges/Ruby-RC4")
9441 (license license:expat)))
f3e085a8
BW
9442
9443(define-public ruby-afm
9444 (package
9445 (name "ruby-afm")
9446 (version "0.2.2")
9447 (source
9448 (origin
9449 (method url-fetch)
9450 (uri (rubygems-uri "afm" version))
9451 (sha256
9452 (base32
9453 "06kj9hgd0z8pj27bxp2diwqh6fv7qhwwm17z64rhdc4sfn76jgn8"))))
9454 (build-system ruby-build-system)
9455 (native-inputs
9456 `(("bundler" ,bundler)))
9457 (synopsis "Read Adobe Font Metrics (afm) files")
9458 (description
9459 "This library provides methods to read @dfn{Adobe Font Metrics} (afm)
9460files and use the data therein.")
7bf837fd 9461 (home-page "https://github.com/halfbyte/afm")
f3e085a8 9462 (license license:expat)))
acb6be42
BW
9463
9464(define-public ruby-ascii85
9465 (package
9466 (name "ruby-ascii85")
5854082a 9467 (version "1.0.3")
acb6be42
BW
9468 (source
9469 (origin
9470 (method url-fetch)
9471 (uri (rubygems-uri "Ascii85" version))
9472 (sha256
9473 (base32
5854082a 9474 "0658m37jjjn6drzqg1gk4p6c205mgp7g1jh2d00n4ngghgmz5qvs"))))
acb6be42
BW
9475 (build-system ruby-build-system)
9476 (native-inputs
9477 `(("bundler" ,bundler)))
9478 (synopsis "Encode and decode Ascii85 binary-to-text encoding")
9479 (description
9480 "This library provides methods to encode and decode Ascii85
9481binary-to-text encoding. The main modern use of Ascii85 is in PostScript and
9482@dfn{Portable Document Format} (PDF) file formats.")
9483 (home-page "https://github.com/datawraith/ascii85gem")
9484 (license license:expat)))
edf8caae
BW
9485
9486(define-public ruby-ttfunk
9487 (package
9488 (name "ruby-ttfunk")
4179ed93 9489 (version "1.6.2.1")
edf8caae
BW
9490 (source
9491 (origin
4e110825 9492 (method git-fetch)
edf8caae 9493 ;; fetch from github as the gem does not contain testing code
4e110825
EF
9494 (uri (git-reference
9495 (url "https://github.com/prawnpdf/ttfunk")
9496 (commit version)))
9497 (file-name (git-file-name name version))
edf8caae
BW
9498 (sha256
9499 (base32
4179ed93 9500 "0rsf4j6s97wbcnjbvmmh6xrc7imw4g9lrlcvn945wh400lc8r53z"))))
edf8caae
BW
9501 (build-system ruby-build-system)
9502 (arguments
9503 `(#:test-target "spec"
9504 #:phases
9505 (modify-phases %standard-phases
afb7a3e8
JL
9506 (add-before 'build 'remove-ssh
9507 (lambda _
9508 ;; remove dependency on an ssh key pair that doesn't exist
9509 (substitute* "ttfunk.gemspec"
9510 (("spec.signing_key.*") ""))
9511 #t))
edf8caae
BW
9512 (add-before 'check 'remove-rubocop
9513 (lambda _
9514 ;; remove rubocop as a dependency as not needed for testing
9515 (substitute* "ttfunk.gemspec"
9516 (("spec.add_development_dependency\\('rubocop'.*") ""))
9517 (substitute* "Rakefile"
9518 (("require 'rubocop/rake_task'") "")
afb7a3e8 9519 (("RuboCop::RakeTask.new") ""))
edf8caae
BW
9520 #t)))))
9521 (native-inputs
9522 `(("ruby-rspec" ,ruby-rspec)
afb7a3e8 9523 ("ruby-yard" ,ruby-yard)
edf8caae
BW
9524 ("bundler" ,bundler)))
9525 (synopsis "Font metrics parser for the Prawn PDF generator")
9526 (description
9527 "TTFunk is a TrueType font parser written in pure Ruby. It is used as
9528part of the Prawn PDF generator.")
9529 (home-page "https://github.com/prawnpdf/ttfunk")
9530 ;; From the README: "Matz's terms for Ruby, GPLv2, or GPLv3. See LICENSE
9531 ;; for details."
4179ed93 9532 (license %prawn-project-licenses)))
cbdd428c 9533
9270298f
BW
9534(define-public ruby-puma
9535 (package
9536 (name "ruby-puma")
63755fcd 9537 (version "3.9.1")
9270298f
BW
9538 (source
9539 (origin
a6cffe6e 9540 (method git-fetch)
9270298f 9541 ;; Fetch from GitHub because distributed gem does not contain tests.
a6cffe6e
EF
9542 (uri (git-reference
9543 (url "https://github.com/puma/puma")
9544 (commit (string-append "v" version))))
9545 (file-name (git-file-name name version))
9270298f
BW
9546 (sha256
9547 (base32
a6cffe6e 9548 "1kj75k81iik3aj73pkc9ixj9rwf95ipkyma65n28m64dgw02qi1f"))))
9270298f
BW
9549 (build-system ruby-build-system)
9550 (arguments
63755fcd
BW
9551 `(#:tests? #f ; Tests require an out-dated version of minitest.
9552 #:phases
9270298f
BW
9553 (modify-phases %standard-phases
9554 (add-before 'build 'fix-gemspec
9555 (lambda _
9556 (substitute* "puma.gemspec"
9557 (("git ls-files") "find * |sort"))
9558 #t)))))
9270298f
BW
9559 (synopsis "Simple, concurrent HTTP server for Ruby/Rack")
9560 (description
9561 "Puma is a simple, fast, threaded, and highly concurrent HTTP 1.1 server
9562for Ruby/Rack applications. Puma is intended for use in both development and
9563production environments. In order to get the best throughput, it is highly
9564recommended that you use a Ruby implementation with real threads like Rubinius
9565or JRuby.")
a6cffe6e 9566 (home-page "https://puma.io/")
9270298f
BW
9567 (license license:expat)))
9568
b0813490
BW
9569(define-public ruby-hoe-git
9570 (package
9571 (name "ruby-hoe-git")
9572 (version "1.6.0")
9573 (source
9574 (origin
9575 (method url-fetch)
9576 (uri (rubygems-uri "hoe-git" version))
9577 (sha256
9578 (base32
9579 "10jmmbjm0lkglwxbn4rpqghgg1ipjxrswm117n50adhmy8yij650"))))
9580 (build-system ruby-build-system)
9581 (propagated-inputs
07095a30 9582 `(("ruby-hoe" ,ruby-hoe)))
b0813490
BW
9583 (synopsis "Hoe plugins for tighter Git integration")
9584 (description
9585 "This package provides a set of Hoe plugins for tighter Git integration.
9586It provides tasks to automate release tagging and pushing and changelog
9587generation.")
7bf837fd 9588 (home-page "https://github.com/jbarnette/hoe-git")
b0813490
BW
9589 (license license:expat)))
9590
cbdd428c
BW
9591(define-public ruby-sequel
9592 (package
9593 (name "ruby-sequel")
65a7f09c 9594 (version "4.49.0")
cbdd428c
BW
9595 (source
9596 (origin
9597 (method url-fetch)
9598 (uri (rubygems-uri "sequel" version))
9599 (sha256
9600 (base32
65a7f09c 9601 "010p4a60npppvgbyw7pq5xia8aydpgxdlhh3qjm2615kwjsw3fl8"))))
cbdd428c
BW
9602 (build-system ruby-build-system)
9603 (arguments
9604 '(#:tests? #f)) ; Avoid dependency loop with ruby-minitest-hooks.
9605 (synopsis "Database toolkit for Ruby")
9606 (description "Sequel provides thread safety, connection pooling and a
9607concise DSL for constructing SQL queries and table schemas. It includes a
9608comprehensive ORM layer for mapping records to Ruby objects and handling
9609associated records.")
e2b70d90 9610 (home-page "https://sequel.jeremyevans.net")
cbdd428c 9611 (license license:expat)))
3cc78097
BW
9612
9613(define-public ruby-timecop
9614 (package
9615 (name "ruby-timecop")
3d4a5eb5 9616 (version "0.9.1")
3cc78097
BW
9617 (source
9618 (origin
9619 (method url-fetch)
9620 (uri (rubygems-uri "timecop" version))
9621 (sha256
9622 (base32
3d4a5eb5 9623 "0d7mm786180v4kzvn1f77rhfppsg5n0sq2bdx63x9nv114zm8jrp"))))
3cc78097
BW
9624 (build-system ruby-build-system)
9625 (arguments
9626 `(#:phases
9627 (modify-phases %standard-phases
9628 (add-before 'check 'set-check-rubylib
9629 (lambda _
9630 ;; Set RUBYLIB so timecop tests finds its own lib.
9631 (setenv "RUBYLIB" "lib")
9632 #t)))))
9633 (native-inputs
9634 `(("bundler" ,bundler)
9635 ("ruby-minitest-rg" ,ruby-minitest-rg)
9636 ("ruby-mocha" ,ruby-mocha)
9637 ("ruby-activesupport" ,ruby-activesupport)))
66e07664 9638 (synopsis "Test mocks for time-dependent functions")
3cc78097
BW
9639 (description
9640 "Timecop provides \"time travel\" and \"time freezing\" capabilities,
9641making it easier to test time-dependent code. It provides a unified method to
9642mock @code{Time.now}, @code{Date.today}, and @code{DateTime.now} in a single
9643call.")
9644 (home-page "https://github.com/travisjeffery/timecop")
9645 (license license:expat)))
9646
dae620b8
BW
9647(define-public ruby-concurrent
9648 (package
9649 (name "ruby-concurrent")
1007640a 9650 (version "1.1.5")
dae620b8
BW
9651 (source
9652 (origin
8fcba3be 9653 (method git-fetch)
dae620b8
BW
9654 ;; Download from GitHub because the rubygems version does not contain
9655 ;; Rakefile.
8fcba3be
MB
9656 (uri (git-reference
9657 (url "https://github.com/ruby-concurrency/concurrent-ruby")
9658 (commit (string-append "v" version))))
9659 (file-name (git-file-name name version))
dae620b8
BW
9660 (sha256
9661 (base32
1007640a 9662 "193q2k47vk7qdvv9hlhmmdxgy91xl4imapyk1ijdg9vgf46knyzj"))))
dae620b8
BW
9663 (build-system ruby-build-system)
9664 (arguments
1007640a 9665 `(#:test-target "ci"
dae620b8
BW
9666 #:phases
9667 (modify-phases %standard-phases
520e89eb 9668 (add-before 'replace-git-ls-files 'remove-extra-gemspecs
dae620b8
BW
9669 (lambda _
9670 ;; Delete extra gemspec files so 'first-gemspec' chooses the
9671 ;; correct one.
9672 (delete-file "concurrent-ruby-edge.gemspec")
9673 (delete-file "concurrent-ruby-ext.gemspec")
9674 #t))
1007640a 9675 (replace 'replace-git-ls-files
520e89eb 9676 (lambda _
1007640a
MB
9677 ;; XXX: The default substitution made by this phase is not fully
9678 ;; compatible with "git ls-files". The latter produces file names
9679 ;; such as "lib/foo", whereas ruby-build-system uses "find . [...]"
9680 ;; which gives "./lib/foo". That difference in turn breaks the
9681 ;; comparison against a glob pattern in this script.
9682 (substitute* "concurrent-ruby.gemspec"
9683 (("git ls-files") "find * -type f | sort"))
9684 #t))
9685 (add-before 'build 'remove-jar-from-gemspec
520e89eb 9686 (lambda _
1007640a
MB
9687 ;; The gemspec wants to include a JAR file that we do not build
9688 ;; nor need.
9689 (substitute* "concurrent-ruby.gemspec"
9690 (("'lib/concurrent/concurrent_ruby.jar'")
9691 ""))
9692 #t))
9693 (add-before 'build 'remove-rake_compiler_dock-dependency
9694 (lambda _
9695 ;; This library is only used when building for non-MRI targets.
9696 (substitute* "Rakefile"
9697 (("require 'rake_compiler_dock'")
9698 ""))
520e89eb 9699 #t))
9019b37f
BW
9700 (add-before 'check 'remove-timecop-dependency
9701 ;; Remove timecop-dependent tests as having timecop as a depedency
9702 ;; causes circular depedencies.
9703 (lambda _
9704 (delete-file "spec/concurrent/executor/timer_set_spec.rb")
9705 (delete-file "spec/concurrent/scheduled_task_spec.rb")
9706 #t)))))
dae620b8
BW
9707 (native-inputs
9708 `(("ruby-rake-compiler" ,ruby-rake-compiler)
9019b37f 9709 ("ruby-rspec" ,ruby-rspec)))
dae620b8
BW
9710 (synopsis "Concurrency tools for Ruby")
9711 (description
9712 "This library provides modern concurrency tools including agents,
9713futures, promises, thread pools, actors, supervisors, and more. It is
9714inspired by Erlang, Clojure, Go, JavaScript, actors and classic concurrency
9715patterns.")
9716 (home-page "http://www.concurrent-ruby.com")
9717 (license license:expat)))
2de61e34
BW
9718
9719(define-public ruby-pkg-config
9720 (package
9721 (name "ruby-pkg-config")
884a80dd 9722 (version "1.2.5")
2de61e34
BW
9723 (source
9724 (origin
9725 (method url-fetch)
9726 (uri (rubygems-uri "pkg-config" version))
9727 (sha256
9728 (base32
884a80dd 9729 "056mzqdh4yjznsg36fi0xiq76f24vxlhzh2n4az919l3x5k318ar"))))
2de61e34
BW
9730 (build-system ruby-build-system)
9731 (arguments
9732 ;; Tests require extra files not included in the gem.
9733 `(#:tests? #f))
9734 (synopsis "Detect libraries for compiling Ruby native extensions")
9735 (description
9736 "@code{pkg-config} can be used in your extconf.rb to properly detect need
9737libraries for compiling Ruby native extensions.")
9738 (home-page "https://github.com/ruby-gnome2/pkg-config")
9739 (license license:lgpl2.0+)))
6689c636
MFM
9740
9741(define-public ruby-net-http-digest-auth
9742 (package
9743 (name "ruby-net-http-digest-auth")
ba074a85 9744 (version "1.4.1")
6689c636
MFM
9745 (source
9746 (origin
9747 (method url-fetch)
9748 (uri (rubygems-uri "net-http-digest_auth" version))
9749 (sha256
9750 (base32
ba074a85 9751 "1nq859b0gh2vjhvl1qh1zrk09pc7p54r9i6nnn6sb06iv07db2jb"))))
6689c636
MFM
9752 (build-system ruby-build-system)
9753 (native-inputs
9754 `(("ruby-hoe" ,ruby-hoe)))
9755 (synopsis "RFC 2617 HTTP digest authentication library")
9756 (description
9757 "This library implements HTTP's digest authentication scheme based on
9758RFC 2617. This enables the use of the digest authentication scheme instead
9759of the more insecure basic authentication scheme.")
7bf837fd 9760 (home-page "https://github.com/drbrain/net-http-digest_auth")
6689c636 9761 (license license:expat)))
06116573 9762
9763(define-public ruby-mail
9764 (package
9765 (name "ruby-mail")
04de0cb5 9766 (version "2.6.6")
06116573 9767 (source
9768 (origin
9769 (method url-fetch)
9770 (uri (rubygems-uri "mail" version))
9771 (sha256
9772 (base32
04de0cb5 9773 "0d7lhj2dw52ycls6xigkfz6zvfhc6qggply9iycjmcyj9760yvz9"))))
06116573 9774 (build-system ruby-build-system)
9775 (propagated-inputs
9776 `(("ruby-mime-types" ,ruby-mime-types)))
9777 (arguments
9778 ;; Tests require extra gems not included in the Gemfile.
9779 ;; XXX: Try enabling this for the next version with mini_mime.
9780 `(#:tests? #f))
9781 (synopsis "Mail library for Ruby")
9782 (description
9783 "Mail is an internet library for Ruby that is designed to handle email
9784generation, parsing and sending. The purpose of this library is to provide
9785a single point of access to handle all email functions, including sending
9786and receiving emails. All network type actions are done through proxy
9787methods to @code{Net::SMTP}, @code{Net::POP3} etc.
9788
9789Mail has been designed with a very simple object oriented system that
9790really opens up the email messages you are parsing, if you know what you
9791are doing, you can fiddle with every last bit of your email directly.")
9792 (home-page "https://github.com/mikel/mail")
9793 (license license:expat)))
9b4c8e1b 9794
4d372cb9
CB
9795(define-public ruby-mathn
9796 (package
9797 (name "ruby-mathn")
9798 (version "0.1.0")
9799 (source
9800 (origin
9801 (method url-fetch)
9802 (uri (rubygems-uri "mathn" version))
9803 (sha256
9804 (base32
9805 "1wn812llln9jzgybz2d7536q39z3gi99i6fi0j1dapcpzvhgrr0p"))))
9806 (build-system ruby-build-system)
9807 (native-inputs
9808 `(("bundler" ,bundler)
9809 ("ruby-rake-compiler" ,ruby-rake-compiler)))
9810 (synopsis "Extends math operations for increased precision")
9811 (description
9812 "This gem makes mathematical operations more precise in Ruby and
9813integrates other mathematical standard libraries. Prior to Ruby 2.5,
9814@code{mathn} was part of the Ruby standard library.")
9815 (home-page "https://github.com/ruby/mathn")
9816 (license license:bsd-2)))
9817
9b4c8e1b
BW
9818(define-public ruby-code-statistics
9819 (package
9820 (name "ruby-code-statistics")
9821 (version "0.2.13")
9822 (source
9823 (origin
9824 (method url-fetch)
9825 (uri (rubygems-uri "code_statistics" version))
9826 (sha256
9827 (base32
9828 "07rdpsbwbmh4vp8nxyh308cj7am2pbrfhv9v5xr2d5gq8hnnsm93"))))
9829 (build-system ruby-build-system)
9830 (arguments
9831 `(#:tests? #f)) ; Not all test code is included in gem.
9832 (synopsis "Port of the rails 'rake stats' method")
9833 (description
9834 "This gem is a port of the rails 'rake stats' method so it can be made
9835more robust and work for non rails projects.")
702a1012 9836 (home-page "https://github.com/danmayer/code_statistics")
9b4c8e1b 9837 (license license:expat)))
f90c25c1
CL
9838
9839(define-public ruby-rubypants
9840 (package
9841 (name "ruby-rubypants")
9842 (version "0.6.0")
9843 (source (origin
9844 (method url-fetch)
9845 (uri (rubygems-uri "rubypants" version))
9846 (sha256
9847 (base32
9848 "0xpqkslan2wkyal2h9qhplkr5d4sdn7q6csigrhnljjpp8j4qfsh"))))
9849 (build-system ruby-build-system)
9850 (arguments
9851 '(#:tests? #f)) ; need Codecov
9852 (synopsis "Port of the smart-quotes library SmartyPants")
9853 (description
9854 "RubyPants is a Ruby port of the smart-quotes library SmartyPants. The
9855original SmartyPants is a web publishing plug-in for Movable Type, Blosxom,
9856and BBEdit that easily translates plain ASCII punctuation characters into
9857smart typographic punctuation HTML entities.")
9858 (home-page "https://github.com/jmcnevin/rubypants")
9859 (license license:bsd-2)))
beb34835
CL
9860
9861(define-public ruby-org-ruby
9862 (package
9863 (name "ruby-org-ruby")
9864 (version "0.9.12")
9865 (source (origin
9866 (method url-fetch)
9867 (uri (rubygems-uri "org-ruby" version))
9868 (sha256
9869 (base32
9870 "0x69s7aysfiwlcpd9hkvksfyld34d8kxr62adb59vjvh8hxfrjwk"))))
9871 (build-system ruby-build-system)
9872 (arguments
9873 '(#:tests? #f)) ; no rakefile
9874 (propagated-inputs
9875 `(("ruby-rubypants" ,ruby-rubypants)))
9876 (synopsis "Org-mode parser written in Ruby")
9877 (description
9878 "Org-ruby is an org-mode parser written in Ruby. The most significant
9879thing this library does today is convert org-mode files to HTML or Textile or
9880Markdown.")
9881 (home-page "https://github.com/wallyqs/org-ruby")
9882 (license license:expat)))
670ee20a
BW
9883
9884(define-public ruby-rake
9885 (package
9886 (name "ruby-rake")
c997403a 9887 (version "13.0.1")
670ee20a
BW
9888 (source
9889 (origin
9890 (method url-fetch)
9891 (uri (rubygems-uri "rake" version))
9892 (sha256
9893 (base32
c997403a 9894 "0w6qza25bq1s825faaglkx1k6d59aiyjjk3yw3ip5sb463mhhai9"))))
670ee20a
BW
9895 (build-system ruby-build-system)
9896 (native-inputs
9897 `(("bundler" ,bundler)))
9898 (synopsis "Rake is a Make-like program implemented in Ruby")
9899 (description
9900 "Rake is a Make-like program where tasks and dependencies are specified
9901in standard Ruby syntax.")
9902 (home-page "https://github.com/ruby/rake")
9903 (license license:expat)))
45498f51 9904
51420124 9905(define-public ruby-childprocess
45498f51
DM
9906 (package
9907 (name "ruby-childprocess")
459e4a1a 9908 (version "3.0.0")
45498f51
DM
9909 (source
9910 (origin
9911 (method url-fetch)
9912 (uri (rubygems-uri "childprocess" version))
9913 (sha256
9914 (base32
459e4a1a 9915 "1ic028k8xgm2dds9mqnvwwx3ibaz32j8455zxr9f4bcnviyahya5"))))
45498f51
DM
9916 (build-system ruby-build-system)
9917 (arguments
9918 `(#:tests? #f))
9919 (native-inputs
9920 `(("bundler" ,bundler)
9921 ("ruby-rspec" ,ruby-rspec)))
9922 (propagated-inputs
9923 `(("ruby-ffi" ,ruby-ffi)))
9924 (synopsis "Control external programs running in the background, in Ruby")
9925 (description "@code{childprocess} provides a gem to control external
9926programs running in the background, in Ruby.")
459e4a1a 9927 (home-page "https://github.com/enkessler/childprocess")
45498f51 9928 (license license:expat)))
1f10e28d 9929
0d16905b
JL
9930(define-public ruby-public-suffix
9931 (package
9932 (name "ruby-public-suffix")
70e4fcfe 9933 (version "4.0.5")
0d16905b
JL
9934 (source (origin
9935 (method url-fetch)
9936 (uri (rubygems-uri "public_suffix" version))
9937 (sha256
9938 (base32
70e4fcfe 9939 "0vywld400fzi17cszwrchrzcqys4qm6sshbv73wy5mwcixmrgg7g"))))
0d16905b
JL
9940 (build-system ruby-build-system)
9941 (arguments
1f4fc125
CB
9942 '(#:phases
9943 (modify-phases %standard-phases
9944 ;; Remove the requirement on Rubocop, as it isn't useful to run, and
9945 ;; including it as an input can lead to circular dependencies.
9946 (add-after 'unpack 'remove-rubocop-from-Rakefile
9947 (lambda _
9948 (substitute* "Rakefile"
9949 (("require \"rubocop/rake\\_task\"") "")
9950 (("RuboCop::RakeTask\\.new") ""))
9951 #t)))))
9952 (native-inputs
9953 `(("bundler" ,bundler)
9954 ("ruby-yard" ,ruby-yard)
9955 ("ruby-mocha" ,ruby-mocha)
9956 ("ruby-minitest-reporters" ,ruby-minitest-reporters)))
0d16905b
JL
9957 (home-page "https://simonecarletti.com/code/publicsuffix-ruby/")
9958 (synopsis "Domain name parser")
9959 (description "The gem @code{public_suffix} is a domain name parser,
9960written in Ruby, and based on the @dfn{Public Suffix List}. A public suffix
9961is one under which Internet users can (or historically could) directly
9962register names. Some examples of public suffixes are @code{.com},
9963@code{.co.uk} and @code{pvt.k12.ma.us}. The Public Suffix List is a list of
9964all known public suffixes.")
9965 (license license:expat)))
6f2c4efb
JL
9966
9967(define-public ruby-addressable
9968 (package
9969 (name "ruby-addressable")
91f7ee87 9970 (version "2.7.0")
6f2c4efb
JL
9971 (source (origin
9972 (method url-fetch)
9973 (uri (rubygems-uri "addressable" version))
9974 (sha256
9975 (base32
91f7ee87 9976 "1fvchp2rhp2rmigx7qglf69xvjqvzq7x0g49naliw29r2bz656sy"))))
6f2c4efb 9977 (build-system ruby-build-system)
0a794b30
CB
9978 (arguments
9979 '(#:test-target "spec"
9980 #:phases
9981 (modify-phases %standard-phases
9982 (add-after 'unpack 'remove-unnecessary-dependencies-from-Gemfile
9983 (lambda _
9984 (substitute* "Gemfile"
9985 (("git: 'https://github.com/sporkmonger/rack-mount.git',") "")
9986 ((".*launchy.*") "")
9987 ((".*rake.*") "gem 'rake'\n")
9988 ((".*redcarpet.*") ""))
9989 #t))
9990 (add-before 'check 'delete-network-dependent-test
9991 (lambda _
9992 (delete-file "spec/addressable/net_http_compat_spec.rb")
9993 #t)))))
9994 (native-inputs
9995 `(("ruby-rspec" ,ruby-rspec)
9996 ("bundler" ,bundler)
9997 ("ruby-idn-ruby" ,ruby-idn-ruby)
9998 ("ruby-sporkmonger-rack-mount" ,ruby-sporkmonger-rack-mount)
1628d57b 9999 ("ruby-rspec-its" ,ruby-rspec-its-minimal)
0a794b30
CB
10000 ("ruby-yard" ,ruby-yard)
10001 ("ruby-simplecov" ,ruby-simplecov)))
6f2c4efb
JL
10002 (propagated-inputs
10003 `(("ruby-public-suffix" ,ruby-public-suffix)))
6f2c4efb
JL
10004 (home-page "https://github.com/sporkmonger/addressable")
10005 (synopsis "Alternative URI implementation")
10006 (description "Addressable is a replacement for the URI implementation that
10007is part of Ruby's standard library. It more closely conforms to RFC 3986,
10008RFC 3987, and RFC 6570 (level 4), providing support for IRIs and URI templates.")
10009 (license license:asl2.0)))
9c7f15c0 10010
305e9b33
MB
10011(define-public ruby-colorize
10012 (package
10013 (name "ruby-colorize")
10014 (version "0.8.1")
10015 (source (origin
10016 (method url-fetch)
10017 (uri (rubygems-uri "colorize" version))
10018 (sha256
10019 (base32
10020 "133rqj85n400qk6g3dhf2bmfws34mak1wqihvh3bgy9jhajw580b"))))
10021 (build-system ruby-build-system)
10022 (arguments
10023 '(#:phases (modify-phases %standard-phases
10024 (add-before 'check 'remove-codeclimate-dependency
10025 (lambda _
10026 (substitute* "test/test_colorize.rb"
10027 ;; Do not hook the tests into the online CodeClimate
10028 ;; service which is unnecessary for these tests.
10029 (("require 'codeclimate-test-reporter'")
10030 "")
10031 (("CodeClimate.*") ""))
10032 #t)))))
10033 (synopsis "Add color effects to the @code{String} class")
10034 (description
10035 "This package extends the @code{String} class and adds a
10036@code{ColorizedString} with methods to set text color, background color,
10037and text effects.")
702a1012 10038 (home-page "https://github.com/fazibear/colorize")
305e9b33
MB
10039 (license license:gpl2+)))
10040
9c7f15c0
JL
10041(define-public ruby-colorator
10042 (package
10043 (name "ruby-colorator")
10044 (version "1.1.0")
10045 (source (origin
10046 (method url-fetch)
10047 (uri (rubygems-uri "colorator" version))
10048 (sha256
10049 (base32
10050 "0f7wvpam948cglrciyqd798gdc6z3cfijciavd0dfixgaypmvy72"))))
10051 (build-system ruby-build-system)
10052 (arguments
10053 ;; No test target
10054 `(#:tests? #f))
10055 (home-page "http://octopress.org/colorator/")
10056 (synopsis "Terminal color library")
10057 (description "Colorator is a Ruby gem that helps you colorize your text
10058for the terminal.")
10059 (license license:expat)))
78b9c291
JL
10060
10061(define-public ruby-command-line-reporter
10062 (package
10063 (name "ruby-command-line-reporter")
b448e408 10064 (version "4.0.1")
78b9c291
JL
10065 (source (origin
10066 (method url-fetch)
10067 (uri (rubygems-uri "command_line_reporter" version))
10068 (sha256
10069 (base32
b448e408 10070 "1l0zxkh5n9dxfw46lpkg416ljpldlq1bgdhqh0d118dk338nz4ll"))))
78b9c291
JL
10071 (build-system ruby-build-system)
10072 (arguments
10073 ;; No Rakefile
10074 `(#:tests? #f
10075 #:phases
10076 (modify-phases %standard-phases
10077 (add-before 'build 'fix-dependencies
10078 (lambda _
10079 (substitute* ".gemspec"
10080 ;; colored is unmaintained
10081 (("colored") "colorator")
10082 ;; colorator version
10083 (("= 1.2") "= 1.1"))
10084 #t)))))
10085 (propagated-inputs `(("ruby-colorator" ,ruby-colorator)))
10086 (home-page "https://github.com/wbailey/command_line_reporter")
10087 (synopsis "Report production while executing Ruby scripts")
10088 (description "This gem provides a DSL that makes it easy to write reports
10089of various types in ruby. It eliminates the need to litter your source with
10090puts statements, instead providing a more readable, expressive interface to
10091your application.")
10092 (license license:asl2.0)))
f22c0387
JL
10093
10094(define-public ruby-command-line-reporter-3
10095 (package
10096 (inherit ruby-command-line-reporter)
10097 (version "3.3.6")
10098 (source (origin
10099 (method url-fetch)
10100 (uri (rubygems-uri "command_line_reporter" version))
10101 (sha256
10102 (base32
10103 "1h39zqqxp3k4qk49ajpx0jps1vmvxgkh43mqkb6znk583bl0fv71"))))))
6bba8ecf 10104
439d47cd
MC
10105(define-public ruby-kpeg
10106 (package
10107 (name "ruby-kpeg")
10108 (version "1.1.0")
10109 (source
10110 (origin
10111 (method url-fetch)
10112 (uri (rubygems-uri "kpeg" version))
10113 (sha256
10114 (base32
10115 "0x2kpfrcagj931masm5y1kwbnc6nxl60cqdcd3lyd1d2hz7kzlia"))))
10116 (build-system ruby-build-system)
10117 (native-inputs
10118 `(("ruby-hoe" ,ruby-hoe)))
10119 (synopsis "PEG library for Ruby")
10120 (description "KPeg is a simple PEG library for Ruby. It provides an API as
10121well as native grammar to build the grammar. KPeg supports direct left
10122recursion of rules via the
10123@uref{http://www.vpri.org/pdf/tr2008003_experimenting.pdf,OMeta memoization}
10124technique.")
10125 (home-page "https://github.com/evanphx/kpeg")
10126 (license license:expat)))
10127
6bba8ecf
JL
10128(define-public ruby-rdoc
10129 (package
10130 (name "ruby-rdoc")
9304f989 10131 (version "6.2.0")
6bba8ecf 10132 (source
9304f989
MC
10133 (origin
10134 (method git-fetch)
10135 (uri (git-reference
b0e7b699 10136 (url "https://github.com/ruby/rdoc")
9304f989
MC
10137 (commit (string-append "v" version))))
10138 (file-name (git-file-name name version))
10139 (sha256
10140 (base32
10141 "0dhk29nidv93b5vnjvlm9gcixgn4i0jcyzrgxdk6pdg019bw4cj6"))))
6bba8ecf 10142 (build-system ruby-build-system)
9304f989
MC
10143 (arguments
10144 `(#:phases
10145 (modify-phases %standard-phases
10146 (add-after 'unpack 'patch-gemspec
10147 ;; TODO: Remove after next release is tagged.
10148 (lambda _
10149 (substitute* "rdoc.gemspec"
10150 (("\"lib/rdoc/generator/template/darkfish/js/\
10151jquery\\.js\", ") ""))
10152 #t))
10153 (add-before 'build 'generate
10154 ;; 'gem build' doesn't honor Rakefile dependencies (see:
10155 ;; https://github.com/ruby/rdoc/issues/432#issuecomment-650808977).
10156 (lambda _
10157 (invoke "rake" "generate"))))))
6bba8ecf 10158 (native-inputs
9304f989
MC
10159 `(("bundler" ,bundler)
10160 ("ruby-kpeg" ,ruby-kpeg)
10161 ("ruby-racc" ,ruby-racc)
10162 ("ruby-rubocop" ,ruby-rubocop)))
6bba8ecf
JL
10163 (home-page "https://ruby.github.io/rdoc/")
10164 (synopsis "HTML and command-line documentation utility")
10165 (description "RDoc produces HTML and command-line documentation for Ruby
10166projects. RDoc includes the +rdoc+ and +ri+ tools for generating and displaying
10167documentation from the command-line.")
10168 (license license:gpl2+)))
18077ffc
JL
10169
10170(define-public ruby-sass-listen
10171 (package
10172 (name "ruby-sass-listen")
10173 (version "4.0.0")
10174 (source (origin
10175 (method url-fetch)
10176 (uri (rubygems-uri "sass-listen" version))
10177 (sha256
10178 (base32
10179 "0xw3q46cmahkgyldid5hwyiwacp590zj2vmswlll68ryvmvcp7df"))))
10180 (build-system ruby-build-system)
10181 (arguments
10182 ;; No test target
10183 `(#:tests? #f))
10184 (propagated-inputs
10185 `(("ruby-rb-fsevent" ,ruby-rb-fsevent)
10186 ("ruby-rb-inotify" ,ruby-rb-inotify)))
10187 (home-page "https://github.com/sass/listen")
10188 (synopsis "File modification notification library")
10189 (description "The Listen gem listens to file modifications and notifies you
10190about the changes.")
10191 (license license:expat)))
0c8eedc1
JL
10192
10193(define-public ruby-terminfo
10194 (package
10195 (name "ruby-terminfo")
10196 (version "0.1.1")
10197 (source
10198 (origin
10199 (method url-fetch)
10200 (uri (rubygems-uri "ruby-terminfo" version))
10201 (sha256
10202 (base32
10203 "0rl4ic5pzvrpgd42z0c1s2n3j39c9znksblxxvmhkzrc0ckyg2cm"))))
10204 (build-system ruby-build-system)
10205 (arguments
10206 `(#:test-target "test"
10207 ;; Rakefile requires old packages and would need modification to
10208 ;; work with current software.
10209 #:tests? #f))
10210 (inputs
10211 `(("ncurses" ,ncurses)))
10212 (native-inputs
10213 `(("ruby-rubygems-tasks" ,ruby-rubygems-tasks)
10214 ("ruby-rdoc" ,ruby-rdoc)))
10215 (home-page "http://www.a-k-r.org/ruby-terminfo/")
10216 (synopsis "Terminfo binding for Ruby")
10217 (description "Ruby-terminfo provides terminfo binding for Ruby.")
10218 (license license:bsd-3)))
ddc3a667
JL
10219
10220(define-public ruby-diffy
10221 (package
10222 (name "ruby-diffy")
10223 (version "3.2.1")
10224 (source
10225 (origin
10226 (method url-fetch)
10227 (uri (rubygems-uri "diffy" version))
10228 (sha256
10229 (base32
10230 "119imrkn01agwhx5raxhknsi331y5i4yda7r0ws0an6905ximzjg"))))
10231 (build-system ruby-build-system)
10232 (arguments
10233 ;; No tests
10234 `(#:tests? #f))
10235 (native-inputs
10236 `(("ruby-rspec" ,ruby-rspec)))
10237 (home-page "https://github.com/samg/diffy")
10238 (synopsis "Convenient diffing in ruby")
10239 (description "Diffy provides a convenient way to generate a diff from two
10240strings or files.")
10241 (license license:expat)))
6456beef
JL
10242
10243(define-public ruby-sass-spec
10244 (package
10245 (name "ruby-sass-spec")
10246 (version "3.5.4")
11df8321
TGR
10247 (source
10248 (origin
10249 (method git-fetch)
10250 (uri (git-reference
b0e7b699 10251 (url "https://github.com/sass/sass-spec")
11df8321
TGR
10252 (commit (string-append "v" version))))
10253 (file-name (git-file-name name version))
10254 (sha256
10255 (base32 "1zsw66830w0xlc7kxz6fm4b5nyb44vdsdgm9mgy06s5aixx83pwr"))))
6456beef
JL
10256 (build-system ruby-build-system)
10257 (propagated-inputs
10258 `(("ruby-command-line-reporter-3" ,ruby-command-line-reporter-3)
10259 ("ruby-diffy" ,ruby-diffy)
10260 ("ruby-terminfo" ,ruby-terminfo)))
10261 (arguments
2c7cb711
CB
10262 `(;; This package contains tests for a sass implementation, and the to
10263 ;; avoid any circular dependencies, the tests are not run here
10264 #:tests? #f
10265 #:phases
10266 (modify-phases %standard-phases
10267 (add-after 'unpack 'patch-test
10268 (lambda _
10269 (delete-file "spec/values/colors/alpha_hex-3.5/error")
10270 (substitute* "spec/values/colors/alpha_hex-3.5/expected_output.css"
10271 (("string") "color")))))))
6456beef
JL
10272 (home-page "https://github.com/sass/sass-spec")
10273 (synopsis "Test suite for Sass")
10274 (description "Sass Spec is a test suite for Sass. Test cases are all in
10275the @file{spec} directory.")
10276 (license license:expat)))
f00f4492
JL
10277
10278(define-public ruby-sass
10279 (package
10280 (name "ruby-sass")
11ff2adc 10281 (version "3.6.0")
f00f4492
JL
10282 (source (origin
10283 (method url-fetch)
10284 (uri (rubygems-uri "sass" version))
10285 (sha256
10286 (base32
11ff2adc 10287 "18c6prbw9wl8bqhb2435pd9s0lzarl3g7xf8pmyla28zblvwxmyh"))))
f00f4492
JL
10288 (build-system ruby-build-system)
10289 (propagated-inputs
10290 `(("ruby-sass-listen" ,ruby-sass-listen)))
10291 (native-inputs
11ff2adc
CB
10292 `(("ruby-sass-spec" ,ruby-sass-spec)
10293 ("ruby-mathn" ,ruby-mathn)))
3497086b 10294 (home-page "https://sass-lang.com/")
f00f4492
JL
10295 (synopsis "CSS extension language")
10296 (description "Sass is a CSS extension language. It extends CSS with
10297features that don't exist yet like variables, nesting, mixins and inheritance.")
10298 (license license:expat)))
5e242cb4 10299
9efc888d
CB
10300(define-public ruby-sassc
10301 (package
10302 (name "ruby-sassc")
3e776b44 10303 (version "2.2.1")
9efc888d
CB
10304 (source
10305 (origin
10306 (method url-fetch)
10307 (uri (rubygems-uri "sassc" version))
10308 (sha256
10309 (base32
3e776b44 10310 "09bnid7r5z5hcin5hykvpvv8xig27wbbckxwis60z2aaxq4j9siz"))))
9efc888d
CB
10311 (build-system ruby-build-system)
10312 (arguments
3e776b44
CB
10313 '(#:modules ((guix build ruby-build-system)
10314 (guix build utils)
10315 (ice-9 textual-ports))
10316 #:phases
9efc888d
CB
10317 (modify-phases %standard-phases
10318 ;; TODO: This would be better as a snippet, but the ruby-build-system
10319 ;; doesn't seem to support that
10320 (add-after 'unpack 'remove-libsass
10321 (lambda _
10322 (delete-file-recursively "ext")
3e776b44
CB
10323 (with-atomic-file-replacement "sassc.gemspec"
10324 (lambda (in out)
10325 (let* ((gemspec (get-string-all in))
10326 (index (string-contains gemspec "libsass_dir")))
10327 (display (string-append
10328 (string-take gemspec index)
10329 "\nend\n")
10330 out))))
9efc888d
CB
10331 #t))
10332 (add-after 'unpack 'dont-check-the-libsass-version
10333 (lambda _
10334 (substitute* "test/native_test.rb"
10335 (("assert_equal.*Native\\.version") ""))
10336 #t))
10337 (add-after 'unpack 'remove-git-from-gemspec
10338 (lambda _
10339 (substitute* "sassc.gemspec"
3e776b44 10340 (("`git ls-files -z`") "`find . -type f -print0 |sort -z`"))
9efc888d
CB
10341 #t))
10342 (add-after 'unpack 'remove-extensions-from-gemspec
10343 (lambda _
10344 (substitute* "sassc.gemspec"
3e776b44 10345 (("\\[\"ext/extconf.rb\"\\]") "[]"))
9efc888d
CB
10346 #t))
10347 (add-after 'unpack 'fix-Rakefile
10348 (lambda _
10349 (substitute* "Rakefile"
3e776b44 10350 (("test: 'compile:libsass'") ":test"))
9efc888d
CB
10351 #t))
10352 (add-after 'unpack 'remove-unnecessary-dependencies
10353 (lambda _
10354 (substitute* "test/test_helper.rb"
10355 (("require \"pry\"") ""))
10356 #t))
10357 (add-before 'build 'patch-native.rb
10358 (lambda* (#:key inputs #:allow-other-keys)
10359 (substitute* "lib/sassc/native.rb"
10360 ((".*gem_root = spec.gem_dir") "")
10361 (("ffi_lib .*\n")
10362 (string-append
10363 "ffi_lib '" (assoc-ref inputs "libsass") "/lib/libsass.so'")))
10364 #t))
10365 ;; The gemspec still references the libsass files, so just keep the
10366 ;; one in the gem.
10367 (delete 'extract-gemspec))))
10368 (propagated-inputs
10369 `(("ruby-ffi" ,ruby-ffi)
10370 ("ruby-rake" ,ruby-rake)))
10371 (inputs
10372 `(("libsass" ,libsass)))
10373 (native-inputs
10374 `(("bundler" ,bundler)
3e776b44 10375 ("ruby-rake-compiler" ,ruby-rake-compiler)
9efc888d
CB
10376 ("ruby-minitest-around" ,ruby-minitest-around)
10377 ("ruby-test-construct" ,ruby-test-construct)))
10378 (synopsis "Use libsss from Ruby")
10379 (description
10380 "This library provides Ruby q@acronym{FFI, Foreign Function Interface}
10381bindings to the libsass library. This enables rendering
10382@acronym{SASS,Syntactically awesome style sheets} from Ruby code.")
10383 (home-page "https://github.com/sass/sassc-ruby")
10384 (license license:expat)))
10385
5e242cb4
JL
10386(define-public ruby-jekyll-sass-converter
10387 (package
10388 (name "ruby-jekyll-sass-converter")
10389 (version "1.5.2")
10390 (source (origin
10391 (method url-fetch)
10392 (uri (rubygems-uri "jekyll-sass-converter" version))
10393 (sha256
10394 (base32
10395 "008ikh5fk0n6ri54mylcl8jn0mq8p2nfyfqif2q3pp0lwilkcxsk"))))
10396 (build-system ruby-build-system)
10397 (propagated-inputs
10398 `(("ruby-sass" ,ruby-sass)))
10399 (arguments
10400 ;; No rakefile
10401 `(#:tests? #f))
10402 (home-page "https://github.com/jekyll/jekyll-sass-converter")
10403 (synopsis "Sass converter for Jekyll")
10404 (description "This gem provide built-in support for the Sass converter
10405in Jekyll.")
10406 (license license:expat)))
ceac6f6f
JL
10407
10408(define-public ruby-jekyll-watch
10409 (package
10410 (name "ruby-jekyll-watch")
6cbba8a3 10411 (version "2.1.2")
ceac6f6f
JL
10412 (source (origin
10413 (method url-fetch)
10414 (uri (rubygems-uri "jekyll-watch" version))
10415 (sha256
10416 (base32
6cbba8a3 10417 "1s9ly83sp8albvgdff12xy2h4xd8lm6z2fah4lzmk2yvp85jzdzv"))))
ceac6f6f
JL
10418 (build-system ruby-build-system)
10419 (propagated-inputs
6cbba8a3 10420 `(("ruby-listen" ,ruby-listen)))
ceac6f6f
JL
10421 (arguments
10422 ;; No rakefile
10423 `(#:tests? #f))
10424 (home-page "https://github.com/jekyll/jekyll-watch")
10425 (synopsis "Jekyll auto-rebuild support")
10426 (description "This gems add the @code{--watch} switch to the jekyll CLI
10427interface. It allows Jekyll to rebuild your site when a file changes.")
10428 (license license:expat)))
3224a5a8
JL
10429
10430(define-public ruby-parallel
10431 (package
10432 (name "ruby-parallel")
c41fba01
CB
10433 (version "1.13.0")
10434 (source
10435 (origin
10436 (method git-fetch)
10437 (uri (git-reference
b0e7b699 10438 (url "https://github.com/grosser/parallel")
c41fba01
CB
10439 (commit (string-append "v" version))))
10440 (file-name (git-file-name name version))
10441 (sha256
10442 (base32
10443 "1isqzbqxz2ndad4i5z3lb9ldrhaijfncj8bmffv04sq44sv87ikv"))))
3224a5a8 10444 (build-system ruby-build-system)
c41fba01
CB
10445 (arguments
10446 `(;; TODO 3 test failures
10447 ;; rspec ./spec/parallel_spec.rb:190 # Parallel.in_processes does not
10448 ;; open unnecessary pipes
10449 ;; rspec './spec/parallel_spec.rb[1:9:7]' # Parallel.each works with
10450 ;; SQLite in processes
10451 ;; rspec './spec/parallel_spec.rb[1:9:16]' # Parallel.each works with
10452 ;; SQLite in threads
10453 #:tests? #f
10454 #:test-target "rspec-rerun:spec"
10455 #:phases
10456 (modify-phases %standard-phases
10457 (add-after 'unpack 'patch-Gemfile
10458 (lambda _
10459 (substitute* "Gemfile"
10460 (("gem 'rspec-legacy_formatters'") "")
10461 (("gem 'activerecord.*$") "gem 'activerecord'\n"))))
10462 (add-before 'check 'delete-Gemfile.lock
10463 (lambda _
10464 ;; Bundler isn't being used for fetching dependendencies, so
10465 ;; delete the Gemfile.lock
10466 (delete-file "Gemfile.lock")
10467 #t))
10468 (add-before 'build 'patch-gemspec
10469 (lambda _
10470 (substitute* "parallel.gemspec"
10471 (("git ls-files") "find"))
10472 #t)))))
10473 (native-inputs
10474 `(("ruby-rspec" ,ruby-rspec)
10475 ("ruby-rspec-rerun" ,ruby-rspec-rerun)
10476 ("bundler" ,bundler)
10477 ("ruby-activerecord" ,ruby-activerecord)
10478 ("ruby-progressbar" ,ruby-progressbar)
10479 ("ruby-bump" ,ruby-bump)
10480 ("procps" ,procps)
10481 ("lsof" ,lsof)
10482 ("ruby-mysql2" ,ruby-mysql2)
10483 ("ruby-sqlite3" ,ruby-sqlite3)
10484 ("ruby-i18n" ,ruby-i18n)))
3224a5a8
JL
10485 (home-page "https://github.com/grosser/parallel")
10486 (synopsis "Parallel processing in Ruby")
10487 (description "Parallel allows you to run any code in parallel Processes
10488(to use all CPUs) or Threads(to speedup blocking operations). It is best
10489suited for map-reduce or e.g. parallel downloads/uploads.")
10490 (license license:expat)))
83d9f672
JL
10491
10492(define-public ruby-cane
10493 (package
10494 (name "ruby-cane")
10495 (version "3.0.0")
10496 (source (origin
10497 (method url-fetch)
10498 (uri (rubygems-uri "cane" version))
10499 (sha256
10500 (base32
10501 "0yf5za3l7lhrqa3g56sah73wh33lbxy5y3cb7ij0a2bp1b4kwhih"))))
10502 (build-system ruby-build-system)
10503 (arguments `(#:tests? #f)); No rakefile
10504 (home-page "https://github.com/square/cane")
10505 (propagated-inputs
10506 `(("ruby-parallel" ,ruby-parallel)))
10507 (synopsis "Code quality threshold checking")
10508 (description "Cane fails your build if code quality thresholds are not met.")
10509 (license license:asl2.0)))
00d71efc
JL
10510
10511(define-public ruby-morecane
10512 (package
10513 (name "ruby-morecane")
10514 (version "0.2.0")
10515 (source (origin
10516 (method url-fetch)
10517 (uri (rubygems-uri "morecane" version))
10518 (sha256
10519 (base32
10520 "0w70vb8z5bdhvr21h660aa43m5948pv0bd27z7ngai2iwdvqd771"))))
10521 (build-system ruby-build-system)
10522 (home-page "https://github.com/yob/morecane")
10523 (arguments `(#:tests? #f)); No rakefile
10524 (propagated-inputs
10525 `(("ruby-parallel" ,ruby-parallel)))
10526 (synopsis "Extra checks for cane")
10527 (description "The cane gem provides a great framework for running quality
10528checks over your ruby project as part of continuous integration build. It
10529comes with a few checks out of the box, but also provides an API for loading
10530custom checks. This gem provides a set of additional checks.")
10531 (license license:expat)))
abbe629c
JL
10532
10533(define-public ruby-pdf-reader
10534 (package
10535 (name "ruby-pdf-reader")
b377dd95 10536 (version "2.4.0")
abbe629c 10537 (source (origin
34796d7a
MC
10538 (method git-fetch) ;no test in distributed gem archive
10539 (uri (git-reference
10540 (url "https://github.com/yob/pdf-reader.git")
10541 (commit (string-append "v" version))))
10542 (file-name (git-file-name name version))
abbe629c
JL
10543 (sha256
10544 (base32
34796d7a 10545 "1yh8yrlssf5ppnkvk4m78vmh5r5vqwdcd0gm3lqipw162llz0rai"))))
abbe629c 10546 (build-system ruby-build-system)
34796d7a
MC
10547 (arguments `(#:test-target "spec"
10548 #:phases (modify-phases %standard-phases
10549 (add-after 'unpack 'do-not-use-bundler
10550 (lambda _
10551 (substitute* "spec/spec_helper.rb"
10552 ((".*[Bb]undler.*") ""))
10553 #t)))))
abbe629c 10554 (native-inputs
34796d7a 10555 `(("ruby-rspec" ,ruby-rspec)
abbe629c
JL
10556 ("ruby-cane" ,ruby-cane)
10557 ("ruby-morecane" ,ruby-morecane)))
10558 (propagated-inputs
10559 `(("ruby-afm" ,ruby-afm)
10560 ("ruby-ascii85" ,ruby-ascii85)
10561 ("ruby-hashery" ,ruby-hashery)
10562 ("ruby-rc4" ,ruby-rc4)
10563 ("ruby-ttfunk" ,ruby-ttfunk)))
10564 (home-page "https://github.com/yob/pdf-reader")
10565 (synopsis "PDF parser in Ruby")
10566 (description "The PDF::Reader library implements a PDF parser conforming as
10567much as possible to the PDF specification from Adobe. It provides programmatic
10568access to the contents of a PDF file with a high degree of flexibility.")
10569 (license license:gpl3+)))
461fb859
JL
10570
10571(define-public ruby-pdf-inspector
ed2f26f8
MC
10572 (let ((revision "1")
10573 (commit "00ee4c92ff917118785ebec188e81effc968abeb"))
10574 (package
10575 (name "ruby-pdf-inspector")
10576 (version (git-version "1.3.0" revision commit))
10577 (source (origin
10578 (method git-fetch)
10579 (uri (git-reference
10580 (url "https://github.com/prawnpdf/pdf-inspector.git")
10581 (commit commit)))
10582 (file-name (git-file-name name version))
10583 (sha256
10584 (base32
10585 "0h9w81ddd0gvkh5n2cvny9ddb5qiac1si0dhinkk0xxh5382qs0m"))))
10586 (build-system ruby-build-system)
10587 (arguments
10588 `(#:test-target "spec"
10589 #:phases (modify-phases %standard-phases
10590 (add-before 'build 'drop-signing-key-requirement
10591 (lambda _
10592 (substitute* "pdf-inspector.gemspec"
10593 (("spec.signing_key =.*")
10594 "spec.signing_key = nil"))
10595 #t))
10596 (replace 'check
10597 (lambda _
10598 (substitute* "pdf-inspector.gemspec"
10599 ((".*rubocop.*") "")
10600 ((".*yard.*") ""))
10601 (invoke "rspec"))))))
10602 (native-inputs
10603 `(("ruby-rspec" ,ruby-rspec)))
10604 (propagated-inputs
10605 `(("ruby-pdf-reader" ,ruby-pdf-reader)))
10606 (home-page "https://github.com/prawnpdf/pdf-inspector")
10607 (synopsis "Analysis classes for inspecting PDF output")
10608 (description "This library provides a number of PDF::Reader based tools for
461fb859
JL
10609use in testing PDF output. Presently, the primary purpose of this tool is to
10610support the tests found in Prawn, a pure Ruby PDF generation library.")
ed2f26f8 10611 (license %prawn-project-licenses))))
770e3b53
JL
10612
10613(define-public ruby-pdf-core
10614 (package
10615 (name "ruby-pdf-core")
10616 (version "0.8.1")
10617 (source (origin
10618 (method url-fetch)
10619 (uri (rubygems-uri "pdf-core" version))
10620 (sha256
10621 (base32
10622 "15d6m99bc8bbzlkcg13qfpjjzphfg5x905pjbfygvpcxsm8gnsvg"))))
10623 (build-system ruby-build-system)
10624 (arguments
10625 ; No test target
10626 `(#:tests? #f))
10627 (home-page "https://github.com/prawnpdf/pdf-core")
10628 (synopsis "Low level PDF features for Prawn")
10629 (description "This is an experimental gem that extracts low-level PDF
10630functionality from Prawn.")
10631 (license license:gpl3+)))
37fbced7 10632
7ad8dd08 10633(define-public ruby-prawn
e6c7a601
MC
10634 ;; There hasn't been a new release since 2017/03/17.
10635 (let ((revision "1")
10636 (commit "d980247be8a00e7c59cd4e5785e3aa98f9856db1"))
10637 (package
10638 (name "ruby-prawn")
10639 (version (git-version "2.2.2" revision commit))
10640 (source (origin
10641 (method git-fetch)
10642 (uri (git-reference
10643 (url "https://github.com/prawnpdf/prawn.git")
10644 (commit commit)))
10645 (file-name (git-file-name name version))
10646 (sha256
10647 (base32
10648 "0mcmvf22h8il93yq48v9f31qpy27pvjxgv9172p0f4x9lqy0imwr"))))
10649 (build-system ruby-build-system)
10650 (arguments
10651 `(#:phases
10652 (modify-phases %standard-phases
10653 (add-before 'build 'drop-signing-key-requirement
10654 (lambda _
10655 (substitute* "prawn.gemspec"
10656 (("spec.signing_key =.*")
10657 "spec.signing_key = nil"))
10658 #t))
10659 (replace 'check
10660 (lambda* (#:key tests? #:allow-other-keys)
10661 (when tests?
10662 ;; The Prawn manual test fails (see:
10663 ;; https://github.com/prawnpdf/prawn/issues/1163), so exclude
10664 ;; it.
10665 (invoke "rspec" "--exclude-pattern" "prawn_manual_spec.rb"))
10666 #t)))))
10667 (propagated-inputs
10668 `(("ruby-pdf-core" ,ruby-pdf-core)
10669 ("ruby-ttfunk" ,ruby-ttfunk)))
10670 (native-inputs
10671 `(("ruby-pdf-inspector" ,ruby-pdf-inspector)
10672 ("ruby-prawn-manual-builder" ,ruby-prawn-manual-builder)
10673 ("ruby-rspec" ,ruby-rspec)
10674 ("ruby-simplecov" ,ruby-simplecov)
10675 ("ruby-yard" ,ruby-yard)))
10676 (home-page "https://prawnpdf.org/api-docs/2.0/")
10677 (synopsis "PDF generation for Ruby")
10678 (description "Prawn is a pure Ruby PDF generation library.")
10679 (license %prawn-project-licenses))))
197ca8ec
JL
10680
10681(define-public ruby-prawn-table
10682 (package
10683 (name "ruby-prawn-table")
10684 (version "0.2.2")
10685 (source (origin
10686 (method url-fetch)
10687 (uri (rubygems-uri "prawn-table" version))
10688 (sha256
10689 (base32
10690 "1nxd6qmxqwl850icp18wjh5k0s3amxcajdrkjyzpfgq0kvilcv9k"))))
10691 (build-system ruby-build-system)
197ca8ec 10692 (propagated-inputs
0927b039
CB
10693 `(("ruby-prawn" ,ruby-prawn)
10694 ("ruby-pdf-inspector" ,ruby-pdf-inspector)))
10695 (native-inputs
10696 `(("bundler" ,bundler)
10697 ("ruby-yard" ,ruby-yard)
10698 ("ruby-mocha" ,ruby-mocha)
10699 ("ruby-coderay" ,ruby-coderay)
10700 ("ruby-prawn-manual-builder" ,ruby-prawn-manual-builder)
10701 ("ruby-simplecov" ,ruby-simplecov)
10702 ("ruby-rspec-2" ,ruby-rspec-2)))
10703 (arguments
10704 '(;; TODO: 1 test fails
10705 ;; Failure/Error: pdf.page_count.should == 1
10706 ;; expected: 1
10707 ;; got: 2 (using ==)
10708 ;; # ./spec/table_spec.rb:1308
10709 ;;
10710 ;; 225 examples, 1 failure
10711 #:tests? #f
10712 #:phases
10713 (modify-phases %standard-phases
10714 (add-before 'check 'patch-gemspec
10715 (lambda _
10716 (substitute* "prawn-table.gemspec"
10717 ;; Loosen the requirement for pdf-inspector
10718 (("~> 1\\.1\\.0") ">= 0")
10719 ;; Loosen the requirement for pdf-reader
10720 (("~> 1\\.2") ">= 0"))))
10721 (replace 'check
10722 (lambda* (#:key tests? #:allow-other-keys)
10723 (when tests?
10724 (invoke "rspec"))
10725 #t)))))
197ca8ec
JL
10726 (home-page "https://github.com/prawnpdf/prawn-table")
10727 (synopsis "Tables support for Prawn")
10728 (description "This gem provides tables support for Prawn.")
10729 (license license:gpl3+)))
03127069
JL
10730
10731(define-public ruby-kramdown
10732 (package
10733 (name "ruby-kramdown")
2b5b7809 10734 (version "2.3.0")
03127069
JL
10735 (source (origin
10736 (method url-fetch)
10737 (uri (rubygems-uri "kramdown" version))
10738 (sha256
10739 (base32
2b5b7809 10740 "1vmw752c26ny2jwl0npn0gbyqwgz4hdmlpxnsld9qi9xhk5b1qh7"))))
03127069
JL
10741 (build-system ruby-build-system)
10742 (arguments `(#:tests? #f)); FIXME: some test failures
10743 (native-inputs
10744 `(("ruby-prawn" ,ruby-prawn)
10745 ("ruby-prawn-table" ,ruby-prawn-table)))
10746 (home-page "https://kramdown.gettalong.org/")
10747 (synopsis "Markdown parsing and converting library")
10748 (description "Kramdown is a library for parsing and converting a superset
10749of Markdown. It is completely written in Ruby, supports standard Markdown
10750(with some minor modifications) and various extensions that have been made
10751popular by the PHP @code{Markdown Extra} package and @code{Maruku}.")
10752 (license license:expat)))
fa0063bc 10753
e1cab74a
MR
10754(define-public ruby-kramdown-parser-gfm
10755 (package
10756 (name "ruby-kramdown-parser-gfm")
10757 (version "1.1.0")
10758 (source
10759 (origin
10760 (method url-fetch)
10761 (uri (rubygems-uri "kramdown-parser-gfm" version))
10762 (sha256
10763 (base32 "0a8pb3v951f4x7h968rqfsa19c8arz21zw1vaj42jza22rap8fgv"))))
10764 (build-system ruby-build-system)
10765 (arguments
10766 `(#:tests? #f)) ;no rakefile
10767 (propagated-inputs
10768 `(("ruby-kramdown" ,ruby-kramdown)))
10769 (synopsis "Kramdown parser for the GFM dialect of Markdown")
10770 (description
10771 "This is a parser for kramdown that converts Markdown documents in the
10772GFM dialect to HTML.")
10773 (home-page "https://github.com/kramdown/parser-gfm")
10774 (license license:expat)))
10775
fa0063bc
JL
10776(define-public ruby-http-parser.rb
10777 (package
10778 (name "ruby-http-parser.rb")
10779 (version "0.6.0")
10780 (source
10781 (origin
10782 (method url-fetch)
10783 (uri (rubygems-uri "http_parser.rb" version))
10784 (sha256
10785 (base32
10786 "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi"))))
10787 (build-system ruby-build-system)
10788 (arguments
10789 ;; No tests
10790 `(#:tests? #f))
10791 (native-inputs
10792 `(("ruby-rake-compiler" ,ruby-rake-compiler)
10793 ("ruby-rspec" ,ruby-rspec)))
10794 (home-page "https://github.com/tmm1/http_parser.rb")
10795 (synopsis "HTTP parser un Ruby")
10796 (description "This gem is a simple callback-based HTTP request/response
10797parser for writing http servers, clients and proxies.")
10798 (license license:expat)))
5e2f74bd
JL
10799
10800(define-public ruby-em-websocket
10801 (package
10802 (name "ruby-em-websocket")
10803 (version "0.5.1")
10804 (source
10805 (origin
10806 (method url-fetch)
10807 (uri (rubygems-uri "em-websocket" version))
10808 (sha256
10809 (base32
10810 "1bsw8vjz0z267j40nhbmrvfz7dvacq4p0pagvyp17jif6mj6v7n3"))))
10811 (build-system ruby-build-system)
10812 (arguments
10813 ;; No tests
10814 `(#:tests? #f))
10815 (propagated-inputs
10816 `(("ruby-eventmachine" ,ruby-eventmachine)
10817 ("ruby-http-parser.rb" ,ruby-http-parser.rb)))
10818 (native-inputs
10819 `(("bundler" ,bundler)
10820 ("ruby-rspec" ,ruby-rspec)))
10821 (home-page "https://github.com/igrigorik/em-websocket")
10822 (synopsis "EventMachine based WebSocket server")
10823 (description "Em-websocket is an EventMachine based WebSocket server
10824implementation.")
10825 (license license:expat)))
4ce0414b
JL
10826
10827(define-public ruby-rouge
10828 (package
10829 (name "ruby-rouge")
22d6b534 10830 (version "3.21.0")
4ce0414b
JL
10831 (source (origin
10832 (method url-fetch)
10833 (uri (rubygems-uri "rouge" version))
10834 (sha256
10835 (base32
22d6b534 10836 "1agrrmj88k9jkk36ra1ml2c1jffpp595pkxmcla74ac9ia09vn3s"))))
4ce0414b
JL
10837 (build-system ruby-build-system)
10838 (arguments `(#:tests? #f)); No rakefile
10839 (home-page "http://rouge.jneen.net/")
10840 (synopsis "Code highlighter")
10841 (description "Rouge is a code highlighter written in Ruby. It supports more
10842than 100 languages and outputs HTML or ANSI 256-color text. Its HTML output
10843is compatible with stylesheets designed for pygments.")
10844 (license (list
10845 ;; rouge is licensed under expat
10846 license:expat
10847 ;; pygments is licensed under bsd-2
10848 license:bsd-2))))
2c5028bd
JL
10849
10850(define-public ruby-rouge-2
10851 (package
10852 (inherit ruby-rouge)
10853 (version "2.2.1")
10854 (source (origin
10855 (method url-fetch)
10856 (uri (rubygems-uri "rouge" version))
10857 (sha256
10858 (base32
10859 "02kpahk5nkc33yxnn75649kzxaz073wvazr2zyg491nndykgnvcs"))))))
2e072e37
JL
10860
10861(define-public ruby-hashie
10862 (package
10863 (name "ruby-hashie")
10864 (version "3.6.0")
10865 (source (origin
10866 (method url-fetch)
10867 (uri (rubygems-uri "hashie" version))
10868 (sha256
10869 (base32
10870 "13bdzfp25c8k51ayzxqkbzag3wj5gc1jd8h7d985nsq6pn57g5xh"))))
10871 (build-system ruby-build-system)
10872 (native-inputs
10873 `(("bundler" ,bundler)))
10874 (arguments `(#:tests? #f)); FIXME: Could not locate Gemfile or .bundle/ directory
10875 (home-page "https://github.com/intridea/hashie")
10876 (synopsis "Extensions to Ruby Hashes")
10877 (description "Hashie is a collection of classes and mixins that make Ruby
10878hashes more powerful.")
10879 (license license:expat)))
73bfc125
JL
10880
10881(define-public ruby-heredoc-unindent
10882 (package
10883 (name "ruby-heredoc-unindent")
10884 (version "1.2.0")
10885 (source (origin
10886 (method url-fetch)
10887 (uri (rubygems-uri "heredoc_unindent" version))
10888 (sha256
10889 (base32
10890 "14ijr2fsjwhrkjkcaz81d5xnfa4vvgvcflrff83avqw9klm011yw"))))
10891 (build-system ruby-build-system)
10892 (native-inputs
10893 `(("ruby-hoe" ,ruby-hoe)))
10894 (home-page "https://github.com/adrianomitre/heredoc_unindent")
10895 (synopsis "Heredoc indentation cleaner")
10896 (description "This gem removes common margin from indented strings, such
10897as the ones produced by indented heredocs. In other words, it strips out
4f66ae28 10898leading whitespace chars at the beginning of each line, but only as much as
73bfc125
JL
10899the line with the smallest margin.
10900
10901It is acknowledged that many strings defined by heredocs are just code and
10902fact is that most parsers are insensitive to indentation. If, however, the
10903strings are to be used otherwise, be it for printing or testing, the extra
10904indentation will probably be an issue and hence this gem.")
10905 (license license:expat)))
f8ae2ee5
JL
10906
10907(define-public ruby-safe-yaml
10908 (package
10909 (name "ruby-safe-yaml")
7fa83fa8 10910 (version "1.0.5")
28cf8dab
CB
10911 (source
10912 (origin
28cf8dab
CB
10913 (method git-fetch)
10914 (uri (git-reference
b0e7b699 10915 (url "https://github.com/dtao/safe_yaml")
28cf8dab
CB
10916 (commit version)))
10917 (file-name (git-file-name name version))
10918 (sha256
10919 (base32
7fa83fa8 10920 "1a0wh7y3va2m7bjza95na2snw0vrdh9syz40mpjvjphbc4ph3pzg"))))
f8ae2ee5
JL
10921 (build-system ruby-build-system)
10922 (native-inputs
10923 `(("ruby-rspec" ,ruby-rspec)
10924 ("ruby-hashie" ,ruby-hashie)
10925 ("ruby-heredoc-unindent" ,ruby-heredoc-unindent)))
28cf8dab
CB
10926 (arguments
10927 '(#:test-target "spec"
10928 #:phases
10929 (modify-phases %standard-phases
10930 (add-before 'check 'set-TZ
10931 (lambda _
10932 ;; This test is dependent on the timezone
10933 ;; spec/transform/to_date_spec.rb:35
10934 ;; # SafeYAML::Transform::ToDate converts times to the local
10935 ;; timezone
10936 (setenv "TZ" "UTC-11")
10937 #t)))))
f8ae2ee5
JL
10938 (home-page "https://github.com/dtao/safe_yaml")
10939 (synopsis "YAML parser")
10940 (description "The SafeYAML gem provides an alternative implementation of
10941YAML.load suitable for accepting user input in Ruby applications.")
10942 (license license:expat)))
f1ec4d76
JL
10943
10944(define-public ruby-mercenary
10945 (package
10946 (name "ruby-mercenary")
10947 (version "0.3.6")
10948 (source (origin
10949 (method url-fetch)
10950 (uri (rubygems-uri "mercenary" version))
10951 (sha256
10952 (base32
10953 "10la0xw82dh5mqab8bl0dk21zld63cqxb1g16fk8cb39ylc4n21a"))))
10954 (build-system ruby-build-system)
10955 (arguments `(#:test-target "spec"))
10956 (native-inputs
10957 `(("bundler" ,bundler)))
10958 (home-page "https://github.com/jekyll/mercenary")
10959 (synopsis "Command-line apps library in Ruby")
10960 (description "Mercenary is a lightweight and flexible library for writing
10961command-line apps in Ruby.")
10962 (license license:expat)))
a13d451e
JL
10963
10964(define-public ruby-liquid
10965 (package
10966 (name "ruby-liquid")
10967 (version "4.0.0")
10968 (source (origin
10969 (method url-fetch)
10970 (uri (rubygems-uri "liquid" version))
10971 (sha256
10972 (base32
10973 "17fa0jgwm9a935fyvzy8bysz7j5n1vf1x2wzqkdfd5k08dbw3x2y"))))
10974 (build-system ruby-build-system)
10975 (arguments `(#:tests? #f)); No rakefile
10976 (home-page "https://shopify.github.io/liquid/")
10977 (synopsis "Template language")
10978 (description "Liquid is a template language written in Ruby. It is used
10979to load dynamic content on storefronts.")
10980 (license license:expat)))
49395112
JL
10981
10982(define-public ruby-forwardable-extended
10983 (package
10984 (name "ruby-forwardable-extended")
10985 (version "2.6.0")
10986 (source (origin
10987 (method url-fetch)
10988 (uri (rubygems-uri "forwardable-extended" version))
10989 (sha256
10990 (base32
10991 "15zcqfxfvsnprwm8agia85x64vjzr2w0xn9vxfnxzgcv8s699v0v"))))
10992 (build-system ruby-build-system)
10993 (arguments `(#:tests? #f)); Cyclic dependency on luna-rspec-formatters
10994 (home-page "https://github.com/envygeeks/forwardable-extended")
10995 (synopsis "Delegation to hashes and instance variables in Forwardable")
10996 (description "Forwardable Extended provides more @code{Forwardable}
10997methods for your source as @code{Forwardable::Extended}.")
10998 (license license:expat)))
37296113
JL
10999
11000(define-public ruby-pathutil
11001 (package
11002 (name "ruby-pathutil")
feaaa603 11003 (version "0.16.2")
37296113
JL
11004 (source (origin
11005 (method url-fetch)
11006 (uri (rubygems-uri "pathutil" version))
11007 (sha256
11008 (base32
feaaa603 11009 "12fm93ljw9fbxmv2krki5k5wkvr7560qy8p4spvb9jiiaqv78fz4"))))
37296113
JL
11010 (build-system ruby-build-system)
11011 (propagated-inputs
11012 `(("ruby-forwardable-extended" ,ruby-forwardable-extended)))
11013 (native-inputs
11014 `(("bundler" ,bundler)
11015 ("ruby-rspec" ,ruby-rspec)))
11016 ;; Fails with: cannot load such file --
11017 ;; /tmp/guix-build-ruby-pathutil-0.16.0.drv-0/gem/benchmark/support/task
11018 (arguments `(#:tests? #f))
11019 (home-page "https://github.com/envygeeks/pathutil")
11020 (synopsis "Extended implementation of Pathname")
11021 (description "Pathutil tries to be a faster pure Ruby implementation of
11022Pathname.")
11023 (license license:expat)))
49e1dde5
JL
11024
11025(define-public jekyll
11026 (package
11027 (name "jekyll")
fcf82fd3 11028 (version "3.8.6")
49e1dde5
JL
11029 (source (origin
11030 (method url-fetch)
11031 (uri (rubygems-uri "jekyll" version))
11032 (sha256
11033 (base32
fcf82fd3 11034 "1ph1jjjl25vmzif7bvxzviq7azjm384pm7ba4k24cah94285bzhz"))))
49e1dde5
JL
11035 (build-system ruby-build-system)
11036 (arguments
fcf82fd3 11037 ;; No rakefile, but a test subdirectory.
49e1dde5
JL
11038 `(#:tests? #f
11039 #:phases
11040 (modify-phases %standard-phases
11041 (add-before 'build 'fix-i18n
11042 (lambda _
11043 (substitute* ".gemspec"
b7e76699
MR
11044 (("~> 0.7") ">= 0.7")
11045 (("~> 1.14") ">= 1.14"))
49e1dde5
JL
11046 #t)))))
11047 (propagated-inputs
11048 `(("ruby-addressable" ,ruby-addressable)
11049 ("ruby-colorator" ,ruby-colorator)
11050 ("ruby-em-websocket" ,ruby-em-websocket)
11051 ("ruby-i18n" ,ruby-i18n)
11052 ("ruby-jekyll-sass-converter" ,ruby-jekyll-sass-converter)
11053 ("ruby-jekyll-watch" ,ruby-jekyll-watch)
7df90fd5 11054 ("ruby-kramdown" ,ruby-kramdown-parser-gfm)
49e1dde5
JL
11055 ("ruby-liquid" ,ruby-liquid)
11056 ("ruby-mercenary" ,ruby-mercenary)
11057 ("ruby-pathutil" ,ruby-pathutil)
11058 ("ruby-rouge" ,ruby-rouge-2)
11059 ("ruby-safe-yaml" ,ruby-safe-yaml)))
11060 (home-page "https://jekyllrb.com/")
11061 (synopsis "Static site generator")
11062 (description "Jekyll is a simple, blog aware, static site generator.")
11063 (license license:expat)))
37a0f470
JL
11064
11065(define-public ruby-jekyll-paginate-v2
11066 (package
11067 (name "ruby-jekyll-paginate-v2")
ed9142a6 11068 (version "3.0.0")
37a0f470
JL
11069 (source (origin
11070 (method url-fetch)
11071 (uri (rubygems-uri "jekyll-paginate-v2" version))
11072 (sha256
11073 (base32
ed9142a6 11074 "1qzlqhpiqz28624fp0ak76hfy7908w6kpx62v7z43aiwjv0yc6q0"))))
37a0f470
JL
11075 (build-system ruby-build-system)
11076 (propagated-inputs
11077 `(("jekyll" ,jekyll)))
11078 (home-page "https://github.com/sverrirs/jekyll-paginate-v2")
11079 (synopsis "Pagination Generator for Jekyll 3")
11080 (description "The Pagination Generator forms the core of the pagination
11081logic in Jekyll. It calculates and generates the pagination pages.")
11082 (license license:expat)))
909eae21
CB
11083
11084(define-public ruby-faraday
11085 (package
11086 (name "ruby-faraday")
11087 (version "0.15.4")
11088 (source
11089 (origin
11090 (method url-fetch)
11091 (uri (rubygems-uri "faraday" version))
11092 (sha256
11093 (base32
11094 "0s72m05jvzc1pd6cw1i289chas399q0a14xrwg4rvkdwy7bgzrh0"))))
11095 (build-system ruby-build-system)
11096 (arguments
11097 '(#:tests? #f))
11098 (propagated-inputs
11099 `(("ruby-multipart-post" ,ruby-multipart-post)))
11100 (synopsis "Ruby HTTP/REST API client library")
11101 (description
11102 "Faraday is a HTTP/REST API client library which provides a common
11103interface over different adapters.")
11104 (home-page "https://github.com/lostisland/faraday")
11105 (license license:expat)))
a058cbfd
CB
11106
11107(define-public ruby-nio4r
11108 (package
11109 (name "ruby-nio4r")
7923b9bf 11110 (version "2.5.2")
a058cbfd
CB
11111 (source
11112 (origin
11113 (method url-fetch)
11114 (uri (rubygems-uri "nio4r" version))
11115 (sha256
11116 (base32
7923b9bf 11117 "0gnmvbryr521r135yz5bv8354m7xn6miiapfgpg1bnwsvxz8xj6c"))))
a058cbfd
CB
11118 (build-system ruby-build-system)
11119 (arguments
11120 '(#:phases
11121 (modify-phases %standard-phases
11122 (add-after 'unpack 'remove-unnecessary-dependencies
11123 (lambda _
11124 (substitute* "spec/spec_helper.rb"
11125 ;; Coveralls is for uploading test coverage information to an
11126 ;; online service, and thus unnecessary for building the Guix
11127 ;; package
11128 (("require \"coveralls\"") "")
11129 (("Coveralls\\.wear!") "")
11130 ;; Remove rspec/retry as we are not retrying the tests
11131 (("require \"rspec/retry\"") "")
11132 (("config\\.display_try_failure_messages = true") "")
11133 (("config\\.verbose_retry = true") ""))
11134 #t))
11135 (add-before 'check 'compile
11136 (lambda _
11137 (invoke "rake" "compile")
11138 #t))
11139 (replace 'check
11140 (lambda* (#:key tests? #:allow-other-keys)
11141 (when tests?
11142 (invoke "rspec"))
11143 #t)))))
11144 (native-inputs
11145 `(("bundler" ,bundler)
11146 ("ruby-rake-compiler" ,ruby-rake-compiler)
11147 ("ruby-rspec" ,ruby-rspec)
11148 ("ruby-rubocop" ,ruby-rubocop)))
11149 (synopsis "New I/O for Ruby")
11150 (description
11151 "@code{nio} provides cross-platform asynchronous I/O primitives in Ruby
11152for scalable network clients and servers.")
11153 (home-page "https://github.com/socketry/nio4r")
11154 (license license:expat)))
f9da1ada
CB
11155
11156(define-public ruby-globalid
11157 (package
11158 (name "ruby-globalid")
11159 (version "0.4.2")
11160 (source
11161 (origin
11162 (method url-fetch)
11163 (uri (rubygems-uri "globalid" version))
11164 (sha256
11165 (base32
11166 "1zkxndvck72bfw235bd9nl2ii0lvs5z88q14706cmn702ww2mxv1"))))
11167 (build-system ruby-build-system)
11168 (arguments
11169 '(;; No included tests
11170 #:tests? #f))
11171 (propagated-inputs
11172 `(("ruby-activesupport" ,ruby-activesupport)))
11173 (synopsis "Generate URIs idenfitying model instances in Ruby")
11174 (description
11175 "@code{GlobalID} provides a way to generate URIs from a model in Ruby that
11176uniquely identify it.")
11177 (home-page "https://rubyonrails.org/")
11178 (license license:expat)))
15606d98
CB
11179
11180(define-public ruby-sprockets
11181 (package
11182 (name "ruby-sprockets")
11183 (version "3.7.2")
11184 (source
11185 (origin
11186 (method url-fetch)
11187 (uri (rubygems-uri "sprockets" version))
11188 (sha256
11189 (base32
11190 "182jw5a0fbqah5w9jancvfmjbk88h8bxdbwnl4d3q809rpxdg8ay"))))
11191 (build-system ruby-build-system)
11192 (arguments
11193 '(;; No included tests
11194 #:tests? #f))
11195 (propagated-inputs
11196 `(("ruby-concurrent" ,ruby-concurrent)
11197 ("ruby-rack" ,ruby-rack)))
11198 (synopsis "Sprockets is a Rack-based asset packaging system")
11199 (description
11200 "Sprockets is a Rack-based asset packaging system that concatenates and
11201serves JavaScript, CoffeeScript, CSS, LESS, Sass, and SCSS.")
11202 (home-page "https://github.com/rails/sprockets")
11203 (license license:expat)))
acb9e3d8 11204
49994222
NG
11205(define-public ruby-mustache
11206 (package
11207 (name "ruby-mustache")
11208 (version "1.1.1")
11209 (source
11210 (origin
11211 (method url-fetch)
11212 (uri (rubygems-uri "mustache" version))
11213 (sha256
11214 (base32 "1l0p4wx15mi3wnamfv92ipkia4nsx8qi132c6g51jfdma3fiz2ch"))))
11215 (build-system ruby-build-system)
11216 (native-inputs
11217 `(("ruby-simplecov" ,ruby-simplecov)))
11218 (synopsis "framework-agnostic way to render logic-free views")
11219 (description
11220 "Mustache is a framework-agnostic way to render logic-free views.
11221Think of Mustache as a replacement for your views. Instead of views
11222consisting of ERB or HAML with random helpers and arbitrary logic,
11223your views are broken into two parts: a Ruby class and an HTML
11224template.")
11225 (home-page "https://github.com/mustache/mustache")
11226 (license license:expat)))
11227
acb9e3d8
PN
11228(define-public ruby-mustermann
11229 (package
11230 (name "ruby-mustermann")
11231 (version "1.0.3")
11232 (source
11233 (origin
11234 (method url-fetch)
11235 (uri (rubygems-uri "mustermann" version))
11236 (sha256
11237 (base32
11238 "0lycgkmnyy0bf29nnd2zql5a6pcf8sp69g9v4xw0gcfcxgpwp7i1"))))
11239 (build-system ruby-build-system)
11240 (arguments
11241 ;; No tests.
11242 '(#:tests? #f))
11243 (synopsis "Library implementing patterns that behave like regular expressions")
11244 (description "Given a string pattern, Mustermann will turn it into an
11245object that behaves like a regular expression and has comparable performance
11246characteristics.")
11247 (home-page "https://github.com/sinatra/mustermann")
11248 (license license:expat)))
3bb094e2 11249
7bddb6aa
BL
11250(define-public ruby-htmlentities
11251 (package
11252 (name "ruby-htmlentities")
11253 (version "4.3.4")
11254 (source
11255 (origin
11256 (method url-fetch)
11257 (uri (rubygems-uri "htmlentities" version))
11258 (sha256
11259 (base32
11260 "1nkklqsn8ir8wizzlakncfv42i32wc0w9hxp00hvdlgjr7376nhj"))))
11261 (build-system ruby-build-system)
11262 (arguments
11263 `(#:phases
11264 (modify-phases %standard-phases
11265 (replace 'check
11266 (lambda _
11267 (map (lambda (file)
11268 (invoke "ruby" "-Itest" file))
11269 (find-files "./test" ".*_test\\.rb")))))))
11270 (synopsis "Encode and decode (X)HTML entities")
11271 (description
11272 "This package provides a module for encoding and decoding (X)HTML
11273entities.")
11274 (home-page "https://github.com/threedaymonk/htmlentities")
11275 (license license:expat)))
11276
3bb094e2
PN
11277(define-public ruby-sinatra
11278 (package
11279 (name "ruby-sinatra")
7af92924 11280 (version "2.0.8.1")
3bb094e2
PN
11281 (source
11282 (origin
11283 (method url-fetch)
11284 (uri (rubygems-uri "sinatra" version))
11285 (sha256
11286 (base32
7af92924 11287 "0riy3hwjab1mr73jcqx3brmbmwspnw3d193j06a5f0fy1w35z15q"))))
3bb094e2 11288 (build-system ruby-build-system)
7af92924
MC
11289 (arguments
11290 `(#:phases
11291 (modify-phases %standard-phases
11292 ;; See: https://github.com/sinatra/sinatra/issues/1578.
11293 (add-after 'extract-gemspec 'fix-slow-doc-generation
11294 (lambda _
11295 (substitute* "sinatra.gemspec"
11296 (("\"README.rdoc\"\\.freeze," all)
11297 (string-append all " \"--exclude=.*\\.md\".freeze,")))
11298 #t)))))
3bb094e2
PN
11299 (propagated-inputs
11300 `(("ruby-mustermann" ,ruby-mustermann)
11301 ("ruby-rack" ,ruby-rack)
11302 ("ruby-rack-protection" ,ruby-rack-protection)
11303 ("ruby-tilt" ,ruby-tilt)))
11304 (synopsis "DSL for quick web applications creation in Ruby")
11305 (description
11306 "Sinatra is a DSL for quickly creating web applications in Ruby with
11307minimal effort.")
11308 (home-page "http://sinatrarb.com/")
11309 (license license:expat)))
6e87695b
PN
11310
11311(define-public ruby-thin
11312 (package
11313 (name "ruby-thin")
11314 (version "1.7.2")
11315 (source
11316 (origin
11317 (method url-fetch)
11318 (uri (rubygems-uri "thin" version))
11319 (sha256
11320 (base32
11321 "0nagbf9pwy1vg09k6j4xqhbjjzrg5dwzvkn4ffvlj76fsn6vv61f"))))
11322 (build-system ruby-build-system)
11323 (arguments
11324 ;; No tests.
11325 '(#:tests? #f))
11326 (propagated-inputs
11327 `(("ruby-daemons" ,ruby-daemons)
11328 ("ruby-eventmachine" ,ruby-eventmachine)
11329 ("ruby-rack" ,ruby-rack)))
11330 (synopsis "Thin and fast web server for Ruby")
11331 (description "Thin is a Ruby web server that glues together 3 Ruby libraries:
11332@itemize
11333@item the Mongrel parser,
11334@item Event Machine, a network I/O library with high scalability, performance
11335and stability,
11336@item Rack, a minimal interface between webservers and Ruby frameworks.
11337@end itemize\n")
60783303 11338 (home-page "https://github.com/macournoyer/thin")
6e87695b 11339 (license license:ruby)))
be6016db
PN
11340
11341(define-public ruby-skinny
11342 (package
11343 (name "ruby-skinny")
11344 (version "0.2.4")
11345 (source
11346 (origin
11347 (method url-fetch)
11348 (uri (rubygems-uri "skinny" version))
11349 (sha256
11350 (base32
11351 "1y3yvx88ylgz4d2s1wskjk5rkmrcr15q3ibzp1q88qwzr5y493a9"))))
11352 (build-system ruby-build-system)
11353 (arguments
11354 '(#:tests? #f ; No included tests
11355 #:phases
11356 (modify-phases %standard-phases
11357 (add-before 'build 'patch-gemspec
11358 (lambda _
11359 (substitute* ".gemspec"
11360 (("<eventmachine>.freeze, \\[\\\"~> 1.0.0\"")
11361 "<eventmachine>, [\">= 1.0.0\"")
11362 (("<thin>.freeze, \\[\\\"< 1.7\", ") "<thin>, ["))
11363 #t)))))
11364 (propagated-inputs
11365 `(("ruby-eventmachine" ,ruby-eventmachine)
11366 ("ruby-thin" ,ruby-thin)))
11367 (synopsis "Simple, upgradable WebSockets for Ruby Thin")
11368 (description "Skinny is a simple, upgradable WebSockets for Ruby, using
11369the Thin library.")
11370 (home-page "https://github.com/sj26/skinny")
11371 (license license:expat)))
df747c8d 11372
9c566d1b
MB
11373(define-public ruby-sys-filesystem
11374 (package
11375 (name "ruby-sys-filesystem")
11376 (version "1.3.4")
11377 (source (origin
11378 (method url-fetch)
11379 (uri (rubygems-uri "sys-filesystem" version))
11380 (sha256
11381 (base32
11382 "0mizqnsiagagmracadr16s5na2ks2j3ih1w0f3gp4ssrda6szl01"))))
11383 (build-system ruby-build-system)
11384 (arguments
11385 '(#:phases (modify-phases %standard-phases
11386 (add-before 'check 'set-HOME
11387 (lambda _
11388 ;; Some tests attempt to stat $HOME. Let them.
11389 (setenv "HOME" "/tmp")
11390 #t)))))
11391 (propagated-inputs
11392 `(("ruby-ffi" ,ruby-ffi)))
11393 (native-inputs
11394 `(("ruby-mkmf-lite" ,ruby-mkmf-lite)))
11395 (synopsis "Gather file system information")
11396 (description
11397 "The @code{sys-filesystem} library provides a cross-platform interface
11398for gathering file system information, such as disk space and mount points.")
11399 (home-page "https://github.com/djberg96/sys-filesystem")
11400 (license license:asl2.0)))
11401
df747c8d
PN
11402(define-public mailcatcher
11403 (package
11404 (name "mailcatcher")
11405 (version "0.7.1")
11406 (source
11407 (origin
11408 (method url-fetch)
11409 (uri (rubygems-uri "mailcatcher" version))
11410 (sha256
11411 (base32
11412 "02w1ycyfv7x0sh9799lz7xa65p5qvl5z4pa8a7prb68h2zwkfq0n"))))
11413 (build-system ruby-build-system)
11414 (arguments
11415 ;; Tests require web/assets which is not included in the output. We
11416 ;; might be able to fix this by adding the Git repository to the GEM_PATH
11417 ;; of the tests. See ruby-mysql2.
11418 '(#:tests? #f
11419 #:phases
11420 (modify-phases %standard-phases
11421 (add-before 'build 'patch-gemspec
11422 (lambda _
11423 (substitute* ".gemspec"
11424 (("<eventmachine>.freeze, \\[\\\"= 1.0.9.1")
11425 "<eventmachine>, [\">= 1.0.9.1")
11426 (("<rack>.freeze, \\[\\\"~> 1.5") "<rack>, [\">= 1.5")
11427 (("<thin>.freeze, \\[\\\"~> 1.5.0") "<thin>, [\">= 1.5.0")
11428 (("<sinatra>.freeze, \\[\\\"~> 1.2") "<sinatra>, [\">= 1.2"))
11429 #t))
11430 (add-before 'build 'loosen-dependency-contraint
11431 (lambda _
11432 (substitute* "lib/mail_catcher.rb"
11433 (("\"eventmachine\", \"1.0.9.1\"") "\"eventmachine\", \">= 1.0.9.1\"")
11434 (("\"rack\", \"~> 1.5\"") "\"rack\", \">= 1.5\"")
11435 (("\"thin\", \"~> 1.5.0\"") "\"thin\", \">= 1.5.0\"")
11436 (("\"sinatra\", \"~> 1.2\"") "\"sinatra\", \">= 1.2\""))
11437 #t)))))
11438 (inputs
11439 `(("ruby-eventmachine" ,ruby-eventmachine)
11440 ("ruby-mail" ,ruby-mail)
11441 ("ruby-rack" ,ruby-rack)
11442 ("ruby-sinatra" ,ruby-sinatra)
11443 ("ruby-skinny" ,ruby-skinny)
11444 ("ruby-sqlite3" ,ruby-sqlite3)
11445 ("ruby-thin" ,ruby-thin)))
11446 (synopsis "SMTP server which catches messages to display them a browser")
11447 (description
11448 "MailCatcher runs a super simple SMTP server which catches any message
11449sent to it to display in a web interface. Run mailcatcher, set your favourite
11450app to deliver to smtp://127.0.0.1:1025 instead of your default SMTP server,
11451then check out http://127.0.0.1:1080 to see the mail.")
11452 (home-page "https://mailcatcher.me")
11453 (license license:expat)))
fc4f7c45
MK
11454
11455(define-public ruby-backport
11456 (package
11457 (name "ruby-backport")
b62863b8 11458 (version "1.1.2")
fc4f7c45
MK
11459 (source
11460 (origin
b62863b8 11461 ;; The gem does not include test code, so fetch from the Git repository.
fc4f7c45
MK
11462 (method git-fetch)
11463 (uri (git-reference
b0e7b699 11464 (url "https://github.com/castwide/backport")
fc4f7c45
MK
11465 (commit (string-append "v" version))))
11466 (file-name (git-file-name name version))
11467 (sha256
b62863b8 11468 (base32 "18fpg1n7n2z02ykz9v1x1q0cqa2lvivf8ygka768s01q1r9wfwv2"))))
fc4f7c45
MK
11469 (build-system ruby-build-system)
11470 (arguments
11471 `(#:test-target "spec"))
11472 (native-inputs
11473 `(("bundler" ,bundler)
11474 ("ruby-rspec" ,ruby-rspec)))
11475 (inputs
11476 `(("ruby-simplecov" ,ruby-simplecov)))
11477 (synopsis "Pure Ruby library for event-driven IO")
11478 (description
11479 "This package provides a pure Ruby library for event-driven IO.")
11480 (home-page "https://github.com/castwide/backport")
11481 (license license:expat)))
369faa59
JL
11482
11483(define-public ruby-json-schema
11484 (package
11485 (name "ruby-json-schema")
11486 (version "2.8.1")
11487 (source
11488 (origin
11489 (method url-fetch)
11490 (uri (rubygems-uri "json-schema" version))
11491 (sha256
11492 (base32
11493 "1yv5lfmr2nzd14af498xqd5p89f3g080q8wk0klr3vxgypsikkb5"))))
11494 (build-system ruby-build-system)
11495 (arguments
11496 `(#:tests? #f ; no tests
11497 #:phases
11498 (modify-phases %standard-phases
11499 (replace 'build
11500 (lambda _
11501 (invoke "gem" "build" ".gemspec"))))))
11502 (propagated-inputs
11503 `(("ruby-addressable" ,ruby-addressable)))
11504 (synopsis "Ruby JSON Schema Validator")
11505 (description "This library provides Ruby with an interface for validating
11506JSON objects against a JSON schema conforming to JSON Schema Draft 4. Legacy
11507support for JSON Schema Draft 3, JSON Schema Draft 2, and JSON Schema Draft 1
11508is also included.")
11509 (home-page "https://github.com/ruby-json-schema/json-schema")
11510 (license license:expat)))
44881cad
JL
11511
11512(define-public swagger-diff
11513 (package
11514 (name "swagger-diff")
11515 (version "1.1.2")
11516 (source
11517 (origin
11518 (method url-fetch)
11519 (uri (rubygems-uri "swagger-diff" version))
11520 (sha256
11521 (base32
11522 "1hxx50nga1bqn254iqjcdwkc9c72364ks9lyjyw10ajz0l0ly7sn"))))
11523 (build-system ruby-build-system)
11524 (arguments
11525 `(#:test-target "spec"
11526 #:phases
11527 (modify-phases %standard-phases
11528 ;; Don't run or require rubocop, the code linting tool, as this is a
11529 ;; bit unnecessary.
11530 (add-after 'unpack 'dont-run-rubocop
11531 (lambda _
11532 (substitute* "Rakefile"
11533 ((".*rubocop.*") "")
11534 ((".*RuboCop.*") ""))
11535 #t)))))
11536 (propagated-inputs
11537 `(("ruby-json-schema" ,ruby-json-schema)))
11538 (native-inputs
11539 `(("bundler" ,bundler)
11540 ("ruby-rspec-core" ,ruby-rspec-core)
11541 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
11542 (synopsis
11543 "Compare Open API Initiative specification files")
11544 (description
11545 "Swagger::Diff is a utility for comparing two different Open API
11546Initiative (OAI) specifications (formerly known as Swagger specifications).
11547It is intended to determine whether a newer API specification is
11548backwards-compatible with an older API specification.")
11549 (home-page "https://github.com/civisanalytics/swagger-diff")
11550 (license license:bsd-3)))
9e065a8a
BL
11551
11552(define-public ruby-reverse-markdown
11553 (package
11554 (name "ruby-reverse-markdown")
11555 (version "1.1.0")
11556 (source
11557 (origin
11558 (method url-fetch)
11559 (uri (rubygems-uri "reverse_markdown" version))
11560 (sha256
11561 (base32
11562 "0w7y5n74daajvl9gixr91nh8670d7mkgspkk3ql71m8azq3nffbg"))))
11563 (build-system ruby-build-system)
11564 (propagated-inputs
11565 `(("ruby-nokogiri" ,ruby-nokogiri)))
11566 (native-inputs
11567 `(("bundler" ,bundler)
11568 ("ruby-rspec" ,ruby-rspec)
11569 ("ruby-kramdown" ,ruby-kramdown)
11570 ("ruby-simplecov" ,ruby-simplecov)))
11571 (arguments
11572 `(#:phases
11573 (modify-phases %standard-phases
11574 (replace 'check
11575 (lambda* (#:key tests? #:allow-other-keys)
11576 (when tests?
11577 (invoke "rspec"))
11578 #t)))))
11579 (synopsis "Convert HTML into Markdown")
11580 (description
11581 "This Ruby module allows you to map simple HTML back into
11582Markdown---e.g., if you want to import existing HTML data in your
11583application.")
11584 (home-page "https://github.com/xijo/reverse_markdown")
11585 (license license:wtfpl2)))
11586
a9e2de7e
BL
11587(define-public ruby-solargraph
11588 (package
11589 (name "ruby-solargraph")
11590 (version "0.36.0")
11591 (source
11592 (origin
11593 (method url-fetch)
11594 (uri (rubygems-uri "solargraph" version))
11595 (sha256
11596 (base32
11597 "0b93xzkgd1h06da9gdnwivj1mzbil8lc072y2838dy6i7bxgpy9i"))))
11598 (build-system ruby-build-system)
11599 (propagated-inputs
11600 `(("ruby-backport" ,ruby-backport)
11601 ("bundler" ,bundler)
11602 ("ruby-htmlentities" ,ruby-htmlentities)
11603 ("ruby-jaro-winkler" ,ruby-jaro-winkler)
11604 ("ruby-maruku" ,ruby-maruku)
11605 ("ruby-nokogiri" ,ruby-nokogiri)
11606 ("ruby-parser" ,ruby-parser)
11607 ("ruby-reverse-markdown" ,ruby-reverse-markdown)
11608 ("ruby-rubocop" ,ruby-rubocop)
11609 ("ruby-thor" ,ruby-thor)
11610 ("ruby-tilt" ,ruby-tilt)
11611 ("ruby-yard" ,ruby-yard)))
11612 (native-inputs
11613 `(("ruby-rspec" ,ruby-rspec)
11614 ("ruby-pry" ,ruby-pry)
11615 ("ruby-simplecov" ,ruby-simplecov)
11616 ("ruby-webmock" ,ruby-webmock-2)))
11617 ;; FIXME: can't figure out how to run the tests properly:
11618
11619 ;; An error occurred while loading spec_helper.
11620 ;; Failure/Error: return gem_original_require(path)
11621 ;; LoadError:
11622 ;; cannot load such file -- spec_helper
11623 (arguments
11624 '(#:tests? #f
11625 #:phases
11626 (modify-phases %standard-phases
11627 (replace 'check
11628 (lambda* (#:key tests? #:allow-other-keys)
11629 (when tests?
11630 (invoke "rspec"))
11631 #t)))))
11632 (synopsis
11633 "IDE tools for code completion, inline documentation, and static analysis")
11634 (description
11635 "Solargraph provides a comprehensive suite of tools for Ruby
11636programming: intellisense, diagnostics, inline documentation, and type
11637checking.")
11638 (home-page "https://solargraph.org/")
11639 (license license:expat)))
0c558aa9
DNB
11640
11641(define-public ruby-wayback-machine-downloader
11642 (package
11643 (name "ruby-wayback-machine-downloader")
11644 (version "2.2.1")
11645 (source
11646 (origin
11647 (method url-fetch)
11648 (uri (rubygems-uri
11649 "wayback_machine_downloader"
11650 version))
11651 (sha256
11652 (base32
11653 "12kb1qmvmmsaihqab1prn6cmynkn6cgb4vf41mgv22wkcgv5wgk2"))))
11654 (build-system ruby-build-system)
11655 (arguments
11656 '(#:tests? #f)) ; no tests
11657 (synopsis "Download archived websites from the Wayback Machine")
11658 (description
11659 "Wayback Machine Downloader is a command line tool for downloading
11660websites from the Internet Archive's Wayback Machine (archive.org).
11661It allows fine grained control over what to download by specifying
11662which snapshots to consider and what files to include.")
11663 (home-page
11664 "https://github.com/hartator/wayback-machine-downloader")
11665 (license license:expat)))
e6483f8c
MB
11666
11667(define-public ruby-wwtd
11668 (package
11669 (name "ruby-wwtd")
11670 (version "1.4.1")
702a1012 11671 (home-page "https://github.com/grosser/wwtd")
e6483f8c
MB
11672 (source (origin
11673 (method git-fetch)
11674 (uri (git-reference
11675 (url home-page)
11676 (commit (string-append "v" version))))
11677 (file-name (git-file-name name version))
11678 (sha256
11679 (base32
11680 "0gw7vfnbb41cy67yw82zji3jkhfsgmzcgzaszm99ax77y18wclf2"))
11681 (modules '((guix build utils)))
11682 (snippet
11683 '(begin
11684 ;; Remove bundled library.
11685 (delete-file "spec/rake-12.3.0.gem")
11686 #t))))
11687 (build-system ruby-build-system)
11688 (arguments
11689 '(;; XXX: Tests need multiple versions of ruby, wants to run
11690 ;; `bundle install`, etc.
11691 #:tests? #f
11692 #:phases (modify-phases %standard-phases
11693 (replace 'replace-git-ls-files
11694 (lambda _
11695 (substitute* "wwtd.gemspec"
11696 (("git ls-files lib/ bin/`")
11697 "find lib/ bin/ -type f |sort`"))
11698 #t))
11699 (add-before 'check 'remove-version-constraints
11700 (lambda _
11701 (delete-file "Gemfile.lock")
11702 #t))
11703 (replace 'check
11704 (lambda* (#:key tests? #:allow-other-keys)
11705 (if tests?
11706 (invoke "rspec" "spec/")
11707 (format #t "test suite not run~%"))
11708 #t)))))
11709 (native-inputs
11710 `(("ruby-bump" ,ruby-bump)
11711 ("ruby-rspec" ,ruby-rspec)))
11712 (synopsis "Run @file{.travis.yml} files locally")
11713 (description
11714 "WWTD is a @dfn{Travis Simulator} that lets you run test matrices
11715defined in @file{.travis.yml} on your local machine, using @code{rvm},
11716@code{rbenv}, or @code{chruby} to test different versions of Ruby.")
11717 (license license:expat)))