gnu: ruby-asciidoctor: Update to 2.0.10.
[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>
b872b47b 10;;; Copyright © 2017, 2018, 2019 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>
6ef8c59a
PP
24;;;
25;;; This file is part of GNU Guix.
26;;;
27;;; GNU Guix is free software; you can redistribute it and/or modify it
28;;; under the terms of the GNU General Public License as published by
29;;; the Free Software Foundation; either version 3 of the License, or (at
30;;; your option) any later version.
31;;;
32;;; GNU Guix is distributed in the hope that it will be useful, but
33;;; WITHOUT ANY WARRANTY; without even the implied warranty of
34;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
35;;; GNU General Public License for more details.
36;;;
37;;; You should have received a copy of the GNU General Public License
38;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
39
40(define-module (gnu packages ruby)
41 #:use-module ((guix licenses) #:prefix license:)
42 #:use-module (gnu packages)
1db791d5 43 #:use-module (gnu packages base)
933dad91 44 #:use-module (gnu packages bison)
24be6751 45 #:use-module (gnu packages c)
15b16c2c 46 #:use-module (gnu packages check)
6ef8c59a 47 #:use-module (gnu packages compression)
2a9ce5cb 48 #:use-module (gnu packages crypto)
4a9e0585 49 #:use-module (gnu packages databases)
255d1bbe 50 #:use-module (gnu packages dbm)
c41fba01 51 #:use-module (gnu packages rails)
6ef8c59a 52 #:use-module (gnu packages readline)
6ef8c59a 53 #:use-module (gnu packages autotools)
c84dd8d4 54 #:use-module (gnu packages haskell-xyz)
ad79eb55 55 #:use-module (gnu packages java)
6ef8c59a 56 #:use-module (gnu packages libffi)
f3d7bb93 57 #:use-module (gnu packages libidn)
c41fba01
CB
58 #:use-module (gnu packages linux)
59 #:use-module (gnu packages lsof)
34138e42 60 #:use-module (gnu packages maths)
0c8eedc1 61 #:use-module (gnu packages ncurses)
fe5dd5f4 62 #:use-module (gnu packages networking)
3ca43524 63 #:use-module (gnu packages node)
dff5392f 64 #:use-module (gnu packages protobuf)
ac09beba 65 #:use-module (gnu packages python)
44d10b1f 66 #:use-module (gnu packages python-xyz)
763624f5 67 #:use-module (gnu packages ragel)
30f08487 68 #:use-module (gnu packages rsync)
cd0322a3 69 #:use-module (gnu packages sqlite)
cc2b77df 70 #:use-module (gnu packages tls)
66e20863 71 #:use-module (gnu packages version-control)
6ef8c59a
PP
72 #:use-module (guix packages)
73 #:use-module (guix download)
bda0c139 74 #:use-module (guix git-download)
6ef8c59a 75 #:use-module (guix utils)
acf735f2 76 #:use-module (guix build-system gnu)
e920bfca 77 #:use-module (gnu packages xml)
c2c4e5b2 78 #:use-module (gnu packages web)
15b16c2c
CB
79 #:use-module (guix build-system ruby)
80 #:use-module ((srfi srfi-1) #:select (alist-delete)))
6ef8c59a
PP
81
82(define-public ruby
83 (package
84 (name "ruby")
4914c157 85 (version "2.6.5")
6ef8c59a
PP
86 (source
87 (origin
88 (method url-fetch)
6becfdff
MW
89 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
90 (version-major+minor version)
12d39eb5 91 "/ruby-" version ".tar.xz"))
6ef8c59a
PP
92 (sha256
93 (base32
4914c157 94 "0qhsw2mr04f3lqinkh557msr35pb5rdaqy4vdxcj91flgxqxmmnm"))
65e84e31
BW
95 (modules '((guix build utils)))
96 (snippet `(begin
97 ;; Remove bundled libffi
c033c195 98 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
65e84e31 99 #t))))
6ef8c59a
PP
100 (build-system gnu-build-system)
101 (arguments
102 `(#:test-target "test"
fd248cb8 103 #:configure-flags '("--enable-shared") ; dynamic linking
6ef8c59a 104 #:phases
9656b8be 105 (modify-phases %standard-phases
65e84e31 106 (add-before 'configure 'replace-bin-sh-and-remove-libffi
9656b8be
BW
107 (lambda _
108 (substitute* '("Makefile.in"
109 "ext/pty/pty.c"
110 "io.c"
111 "lib/mkmf.rb"
112 "process.c"
113 "test/rubygems/test_gem_ext_configure_builder.rb"
114 "test/rdoc/test_rdoc_parser.rb"
115 "test/ruby/test_rubyoptions.rb"
116 "test/ruby/test_process.rb"
117 "test/ruby/test_system.rb"
118 "tool/rbinstall.rb")
119 (("/bin/sh") (which "sh")))
120 #t)))))
6ef8c59a
PP
121 (inputs
122 `(("readline" ,readline)
6ef8c59a
PP
123 ("openssl" ,openssl)
124 ("libffi" ,libffi)
4914c157
CB
125 ("gdbm" ,gdbm)))
126 (propagated-inputs
127 `(("zlib" ,zlib)))
6ef8c59a
PP
128 (native-search-paths
129 (list (search-path-specification
130 (variable "GEM_PATH")
3cb3fa67 131 (files (list (string-append "lib/ruby/vendor_ruby"))))))
6becfdff 132 (synopsis "Programming language interpreter")
6ef8c59a
PP
133 (description "Ruby is a dynamic object-oriented programming language with
134a focus on simplicity and productivity.")
bf3be6a5 135 (home-page "https://www.ruby-lang.org")
6ef8c59a
PP
136 (license license:ruby)))
137
1cc7d340
RP
138(define-public ruby-2.7
139 (package
140 (inherit ruby)
141 (version "2.7.1")
142 (source
143 (origin
144 (method url-fetch)
145 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
146 (version-major+minor version)
147 "/ruby-" version ".tar.gz"))
148 (sha256
149 (base32
150 "0674x98f542y02r7n2yv2qhmh97blqhi2mvh2dn5f000vlxlh66l"))
151 (modules '((guix build utils)))
152 (snippet `(begin
153 ;; Remove bundled libffi
154 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
155 #t))))
156 (arguments
157 `(#:test-target "test"
158 #:configure-flags '("--enable-shared") ; dynamic linking
159 #:phases
160 (modify-phases %standard-phases
161 (add-before 'configure 'replace-bin-sh-and-remove-libffi
162 (lambda _
163 (substitute* '("configure.ac"
164 "template/Makefile.in"
165 "lib/rubygems/installer.rb"
166 "ext/pty/pty.c"
167 "io.c"
168 "lib/mkmf.rb"
169 "process.c"
170 "test/rubygems/test_gem_ext_configure_builder.rb"
171 "test/rdoc/test_rdoc_parser.rb"
172 "test/ruby/test_rubyoptions.rb"
173 "test/ruby/test_process.rb"
174 "test/ruby/test_system.rb"
175 "tool/rbinstall.rb")
176 (("/bin/sh") (which "sh")))
177 #t)))))
178 (native-inputs
179 `(("autoconf" ,autoconf)))))
180
227fab3e
CB
181(define-public ruby-2.5
182 (package
183 (inherit ruby)
a09ff632 184 (version "2.5.8")
227fab3e
CB
185 (source
186 (origin
187 (method url-fetch)
188 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
189 (version-major+minor version)
190 "/ruby-" version ".tar.xz"))
191 (sha256
192 (base32
a09ff632 193 "0vad5ah1lrdhxsyqr5iqc8c7r7qczpmm76cz8rsf4crimpzv5483"))
227fab3e
CB
194 (modules '((guix build utils)))
195 (snippet `(begin
196 ;; Remove bundled libffi
197 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
198 #t))))))
199
93cae02f
CB
200(define-public ruby-2.4
201 (package
202 (inherit ruby)
dfe211f9 203 (version "2.4.10")
93cae02f
CB
204 (source
205 (origin
206 (method url-fetch)
207 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
208 (version-major+minor version)
209 "/ruby-" version ".tar.xz"))
210 (sha256
211 (base32
dfe211f9 212 "1prhqlgik1zmw9lakl6hkriqslspw48pvhxff17h7ns42p8qwrnm"))
93cae02f
CB
213 (modules '((guix build utils)))
214 (snippet `(begin
215 ;; Remove bundled libffi
216 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
217 #t))))))
218
933dad91
RW
219(define-public mruby
220 (package
221 (name "mruby")
222 (version "2.0.0")
223 (source
224 (origin
225 (method git-fetch)
226 (uri (git-reference
227 (url "https://github.com/mruby/mruby.git")
228 (commit version)))
229 (file-name (git-file-name name version))
230 (sha256
231 (base32
232 "1r6w1asjshff43ymdwa6xmrkggza99mi2kw88k7ic6ag2j81hcj5"))))
233 (build-system gnu-build-system)
234 (arguments
235 `(#:test-target "test"
236 #:phases
237 (modify-phases %standard-phases
238 (delete 'configure)
239 (add-after 'unpack 'enable-verbose-tests
240 (lambda _
241 (substitute* "Makefile"
242 (("ruby ./minirake" m)
243 (string-append m " --verbose")))
244 #t))
245 (add-after 'unpack 'disable-broken-tests
246 (lambda _
247 (substitute* "mrbgems/mruby-io/test/io.rb"
248 (("assert\\('IO.popen.+$" m)
249 (string-append m "skip \"Hangs in the Guix build environment\"\n"))
250 (("assert\\('IO#isatty.+$" m)
251 (string-append m "skip \"Disable for Guix; there is no /dev/tty\"\n"))
252 ;; This one is really weird. The *expected* output is all wrong.
253 (("assert\\('`cmd`.*" m)
254 (string-append m "skip \"Disable for Guix\"\n"))
255 (("echo foo")
256 (string-append (which "echo") " foo")))
257 #t))
258 ;; There is no install target
259 (replace 'install
260 (lambda* (#:key outputs #:allow-other-keys)
261 (let* ((out (assoc-ref outputs "out"))
262 (bin (string-append out "/bin"))
263 (lib (string-append out "/lib")))
264 (mkdir-p bin)
265 (copy-recursively "build/host/bin" bin)
266 (mkdir-p lib)
267 (copy-recursively "build/host/lib" lib))
268 #t)))))
269 (native-inputs
270 `(("ruby" ,ruby)
271 ("bison" ,bison)))
272 (home-page "https://github.com/mruby/mruby")
273 (synopsis "Lightweight Ruby")
274 (description "mruby is the lightweight implementation of the Ruby
275language. Its syntax is Ruby 1.9 compatible. mruby can be linked and
276embedded within your application.")
277 (license license:expat)))
278
34372d39
RW
279(define-public ruby-commander
280 (package
281 (name "ruby-commander")
282 (version "4.4.7")
283 (source
284 (origin
285 (method url-fetch)
286 (uri (rubygems-uri "commander" version))
287 (sha256
288 (base32
289 "1pxakz596fjqak3cdbha6iva1dlqis86i3kjrgg6lf3sp8i5vhwg"))))
290 (build-system ruby-build-system)
291 (arguments
292 `(#:test-target "spec"
293 #:phases
294 (modify-phases %standard-phases
295 ;; Don't run or require rubocop, the code linting tool, as this is a
296 ;; bit unnecessary.
297 (add-after 'unpack 'dont-run-rubocop
298 (lambda _
299 (substitute* "Rakefile"
300 ((".*rubocop.*") "")
301 ((".*RuboCop.*") ""))
302 #t)))))
303 (propagated-inputs
304 `(("ruby-highline" ,ruby-highline)))
305 (native-inputs
306 `(("bundler" ,bundler)
307 ("ruby-rspec-core" ,ruby-rspec-core)
308 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
309 ("ruby-rspec-mocks" ,ruby-rspec-mocks)
310 ("ruby-simplecov" ,ruby-simplecov)))
311 (home-page "https://github.com/commander-rb/commander")
312 (synopsis "Library for building Ruby command-line executables")
313 (description
314 "Commander aims to be a complete solution for Ruby command-line
315executables. Commander bridges the gap between other terminal related
316libraries (OptionParser, HighLine), while providing many new features, and an
317elegant API.")
318 (license license:expat)))
319
823ed097
CB
320(define-public ruby-highline
321 (package
322 (name "ruby-highline")
6742c6f6 323 (version "2.0.1")
823ed097
CB
324 (source
325 (origin
326 (method url-fetch)
327 (uri (rubygems-uri "highline" version))
328 (sha256
329 (base32
6742c6f6 330 "0gr6pckj2jayxw1gdgh9193j5jag5zrrqqlrnl4jvcwpyd3sn2zc"))))
823ed097
CB
331 (build-system ruby-build-system)
332 (arguments
333 `(#:tests? #f)) ;; TODO: NameError: uninitialized constant SPEC
334 (native-inputs
335 `(("bundler" ,bundler)
336 ("ruby-code-statistics" ,ruby-code-statistics)))
337 (synopsis
338 "HighLine helps you build command-line interfaces")
339 (description
340 "HighLine provides a high-level IO library that provides validation,
341type conversion, and more for command-line interfaces. HighLine also includes
342a menu system for providing multiple options to the user.")
343 (home-page "https://github.com/JEG2/highline")
344 (license (list license:gpl2 license:ruby))))
345
bda0c139
DT
346(define-public ruby-hoe
347 (package
348 (name "ruby-hoe")
d0d2dd24 349 (version "3.21.0")
bda0c139 350 (source (origin
e83c6d00
DT
351 (method url-fetch)
352 (uri (rubygems-uri "hoe" version))
bda0c139
DT
353 (sha256
354 (base32
d0d2dd24 355 "0qid0n56mgsjvq5ksxajv0gb92akky8imwgvw22ajms5g4fd6nf4"))))
bda0c139 356 (build-system ruby-build-system)
d0d2dd24
CB
357 (arguments
358 '(#:phases
359 (modify-phases %standard-phases
360 ;; One of the tests fails if the SOURCE_DATE_EPOCH environment
361 ;; variable is set, so unset it for the duration of the tests.
362 ;;
363 ;; TestHoe#test_possibly_better
364 ;; [/tmp/guix-build-ruby-hoe-3.20.0.drv-0/gem/test/test_hoe.rb:250]:
365 ;; Expected: 2019-11-12 00:00:00 UTC
366 ;; Actual: 1970-01-01 00:00:00 UTC
367 (add-before 'check 'unset-SOURCE-DATE-EPOCH
368 (lambda _
369 (unsetenv "SOURCE_DATE_EPOCH")
370 #t))
371 (add-after 'check 'set-SOURCE-DATE-EPOCH-again
372 (lambda _
373 (setenv "SOURCE_DATE_EPOCH" "1")
374 #t)))))
bda0c139
DT
375 (synopsis "Ruby project management helper")
376 (description
377 "Hoe is a rake/rubygems helper for project Rakefiles. It helps manage,
378maintain, and release projects and includes a dynamic plug-in system allowing
379for easy extensibility. Hoe ships with plug-ins for all the usual project
380tasks including rdoc generation, testing, packaging, deployment, and
381announcement.")
2f3800e5 382 (home-page "https://www.zenspider.com/projects/hoe.html")
bda0c139
DT
383 (license license:expat)))
384
022170dc
PP
385(define-public ruby-rake-compiler
386 (package
387 (name "ruby-rake-compiler")
7ac6bd00 388 (version "1.1.0")
022170dc
PP
389 (source (origin
390 (method url-fetch)
e83c6d00 391 (uri (rubygems-uri "rake-compiler" version))
022170dc
PP
392 (sha256
393 (base32
7ac6bd00 394 "0l4hg21v0phfrfsc2hilgmwvn2imxr0byqh8dv16bya1s5d3km0q"))))
022170dc
PP
395 (build-system ruby-build-system)
396 (arguments
e83c6d00 397 '(#:tests? #f)) ; needs cucumber
022170dc 398 (synopsis "Building and packaging helper for Ruby native extensions")
e881752c 399 (description "Rake-compiler provides a framework for building and
022170dc
PP
400packaging native C and Java extensions in Ruby.")
401 (home-page "https://github.com/rake-compiler/rake-compiler")
402 (license license:expat)))
403
30f08487
RW
404(define-public ruby-rsync
405 (package
406 (name "ruby-rsync")
407 (version "1.0.9")
408 (source
409 (origin
410 (method url-fetch)
411 (uri (rubygems-uri "rsync" version))
412 (sha256
413 (base32
414 "0p8b27q1gvxilqfq2528xpwglzcm2myikkjxpqk7mwbwg9r6knxv"))))
415 (build-system ruby-build-system)
416 (arguments
417 '(#:test-target "spec"
418 #:phases
419 (modify-phases %standard-phases
420 (add-after 'unpack 'remove-coveralls-requirement
421 (lambda _
422 (substitute* "spec/spec_helper.rb"
423 (("require 'coveralls'") "")
424 (("Coveralls.wear!") ""))
425 #t)))))
426 (native-inputs
427 `(("bundler" ,bundler)
428 ("rsync" ,rsync)
429 ("ruby-rspec-core" ,ruby-rspec-core)
430 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
431 ("ruby-rspec-mocks" ,ruby-rspec-mocks)))
432 (home-page "https://github.com/jbussdieker/ruby-rsync")
433 (synopsis "Ruby wrapper around rsync")
434 (description
435 "Ruby Rsync is a Ruby library that can synchronize files between remote
436hosts by wrapping the @file{rsync} binary.")
437 (license license:expat)))
438
acf735f2
DT
439(define-public ruby-i18n
440 (package
441 (name "ruby-i18n")
92dddf6b 442 (version "1.7.0")
acf735f2
DT
443 (source (origin
444 (method url-fetch)
e83c6d00 445 (uri (rubygems-uri "i18n" version))
acf735f2
DT
446 (sha256
447 (base32
92dddf6b 448 "0hmypvx9iyc0b4hski7aic2xzm09cg1c7q1qlpnk3k8s5acxzyhl"))))
acf735f2
DT
449 (build-system ruby-build-system)
450 (arguments
0bfdfd37 451 '(#:tests? #f)) ; no tests
cbb50182 452 (propagated-inputs `(("concurrent-ruby" ,ruby-concurrent)))
acf735f2
DT
453 (synopsis "Internationalization library for Ruby")
454 (description "Ruby i18n is an internationalization and localization
455solution for Ruby programs. It features translation and localization,
456interpolation of values to translations, pluralization, customizable
457transliteration to ASCII, flexible defaults, bulk lookup, lambdas as
458translation data, custom key/scope separator, custom exception handlers, and
459an extensible architecture with a swappable backend.")
92dddf6b 460 (home-page "https://github.com/ruby-i18n/i18n")
acf735f2 461 (license license:expat)))
eb0c2dd6 462
62b138ca
CB
463(define-public ruby-iruby
464 (package
465 (name "ruby-iruby")
466 (version "0.3")
467 (source
468 (origin
469 (method url-fetch)
470 (uri (rubygems-uri "iruby" version))
471 (sha256
472 (base32
473 "1wdf2c0x8y6cya0n3y0p3p7b1sxkb2fdavdn2k58rf4rs37s7rzn"))))
474 (build-system ruby-build-system)
475 (arguments
476 ;; TODO: Tests currently fail.
477 ;;
478 ;; Finished in 1.764405s, 1.1335 runs/s, 5.1009 assertions/s.
479 ;;
480 ;; 1) Failure:
481 ;; IntegrationTest#test_interaction [/tmp/guix-build-ruby-iruby-0.3.drv-0/gem/test/integration_test.rb:25]:
482 ;; In [ expected
483 ;;
484 ;; 2 runs, 9 assertions, 1 failures, 0 errors, 0 skips
485 '(#:tests? #f
486 #:phases
487 (modify-phases %standard-phases
488 (add-after 'unpack 'patch-ipython
489 (lambda* (#:key inputs #:allow-other-keys)
490 (substitute* "lib/iruby/command.rb"
491 (("version = `")
492 (string-append
493 "version = `"
494 (assoc-ref inputs "python-ipython")
495 "/bin/"))
496 (("Kernel\\.exec\\('")
497 (string-append
498 "Kernel.exec('"
499 (assoc-ref inputs "python-ipython")
500 "/bin/")))
501 #t)))))
502 (inputs
503 `(("python-ipython" ,python-ipython)))
504 (propagated-inputs
505 `(("ruby-bond" ,ruby-bond)
506 ("ruby-data_uri" ,ruby-data_uri)
507 ("ruby-mimemagic" ,ruby-mimemagic)
508 ("ruby-multi-json" ,ruby-multi-json)
509 ("ruby-cztop" ,ruby-cztop)
510 ;; Optional inputs
511 ("ruby-pry" ,ruby-pry)))
512 (synopsis "Ruby kernel for Jupyter/IPython")
513 (description
514 "This package provides a Ruby kernel for Jupyter/IPython frontends (e.g.
515notebook).")
516 (home-page "https://github.com/SciRuby/iruby")
517 (license license:expat)))
518
eb0c2dd6
DT
519;; RSpec is the dominant testing library for Ruby projects. Even RSpec's
520;; dependencies use RSpec for their test suites! To avoid these circular
521;; dependencies, we disable tests for all of the RSpec-related packages.
87688ff3 522(define-public ruby-rspec-support
eb0c2dd6
DT
523 (package
524 (name "ruby-rspec-support")
bee67d18 525 (version "3.8.0")
eb0c2dd6
DT
526 (source (origin
527 (method url-fetch)
e83c6d00 528 (uri (rubygems-uri "rspec-support" version))
eb0c2dd6
DT
529 (sha256
530 (base32
bee67d18 531 "0p3m7drixrlhvj2zpc38b11x145bvm311x6f33jjcxmvcm0wq609"))))
eb0c2dd6
DT
532 (build-system ruby-build-system)
533 (arguments
534 '(#:tests? #f)) ; avoid dependency cycles
535 (synopsis "RSpec support library")
536 (description "Support utilities for RSpec gems.")
537 (home-page "https://github.com/rspec/rspec-support")
538 (license license:expat)))
539
540(define-public ruby-rspec-core
541 (package
542 (name "ruby-rspec-core")
bee67d18 543 (version "3.8.0")
eb0c2dd6
DT
544 (source (origin
545 (method url-fetch)
e83c6d00 546 (uri (rubygems-uri "rspec-core" version))
eb0c2dd6
DT
547 (sha256
548 (base32
bee67d18 549 "1p1s5bnbqp3sxk67y0fh0x884jjym527r0vgmhbm81w7aq6b7l4p"))))
eb0c2dd6
DT
550 (build-system ruby-build-system)
551 (arguments
552 '(#:tests? #f)) ; avoid dependency cycles
553 (propagated-inputs
554 `(("ruby-rspec-support" ,ruby-rspec-support)))
555 (synopsis "RSpec core library")
556 (description "Rspec-core provides the RSpec test runner and example
557groups.")
558 (home-page "https://github.com/rspec/rspec-core")
559 (license license:expat)))
e6962009 560
64c318f2
BW
561(define-public ruby-rspec-core-2
562 (package (inherit ruby-rspec-core)
563 (version "2.14.8")
564 (source (origin
565 (method url-fetch)
566 (uri (rubygems-uri "rspec-core" version))
567 (sha256
568 (base32
569 "0psjy5kdlz3ph39br0m01w65i1ikagnqlg39f8p65jh5q7dz8hwc"))))
570 (propagated-inputs `())))
571
20c05ea9 572(define-public ruby-diff-lcs
e6962009
DT
573 (package
574 (name "ruby-diff-lcs")
e2fcef39 575 (version "1.3")
e6962009
DT
576 (source (origin
577 (method url-fetch)
e83c6d00 578 (uri (rubygems-uri "diff-lcs" version))
e6962009
DT
579 (sha256
580 (base32
e2fcef39 581 "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza"))))
e6962009
DT
582 (build-system ruby-build-system)
583 (arguments
584 '(#:tests? #f)) ; avoid dependency cycles
585 (synopsis "Compute the difference between two Enumerable sequences")
586 (description "Diff::LCS computes the difference between two Enumerable
587sequences using the McIlroy-Hunt longest common subsequence (LCS) algorithm.
588It includes utilities to create a simple HTML diff output format and a
589standard diff-like tool.")
590 (home-page "https://github.com/halostatue/diff-lcs")
591 (license license:expat)))
592
593(define-public ruby-rspec-expectations
594 (package
595 (name "ruby-rspec-expectations")
bee67d18 596 (version "3.8.2")
e6962009
DT
597 (source (origin
598 (method url-fetch)
e83c6d00 599 (uri (rubygems-uri "rspec-expectations" version))
e6962009
DT
600 (sha256
601 (base32
bee67d18 602 "18l21hy1zdc2pgc2yb17k3n2al1khpfr0z6pijlm852iz6vj0dkm"))))
e6962009
DT
603 (build-system ruby-build-system)
604 (arguments
605 '(#:tests? #f)) ; avoid dependency cycles
606 (propagated-inputs
607 `(("ruby-rspec-support" ,ruby-rspec-support)
20c05ea9 608 ("ruby-diff-lcs" ,ruby-diff-lcs)))
e881752c 609 (synopsis "RSpec expectations library")
e6962009
DT
610 (description "Rspec-expectations provides a simple API to express expected
611outcomes of a code example.")
612 (home-page "https://github.com/rspec/rspec-expectations")
613 (license license:expat)))
4f2a0cac 614
fb157f25
BW
615(define-public ruby-rspec-expectations-2
616 (package (inherit ruby-rspec-expectations)
617 (version "2.14.5")
618 (source (origin
619 (method url-fetch)
620 (uri (rubygems-uri "rspec-expectations" version))
621 (sha256
622 (base32
623 "1ni8kw8kjv76jvwjzi4jba00k3qzj9f8wd94vm6inz0jz3gwjqf9"))))
624 (propagated-inputs
625 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
626
999ffb26
DM
627(define-public ruby-rspec-its
628 (package
629 (name "ruby-rspec-its")
b2244c68 630 (version "1.3.0")
999ffb26
DM
631 (source
632 (origin
3306f02a
CB
633 (method git-fetch)
634 (uri (git-reference
635 (url "https://github.com/rspec/rspec-its.git")
636 (commit (string-append "v" version))))
637 (file-name (git-file-name name version))
999ffb26
DM
638 (sha256
639 (base32
b2244c68 640 "02mlsc9d4d1cjj5vahi8v3q8hyn9fyiv8nnlidhgfh186qp20g1p"))))
999ffb26
DM
641 (build-system ruby-build-system)
642 (arguments
3306f02a
CB
643 `(#:test-target "spec"
644 #:phases
645 (modify-phases %standard-phases
646 (add-after 'unpack 'dont-install-gems-from-gemfile
647 (lambda _
648 (substitute* "Gemfile"
649 (("rspec rspec-core rspec-expectations rspec-mocks rspec-support")
650 ""))
651 #t))
7c8eb479 652 (add-before 'build 'loosen-ffi-requirement
b2244c68 653 (lambda _
7c8eb479 654 ;; Accept any version of ruby-ffi.
b2244c68 655 (substitute* "Gemfile"
7c8eb479
MB
656 ((" gem 'ffi', '~> 1\\.9\\.25'")
657 " gem 'ffi'"))
b2244c68 658 #t))
3306f02a
CB
659 (add-before 'build 'remove-unnecessary-dependency-versions-from-gemfile
660 (lambda _
661 (substitute* "rspec-its.gemspec"
662 (("rake.*") "rake'\n")
b2244c68
BH
663 (("spec.add_development_dependency 'cucumber'.*")
664 "spec.add_development_dependency 'cucumber'\n")
3306f02a 665 (("bundler.*") "bundler'\n")
b2244c68 666 (("\"aruba.*") "'aruba'\n"))
3306f02a 667 #t)))))
999ffb26
DM
668 (propagated-inputs
669 `(("ruby-rspec-core" ,ruby-rspec-core)
670 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
3306f02a
CB
671 (native-inputs
672 `(("bundler" ,bundler)
673 ("ruby-cucumber" ,ruby-cucumber)
b2244c68 674 ("ruby-ffi" ,ruby-ffi)
3306f02a
CB
675 ("ruby-aruba" ,ruby-aruba)))
676 (synopsis "RSpec extension that provides the @code{its} method")
677 (description
678 "RSpec::Its provides the its method as a short-hand to specify the expected
679value of an attribute. For example, one can use @code{its(:size)\\{should
680eq(1)\\}}.")
999ffb26
DM
681 (home-page "https://github.com/rspec/rspec-its")
682 (license license:expat)))
683
d7bd7016
MC
684;;; This variant is used to break a cycle with ruby-protobuf.
685(define-public ruby-rspec-its-minimal
686 (hidden-package
687 (package
688 (inherit ruby-rspec-its)
689 (arguments
690 (substitute-keyword-arguments (package-arguments ruby-rspec-its)
691 ((#:tests? _ #f) #f)))
692 (native-inputs '()))))
693
4f2a0cac
DT
694(define-public ruby-rspec-mocks
695 (package
696 (name "ruby-rspec-mocks")
bee67d18 697 (version "3.8.0")
4f2a0cac
DT
698 (source (origin
699 (method url-fetch)
e83c6d00 700 (uri (rubygems-uri "rspec-mocks" version))
4f2a0cac
DT
701 (sha256
702 (base32
bee67d18 703 "06y508cjqycb4yfhxmb3nxn0v9xqf17qbd46l1dh4xhncinr4fyp"))))
4f2a0cac
DT
704 (build-system ruby-build-system)
705 (arguments
706 '(#:tests? #f)) ; avoid dependency cycles
707 (propagated-inputs
708 `(("ruby-rspec-support" ,ruby-rspec-support)
20c05ea9 709 ("ruby-diff-lcs" ,ruby-diff-lcs)))
4f2a0cac
DT
710 (synopsis "RSpec stubbing and mocking library")
711 (description "Rspec-mocks provides RSpec's \"test double\" framework, with
712support for stubbing and mocking.")
713 (home-page "https://github.com/rspec/rspec-mocks")
714 (license license:expat)))
d4fde1f2 715
6da9adeb
BW
716(define-public ruby-rspec-mocks-2
717 (package (inherit ruby-rspec-mocks)
718 (version "2.14.6")
719 (source (origin
720 (method url-fetch)
721 (uri (rubygems-uri "rspec-mocks" version))
722 (sha256
723 (base32
724 "1fwsmijd6w6cmqyh4ky2nq89jrpzh56hzmndx9wgkmdgfhfakv30"))))
725 (propagated-inputs
726 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
727
198bc648
CB
728(define-public ruby-rspec-rerun
729 (package
730 (name "ruby-rspec-rerun")
731 (version "1.1.0")
732 (source
733 (origin
734 (method url-fetch)
735 (uri (rubygems-uri "rspec-rerun" version))
736 (sha256
737 (base32
738 "1gy7znkcaqhpccfnk2nvaqbsvgxy3q57cmjwkl9fi1zabaq5lbkj"))))
739 (build-system ruby-build-system)
740 (arguments
741 '(;; No included tests
742 #:tests? #f))
743 (propagated-inputs `(("ruby-rspec" ,ruby-rspec)))
744 (synopsis "Track failed RSpec tests to re-run them")
745 (description
746 "This package provides an automated way to track, and then re-run failed
747RSpec tests.")
748 (home-page "https://github.com/dblock/rspec-rerun")
749 (license license:expat)))
750
9c4cb1ef
CD
751(define-public ruby-rspec-wait
752 (package
753 (name "ruby-rspec-wait")
754 (version "0.0.9")
755 (source
756 (origin
757 (method url-fetch)
758 (uri (rubygems-uri "rspec-wait" version))
759 (sha256
760 (base32
761 "0gvj1bp5ccx001dyvcgk2j49s5sl6vs9fdaqqb08z3bd1554hsww"))))
762 (build-system ruby-build-system)
763 (arguments
764 '(#:phases
765 (modify-phases %standard-phases
766 (replace 'check
767 (lambda _
768 (invoke "rake" "spec"))))))
769 (native-inputs
770 `(("bundler" ,bundler)))
771 (propagated-inputs
772 `(("ruby-rspec" ,ruby-rspec)))
773 (home-page "https://github.com/laserlemon/rspec-wait")
774 (synopsis "Wait for conditions in RSpec")
775 (description
776 "RSpec::Wait strives to make it easier to test asynchronous or slow
777interactions.")
778 (license license:expat)))
779
d4fde1f2
DT
780(define-public ruby-rspec
781 (package
782 (name "ruby-rspec")
bee67d18 783 (version "3.8.0")
d4fde1f2
DT
784 (source (origin
785 (method url-fetch)
e83c6d00 786 (uri (rubygems-uri "rspec" version))
d4fde1f2
DT
787 (sha256
788 (base32
bee67d18 789 "15ppasvb9qrscwlyjz67ppw1lnxiqnkzx5vkx1bd8x5n3dhikxc3"))))
d4fde1f2
DT
790 (build-system ruby-build-system)
791 (arguments
792 '(#:tests? #f)) ; avoid dependency cycles
793 (propagated-inputs
794 `(("ruby-rspec-core" ,ruby-rspec-core)
795 ("ruby-rspec-mocks" ,ruby-rspec-mocks)
796 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
797 (synopsis "Behavior-driven development framework for Ruby")
798 (description "RSpec is a behavior-driven development (BDD) framework for
799Ruby. This meta-package includes the RSpec test runner, along with the
800expectations and mocks frameworks.")
35739712 801 (home-page "https://rspec.info/")
d4fde1f2 802 (license license:expat)))
2cbc105b 803
5ac984b3
BW
804(define-public ruby-rspec-2
805 (package (inherit ruby-rspec)
806 (version "2.14.1")
807 (source (origin
808 (method url-fetch)
809 (uri (rubygems-uri "rspec" version))
810 (sha256
811 (base32
812 "134y4wzk1prninb5a0bhxgm30kqfzl8dg06af4js5ylnhv2wd7sg"))))
813 (propagated-inputs
814 `(("ruby-rspec-core" ,ruby-rspec-core-2)
815 ("ruby-rspec-mocks" ,ruby-rspec-mocks-2)
816 ("ruby-rspec-expectations" ,ruby-rspec-expectations-2)))))
817
2cbc105b
DT
818;; Bundler is yet another source of circular dependencies, so we must disable
819;; its test suite as well.
820(define-public bundler
821 (package
822 (name "bundler")
cbee8e31 823 (version "2.1.4")
2cbc105b
DT
824 (source (origin
825 (method url-fetch)
e83c6d00 826 (uri (rubygems-uri "bundler" version))
2cbc105b
DT
827 (sha256
828 (base32
cbee8e31 829 "12glbb1357x91fvd004jgkw7ihlkpc9dwr349pd7j83isqhls0ah"))))
2cbc105b
DT
830 (build-system ruby-build-system)
831 (arguments
832 '(#:tests? #f)) ; avoid dependency cycles
833 (synopsis "Ruby gem bundler")
834 (description "Bundler automatically downloads and installs a list of gems
835specified in a \"Gemfile\", as well as their dependencies.")
2f3800e5 836 (home-page "https://bundler.io/")
2cbc105b 837 (license license:expat)))
98b87b82 838
cf36174f
RW
839(define-public ruby-builder
840 (package
841 (name "ruby-builder")
42b48db2 842 (version "3.2.3")
cf36174f
RW
843 (source (origin
844 (method url-fetch)
845 (uri (rubygems-uri "builder" version))
846 (sha256
847 (base32
42b48db2 848 "0qibi5s67lpdv1wgcj66wcymcr04q6j4mzws6a479n0mlrmh5wr1"))))
cf36174f
RW
849 (build-system ruby-build-system)
850 (arguments
851 `(#:phases
852 (modify-phases %standard-phases
853 (add-after 'unpack 'do-not-use-rvm
854 (lambda _
855 (substitute* "rakelib/tags.rake"
856 (("RVM_GEMDIR = .*") "RVM_GEMDIR = 'no-rvm-please'\n"))
857 #t)))))
858 (synopsis "Ruby library to create structured data")
859 (description "Builder provides a number of builder objects that make it
860easy to create structured data. Currently the following builder objects are
861supported: XML Markup and XML Events.")
862 (home-page "https://github.com/jimweirich/builder")
863 (license license:expat)))
864
566f71f8
CB
865(define-public ruby-bump
866 (package
867 (name "ruby-bump")
868 (version "0.7.0")
869 (source
870 (origin
871 (method url-fetch)
872 (uri (rubygems-uri "bump" version))
873 (sha256
874 (base32
875 "1xinbr9rzh6cj75x24niwgqcnbhdxc68a8bc41lk8xv6fd906fym"))))
876 (build-system ruby-build-system)
877 (arguments
878 '(;; No included tests
879 #:tests? #f))
880 (synopsis "Tool for working with Rubygems")
881 (description
882 "Bump provides commands to manage Rubygem versioning, updating to the
883next patch version for example.")
884 (home-page "https://github.com/gregorym/bump")
885 (license license:expat)))
886
ad79eb55
RW
887(define-public ruby-rjb
888 (package
889 (name "ruby-rjb")
aeb4e61e 890 (version "1.5.5")
ad79eb55
RW
891 (source (origin
892 (method url-fetch)
893 (uri (rubygems-uri "rjb" version))
894 (sha256
895 (base32
aeb4e61e 896 "1ppj8rbicj3w0nhh7f73mflq19yd7pzdzkh2a91hcvphriy5b0ca"))))
ad79eb55
RW
897 (build-system ruby-build-system)
898 (arguments
899 `(#:tests? #f ; no rakefile
900 #:phases
901 (modify-phases %standard-phases
902 (add-before 'build 'set-java-home
903 (lambda* (#:key inputs #:allow-other-keys)
904 (setenv "JAVA_HOME" (assoc-ref inputs "jdk"))
905 #t)))))
906 (native-inputs
d2540f80 907 `(("jdk" ,icedtea "jdk")))
ad79eb55
RW
908 (synopsis "Ruby-to-Java bridge using the Java Native Interface")
909 (description "RJB is a bridge program that connects Ruby and Java via the
910Java Native Interface.")
2f3800e5 911 (home-page "https://www.artonx.org/collabo/backyard/?RubyJavaBridge")
ad79eb55
RW
912 (license license:lgpl2.1+)))
913
f9ae2c06
PP
914(define-public ruby-log4r
915 (package
916 (name "ruby-log4r")
917 (version "1.1.10")
918 (source
919 (origin
920 (method url-fetch)
921 (uri (rubygems-uri "log4r" version))
922 (sha256
923 (base32
924 "0ri90q0frfmigkirqv5ihyrj59xm8pq5zcmf156cbdv4r4l2jicv"))))
925 (build-system ruby-build-system)
926 (arguments
927 '(#:tests? #f)) ; no Rakefile in gem
928 (synopsis "Flexible logging library for Ruby")
929 (description "Comprehensive and flexible logging library written
930in Ruby for use in Ruby programs. It features a hierarchical logging
931system of any number of levels, custom level names, logger
932inheritance, multiple output destinations per log event, execution
933tracing, custom formatting, thread safteyness, XML and YAML
934configuration, and more.")
935 (home-page "http://log4r.rubyforge.org/")
936 (license license:bsd-3)))
937
71a03c29
RW
938(define-public ruby-atoulme-antwrap
939 (package
940 (name "ruby-atoulme-antwrap")
941 (version "0.7.5")
942 (source (origin
943 (method url-fetch)
944 (uri (rubygems-uri "atoulme-Antwrap" version))
945 (sha256
946 (base32
947 "05s3iw44lqa81f8nfy5f0xjj808600h82zb9bsh46b9kcq2w2kmz"))))
948 (build-system ruby-build-system)
949 ;; Test data required for most of the tests are not included.
950 (arguments `(#:tests? #f))
951 (native-inputs
952 `(("ruby-hoe" ,ruby-hoe)))
953 (inputs
954 `(("ruby-rjb" ,ruby-rjb)))
955 (synopsis "Ruby wrapper for the Ant build tool")
956 (description "Antwrap is a Ruby module that wraps the Apache Ant build
957tool. Antwrap can be used to invoke Ant tasks from a Ruby or a JRuby
958script.")
959 (home-page "http://rubyforge.org/projects/antwrap/")
960 (license license:expat)))
961
fe1ddad5
RW
962(define-public ruby-atoulme-saikuro
963 (package
964 (name "ruby-atoulme-saikuro")
965 (version "1.2.1")
966 (source (origin
967 (method url-fetch)
968 (uri (rubygems-uri "atoulme-Saikuro" version))
969 (sha256
970 (base32
971 "0kvd2nsxffbza61d3q4j94wrbnbv50r1zy3a7q26f6k706fw1f19"))))
972 (build-system ruby-build-system)
973 ;; FIXME: There are no unit tests. The tests are demonstrations of the
974 ;; "saikuro" tool.
975 (arguments `(#:tests? #f))
976 (synopsis "Cyclomatic complexity analyzer")
977 (description "Saikuro is a Ruby cyclomatic complexity analyzer. When
978given Ruby source code Saikuro will generate a report listing the cyclomatic
979complexity of each method found. In addition, Saikuro counts the number of
980lines per method and can generate a listing of the number of tokens on each
981line of code.")
982 (home-page "http://www.github.com/atoulme/Saikuro")
983 ;; File headers contain the BSD-3 license and the README.rdoc says that
984 ;; "Saikuro uses the BSD license", but the LICENSE file contains the text
985 ;; of the Expat license.
986 (license license:bsd-3)))
987
c84dd8d4
MC
988(define-public ruby-pandoc-ruby
989 (package
990 (name "ruby-pandoc-ruby")
991 (version "2.1.4")
992 (source
993 (origin
994 (method git-fetch) ;the gem lacks many test files
995 (uri (git-reference
996 (url "https://github.com/xwmx/pandoc-ruby.git")
997 (commit version)))
998 (file-name (git-file-name name version))
999 (sha256
1000 (base32
1001 "03a11clhycyn0jhc7g9davpqd83sn60jqwjy1y145ag9sq6sp935"))))
1002 (build-system ruby-build-system)
1003 (arguments
1004 `(#:phases
1005 (modify-phases %standard-phases
1006 (add-after 'unpack 'disable-failing-tests
1007 ;; TODO: Remove this phase after ghc-pandoc gets upgraded to 2.9.2+
1008 ;; (see: https://github.com/xwmx/pandoc-ruby/issues/39).
1009 (lambda _
1010 (substitute* "test/test_conversions.rb"
1011 (("next if from == to.*" all)
1012 (string-append
1013 all
1014 " next if ['plain', 'beamer'].include? to\n")))
1015 #t))
1016 (add-after 'unpack 'patch-pandoc-path
1017 (lambda* (#:key inputs #:allow-other-keys)
1018 (let ((pandoc (string-append (assoc-ref inputs "ghc-pandoc")
1019 "/bin/pandoc")))
1020 (substitute* "lib/pandoc-ruby.rb"
1021 (("@@pandoc_path = 'pandoc'")
1022 (format #f "@@pandoc_path = '~a'" pandoc)))
1023 (substitute* "test/test_pandoc_ruby.rb"
1024 (("('|\")pandoc" _ quote)
1025 (string-append quote pandoc))
1026 (("\\^pandoc")
1027 ".*pandoc"))
1028 #t)))
1029 (add-after 'extract-gemspec 'remove-Gemfile.lock
1030 (lambda _
1031 (delete-file "Gemfile.lock")
1032 (substitute* "pandoc-ruby.gemspec"
1033 (("Gemfile\\.lock") ""))
1034 #t)))))
1035 (native-inputs
1036 `(("ruby-mocha" ,ruby-mocha)))
1037 (inputs
1038 `(("ghc-pandoc" ,ghc-pandoc)))
1039 (synopsis "Ruby wrapper for Pandoc")
1040 (description "PandocRuby is a wrapper for Pandoc, a Haskell library with
1041command line tools for converting one markup format to another. Pandoc can
1042convert documents from a variety of formats including markdown,
1043reStructuredText, textile, HTML, DocBook, LaTeX, and MediaWiki markup to a
1044variety of other formats, including markdown, reStructuredText, HTML, LaTeX,
1045ConTeXt, PDF, RTF, DocBook XML, OpenDocument XML, ODT, GNU Texinfo, MediaWiki
1046markup, groff man pages, HTML slide shows, EPUB, Microsoft Word docx, and
1047more.")
1048 (home-page "https://github.com/xwmx/pandoc-ruby")
1049 (license license:expat)))
1050
fef0564c
MC
1051(define-public ruby-slim
1052 (package
1053 (name "ruby-slim")
1054 (version "4.1.0")
1055 (source
1056 (origin
1057 (method url-fetch)
1058 (uri (rubygems-uri "slim" version))
1059 (sha256
1060 (base32
1061 "0gjx30g84c82qzg32bd7giscvb4206v7mvg56kc839w9wjagn36n"))))
1062 (build-system ruby-build-system)
1063 (arguments
1064 `(#:phases
1065 (modify-phases %standard-phases
1066 ;; See: https://github.com/slim-template/slim/issues/857 and
1067 ;; https://github.com/slim-template/slim/issues/858.
1068 (add-after 'unpack 'skip-broken-tests
1069 (lambda _
1070 (substitute* "test/core/test_embedded_engines.rb"
1071 (("def test_render_with_markdown")
1072 "def skipped_test_render_with_markdown"))
1073 (substitute* "test/translator/test_translator.rb"
1074 (("raise (\"Missing test for.*)" _ tail)
1075 (string-append "print " tail)))
1076 #t))
1077 ;; See: https://salsa.debian.org/ruby-team/ruby-slim/-/commit/
1078 ;; 824862bd99d1675bc699d8fc71ba965a785c1f44.
1079 (add-after 'unpack 'prevent-bundler-interference
1080 (lambda _
1081 (substitute* "Rakefile"
1082 (("require 'bundler/setup'") "nil")
1083 (("Bundler::GemHelper\\.install_tasks") "nil"))
1084 #t)))))
1085 (native-inputs
1086 `(("ruby-rack-test" ,ruby-rack-test)
1087 ("ruby-sinatra" ,ruby-sinatra)))
1088 (propagated-inputs
1089 `(("ruby-temple" ,ruby-temple)
1090 ("ruby-tilt" ,ruby-tilt)))
1091 (synopsis "Minimalist template language for Ruby")
1092 (description "Slim is a template language for Ruby that aims to reduce the
1093syntax to the minimum while remaining clear.")
1094 (home-page "http://slim-lang.com/")
1095 (license license:expat)))
1096
34138e42
BW
1097(define-public ruby-asciidoctor
1098 (package
751bf33d 1099 (name "ruby-asciidoctor")
5df1126c 1100 (version "2.0.10")
751bf33d
MC
1101 (source
1102 (origin
5df1126c
MC
1103 (method git-fetch) ;the gem release lacks a Rakefile
1104 (uri (git-reference
1105 (url "https://github.com/asciidoctor/asciidoctor.git")
1106 (commit (string-append "v" version))))
1107 (file-name (git-file-name name version))
751bf33d 1108 (sha256
34138e42 1109 (base32
5df1126c 1110 "0jaxpnsdnx3qyjw5p2lsx1swny12q1i2vxw2kgdp4vlsyjv95z95"))))
751bf33d
MC
1111 (build-system ruby-build-system)
1112 (arguments
1113 `(#:test-target "test:all"
1114 #:phases
1115 (modify-phases %standard-phases
5df1126c 1116 (replace 'replace-git-ls-files
751bf33d 1117 (lambda _
5df1126c
MC
1118 ;; TODO: Remove after the fix of using 'cut' to better mimic the
1119 ;; git ls-files output is merged in ruby-build-system.
1120 (substitute* "asciidoctor.gemspec"
1121 (("`git ls-files -z`")
1122 "`find . -type f -print0 |sort -z|cut -zc3-`"))
1123 #t))
1124 (add-after 'extract-gemspec 'strip-version-requirements
1125 (lambda _
1126 (delete-file "Gemfile")
1127 (substitute* "asciidoctor.gemspec"
1128 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
1129 (string-append stripped "\n")))
751bf33d
MC
1130 #t)))))
1131 (native-inputs
5df1126c
MC
1132 `(("ruby-erubis" ,ruby-erubis)
1133 ("ruby-minitest" ,ruby-minitest)
751bf33d
MC
1134 ("ruby-nokogiri" ,ruby-nokogiri)
1135 ("ruby-asciimath" ,ruby-asciimath)
5df1126c
MC
1136 ("ruby-coderay" ,ruby-coderay)
1137 ("ruby-cucumber" ,ruby-cucumber)
1138 ("ruby-haml" ,ruby-haml)
1139 ("ruby-rouge" ,ruby-rouge)
1140 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
1141 ("ruby-simplecov" ,ruby-simplecov)
1142 ("ruby-slim" ,ruby-slim)
1143 ("ruby-tilt" ,ruby-tilt)))
751bf33d
MC
1144 (synopsis "Converter from AsciiDoc content to other formats")
1145 (description "Asciidoctor is a text processor and publishing toolchain for
1146converting AsciiDoc content to HTML5, DocBook 5 (or 4.5), PDF, and other
1147formats.")
1148 (home-page "https://asciidoctor.org")
1149 (license license:expat)))
34138e42 1150
d5840f77
CB
1151(define-public ruby-ast
1152 (package
1153 (name "ruby-ast")
1154 (version "2.4.0")
1155 (source
1156 (origin
1157 (method url-fetch)
1158 (uri (rubygems-uri "ast" version))
1159 (sha256
1160 (base32
1161 "184ssy3w93nkajlz2c70ifm79jp3j737294kbc5fjw69v1w0n9x7"))))
1162 (build-system ruby-build-system)
1163 (arguments
1164 '(#:phases
1165 (modify-phases %standard-phases
1166 (add-after 'unpack 'remove-coveralls-requirement
1167 (lambda _
1168 (substitute* "test/helper.rb"
1169 (("require 'coveralls'") "")
1170 (("Coveralls::SimpleCov::Formatter") ""))
1171 #t))
1172 (add-after 'extract-gemspec 'remove-unnecessary-requirements
1173 (lambda _
1174 (substitute* "ast.gemspec"
1175 ((".*coveralls.*") "\n")
1176 (("%q<rest-client>.*") "%q<rest-client>.freeze, [\">= 0\"])\n")
1177 (("%q<mime-types>.*") "%q<mime-types>.freeze, [\">= 0\"])\n")
1178 (("%q<rake>.*") "%q<rake>.freeze, [\">= 0\"])\n"))
1179 #t)))))
1180 (native-inputs
1181 `(("bundler" ,bundler)
1182 ("ruby-simplecov" ,ruby-simplecov)
1183 ("ruby-json-pure" ,ruby-json-pure)
1184 ("ruby-mime-times" ,ruby-mime-types)
1185 ("ruby-yard" ,ruby-yard)
1186 ("ruby-kramdown" ,ruby-kramdown)
1187 ("ruby-rest-client" ,ruby-rest-client)
1188 ("ruby-bacon" ,ruby-bacon)
1189 ("ruby-bacon-colored-output" ,ruby-bacon-colored-output)
1190 ("ruby-racc" ,ruby-racc)))
1191 (synopsis "Library for working with Abstract Syntax Trees")
1192 (description
1193 "@code{ast} is a Ruby library for working with Abstract Syntax Trees.
1194It does this through immutable data structures.")
1195 (home-page "https://whitequark.github.io/ast/")
1196 (license license:expat)))
1197
b88502c9
BW
1198(define-public ruby-sporkmonger-rack-mount
1199 ;; Testing the addressable gem requires a newer commit than that released, so
1200 ;; use an up to date version.
1201 (let ((revision "1")
1202 (commit "076aa2c47d9a4c081f1e9bcb56a826a9e72bd5c3"))
1203 (package
1204 (name "ruby-sporkmonger-rack-mount")
1205 (version (git-version "0.8.3" revision commit))
1206 (source (origin
1207 (method git-fetch)
1208 (uri (git-reference
1209 (url "https://github.com/sporkmonger/rack-mount.git")
1210 (commit commit)))
1211 (file-name (git-file-name name version))
1212 (sha256
1213 (base32
1214 "1scx273g3xd93424x9lxc4zyvcp2niknbw5mkz6wkivpf7xsyxdq"))))
1215 (build-system ruby-build-system)
1216 (arguments
1217 ;; Tests currently fail so disable them.
1218 ;; https://github.com/sporkmonger/rack-mount/pull/1
1219 `(#:tests? #f))
1220 (propagated-inputs `(("ruby-rack" ,ruby-rack)))
1221 (synopsis "Stackable dynamic tree based Rack router")
1222 (description
1223 "@code{Rack::Mount} supports Rack's @code{X-Cascade} convention to
1224continue trying routes if the response returns pass. This allows multiple
1225routes to be nested or stacked on top of each other.")
1226 (home-page "https://github.com/sporkmonger/rack-mount")
1227 (license license:expat))))
1228
2f9e0b68
RW
1229(define-public ruby-ci-reporter
1230 (package
1231 (name "ruby-ci-reporter")
1232 (version "2.0.0")
1233 (source (origin
1234 (method url-fetch)
1235 (uri (rubygems-uri "ci_reporter" version))
1236 (sha256
1237 (base32
1238 "17fm20jmw3ajdryhkkxpjahcfx7bgswqzxrskivlkns2718ayyyg"))))
1239 (build-system ruby-build-system)
1240 (arguments
1241 `(#:test-target "rspec"))
1242 (propagated-inputs
1243 `(("ruby-builder" ,ruby-builder)))
1244 (native-inputs
1245 `(("bundler" ,bundler)
1246 ("ruby-rspec" ,ruby-rspec)))
1247 (synopsis "Generate XML reports of runs test")
1248 (description
1249 "@code{CI::Reporter} is an add-on to Ruby testing frameworks that allows
1250you to generate XML reports of your test runs. The resulting files can be
1251read by a continuous integration system that understands Ant's JUnit report
1252format.")
1253 (home-page "https://github.com/nicksieger/ci_reporter")
1254 (license license:expat)))
1255
2ed201c1
CB
1256(define-public ruby-contracts
1257 (package
1258 (name "ruby-contracts")
1259 (version "0.16.0")
1260 (source
1261 (origin
1262 (method url-fetch)
1263 (uri (rubygems-uri "contracts" version))
1264 (sha256
1265 (base32
1266 "119f5p1n6r5svbx8h09za6a4vrsnj5i1pzr9cqdn9hj3wrxvyl3a"))))
1267 (build-system ruby-build-system)
1268 (arguments
1269 '(#:test-target "spec"
1270 #:phases
1271 (modify-phases %standard-phases
1272 ;; Don't run or require rubocop, the code linting tool, as this is a
1273 ;; bit unnecessary.
1274 (add-after 'unpack 'dont-run-rubocop
1275 (lambda _
1276 (substitute* "Rakefile"
1277 ((".*rubocop.*") "")
1278 ((".*RuboCop.*") ""))
1279 #t)))))
1280 (native-inputs
1281 `(("ruby-rspec" ,ruby-rspec)))
1282 (synopsis "Method contracts for Ruby")
1283 (description
1284 "This library provides contracts for Ruby. A contract describes the
1285correct inputs and output for a method, and will raise an error if a incorrect
1286value is found.")
1287 (home-page "https://github.com/egonSchiele/contracts.ruby")
1288 (license license:bsd-2)))
1289
6f8bf0eb
CB
1290(define-public ruby-crack
1291 (package
1292 (name "ruby-crack")
1293 (version "0.4.3")
1294 (source
1295 (origin
1296 (method url-fetch)
1297 (uri (rubygems-uri "crack" version))
1298 (sha256
1299 (base32
1300 "0abb0fvgw00akyik1zxnq7yv391va148151qxdghnzngv66bl62k"))))
1301 (build-system ruby-build-system)
1302 (arguments
1303 `(#:phases
1304 (modify-phases %standard-phases
1305 (replace 'check
1306 (lambda* (#:key tests? #:allow-other-keys)
1307 (when tests?
1308 (for-each (lambda (file)
1309 (display file)(display "\n")
1310 (invoke "ruby" "-Ilib" "-Itest" "-rrubygems" file))
1311 (find-files "test" ".*rb$")))
1312 #t)))))
1313 (propagated-inputs
1314 `(("ruby-safe-yaml" ,ruby-safe-yaml)))
1315 (synopsis "Simple JSON and XML parsing for Ruby")
1316 (description
1317 "@code{crack} provides really simple JSON and XML parsing, extracted from
1318code in Merb and Rails.")
1319 (home-page "https://github.com/jnunemaker/crack")
1320 (license license:expat)))
1321
bef3506e
CB
1322(define-public ruby-cliver
1323 (package
1324 (name "ruby-cliver")
1325 (version "0.3.2")
1326 (source
1327 (origin
1328 (method url-fetch)
1329 (uri (rubygems-uri "cliver" version))
1330 (sha256
1331 (base32
1332 "096f4rj7virwvqxhkavy0v55rax10r4jqf8cymbvn4n631948xc7"))))
1333 (build-system ruby-build-system)
1334 (arguments
1335 '(#:phases
1336 (modify-phases %standard-phases
1337 ;; Avoid a incompatibility between rspec@2 and rake. Using rspec@3
1338 ;; would be nice, but the tests look to be incompatible:
1339 ;;
1340 ;; NoMethodError: undefined method `last_comment'
1341 (replace 'check
1342 (lambda* (#:key tests? #:allow-other-keys)
1343 (when tests?
1344 (invoke "rspec"))
1345 #t)))))
1346 (native-inputs
1347 `(("bundler" ,bundler)
1348 ("ruby-rspec" ,ruby-rspec-2)))
1349 (synopsis "Assertions for command-line dependencies in Ruby")
1350 (description
1351 "@code{cliver} provides a way to detect missing command-line
1352dependencies, including versions.")
1353 (home-page "https://github.com/yaauie/cliver")
1354 (license license:expat)))
1355
fe5dd5f4
CB
1356(define-public ruby-czmq-ffi-gen
1357 (package
1358 (name "ruby-czmq-ffi-gen")
1359 (version "0.13.0")
1360 (source
1361 (origin
1362 (method url-fetch)
1363 (uri (rubygems-uri "czmq-ffi-gen" version))
1364 (sha256
1365 (base32
1366 "1yf719dmf4mwks1hqdsy6i5kzfvlsha69sfnhb2fr2cgk2snbys3"))))
1367 (build-system ruby-build-system)
1368 (arguments
1369 '(#:tests? #f ;; Tests are not included in the release on rubygems.org
1370 #:phases
1371 (modify-phases %standard-phases
1372 (add-after 'unpack 'patch-lib_dirs
1373 (lambda* (#:key inputs #:allow-other-keys)
1374 (substitute* "lib/czmq-ffi-gen/czmq/ffi.rb"
1375 (("lib\\_dirs = \\[.*\\]")
1376 (string-append "lib_dirs = ['"
1377 (assoc-ref inputs "czmq") "/lib"
1378 "']")))
1379 (substitute* "lib/czmq-ffi-gen/libzmq.rb"
1380 (("lib\\_dirs = \\[.*\\]")
1381 (string-append "lib_dirs = ['"
1382 (assoc-ref inputs "zeromq") "/lib"
1383 "']"))))))))
1384 (inputs
1385 `(("zeromq" ,zeromq)
1386 ("czmq" ,czmq)))
1387 (propagated-inputs `(("ruby-ffi" ,ruby-ffi)))
1388 (synopsis "Low-level Ruby bindings for CZMQ (generated using zproject)")
1389 (description
1390 "These Ruby bindings are not intended to be directly used, but rather
1391used by higher level bindings like those provided by CZTop.")
1392 (home-page
1393 "https://github.com/paddor/czmq-ffi-gen")
1394 (license license:isc)))
1395
d0afff26
CB
1396(define-public ruby-cztop
1397 (package
1398 (name "ruby-cztop")
1399 (version "0.12.2")
1400 (source
1401 (origin
1402 (method url-fetch)
1403 (uri (rubygems-uri "cztop" version))
1404 (sha256
1405 (base32
1406 "0yqbpaiw5d7f271d73lyrsh8xpx6n4zi6xqwfgi00dacxrq3s3fa"))))
1407 (build-system ruby-build-system)
1408 (arguments
1409 '(#:test-target "spec"
1410 #:phases
1411 (modify-phases %standard-phases
1412 (add-after 'unpack 'patch-lib_paths
1413 (lambda* (#:key inputs #:allow-other-keys)
1414 (substitute* "lib/cztop/poller/zmq.rb"
1415 (("lib\\_paths = \\[.*\\]")
1416 (string-append "lib_paths = ['"
1417 (assoc-ref inputs "zeromq") "/lib"
1418 "']"))))))))
1419 (native-inputs
1420 `(("bundler" ,bundler)
1421 ("ruby-rspec" ,ruby-rspec)))
1422 (inputs
1423 `(("zeromq" ,zeromq)))
1424 (propagated-inputs
1425 `(("ruby-czmq-ffi-gen" ,ruby-czmq-ffi-gen)))
1426 (synopsis "CZMQ Ruby bindings")
1427 (description
1428 "CZMQ Ruby bindings, based on the generated low-level FFI bindings of
1429CZMQ. The focus of of CZTop is on being easy to use and providing first class
1430support for security mechanisms.")
1431 (home-page "https://github.com/paddor/cztop")
1432 (license license:isc)))
1433
b004fb6a
RW
1434(define-public ruby-saikuro-treemap
1435 (package
1436 (name "ruby-saikuro-treemap")
1437 (version "0.2.0")
1438 (source (origin
1439 (method url-fetch)
1440 (uri (rubygems-uri "saikuro_treemap" version))
1441 (sha256
1442 (base32
1443 "0w70nmh43mwfbpq20iindl61siqqr8acmf7p3m7n5ipd61c24950"))))
1444 (build-system ruby-build-system)
1445 ;; Some of the tests fail because the generated JSON has keys in a
1446 ;; different order. This is a problem with the test suite rather than any
1447 ;; of the involved libraries.
1448 (arguments `(#:tests? #f))
1449 (propagated-inputs
1450 `(("ruby-json-pure" ,ruby-json-pure)
1451 ("ruby-atoulme-saikuro" ,ruby-atoulme-saikuro)))
1452 (synopsis "Generate complexity treemap based on saikuro analysis")
1453 (description
1454 "This gem generates a treemap showing the complexity of Ruby code on
1455which it is run. It uses Saikuro under the covers to analyze Ruby code
1456complexity.")
7bf837fd 1457 (home-page "https://github.com/ThoughtWorksStudios/saikuro_treemap")
b004fb6a
RW
1458 (license license:expat)))
1459
92b37500
CB
1460(define-public ruby-oauth2
1461 (package
1462 (name "ruby-oauth2")
5dd10be5 1463 (version "1.4.2")
92b37500
CB
1464 (source
1465 (origin
1466 (method url-fetch)
1467 (uri (rubygems-uri "oauth2" version))
1468 (sha256
5dd10be5 1469 (base32 "15i9z4j5pcjkr30lkcd79xzbr4kpmy0bqgwa436fqyqk646fv036"))))
92b37500
CB
1470 (build-system ruby-build-system)
1471 (arguments
5dd10be5 1472 '(#:tests? #f)) ; no included tests
92b37500
CB
1473 (propagated-inputs
1474 `(("ruby-faraday" ,ruby-faraday)
1475 ("ruby-jwt" ,ruby-jwt)
1476 ("ruby-multi-json" ,ruby-multi-json)
1477 ("ruby-multi-xml" ,ruby-multi-xml)
1478 ("ruby-rack" ,ruby-rack)))
1479 (synopsis "Ruby wrapper for the OAuth 2.0")
1480 (description
1481 "This package provides a Ruby wrapper for the OAuth 2.0 protocol built
1482with a similar style to the original OAuth spec.")
1483 (home-page "https://github.com/oauth-xx/oauth2")
1484 (license license:expat)))
1485
29dc4823
CB
1486(define-public ruby-omniauth
1487 (package
1488 (name "ruby-omniauth")
a7b7817d 1489 (version "1.9.1")
29dc4823
CB
1490 (source
1491 (origin
1492 (method url-fetch)
1493 (uri (rubygems-uri "omniauth" version))
1494 (sha256
a7b7817d 1495 (base32 "002vi9gwamkmhf0dsj2im1d47xw2n1jfhnzl18shxf3ampkqfmyz"))))
29dc4823
CB
1496 (build-system ruby-build-system)
1497 (arguments
1498 '(#:tests? #f)) ; No included tests
1499 (propagated-inputs
1500 `(("ruby-hashie" ,ruby-hashie)
1501 ("ruby-rack" ,ruby-rack)))
1502 (synopsis "Generalized Rack framework for multiple-provider authentication")
1503 (description
1504 "This package provides a generalized Rack framework for multiple-provider
1505authentication.")
1506 (home-page "https://github.com/omniauth/omniauth")
1507 (license license:expat)))
1508
d6084cdb
CB
1509(define-public ruby-omniauth-oauth2
1510 (package
1511 (name "ruby-omniauth-oauth2")
1512 (version "1.6.0")
1513 (source
1514 (origin
1515 (method url-fetch)
1516 (uri (rubygems-uri "omniauth-oauth2" version))
1517 (sha256
1518 (base32
1519 "11mi36l9d97r77q99jnafdc1yaa0a9wahhpp7dj7ank8q52g7g79"))))
1520 (build-system ruby-build-system)
1521 (arguments
1522 '(#:phases
1523 (modify-phases %standard-phases
1524 (add-after 'unpack 'remove-unnecessary-dependencies
1525 (lambda _
1526 ;; The coveralls gem submits coverage information to an online
1527 ;; service, and is unnecessary when running the tests
1528 (substitute* "Gemfile"
1529 ((".*coveralls\"") ""))
1530 (substitute* "spec/helper.rb"
1531 (("require \"coveralls\"") "")
1532 (("Coveralls::SimpleCov::Formatter") ""))
1533 #t)))))
1534 (propagated-inputs
1535 `(("ruby-oauth2" ,ruby-oauth2)
1536 ("ruby-omniauth" ,ruby-omniauth)))
1537 (native-inputs
1538 `(("bundler" ,bundler)
1539 ("ruby-rspec" ,ruby-rspec)
1540 ("ruby-simplecov" ,ruby-simplecov)
1541 ("ruby-rack-test" ,ruby-rack-test)
1542 ("ruby-webmock" ,ruby-webmock-2)))
1543 (synopsis "Abstract OAuth2 strategy for OmniAuth")
1544 (description
1545 "This library provides a generic OAuth2 strategy for OmniAuth. It
1546doesn't provide a way to gather user information, so should be used as a
1547building block for authentication strategies.")
1548 (home-page "https://github.com/omniauth/omniauth-oauth2")
1549 (license license:expat)))
1550
433e3154
CB
1551(define-public ruby-open4
1552 (package
1553 (name "ruby-open4")
1554 (version "1.3.4")
1555 (source
1556 (origin
1557 (method url-fetch)
1558 (uri (rubygems-uri "open4" version))
1559 (sha256
1560 (base32
1561 "1cgls3f9dlrpil846q0w7h66vsc33jqn84nql4gcqkk221rh7px1"))))
1562 (build-system ruby-build-system)
1563 (arguments
1564 '(#:phases
1565 (modify-phases %standard-phases
1566 (add-after 'unpack 'patch
1567 (lambda _
1568 (substitute* "rakefile"
1569 ;; Update the Rakefile so it works
1570 (("-rubygems") "-rrubygems")
1571 (("Config") "RbConfig"))
1572 #t))
1573 (add-before 'check 'set-LIB
1574 (lambda _
1575 ;; This is used in the rakefile when running the tests
1576 (setenv "LIB" "open4")
1577 #t)))))
1578 (synopsis "Open child processes from Ruby and manage them easily")
1579 (description
1580 "@code{Open4} is a Ruby library to run child processes and manage their
1581input and output.")
1582 (home-page "https://github.com/ahoward/open4")
1583 (license license:ruby)))
1584
cef87ed6
CB
1585(define-public ruby-options
1586 (package
1587 (name "ruby-options")
1588 (version "2.3.2")
1589 (source
1590 (origin
1591 (method url-fetch)
1592 (uri (rubygems-uri "options" version))
1593 (sha256
1594 (base32
1595 "1s650nwnabx66w584m1cyw82icyym6hv5kzfsbp38cinkr5klh9j"))))
1596 (build-system ruby-build-system)
1597 (arguments
1598 '(#:tests? #f ;; TODO: NameError: uninitialized constant Config
1599 #:phases
1600 (modify-phases %standard-phases
1601 (add-before 'check 'set-LIB
1602 (lambda _
1603 ;; This is used in the Rakefile, and setting it avoids an issue
1604 ;; with running the tests.
fe27238c
CB
1605 (setenv "LIB" "options")
1606 #t)))))
cef87ed6
CB
1607 (synopsis "Ruby library to parse options from *args cleanly")
1608 (description
1609 "The @code{options} library helps with parsing keyword options in Ruby
1610functions.")
1611 (home-page "https://github.com/ahoward/options")
1612 (license license:ruby)))
1613
d15dbe83
CB
1614(define-public ruby-erubi
1615 (package
1616 (name "ruby-erubi")
1617 (version "1.8.0")
1618 (source
1619 (origin
1620 (method url-fetch)
1621 (uri (rubygems-uri "erubi" version))
1622 (sha256
1623 (base32
1624 "1kagnf6ziahj0d781s6ryy6fwqwa3ad4xbzzj84p9m4nv4c2jir1"))))
1625 (build-system ruby-build-system)
1626 (synopsis "ERB template engine for Ruby")
1627 (description
1628 "Erubi is a ERB template engine for Ruby. It is a simplified fork of
1629Erubis")
1630 (home-page "https://github.com/jeremyevans/erubi")
1631 (license license:expat)))
1632
d64ebebd
BW
1633(define-public ruby-erubis
1634 (package
1635 (name "ruby-erubis")
1636 (version "2.7.0")
1637 (source
1638 (origin
1639 (method url-fetch)
1640 (uri (rubygems-uri "erubis" version))
1641 (sha256
1642 (base32
1643 "1fj827xqjs91yqsydf0zmfyw9p4l2jz5yikg3mppz6d7fi8kyrb3"))))
1644 (build-system ruby-build-system)
1645 (arguments
1646 '(#:tests? #f)) ; tests do not run properly with Ruby 2.0
1647 (synopsis "Implementation of embedded Ruby (eRuby)")
1648 (description
1649 "Erubis is a fast implementation of embedded Ruby (eRuby) with several
1650features such as multi-language support, auto escaping, auto trimming spaces
1651around @code{<% %>}, a changeable embedded pattern, and Ruby on Rails
1652support.")
1653 (home-page "http://www.kuwata-lab.com/erubis/")
1654 (license license:expat)))
1655
3ca43524
CB
1656(define-public ruby-execjs
1657 (package
1658 (name "ruby-execjs")
1659 (version "2.7.0")
1660 (source
1661 (origin
1662 ;; fetch from github as the gem does not contain testing code
1663 (method git-fetch)
1664 (uri (git-reference
1665 (url "https://github.com/rails/execjs.git")
1666 (commit (string-append "v" version))))
1667 (file-name (git-file-name name version))
1668 (sha256
1669 (base32
1670 "0c0vd2mmqq3ar4plbwi2wsbr31vn4h45i19r5km66skydnnbp1y6"))))
1671 (build-system ruby-build-system)
1672 (native-inputs
1673 `(("bundler" ,bundler)
1674 ;; The test suite tests all the available backends. Currenly, this just
1675 ;; means the node backend.
1676 ;;
1677 ;; PASSED: test:node
1678 ;; SKIPPED: test:duktape, ;; test:javascriptcore, test:jscript,
1679 ;; test:miniracer, test:rubyracer, ;; test:rubyrhino, test:v8
1680 ("node" ,node)))
1681 (synopsis "Run JavaScript code from Ruby")
1682 (description
1683 "ExecJS lets you run JavaScript code from Ruby. It automatically picks a
1684runtime to evaluate your JavaScript program, then returns the result to you as
1685a Ruby object.")
1686 (home-page "https://github.com/rails/execjs")
1687 (license license:expat)))
1688
6623a151
MB
1689(define-public ruby-fakefs
1690 (package
1691 (name "ruby-fakefs")
1692 (version "1.2.2")
1693 (home-page "https://github.com/fakefs/fakefs")
1694 (source (origin
1695 ;; The Rubygems release does not contain tests.
1696 (method git-fetch)
1697 (uri (git-reference
1698 (url home-page)
1699 (commit (string-append "v" version))))
1700 (file-name (git-file-name name version))
1701 (sha256
1702 (base32
1703 "008dq9knyip2bfbl0mrk8b8r7bv0k3bf128wcfqsgy1rqal4mgwk"))))
1704 (build-system ruby-build-system)
1705 (arguments
1706 '(#:phases (modify-phases %standard-phases
1707 (replace 'replace-git-ls-files
1708 (lambda _
1709 (substitute* "fakefs.gemspec"
1710 (("`git ls-files lib README.md LICENSE`")
1711 "`find lib README.md LICENSE -type f | sort`"))
1712 #t))
1713 (add-before 'check 'remove-version-constraints
1714 (lambda _
1715 ;; Drop hard version requirements for test dependencies.
1716 (substitute* "fakefs.gemspec"
1717 (("(.*add_development_dependency .*), .*" _ dep)
1718 (string-append dep "\n")))
a011f67b 1719 #t)))))
6623a151
MB
1720 (native-inputs
1721 `(("ruby-bump" ,ruby-bump)
1722 ("ruby-maxitest" ,ruby-maxitest)
1723 ("ruby-rubocop" ,ruby-rubocop)
1724 ("ruby-rspec" ,ruby-rspec)))
1725 (synopsis "Fake file system for Ruby")
1726 (description
1727 "This package provides a fake file system for use in test suites. It
1728avoids the need for manually creating temporary directories, or dealing
1729with platform intricacies in @code{File} and @code{FileUtils}.")
1730 (license license:expat)))
1731
cc53e630
RW
1732(define-public ruby-orderedhash
1733 (package
1734 (name "ruby-orderedhash")
1735 (version "0.0.6")
1736 (source (origin
1737 (method url-fetch)
1738 (uri (rubygems-uri "orderedhash" version))
1739 (sha256
1740 (base32
1741 "0fryy7f9jbpx33jq5m402yqj01zcg563k9fsxlqbhmq638p4bzd7"))))
1742 (build-system ruby-build-system)
1743 (arguments
1744 '(#:tests? #f)) ; no test suite
1745 (synopsis "Ruby library providing an order-preserving hash")
1746 (description "Orderedhash is a Ruby library providing a hash
1747implementation that preserves the order of items and features some array-like
1748extensions.")
1749 (home-page "http://codeforpeople.com/lib/ruby/orderedhash/")
1750 (license license:public-domain)))
1751
28c5d42d
PP
1752(define-public ruby-libxml
1753 (package
1754 (name "ruby-libxml")
acbc5062 1755 (version "3.0.0")
28c5d42d
PP
1756 (source
1757 (origin
1758 (method url-fetch)
1759 (uri (rubygems-uri "libxml-ruby" version))
1760 (sha256
1761 (base32
acbc5062 1762 "0xy8wmjwjcnv36zi042678ncjzpxvy351ccbv7mzkns2n3kxfp54"))))
28c5d42d
PP
1763 (build-system ruby-build-system)
1764 (inputs
1765 `(("zlib" ,zlib)
1766 ("libxml2" ,libxml2)))
1767 (arguments
1768 '(#:tests? #f ; test suite hangs for unknown reason
1769 #:gem-flags
1770 (list "--"
1771 (string-append "--with-xml2-include="
1772 (assoc-ref %build-inputs "libxml2")
1773 "/include/libxml2" ))))
1774 (synopsis "Ruby bindings for GNOME Libxml2")
1775 (description "The Libxml-Ruby project provides Ruby language bindings for
1776the GNOME Libxml2 XML toolkit.")
2f3800e5 1777 (home-page "https://xml4r.github.com/libxml-ruby")
28c5d42d
PP
1778 (license license:expat)))
1779
b3222518
CB
1780(define-public ruby-lino
1781 (package
1782 (name "ruby-lino")
1783 (version "1.1.0")
1784 (source
1785 (origin
1786 (method url-fetch)
1787 (uri (rubygems-uri "lino" version))
1788 (sha256
1789 (base32
1790 "11d29g0fk372b9fcpyr0k6hxm2b4j4igpysmi542hgbbgqgp9cd3"))))
1791 (build-system ruby-build-system)
1792 (arguments
1793 '(#:tests? #f)) ; No included tests
1794 (propagated-inputs
1795 `(("ruby-hamster" ,ruby-hamster)
1796 ("ruby-open4" ,ruby-open4)))
1797 (synopsis "Build and execute commands in Ruby")
1798 (description
1799 "@code{Lino} provides an interface to run external commands. It provides
1800an interface to add options as well as managing the standard input, output and
1801error streams.")
1802 (home-page "https://github.com/tobyclemson/lino")
1803 (license license:expat)))
1804
8b9bde07
RW
1805(define-public ruby-xml-simple
1806 (package
1807 (name "ruby-xml-simple")
1808 (version "1.1.5")
1809 (source (origin
1810 (method url-fetch)
1811 (uri (rubygems-uri "xml-simple" version))
1812 (sha256
1813 (base32
1814 "0xlqplda3fix5pcykzsyzwgnbamb3qrqkgbrhhfz2a2fxhrkvhw8"))))
1815 (build-system ruby-build-system)
1816 (arguments
1817 '(#:tests? #f)) ; no test suite
1818 (synopsis "Simple Ruby library for XML processing")
1819 (description "This library provides a simple API for XML processing in
1820Ruby.")
1821 (home-page "https://github.com/maik/xml-simple")
1822 (license license:ruby)))
1823
2cb3ab48
RW
1824(define-public ruby-thor
1825 (package
1826 (name "ruby-thor")
bb719d6a 1827 (version "1.0.1")
2cb3ab48 1828 (source (origin
bb719d6a
MB
1829 ;; Pull from git because the gem has no tests.
1830 (method git-fetch)
1831 (uri (git-reference
1832 (url "https://github.com/erikhuda/thor")
1833 (commit (string-append "v" version))))
1834 (file-name (git-file-name name version))
2cb3ab48
RW
1835 (sha256
1836 (base32
bb719d6a 1837 "1anrx5vynk57hn5c8ig5pgkmcsbj9q5mvckd5rviw1jid7n89k57"))))
2cb3ab48
RW
1838 (build-system ruby-build-system)
1839 (arguments
bb719d6a
MB
1840 '(#:phases (modify-phases %standard-phases
1841 (add-after 'unpack 'fix-readline-tests
1842 (lambda _
1843 ;; Ensure Readline is initialized before running the
1844 ;; test to avoid a type clash with the mock ::Readline.
1845 ;; See <https://github.com/erikhuda/thor/pull/717>.
1846 (substitute* "spec/line_editor/readline_spec.rb"
1847 (("unless defined\\? ::Readline" all)
1848 (string-append "Thor::LineEditor::Readline.available?\n"
1849 all)))
1850 #t))
1851 (add-after 'unpack 'remove-coveralls-dependency
1852 (lambda _
1853 ;; Do not hook the test suite into the online
1854 ;; coveralls service.
1855 (substitute* "Gemfile"
1856 ((".*coveralls.*") ""))
1857 (substitute* "spec/helper.rb"
1858 (("require \"coveralls\"") "")
1859 (("Coveralls::SimpleCov::Formatter") "")
1860 ;; Also drop the WebMock dependency which is only
1861 ;; present to allow a coveralls.io connection, and
1862 ;; would otherwise introduce a circular dependency.
1863 (("require \"webmock/rspec\"") "")
1864 (("WebMock\\.disable_net_connect.*") ""))
1865 #t))
1866 (add-after 'unpack 'disable-network-tests
1867 (lambda _
1868 ;; These tests attempt to look up example.com.
1869 (substitute* "spec/actions/file_manipulation_spec.rb"
1870 (("it \"accepts (https?) remote sources" _ proto)
1871 (string-append "xit \"accepts " proto " remote sources")))
1872 #t))
1873 (add-after 'unpack 'disable-quality-tests
1874 (lambda _
1875 ;; These tests attempt to check the git repository for
1876 ;; tabs vs spaces, double vs single quotes, etc, and
1877 ;; depend on the git checkout.
1878 (delete-file "spec/quality_spec.rb")
1879 #t))
1880 (add-before 'check 'make-files-writable
1881 (lambda _
1882 ;; The tests needs rw access to the test suite.
1883 (for-each make-file-writable (find-files "spec"))
1884 #t))
1885 (replace 'check
1886 (lambda _
1887 (invoke "rspec" "spec"))))))
2cb3ab48 1888 (native-inputs
bb719d6a
MB
1889 `(("ruby-rspec" ,ruby-rspec)
1890 ("ruby-simplecov" ,ruby-simplecov)))
2cb3ab48
RW
1891 (synopsis "Ruby toolkit for building command-line interfaces")
1892 (description "Thor is a toolkit for building powerful command-line
1893interfaces.")
1894 (home-page "http://whatisthor.com/")
1895 (license license:expat)))
1896
ec79018e
RW
1897(define-public ruby-lumberjack
1898 (package
1899 (name "ruby-lumberjack")
41700efa 1900 (version "1.0.13")
ec79018e
RW
1901 (source (origin
1902 (method url-fetch)
1903 (uri (rubygems-uri "lumberjack" version))
1904 (sha256
1905 (base32
41700efa 1906 "06im7gcg42x77yhz2w5da2ly9xz0n0c36y5ks7xs53v0l9g0vf5n"))))
ec79018e
RW
1907 (build-system ruby-build-system)
1908 (native-inputs
8be62d3f
BW
1909 `(("ruby-rspec" ,ruby-rspec)
1910 ("ruby-timecop" ,ruby-timecop)))
ec79018e
RW
1911 (synopsis "Logging utility library for Ruby")
1912 (description "Lumberjack is a simple logging utility that can be a drop in
1913replacement for Logger or ActiveSupport::BufferedLogger. It provides support
1914for automatically rolling log files even with multiple processes writing the
1915same log file.")
7bf837fd 1916 (home-page "https://github.com/bdurand/lumberjack")
ec79018e
RW
1917 (license license:expat)))
1918
2a9ce5cb
CB
1919(define-public ruby-rbnacl
1920 (package
1921 (name "ruby-rbnacl")
1922 (version "6.0.1")
1923 (source
1924 (origin
1925 (method url-fetch)
1926 (uri (rubygems-uri "rbnacl" version))
1927 (sha256
1928 (base32
1929 "0ajxy5kj2jw09wdsla3jmha8w07vj5l14288xr9djpl327g3lzhn"))))
1930 (build-system ruby-build-system)
1931 (arguments
1932 `(#:phases
1933 (modify-phases %standard-phases
1934 (add-after 'unpack 'remove-unnecessary-dependencies
1935 (lambda _
1936 ;; Coveralls relates to a network service, and Rubocop to code
1937 ;; linting and both are unnecessary to run the tests
1938 (substitute* "Gemfile"
1939 ((".*rubocop.*") "\n")
1940 ((".*guard-rspec.*") "\n")
1941 ((".*coveralls.*") "\n"))
1942 (substitute* "spec/spec_helper.rb"
1943 (("require \"coveralls\"") "")
1944 (("Coveralls.wear!") ""))
1945 #t))
1946 (add-after 'unpack 'use-libsodium-from-store
1947 (lambda* (#:key inputs #:allow-other-keys)
1948 (substitute* '("lib/rbnacl/init.rb"
1949 "lib/rbnacl/sodium.rb")
1950 (("ffi_lib \\[.+\\]")
1951 (string-append "ffi_lib [\""
1952 (assoc-ref inputs "libsodium") "/lib/libsodium.so"
1953 "\"]")))
1954 #t))
1955 ;; Run Rspec directly to avoid the Rubocop dependency in the Rakefile
1956 (replace 'check
1957 (lambda* (#:key tests? #:allow-other-keys)
1958 (when tests?
1959 (invoke "rspec"))
1960 #t)))))
1961 (propagated-inputs
1962 `(("ruby-ffi" ,ruby-ffi)))
1963 (inputs
1964 `(("libsodium" ,libsodium)))
1965 (native-inputs
1966 `(("bundler" ,bundler)
1967 ("ruby-rspec" ,ruby-rspec)))
1968 (synopsis "Ruby FFI binding to libsodium")
1969 (description
1970 "This package provides Ruby FFI bindings to the Networking and
1971Cryptography (NaCl) library, also known as libsodium. This provides a
1972high-level toolkit for building cryptographic systems and protocols.")
1973 (home-page "https://github.com/crypto-rb/rbnacl")
1974 (license license:expat)))
1975
70b4cf38
RW
1976(define-public ruby-nenv
1977 (package
1978 (name "ruby-nenv")
12313cd0 1979 (version "0.3.0")
70b4cf38
RW
1980 (source (origin
1981 (method url-fetch)
1982 (uri (rubygems-uri "nenv" version))
1983 (sha256
1984 (base32
12313cd0 1985 "0r97jzknll9bhd8yyg2bngnnkj8rjhal667n7d32h8h7ny7nvpnr"))))
70b4cf38
RW
1986 (build-system ruby-build-system)
1987 (arguments
1988 `(#:tests? #f)) ; no tests included
1989 (native-inputs
1990 `(("ruby-rspec" ,ruby-rspec)
1991 ("bundler" ,bundler)))
1992 (synopsis "Ruby interface for modifying the environment")
1993 (description "Nenv provides a convenient wrapper for Ruby's ENV to modify
1994and inspect the environment.")
1995 (home-page "https://github.com/e2/nenv")
1996 (license license:expat)))
1997
af59d4b4
MB
1998(define-public ruby-ptools
1999 (package
2000 (name "ruby-ptools")
2001 (version "1.3.5")
2002 (source (origin
2003 (method url-fetch)
2004 (uri (rubygems-uri "ptools" version))
2005 (sha256
2006 (base32
2007 "1jb1h1nsk9zwykpniw8filbsk26kjsdlpk5wz6w0zyamcd41h87j"))))
2008 (build-system ruby-build-system)
2009 (arguments
2010 '(#:phases (modify-phases %standard-phases
2011 (add-after 'unpack 'patch-/bin/ls
2012 (lambda _
2013 (substitute* "test/test_binary.rb"
2014 (("/bin/ls")
2015 (which "ls")))
2016 #t))
2017 (add-before 'install 'create-gem
2018 (lambda _
2019 ;; Do not attempt to sign the gem.
2020 (substitute* "Rakefile"
2021 (("spec\\.signing_key = .*")
2022 ""))
2023 (invoke "rake" "gem:create"))))))
2024 (synopsis "Extra methods for Ruby's @code{File} class")
2025 (description
2026 "The @dfn{ptools} (power tools) library extends Ruby's core @code{File}
2027class with many additional methods modelled after common POSIX tools, such as
2028@code{File.which} for finding executables, @code{File.tail} to print the last
2029lines of a file, @code{File.wc} to count words, and so on.")
2030 (home-page "https://github.com/djberg96/ptools")
2031 (license license:artistic2.0)))
2032
8d9e9f28
RW
2033(define-public ruby-permutation
2034 (package
2035 (name "ruby-permutation")
2036 (version "0.1.8")
2037 (source (origin
2038 (method url-fetch)
2039 (uri (rubygems-uri "permutation" version))
2040 (sha256
2041 (base32
2042 "13crwk2vfbzv99czva7881027dbcnidihmvx2jc58z2vm3bp9sl8"))))
2043 (build-system ruby-build-system)
2044 (arguments
2045 `(#:phases
2046 (modify-phases %standard-phases
2047 (add-after 'unpack 'fix-rakefile
2048 (lambda _
2049 (substitute* "Rakefile"
2050 (("require 'rake/gempackagetask'")
2051 "require 'rubygems/package_task'")
2052 (("include Config") ""))
2053 #t))
2054 (replace 'check
2055 (lambda _
9923d5a4 2056 (invoke "ruby" "-Ilib" "test/test.rb"))))))
8d9e9f28
RW
2057 (synopsis "Library to perform operations with sequence permutations")
2058 (description "This package provides a Ruby library to perform different
2059operations with permutations of sequences, such as strings and arrays.")
2f3800e5 2060 (home-page "https://flori.github.io/permutation")
8d9e9f28
RW
2061 (license license:gpl2))) ; GPL 2 only
2062
c5d14d42
RW
2063(define-public ruby-shellany
2064 (package
2065 (name "ruby-shellany")
2066 (version "0.0.1")
2067 (source (origin
2068 (method url-fetch)
2069 (uri (rubygems-uri "shellany" version))
2070 (sha256
2071 (base32
2072 "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf"))))
2073 (build-system ruby-build-system)
2074 (arguments
2075 `(#:test-target "default"
2076 #:phases
2077 (modify-phases %standard-phases
2078 (add-after 'unpack 'fix-version-test
2079 (lambda _
2080 (substitute* "spec/shellany_spec.rb"
2081 (("^RSpec") "require \"shellany\"\nRSpec"))
2082 #t)))))
2083 (native-inputs
2084 `(("ruby-rspec" ,ruby-rspec)
2085 ("ruby-nenv" ,ruby-nenv)
2086 ("bundler" ,bundler)))
2087 (synopsis "Capture command output")
2088 (description "Shellany is a Ruby library providing functions to capture
2089the output produced by running shell commands.")
2090 (home-page "https://rubygems.org/gems/shellany")
2091 (license license:expat)))
2092
d152162f
RW
2093(define-public ruby-notiffany
2094 (package
2095 (name "ruby-notiffany")
8c1e4a4f 2096 (version "0.1.3")
d152162f
RW
2097 (source (origin
2098 (method url-fetch)
2099 (uri (rubygems-uri "notiffany" version))
2100 (sha256
2101 (base32
8c1e4a4f 2102 "0f47h3bmg1apr4x51szqfv3rh2vq58z3grh4w02cp3bzbdh6jxnk"))))
d152162f
RW
2103 (build-system ruby-build-system)
2104 ;; Tests are not included in the gem.
2105 (arguments `(#:tests? #f))
2106 (propagated-inputs
2107 `(("ruby-shellany" ,ruby-shellany)
2108 ("ruby-nenv" ,ruby-nenv)))
2109 (native-inputs
2110 `(("bundler" ,bundler)))
01eb17de
VC
2111 (synopsis "Wrapper library for notification libraries")
2112 (description "Notiffany is a Ruby wrapper library for notification
d152162f
RW
2113libraries such as Libnotify.")
2114 (home-page "https://github.com/guard/notiffany")
2115 (license license:expat)))
2116
96bf7521
MB
2117(define-public ruby-forking-test-runner
2118 (package
2119 (name "ruby-forking-test-runner")
2120 (version "1.6.0")
2121 (home-page "https://github.com/grosser/forking_test_runner")
2122 (source (origin
2123 (method git-fetch)
2124 (uri (git-reference (url home-page)
2125 (commit (string-append "v" version))))
2126 (file-name (git-file-name name version))
2127 (sha256
2128 (base32
2129 "1mrglzkj2nrgisccf2f30zbfmcs0awv1g3lw994b2az90fl39x8m"))))
2130 (build-system ruby-build-system)
2131 (arguments
2132 '(#:test-target "spec"
2133 ;; FIXME: ActiveRecord depends on sqlite3 1.3.6, but Guix has
2134 ;; 1.4.1, which in turn breaks the tests that use ActiveRecord.
2135 #:tests? #f
2136 #:phases (modify-phases %standard-phases
2137 (replace 'replace-git-ls-files
2138 (lambda _
2139 (substitute* "forking_test_runner.gemspec"
2140 (("`git ls-files lib/ bin/ MIT-LICENSE`")
2141 "`find lib/ bin/ MIT-LICENSE -type f | sort`"))
2142 #t))
2143 (add-before 'check 'remove-version-constraints
2144 (lambda _
2145 ;; Ignore hard coded version constraints for the tests.
2146 (delete-file "Gemfile.lock")
2147 #t))
2148 (add-before 'check 'set-HOME
2149 (lambda _
2150 ;; Many tests invoke Bundler, and fails when Bundler
2151 ;; warns that /homeless-shelter does not exist.
2152 (setenv "HOME" "/tmp")
2153 #t)))))
2154 (native-inputs
2155 `(("ruby-activerecord" ,ruby-activerecord)
2156 ("ruby-bump" ,ruby-bump)
2157 ("ruby-rspec" ,ruby-rspec)
2158 ("ruby-sqlite3" ,ruby-sqlite3)
2159 ("ruby-wwtd" ,ruby-wwtd)))
2160 (propagated-inputs
2161 `(("ruby-parallel-tests" ,ruby-parallel-tests)))
2162 (synopsis "Run every test in a fork")
2163 (description
2164 "This package is a wrapper around @code{parallel_tests} that runs every
2165test in a fork to avoid pollution and get clean output per test.")
2166 (license license:expat)))
2167
8528365b
RW
2168(define-public ruby-formatador
2169 (package
2170 (name "ruby-formatador")
2171 (version "0.2.5")
2172 (source (origin
2173 (method url-fetch)
2174 (uri (rubygems-uri "formatador" version))
2175 (sha256
2176 (base32
2177 "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0"))))
2178 (build-system ruby-build-system)
2179 ;; Circular dependency: Tests require ruby-shindo, which requires
2180 ;; ruby-formatador at runtime.
2181 (arguments `(#:tests? #f))
2182 (synopsis "Ruby library to format text on stdout")
2183 (description "Formatador is a Ruby library to format text printed to the
2184standard output stream.")
7bf837fd 2185 (home-page "https://github.com/geemus/formatador")
8528365b
RW
2186 (license license:expat)))
2187
5437c741
CB
2188(define-public ruby-fuubar
2189 (package
2190 (name "ruby-fuubar")
2191 (version "2.3.2")
2192 (source
2193 (origin
2194 ;; Fetch from the git repository, as the gem package doesn't include
2195 ;; the tests.
2196 (method git-fetch)
2197 (uri (git-reference
2198 (url "https://github.com/thekompanee/fuubar.git")
2199 (commit (string-append "releases/v" version))))
2200 (file-name (git-file-name name version))
2201 (sha256
2202 (base32
2203 "0jm1x2xp13csbnadixaikj7mlkp5yk4byx51npm56zi13izp7259"))))
2204 (build-system ruby-build-system)
2205 (arguments
2206 '(;; TODO: Some tests fail, unsure why.
2207 ;; 21 examples, 7 failures
2208 #:tests? #f
2209 #:phases
2210 (modify-phases %standard-phases
2211 (add-before 'build 'delete-certificate
2212 (lambda _
2213 ;; Remove 's.cert_chain' as we do not build with a private key
2214 (substitute* "fuubar.gemspec"
2215 ((".*cert_chain.*") "")
2216 ((".*signing_key.*") ""))
2217 #t))
2218 (replace 'check
2219 (lambda* (#:key tests? #:allow-other-keys)
2220 (when tests?
2221 (invoke "rspec"))
2222 #t)))))
2223 (native-inputs
2224 `(("bundler" ,bundler)))
2225 (propagated-inputs
2226 `(("ruby-rspec-core" ,ruby-rspec-core)
2227 ("ruby-progressbar" ,ruby-progressbar)))
2228 (synopsis "Fuubar is an RSpec formatter that uses a progress bar")
2229 (description
2230 "Fuubar is an RSpec formatter that uses a progress bar instead of a
2231string of letters and dots as feedback. It also stops on the first test
2232failure.")
2233 (home-page "https://github.com/thekompanee/fuubar")
2234 (license license:expat)))
2235
8ea991e3
CB
2236(define-public ruby-haml
2237 (package
2238 (name "ruby-haml")
2239 (version "5.0.4")
2240 (source
2241 (origin
2242 (method url-fetch)
2243 (uri (rubygems-uri "haml" version))
2244 (sha256
2245 (base32
2246 "1q0a9fvqh8kn6wm97fcks6qzbjd400bv8bx748w8v87m7p4klhac"))))
2247 (build-system ruby-build-system)
2248 (arguments
2249 '(#:tests? #f)) ; No included tests
2250 (propagated-inputs
2251 `(("ruby-tilt" ,ruby-tilt)
2252 ("ruby-temple" ,ruby-temple)))
2253 (synopsis "Haml is a Ruby library to generate HTML documents")
2254 (description
2255 "@acronym{Haml, HTML Abstraction Markup Language} is a layer on top of
2256HTML or XML that is designed to express the structure of documents using
2257indentation rather than closing tags. It was originally envisioned as a
2258plugin for Ruby on Rails, but it can function as a stand-alone templating
2259engine.")
2260 (home-page "http://haml.info/")
2261 (license license:expat)))
2262
353b7eb8
CB
2263(define-public ruby-hamster
2264 (package
2265 (name "ruby-hamster")
2266 (version "3.0.0")
2267 (source
2268 (origin
2269 (method url-fetch)
2270 (uri (rubygems-uri "hamster" version))
2271 (sha256
2272 (base32
2273 "1n1lsh96vnyc1pnzyd30f9prcsclmvmkdb3nm5aahnyizyiy6lar"))))
2274 (build-system ruby-build-system)
2275 (arguments
2276 '(#:phases
2277 (modify-phases %standard-phases
2278 (add-after 'unpack 'remove-unnecessary-dependencies
2279 (lambda _
2280 ;; pry is a debugging tool, and is unnecessary when running the
2281 ;; tests
2282 (substitute* "spec/lib/hamster/vector/insert_spec.rb"
2283 (("require 'pry'") ""))
2284 (substitute* "spec/spec_helper.rb"
2285 (("require \"pry\"") "")
2286 ;; CodeClimate is an online service, and is unnecessary for
2287 ;; running the tests
2288 (("require \"codeclimate-test-reporter\"") "")
2289 (("CodeClimate.*\n") ""))
2290 #t))
2291 ;; No Rakefile is included, so run rspec directly.
2292 (replace 'check
2293 (lambda* (#:key tests? #:allow-other-keys)
2294 (when tests?
2295 (invoke "rspec"))
2296 #t)))))
2297 (propagated-inputs
2298 `(("ruby-concurrent" ,ruby-concurrent)))
2299 (native-inputs
2300 `(("ruby-rspec" ,ruby-rspec)))
2301 (synopsis "Efficient, immutable, thread-safe collection classes for Ruby")
2302 (description
2303 "Hamster provides 6 persistent data structures: @code{Hash}, @code{Vector},
2304@code{Set}, @code{SortedSet}, @code{List}, and @code{Deque} (which works as an
2305immutable queue or stack).")
2306 (home-page "https://github.com/hamstergem/hamster")
2307 (license license:expat)))
2308
21781436
CB
2309(define-public ruby-hashdiff
2310 (package
2311 (name "ruby-hashdiff")
2312 (version "0.3.8")
2313 (source
2314 (origin
2315 (method url-fetch)
2316 (uri (rubygems-uri "hashdiff" version))
2317 (sha256
2318 (base32
2319 "19ykg5pax8798nh1yv71adkx0zzs7gn2rxjj86v7nsw0jba5lask"))))
2320 (build-system ruby-build-system)
2321 (arguments
2322 '(#:phases
2323 (modify-phases %standard-phases
2324 ;; Run tests directly via rspec to avoid Rake issue:
2325 ;; NoMethodError: undefined method `last_comment'
2326 (replace 'check
2327 (lambda* (#:key tests? #:allow-other-keys)
2328 (when tests?
2329 (invoke "rspec"))
2330 #t)))))
2331 (native-inputs
2332 `(("bundler" ,bundler)
2333 ("ruby-rspec" ,ruby-rspec-2)))
2334 (synopsis "HashDiff computes the smallest difference between two hashes")
2335 (description
2336 "HashDiff is a Ruby library to compute the smallest difference between
2337two hashes.")
2338 (home-page "https://github.com/liufengyun/hashdiff")
2339 (license license:expat)))
2340
3cc8e029
MB
2341(define-public ruby-hydra
2342 ;; No releases yet.
2343 (let ((commit "5abfa378743756ae4d9306cc134bcc482f5c9525")
2344 (revision "0"))
2345 (package
2346 (name "ruby-hydra")
2347 (version (git-version "0.0" revision commit))
2348 (home-page "https://github.com/hyphenation/hydra")
2349 (source (origin
2350 (method git-fetch)
2351 (uri (git-reference (url home-page) (commit commit)))
2352 (file-name (git-file-name name version))
2353 (sha256
2354 (base32
2355 "1cik398l2765y3d9sdhjzki3303hkry58ac6jlkiy7iy62nm529f"))))
2356 (build-system ruby-build-system)
2357 (arguments
2358 '(#:phases (modify-phases %standard-phases
2359 (add-after 'unpack 'make-files-writable
2360 (lambda _
2361 (for-each make-file-writable (find-files "."))
2362 #t))
2363 (replace 'check
2364 (lambda _
2365 (invoke "rspec"))))))
2366 (native-inputs
2367 `(("ruby-rspec" ,ruby-rspec)))
2368 (propagated-inputs
2369 `(("ruby-byebug" ,ruby-byebug)))
2370 (synopsis "Ruby hyphenation patterns")
2371 (description
2372 "ruby-hydra is a Ruby library for working with hyphenation patterns.")
2373 (license license:expat))))
2374
7ac4610f
RW
2375(define-public ruby-shindo
2376 (package
2377 (name "ruby-shindo")
2378 (version "0.3.8")
2379 (source (origin
2380 (method url-fetch)
2381 (uri (rubygems-uri "shindo" version))
2382 (sha256
2383 (base32
2384 "0s8v1jbz8i0jh92f2fgxb3p51l1azrpkc8nv4mhrqy4vndpvd7wq"))))
2385 (build-system ruby-build-system)
2386 (arguments
2387 `(#:test-target "shindo_tests"
2388 #:phases
2389 (modify-phases %standard-phases
2390 (add-after 'unpack 'fix-tests
0b060e34
CB
2391 (lambda _
2392 (substitute* "tests/tests_helper.rb"
2393 (("-rubygems") ""))
2394 (substitute* "Rakefile"
2395 (("system \"shindo") "system \"./bin/shindo")
2396 ;; This test doesn't work, so we disable it.
2397 (("fail \"The build_error test should fail") "#")
2398 ((" -rubygems") ""))
2399 #t)))))
7ac4610f
RW
2400 (propagated-inputs
2401 `(("ruby-formatador" ,ruby-formatador)))
2402 (synopsis "Simple depth first Ruby testing")
2403 (description "Shindo is a simple depth first testing library for Ruby.")
2404 (home-page "https://github.com/geemus/shindo")
2405 (license license:expat)))
2406
f13636f2
RW
2407(define-public ruby-rubygems-tasks
2408 (package
2409 (name "ruby-rubygems-tasks")
f0f5f2d3 2410 (version "0.2.5")
f13636f2
RW
2411 (source (origin
2412 (method url-fetch)
2413 (uri (rubygems-uri "rubygems-tasks" version))
2414 (sha256
2415 (base32
f0f5f2d3 2416 "1x3sz3n2dlknd3v7w1mrq6f0ag6pwzhjvg7z29p75w3p42ma1gbx"))))
f13636f2
RW
2417 (build-system ruby-build-system)
2418 ;; Tests need Internet access.
2419 (arguments `(#:tests? #f))
2420 (native-inputs
2421 `(("ruby-rspec" ,ruby-rspec)
2422 ("ruby-yard" ,ruby-yard)))
2423 (synopsis "Rake tasks for managing and releasing Ruby Gems")
2424 (description "Rubygems-task provides Rake tasks for managing and releasing
2425Ruby Gems.")
2426 (home-page "https://github.com/postmodern/rubygems-tasks")
2427 (license license:expat)))
2428
cb6bc5df
CB
2429(define-public ruby-rubyzip
2430 (package
2431 (name "ruby-rubyzip")
2432 (version "1.2.1")
2433 (source
2434 (origin
2435 (method url-fetch)
2436 (uri (rubygems-uri "rubyzip" version))
2437 (sha256
2438 (base32
2439 "06js4gznzgh8ac2ldvmjcmg9v1vg9llm357yckkpylaj6z456zqz"))))
2440 (build-system ruby-build-system)
2441 (arguments
2442 '(#:phases
2443 (modify-phases %standard-phases
2444 (add-before 'check 'patch-tests
2445 (lambda* (#:key inputs #:allow-other-keys)
2446 (substitute* "test/gentestfiles.rb"
2447 (("/usr/bin/zip")
2448 (string-append
2449 (assoc-ref inputs "zip") "/bin/zip")))
2450 (substitute* "test/input_stream_test.rb"
2451 (("/usr/bin/env ruby") (which "ruby")))
2452 #t)))))
2453 (native-inputs
2454 `(("bundler" ,bundler)
2455 ("ruby-simplecov" ,ruby-simplecov)
2456 ("zip" ,zip)
2457 ("unzip" ,unzip)))
2458 (synopsis "Ruby module is for reading and writing zip files")
2459 (description
2460 "The rubyzip module provides ways to read from and create zip files.")
2461 (home-page "http://github.com/rubyzip/rubyzip")
2462 (license license:bsd-2)))
2463
58b59742
RW
2464(define-public ruby-simplecov-html
2465 (package
2466 (name "ruby-simplecov-html")
53fd476f 2467 (version "0.10.2")
58b59742
RW
2468 (source (origin
2469 (method url-fetch)
2470 (uri (rubygems-uri "simplecov-html" version))
2471 (sha256
2472 (base32
53fd476f 2473 "1lihraa4rgxk8wbfl77fy9sf0ypk31iivly8vl3w04srd7i0clzn"))))
58b59742 2474 (build-system ruby-build-system)
8b749cf3 2475 (arguments `(#:tests? #f)) ; there are no tests
58b59742
RW
2476 (native-inputs
2477 `(("bundler" ,bundler)))
2478 (synopsis "Default HTML formatter for SimpleCov code coverage tool")
2479 (description "This package provides the default HTML formatter for
2480the SimpleCov code coverage tool for Ruby version 1.9 and above.")
2481 (home-page "https://github.com/colszowka/simplecov-html")
2482 (license license:expat)))
2483
a84fa2ad
RW
2484(define-public ruby-simplecov
2485 (package
2486 (name "ruby-simplecov")
d432682b 2487 (version "0.17.1")
a84fa2ad
RW
2488 (source (origin
2489 (method url-fetch)
2490 (uri (rubygems-uri "simplecov" version))
2491 (sha256
2492 (base32
d432682b 2493 "1135k46nik05sdab30yxb8264lqiz01c8v000g16cl9pjc4mxrdw"))))
a84fa2ad
RW
2494 (build-system ruby-build-system)
2495 ;; Simplecov depends on rubocop for code style checking at build time.
2496 ;; Rubocop needs simplecov at build time.
2497 (arguments `(#:tests? #f))
2498 (propagated-inputs
2499 `(("ruby-json" ,ruby-json)
2500 ("ruby-docile" ,ruby-docile)
2501 ("ruby-simplecov-html" ,ruby-simplecov-html)))
2502 (native-inputs
2503 `(("bundler" ,bundler)))
2504 (synopsis "Code coverage framework for Ruby")
2505 (description "SimpleCov is a code coverage framework for Ruby with a
2506powerful configuration library and automatic merging of coverage across test
2507suites.")
7bf837fd 2508 (home-page "https://github.com/colszowka/simplecov")
a84fa2ad
RW
2509 (license license:expat)))
2510
98b87b82
DT
2511(define-public ruby-useragent
2512 (package
2513 (name "ruby-useragent")
959d908d 2514 (version "0.16.10")
98b87b82
DT
2515 (source (origin
2516 (method url-fetch)
e83c6d00 2517 (uri (rubygems-uri "useragent" version))
98b87b82
DT
2518 (sha256
2519 (base32
959d908d 2520 "1fv5kvq494swy0p17h9qya9r50w15xsi9zmvhzb8gh55kq6ki50p"))))
98b87b82
DT
2521 (build-system ruby-build-system)
2522 (arguments
e83c6d00 2523 '(#:tests? #f)) ; no test suite
98b87b82
DT
2524 (synopsis "HTTP user agent parser for Ruby")
2525 (description "UserAgent is a Ruby library that parses and compares HTTP
2526User Agents.")
2527 (home-page "https://github.com/gshutler/useragent")
2528 (license license:expat)))
96086cc5 2529
f7e9b2f3
CB
2530(define-public ruby-backports
2531 (package
2532 (name "ruby-backports")
2533 (version "3.11.4")
2534 (source
2535 (origin
2536 (method url-fetch)
2537 (uri (rubygems-uri "backports" version))
2538 (sha256
2539 (base32
2540 "1hshjxww2h7s0dk57njrygq4zpp0nlqrjfya7zwm27iq3rhc3y8g"))))
2541 (build-system ruby-build-system)
2542 (arguments
2543 '(;; TODO: This should be default, but there is one test failure
2544 #:test-target "all_spec"))
2545 (native-inputs
2546 `(("ruby-mspec" ,ruby-mspec)
2547 ("ruby-activesupport" ,ruby-activesupport)))
2548 (synopsis "Backports of the features in newer Ruby versions")
2549 (description
2550 "Backports enables more compatibility across Ruby versions by providing
2551backports of some features.")
2552 (home-page "https://github.com/marcandre/backports")
2553 (license license:expat)))
2554
96086cc5
DT
2555(define-public ruby-bacon
2556 (package
2557 (name "ruby-bacon")
e83c6d00 2558 (version "1.2.0")
96086cc5
DT
2559 (source (origin
2560 (method url-fetch)
e83c6d00 2561 (uri (rubygems-uri "bacon" version))
96086cc5
DT
2562 (sha256
2563 (base32
e83c6d00 2564 "1f06gdj77bmwzc1k5iragl1595hbn67yc7sqvs56ca8plrr2vmai"))))
96086cc5 2565 (build-system ruby-build-system)
96086cc5
DT
2566 (synopsis "Small RSpec clone")
2567 (description "Bacon is a small RSpec clone providing all essential
2568features.")
2569 (home-page "https://github.com/chneukirchen/bacon")
2570 (license license:expat)))
de59d316 2571
a8d2bf3c
CB
2572(define-public ruby-bacon-bits
2573 (package
2574 (name "ruby-bacon-bits")
2575 (version "0.1.0")
2576 (source
2577 (origin
2578 (method url-fetch)
2579 (uri (rubygems-uri "bacon-bits" version))
2580 (sha256
2581 (base32
2582 "1ghpj8ja94lhi8rgi872hqk4fd2amz2k7g9znd64z5dj7v6l0dmx"))))
2583 (build-system ruby-build-system)
2584 (arguments
2585 ;; No tests
2586 '(#:tests? #f))
2587 (propagated-inputs `(("ruby-bacon" ,ruby-bacon)))
2588 (synopsis "Extensions to Bacon, for disabling tests, before and after
2589blocks and more")
2590 (description
2591 "This extends the bacon testing framework with useful extensions to
2592disable tests, have before and after blocks that run once and more.")
2593 (home-page "https://github.com/cldwalker/bacon-bits")
2594 (license license:expat)))
2595
65f65889
CB
2596(define-public ruby-bacon-colored-output
2597 (package
2598 (name "ruby-bacon-colored-output")
2599 (version "1.1.1")
2600 (source
2601 (origin
2602 (method url-fetch)
2603 (uri (rubygems-uri "bacon-colored_output" version))
2604 (sha256
2605 (base32
2606 "1znyh3vkfdlmf19p3k4zip88ibym41dn5g4p4n5hmks2iznb7qpx"))))
2607 (build-system ruby-build-system)
2608 (arguments
2609 '(;; No included tests
2610 #:tests? #f))
2611 (propagated-inputs
2612 `(("ruby-bacon" ,ruby-bacon)))
2613 (synopsis "Colored output for Bacon test framework")
2614 (description
2615 "This package adds color through ANSI escape codes to Bacon test
2616output.")
2617 (home-page "https://github.com/whitequark/bacon-colored_output")
2618 (license license:expat)))
2619
e259bdf0
DT
2620(define-public ruby-connection-pool
2621 (package
2622 (name "ruby-connection-pool")
58021db4 2623 (version "2.2.2")
e259bdf0
DT
2624 (source (origin
2625 (method url-fetch)
e83c6d00 2626 (uri (rubygems-uri "connection_pool" version))
e259bdf0
DT
2627 (sha256
2628 (base32
58021db4 2629 "0lflx29mlznf1hn0nihkgllzbj8xp5qasn8j7h838465pi399k68"))))
e259bdf0
DT
2630 (build-system ruby-build-system)
2631 (native-inputs
2632 `(("bundler" ,bundler)))
2633 (synopsis "Generic connection pool for Ruby")
2634 (description "Connection_pool provides a generic connection pooling
2635interface for Ruby programs.")
2636 (home-page "https://github.com/mperham/connection_pool")
2637 (license license:expat)))
4c0aeb44 2638
4a98314d
MB
2639(define-public ruby-fast-gettext
2640 (package
2641 (name "ruby-fast-gettext")
c3beb7ce 2642 (version "2.0.3")
4a98314d
MB
2643 (home-page "https://github.com/grosser/fast_gettext")
2644 (source (origin
2645 (method git-fetch)
2646 (uri (git-reference (url home-page)
2647 (commit (string-append "v" version))))
2648 (file-name (git-file-name name version))
2649 (sha256
2650 (base32
c3beb7ce 2651 "1dg14apq5sfjshhcq0idphhs7aq9ikzswhqmn689p1h76mxqr1v6"))))
4a98314d
MB
2652 (build-system ruby-build-system)
2653 (arguments
2654 '(#:test-target "spec"
2655 #:phases (modify-phases %standard-phases
2656 (add-before 'check 'remove-version-constraints
2657 (lambda _
2658 (delete-file "Gemfile.lock")
2659 #t))
2660 (add-before 'check 'remove-activerecord-test
2661 (lambda _
2662 ;; FIXME: This test fails because ActiveRecord depends on
2663 ;; a different version of ruby-sqlite than the currently
2664 ;; available one.
2665 (delete-file
2666 "spec/fast_gettext/translation_repository/db_spec.rb")
2667 #t))
2668 (add-before 'check 'disable-i18n-test
2669 (lambda _
2670 ;; XXX: This test checks i18n intricasies with Rails 3 and
2671 ;; automatically disables itself for Rails 4.0, but does
2672 ;; not know about newer versions as it has not been updated
2673 ;; since 2014. Disable for later versions of Rails too.
2674 (substitute* "spec/fast_gettext/vendor/string_spec.rb"
2675 (((string-append "ActiveRecord::VERSION::MAJOR == 4 and "
2676 "ActiveRecord::VERSION::MINOR == 0"))
2677 "ActiveRecord::VERSION::MAJOR >= 4"))
2678 #t)))))
2679 (native-inputs
2680 `(;; For tests.
2681 ("ruby-activerecord" ,ruby-activerecord)
2682 ("ruby-activesupport" ,ruby-activesupport)
2683 ("ruby-bump" ,ruby-bump)
2684 ("ruby-forking-test-runner" ,ruby-forking-test-runner)
2685 ("ruby-i18n" ,ruby-i18n)
2686 ("ruby-rubocop" ,ruby-rubocop)
2687 ("ruby-rspec" ,ruby-rspec)
2688 ("ruby-single-cov" ,ruby-single-cov)
2689 ("ruby-sqlite3" ,ruby-sqlite3)
2690 ("ruby-wwtd" ,ruby-wwtd)))
2691 (synopsis "Fast implementation of @code{GetText}")
2692 (description
2693 "This package provides an alternative implementation of the Ruby
2694@code{GetText} library that is approximately 12x faster yet thread safe.")
2695 ;; Some parts are covered by the Ruby license, see file headers.
2696 (license (list license:expat license:ruby))))
2697
4c0aeb44
DT
2698(define-public ruby-net-http-persistent
2699 (package
2700 (name "ruby-net-http-persistent")
185ea446 2701 (version "3.0.0")
4c0aeb44
DT
2702 (source (origin
2703 (method url-fetch)
e83c6d00 2704 (uri (rubygems-uri "net-http-persistent" version))
4c0aeb44
DT
2705 (sha256
2706 (base32
185ea446 2707 "156rv95bgxfz6qw5y1r7c7bswr77918hygl8dyl14qzbqc5vyp18"))))
4c0aeb44 2708 (build-system ruby-build-system)
4c0aeb44
DT
2709 (native-inputs
2710 `(("ruby-connection-pool" ,ruby-connection-pool)
2711 ("ruby-hoe" ,ruby-hoe)))
2712 (synopsis "Persistent HTTP connection manager")
2713 (description "Net::HTTP::Persistent manages persistent HTTP connections
2714using Net::HTTP, supporting reconnection and retry according to RFC 2616.")
2715 (home-page "https://github.com/drbrain/net-http-persistent")
2716 (license license:expat)))
afbbdf77 2717
f88bacaf
RW
2718(define-public ruby-power-assert
2719 (package
2720 (name "ruby-power-assert")
6754323b 2721 (version "1.1.5")
f88bacaf
RW
2722 (source (origin
2723 (method url-fetch)
2724 (uri (rubygems-uri "power_assert" version))
2725 (sha256
2726 (base32
6754323b 2727 "1dii0wkfa0jm8sk9b20zl1z4980dmrjh0zqnii058485pp3ws10s"))))
f88bacaf 2728 (build-system ruby-build-system)
6754323b
CB
2729 (arguments
2730 '(#:tests? #f)) ; No included tests
f88bacaf
RW
2731 (native-inputs
2732 `(("bundler" ,bundler)))
2733 (synopsis "Assert library with descriptive assertion messages")
2734 (description "Power-assert is an assertion library providing descriptive
2735assertion messages for tests.")
2736 (home-page "https://github.com/k-tsj/power_assert")
2737 (license (list license:bsd-2 license:ruby))))
2738
e42e3bfa
CB
2739(define-public ruby-powerpack
2740 (package
2741 (name "ruby-powerpack")
2742 (version "0.1.2")
2743 (source
2744 (origin
2745 (method url-fetch)
2746 (uri (rubygems-uri "powerpack" version))
2747 (sha256
2748 (base32
2749 "1r51d67wd467rpdfl6x43y84vwm8f5ql9l9m85ak1s2sp3nc5hyv"))))
2750 (build-system ruby-build-system)
2751 (arguments
2752 '(#:test-target "spec"))
2753 (native-inputs
2754 `(("bundler" ,bundler)
2755 ("ruby-rspec" ,ruby-rspec)
2756 ("ruby-yard" ,ruby-yard)))
2757 (synopsis "Useful extensions to core Ruby classes")
2758 (description
2759 "This package provides a few useful extensions to core Ruby classes,
2760including @code{Array}, @code{Enumerable}, @code{Hash}, @code{Numeric}, and
2761@code{String}.")
2762 (home-page "https://github.com/bbatsov/powerpack")
2763 (license license:expat)))
2764
347eb21e
RW
2765(define-public ruby-locale
2766 (package
2767 (name "ruby-locale")
2768 (version "2.1.2")
2769 (source (origin
2770 (method url-fetch)
2771 (uri (rubygems-uri "locale" version))
2772 (sha256
2773 (base32
2774 "1sls9bq4krx0fmnzmlbn64dw23c4d6pz46ynjzrn9k8zyassdd0x"))))
2775 (build-system ruby-build-system)
2776 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
2777 ;; which needs ruby-gettext, which needs ruby-locale. To break the
2778 ;; dependency cycle we disable tests.
2779 (arguments `(#:tests? #f))
2780 (native-inputs
2781 `(("bundler" ,bundler)
2782 ("ruby-yard" ,ruby-yard)))
2783 (synopsis "Ruby library providing basic localization APIs")
2784 (description
2785 "Ruby-Locale is the pure ruby library which provides basic APIs for
2786localization.")
2787 (home-page "https://github.com/ruby-gettext/locale")
2788 (license (list license:lgpl3+ license:ruby))))
2789
09e2b0af
CB
2790(define-public ruby-temple
2791 (package
2792 (name "ruby-temple")
b1c79cab 2793 (version "0.8.2")
09e2b0af
CB
2794 (source
2795 (origin
2796 (method url-fetch)
2797 (uri (rubygems-uri "temple" version))
2798 (sha256
2799 (base32
b1c79cab 2800 "060zzj7c2kicdfk6cpnn40n9yjnhfrr13d0rsbdhdij68chp2861"))))
09e2b0af
CB
2801 (build-system ruby-build-system)
2802 (native-inputs
2803 `(("ruby-tilt" ,ruby-tilt)
2804 ("ruby-bacon" ,ruby-bacon)
2805 ("ruby-erubis" ,ruby-erubis)))
2806 (synopsis "Template compilation framework in Ruby")
2807 (description
2808 "Temple is an abstraction and framework for compiling templates to pure
2809Ruby.")
2810 (home-page "https://github.com/judofyr/temple")
2811 (license license:expat)))
2812
e2333ea3
RW
2813(define-public ruby-text
2814 (package
2815 (name "ruby-text")
2816 (version "1.3.1")
2817 (source (origin
2818 (method url-fetch)
2819 (uri (rubygems-uri "text" version))
2820 (sha256
2821 (base32
2822 "1x6kkmsr49y3rnrin91rv8mpc3dhrf3ql08kbccw8yffq61brfrg"))))
2823 (build-system ruby-build-system)
2824 (synopsis "Collection of text algorithms for Ruby")
2825 (description
2826 "This package provides a collection of text algorithms: Levenshtein,
2827Soundex, Metaphone, Double Metaphone, Porter Stemming.")
7bf837fd 2828 (home-page "https://github.com/threedaymonk/text")
e2333ea3
RW
2829 (license license:expat)))
2830
c1f52261
RW
2831(define-public ruby-gettext
2832 (package
2833 (name "ruby-gettext")
2834 (version "3.1.7")
2835 (source (origin
2836 (method url-fetch)
2837 (uri (rubygems-uri "gettext" version))
2838 (sha256
2839 (base32
2840 "1hg9islkm324mb4sd4za1fgafj1hqnm3bdvzj3k4fqpnzqnbcfiq"))))
2841 (build-system ruby-build-system)
2842 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
2843 ;; which needs ruby-gettext. To break the dependency cycle we disable
2844 ;; tests.
2845 (arguments `(#:tests? #f))
2846 (propagated-inputs
2847 `(("ruby-locale" ,ruby-locale)
2848 ("ruby-text" ,ruby-text)))
2849 (native-inputs
2850 `(("bundler" ,bundler)
2851 ("ruby-yard" ,ruby-yard)))
2852 (synopsis "GNU gettext-like program for Ruby")
2853 (description
2854 "Gettext is a GNU gettext-like program for Ruby. The catalog
2855file (po-file) used is the same as that used by GNU gettext, allowing you to
2856use GNU gettext tools for maintenance.")
2f3800e5 2857 (home-page "https://ruby-gettext.github.com/")
c1f52261
RW
2858 (license (list license:lgpl3+ license:ruby))))
2859
cc5aeb8c
RW
2860(define-public ruby-packnga
2861 (package
2862 (name "ruby-packnga")
1d60c436 2863 (version "1.0.4")
cc5aeb8c
RW
2864 (source (origin
2865 (method url-fetch)
2866 (uri (rubygems-uri "packnga" version))
2867 (sha256
2868 (base32
1d60c436 2869 "1vv2j0i43s4xid2km5hgrrxqlqpwgq8nlm8kaxfg2531c1vwfsd4"))))
cc5aeb8c
RW
2870 (build-system ruby-build-system)
2871 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga.
2872 ;; To break the dependency cycle we disable tests.
2873 (arguments `(#:tests? #f))
2874 (propagated-inputs
2875 `(("ruby-gettext" ,ruby-gettext)
2876 ("ruby-yard" ,ruby-yard)))
2877 (native-inputs
2878 `(("bundler" ,bundler)))
2879 (synopsis "Utility library to package internationalized libraries")
2880 (description
2881 "Packnga is a library to translate to many languages using YARD.")
2882 (home-page "http://ranguba.org/packnga/")
2883 (license license:lgpl2.0+)))
2884
93dc8684
CB
2885(define-public ruby-test-construct
2886 (package
2887 (name "ruby-test-construct")
2888 (version "2.0.1")
2889 (source
2890 (origin
2891 (method url-fetch)
2892 (uri (rubygems-uri "test_construct" version))
2893 (sha256
2894 (base32
2895 "1a2ym3l068d0pxzzr95kvqx87zpdsarxslz9ygd4qfm9frrz0kgj"))))
2896 (build-system ruby-build-system)
2897 (native-inputs
2898 `(("bundler" ,bundler)
2899 ("ruby-mocha" ,ruby-mocha)
2900 ("ruby-rspec" ,ruby-rspec)))
2901 (synopsis "Creates temporary files and directories for testing")
2902 (description
2903 "TestConstruct is a @acronym{DSL, Domain Specific Language} for creating
2904temporary files and directories during tests.")
2905 (home-page "https://github.com/bhb/test_construct")
2906 (license license:expat)))
2907
3383f5bd
RW
2908(define-public ruby-test-unit
2909 (package
2910 (name "ruby-test-unit")
d74d96e4 2911 (version "3.2.5")
3383f5bd
RW
2912 (source (origin
2913 (method url-fetch)
2914 (uri (rubygems-uri "test-unit" version))
2915 (sha256
2916 (base32
d74d96e4 2917 "05bx36fw01iqz0xqhvjfrwjgnj1zx3b2vn6w1fzp19rchd7zqc52"))))
3383f5bd
RW
2918 (build-system ruby-build-system)
2919 (propagated-inputs
2920 `(("ruby-power-assert" ,ruby-power-assert)))
2921 (native-inputs
2922 `(("bundler" ,bundler)
2923 ("ruby-packnga" ,ruby-packnga)
2924 ("ruby-yard" ,ruby-yard)))
2925 (synopsis "Unit testing framework for Ruby")
2926 (description "@code{Test::Unit} is unit testing framework for Ruby, based
2927on xUnit principles. These were originally designed by Kent Beck, creator of
2928extreme programming software development methodology, for Smalltalk's SUnit.
2929It allows writing tests, checking results and automated testing in Ruby.")
2f3800e5 2930 (home-page "https://test-unit.github.io/")
3383f5bd
RW
2931 (license (list license:psfl license:ruby))))
2932
76b732fb
CB
2933(define-public ruby-markaby
2934 (package
2935 (name "ruby-markaby")
2936 (version "0.9.0")
2937 (source
2938 (origin
2939 (method url-fetch)
2940 (uri (rubygems-uri "markaby" version))
2941 (sha256
2942 (base32
2943 "1j4jc31ycydbkh5h3q6zwidzpavg3g5mbb5lqyaczd3jrq78rd7i"))))
2944 (build-system ruby-build-system)
2945 (arguments
2946 '(#:phases
2947 (modify-phases %standard-phases
2948 ;; Run rspec manually without using the Rakefile, as the versions of
2949 ;; Rake and RSpec 2 are incompatible:
2950 ;;
2951 ;; NoMethodError: undefined method `last_comment'
2952 (replace 'check
2953 (lambda* (#:key tests? #:allow-other-keys)
2954 (when tests?
2955 (invoke "rspec"))
2956 #t)))))
2957 (propagated-inputs
2958 `(("ruby-builder" ,ruby-builder)))
2959 (native-inputs
2960 `(("bundler" ,bundler)
2961 ("ruby-rspec" ,ruby-rspec-2)))
2962 (synopsis "Write HTML pages in pure Ruby")
2963 (description
2964 "Markaby allows writing HTML packages in pure Ruby. This is similar to
e54af322 2965the functionality provided by @acronym{ERB, Embedded Ruby}, but without the
76b732fb 2966mixture of HTML and additional ERB syntax.")
41181b76 2967 (home-page "https://markaby.github.io/")
76b732fb
CB
2968 (license license:expat)))
2969
b9511aa9
CB
2970(define-public ruby-maruku
2971 (package
2972 (name "ruby-maruku")
2973 (version "0.7.3")
2974 (source
2975 (origin
2976 (method url-fetch)
2977 (uri (rubygems-uri "maruku" version))
2978 (sha256
2979 (base32
2980 "1r7bxpgnx2hp3g12bjrmdrpv663dfqxsdp0af69kjhxmaxpia56x"))))
2981 (build-system ruby-build-system)
2982 (arguments
2983 '(;; TODO: 3 tests seem to fail due to HTML encoding issues
2984 #:tests? #f
2985 #:phases
2986 (modify-phases %standard-phases
2987 (replace 'check
2988 (lambda* (#:key tests? #:allow-other-keys)
2989 (when tests?
2990 (invoke "rspec"))
2991 #t)))))
2992 (native-inputs
2993 `(("ruby-rspec" ,ruby-rspec)
2994 ("ruby-simplecov" ,ruby-simplecov)
2995 ("ruby-nokogiri-diff" ,ruby-nokogiri-diff)))
2996 (synopsis "Markdown interpreter in Ruby")
2997 (description
2998 "Maruku is a Markdown interpreter in Ruby. It can export Markdown to
2999HTML, and PDF through LaTeX.")
3000 (home-page "https://github.com/bhollis/maruku")
3001 (license license:expat)))
3002
25d6d49b
RW
3003(define-public ruby-metaclass
3004 (package
3005 (name "ruby-metaclass")
3006 (version "0.0.4")
3007 (source (origin
3008 (method url-fetch)
3009 (uri (rubygems-uri "metaclass" version))
3010 (sha256
3011 (base32
3012 "0hp99y2b1nh0nr8pc398n3f8lakgci6pkrg4bf2b2211j1f6hsc5"))))
3013 (build-system ruby-build-system)
3014 (arguments
3015 `(#:phases
3016 (modify-phases %standard-phases
3017 (add-after 'unpack 'add-test-unit-to-search-path
761e7042 3018 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 3019 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
761e7042
BW
3020 (substitute* "Rakefile"
3021 (("t\\.libs << \"test\"" line)
3022 (string-append line "; t.libs << \""
3cb3fa67 3023 test-unit "/lib/ruby/vendor_ruby"
761e7042
BW
3024 "/gems/test-unit-"
3025 ,(package-version ruby-test-unit)
3026 "/lib\""))))
3027 #t)))))
25d6d49b
RW
3028 (native-inputs
3029 `(("bundler" ,bundler)
3030 ("ruby-test-unit" ,ruby-test-unit)))
3031 (synopsis "Ruby library adding metaclass method to all objects")
3032 (description
3033 "Metaclass is a Ruby library adding a @code{metaclass} method to all Ruby
3034objects.")
7bf837fd 3035 (home-page "https://github.com/floehopper/metaclass")
25d6d49b
RW
3036 (license license:expat)))
3037
fae1c866
MB
3038(define-public ruby-mkmf-lite
3039 (package
3040 (name "ruby-mkmf-lite")
3041 (version "0.3.2")
3042 (source (origin
3043 (method url-fetch)
3044 (uri (rubygems-uri "mkmf-lite" version))
3045 (sha256
3046 (base32
3047 "0br9k6zijj1zc25n8p7f2j1mwl58nfgdknf3q13h9k156jvrir06"))))
3048 (build-system ruby-build-system)
3049 (propagated-inputs
3050 `(("ruby-ptools" ,ruby-ptools)))
3051 (synopsis "Lightweight alternative to @code{mkmf}")
3052 (description
3053 "@code{mkmf-lite} is a light version of Ruby's @code{mkmf.rb} designed
3054for use as a library. It does not create packages, builds, or log files of
3055any kind. Instead, it provides mixin methods that you can use in FFI or tests
3056to check for the presence of header files, constants, and so on.")
3057 (home-page "https://github.com/djberg96/mkmf-lite")
3058 (license license:asl2.0)))
3059
1d1d20b0
CB
3060(define-public ruby-mspec
3061 (package
3062 (name "ruby-mspec")
3063 (version "1.9.1")
3064 (source
3065 (origin
3066 (method url-fetch)
3067 (uri (rubygems-uri "mspec" version))
3068 (sha256
3069 (base32
3070 "0wmyh2n40m4srwdx9z6h6g6p46k02pzyhcsja3hqcw5h5b0hfmhd"))))
3071 (build-system ruby-build-system)
3072 (arguments
3073 '(;; TODO: 3 test failures
3074 ;; ./spec/mocks/mock_spec.rb:82
3075 ;; ./spec/utils/name_map_spec.rb:151
3076 ;; ./spec/utils/name_map_spec.rb:155
3077 #:tests? #f
3078 #:phases
3079 (modify-phases %standard-phases
3080 (add-after 'extract-gemspec 'change-dependency-constraints
3081 (lambda _
3082 (substitute* "mspec.gemspec"
3083 (("rake.*") "rake>)\n")
3084 (("rspec.*") "rspec>)\n"))
3085 #t))
3086 (replace 'check
3087 (lambda* (#:key tests? #:allow-other-keys)
3088 (when tests?
3089 (invoke "rspec" "spec"))
3090 #t)))))
3091 (native-inputs
3092 `(("bundler" ,bundler)
3093 ("ruby-rake" ,ruby-rake)
3094 ("ruby-rspec" ,ruby-rspec)))
3095 (synopsis "MSpec is a specialized framework for RubySpec")
3096 (description
3097 "MSpec is a specialized framework that is syntax-compatible with RSpec 2
3098for basic features. MSpec contains additional features that assist in writing
3099specs for Ruby implementations in ruby/spec.")
3100 (home-page "http://rubyspec.org")
3101 (license license:expat)))
3102
b8aecc31
CB
3103(define-public ruby-mysql2
3104 (package
3105 (name "ruby-mysql2")
3106 (version "0.5.2")
3107 (source
3108 (origin
3109 (method git-fetch)
3110 (uri (git-reference
3111 (url "https://github.com/brianmario/mysql2.git")
3112 (commit version)))
3113 (file-name (git-file-name name version))
3114 (sha256
3115 (base32
3116 "11lvfgc2rmvkm52jp0nbi6pvhk06klznghr7llldfw8basl9n5wv"))))
3117 (build-system ruby-build-system)
3118 (arguments
3119 '(;; TODO: Tests require a running MySQL/MariaDB service
3120 #:tests? #f
3121 #:phases
3122 (modify-phases %standard-phases
3123 (replace 'replace-git-ls-files
3124 (lambda _
3125 (substitute* "mysql2.gemspec"
3126 (("git ls-files .*`") "find . -type f |sort`"))
3127 #t))
3128 (add-before 'install 'set-MAKEFLAGS
3129 (lambda* (#:key outputs #:allow-other-keys)
3130 (setenv "MAKEFLAGS"
3131 (string-append
3132 "V=1 "
3133 "prefix=" (assoc-ref outputs "out")))
3134 #t))
3135 ;; Move the 'check phase to after 'install, as then you can test
3136 ;; using the installed mysql2 gem in the store.
3137 (delete 'check)
3138 (add-after 'install 'check
3139 (lambda* (#:key outputs tests? #:allow-other-keys)
3140 (setenv "GEM_PATH"
3141 (string-append
3142 (getenv "GEM_PATH")
3143 ":"
3144 (assoc-ref outputs "out") "/lib/ruby/vendor_ruby"))
3145 (when tests?
3146 (invoke "rspec"))
3147 #t)))))
3148 (inputs
2b8491fb
JL
3149 `(("mariadb" ,mariadb "lib")
3150 ("mariadb-dev" ,mariadb "dev")
b8aecc31
CB
3151 ("zlib" ,zlib)))
3152 (native-inputs
3153 `(("ruby-rspec" ,ruby-rspec)
3154 ("ruby-rake-compiler" ,ruby-rake-compiler)))
3155 (synopsis "MySQL library for Ruby, binding to libmysql")
3156 (description
3157 "This package provides a simple, fast MySQL library for Ruby, binding to
3158libmysql.")
3159 (home-page "https://github.com/brianmario/mysql2")
3160 (license license:expat)))
3161
21f7b7bd
RW
3162(define-public ruby-blankslate
3163 (package
3164 (name "ruby-blankslate")
3165 (version "3.1.3")
3166 (source (origin
3167 (method url-fetch)
3168 (uri (rubygems-uri "blankslate" version))
3169 (sha256
3170 (base32
3171 "0fwkb4d1j9gc7vdwn2nxvwgy2g5wlag4c4bp7bl85jvq0kgp6cyx"))))
3172 (build-system ruby-build-system)
3173 (arguments
3174 `(#:phases
3175 (modify-phases %standard-phases
3176 (replace 'check
9923d5a4 3177 (lambda _ (invoke "rspec" "spec/"))))))
21f7b7bd
RW
3178 (native-inputs
3179 `(("bundler" ,bundler)
3180 ("ruby-rspec" ,ruby-rspec)))
3181 (synopsis "Abstract base class with no predefined methods")
3182 (description
3183 "BlankSlate provides an abstract base class with no predefined
3184methods (except for @code{__send__} and @code{__id__}). BlankSlate is useful
3185as a base class when writing classes that depend upon
3186@code{method_missing} (e.g. dynamic proxies).")
7bf837fd 3187 (home-page "https://github.com/masover/blankslate")
21f7b7bd
RW
3188 (license license:expat)))
3189
afdb437c
CB
3190(define-public ruby-bond
3191 (package
3192 (name "ruby-bond")
3193 (version "0.5.1")
3194 (source
3195 (origin
3196 (method url-fetch)
3197 (uri (rubygems-uri "bond" version))
3198 (sha256
3199 (base32
3200 "1r19ifc4skyl2gxnifrxa5jvbbay9fb2in79ppgv02b6n4bhsw90"))))
3201 (build-system ruby-build-system)
3202 (native-inputs
3203 `(("ruby-bacon" ,ruby-bacon)
3204 ("ruby-bacon-bits" ,ruby-bacon-bits)
3205 ("ruby-mocha-on-bacon" ,ruby-mocha-on-bacon)))
3206 (synopsis "Bond can provide custom autocompletion for arguments, methods
3207and more")
3208 (description
3209 "Bond can autocomplete argument(s) to methods, uniquely completing per
3210module, per method and per argument. Bond provides a configuration system and
3211a DSL for creating custom completions and completion rules. Bond can also
3212load completions that ship with gems. Bond is able to offer more than irb's
3213completion since it uses the full line of input when completing as opposed to
3214irb's last-word approach.")
3215 (home-page "http://tagaholic.me/bond/")
3216 (license license:expat)))
3217
f3d7bb93
CB
3218(define-public ruby-idn-ruby
3219 (package
3220 (name "ruby-idn-ruby")
3221 (version "0.1.0")
3222 (source
3223 (origin
3224 (method url-fetch)
3225 (uri (rubygems-uri "idn-ruby" version))
3226 (sha256
3227 (base32
3228 "07vblcyk3g72sbq12xz7xj28snpxnh3sbcnxy8bglqbfqqhvmawr"))))
3229 (build-system ruby-build-system)
3230 (arguments
3231 '(#:phases
3232 (modify-phases %standard-phases
3233 (delete 'check)
3234 (add-after 'install 'check
3235 (lambda* (#:key tests? outputs #:allow-other-keys)
3236 (when tests?
3237 (let* ((gem-file (cadr (find-files "." "\\.gem")))
3238 (name-and-version (basename gem-file ".gem")))
3239 (apply invoke
3240 "ruby" "--verbose"
3241 (string-append "-I"
3242 (assoc-ref outputs "out")
3243 "/lib/ruby/vendor_ruby/gems/"
3244 name-and-version
3245 "/lib")
3246 (find-files "./test" ".*\\.rb"))))
3247 #t)))))
3248 (inputs
3249 `(("libidn" ,libidn)))
3250 (synopsis "Ruby Bindings for the GNU LibIDN library")
3251 (description
3252 "Ruby Bindings for the GNU LibIDN library, an implementation of the
3253Stringprep, Punycode and IDNA specifications. These are used to encode and
3254decode internationalized domain + names according to the IDNA2003
3255specifications.
3256
3257Included are the most important parts of the Stringprep, Punycode and IDNA
3258APIs like performing Stringprep processings, encoding to and decoding from
3259Punycode strings and converting entire domain names to and from the ACE
3260encoded form.")
3261 (home-page "https://github.com/deepfryed/idn-ruby")
3262 (license license:asl2.0)))
3263
4016ba3f
RW
3264(define-public ruby-instantiator
3265 (package
3266 (name "ruby-instantiator")
688c9076 3267 (version "0.0.7")
4016ba3f
RW
3268 (source (origin
3269 (method url-fetch)
3270 (uri (rubygems-uri "instantiator" version))
3271 (sha256
3272 (base32
688c9076 3273 "0w07w3gkyqr7m0vz5h13vm8b411660qywjm2xxxgdjv4wb3fazbr"))))
4016ba3f
RW
3274 (build-system ruby-build-system)
3275 (arguments
3276 `(#:phases
3277 (modify-phases %standard-phases
3278 (add-after 'unpack 'add-test-unit-to-search-path
761e7042 3279 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 3280 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
761e7042
BW
3281 (substitute* "Rakefile"
3282 (("t\\.libs << \"test\"" line)
3283 (string-append line "; t.libs << \""
3cb3fa67 3284 test-unit "/lib/ruby/vendor_ruby"
761e7042
BW
3285 "/gems/test-unit-"
3286 ,(package-version ruby-test-unit)
3287 "/lib\""))))
3288 #t)))))
4016ba3f
RW
3289 (propagated-inputs
3290 `(("ruby-blankslate" ,ruby-blankslate)))
3291 (native-inputs
3292 `(("bundler" ,bundler)
3293 ("ruby-test-unit" ,ruby-test-unit)))
3294 (synopsis "Instantiate an arbitrary Ruby class")
3295 (description
3296 "Instantiator lets you instantiate an arbitrary Ruby class without
3297knowing anything about the constructor.")
3298 (home-page "https://github.com/floehopper/instantiator")
3299 (license license:expat)))
3300
97aee8d3
RW
3301(define-public ruby-introspection
3302 (package
3303 (name "ruby-introspection")
98ff58a5 3304 (version "0.0.4")
97aee8d3
RW
3305 (source (origin
3306 (method url-fetch)
3307 (uri (rubygems-uri "introspection" version))
3308 (sha256
3309 (base32
98ff58a5 3310 "1y2nbijkc0zlfmn9ss6588ilarq2kbn2i7w7pwwsli66dj84zgca"))))
97aee8d3
RW
3311 (build-system ruby-build-system)
3312 (arguments
3313 `(#:phases
3314 (modify-phases %standard-phases
3315 (add-after 'unpack 'add-test-unit-to-search-path
3316 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 3317 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
761e7042
BW
3318 (substitute* "Rakefile"
3319 (("t\\.libs << \"test\"" line)
3320 (string-append line "; t.libs << \""
3cb3fa67 3321 test-unit "/lib/ruby/vendor_ruby"
761e7042
BW
3322 "/gems/test-unit-"
3323 ,(package-version ruby-test-unit)
3324 "/lib\""))))
97aee8d3
RW
3325 #t)))))
3326 (propagated-inputs
3327 `(("ruby-instantiator" ,ruby-instantiator)
3328 ("ruby-metaclass" ,ruby-metaclass)))
3329 (native-inputs
3330 `(("bundler" ,bundler)
3331 ("ruby-blankslate" ,ruby-blankslate)
3332 ("ruby-test-unit" ,ruby-test-unit)))
3333 (synopsis "Dynamic inspection of the method hierarchy on a Ruby object")
3334 (description
3335 "Introspection provides tools to inspect the hierarchy of method
3336definitions on a Ruby object.")
3337 (home-page "https://github.com/floehopper/introspection")
3338 (license license:expat)))
3339
d93062fd
RW
3340(define-public ruby-redcarpet
3341 (package
3342 (name "ruby-redcarpet")
ba4084bb 3343 (version "3.5.0")
d93062fd
RW
3344 (source (origin
3345 (method url-fetch)
3346 (uri (rubygems-uri "redcarpet" version))
3347 (sha256
3348 (base32
ba4084bb 3349 "0skcyx1h8b5ms0rp2zm3ql6g322b8c1adnkwkqyv7z3kypb4bm7k"))))
d93062fd
RW
3350 (build-system ruby-build-system)
3351 (arguments
3352 `(#:phases
3353 (modify-phases %standard-phases
3354 ;; The gem archive does not include the conformance tests.
3355 (add-after 'unpack 'disable-conformance-tests
3356 (lambda _
3357 (substitute* "Rakefile"
3358 (("task :test => %w\\[test:unit test:conformance\\]")
3359 "task :test => %w[test:unit]"))
3360 #t)))))
3361 (native-inputs
3362 `(("bundler" ,bundler)
3363 ("ruby-test-unit" ,ruby-test-unit)
3364 ("ruby-rake-compiler" ,ruby-rake-compiler)))
3365 (synopsis "Extensible Markdown to (X)HTML converter")
3366 (description
3367 "Redcarpet is an extensible Ruby library for Markdown processing and
3368conversion to (X)HTML.")
7bf837fd 3369 (home-page "https://github.com/vmg/redcarpet")
d93062fd
RW
3370 (license license:expat)))
3371
09924294
CB
3372(define-public ruby-rerun
3373 (package
3374 (name "ruby-rerun")
3375 (version "0.13.0")
3376 (source
3377 (origin
3378 (method url-fetch)
3379 (uri (rubygems-uri "rerun" version))
3380 (sha256
3381 (base32
3382 "1cskvxk8z8vmfail8na7hj91hs0qnvds9nydj04zi3dbddgnbmvz"))))
3383 (build-system ruby-build-system)
3384 (arguments
3385 '(#:tests? #f)) ; No included tests
3386 (propagated-inputs
3387 `(("ruby-listen" ,ruby-listen)))
3388 (synopsis "Run a process, and restart when some monitored files change")
3389 (description
52beae7b 3390 "Rerun is a tool to launch programs, then monitor the file system, and
09924294
CB
3391restart the program when any of the monitored files change. It's written in
3392Ruby, but can be used for all programs.")
3393 (home-page "https://github.com/alexch/rerun/")
3394 (license license:expat)))
3395
8d85543b
MB
3396(define-public ruby-maxitest
3397 (package
3398 (name "ruby-maxitest")
3399 (version "3.6.0")
3400 (home-page "https://github.com/grosser/maxitest")
3401 (source (origin
3402 ;; Pull from git because the gem does not contain tests.
3403 (method git-fetch)
3404 (uri (git-reference
3405 (url home-page)
3406 (commit (string-append "v" version))))
3407 (file-name (git-file-name name version))
3408 (sha256
3409 (base32
3410 "07b3j0bv3dx5j42jlvpvl07aaxplyi6wq688y3jl8y528ww2hjz8"))))
3411 (build-system ruby-build-system)
3412 (arguments
3413 '(#:test-target "default"
3414 #:phases (modify-phases %standard-phases
3415 (replace 'replace-git-ls-files
3416 (lambda _
3417 (substitute* "maxitest.gemspec"
3418 (("`git ls-files lib/ bin/ MIT-LICENSE Readme.md`")
3419 "`find lib/ bin/ MIT-LICENSE Readme.md -type f | sort`"))
3420 #t))
3421 (add-before 'check 'remove-version-constraints
3422 (lambda _
3423 ;; Don't use specific versions of dependencies, instead
3424 ;; take whatever is available in Guix.
3425 (delete-file "Gemfile.lock")
3426 #t))
3427 (add-before 'check 'add-mtest-on-PATH
3428 (lambda _
3429 ;; Tests use 'mtest' which is not automatically added on
3430 ;; PATH.
3431 (setenv "PATH" (string-append (getcwd) "/bin:"
3432 (getenv "PATH")))
3433 #t)))))
3434 (native-inputs
3435 `(("ps" ,procps)
3436 ("ruby-bump" ,ruby-bump)
3437 ("ruby-byebug" ,ruby-byebug)
3438 ("ruby-rspec" ,ruby-rspec)
3439 ("ruby-wwtd" ,ruby-wwtd)))
3440 (propagated-inputs
3441 `(("ruby-minitest" ,ruby-minitest)))
3442 (synopsis "Minitest with extra features")
3443 (description
3444 "Maxitest is a wrapper around Minitest with extra functionality such
3445as timeouts, an @command{mtest} executable that can run tests by line
3446number, support for interrupted tests, better backtraces, and more.")
3447 (license license:expat)))
3448
4f2a52ae
RW
3449(define-public ruby-mocha
3450 (package
3451 (name "ruby-mocha")
2fc3cc24 3452 (version "1.11.2")
4f2a52ae
RW
3453 (source (origin
3454 (method url-fetch)
3455 (uri (rubygems-uri "mocha" version))
3456 (sha256
3457 (base32
2fc3cc24 3458 "0hxmkm8qxd04vwj8mqnpyrf2dwy7g1k9zipdfhl4y71cw7ijm9n4"))))
4f2a52ae
RW
3459 (build-system ruby-build-system)
3460 (arguments
3461 `(#:phases
3462 (modify-phases %standard-phases
2fc3cc24
MB
3463 (add-before 'check 'remove-rubocop-dependency
3464 (lambda _
3465 ;; Disable dependency on Rubocop, which is just a linter,
3466 ;; and would introduce a circular dependency.
3467 (substitute* "mocha.gemspec"
3468 ((".*rubocop.*")
3469 "true\n"))
3470 #t)))))
4f2a52ae 3471 (native-inputs
2fc3cc24 3472 `(("ruby-introspection" ,ruby-introspection)))
4f2a52ae
RW
3473 (synopsis "Mocking and stubbing library for Ruby")
3474 (description
3475 "Mocha is a mocking and stubbing library with JMock/SchMock syntax, which
3476allows mocking and stubbing of methods on real (non-mock) classes.")
3477 (home-page "http://gofreerange.com/mocha/docs")
e3febab5
MB
3478 ;; Mocha can be used with either license at the users choice.
3479 (license (list license:expat license:ruby))))
4f2a52ae 3480
cf646acf
CB
3481(define-public ruby-mocha-on-bacon
3482 (package
3483 (name "ruby-mocha-on-bacon")
3484 (version "0.2.3")
3485 (source
3486 (origin
3487 (method url-fetch)
3488 (uri (rubygems-uri "mocha-on-bacon" version))
3489 (sha256
3490 (base32
3491 "1h49b33rq889hn8x3wp9byczl91va16jh1w4d2wyy4yj23icdrcp"))))
3492 (build-system ruby-build-system)
3493 (arguments
3494 ;; rubygems.org release missing tests
3495 '(#:tests? #f))
3496 (propagated-inputs `(("ruby-mocha" ,ruby-mocha)))
3497 (synopsis "Mocha adapter for Bacon")
3498 (description
3499 "This package provides a Mocha adapter for Bacon, allowing you to use the
3500Mocha stubbing and mocking library with Bacon, a small RSpec clone.")
3501 (home-page
3502 "https://github.com/alloy/mocha-on-bacon")
3503 (license license:expat)))
3504
2c84ba7e
RW
3505(define-public ruby-net-ssh
3506 (package
3507 (name "ruby-net-ssh")
5803f872 3508 (version "4.2.0")
2c84ba7e
RW
3509 (source (origin
3510 (method url-fetch)
3511 (uri (rubygems-uri "net-ssh" version))
3512 (sha256
3513 (base32
5803f872 3514 "07c4v97zl1daabmri9zlbzs6yvkl56z1q14bw74d53jdj0c17nhx"))))
2c84ba7e
RW
3515 (build-system ruby-build-system)
3516 (native-inputs
a7938625
MB
3517 `(("bundler" ,bundler)
3518 ("ruby-mocha" ,ruby-mocha)
2c84ba7e
RW
3519 ("ruby-test-unit" ,ruby-test-unit)))
3520 (synopsis "Ruby implementation of the SSH2 client protocol")
3521 (description "@code{Net::SSH} is a pure-Ruby implementation of the SSH2
3522client protocol. It allows you to write programs that invoke and interact
3523with processes on remote servers, via SSH2.")
3524 (home-page "https://github.com/net-ssh/net-ssh")
3525 (license license:expat)))
3526
d38755cb
DM
3527(define-public ruby-net-scp
3528 (package
3529 (name "ruby-net-scp")
3530 ;; The 1.2.1 release would be incompatible with ruby-net-ssh >= 4.
3531 (version "1.2.2.rc2")
3532 (source
3533 (origin
e405f996
TGR
3534 (method git-fetch)
3535 (uri (git-reference
3536 (url "https://github.com/net-ssh/net-scp.git")
3537 (commit (string-append "v" version))))
3538 (file-name (git-file-name name version))
d38755cb 3539 (sha256
e405f996 3540 (base32 "1nyn17sy71fn7zs3y6wbgcn35318c10flqgc0582409095x4h0sx"))))
d38755cb
DM
3541 (build-system ruby-build-system)
3542 (native-inputs
3543 `(("bundler" ,bundler)
3544 ("ruby-test-unit" ,ruby-test-unit)
3545 ("ruby-mocha" ,ruby-mocha)))
3546 (propagated-inputs
3547 `(("ruby-net-ssh" ,ruby-net-ssh)))
3548 (synopsis "Pure-Ruby SCP client library")
3549 (description "@code{Net::SCP} is a pure-Ruby implementation of the SCP
3550client protocol.")
3551 (home-page "https://github.com/net-ssh/net-scp")
3552 (license license:expat)))
3553
2206e948
DT
3554(define-public ruby-minitest
3555 (package
3556 (name "ruby-minitest")
88a105c1 3557 (version "5.11.3")
2206e948 3558 (source (origin
e83c6d00
DT
3559 (method url-fetch)
3560 (uri (rubygems-uri "minitest" version))
2206e948
DT
3561 (sha256
3562 (base32
88a105c1 3563 "0icglrhghgwdlnzzp4jf76b0mbc71s80njn5afyfjn4wqji8mqbq"))))
2206e948 3564 (build-system ruby-build-system)
2206e948
DT
3565 (native-inputs
3566 `(("ruby-hoe" ,ruby-hoe)))
3567 (synopsis "Small test suite library for Ruby")
3568 (description "Minitest provides a complete suite of Ruby testing
3569facilities supporting TDD, BDD, mocking, and benchmarking.")
3570 (home-page "https://github.com/seattlerb/minitest")
3571 (license license:expat)))
3572
1db6e09f
RW
3573;; This is the last release of Minitest 4, which is used by some packages.
3574(define-public ruby-minitest-4
3575 (package (inherit ruby-minitest)
3576 (version "4.7.5")
3577 (source (origin
3578 (method url-fetch)
3579 (uri (rubygems-uri "minitest" version))
3580 (sha256
3581 (base32
3582 "03p6iban9gcpcflzp4z901s1hgj9369p6515h967ny6hlqhcf2iy"))))
3583 (arguments
3584 `(#:phases
3585 (modify-phases %standard-phases
3586 (add-after 'unpack 'remove-unsupported-method
3587 (lambda _
3588 (substitute* "Rakefile"
3589 (("self\\.rubyforge_name = .*") ""))
9a7017eb
BW
3590 #t))
3591 (add-after 'build 'exclude-failing-tests
3592 (lambda _
3593 ;; Some tests are failing on Ruby 2.4 due to the deprecation of
3594 ;; Fixnum.
3595 (delete-file "test/minitest/test_minitest_spec.rb")
3596 #t)))))))
1db6e09f 3597
450a3f7f
CB
3598(define-public ruby-minitest-around
3599 (package
3600 (name "ruby-minitest-around")
3601 (version "0.5.0")
3602 (source
3603 (origin
3604 (method url-fetch)
3605 (uri (rubygems-uri "minitest-around" version))
3606 (sha256
3607 (base32
3608 "15ywnqx0719jl9c25yqfshmwcir57i5f4hr1ra9v9vay9ylcwndr"))))
3609 (build-system ruby-build-system)
3610 (arguments
3611 '(#:phases
3612 (modify-phases %standard-phases
3613 (add-after 'extract-gemspec 'remove-unnecessary-dependency-versions
3614 (lambda _
3615 (substitute* "minitest-around.gemspec"
3616 (("%q<cucumber>.*") "%q<cucumber>, [\">= 0\"])\n"))
3617 #t)))))
3618 (propagated-inputs
3619 `(("ruby-minitest" ,ruby-minitest)))
3620 (native-inputs
3621 `(("bundler" ,bundler)
3622 ("ruby-cucumber" ,ruby-cucumber)
3623 ("ruby-bump" ,ruby-bump)
3624 ("ruby-test-construct" ,ruby-test-construct)))
3625 (synopsis "Run code around tests in Minitest")
3626 (description
3627 "This library provides a way to run code around tests in Minitest,
3628written using either the unit test or spec style.")
3629 (home-page "https://github.com/splattael/minitest-around")
3630 (license license:expat)))
3631
35130835
DT
3632(define-public ruby-minitest-sprint
3633 (package
3634 (name "ruby-minitest-sprint")
3635 (version "1.1.0")
3636 (source (origin
e83c6d00
DT
3637 (method url-fetch)
3638 (uri (rubygems-uri "minitest-sprint" version))
35130835
DT
3639 (sha256
3640 (base32
e83c6d00 3641 "179d6pj56l9xzm46fqsqj10mzjkr1f9fv4cxa8wvchs97hqz33w1"))))
35130835 3642 (build-system ruby-build-system)
35130835
DT
3643 (native-inputs
3644 `(("ruby-hoe" ,ruby-hoe)
3645 ("ruby-minitest" ,ruby-minitest)))
3646 (synopsis "Fast test suite runner for minitest")
3647 (description "Minitest-sprint is a test runner for minitest that makes it
3648easier to re-run individual failing tests.")
3649 (home-page "https://github.com/seattlerb/minitest-sprint")
3650 (license license:expat)))
3651
0808e361
DT
3652(define-public ruby-minitest-bacon
3653 (package
3654 (name "ruby-minitest-bacon")
6f9652b0 3655 (version "1.0.3")
0808e361 3656 (source (origin
e83c6d00
DT
3657 (method url-fetch)
3658 (uri (rubygems-uri "minitest-bacon" version))
0808e361
DT
3659 (sha256
3660 (base32
6f9652b0 3661 "0zhdwcl6bgha61qiyfvr7zs7ywaxc33wmj9xhxl8jdmpdvifvfaj"))))
0808e361 3662 (build-system ruby-build-system)
0808e361
DT
3663 (native-inputs
3664 `(("ruby-hoe" ,ruby-hoe)))
3665 (inputs
3666 `(("ruby-minitest" ,ruby-minitest)))
3667 (synopsis "Bacon compatibility library for minitest")
3668 (description "Minitest-bacon extends minitest with bacon-like
3669functionality, making it easier to migrate test suites from bacon to minitest.")
3670 (home-page "https://github.com/seattlerb/minitest-bacon")
3671 (license license:expat)))
3672
39dc0eb5
BW
3673(define-public ruby-minitest-focus
3674 (package
3675 (name "ruby-minitest-focus")
3676 (version "1.1.2")
3677 (source
3678 (origin
3679 (method url-fetch)
3680 (uri (rubygems-uri "minitest-focus" version))
3681 (sha256
3682 (base32
3683 "1zgjslp6d7dzcn8smj595idymgd5j603p9g2jqkfgi28sqbhz6m0"))))
3684 (build-system ruby-build-system)
3685 (propagated-inputs
3686 `(("ruby-minitest" ,ruby-minitest)))
3687 (native-inputs
3688 `(("ruby-hoe" ,ruby-hoe)))
3689 (synopsis "Allows a few specific tests to be focused on")
3690 (description
3691 "@code{minitest-focus} gives the ability focus on a few tests with ease
3692without having to use command-line arguments. It introduces a @code{focus}
3693class method for use in testing classes, specifying that the next defined test
3694is to be run.")
3695 (home-page "https://github.com/seattlerb/minitest-focus")
3696 (license license:expat)))
3697
99fc5cd5
BW
3698(define-public ruby-minitest-pretty-diff
3699 ;; Use git reference because gem is out of date and does not contain testing
3700 ;; script. There are no releases on GitHub.
3701 (let ((commit "11f32e930f574225432f42e5e1ef6e7471efe572"))
3702 (package
3703 (name "ruby-minitest-pretty-diff")
3704 (version (string-append "0.1-1." (string-take commit 8)))
3705 (source (origin
3706 (method git-fetch)
3707 (uri (git-reference
3708 (url "https://github.com/adammck/minitest-pretty_diff.git")
3709 (commit commit)))
3710 (file-name (string-append name "-" version "-checkout"))
3711 (sha256
3712 (base32
3713 "13y5dhmcckhzd83gj1nfwh41iykbjcm2w7y4pr6j6rpqa5as122r"))))
3714 (build-system ruby-build-system)
3715 (arguments
3716 `(#:phases
3717 (modify-phases %standard-phases
3718 (replace 'check
3719 (lambda _
9923d5a4 3720 (invoke "script/test"))))))
99fc5cd5
BW
3721 (native-inputs
3722 `(("bundler" ,bundler)
3723 ("ruby-turn" ,ruby-turn)))
3724 (synopsis "Pretty-print hashes and arrays in MiniTest")
3725 (description
3726 "@code{minitest-pretty_diff} monkey-patches
3727@code{MiniTest::Assertions#mu_pp} to pretty-print hashes and arrays before
3728diffing them. This makes it easier to spot differences between nested
3729structures when tests fail.")
3730 (home-page "https://github.com/adammck/minitest-pretty_diff")
3731 (license license:expat))))
3732
685d0d2f
BW
3733(define-public ruby-minitest-moar
3734 (package
3735 (name "ruby-minitest-moar")
3736 (version "0.0.4")
3737 (source
3738 (origin
3739 (method url-fetch)
3740 (uri (rubygems-uri "minitest-moar" version))
3741 (sha256
3742 (base32
3743 "0nb83blrsab92gcy6nfpw39njys7zisia8pw4igzzfzfl51cis0x"))))
3744 (build-system ruby-build-system)
3745 (arguments
3746 `(#:phases
3747 (modify-phases %standard-phases
3748 (add-before 'check 'clean-dependencies
3749 (lambda _
3750 ;; Remove all gems defined in the Gemfile because these are not
3751 ;; truly needed.
3752 (substitute* "Gemfile"
3753 (("gem .*") ""))
3754 ;; Remove byebug as not needed to run tests.
3755 (substitute* "test/test_helper.rb"
3756 (("require 'byebug'") ""))
3757 #t)))))
3758 (native-inputs
3759 `(("bundler" ,bundler)
3760 ("ruby-minitest" ,ruby-minitest)))
3761 (synopsis "Extra features and changes to MiniTest")
3762 (description "@code{MiniTest Moar} add some additional features and
3763changes some default behaviours in MiniTest. For instance, Moar replaces the
3764MiniTest @code{Object#stub} with a global @code{stub} method.")
3765 (home-page "https://github.com/dockyard/minitest-moar")
3766 (license license:expat)))
3767
e07ef1d6
BW
3768(define-public ruby-minitest-bonus-assertions
3769 (package
3770 (name "ruby-minitest-bonus-assertions")
c9e261b7 3771 (version "3.0")
e07ef1d6
BW
3772 (source
3773 (origin
3774 (method url-fetch)
3775 (uri (rubygems-uri "minitest-bonus-assertions" version))
3776 (sha256
3777 (base32
c9e261b7 3778 "1hbq9jk904xkz868yha1bqcm6azm7kmjsll2k4pn2nrcib508h2a"))))
e07ef1d6
BW
3779 (build-system ruby-build-system)
3780 (arguments
3781 `(#:phases
3782 (modify-phases %standard-phases
3783 (add-before 'check 'clean-dependencies
3784 (lambda _
3785 ;; Remove unneeded require statement that would entail another
3786 ;; dependency.
3787 (substitute* "test/minitest_config.rb"
3788 (("require 'minitest/bisect'") ""))
3789 #t)))))
3790 (native-inputs
3791 `(("ruby-hoe" ,ruby-hoe)
3792 ("ruby-minitest-pretty-diff" ,ruby-minitest-pretty-diff)
3793 ("ruby-minitest-focus" ,ruby-minitest-focus)
3794 ("ruby-minitest-moar" ,ruby-minitest-moar)))
3795 (synopsis "Bonus assertions for @code{Minitest}")
3796 (description
3797 "Minitest bonus assertions provides extra MiniTest assertions. For
3798instance, it provides @code{assert_true}, @code{assert_false} and
3799@code{assert_set_equal}.")
3800 (home-page "https://github.com/halostatue/minitest-bonus-assertions")
3801 (license license:expat)))
3802
e2c9a9cc
CB
3803(define-public ruby-minitest-reporters
3804 (package
3805 (name "ruby-minitest-reporters")
3806 (version "1.3.6")
3807 (source
3808 (origin
3809 (method url-fetch)
3810 (uri (rubygems-uri "minitest-reporters" version))
3811 (sha256
3812 (base32
3813 "1a3das80rwgys5rj48i5ly144nvszyqyi748bk9bss74jblcf5ay"))))
3814 (build-system ruby-build-system)
3815 (arguments
3816 '(#:phases
3817 (modify-phases %standard-phases
3818 ;; Remove the requirement on Rubocop, as it isn't useful to run, and
3819 ;; including it as an input can lead to circular dependencies.
3820 (add-after 'unpack 'remove-rubocop-from-Rakefile
3821 (lambda _
3822 (substitute* "Rakefile"
3823 (("require 'rubocop/rake\\_task'") "")
3824 (("RuboCop::RakeTask\\.new\\(:rubocop\\)") "[].each"))
3825 #t))
3826 (add-after 'extract-gemspec 'remove-rubocop-from-gemspec
3827 (lambda _
3828 (substitute* "minitest-reporters.gemspec"
3829 ((".*%q<rubocop>.*") "\n"))
3830 #t)))))
3831 (propagated-inputs
3832 `(("ruby-ansi" ,ruby-ansi)
3833 ("ruby-builder" ,ruby-builder)
3834 ("ruby-minitest" ,ruby-minitest)
3835 ("ruby-progressbar" ,ruby-progressbar)))
3836 (native-inputs
3837 `(("bundler" ,bundler)
3838 ("ruby-maruku" ,ruby-maruku)))
3839 (synopsis "Enhanced reporting for Minitest tests")
3840 (description
3841 "@code{minitest/reporters} provides a custom Minitest runner to improve
3842how the test state is reported. A number of different reporters are
3843available, including a spec reporter, progress bar reporter, a HTML
3844reporter.")
3845 (home-page "https://github.com/kern/minitest-reporters")
3846 (license license:expat)))
3847
e582fa93
BW
3848(define-public ruby-minitest-rg
3849 (package
3850 (name "ruby-minitest-rg")
3851 (version "5.2.0")
3852 (source
3853 (origin
3854 (method url-fetch)
3855 (uri (rubygems-uri "minitest-rg" version))
3856 (sha256
3857 (base32
3858 "0sq509ax1x62rd0w10b0hcydcxyk5bxxr3fwrgxv02r8drq2r354"))))
3859 (build-system ruby-build-system)
3860 (arguments
3861 ;; Some tests fail even outside Guix, so disable tests.
3862 ;; https://github.com/blowmage/minitest-rg/issues/12
3863 ;; https://github.com/blowmage/minitest-rg/pull/13
3864 `(#:tests? #f))
3865 (propagated-inputs
3866 `(("ruby-minitest" ,ruby-minitest)))
3867 (synopsis "Coloured output for Minitest")
3868 (description
3869 "@code{minitest-rg} changes the colour of the output from Minitest.")
8e486e80 3870 (home-page "https://blowmage.com/minitest-rg/")
e582fa93
BW
3871 (license license:expat)))
3872
2a96dbe6
BW
3873(define-public ruby-minitest-hooks
3874 (package
3875 (name "ruby-minitest-hooks")
eaaf8b12 3876 (version "1.4.2")
2a96dbe6
BW
3877 (source
3878 (origin
3879 (method url-fetch)
3880 (uri (rubygems-uri "minitest-hooks" version))
3881 (sha256
3882 (base32
eaaf8b12 3883 "0lnpvzijbjrvxjc43d155jnbk2mkfshrz22an711wh004scavlzc"))))
2a96dbe6
BW
3884 (build-system ruby-build-system)
3885 (arguments
3886 '(#:test-target "spec"))
3887 (native-inputs
3888 `(("ruby-sequel" ,ruby-sequel)
3889 ("ruby-sqlite3" ,ruby-sqlite3)))
3890 (synopsis "Hooks for the minitest framework")
3891 (description
3892 "Minitest-hooks adds @code{around}, @code{before_all}, @code{after_all},
3893@code{around_all} hooks for Minitest. This allows, for instance, running each
3894suite of specs inside a database transaction, running each spec inside its own
3895savepoint inside that transaction. This can significantly speed up testing
3896for specs that share expensive database setup code.")
7bf837fd 3897 (home-page "https://github.com/jeremyevans/minitest-hooks")
2a96dbe6
BW
3898 (license license:expat)))
3899
afbbdf77
DT
3900(define-public ruby-daemons
3901 (package
3902 (name "ruby-daemons")
f03153db 3903 (version "1.2.5")
afbbdf77
DT
3904 (source (origin
3905 (method url-fetch)
e83c6d00 3906 (uri (rubygems-uri "daemons" version))
afbbdf77
DT
3907 (sha256
3908 (base32
f03153db 3909 "15smbsg0gxb7nf0nrlnplc68y0cdy13dm6fviavpmw7c630sring"))))
afbbdf77
DT
3910 (build-system ruby-build-system)
3911 (arguments
3912 `(#:tests? #f)) ; no test suite
3913 (synopsis "Daemonize Ruby programs")
3914 (description "Daemons provides a way to wrap existing Ruby scripts to be
3915run as a daemon and to be controlled by simple start/stop/restart commands.")
3916 (home-page "https://github.com/thuehlinger/daemons")
3917 (license license:expat)))
b03eb6ac
CB
3918
3919(define-public ruby-data_uri
3920 (package
3921 (name "ruby-data_uri")
3922 (version "0.1.0")
3923 (source
3924 (origin
3925 (method url-fetch)
3926 (uri (rubygems-uri "data_uri" version))
3927 (sha256
3928 (base32
3929 "0fzkxgdxrlbfl4537y3n9mjxbm28kir639gcw3x47ffchwsgdcky"))))
3930 (build-system ruby-build-system)
3931 (synopsis "URI class for parsing data URIs")
3932 (description
3933 "Data @acronym{URI, universal resource idenfitier}s allow resources to be
3934embedded inside a URI. The URI::Data class provides support for parsing these
3935URIs using the normal URI.parse method.")
3936 (home-page "https://github.com/dball/data_uri")
3937 (license license:expat)))
66e20863 3938
72c785f9
MB
3939(define-public ruby-deep-merge
3940 (package
3941 (name "ruby-deep-merge")
3942 (version "1.2.1")
3943 (home-page "https://github.com/danielsdeleo/deep_merge")
3944 ;; The Rubygem source does not contain the gemspec required for tests.
3945 (source (origin
3946 (method git-fetch)
3947 (uri (git-reference (url home-page) (commit version)))
3948 (file-name (git-file-name name version))
3949 (sha256
3950 (base32
3951 "0c9rk23ilhc0n4489y6lda2wzphpzh6ish6fahlbpjhxn82wb931"))))
3952 (build-system ruby-build-system)
3953 (native-inputs
3954 `(("ruby-minitest" ,ruby-minitest)))
3955 (synopsis "Recursively merge hashes")
3956 (description
3957 "Deep Merge is a set of utility functions for @code{Hash}. It permits
3958you to merge elements inside a hash together recursively.")
3959 (license license:expat)))
3960
66e20863
DT
3961(define-public ruby-git
3962 (package
3963 (name "ruby-git")
ceaff59e 3964 (version "1.3.0")
66e20863
DT
3965 (source (origin
3966 (method url-fetch)
e83c6d00 3967 (uri (rubygems-uri "git" version))
66e20863
DT
3968 (sha256
3969 (base32
ceaff59e 3970 "1waikaggw7a1d24nw0sh8fd419gbf7awh000qhsf411valycj6q3"))))
66e20863
DT
3971 (build-system ruby-build-system)
3972 (arguments
e83c6d00
DT
3973 `(#:tests? #f ; no tests
3974 #:phases (modify-phases %standard-phases
3975 (add-after 'install 'patch-git-binary
3976 (lambda* (#:key inputs outputs #:allow-other-keys)
66e20863
DT
3977 ;; Make the default git binary an absolute path to the
3978 ;; store.
e83c6d00
DT
3979 (let ((git (string-append (assoc-ref inputs "git")
3980 "/bin/git"))
3cb3fa67
CB
3981 (config (string-append
3982 (assoc-ref outputs "out")
3983 "/lib/ruby/vendor_ruby/gems/git-"
3984 ,version "/lib/git/config.rb")))
e83c6d00 3985 (substitute* (list config)
66e20863
DT
3986 (("'git'")
3987 (string-append "'" git "'")))
e83c6d00 3988 #t))))))
66e20863
DT
3989 (inputs
3990 `(("git" ,git)))
3991 (synopsis "Ruby wrappers for Git")
3992 (description "Ruby/Git is a Ruby library that can be used to create, read
3993and manipulate Git repositories by wrapping system calls to the git binary.")
3994 (home-page "https://github.com/schacon/ruby-git")
3995 (license license:expat)))
71d3e2c2 3996
95598153
MB
3997(define-public ruby-hocon
3998 (package
3999 (name "ruby-hocon")
fd13ec5f 4000 (version "1.3.1")
95598153
MB
4001 (home-page "https://github.com/puppetlabs/ruby-hocon")
4002 (source (origin
4003 (method git-fetch)
4004 (uri (git-reference (url home-page) (commit version)))
4005 (file-name (git-file-name name version))
4006 (sha256
4007 (base32
fd13ec5f 4008 "172hh2zr0n9nnszv0qvlgwszgkrq84yahrg053m68asy79zpmbqr"))))
95598153
MB
4009 (build-system ruby-build-system)
4010 (arguments
4011 '(#:phases (modify-phases %standard-phases
4012 (replace 'check
4013 (lambda* (#:key tests? #:allow-other-keys)
4014 (if tests?
4015 (invoke "rspec")
4016 (format #t "test suite not run~%"))
4017 #t)))))
4018 (native-inputs
4019 `(("bundler" ,bundler)
4020 ("ruby-rspec" ,ruby-rspec)))
4021 (synopsis "HOCON config library")
4022 (description
4023 "This package provides Ruby support for the @acronym{HOCON,
4024Human-Optimized Config Object Notation} configuration file format. It
4025supports parsing and modifying HOCON and JSON files, and rendering parsed
4026objects back to a @code{String}.")
4027 (license license:asl2.0)))
4028
71d3e2c2
DT
4029(define-public ruby-slop
4030 (package
4031 (name "ruby-slop")
d14e5eaa 4032 (version "4.5.0")
71d3e2c2
DT
4033 (source (origin
4034 (method url-fetch)
e83c6d00 4035 (uri (rubygems-uri "slop" version))
71d3e2c2
DT
4036 (sha256
4037 (base32
d14e5eaa 4038 "0bfm8535g0rkn9cbjndkckf0f7a3wj0rg4rqhrpsgxnbfdf2lm0p"))))
71d3e2c2
DT
4039 (build-system ruby-build-system)
4040 (native-inputs
4041 `(("ruby-minitest" ,ruby-minitest)))
4042 (synopsis "Ruby command line option parser")
4043 (description "Slop provides a Ruby domain specific language for gathering
4044options and parsing command line flags.")
4045 (home-page "https://github.com/leejarvis/slop")
4046 (license license:expat)))
e778a549 4047
5337f8b9
DT
4048(define-public ruby-slop-3
4049 (package (inherit ruby-slop)
4050 (version "3.6.0")
4051 (source (origin
4052 (method url-fetch)
4053 (uri (rubygems-uri "slop" version))
4054 (sha256
4055 (base32
4056 "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n"))))))
4057
ca914b5b
CB
4058(define-public ruby-multi-xml
4059 (package
4060 (name "ruby-multi-xml")
4061 (version "0.6.0")
4062 (source
4063 (origin
4064 (method url-fetch)
4065 (uri (rubygems-uri "multi_xml" version))
4066 (sha256
4067 (base32
4068 "0lmd4f401mvravi1i1yq7b2qjjli0yq7dfc4p1nj5nwajp7r6hyj"))))
4069 (build-system ruby-build-system)
4070 (arguments
4071 '(#:tests? #f)) ; No included tests
4072 (synopsis "Swappable XML backends for Ruby")
4073 (description
4074 "@code{MultiXml} provides swappable XML backends utilizing either LibXML,
4075Nokogiri, Ox, or REXML.")
4076 (home-page "https://github.com/sferik/multi_xml")
4077 (license license:expat)))
4078
e778a549
DT
4079(define-public ruby-multipart-post
4080 (package
4081 (name "ruby-multipart-post")
4082 (version "2.0.0")
4083 (source (origin
4084 (method url-fetch)
e83c6d00 4085 (uri (rubygems-uri "multipart-post" version))
e778a549
DT
4086 (sha256
4087 (base32
e83c6d00 4088 "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x"))))
e778a549
DT
4089 (build-system ruby-build-system)
4090 (native-inputs
4091 `(("bundler" ,bundler)))
4092 (synopsis "Multipart POST library for Ruby")
4093 (description "Multipart-Post Adds multipart POST capability to Ruby's
4094net/http library.")
4095 (home-page "https://github.com/nicksieger/multipart-post")
4096 (license license:expat)))
f8da3af0 4097
9a97e7ce
CB
4098(define-public ruby-multi-json
4099 (package
4100 (name "ruby-multi-json")
1b6f5475 4101 (version "1.13.1")
9a97e7ce
CB
4102 (source
4103 (origin
b872b47b 4104 (method git-fetch)
1b6f5475
BW
4105 ;; Tests are not distributed at rubygems.org so download from GitHub
4106 ;; instead.
b872b47b
EF
4107 (uri (git-reference
4108 (url "https://github.com/intridea/multi_json")
4109 (commit (string-append "v" version))))
4110 (file-name (git-file-name name version))
9a97e7ce
CB
4111 (sha256
4112 (base32
b872b47b 4113 "18wpb6p01rrkl4v33byh70vxj2a5jxkfxzv3pz8z6pssy4ymwkm4"))))
9a97e7ce
CB
4114 (build-system ruby-build-system)
4115 (arguments
1b6f5475
BW
4116 `(#:phases
4117 (modify-phases %standard-phases
4118 (add-after 'unpack 'remove-signing-key-reference
4119 (lambda _
4120 (substitute* "multi_json.gemspec"
4121 ((".*spec.signing_key.*") ""))
4122 #t)))))
4123 (native-inputs
4124 `(("bundler" ,bundler)
4125 ("ruby-rspec" ,ruby-rspec)
4126 ("ruby-yard" ,ruby-yard)
4127 ("ruby-json-pure" ,ruby-json-pure)
4128 ("ruby-oj" ,ruby-oj)
4129 ("ruby-yajl-ruby" ,ruby-yajl-ruby)))
9a97e7ce
CB
4130 (synopsis "Common interface to multiple JSON libraries for Ruby")
4131 (description
4132 "This package provides a common interface to multiple JSON libraries,
4133including Oj, Yajl, the JSON gem (with C-extensions), the pure-Ruby JSON gem,
4134NSJSONSerialization, gson.rb, JrJackson, and OkJson.")
1b6f5475 4135 (home-page "https://github.com/intridea/multi_json")
9a97e7ce
CB
4136 (license license:expat)))
4137
5edef88b
BW
4138(define-public ruby-multi-test
4139 (package
4140 (name "ruby-multi-test")
4141 (version "0.1.2")
4142 (source
4143 (origin
4144 (method url-fetch)
4145 (uri (rubygems-uri "multi_test" version))
4146 (sha256
4147 (base32
4148 "1sx356q81plr67hg16jfwz9hcqvnk03bd9n75pmdw8pfxjfy1yxd"))))
4149 (build-system ruby-build-system)
4150 (arguments
4151 '(;; Tests require different sets of specific gem versions to be available,
4152 ;; and there is no gemfile that specifies the newest versions of
4153 ;; dependencies to be tested.
4154 #:tests? #f))
4155 (synopsis
4156 "Interface to testing libraries loaded into a running Ruby process")
4157 (description
4158 "@code{multi_test} provides a uniform interface onto whatever testing
4159libraries that have been loaded into a running Ruby process to help control
4160rogue test/unit/autorun requires.")
4161 (home-page "https://github.com/cucumber/multi_test")
9a97e7ce
CB
4162 (license license:expat)))
4163
f8da3af0
DT
4164(define-public ruby-arel
4165 (package
4166 (name "ruby-arel")
aecd533d 4167 (version "9.0.0")
f8da3af0
DT
4168 (source (origin
4169 (method url-fetch)
4170 (uri (rubygems-uri "arel" version))
4171 (sha256
4172 (base32
aecd533d 4173 "1jk7wlmkr61f6g36w9s2sn46nmdg6wn2jfssrhbhirv5x9n95nk0"))))
f8da3af0
DT
4174 (build-system ruby-build-system)
4175 (arguments '(#:tests? #f)) ; no tests
4176 (home-page "https://github.com/rails/arel")
4177 (synopsis "SQL AST manager for Ruby")
6f23e2fb
TGR
4178 (description "Arel is an SQL @dfn{Abstract Syntax Tree} (AST) manager for
4179Ruby. It simplifies the generation of complex SQL queries and adapts to
4180various relational database implementations.")
f8da3af0 4181 (license license:expat)))
616eaead 4182
554bf4f6
CB
4183(define-public ruby-marcel
4184 (package
4185 (name "ruby-marcel")
4186 (version "0.3.3")
4187 (source
4188 (origin
4189 (method url-fetch)
4190 (uri (rubygems-uri "marcel" version))
4191 (sha256
4192 (base32
4193 "1nxbjmcyg8vlw6zwagf17l9y2mwkagmmkg95xybpn4bmf3rfnksx"))))
4194 (build-system ruby-build-system)
4195 (arguments
4196 '(;; No included tests
4197 #:tests? #f))
4198 (propagated-inputs
4199 `(("ruby-mimemagic" ,ruby-mimemagic)))
4200 (synopsis "MIME type detection using magic numbers, filenames and extensions")
4201 (description
4202 "@code{marcel} provides @acronym{MIME, Multipurpose Internet Mail
4203Extensions} type detection using magic numbers, filenames, and extensions")
4204 (home-page "https://github.com/basecamp/marcel")
4205 (license license:expat)))
4206
616eaead 4207(define-public ruby-minitar
bfaf8efd
BW
4208 ;; We package from the GitHub source to fix the security issue reported at
4209 ;; https://github.com/halostatue/minitar/issues/16.
4210 (let ((commit "e25205ecbb6277ae8a3df1e6a306d7ed4458b6e4"))
4211 (package
4212 (name "ruby-minitar")
4213 (version (string-append "0.5.4-1." (string-take commit 8)))
4214 (source
4215 (origin
4216 (method git-fetch)
4217 (uri (git-reference
4218 (url "https://github.com/halostatue/minitar.git")
4219 (commit commit)))
4220 (file-name (string-append name "-" version "-checkout"))
4221 (sha256
4222 (base32
4223 "1iywfx07jgjqcmixzkxk9zdwfmij1fyg1z2jlwzj15cj7s99qlfv"))))
4224 (build-system ruby-build-system)
4225 (arguments
4226 '(#:tests? #f)) ; missing a gemspec
4227 (synopsis "Ruby library and utility for handling tar archives")
4228 (description
4229 "Archive::Tar::Minitar is a pure-Ruby library and command-line utility
616eaead 4230that provides the ability to deal with POSIX tar archive files.")
bfaf8efd
BW
4231 (home-page "http://www.github.com/atoulme/minitar")
4232 (license (list license:gpl2+ license:ruby)))))
bea1c0e2
DT
4233
4234(define-public ruby-mini-portile
4235 (package
4236 (name "ruby-mini-portile")
4237 (version "0.6.2")
4238 (source
4239 (origin
4240 (method url-fetch)
4241 (uri (rubygems-uri "mini_portile" version))
4242 (sha256
4243 (base32
4244 "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w"))))
4245 (build-system ruby-build-system)
4246 (arguments
4247 '(#:tests? #f)) ; tests require network access
4248 (synopsis "Ports system for Ruby developers")
4249 (description "Mini-portile is a port/recipe system for Ruby developers.
4250It provides a standard way to compile against specific versions of libraries
4251to reproduce user environments.")
7bf837fd 4252 (home-page "https://github.com/flavorjones/mini_portile")
bea1c0e2 4253 (license license:expat)))
e920bfca 4254
d000fc92
BW
4255(define-public ruby-mini-portile-2
4256 (package (inherit ruby-mini-portile)
a88ac044 4257 (version "2.4.0")
d000fc92
BW
4258 (source (origin
4259 (method url-fetch)
4260 (uri (rubygems-uri "mini_portile2" version))
4261 (sha256
4262 (base32
a88ac044 4263 "15zplpfw3knqifj9bpf604rb3wc1vhq6363pd6lvhayng8wql5vy"))))))
d000fc92 4264
e920bfca
DT
4265(define-public ruby-nokogiri
4266 (package
4267 (name "ruby-nokogiri")
62cc7344 4268 (version "1.10.9")
e920bfca
DT
4269 (source (origin
4270 (method url-fetch)
4271 (uri (rubygems-uri "nokogiri" version))
4272 (sha256
4273 (base32
62cc7344 4274 "12j76d0bp608932xkzmfi638c7aqah57l437q8494znzbj610qnm"))))
e920bfca
DT
4275 (build-system ruby-build-system)
4276 (arguments
4277 ;; Tests fail because Nokogiri can only test with an installed extension,
4278 ;; and also because many test framework dependencies are missing.
7b01f250 4279 `(#:tests? #f
e920bfca
DT
4280 #:gem-flags (list "--" "--use-system-libraries"
4281 (string-append "--with-xml2-include="
4282 (assoc-ref %build-inputs "libxml2")
5e7f1b0b
BW
4283 "/include/libxml2" ))
4284 #:phases
4285 (modify-phases %standard-phases
7b01f250
BW
4286 (add-before 'build 'patch-extconf
4287 ;; 'pkg-config' is not included in the GEM_PATH during
4288 ;; installation, so we add it directly to the load path.
4289 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 4290 (let* ((pkg-config (assoc-ref inputs "ruby-pkg-config")))
7b01f250
BW
4291 (substitute* "ext/nokogiri/extconf.rb"
4292 (("gem 'pkg-config'.*")
4293 (string-append "$:.unshift '"
3cb3fa67 4294 pkg-config "/lib/ruby/vendor_ruby"
7b01f250
BW
4295 "/gems/pkg-config-"
4296 ,(package-version ruby-pkg-config)
4297 "/lib'\n"))))
5e7f1b0b 4298 #t)))))
e920bfca 4299 (native-inputs
7b01f250 4300 `(("ruby-hoe" ,ruby-hoe)))
e920bfca
DT
4301 (inputs
4302 `(("zlib" ,zlib)
4303 ("libxml2" ,libxml2)
4304 ("libxslt" ,libxslt)))
4305 (propagated-inputs
7b01f250
BW
4306 `(("ruby-mini-portile" ,ruby-mini-portile-2)
4307 ("ruby-pkg-config" ,ruby-pkg-config)))
e920bfca
DT
4308 (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
4309 (description "Nokogiri (鋸) parses and searches XML/HTML, and features
4310both CSS3 selector and XPath 1.0 support.")
4311 (home-page "http://www.nokogiri.org/")
4312 (license license:expat)))
30b0b725
DT
4313
4314(define-public ruby-method-source
4315 (package
4316 (name "ruby-method-source")
ec08f469 4317 (version "1.0.0")
30b0b725
DT
4318 (source
4319 (origin
4320 (method url-fetch)
4321 (uri (rubygems-uri "method_source" version))
4322 (sha256
4323 (base32
ec08f469 4324 "1pnyh44qycnf9mzi1j6fywd5fkskv3x7nmsqrrws0rjn5dd4ayfp"))))
30b0b725 4325 (build-system ruby-build-system)
c8355037
BW
4326 (arguments
4327 `(#:test-target "spec"))
30b0b725 4328 (native-inputs
c8355037 4329 `(("ruby-rspec" ,ruby-rspec)
30b0b725
DT
4330 ("git" ,git)))
4331 (synopsis "Retrieve the source code for Ruby methods")
4332 (description "Method_source retrieves the source code for Ruby methods.
4333Additionally, it can extract source code from Proc and Lambda objects or just
4334extract comments.")
4335 (home-page "https://github.com/banister/method_source")
4336 (license license:expat)))
2e3fdea4
DT
4337
4338(define-public ruby-coderay
4339 (package
4340 (name "ruby-coderay")
5cf0997a 4341 (version "1.1.2")
2e3fdea4
DT
4342 (source
4343 (origin
4344 (method url-fetch)
4345 (uri (rubygems-uri "coderay" version))
4346 (sha256
4347 (base32
5cf0997a 4348 "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y"))))
2e3fdea4
DT
4349 (build-system ruby-build-system)
4350 (arguments
4351 '(#:tests? #f)) ; missing test files
4352 (synopsis "Ruby syntax highlighting library")
4353 (description "Coderay is a Ruby library that provides syntax highlighting
4354for select languages.")
4355 (home-page "http://coderay.rubychan.de")
4356 (license license:expat)))
96e76083 4357
f9083965
MC
4358(define-public ruby-cuke-modeler
4359 (package
4360 (name "ruby-cuke-modeler")
4361 (version "3.1.0")
4362 (source
4363 (origin
4364 (method url-fetch)
4365 (uri (rubygems-uri "cuke_modeler" version))
4366 (sha256
4367 (base32
4368 "19smj3g3wvz0203l549sadpcxgh0ir350a6k78gq0bmlv9cchmjb"))))
4369 (build-system ruby-build-system)
4370 (arguments `(#:tests? #f)) ;no test suite in gem
4371 (propagated-inputs
4372 `(("ruby-gherkin" ,ruby-gherkin)))
4373 (synopsis "Gherkin test suite analysis tool")
4374 (description "CukeModeler facilitates modeling a test suite that is
4375written in Gherkin (e.g. Cucumber, SpecFlow, Lettuce, etc.). It does this by
4376providing an abstraction layer on top of the Abstract Syntax Tree (AST) that
4377the @code{cucumber-gherkin} generates when parsing features, as well as
4378providing models for feature files and directories in order to be able to have
4379a fully traversable model tree of a test suite's structure. These models can
4380then be analyzed or manipulated more easily than the underlying AST layer.")
4381 (home-page "https://github.com/enkessler/cuke_modeler")
4382 (license license:expat)))
4383
2156cc9c
MB
4384(define-public ruby-parallel-tests
4385 (package
4386 (name "ruby-parallel-tests")
8a01e2fa 4387 (version "3.0.0")
2156cc9c
MB
4388 (home-page "https://github.com/grosser/parallel_tests")
4389 (source (origin
4390 (method git-fetch)
4391 (uri (git-reference
4392 (url home-page)
4393 (commit (string-append "v" version))))
4394 (file-name (string-append name version))
4395 (sha256
4396 (base32
8a01e2fa 4397 "08a6ndqn2dqacmc7yg48k0dh2rfrynvhkd5hiay16dl9m1r9q8pz"))))
2156cc9c
MB
4398 (build-system ruby-build-system)
4399 (arguments
4400 '(#:test-target "default"
4401 #:phases (modify-phases %standard-phases
4402 (add-after 'patch-source-shebangs 'patch-shell-invokations
4403 (lambda _
4404 (substitute* '("lib/parallel_tests/tasks.rb"
4405 "spec/parallel_tests/tasks_spec.rb")
4406 (("/bin/sh") (which "sh"))
4407 (("/bin/bash") (which "bash")))
4408 #t))
4409 (add-before 'check 'remove-version-constraints
4410 (lambda _
4411 ;; Remove hard coded version constraints, instead just
4412 ;; use whatever versions are available in Guix.
4413 (delete-file "Gemfile.lock")
4414 (substitute* "Gemfile"
4415 (("'minitest',.*")
4416 "'minitest'\n")
4417 (("'cucumber',.*")
4418 "'cucumber'\n"))
4419 #t))
4420 (add-before 'check 'disable-rails-test
4421 (lambda _
4422 ;; XXX: This test attempts to download and run the test
4423 ;; suites of multiple Rails versions(!) directly.
4424 (delete-file "spec/rails_spec.rb")
4425 #t))
4426 (add-before 'check 'set-HOME
4427 (lambda _
4428 ;; Some tests check the output of Bundler, and fail when
4429 ;; Bundler warns that /homeless-shelter does not exist.
4430 (setenv "HOME" "/tmp")
4431 #t)))))
4432 (native-inputs
4433 `(("ruby-bump" ,ruby-bump)
4434 ("ruby-cucumber" ,ruby-cucumber)
8a01e2fa 4435 ("ruby-cuke-modeler" ,ruby-cuke-modeler)
2156cc9c
MB
4436 ("ruby-minitest" ,ruby-minitest)
4437 ("ruby-rake" ,ruby-rake)
4438 ("ruby-rspec" ,ruby-rspec)
4439 ("ruby-spinach" ,ruby-spinach)))
4440 (propagated-inputs
4441 `(("ruby-parallel" ,ruby-parallel)))
4442 (synopsis "Run tests in parallel")
4443 (description
4444 "This package can speed up @code{Test::Unit}, @code{RSpec},
4445@code{Cucumber}, and @code{Spinach} tests by running them concurrently
4446across multiple CPU cores.")
4447 (license license:expat)))
4448
54993457
CB
4449(define-public ruby-parser
4450 (package
4451 (name "ruby-parser")
4452 (version "2.6.0.0")
4453 (source
4454 (origin
4455 (method url-fetch)
4456 (uri (rubygems-uri "parser" version))
4457 (sha256
4458 (base32
4459 "1hhz2k5417vr2k1llwqgjdnmyrhlpqicy0y2arr6r1gp04fg9wlm"))))
4460 (build-system ruby-build-system)
4461 (native-inputs
4462 `(("bundler" ,bundler)
4463 ("ruby-cliver" ,ruby-cliver)
4464 ("ruby-simplecov" ,ruby-simplecov)
4465 ("ruby-racc" ,ruby-racc)))
4466 (inputs
4467 `(("ragel" ,ragel)))
4468 (propagated-inputs
4469 `(("ruby-ast" ,ruby-ast)))
4470 (synopsis "Ruby parser written in pure Ruby")
4471 (description
4472 "This package provides a Ruby parser written in pure Ruby.")
4473 (home-page "https://github.com/whitequark/parser")
4474 (license license:expat)))
4475
a8cdfd53
MC
4476(define-public ruby-sexp-processor
4477 (package
4478 (name "ruby-sexp-processor")
4479 (version "4.15.0")
4480 (source
4481 (origin
4482 (method url-fetch)
4483 (uri (rubygems-uri "sexp_processor" version))
4484 (sha256
4485 (base32
4486 "0d1vks77xnd0m3s94a58f9bkdwlaml5qdkmprx279m2s0pc2gv55"))))
4487 (build-system ruby-build-system)
4488 (native-inputs
4489 ;; TODO: Add ruby-minitest-proveit once available.
4490 `(("hoe" ,ruby-hoe)))
4491 (synopsis "ParseTree fork which includes generic S-exp processing tools")
4492 (description "The sexp_processor package is derived from ParseTree, but
4493contrary to ParseTree, it includes all the generic S-exp processing tools.
4494Amongst the included tools are @code{Sexp}, @code{SexpProcessor} and
4495@code{Environment}")
4496 (home-page "https://github.com/seattlerb/sexp_processor")
4497 (license license:expat)))
4498
24be6751
MC
4499(define-public ruby-ruby-parser
4500 (package
4501 (name "ruby-ruby-parser")
4502 (version "3.14.2")
4503 (source
4504 (origin
4505 (method url-fetch)
4506 (uri (rubygems-uri "ruby_parser" version))
4507 (sha256
4508 (base32
4509 "09qcdyjjw3p7g6cjm5m9swkms1xnv35ndiy7yw24cas16qrhha6c"))))
4510 (build-system ruby-build-system)
4511 (native-inputs
4512 `(("hoe" ,ruby-hoe)
4513 ("racc" ,ruby-racc)
4514 ("unifdef" ,unifdef)))
4515 (propagated-inputs
4516 `(("ruby-sexp-processor" ,ruby-sexp-processor)))
4517 (home-page "https://github.com/seattlerb/ruby_parser/")
4518 (synopsis "Ruby parser written in pure Ruby")
4519 (description "The ruby_parser (RP) package provides a Ruby parser written
4520in pure Ruby. It outputs S-expressions which can be manipulated and converted
4521back to Ruby via the @code{ruby2ruby} library.")
4522 (license license:expat)))
4523
16f423cb
CB
4524(define-public ruby-prawn-manual-builder
4525 (package
4526 (name "ruby-prawn-manual-builder")
1d4f0019 4527 (version "0.3.1")
16f423cb
CB
4528 (source
4529 (origin
4530 (method url-fetch)
4531 (uri (rubygems-uri "prawn-manual_builder" version))
4532 (sha256
1d4f0019 4533 (base32 "1vlg5w7wq43g2hgpgra2nrcxj1kb4ayqliz4gmja2rhs037j2vzs"))))
16f423cb
CB
4534 (build-system ruby-build-system)
4535 (arguments
1d4f0019 4536 '(#:tests? #f ; no included tests
16f423cb
CB
4537 #:phases
4538 (modify-phases %standard-phases
4539 (add-after 'extract-gemspec 'patch-gemspec
4540 (lambda _
4541 (substitute* ".gemspec"
4542 ;; Loosen the requirement for pdf-inspector
4543 (("~> 1\\.0\\.7") ">= 0")))))))
4544 (propagated-inputs
4545 `(("ruby-coderay" ,ruby-coderay)))
4546 (synopsis "Tool for writing manuals for Prawn and Prawn accessories")
4547 (description
4548 "This package provides a tool for writing manuals for Prawn and Prawn
4549accessories")
4550 (home-page "https://github.com/prawnpdf/prawn-manual_builder")
4551 (license (list
4552 ;; GPLv2 or GPLv3 or custom license described in LICENSE file
4553 license:gpl2
4554 license:gpl3))))
4555
268643b9
CB
4556(define-public ruby-progress_bar
4557 (package
4558 (name "ruby-progress_bar")
4559 (version "1.1.0")
4560 (source
4561 (origin
4562 (method url-fetch)
4563 (uri (rubygems-uri "progress_bar" version))
4564 (sha256
4565 (base32
4566 "1qc40mr6p1z9a3vlpnsg1zfgk1qswviql2a31y63wpv3vr6b5f48"))))
4567 (build-system ruby-build-system)
4568 (arguments
4569 '(#:test-target "spec"))
4570 (propagated-inputs
4571 `(("ruby-highline" ,ruby-highline)
4572 ("ruby-options" ,ruby-options)))
4573 (native-inputs
4574 `(("bundler" ,bundler)
4575 ("ruby-rspec" ,ruby-rspec)
4576 ("ruby-timecop" ,ruby-timecop)))
4577 (synopsis
4578 "Ruby library for displaying progress bars")
4579 (description
4580 "ProgressBar is a simple library for displaying progress bars. The
4581maximum value is configurable, and additional information can be displayed
4582like the percentage completion, estimated time remaining, elapsed time and
4583rate.")
4584 (home-page "https://github.com/paul/progress_bar")
4585 (license license:wtfpl2)))
4586
95f85d44
CB
4587(define-public ruby-dep
4588 (package
4589 (name "ruby-dep")
4590 (version "1.5.0")
4591 (source
4592 (origin
4593 (method url-fetch)
4594 (uri (rubygems-uri "ruby_dep" version))
4595 (sha256
4596 (base32
4597 "1c1bkl97i9mkcvkn1jks346ksnvnnp84cs22gwl0vd7radybrgy5"))))
4598 (build-system ruby-build-system)
4599 (arguments
4600 '(#:tests? #f)) ; No included tests
4601 (synopsis "Creates a version constraint of supported Rubies")
4602 (description
4603 "This package helps create a version constraint of supported Rubies,
4604suitable for a gemspec file.")
4605 (home-page "https://github.com/e2/ruby_dep")
4606 (license license:expat)))
4607
158a9253
CB
4608(define-public ruby-progressbar
4609 (package
4610 (name "ruby-progressbar")
2d2a2363 4611 (version "1.10.1")
158a9253
CB
4612 (source
4613 (origin
4614 (method url-fetch)
4615 (uri (rubygems-uri "ruby-progressbar" version))
4616 (sha256
2d2a2363 4617 (base32 "1k77i0d4wsn23ggdd2msrcwfy0i376cglfqypkk2q77r2l3408zf"))))
158a9253
CB
4618 (build-system ruby-build-system)
4619 (arguments
4620 '(;; TODO: There looks to be a circular dependency with ruby-fuubar.
4621 #:tests? #f))
4622 (synopsis "Text progress bar library for Ruby")
4623 (description
4624 "Ruby/ProgressBar is an flexible text progress bar library for Ruby.
4625The output can be customized with a formatting system.")
4626 (home-page "https://github.com/jfelchner/ruby-progressbar")
4627 (license license:expat)))
4628
96e76083
DT
4629(define-public ruby-pry
4630 (package
4631 (name "ruby-pry")
a0d93c17 4632 (version "0.13.1")
96e76083
DT
4633 (source
4634 (origin
4635 (method url-fetch)
4636 (uri (rubygems-uri "pry" version))
4637 (sha256
4638 (base32
a0d93c17 4639 "0iyw4q4an2wmk8v5rn2ghfy2jaz9vmw2nk8415nnpx2s866934qk"))))
96e76083
DT
4640 (build-system ruby-build-system)
4641 (arguments
4642 '(#:tests? #f)) ; no tests
4643 (propagated-inputs
4644 `(("ruby-coderay" ,ruby-coderay)
1960d4fd 4645 ("ruby-method-source" ,ruby-method-source)))
96e76083
DT
4646 (synopsis "Ruby REPL")
4647 (description "Pry is an IRB alternative and runtime developer console for
4648Ruby. It features syntax highlighting, a plugin architecture, runtime
4649invocation, and source and documentation browsing.")
a0d93c17 4650 (home-page "https://cobaltbluemedia.com/pryrepl/")
96e76083 4651 (license license:expat)))
1415792a 4652
def7908a
MB
4653(define-public ruby-single-cov
4654 (package
4655 (name "ruby-single-cov")
4656 (version "1.3.2")
4657 (home-page "https://github.com/grosser/single_cov")
4658 (source (origin
4659 (method git-fetch)
4660 (uri (git-reference (url home-page)
4661 (commit (string-append "v" version))))
4662 (file-name (git-file-name name version))
4663 (sha256
4664 (base32
4665 "05qdzpcai1p23a120gb9bxkfl4y73k9hicx34ch2lsk31lgi9bl7"))))
4666 (build-system ruby-build-system)
4667 (arguments
4668 '(#:test-target "default"
4669 #:phases (modify-phases %standard-phases
4670 (replace 'replace-git-ls-files
4671 (lambda _
4672 (substitute* "single_cov.gemspec"
4673 (("`git ls-files lib/ bin/ MIT-LICENSE`")
4674 "`find lib/ bin/ MIT-LICENSE -type f | sort`"))
4675 #t))
4676 (add-before 'check 'remove-version-constraints
4677 (lambda _
4678 (delete-file "Gemfile.lock")
4679 #t))
4680 (add-before 'check 'make-files-writable
4681 (lambda _
4682 ;; Tests need to create local directories and open files
4683 ;; with write permissions.
4684 (for-each make-file-writable
4685 (find-files "specs" #:directories? #t))
4686 #t))
4687 (add-before 'check 'disable-failing-test
4688 (lambda _
4689 ;; XXX: This test copies assets from minitest, but can
4690 ;; not cope with the files being read-only. Just skip
4691 ;; it for now.
4692 (substitute* "specs/single_cov_spec.rb"
4693 (("it \"complains when coverage is bad\"")
4694 "xit \"complains when coverage is bad\""))
4695 #t)))))
4696 (native-inputs
4697 `(("ruby-bump" ,ruby-bump)
4698 ("ruby-minitest" ,ruby-minitest)
4699 ("ruby-rspec" ,ruby-rspec)
4700 ("ruby-simplecov" ,ruby-simplecov)))
4701 (synopsis "Code coverage reporting tool")
4702 (description
4703 "This package provides actionable code coverage reports for Ruby
4704projects. It has very little overhead and can be easily integrated with
4705development tools to catch coverage problems early.")
4706 (license license:expat)))
4707
051deeb7
RW
4708(define-public ruby-guard
4709 (package
4710 (name "ruby-guard")
4711 (version "2.13.0")
4712 (source (origin
3c6128f6 4713 (method git-fetch)
051deeb7
RW
4714 ;; The gem does not include a Rakefile, nor does it contain a
4715 ;; gemspec file, nor does it come with the tests. This is why
4716 ;; we fetch the tarball from Github.
3c6128f6
EF
4717 (uri (git-reference
4718 (url "https://github.com/guard/guard")
4719 (commit (string-append "v" version))))
4720 (file-name (git-file-name name version))
051deeb7
RW
4721 (sha256
4722 (base32
3c6128f6 4723 "16pxcszr0g2jnl3090didxh1d8z5m2mly14m3w4rspb8fmclsnjs"))))
051deeb7
RW
4724 (build-system ruby-build-system)
4725 (arguments
4726 `(#:tests? #f ; tests require cucumber
4727 #:phases
4728 (modify-phases %standard-phases
4729 (add-after 'unpack 'remove-git-ls-files
4730 (lambda* (#:key outputs #:allow-other-keys)
4731 (substitute* "guard.gemspec"
4732 (("git ls-files -z") "find . -type f -print0"))
4733 #t))
4734 (replace 'build
4735 (lambda _
9923d5a4 4736 (invoke "gem" "build" "guard.gemspec"))))))
051deeb7
RW
4737 (propagated-inputs
4738 `(("ruby-formatador" ,ruby-formatador)
4739 ("ruby-listen" ,ruby-listen)
4740 ("ruby-lumberjack" ,ruby-lumberjack)
4741 ("ruby-nenv" ,ruby-nenv)
4742 ("ruby-notiffany" ,ruby-notiffany)
4743 ("ruby-pry" ,ruby-pry)
4744 ("ruby-shellany" ,ruby-shellany)
4745 ("ruby-thor" ,ruby-thor)))
4746 (native-inputs
4747 `(("bundler" ,bundler)
4748 ("ruby-rspec" ,ruby-rspec)))
4749 (synopsis "Tool to handle events on file system modifications")
4750 (description
4751 "Guard is a command line tool to easily handle events on file system
4752modifications. Guard automates various tasks by running custom rules whenever
4753file or directories are modified.")
3c6128f6 4754 (home-page "https://guardgem.org/")
051deeb7
RW
4755 (license license:expat)))
4756
c09bc60d
MB
4757(define-public ruby-spinach
4758 (package
4759 (name "ruby-spinach")
4760 (version "0.11.0")
4761 (home-page "http://github.com/codegram/spinach")
4762 (source (origin
4763 (method url-fetch)
4764 (uri (rubygems-uri "spinach" version))
4765 (sha256
4766 (base32
4767 "1mv053mqz9c8ngqa6wp1ymk2fax6j0yqzax6918akrdr7c3fx3c6"))))
4768 (build-system ruby-build-system)
4769 (arguments
4770 ;; FIXME: Disable tests altogether because they depend on 'capybara'
4771 ;; which in turn depends on many other unpackaged gems. Enable once
4772 ;; capybara is available.
4773 '(#:tests? #f))
4774 (propagated-inputs
4775 `(("ruby-colorize" ,ruby-colorize)
4776 ("ruby-gherkin-ruby" ,ruby-gherkin-ruby)
4777 ("ruby-json" ,ruby-json)))
4778 (synopsis "Gherkin-based BDD framework")
4779 (description
4780 "Spinach is a high-level @acronym{BDD, Behavior-driven development}
4781framework that leverages the expressive @code{Gherkin} language to help you
4782define executable specifications of your code.")
4783 (license license:expat)))
4784
bcbb3cc9
CB
4785(define-public ruby-tilt
4786 (package
4787 (name "ruby-tilt")
c3f15f54 4788 (version "2.0.10")
bcbb3cc9
CB
4789 (source
4790 (origin
c3f15f54
MC
4791 (method git-fetch) ;the distributed gem lacks tests
4792 (uri (git-reference
4793 (url "https://github.com/rtomayko/tilt.git")
4794 (commit (string-append "v" version))))
4795 (file-name (git-file-name name version))
bcbb3cc9
CB
4796 (sha256
4797 (base32
c3f15f54 4798 "0adb7fg7925n2rd9a8kkqz3mgylw2skp9hkh9qc1rnph72mqsm6r"))))
bcbb3cc9
CB
4799 (build-system ruby-build-system)
4800 (arguments
4801 '(#:phases
4802 (modify-phases %standard-phases
4803 (add-after 'unpack 'remove-some-dependencies
4804 (lambda _
4805 (substitute* "Gemfile"
4806 ;; TODO ronn is used for generating the manual
4807 (("gem 'ronn'.*") "\n")
4808 ;; ruby-haml has a runtime dependency on ruby-tilt, so don't
4809 ;; pass it in as a native-input
4810 (("gem 'haml'.*") "\n")
4811 ;; TODO Not all of these gems are packaged for Guix yet:
4812 ;; less, coffee-script, livescript, babel-transpiler,
4813 ;; typescript-node
4814 (("if can_execjs") "if false")
4815 ;; Disable the secondary group to reduce the number of
4816 ;; dependencies. None of the normal approaches work, so patch
4817 ;; the Gemfile instead.
4818 (("group :secondary") "[].each"))
4819 #t)))))
cfa4a318
MC
4820 (propagated-inputs
4821 `(("ruby-pandoc-ruby" ,ruby-pandoc-ruby)
4822 ("ruby-sassc" ,ruby-sassc)))
bcbb3cc9
CB
4823 (native-inputs
4824 `(("bundler" ,bundler)
4825 ("ruby-yard" ,ruby-yard)
4826 ("ruby-builder" ,ruby-builder)
4827 ("ruby-erubis" ,ruby-erubis)
cfa4a318 4828 ("ruby-markaby" ,ruby-markaby)))
bcbb3cc9
CB
4829 (synopsis "Generic interface to multiple Ruby template engines")
4830 (description
4831 "Tilt is a thin interface over a number of different Ruby template
4832engines in an attempt to make their usage as generic as possible.")
4833 (home-page "https://github.com/rtomayko/tilt/")
4834 (license license:expat)))
4835
1415792a
DT
4836(define-public ruby-thread-safe
4837 (package
4838 (name "ruby-thread-safe")
313dd5dd 4839 (version "0.3.6")
1415792a
DT
4840 (source
4841 (origin
4842 (method url-fetch)
4843 (uri (rubygems-uri "thread_safe" version))
4844 (sha256
4845 (base32
313dd5dd 4846 "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy"))))
1415792a
DT
4847 (build-system ruby-build-system)
4848 (arguments
4849 '(#:tests? #f)) ; needs simplecov, among others
4850 (synopsis "Thread-safe utilities for Ruby")
4851 (description "The thread_safe library provides thread-safe collections and
4852utilities for Ruby.")
4853 (home-page "https://github.com/ruby-concurrency/thread_safe")
4854 (license license:asl2.0)))
08a1b701
DT
4855
4856(define-public ruby-tzinfo
4857 (package
4858 (name "ruby-tzinfo")
4237af85 4859 (version "1.2.4")
08a1b701
DT
4860 (source
4861 (origin
4862 (method url-fetch)
4863 (uri (rubygems-uri "tzinfo" version))
4864 (sha256
4865 (base32
4237af85 4866 "09dpbrih054mn42flbbcdpzk2727mzfvjrgqb12zdafhx7p9rrzp"))))
08a1b701 4867 (build-system ruby-build-system)
740fea08
CB
4868 (arguments
4869 '(#:phases
4870 (modify-phases %standard-phases
4871 (add-after 'unpack 'skip-safe-tests
4872 (lambda _
4873 (substitute* "test/test_utils.rb"
4874 (("def safe_test\\(options = \\{\\}\\)")
4875 "def safe_test(options = {})
4876 skip('The Guix build environment has an unsafe load path')"))
4877 #t)))))
08a1b701
DT
4878 (propagated-inputs
4879 `(("ruby-thread-safe" ,ruby-thread-safe)))
4880 (synopsis "Time zone library for Ruby")
4881 (description "TZInfo is a Ruby library that provides daylight savings
4882aware transformations between times in different time zones.")
2f3800e5 4883 (home-page "https://tzinfo.github.io")
1e12924a
BW
4884 (license license:expat)))
4885
4886(define-public ruby-tzinfo-data
4887 (package
4888 (name "ruby-tzinfo-data")
92513191 4889 (version "1.2017.3")
1e12924a
BW
4890 (source
4891 (origin
bb1e7ed0 4892 (method git-fetch)
1e12924a
BW
4893 ;; Download from GitHub because the rubygems version does not contain
4894 ;; Rakefile or tests.
bb1e7ed0
EF
4895 (uri (git-reference
4896 (url "https://github.com/tzinfo/tzinfo-data")
4897 (commit (string-append "v" version))))
4898 (file-name (git-file-name name version))
1e12924a
BW
4899 (sha256
4900 (base32
bb1e7ed0 4901 "0v3phl5l3jrm6waxcszqmj2dkjhqawxfsxb6mss7vkp1hlckqcdp"))
1e12924a
BW
4902 ;; Remove the known test failure.
4903 ;; https://github.com/tzinfo/tzinfo-data/issues/10
4904 ;; https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1587128
4905 (patches (search-patches
4906 "ruby-tzinfo-data-ignore-broken-test.patch"))))
4907 (build-system ruby-build-system)
4908 (propagated-inputs
4909 `(("ruby-tzinfo" ,ruby-tzinfo)))
4910 (synopsis "Data from the IANA Time Zone database")
4911 (description
4912 "This library provides @code{TZInfo::Data}, which contains data from the
4913IANA Time Zone database packaged as Ruby modules for use with @code{TZInfo}.")
2f3800e5 4914 (home-page "https://tzinfo.github.io")
08a1b701 4915 (license license:expat)))
c99e2247 4916
48e6851f
RW
4917(define-public ruby-rb-inotify
4918 (package
4919 (name "ruby-rb-inotify")
32bbfea8 4920 (version "0.9.10")
48e6851f
RW
4921 (source
4922 (origin
4923 (method url-fetch)
4924 (uri (rubygems-uri "rb-inotify" version))
4925 (sha256
4926 (base32
32bbfea8 4927 "0yfsgw5n7pkpyky6a9wkf1g9jafxb0ja7gz0qw0y14fd2jnzfh71"))))
48e6851f
RW
4928 (build-system ruby-build-system)
4929 (arguments
4930 '(#:tests? #f ; there are no tests
4931 #:phases
4932 (modify-phases %standard-phases
4933 ;; Building the gemspec with rake is not working here since it is
4934 ;; generated with Jeweler. It is also unnecessary because the
4935 ;; existing gemspec does not use any development tools to generate a
4936 ;; list of files.
4937 (replace 'build
4938 (lambda _
9923d5a4 4939 (invoke "gem" "build" "rb-inotify.gemspec"))))))
48e6851f
RW
4940 (propagated-inputs
4941 `(("ruby-ffi" ,ruby-ffi)))
4942 (native-inputs
4943 `(("ruby-yard" ,ruby-yard)))
4944 (synopsis "Ruby wrapper for Linux's inotify")
4945 (description "rb-inotify is a simple wrapper over the @code{inotify} Linux
4946kernel subsystem for monitoring changes to files and directories.")
4947 (home-page "https://github.com/nex3/rb-inotify")
4948 (license license:expat)))
4949
a75bdfce
RW
4950(define-public ruby-pry-editline
4951 (package
4952 (name "ruby-pry-editline")
4953 (version "1.1.2")
4954 (source (origin
4955 (method url-fetch)
4956 (uri (rubygems-uri "pry-editline" version))
4957 (sha256
4958 (base32
4959 "1pjxyvdxvw41xw3yyl18pwzix8hbvn6lgics7qcfhjfsf1zs8x1z"))))
4960 (build-system ruby-build-system)
4961 (arguments `(#:tests? #f)) ; no tests included
4962 (native-inputs
4963 `(("bundler" ,bundler)))
4964 (synopsis "Open the current REPL line in an editor")
4965 (description
4966 "This gem provides a plugin for the Ruby REPL to enable opening the
4967current line in an external editor.")
4968 (home-page "https://github.com/tpope/pry-editline")
4969 (license license:expat)))
4970
d3b20a02
RW
4971(define-public ruby-sdoc
4972 (package
4973 (name "ruby-sdoc")
6700dc33 4974 (version "1.1.0")
d3b20a02
RW
4975 (source (origin
4976 (method url-fetch)
4977 (uri (rubygems-uri "sdoc" version))
4978 (sha256
4979 (base32
6700dc33 4980 "1am73dldx1fqlw2xny5vyk00pgkisg6bvs0pa8jjd7c19drjczrd"))))
d3b20a02
RW
4981 (build-system ruby-build-system)
4982 (arguments
4983 `(#:phases
4984 (modify-phases %standard-phases
fc29d5e6 4985 (add-before 'check 'set-rubylib-and-patch-gemfile
d3b20a02 4986 (lambda _
fdf3a68d 4987 (setenv "RUBYLIB" "lib")
fc29d5e6
BW
4988 (substitute* "sdoc.gemspec"
4989 (("s.add_runtime_dependency.*") "\n")
4990 (("s.add_dependency.*") "\n"))
4991 (substitute* "Gemfile"
4992 (("gem \"rake\".*")
4993 "gem 'rake'\ngem 'rdoc'\ngem 'json'\n"))
d3b20a02
RW
4994 #t)))))
4995 (propagated-inputs
4996 `(("ruby-json" ,ruby-json)))
4997 (native-inputs
4998 `(("bundler" ,bundler)
fdf3a68d
BW
4999 ("ruby-minitest" ,ruby-minitest)
5000 ("ruby-hoe" ,ruby-hoe)))
d3b20a02
RW
5001 (synopsis "Generate searchable RDoc documentation")
5002 (description
5003 "SDoc is an RDoc documentation generator to build searchable HTML
5004documentation for Ruby code.")
7bf837fd 5005 (home-page "https://github.com/voloko/sdoc")
d3b20a02
RW
5006 (license license:expat)))
5007
70b002aa
RW
5008(define-public ruby-tins
5009 (package
5010 (name "ruby-tins")
fbefd6ff 5011 (version "1.15.0")
70b002aa
RW
5012 (source (origin
5013 (method url-fetch)
5014 (uri (rubygems-uri "tins" version))
5015 (sha256
5016 (base32
fbefd6ff 5017 "09whix5a7ics6787zrkwjmp16kqyh6560p9f317syks785805f7s"))))
70b002aa
RW
5018 (build-system ruby-build-system)
5019 ;; This gem needs gem-hadar at development time, but gem-hadar needs tins
5020 ;; at runtime. To avoid the dependency on gem-hadar we disable rebuilding
5021 ;; the gemspec.
5022 (arguments
5023 `(#:tests? #f ; there are no tests
5024 #:phases
5025 (modify-phases %standard-phases
5026 (replace 'build
5027 (lambda _
5028 ;; "lib/spruz" is a symlink. Leaving it in the gemspec file
5029 ;; causes an error.
5030 (substitute* "tins.gemspec"
5031 (("\"lib/spruz\", ") ""))
9923d5a4 5032 (invoke "gem" "build" "tins.gemspec"))))))
70b002aa
RW
5033 (synopsis "Assorted tools for Ruby")
5034 (description "Tins is a Ruby library providing assorted tools.")
5035 (home-page "https://github.com/flori/tins")
5036 (license license:expat)))
5037
bc8277e4
RW
5038(define-public ruby-gem-hadar
5039 (package
5040 (name "ruby-gem-hadar")
3fd577e3 5041 (version "1.9.1")
bc8277e4
RW
5042 (source (origin
5043 (method url-fetch)
5044 (uri (rubygems-uri "gem_hadar" version))
5045 (sha256
5046 (base32
3fd577e3 5047 "1zxvd9l95rbks7x3cxn396w0sn7nha5542bf97v8akkn4vm7nby9"))))
bc8277e4
RW
5048 (build-system ruby-build-system)
5049 ;; This gem needs itself at development time. We disable rebuilding of the
5050 ;; gemspec to avoid this loop.
5051 (arguments
5052 `(#:tests? #f ; there are no tests
5053 #:phases
5054 (modify-phases %standard-phases
5055 (replace 'build
5056 (lambda _
9923d5a4 5057 (invoke "gem" "build" "gem_hadar.gemspec"))))))
bc8277e4
RW
5058 (propagated-inputs
5059 `(("git" ,git)
5060 ("ruby-tins" ,ruby-tins)
3fd577e3 5061 ("ruby-yard" ,ruby-yard)))
bc8277e4
RW
5062 (synopsis "Library for the development of Ruby gems")
5063 (description
5064 "This library contains some useful functionality to support the
5065development of Ruby gems.")
5066 (home-page "https://github.com/flori/gem_hadar")
5067 (license license:expat)))
5068
d8cafe29
RW
5069(define-public ruby-minitest-tu-shim
5070 (package
5071 (name "ruby-minitest-tu-shim")
5072 (version "1.3.3")
5073 (source (origin
5074 (method url-fetch)
5075 (uri (rubygems-uri "minitest_tu_shim" version))
5076 (sha256
5077 (base32
5078 "0xlyh94iirvssix157ng2akr9nqhdygdd0c6094hhv7dqcfrn9fn"))))
5079 (build-system ruby-build-system)
5080 (arguments
5081 `(#:phases
5082 (modify-phases %standard-phases
5083 (add-after 'unpack 'fix-test-include-path
5084 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 5085 (let* ((minitest (assoc-ref inputs "ruby-minitest-4")))
761e7042
BW
5086 (substitute* "Rakefile"
5087 (("Hoe\\.add_include_dirs .*")
5088 (string-append "Hoe.add_include_dirs \""
3cb3fa67 5089 minitest "/lib/ruby/vendor_ruby"
761e7042
BW
5090 "/gems/minitest-"
5091 ,(package-version ruby-minitest-4)
5092 "/lib" "\""))))
5093 #t))
d8cafe29
RW
5094 (add-before 'check 'fix-test-assumptions
5095 (lambda _
5096 ;; The test output includes the file name, so a couple of tests
5097 ;; fail. Changing the regular expressions slightly fixes this
5098 ;; problem.
5099 (substitute* "test/test_mini_test.rb"
5100 (("output.sub!\\(.*, 'FILE:LINE'\\)")
5101 "output.sub!(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')")
5102 (("gsub\\(/.*, 'FILE:LINE'\\)")
5103 "gsub(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')"))
5104 #t)))))
5105 (propagated-inputs
5106 `(("ruby-minitest-4" ,ruby-minitest-4)))
5107 (native-inputs
5108 `(("ruby-hoe" ,ruby-hoe)))
5109 (synopsis "Adapter library between minitest and test/unit")
5110 (description
5111 "This library bridges the gap between the small and fast minitest and
5112Ruby's large and slower test/unit.")
5113 (home-page "https://rubygems.org/gems/minitest_tu_shim")
5114 (license license:expat)))
5115
fd83a212
RW
5116(define-public ruby-term-ansicolor
5117 (package
5118 (name "ruby-term-ansicolor")
f3a6311a 5119 (version "1.6.0")
fd83a212
RW
5120 (source (origin
5121 (method url-fetch)
5122 (uri (rubygems-uri "term-ansicolor" version))
5123 (sha256
5124 (base32
f3a6311a 5125 "1b1wq9ljh7v3qyxkk8vik2fqx2qzwh5lval5f92llmldkw7r7k7b"))))
fd83a212
RW
5126 (build-system ruby-build-system)
5127 ;; Rebuilding the gemspec seems to require git, even though this is not a
5128 ;; git repository, so we just build the gem from the existing gemspec.
5129 (arguments
5130 `(#:phases
5131 (modify-phases %standard-phases
39ecb977
CB
5132 (add-after 'unpack 'fix-test
5133 (lambda -
5134 (substitute* "tests/hsl_triple_test.rb"
5135 (("0\\\\\\.0%")
5136 "0\\.?0?%"))))
fd83a212
RW
5137 (replace 'build
5138 (lambda _
9923d5a4 5139 (invoke "gem" "build" "term-ansicolor.gemspec"))))))
fd83a212
RW
5140 (propagated-inputs
5141 `(("ruby-tins" ,ruby-tins)))
5142 (native-inputs
5143 `(("ruby-gem-hadar" ,ruby-gem-hadar)
5144 ("ruby-minitest-tu-shim" ,ruby-minitest-tu-shim)))
5145 (synopsis "Ruby library to control the attributes of terminal output")
5146 (description
5147 "This Ruby library uses ANSI escape sequences to control the attributes
5148of terminal output.")
2f3800e5 5149 (home-page "https://flori.github.io/term-ansicolor/")
fd83a212
RW
5150 ;; There is no mention of the "or later" clause.
5151 (license license:gpl2)))
5152
a714c30f
CB
5153(define-public ruby-terraform
5154 (package
5155 (name "ruby-terraform")
5156 (version "0.22.0")
5157 (source
5158 (origin
5159 (method url-fetch)
5160 (uri (rubygems-uri "ruby-terraform" version))
5161 (sha256
5162 (base32
5163 "13zjkp71cd19j2ds2h9rqwcfr1zdg5nsh63p89l6qcsc9z39z324"))))
5164 (build-system ruby-build-system)
5165 (arguments
5166 '(#:tests? #f)) ; No included tests
5167 (propagated-inputs
5168 `(("ruby-lino" ,ruby-lino)))
5169 (synopsis "Ruby wrapper around the Terraform command line interface")
5170 (description
5171 "This package provides a Ruby wrapper around the Terraform command line
5172interface so that Terraform can be more easily invoked from Ruby code.")
5173 (home-page "https://github.com/infrablocks/ruby_terraform")
5174 (license license:expat)))
5175
6e376ca4
RW
5176(define-public ruby-pstree
5177 (package
5178 (name "ruby-pstree")
5179 (version "0.1.0")
5180 (source (origin
5181 (method url-fetch)
5182 (uri (rubygems-uri "pstree" version))
5183 (sha256
5184 (base32
5185 "1mig1sv5qx1cdyhjaipy8jlh9j8pnja04vprrzihyfr54x0215p1"))))
5186 (build-system ruby-build-system)
5187 (native-inputs
5188 `(("ruby-gem-hadar" ,ruby-gem-hadar)
5189 ("bundler" ,bundler)))
5190 (synopsis "Create a process tree data structure")
5191 (description
5192 "This library uses the output of the @code{ps} command to create a
5193process tree data structure for the current host.")
2f3800e5 5194 (home-page "https://github.com/flori/pstree")
6e376ca4
RW
5195 ;; There is no mention of the "or later" clause.
5196 (license license:gpl2)))
5197
53239b5f
RW
5198(define-public ruby-utils
5199 (package
5200 (name "ruby-utils")
cd698b6e 5201 (version "0.9.0")
53239b5f
RW
5202 (source (origin
5203 (method url-fetch)
5204 (uri (rubygems-uri "utils" version))
5205 (sha256
5206 (base32
cd698b6e 5207 "196zhgcygrnx09bb9mh22qas03rl9avzx8qs0wnxznpin4pffwcl"))))
53239b5f
RW
5208 (build-system ruby-build-system)
5209 (propagated-inputs
5210 `(("ruby-tins" ,ruby-tins)
5211 ("ruby-term-ansicolor" ,ruby-term-ansicolor)
5212 ("ruby-pstree" ,ruby-pstree)
5213 ("ruby-pry-editline" ,ruby-pry-editline)))
5214 (native-inputs
5215 `(("ruby-gem-hadar" ,ruby-gem-hadar)
5216 ("bundler" ,bundler)))
5217 (synopsis "Command line tools for working with Ruby")
5218 (description
5219 "This package provides assorted command line tools that may be useful
5220when working with Ruby code.")
5221 (home-page "https://github.com/flori/utils")
5222 ;; There is no mention of the "or later" clause.
5223 (license license:gpl2)))
5224
433f10b5
CB
5225(define-public ruby-jaro-winkler
5226 (package
5227 (name "ruby-jaro-winkler")
37b23e44 5228 (version "1.5.4")
433f10b5
CB
5229 (source
5230 (origin
5231 (method url-fetch)
5232 (uri (rubygems-uri "jaro_winkler" version))
5233 (sha256
37b23e44 5234 (base32 "1y8l6k34svmdyqxya3iahpwbpvmn3fswhwsvrz0nk1wyb8yfihsh"))))
433f10b5
CB
5235 (build-system ruby-build-system)
5236 (arguments
37b23e44 5237 '(#:tests? #f)) ; no included tests
433f10b5
CB
5238 (synopsis "Ruby implementation of Jaro-Winkler distance algorithm")
5239 (description
5240 "@code{jaro_winkler} is an implementation of Jaro-Winkler distance
5241algorithm. It is written as a C extension and will fallback to a pure Ruby
5242implementation on platforms where this is unsupported.")
5243 (home-page "https://github.com/tonytonyjan/jaro_winkler")
5244 (license license:expat)))
5245
c99e2247
DT
5246(define-public ruby-json
5247 (package
5248 (name "ruby-json")
a281acce 5249 (version "2.1.0")
c99e2247
DT
5250 (source
5251 (origin
5252 (method url-fetch)
5253 (uri (rubygems-uri "json" version))
5254 (sha256
5255 (base32
a281acce 5256 "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp"))))
c99e2247
DT
5257 (build-system ruby-build-system)
5258 (arguments '(#:tests? #f)) ; dependency cycle with sdoc
5259 (synopsis "JSON library for Ruby")
5260 (description "This Ruby library provides a JSON implementation written as
5261a native C extension.")
5262 (home-page "http://json-jruby.rubyforge.org/")
5263 (license (list license:ruby license:gpl2)))) ; GPL2 only
5ff89a1b 5264
763624f5
RW
5265(define-public ruby-json-pure
5266 (package
5267 (name "ruby-json-pure")
1c65d99f 5268 (version "2.2.0")
763624f5
RW
5269 (source (origin
5270 (method url-fetch)
5271 (uri (rubygems-uri "json_pure" version))
5272 (sha256
5273 (base32
1c65d99f 5274 "0m0j1mfwv0mvw72kzqisb26xjl236ivqypw1741dkis7s63b8439"))))
763624f5
RW
5275 (build-system ruby-build-system)
5276 (arguments
ac01cb07 5277 `(#:phases
763624f5 5278 (modify-phases %standard-phases
ac01cb07 5279 (add-after 'unpack 'fix-rakefile
763624f5 5280 (lambda _
ac01cb07
BW
5281 (substitute* "Rakefile"
5282 ;; Since this is not a git repository, do not call 'git'.
5283 (("`git ls-files`") "`find . -type f |sort`")
5284 ;; Loosen dependency constraint.
5285 (("'test-unit', '~> 2.0'") "'test-unit', '>= 2.0'"))
5286 #t))
5287 (add-after 'replace-git-ls-files 'regenerate-gemspec
5288 (lambda _
5289 ;; Regenerate gemspec so loosened dependency constraints are
5290 ;; propagated.
17cfb7ae
CB
5291 (invoke "rake" "gemspec")))
5292 (add-after 'regenerate-gemspec 'fix-json-java.gemspec
5293 (lambda _
5294 ;; This gemspec doesn't look to be generated by the above
5295 ;; command, so patch it separately.
5296 (substitute* "json-java.gemspec"
5297 (("%q<test-unit>\\.freeze, \\[\"~> 2\\.0\"\\]")
5298 "%q<test-unit>.freeze, [\">= 2.0\"]"))
5299 #t)))))
763624f5 5300 (native-inputs
ac01cb07 5301 `(("bundler" ,bundler)
0c9f73cd
TGR
5302 ("ragel" ,ragel)
5303 ("ruby-simplecov" ,ruby-simplecov)
5304 ("ruby-test-unit" ,ruby-test-unit)))
763624f5
RW
5305 (synopsis "JSON implementation in pure Ruby")
5306 (description
5307 "This package provides a JSON implementation written in pure Ruby.")
1c65d99f 5308 (home-page "https://flori.github.com/json/")
763624f5
RW
5309 (license license:ruby)))
5310
2a8581ac
CB
5311(define-public ruby-jwt
5312 (package
5313 (name "ruby-jwt")
5314 (version "2.1.0")
5315 (source
5316 (origin
5317 (method url-fetch)
5318 (uri (rubygems-uri "jwt" version))
5319 (sha256
5320 (base32
5321 "1w0kaqrbl71cq9sbnixc20x5lqah3hs2i93xmhlfdg2y3by7yzky"))))
5322 (build-system ruby-build-system)
5323 (arguments
5324 '(#:test-target "test"
5325 #:phases
5326 (modify-phases %standard-phases
5327 (add-after 'unpack 'remove-unnecessary-dependencies
5328 (lambda _
5329 (substitute* "spec/spec_helper.rb"
5330 (("require 'simplecov.*") "\n")
5331 ;; Use [].each to disable running the SimpleCov configuration
5332 ;; block
5333 (("SimpleCov\\.configure") "[].each")
5334 (("require 'codeclimate-test-reporter'") "")
5335 (("require 'codacy-coverage'") "")
5336 (("Codacy::Reporter\\.start") ""))
5337 #t)))))
5338 (native-inputs
5339 `(("bundler" ,bundler)
5340 ("ruby-rspec" ,ruby-rspec)
5341 ("ruby-rbnacl" ,ruby-rbnacl)))
5342 (synopsis "Ruby implementation of the JSON Web Token standard")
5343 (description
5344 "This package provides a pure Ruby implementation of the RFC 7519 OAuth
5345@acronym{JWT, JSON Web Token} standard.")
5346 (home-page "https://github.com/jwt/ruby-jwt")
5347 (license license:expat)))
5348
16b324cd
RW
5349;; Even though this package only provides bindings for a Mac OSX API it is
5350;; required by "ruby-listen" at runtime.
5351(define-public ruby-rb-fsevent
5352 (package
5353 (name "ruby-rb-fsevent")
b0ef15ed 5354 (version "0.10.3")
16b324cd
RW
5355 (source (origin
5356 (method url-fetch)
5357 (uri (rubygems-uri "rb-fsevent" version))
5358 (sha256
5359 (base32
b0ef15ed 5360 "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8"))))
16b324cd
RW
5361 (build-system ruby-build-system)
5362 ;; Tests need "guard-rspec", which needs "guard". However, "guard" needs
5363 ;; "listen", which needs "rb-fsevent" at runtime.
5364 (arguments `(#:tests? #f))
5365 (synopsis "FSEvents API with signals catching")
5366 (description
5367 "This library provides Ruby bindings for the Mac OSX FSEvents API.")
5368 (home-page "https://rubygems.org/gems/rb-fsevent")
5369 (license license:expat)))
5370
b86be2ad
RW
5371(define-public ruby-listen
5372 (package
5373 (name "ruby-listen")
12341d34 5374 (version "3.2.0")
b86be2ad
RW
5375 (source
5376 (origin
35602819
CB
5377 ;; The gem does not include a Rakefile, so fetch from the Git
5378 ;; repository.
5379 (method git-fetch)
5380 (uri (git-reference
5381 (url "https://github.com/guard/listen.git")
5382 (commit (string-append "v" version))))
5383 (file-name (git-file-name name version))
b86be2ad
RW
5384 (sha256
5385 (base32
12341d34 5386 "1hkp1g6hk5clsmbd001gkc12ma6s459x820piajyasv61m87if24"))))
b86be2ad 5387 (build-system ruby-build-system)
35602819
CB
5388 (arguments
5389 `(#:test-target "spec"
5390 #:phases
5391 (modify-phases %standard-phases
5392 (add-after 'unpack 'fix-files-in-gemspec
5393 (lambda _
5394 (substitute* "listen.gemspec"
5395 (("`git ls-files -z`") "`find . -type f -printf '%P\\\\0' |sort -z`"))
5396 #t))
5397 (add-before 'check 'remove-unnecessary-dependencies'
5398 (lambda _
5399 (substitute* "Rakefile"
5400 ;; Rubocop is for code linting, and is unnecessary for running
5401 ;; the tests.
5402 ((".*rubocop.*") ""))
5403 #t)))))
5404 (native-inputs
5405 `(("bundler" ,bundler)
5406 ("ruby-rspec" ,ruby-rspec)))
5407 (inputs
5408 `(;; ruby-thor is used for the command line interface, and is referenced
5409 ;; in the wrapper, and therefore just needs to be an input.
5410 ("ruby-thor" ,ruby-thor)))
b86be2ad 5411 (propagated-inputs
35602819
CB
5412 `(("ruby-rb-fsevent" ,ruby-rb-fsevent)
5413 ("ruby-rb-inotify" ,ruby-rb-inotify)
5414 ("ruby-dep" ,ruby-dep)))
b86be2ad
RW
5415 (synopsis "Listen to file modifications")
5416 (description "The Listen gem listens to file modifications and notifies
5417you about the changes.")
5418 (home-page "https://github.com/guard/listen")
5419 (license license:expat)))
5420
8d3c5ff6
CB
5421(define-public ruby-loofah
5422 (package
5423 (name "ruby-loofah")
5424 (version "2.2.3")
5425 (source
5426 (origin
5427 (method url-fetch)
5428 (uri (rubygems-uri "loofah" version))
5429 (sha256
5430 (base32
5431 "1ccsid33xjajd0im2xv941aywi58z7ihwkvaf1w2bv89vn5bhsjg"))))
5432 (build-system ruby-build-system)
5433 (arguments
5434 '(#:phases
5435 (modify-phases %standard-phases
5436 (add-after 'unpack 'remove-unnecessary-dependencies
5437 (lambda _
5438 ;; concourse is a development tool which is unused, so remove it
5439 ;; so it's not required.
5440 (substitute* "Gemfile"
5441 ((".*\"concourse\".*") "\n"))
5442 (substitute* "Rakefile"
5443 (("require 'concourse'") "")
5444 (("Concourse\\.new.*") "\n"))
5445 #t)))))
5446 (native-inputs
5447 `(("ruby-hoe" ,ruby-hoe)
5448 ("ruby-rr" ,ruby-rr)))
5449 (propagated-inputs
5450 `(("ruby-nokogiri" ,ruby-nokogiri)
5451 ("ruby-crass" ,ruby-crass)))
5452 (synopsis "Ruby library for manipulating and transforming HTML/XML")
5453 (description
5454 "Loofah is a general library for manipulating and transforming HTML/XML
5455documents and fragments. It's built on top of Nokogiri and libxml2.")
5456 (home-page "https://github.com/flavorjones/loofah")
5457 (license license:expat)))
5458
5ff89a1b
DT
5459(define-public ruby-activesupport
5460 (package
5461 (name "ruby-activesupport")
bcf1fe5b 5462 (version "5.2.2.1")
5ff89a1b
DT
5463 (source
5464 (origin
5465 (method url-fetch)
5466 (uri (rubygems-uri "activesupport" version))
5467 (sha256
5468 (base32
bcf1fe5b 5469 "161bp4p01v1a1lvszrhd1a02zf9x1p1l1yhw79a3rix1kvzkkdqb"))))
5ff89a1b
DT
5470 (build-system ruby-build-system)
5471 (arguments
2af45e50
BW
5472 `(#:phases
5473 (modify-phases %standard-phases
5474 (replace 'check
5475 (lambda _
9923d5a4
TGR
5476 ;; There are no tests, instead attempt to load the library.
5477 (invoke "ruby" "-Ilib" "-r" "active_support"))))))
5ff89a1b 5478 (propagated-inputs
2af45e50
BW
5479 `(("ruby-concurrent" ,ruby-concurrent)
5480 ("ruby-i18n" ,ruby-i18n)
5ff89a1b 5481 ("ruby-minitest" ,ruby-minitest)
606ee9a1
BW
5482 ("ruby-tzinfo" ,ruby-tzinfo)
5483 ("ruby-tzinfo-data" ,ruby-tzinfo-data)))
5ff89a1b
DT
5484 (synopsis "Ruby on Rails utility library")
5485 (description "ActiveSupport is a toolkit of support libraries and Ruby
5486core extensions extracted from the Rails framework. It includes support for
5487multibyte strings, internationalization, time zones, and testing.")
5488 (home-page "http://www.rubyonrails.org")
5489 (license license:expat)))
f847ad7b 5490
3996f0aa
RW
5491(define-public ruby-crass
5492 (package
5493 (name "ruby-crass")
a84a185a
MB
5494 (version "1.0.6")
5495 (home-page "https://github.com/rgrove/crass")
3996f0aa 5496 (source (origin
a84a185a
MB
5497 ;; The gem does not contain tests, so pull from git.
5498 (method git-fetch)
5499 (uri (git-reference
5500 (url home-page)
5501 (commit (string-append "v" version))))
5502 (file-name (git-file-name name version))
3996f0aa
RW
5503 (sha256
5504 (base32
a84a185a 5505 "1gbsb81psgb6xhnwpx4s409jc0mk0gijh039sy5xyi8jpaaadp40"))))
3996f0aa 5506 (build-system ruby-build-system)
3996f0aa
RW
5507 (synopsis "Pure Ruby CSS parser")
5508 (description
5509 "Crass is a pure Ruby CSS parser based on the CSS Syntax Level 3 spec.")
3996f0aa
RW
5510 (license license:expat)))
5511
c2c4e5b2 5512(define-public ruby-nokogumbo
2e366b0a
MB
5513 (package
5514 (name "ruby-nokogumbo")
5515 (version "2.0.2")
5516 (source (origin
5517 ;; We use the git reference, because there's no Rakefile in the
5518 ;; published gem and the tarball on Github is outdated.
5519 (method git-fetch)
5520 (uri (git-reference
5521 (url "https://github.com/rubys/nokogumbo.git")
5522 (commit (string-append "v" version))))
5523 (file-name (string-append name "-" version "-checkout"))
5524 (sha256
5525 (base32
5526 "1qg0iyw450lw6d0j1ghzg79a6l60nm1m4qmrzwzybi585861jxcx"))))
5527 (build-system ruby-build-system)
5528 (native-inputs
5529 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
5530 (inputs
5531 `(("gumbo-parser" ,gumbo-parser)))
5532 (propagated-inputs
5533 `(("ruby-nokogiri" ,ruby-nokogiri)))
5534 (synopsis "Ruby bindings to the Gumbo HTML5 parser")
5535 (description
5536 "Nokogumbo allows a Ruby program to invoke the Gumbo HTML5 parser and
c2c4e5b2 5537access the result as a Nokogiri parsed document.")
2e366b0a
MB
5538 (home-page "https://github.com/rubys/nokogumbo/")
5539 (license license:asl2.0)))
c2c4e5b2 5540
d56ff88b
RW
5541(define-public ruby-sanitize
5542 (package
5543 (name "ruby-sanitize")
f362b53c
MB
5544 (version "5.1.0")
5545 (home-page "https://github.com/rgrove/sanitize")
d56ff88b 5546 (source (origin
f362b53c 5547 (method git-fetch)
d56ff88b 5548 ;; The gem does not include the Rakefile, so we download the
f362b53c
MB
5549 ;; source from Github.
5550 (uri (git-reference
5551 (url home-page)
5552 (commit (string-append "v" version))))
5553 (file-name (git-file-name name version))
5554 (patches (search-patches "ruby-sanitize-system-libxml.patch"))
d56ff88b
RW
5555 (sha256
5556 (base32
f362b53c 5557 "0lj0q9yhjp0q0in5majkshnki07mw8m2vxgndx4m5na6232aszl0"))))
d56ff88b
RW
5558 (build-system ruby-build-system)
5559 (propagated-inputs
5560 `(("ruby-crass" ,ruby-crass)
5561 ("ruby-nokogiri" ,ruby-nokogiri)
5562 ("ruby-nokogumbo" ,ruby-nokogumbo)))
5563 (native-inputs
f362b53c 5564 `(("ruby-minitest" ,ruby-minitest)))
d56ff88b
RW
5565 (synopsis "Whitelist-based HTML and CSS sanitizer")
5566 (description
5567 "Sanitize is a whitelist-based HTML and CSS sanitizer. Given a list of
5568acceptable elements, attributes, and CSS properties, Sanitize will remove all
5569unacceptable HTML and/or CSS from a string.")
d56ff88b
RW
5570 (license license:expat)))
5571
ed4b6b18
BW
5572(define-public ruby-oj
5573 (package
5574 (name "ruby-oj")
93dfdec5 5575 (version "3.10.1")
ed4b6b18
BW
5576 (source
5577 (origin
b09ef660 5578 (method git-fetch)
ed4b6b18
BW
5579 ;; Version on rubygems.org does not contain Rakefile, so download from
5580 ;; GitHub instead.
b09ef660
EF
5581 (uri (git-reference
5582 (url "https://github.com/ohler55/oj")
5583 (commit (string-append "v" version))))
5584 (file-name (git-file-name name version))
ed4b6b18
BW
5585 (sha256
5586 (base32
93dfdec5 5587 "0i5xjx4sh816zx2c1a4d1q67k7vllg5jnnc4jy6zhbmwi1dvp5vw"))))
ed4b6b18
BW
5588 (build-system ruby-build-system)
5589 (arguments
5590 '(#:test-target "test_all"
5591 #:phases
5592 (modify-phases %standard-phases
5593 (add-before 'check 'disable-bundler
5594 (lambda _
5595 (substitute* "Rakefile"
5596 (("Bundler\\.with_clean_env") "1.times")
5597 (("bundle exec ") "")))))))
5598 (native-inputs
5599 `(("bundler" ,bundler)
5600 ("ruby-rspec" ,ruby-rspec)
5601 ("ruby-rake-compiler" ,ruby-rake-compiler)))
5602 (synopsis "JSON parser for Ruby optimized for speed")
5603 (description
5604 "Oj is a JSON parser and generator for Ruby, where the encoding and
5605decoding of JSON is implemented as a C extension to Ruby.")
b09ef660 5606 (home-page "http://www.ohler.com/oj/")
ed4b6b18
BW
5607 (license (list license:expat ; Ruby code
5608 license:bsd-3)))) ; extension code
5609
f847ad7b
DT
5610(define-public ruby-ox
5611 (package
5612 (name "ruby-ox")
263c0dbf 5613 (version "2.6.0")
f847ad7b
DT
5614 (source
5615 (origin
5616 (method url-fetch)
5617 (uri (rubygems-uri "ox" version))
5618 (sha256
5619 (base32
263c0dbf 5620 "0fmk62b1h2i79dfzjj8wmf8qid1rv5nhwfc17l489ywnga91xl83"))))
f847ad7b
DT
5621 (build-system ruby-build-system)
5622 (arguments
5623 '(#:tests? #f)) ; no tests
5624 (synopsis "Optimized XML library for Ruby")
5625 (description
5626 "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
5627written as a native C extension. It was designed to be an alternative to
5628Nokogiri and other Ruby XML parsers for generic XML parsing and as an
5629alternative to Marshal for Object serialization. ")
5630 (home-page "http://www.ohler.com/ox")
5631 (license license:expat)))
4a9e0585 5632
0c4e7625
RW
5633(define-public ruby-redcloth
5634 (package
5635 (name "ruby-redcloth")
2a91494e 5636 (version "4.3.2")
0c4e7625
RW
5637 (source (origin
5638 (method url-fetch)
5639 (uri (rubygems-uri "RedCloth" version))
5640 (sha256
5641 (base32
2a91494e 5642 "0m9dv7ya9q93r8x1pg2gi15rxlbck8m178j1fz7r5v6wr1avrrqy"))))
0c4e7625
RW
5643 (build-system ruby-build-system)
5644 (arguments
5645 `(#:tests? #f ; no tests
5646 #:phases
5647 (modify-phases %standard-phases
5648 ;; Redcloth has complicated rake tasks to build various versions for
5649 ;; multiple targets using RVM. We don't want this so we just use the
5650 ;; existing gemspec.
5651 (replace 'build
5652 (lambda _
9923d5a4 5653 (invoke "gem" "build" "redcloth.gemspec"))))))
0c4e7625
RW
5654 (native-inputs
5655 `(("bundler" ,bundler)
5656 ("ruby-diff-lcs" ,ruby-diff-lcs)
5657 ("ruby-rspec-2" ,ruby-rspec-2)))
5658 (synopsis "Textile markup language parser for Ruby")
5659 (description
5660 "RedCloth is a Ruby parser for the Textile markup language.")
5661 (home-page "http://redcloth.org")
5662 (license license:expat)))
5663
4a9e0585
DT
5664(define-public ruby-pg
5665 (package
5666 (name "ruby-pg")
ffc4869e 5667 (version "1.1.4")
4a9e0585
DT
5668 (source
5669 (origin
5670 (method url-fetch)
5671 (uri (rubygems-uri "pg" version))
5672 (sha256
5673 (base32
ffc4869e 5674 "0fmnyxcyrvgdbgq7m09whgn9i8rwfybk0w8aii1nc4g5kqw0k2jy"))))
4a9e0585
DT
5675 (build-system ruby-build-system)
5676 (arguments
5677 '(#:test-target "spec"))
5678 (native-inputs
5679 `(("ruby-rake-compiler" ,ruby-rake-compiler)
5680 ("ruby-hoe" ,ruby-hoe)
5681 ("ruby-rspec" ,ruby-rspec)))
5682 (inputs
ffc4869e 5683 `(("postgresql" ,postgresql)))
4a9e0585
DT
5684 (synopsis "Ruby interface to PostgreSQL")
5685 (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
4db80f8b 5686with PostgreSQL 9.0 and later.")
4a9e0585
DT
5687 (home-page "https://bitbucket.org/ged/ruby-pg")
5688 (license license:ruby)))
468e5657
DT
5689
5690(define-public ruby-byebug
5691 (package
5692 (name "ruby-byebug")
d5489a61 5693 (version "9.0.6")
468e5657
DT
5694 (source
5695 (origin
5696 (method url-fetch)
5697 (uri (rubygems-uri "byebug" version))
5698 (sha256
5699 (base32
d5489a61 5700 "1kbfcn65rgdhi72n8x9l393b89rvi5z542459k7d1ggchpb0idb0"))))
468e5657
DT
5701 (build-system ruby-build-system)
5702 (arguments
5703 '(#:tests? #f)) ; no tests
5704 (synopsis "Debugger for Ruby 2")
5705 (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
5706TracePoint C API for execution control and the Debug Inspector C API for call
5707stack navigation. The core component provides support that front-ends can
5708build on. It provides breakpoint handling and bindings for stack frames among
5709other things and it comes with a command line interface.")
7bf837fd 5710 (home-page "https://github.com/deivid-rodriguez/byebug")
468e5657 5711 (license license:bsd-2)))
64b6ccc3 5712
7aa00628
MC
5713;;; TODO: Make it the default byebug in core-updates.
5714(define-public ruby-byebug-11
5715 (package
5716 (inherit ruby-byebug)
5717 (name "ruby-byebug")
5718 (version "11.1.3")
5719 (source
5720 (origin
5721 (method git-fetch)
5722 (uri (git-reference
5723 (url "https://github.com/deivid-rodriguez/byebug.git")
5724 (commit (string-append "v" version))))
5725 (file-name (git-file-name name version))
5726 (sha256
5727 (base32
5728 "0vyy3k2s7dcndngj6m8kxhs1vxc2c93dw8b3yyand3srsg9ffpij"))
5729 (modules '((guix build utils)))
5730 (snippet
5731 '(begin
5732 ;; Remove wrappers that try to setup a bundle environment.
5733 (with-directory-excursion "bin"
5734 (for-each delete-file '("bundle" "rake" "rubocop"))
5735 ;; ruby-minitest doesn't come with a launcher, so fix the one
5736 ;; provided.
5737 (substitute* "minitest"
5738 (("load File\\.expand_path\\(\"bundle\".*") "")
5739 (("require \"bundler/setup\".*") "")))
5740 #t))))
5741 (arguments
5742 `(#:tests? #t
5743 #:phases
5744 (modify-phases %standard-phases
5745 (add-after 'unpack 'skip-tmp-path-sensitive-test
5746 (lambda _
5747 (substitute* "test/commands/where_test.rb"
5748 (("unless /cygwin\\|mswin\\|mingw\\|darwin/.*")
5749 "unless true\n"))
5750 #t))
5751 (add-before 'build 'compile
5752 (lambda _
5753 (invoke "rake" "compile")))
5754 (add-before 'check 'set-home
5755 (lambda _
5756 (setenv "HOME" (getcwd))
5757 #t)))))
5758 (native-inputs
5759 `(("bundler" ,bundler)
5760 ("ruby-chandler" ,ruby-chandler)
5761 ("ruby-minitest" ,ruby-minitest)
5762 ("ruby-pry" ,ruby-pry)
5763 ("ruby-rake-compiler" ,ruby-rake-compiler)
5764 ("ruby-rubocop" ,ruby-rubocop)
5765 ("ruby-yard" ,ruby-yard)))))
5766
5799bc2b
RW
5767(define-public ruby-netrc
5768 (package
5769 (name "ruby-netrc")
5770 (version "0.11.0")
5771 (source (origin
5772 (method url-fetch)
5773 (uri (rubygems-uri "netrc" version))
5774 (sha256
5775 (base32
5776 "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y"))))
5777 (build-system ruby-build-system)
5778 (arguments
5779 `(#:phases
5780 (modify-phases %standard-phases
5781 (replace 'check
5782 ;; There is no Rakefile and minitest can only run one file at once,
5783 ;; so we have to iterate over all test files.
5784 (lambda _
9923d5a4
TGR
5785 (map (lambda (file)
5786 (invoke "ruby" "-Itest" file))
5787 (find-files "./test" "test_.*\\.rb")))))))
5799bc2b
RW
5788 (native-inputs
5789 `(("ruby-minitest" ,ruby-minitest)))
5790 (synopsis "Library to read and update netrc files")
5791 (description
5792 "This library can read and update netrc files, preserving formatting
5793including comments and whitespace.")
5794 (home-page "https://github.com/geemus/netrc")
5795 (license license:expat)))
5796
3a6989ce
RW
5797(define-public ruby-unf-ext
5798 (package
5799 (name "ruby-unf-ext")
14db8f19 5800 (version "0.0.7.6")
3a6989ce
RW
5801 (source (origin
5802 (method url-fetch)
5803 (uri (rubygems-uri "unf_ext" version))
5804 (sha256
5805 (base32
14db8f19 5806 "1ll6w64ibh81qwvjx19h8nj7mngxgffg7aigjx11klvf5k2g4nxf"))))
3a6989ce 5807 (build-system ruby-build-system)
b809cc9a
RW
5808 (arguments
5809 `(#:phases
5810 (modify-phases %standard-phases
5811 (add-after 'build 'build-ext
14db8f19
MB
5812 (lambda _ (invoke "rake" "compile:unf_ext")))
5813 (add-before 'check 'lose-rake-compiler-dock-dependency
5814 (lambda _
5815 ;; rake-compiler-dock is listed in the gemspec, but only
5816 ;; required when cross-compiling.
5817 (substitute* "unf_ext.gemspec"
5818 ((".*rake-compiler-dock.*") ""))
5819 #t)))))
3a6989ce
RW
5820 (native-inputs
5821 `(("bundler" ,bundler)
5822 ("ruby-rake-compiler" ,ruby-rake-compiler)
5823 ("ruby-test-unit" ,ruby-test-unit)))
5824 (synopsis "Unicode normalization form support library")
5825 (description
5826 "This package provides unicode normalization form support for Ruby.")
5827 (home-page "https://github.com/knu/ruby-unf_ext")
5828 (license license:expat)))
5829
2632a067 5830(define-public ruby-tdiff
5071f17b
BW
5831 ;; Use a newer than released snapshot so that rspec-2 is not required.
5832 (let ((commit "b662a6048f08abc45c1a834e5f34dd1c662935e2"))
5833 (package
5834 (name "ruby-tdiff")
5835 (version (string-append "0.3.3-1." (string-take commit 8)))
5836 (source (origin
5837 (method git-fetch)
5838 (uri (git-reference
5839 (url "https://github.com/postmodern/tdiff.git")
5840 (commit commit)))
5841 (file-name (string-append name "-" version "-checkout"))
5842 (sha256
5843 (base32
5844 "0n3gq8rx49f7ln6zqlshqfg2mgqyy30rsdjlnki5mv307ykc7ad4"))))
5845 (build-system ruby-build-system)
5846 (native-inputs
5847 `(("ruby-rspec" ,ruby-rspec)
5848 ("ruby-yard" ,ruby-yard)
5849 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
5850 (synopsis "Calculate the differences between two tree-like structures")
5851 (description
5852 "This library provides functions to calculate the differences between two
2632a067 5853tree-like structures. It is similar to Ruby's built-in @code{TSort} module.")
5071f17b
BW
5854 (home-page "https://github.com/postmodern/tdiff")
5855 (license license:expat))))
2632a067 5856
f60f5002 5857(define-public ruby-nokogiri-diff
5b0c223a
BW
5858 ;; Use a newer than released snapshot so that rspec-2 is not required.
5859 (let ((commit "a38491e4d8709b7406f2cae11a50226d927d06f5"))
5860 (package
5861 (name "ruby-nokogiri-diff")
5862 (version (string-append "0.2.0-1." (string-take commit 8)))
5863 (source (origin
5864 (method git-fetch)
5865 (uri (git-reference
5866 (url "https://github.com/postmodern/nokogiri-diff.git")
5867 (commit commit)))
5868 (file-name (string-append name "-" version "-checkout"))
5869 (sha256
5870 (base32
5871 "1ah2sfjh9n1p0ln2wkqzfl448ml7j4zfy6dhp1qgzq2m41php6rf"))))
5872 (build-system ruby-build-system)
5873 (propagated-inputs
5874 `(("ruby-tdiff" ,ruby-tdiff)
5875 ("ruby-nokogiri" ,ruby-nokogiri)))
5876 (native-inputs
5877 `(("ruby-rspec" ,ruby-rspec)
5878 ("ruby-yard" ,ruby-yard)
5879 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
5880 (synopsis "Calculate the differences between two XML/HTML documents")
5881 (description
5882 "@code{Nokogiri::Diff} adds the ability to calculate the
f60f5002 5883differences (added or removed nodes) between two XML/HTML documents.")
5b0c223a
BW
5884 (home-page "https://github.com/postmodern/nokogiri-diff")
5885 (license license:expat))))
f60f5002 5886
6dc21310
CB
5887(define-public ruby-racc
5888 (package
5889 (name "ruby-racc")
5890 (version "1.4.14")
5891 (source
5892 (origin
5893 (method url-fetch)
5894 (uri (rubygems-uri "racc" version))
5895 (sha256
5896 (base32
5897 "00yhs2ag7yy5v83mqvkbnhk9bvsh6mx3808k53n61ddzx446v1zl"))))
5898 (build-system ruby-build-system)
5899 (native-inputs
5900 `(("ruby-hoe" ,ruby-hoe)
5901 ("ruby-rake-compiler" ,ruby-rake-compiler)))
5902 (synopsis "LALR(1) parser generator for Ruby")
5903 (description
5904 "Racc is a LALR(1) parser generator. It is written in Ruby itself, and
5905generates Ruby program.")
5906 (home-page "http://i.loveruby.net/en/projects/racc/")
5907 (license (list
5908 ;; Generally licensed under the LGPL2.1, and some files also
5909 ;; available under the same license as Ruby.
5910 license:lgpl2.1
5911 license:ruby))))
5912
64b6ccc3
DT
5913(define-public ruby-rack
5914 (package
5915 (name "ruby-rack")
288d2480 5916 (version "2.0.6")
64b6ccc3
DT
5917 (source
5918 (origin
83870c32 5919 (method git-fetch)
1db791d5 5920 ;; Download from GitHub so that the patch can be applied.
83870c32
EF
5921 (uri (git-reference
5922 (url "https://github.com/rack/rack")
5923 (commit version)))
5924 (file-name (git-file-name name version))
64b6ccc3
DT
5925 (sha256
5926 (base32
83870c32 5927 "1n7z4g1x6yxip096cdc04wq7yk7ywpinq28g2xjb46r4nlv5h0j6"))
1db791d5
BW
5928 ;; Ignore test which fails inside the build environment but works
5929 ;; outside.
5930 (patches (search-patches "ruby-rack-ignore-failing-test.patch"))))
64b6ccc3
DT
5931 (build-system ruby-build-system)
5932 (arguments
5933 '(#:phases
5934 (modify-phases %standard-phases
5935 (add-before 'check 'fix-tests
5936 (lambda _
5937 ;; A few of the tests use the length of a file on disk for
5938 ;; Content-Length and Content-Range headers. However, this file
5939 ;; has a shebang in it which an earlier phase patches, growing
5940 ;; the file size from 193 to 239 bytes when the store prefix is
5941 ;; "/gnu/store".
5942 (let ((size-diff (- (string-length (which "ruby"))
5943 (string-length "/usr/bin/env ruby"))))
5944 (substitute* '("test/spec_file.rb")
5945 (("193")
5946 (number->string (+ 193 size-diff)))
5947 (("bytes(.)22-33" all delimiter)
5948 (string-append "bytes"
5949 delimiter
5950 (number->string (+ 22 size-diff))
5951 "-"
5952 (number->string (+ 33 size-diff))))))
83870c32
EF
5953 #t))
5954 (add-before 'reset-gzip-timestamps 'make-files-writable
5955 (lambda* (#:key outputs #:allow-other-keys)
5956 ;; Make sure .gz files are writable so that the
5957 ;; 'reset-gzip-timestamps' phase can do its work.
5958 (let ((out (assoc-ref outputs "out")))
5959 (for-each make-file-writable
5960 (find-files out "\\.gz$"))
5961 #t))))))
64b6ccc3 5962 (native-inputs
1db791d5
BW
5963 `(("ruby-minitest" ,ruby-minitest)
5964 ("ruby-minitest-sprint" ,ruby-minitest-sprint)
5965 ("which" ,which)))
5966 (propagated-inputs
5967 `(("ruby-concurrent" ,ruby-concurrent)))
64b6ccc3
DT
5968 (synopsis "Unified web application interface for Ruby")
5969 (description "Rack provides a minimal, modular and adaptable interface for
5970developing web applications in Ruby. By wrapping HTTP requests and responses,
5971it unifies the API for web servers, web frameworks, and software in between
5972into a single method call.")
2f3800e5 5973 (home-page "https://rack.github.io/")
64b6ccc3 5974 (license license:expat)))
62e4cc5a 5975
20a0f804
BW
5976(define-public ruby-rack-test
5977 (package
5978 (name "ruby-rack-test")
5979 (version "0.8.3")
5980 (source
5981 (origin
5982 (method url-fetch)
5983 (uri (rubygems-uri "rack-test" version))
5984 (sha256
5985 (base32
5986 "14ij39zywvr1i9f6jsixfg4zxi2q1m1n1nydvf47f0b6sfc9mv1g"))))
5987 (build-system ruby-build-system)
5988 (arguments
5989 ;; Disable tests because of circular dependencies: requires sinatra,
5990 ;; which requires rack-protection, which requires rack-test. Instead
5991 ;; simply require the library.
5992 `(#:phases
5993 (modify-phases %standard-phases
5994 (replace 'check
5995 (lambda _
5996 (invoke "ruby" "-Ilib" "-r" "rack/test"))))))
5997 (propagated-inputs
5998 `(("ruby-rack" ,ruby-rack)))
5999 (synopsis "Testing API for Rack applications")
6000 (description
6001 "Rack::Test is a small, simple testing API for Rack applications. It can
6002be used on its own or as a reusable starting point for Web frameworks and
6003testing libraries to build on.")
6004 (home-page "https://github.com/rack-test/rack-test")
6005 (license license:expat)))
6006
a0a7e690
BW
6007(define-public ruby-rack-protection
6008 (package
6009 (name "ruby-rack-protection")
3355e49c 6010 (version "2.0.5")
a0a7e690
BW
6011 (source
6012 (origin
6013 (method url-fetch)
6014 (uri (rubygems-uri "rack-protection" version))
6015 (sha256
6016 (base32
3355e49c 6017 "15167q25rmxipqwi6hjqj3i1byi9iwl3xq9b7mdar7qiz39pmjsk"))))
a0a7e690
BW
6018 (build-system ruby-build-system)
6019 (arguments
fafeeaa2 6020 '(;; Tests missing from the gem.
a0a7e690
BW
6021 #:tests? #f))
6022 (propagated-inputs
6023 `(("ruby-rack" ,ruby-rack)))
6024 (native-inputs
6025 `(("bundler" ,bundler)
6026 ("ruby-rspec" ,ruby-rspec-2)
6027 ("ruby-rack-test" ,ruby-rack-test)))
6028 (synopsis "Rack middleware that protects against typical web attacks")
6029 (description "Rack middleware that can be used to protect against typical
6030web attacks. It can protect all Rack apps, including Rails. For instance, it
6031protects against cross site request forgery, cross site scripting,
6032clickjacking, directory traversal, session hijacking and IP spoofing.")
6033 (home-page "https://github.com/sinatra/sinatra/tree/master/rack-protection")
6034 (license license:expat)))
6035
6edabcb2
CB
6036(define-public ruby-rainbow
6037 (package
6038 (name "ruby-rainbow")
6039 (version "3.0.0")
6040 (source
6041 (origin
6042 (method url-fetch)
6043 (uri (rubygems-uri "rainbow" version))
6044 (sha256
6045 (base32
6046 "0bb2fpjspydr6x0s8pn1pqkzmxszvkfapv0p4627mywl7ky4zkhk"))))
6047 (build-system ruby-build-system)
6048 (arguments
6049 '(#:phases
6050 (modify-phases %standard-phases
6051 ;; Run rspec directly, to avoid requiring Rubocop which is used from
6052 ;; the Rakefile.
6053 (replace 'check
6054 (lambda* (#:key tests? #:allow-other-keys)
6055 (when tests?
6056 (invoke "rspec"))
6057 #t)))))
6058 (native-inputs
6059 `(("bundler" ,bundler)
6060 ("ruby-rspec" ,ruby-rspec)))
6061 (synopsis "Colorize printed text on ANSI terminals")
6062 (description
6063 "@code{rainbow} provides a string presenter object to colorize strings by
6064wrapping them in ANSI escape codes.")
6065 (home-page "https://github.com/sickill/rainbow")
79193b20
CB
6066 (license license:expat)))
6067
6188d643
CB
6068(define-public ruby-rr
6069 (package
6070 (name "ruby-rr")
6071 (version "1.2.1")
6072 (source
6073 (origin
6074 (method url-fetch)
6075 (uri (rubygems-uri "rr" version))
6076 (sha256
6077 (base32
6078 "1n9g78ba4c2zzmz8cdb97c38h1xm0clircag00vbcxwqs4dq0ymp"))))
6079 (build-system ruby-build-system)
6080 (arguments
6081 '(#:tests? #f)) ; test files not included
6082 (native-inputs
6083 `(("bundler" ,bundler)
6084 ("ruby-rspec" ,ruby-rspec)))
6085 (synopsis "Ruby test double framework")
6086 (description
6087 "RR is a test double framework that features a rich selection of double
6088techniques and a terse syntax.")
6089 (home-page "https://rr.github.io/rr/")
6090 (license license:expat)))
6091
79193b20
CB
6092(define-public ruby-rest-client
6093 (package
6094 (name "ruby-rest-client")
6095 (version "2.0.2")
6096 (source
6097 (origin
6098 (method url-fetch)
6099 (uri (rubygems-uri "rest-client" version))
6100 (sha256
6101 (base32
6102 "1hzcs2r7b5bjkf2x2z3n8z6082maz0j8vqjiciwgg3hzb63f958j"))))
6103 (build-system ruby-build-system)
6104 (arguments
6105 '(#:phases
6106 (modify-phases %standard-phases
6107 (add-before 'check 'remove-unnecessary-development-dependencies
6108 (lambda _
6109 (substitute* "rest-client.gemspec"
6110 ;; Remove rubocop as it's unused. Rubocop also indirectly
6111 ;; depends on this package through ruby-parser and ruby-ast so
6112 ;; this avoids a dependency loop.
6113 ((".*rubocop.*") "\n")
6114 ;; Remove pry as it's unused, it's a debugging tool
6115 ((".*pry.*") "\n")
6116 ;; Remove an unnecessarily strict rdoc dependency
6117 ((".*rdoc.*") "\n"))
6118 #t))
6119 (add-before 'check 'delete-network-dependent-tests
6120 (lambda _
6121 (delete-file "spec/integration/request_spec.rb")
6122 (delete-file "spec/integration/httpbin_spec.rb")
6123 #t)))))
6124 (propagated-inputs
6125 `(("ruby-http-cookie" ,ruby-http-cookie)
6126 ("ruby-mime-types" ,ruby-mime-types)
6127 ("ruby-netrc" ,ruby-netrc)))
6128 (native-inputs
6129 `(("bundler" ,bundler)
eea094cc
TGR
6130 ("ruby-webmock" ,ruby-webmock-2)
6131 ("ruby-rspec" ,ruby-rspec)))
79193b20
CB
6132 (synopsis "Simple HTTP and REST client for Ruby")
6133 (description
6134 "@code{rest-client} provides a simple HTTP and REST client for Ruby,
6135inspired by the Sinatra microframework style of specifying actions:
6136@code{get}, @code{put}, @code{post}, @code{delete}.")
6137 (home-page "https://github.com/rest-client/rest-client")
6edabcb2
CB
6138 (license license:expat)))
6139
5d8fe6de
CB
6140(define-public ruby-rubocop
6141 (package
6142 (name "ruby-rubocop")
865ba3f4 6143 (version "0.77.0")
5d8fe6de
CB
6144 (source
6145 (origin
6146 (method url-fetch)
6147 (uri (rubygems-uri "rubocop" version))
6148 (sha256
6149 (base32
865ba3f4 6150 "0m88b1bgbhmmbdnz2xv6n0il0j4q5qm9jbc0vf1zsaxmxqp06nx9"))))
5d8fe6de
CB
6151 (build-system ruby-build-system)
6152 (arguments
6153 '(;; No included tests
6154 #:tests? #f))
6155 (propagated-inputs
6156 `(("ruby-parser" ,ruby-parser)
6157 ("ruby-powerpack" ,ruby-powerpack)
6158 ("ruby-rainbow" ,ruby-rainbow)
6159 ("ruby-progressbar" ,ruby-progressbar)
6160 ("ruby-parallel" ,ruby-parallel)
6161 ("ruby-jaro-winkler" ,ruby-jaro-winkler)
6162 ("ruby-unicode-display-width" ,ruby-unicode-display-width)))
6163 (synopsis "Ruby code style checking tool")
6164 (description
6165 "@code{rubocop} is a Ruby code style checking tool. It aims to enforce
6166the community-driven Ruby Style Guide.")
6167 (home-page "https://github.com/rubocop-hq/rubocop")
6168 (license license:expat)))
6169
6ef85256
BW
6170(define-public ruby-contest
6171 (package
6172 (name "ruby-contest")
6173 (version "0.1.3")
6174 (source
6175 (origin
6176 (method url-fetch)
6177 (uri (rubygems-uri "contest" version))
6178 (sha256
6179 (base32
6180 "1p9f2292b7b0fbrcjswvj9v01z7ig5ig52328wyqcabgb553qsdf"))))
6181 (build-system ruby-build-system)
6182 (synopsis "Write declarative tests using nested contexts")
6183 (description
6184 "Contest allows writing declarative @code{Test::Unit} tests using nested
6185contexts without performance penalties.")
6186 (home-page "https://github.com/citrusbyte/contest")
6187 (license license:expat)))
6188
c4550f75
BW
6189(define-public ruby-creole
6190 (package
6191 (name "ruby-creole")
6192 (version "0.5.0")
6193 (source
6194 (origin
6195 (method url-fetch)
6196 (uri (rubygems-uri "creole" version))
6197 (sha256
6198 (base32
6199 "00rcscz16idp6dx0dk5yi5i0fz593i3r6anbn5bg2q07v3i025wm"))))
6200 (build-system ruby-build-system)
6201 (native-inputs
6202 `(("ruby-bacon" ,ruby-bacon)))
6203 (synopsis "Creole markup language converter")
6204 (description
6205 "Creole is a lightweight markup language and this library for converting
6206creole to @code{HTML}.")
6207 (home-page "https://github.com/minad/creole")
6208 (license license:ruby)))
6209
6aaa815e
PP
6210(define-public ruby-docile
6211 (package
6212 (name "ruby-docile")
6213 (version "1.1.5")
6214 (source
6215 (origin
6216 (method url-fetch)
6217 (uri (rubygems-uri "docile" version))
6218 (sha256
6219 (base32
6220 "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx"))))
6221 (build-system ruby-build-system)
6222 (arguments
6223 '(#:tests? #f)) ; needs github-markup, among others
6224 (synopsis "Ruby EDSL helper library")
6225 (description "Docile is a Ruby library that provides an interface for
6226creating embedded domain specific languages (EDSLs) that manipulate existing
6227Ruby classes.")
6228 (home-page "https://ms-ati.github.io/docile/")
6229 (license license:expat)))
6230
fab8fed3
MC
6231(define-public ruby-middleware
6232 (package
6233 (name "ruby-middleware")
6234 (version "0.1.0")
6235 (source
6236 (origin
6237 (method url-fetch)
6238 (uri (rubygems-uri "middleware" version))
6239 (sha256
6240 (base32
6241 "0703nkf2v371wqr41c04x5qid7ww45cxqv3hnlg07if3b3xrm9xl"))))
6242 (build-system ruby-build-system)
6243 (arguments '(#:tests? #f)) ;no test suite
6244 (synopsis "Implementation of a middleware abstraction for Ruby")
6245 (description "Middleware is a generalized implementation of a middleware
6246abstraction for Ruby.")
6247 (home-page "https://github.com/mitchellh/middleware")
6248 (license license:expat)))
6249
1d537c71
MC
6250(define-public ruby-benchmark-ips
6251 (package
6252 (name "ruby-benchmark-ips")
6253 (version "2.8.2")
6254 (source
6255 (origin
6256 (method url-fetch)
6257 (uri (rubygems-uri "benchmark-ips" version))
6258 (sha256
6259 (base32
6260 "1n9397j7kh4vvikfann1467qgksc679imlr50hax3lk1q3af8kdw"))))
6261 (build-system ruby-build-system)
6262 (native-inputs
6263 `(("ruby-hoe" ,ruby-hoe)))
6264 (synopsis "Iterations per second enhancement for the Ruby Benchmark module")
6265 (description "Benchmark-ips enhances the Ruby Benchmark module with the
6266iterations per second count. For short snippets of code, it can automatically
6267figure out how many times to run the code to get interesting data.")
6268 (home-page "https://github.com/evanphx/benchmark-ips")
6269 (license license:expat)))
6270
fc5d1c5a
MC
6271(define-public ruby-ffi-rzmq-core
6272 (package
6273 (name "ruby-ffi-rzmq-core")
6274 (version "1.0.7")
6275 (source
6276 (origin
6277 (method url-fetch)
6278 (uri (rubygems-uri "ffi-rzmq-core" version))
6279 (sha256
6280 (base32
6281 "0amkbvljpjfnv0jpdmz71p1i3mqbhyrnhamjn566w0c01xd64hb5"))))
6282 (build-system ruby-build-system)
6283 (arguments
6284 `(#:phases
6285 (modify-phases %standard-phases
6286 (add-after 'unpack 'patch-libzmq-search-path
6287 (lambda* (#:key inputs #:allow-other-keys)
6288 (let ((zeromq (assoc-ref inputs "zeromq")))
6289 (substitute* "lib/ffi-rzmq-core/libzmq.rb"
6290 (("/usr/local/lib")
6291 (string-append zeromq "/lib")))
6292 #t)))
6293 (replace 'check
6294 (lambda _
6295 (invoke "rspec"))))))
6296 (native-inputs
6297 `(("ruby-rspec" ,ruby-rspec)))
6298 (inputs
6299 `(("zeromq" ,zeromq)))
6300 (propagated-inputs `(("ruby-ffi" ,ruby-ffi)))
6301 (synopsis "Low-level Ruby FFI wrapper for the ZeroMQ networking library")
6302 (description "This library only provides the FFI wrapper for the ZeroMQ
6303networking library. It can be used to implement a Ruby API for the ZeroMQ
6304library.")
6305 (home-page "https://github.com/chuckremes/ffi-rzmq-core")
6306 (license license:expat)))
6307
7a503516
MC
6308(define-public ruby-ffi-rzmq
6309 (package
6310 (name "ruby-ffi-rzmq")
6311 (version "2.0.7")
6312 (source
6313 (origin
6314 (method url-fetch)
6315 (uri (rubygems-uri "ffi-rzmq" version))
6316 (sha256
6317 (base32
6318 "14a5kxfnf8l3ngyk8hgmk30z07aj1324ll8i48z67ps6pz2kpsrg"))))
6319 (build-system ruby-build-system)
6320 (arguments '(#:tests? #t
6321 #:phases (modify-phases %standard-phases
6322 (replace 'check
6323 (lambda _
6324 (invoke "rspec"))))))
6325 (native-inputs
6326 `(("ruby-rspec" ,ruby-rspec)))
6327 (propagated-inputs
6328 `(("ruby-ffi-rzmq-core" ,ruby-ffi-rzmq-core)))
6329 (synopsis "High-level Ruby wrapper for the ZeroMQ networking library")
6330 (description "This library provides a high-level API that wraps the ZeroMQ
6331networking library using the Ruby foreign function interface (FFI). It is a
6332pure Ruby wrapper, hence is compatible with any Ruby runtime that has support
6333for FFI.")
6334 (home-page "https://github.com/chuckremes/ffi-rzmq")
6335 (license license:expat)))
6336
03a0f98a
MC
6337(define-public ruby-sawyer
6338 (package
6339 (name "ruby-sawyer")
6340 (version "0.8.2")
6341 (source
6342 (origin
6343 (method url-fetch)
6344 (uri (rubygems-uri "sawyer" version))
6345 (sha256
6346 (base32
6347 "0yrdchs3psh583rjapkv33mljdivggqn99wkydkjdckcjn43j3cz"))))
6348 (build-system ruby-build-system)
6349 (propagated-inputs
6350 `(("ruby-addressable" ,ruby-addressable)
6351 ("ruby-faraday" ,ruby-faraday)))
6352 (synopsis "Experimental hypermedia agent for Ruby")
6353 (description "Sawyer is an experimental hypermedia agent for Ruby built on
6354top of Faraday.")
6355 (home-page "https://github.com/lostisland/sawyer")
6356 (license license:expat)))
6357
aa3c76b1
MC
6358(define-public ruby-octokit
6359 (package
6360 (name "ruby-octokit")
6361 (version "4.18.0")
6362 (source
6363 (origin
6364 (method url-fetch)
6365 (uri (rubygems-uri "octokit" version))
6366 (sha256
6367 (base32
6368 "0zvfr9njmj5svi39fcsi2b0g7pcxb0vamw9dlyas8bg814jlzhi6"))))
6369 (build-system ruby-build-system)
6370 (arguments '(#:tests? #f)) ;no test suite in the gem release
6371 (propagated-inputs
6372 `(("ruby-faraday" ,ruby-faraday)
6373 ("ruby-sawyer" ,ruby-sawyer)))
6374 (synopsis "Ruby toolkit for the GitHub API")
6375 (description "Octokit wraps the GitHub API in a flat API client that
6376follows Ruby conventions and requires little knowledge of REST.")
6377 (home-page "https://github.com/octokit/octokit.rb")
6378 (license license:expat)))
6379
1157d2f8
MC
6380(define-public ruby-chandler
6381 (package
6382 (name "ruby-chandler")
6383 (version "0.9.0")
6384 (source
6385 (origin
6386 (method url-fetch)
6387 (uri (rubygems-uri "chandler" version))
6388 (sha256
6389 (base32
6390 "1n8a4mr2jkcz5vaaps45g2rxa2pzy1wb7cylgw85xmmyyp14lnrr"))))
6391 (build-system ruby-build-system)
6392 (native-inputs
6393 `(("ruby-rubocop" ,ruby-rubocop)))
6394 (propagated-inputs
6395 `(("ruby-netrc" ,ruby-netrc)
6396 ("ruby-octokit" ,ruby-octokit)))
6397 (synopsis "Sync CHANGELOG entries to GitHub's release notes")
6398 (description "Chandler syncs a project's CHANGELOG file entries to
6399GitHub's release notes to remove the need of manually entering release
6400notes.")
6401 (home-page "https://github.com/mattbrictson/chandler")
6402 (license license:expat)))
6403
acb28876
MC
6404(define-public ruby-pry-byebug
6405 (package
6406 (name "ruby-pry-byebug")
6407 (version "3.9.0")
6408 (source
6409 (origin
6410 (method git-fetch)
6411 (uri (git-reference
6412 (url "https://github.com/deivid-rodriguez/pry-byebug.git")
6413 (commit (string-append "v" version))))
6414 (file-name (git-file-name name version))
6415 (sha256
6416 (base32
6417 "1kchrwccai92068p50zyd6mh524ywqnm0jw5g3lks7iwmf0xkmgc"))))
6418 (build-system ruby-build-system)
6419 (arguments
6420 `(#:phases (modify-phases %standard-phases
6421 (add-before 'check 'set-home
6422 (lambda _
6423 (setenv "HOME" (getcwd))
6424 #t)))))
6425 (native-inputs
6426 `(("ruby-chandler" ,ruby-chandler)
6427 ("ruby-rubocop" ,ruby-rubocop)
6428 ("ruby-simplecov" ,ruby-simplecov)))
6429 (propagated-inputs
6430 `(("ruby-byebug" ,ruby-byebug-11)
6431 ("ruby-pry" ,ruby-pry)))
6432 (synopsis "Step-by-step debugging and stack navigation in Pry")
6433 (description "This package adds step-by-step debugging and stack
6434navigation capabilities to @code{pry}, using @code{byebug}.")
6435 (home-page "https://github.com/deivid-rodriguez/pry-byebug")
6436 (license license:expat)))
6437
4d31fe6b
MC
6438(define-public ruby-binding-of-caller
6439 (package
6440 (name "ruby-binding-of-caller")
6441 (version "0.8.0")
6442 (source
6443 (origin
6444 (method url-fetch)
6445 (uri (rubygems-uri "binding_of_caller" version))
6446 (sha256
6447 (base32
6448 "05syqlks7463zsy1jdfbbdravdhj9hpj5pv2m74blqpv8bq4vv5g"))))
6449 (build-system ruby-build-system)
6450 ;; Attempting to run the test suite fails with a rake deprecation error
6451 ;; (see: https://github.com/banister/binding_of_caller/issues/76).
6452 (arguments '(#:tests? #f))
6453 (propagated-inputs
6454 `(("ruby-debug-inspector" ,ruby-debug-inspector)))
6455 (synopsis "Retrieve the binding of a method's caller")
6456 (description "The @code{binding_of_caller} module provides the
6457@code{Binding#of_caller} method. It allows accessing bindings from upper
6458frames in the call stack and can evaluate code in that context.")
6459 (home-page "https://github.com/banister/binding_of_caller")
6460 (license license:expat)))
6461
f4699abc
MC
6462(define-public ruby-pry-stack-explorer
6463 (package
6464 (name "ruby-pry-stack-explorer")
6465 (version "0.5.1")
6466 (source
6467 (origin
6468 (method url-fetch)
6469 (uri (rubygems-uri "pry-stack_explorer" version))
6470 (sha256
6471 (base32
6472 "157rd2n9pfvcmmicm0xkq8z4p6famaj13syrpra6b4032qpb1wn0"))))
6473 (build-system ruby-build-system)
6474 (arguments '(#:tests? #f)) ;no test suite in gem release
6475 (propagated-inputs
6476 `(("ruby-binding-of-caller" ,ruby-binding-of-caller)
6477 ("ruby-pry" ,ruby-pry)))
6478 (synopsis "Call-stack navigation plugin for the Pry REPL")
6479 (description "@code{pry-stack_explorer} is a plugin for the Pry REPL that
6480add support to navigate the call-stack.")
6481 (home-page "https://github.com/pry/pry-stack_explorer")
6482 (license license:expat)))
6483
1f014c97
MC
6484(define-public ruby-varint
6485 (package
6486 (name "ruby-varint")
6487 (version "0.1.1")
6488 (source
6489 (origin
6490 (method url-fetch)
6491 (uri (rubygems-uri "varint" version))
6492 (sha256
6493 (base32
6494 "1y0l2qc64cwsyv76ygg9bbjnk86riz2kq73kmn87gdrlmpiyrdac"))))
6495 (build-system ruby-build-system)
6496 (arguments '(#:tests? #f)) ;no test suite
6497 (synopsis "Variable length integers (varint) C extension for Ruby")
6498 (description "This package provides a small C extension to speed up
6499variable length integers (varint) in Ruby Protocol Buffers.")
6500 (home-page "https://github.com/liquidm/varint")
6501 (license license:bsd-3)))
6502
1b214174
MC
6503(define-public ruby-ruby-prof
6504 (package
6505 (name "ruby-ruby-prof")
6506 (version "1.4.1")
6507 (source
6508 (origin
6509 (method url-fetch)
6510 (uri (rubygems-uri "ruby-prof" version))
6511 (sha256
6512 (base32
6513 "12cd91m08ih0imfpy4k87618hd4mhyz291a6bx2hcskza4nf6d27"))))
6514 (build-system ruby-build-system)
6515 (arguments
6516 `(#:phases
6517 (modify-phases %standard-phases
6518 (add-after 'unpack 'patch-rakefile
6519 ;; This fixes the following error: "NameError: uninitialized
6520 ;; constant Bundler::GemHelper" (see:
6521 ;; https://github.com/ruby-prof/ruby-prof/issues/274).
6522 (lambda _
6523 (substitute* "Rakefile"
6524 ((".*require \"bundler/setup\".*" all)
6525 (string-append all " require 'bundler/gem_tasks'\n")))
6526 #t))
6527 (add-before 'check 'compile
6528 (lambda _
6529 (invoke "rake" "compile"))))))
6530 (native-inputs
6531 `(("bundler" ,bundler)
6532 ("ruby-minitest" ,ruby-minitest)
6533 ("ruby-rake-compiler" ,ruby-rake-compiler)
6534 ("ruby-rdoc" ,ruby-rdoc)))
6535 (synopsis "Fast code profiler for Ruby")
6536 (description "RubyProf is a fast code profiler for Ruby. Its features
6537include:
6538@table @asis
6539@item Speed
6540Being a C extension, it is many times faster than the standard Ruby profiler.
6541@item Measurement Modes
6542It can measure program wall time, process time, object allocations and memory
6543usage.
6544@item Reports
6545A variety of text and cross-referenced HTML reports can be generated.
6546@item Threads
6547Profiling multiple threads simultaneously is supported.
6548@end table")
6549 (home-page "https://github.com/ruby-prof/ruby-prof")
6550 (license license:bsd-2)))
6551
dff5392f
MC
6552(define-public ruby-cucumber-messages
6553 (package
6554 (name "ruby-cucumber-messages")
6555 (version "12.2.0")
6556 (source (origin
6557 (method git-fetch)
6558 (uri (git-reference
6559 (url "https://github.com/cucumber/messages-ruby.git")
6560 (commit "12cd07eac87bce7843fd1bb0bf64bc4da09f097c")))
6561 (file-name (git-file-name name version))
6562 (sha256
6563 (base32
6564 "16wwqfpsq7crvxc3q08lphgyh12cl2d83p1c79p312q4jmy9cn5a"))))
6565 (build-system ruby-build-system)
6566 (arguments
6567 `(#:phases (modify-phases %standard-phases
6568 (add-after 'unpack 'patch-protobuf.rb
6569 (lambda _
6570 (substitute* "rake/protobuf.rb"
6571 (("load 'protobuf/tasks/compile.rake'")
6572 "require 'protobuf/tasks'"))
6573 #t))
6574 (add-before 'build 'compile
6575 (lambda _
6576 (substitute* "Makefile"
6577 (("bundle exec ") "")
6578 (("include default.mk.*" all)
6579 (string-append "#" all)))
6580 (invoke "make")))
6581 (replace 'check
6582 (lambda _
6583 (invoke "rspec"))))))
6584 (propagated-inputs
6585 `(("ruby-protobuf" ,ruby-protobuf-cucumber)))
6586 (native-inputs
6587 `(("ruby-rspec" ,ruby-rspec)))
6588 (home-page "https://github.com/cucumber/messages-ruby")
6589 (synopsis "Cucumber Messages for Ruby (Protocol Buffers)")
6590 (description "Cucumber Messages for Ruby is a library which allows
6591serialization and deserialization of the protocol buffer messages used in
6592Cucumber.")
6593 (license license:expat)))
6594
44514637 6595(define-public ruby-gherkin
62e4cc5a 6596 (package
44514637 6597 (name "ruby-gherkin")
cfef316f
MC
6598 (version "14.0.1")
6599 (source (origin
6600 (method git-fetch)
6601 (uri (git-reference
6602 (url "https://github.com/cucumber/gherkin-ruby")
6603 (commit (string-append "v" version))))
6604 (file-name (git-file-name name version))
6605 (sha256
6606 (base32
6607 "1dwa8632nc6kijv8p257jl64rsjmc0fimlaqvxlkdi2h9n1nympb"))))
62e4cc5a
PP
6608 (build-system ruby-build-system)
6609 (native-inputs
cfef316f
MC
6610 `(("ruby-cucumber-messages" ,ruby-cucumber-messages)
6611 ("ruby-rspec" ,ruby-rspec)))
62e4cc5a 6612 (arguments
cfef316f 6613 `(#:test-target "spec"))
62e4cc5a 6614 (synopsis "Gherkin parser for Ruby")
44514637 6615 (description "Gherkin is a parser and compiler for the Gherkin language.
aada5f6f
CB
6616It is intended be used by all Cucumber implementations to parse
6617@file{.feature} files.")
cfef316f 6618 (home-page "https://github.com/cucumber/gherkin-ruby")
62e4cc5a 6619 (license license:expat)))
cd89fecb 6620
8f85018d
MB
6621(define-public ruby-gherkin-ruby
6622 (package
6623 (name "ruby-gherkin-ruby")
6624 (version "0.3.2")
6625 (home-page "http://github.com/codegram/gherkin-ruby")
6626 (source (origin
6627 (method url-fetch)
6628 (uri (rubygems-uri "gherkin-ruby" version))
6629 (sha256
6630 (base32
6631 "18ay7yiibf4sl9n94k7mbi4k5zj2igl4j71qcmkswv69znyx0sn1"))))
6632 (build-system ruby-build-system)
6633 (synopsis "Pure Ruby Gherkin parser")
6634 (description
6635 "Gherkin-ruby is a Gherkin parser written in pure Ruby and less than
6636200 lines of code.")
6637 ;; XXX: No license information anywhere but Readme.md.
6638 (license license:expat)))
6639
15b16c2c
CB
6640(define-public ruby-aruba
6641 (package
6642 (name "ruby-aruba")
cf7201c4 6643 (version "0.14.14")
15b16c2c
CB
6644 (source
6645 (origin
6646 (method url-fetch)
6647 (uri (rubygems-uri "aruba" version))
6648 (sha256
6649 (base32
cf7201c4 6650 "0l2mfpdxc03gdrbwc2hv4vdhjhqhfcdp6d02j05j64ncpi9srlqn"))))
15b16c2c
CB
6651 (build-system ruby-build-system)
6652 (arguments
6653 '(#:test-target "spec"
6654 #:phases
6655 (modify-phases %standard-phases
6656 (add-after 'unpack 'patch
6657 (lambda _
6658 (substitute* "spec/aruba/api_spec.rb"
6659 ;; This resolves some errors in the specs
6660 ;;
6661 ;; undefined method `parse' for Time:Class
6662 (("require 'spec_helper'")
6663 "require 'spec_helper'\nrequire 'time'"))
6664 ;; Avoid shebang issues in this spec file
6665 (substitute* "spec/aruba/matchers/command_spec.rb"
6666 (("/usr/bin/env bash")
6667 (which "bash")))
6668 #t))
6669 (add-before 'check 'remove-unnecessary-dependencies
6670 (lambda _
6671 (substitute* "Gemfile"
6672 ((".*byebug.*") "\n")
6673 ((".*pry.*") "\n")
6674 ((".*yaml.*") "\n")
6675 ((".*bcat.*") "\n")
6676 ((".*kramdown.*") "\n")
6677 ((".*rubocop.*") "\n")
6678 ((".*cucumber-pro.*") "\n")
6679 ((".*cucumber.*") "\n")
6680 ((".*license_finder.*") "\n")
6681 ((".*rake.*") "gem 'rake'\n")
15b16c2c 6682 ((".*relish.*") "\n"))
15b16c2c
CB
6683 (substitute* "aruba.gemspec"
6684 (("spec\\.add\\_runtime\\_dependency 'cucumber'.*")
6685 "spec.add_runtime_dependency 'cucumber'"))
6686 #t))
6687 (add-before 'check 'set-home
6688 (lambda _ (setenv "HOME" "/tmp") #t)))))
6689 (native-inputs
6690 `(("bundler" ,bundler)
6691 ("ruby-rspec" ,ruby-rspec)
cf7201c4
CB
6692 ("ruby-fuubar" ,ruby-fuubar)
6693 ("ruby-simplecov" ,ruby-simplecov)))
15b16c2c
CB
6694 (propagated-inputs
6695 `(("ruby-childprocess" ,ruby-childprocess)
6696 ("ruby-contracts" ,ruby-contracts)
6697 ("ruby-cucumber" ,ruby-cucumber)
6698 ("ruby-ffi" ,ruby-ffi)
6699 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
6700 ("ruby-thor" ,ruby-thor)
6701 ("ruby-yard" ,ruby-yard)))
6702 (synopsis "Test command-line applications with Cucumber, RSpec or Minitest")
6703 (description
6704 "Aruba is an extension for Cucumber, RSpec and Minitest for testing
6705command-line applications. It supports applications written in any
6706language.")
6707 (home-page "https://github.com/cucumber/aruba")
6708 (license license:expat)))
6709
6710;; A version of ruby-aruba without tests run so that circular dependencies can
6711;; be avoided.
6712(define ruby-aruba-without-tests
6713 (package
6714 (inherit ruby-aruba)
6715 (arguments '(#:tests? #f))
6716 (propagated-inputs
6717 `(("ruby-cucumber" ,ruby-cucumber-without-tests)
6718 ,@(alist-delete "ruby-cucumber"
6719 (package-propagated-inputs ruby-aruba))))
6720 (native-inputs '())))
6721
fd6577b4
MC
6722(define-public ruby-sys-uname
6723 (package
6724 (name "ruby-sys-uname")
6725 (version "1.2.1")
6726 (source
6727 (origin
6728 (method url-fetch)
6729 (uri (rubygems-uri "sys-uname" version))
6730 (sha256
6731 (base32
6732 "00p3wwvkdbg6pl38bchaagncv3i4fq4y0ks470imwykjanpy2ic0"))))
6733 (build-system ruby-build-system)
6734 (arguments
6735 `(#:test-target "spec"))
6736 (propagated-inputs `(("ruby-ffi" ,ruby-ffi)))
6737 (native-inputs `(("ruby-rspec" ,ruby-rspec)))
6738 (synopsis "Ruby interface for gathering system information")
6739 (description "The sys-uname library provides an interface for gathering
6740information about your current platform. It allows retrieving information
6741such as the OS name, OS version, system name, etc.")
6742 (home-page "https://github.com/djberg96/sys-uname")
6743 (license license:asl2.0)))
6744
ac3ec612
MC
6745(define-public ruby-cucumber-create-meta
6746 (package
6747 (name "ruby-cucumber-create-meta")
6748 (version "1.0.0")
6749 (source
6750 (origin
6751 (method url-fetch)
6752 (uri (rubygems-uri "cucumber-create-meta" version))
6753 (sha256
6754 (base32
6755 "0i0i3arymjrnjk72mg79w1a11607x4d0lrqafm9sz2gq9l52zasw"))))
6756 (build-system ruby-build-system)
6757 (arguments
6758 `(#:phases (modify-phases %standard-phases
6759 (add-after 'extract-gemspec 'relax-version-requirements
6760 (lambda _
6761 (substitute* ".gemspec"
6762 ((" 12\\.2")
6763 " 12.1"))
6764 #t))
6765 (replace 'check
6766 (lambda _
6767 (invoke "rspec"))))))
6768 (native-inputs
6769 `(("ruby-rspec" ,ruby-rspec)))
6770 (propagated-inputs
6771 `(("ruby-cucumber-messages" ,ruby-cucumber-messages)
6772 ("ruby-sys-uname" ,ruby-sys-uname)))
6773 (synopsis "Function to create @code{Meta} messages for Cucumber Ruby")
6774 (description "The @code{createMeta} utility function allows generating
6775system-specific @code{Meta} messages for Cucumber Ruby.")
6776 (home-page "https://github.com/cucumber/cucumber/tree/master/create-meta/ruby")
6777 (license license:expat)))
6778
f3574624
MC
6779(define-public ruby-cucumber-html-formatter
6780 (package
6781 (name "ruby-cucumber-html-formatter")
6782 (version "7.0.0")
6783 (source
6784 (origin
6785 (method url-fetch)
6786 (uri (rubygems-uri "cucumber-html-formatter" version))
6787 (sha256
6788 (base32
6789 "0lshj4sw9jw7687wrhknyb9kffblai3l843zgrznyqij3ga0bc62"))))
6790 (build-system ruby-build-system)
6791 (arguments
6792 `(#:phases (modify-phases %standard-phases
6793 (replace 'check
6794 (lambda _
6795 (invoke "rspec"))))))
6796 (native-inputs
6797 `(("ruby-rspec" ,ruby-rspec)))
6798 (propagated-inputs
6799 `(("ruby-cucumber-messages" ,ruby-cucumber-messages)))
6800 (synopsis "HTML formatter for Cucumber")
6801 (description "Cucumber HTML Formatter produces a HTML report for Cucumber
6802runs. It is built on top of cucumber-react and works with any Cucumber
6803implementation with a protocol buffer formatter that outputs Cucumber
6804messages.")
6805 (home-page "https://github.com/cucumber/cucumber/tree/\
6806master/html-formatter/ruby")
6807 (license license:expat)))
6808
15b16c2c
CB
6809(define-public ruby-cucumber
6810 (package
6811 (name "ruby-cucumber")
92ebbaad 6812 (version "4.1.0")
15b16c2c
CB
6813 (source
6814 (origin
6815 (method git-fetch)
6816 (uri (git-reference
6817 (url "https://github.com/cucumber/cucumber-ruby.git")
6818 (commit (string-append "v" version))))
6819 (file-name (git-file-name name version))
6820 (sha256
6821 (base32
92ebbaad 6822 "0g9rqfslbzkkrq2kvl14fgknrhfbji3bjjpjxff5nc9wzd3hd549"))))
15b16c2c
CB
6823 (build-system ruby-build-system)
6824 (arguments
fa8e4dbf 6825 '(#:test-target "default"
15b16c2c
CB
6826 #:phases
6827 (modify-phases %standard-phases
fa8e4dbf
MC
6828 (add-after 'unpack 'disable-rubocop
6829 ;; Rubocop lint check fails with our more recent version.
6830 (lambda _
6831 (substitute* "Rakefile"
6832 (("spec cucumber rubocop")
6833 "spec cucumber"))
6834 #t))
92ebbaad 6835 (add-after 'extract-gemspec 'strip-version-requirements
15b16c2c 6836 (lambda _
fa8e4dbf 6837 (delete-file "Gemfile") ;do not use Bundler
92ebbaad
MC
6838 (substitute* "cucumber.gemspec"
6839 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
6840 (string-append stripped "\n")))
fa8e4dbf
MC
6841 #t))
6842 (add-before 'check 'set-home
6843 (lambda _
6844 (setenv "HOME" (getcwd))
15b16c2c
CB
6845 #t)))))
6846 (propagated-inputs
6847 `(("ruby-builder" ,ruby-builder)
6848 ("ruby-cucumber-core" ,ruby-cucumber-core)
92ebbaad
MC
6849 ("ruby-cucumber-create-meta" ,ruby-cucumber-create-meta)
6850 ("ruby-cucumber-html-formatter" ,ruby-cucumber-html-formatter)
6851 ("ruby-cucumber-messages" ,ruby-cucumber-messages)
15b16c2c 6852 ("ruby-cucumber-wire" ,ruby-cucumber-wire)
15b16c2c
CB
6853 ("ruby-diff-lcs" ,ruby-diff-lcs)
6854 ("ruby-gherkin" ,ruby-gherkin)
6855 ("ruby-multi-json" ,ruby-multi-json)
6856 ("ruby-multi-test" ,ruby-multi-test)))
6857 (native-inputs
92ebbaad 6858 `(;; Use a untested version of aruba, to avoid a circular dependency, as
15b16c2c
CB
6859 ;; ruby-aruba depends on ruby-cucumber.
6860 ("ruby-aruba", ruby-aruba-without-tests)
6861 ("ruby-rspec" ,ruby-rspec)
6862 ("ruby-pry" ,ruby-pry)
92ebbaad
MC
6863 ("ruby-nokogiri" ,ruby-nokogiri)
6864 ("ruby-rubocop" ,ruby-rubocop)))
15b16c2c 6865 (synopsis "Describe automated tests in plain language")
92ebbaad
MC
6866 (description "Cucumber is a tool for running automated tests written in
6867plain language. It's designed to support a Behaviour Driven Development (BDD)
15b16c2c
CB
6868software development workflow.")
6869 (home-page "https://cucumber.io/")
6870 (license license:expat)))
6871
6872(define ruby-cucumber-without-tests
6873 (package (inherit ruby-cucumber)
6874 (arguments
6875 '(#:tests? #f))
6876 (native-inputs
6877 '())))
6878
f048ef52
MC
6879(define-public ruby-coveralls
6880 (package
6881 (name "ruby-coveralls")
6882 (version "0.8.23")
6883 (source
6884 (origin
6885 (method url-fetch)
6886 (uri (rubygems-uri "coveralls" version))
6887 (sha256
6888 (base32
6889 "1mv4fn5lfxhy7bc2f1lpnc5yp9mvv97az77j4r7jgrxcqwn8fqxc"))))
6890 (build-system ruby-build-system)
6891 ;; The test suite depends on ruby-vcr, which cannot be included in Guix
6892 ;; because of its nonfree, Hippocratic derived license.
6893 (arguments '(#:tests? #f))
6894 (propagated-inputs
6895 `(("ruby-json" ,ruby-json)
6896 ("ruby-term-ansicolor" ,ruby-term-ansicolor)
6897 ("ruby-thor" ,ruby-thor)
6898 ("ruby-tins" ,ruby-tins)))
6899 (synopsis "Ruby implementation of the Coveralls API")
6900 (description "This package provides a Ruby implementation of the Coveralls
6901API.")
6902 (home-page "https://coveralls.io")
6903 (license license:expat)))
f2a1b7fa
MC
6904
6905(define-public ruby-unindent
6906 (package
6907 (name "ruby-unindent")
6908 (version "1.0")
6909 (source
6910 (origin
6911 (method url-fetch)
6912 (uri (rubygems-uri "unindent" version))
6913 (sha256
6914 (base32
6915 "1wqh3rzv8589yzibigminxx3qpmj2nqj28f90xy1sczk1pijmcrd"))))
6916 (build-system ruby-build-system)
6917 (synopsis "Ruby method to unindent strings")
6918 (description "This module provides a @code{String#unindent} Ruby method to
6919unindent strings, which can be useful to unindent multiline strings embedded
6920in already-indented code.")
6921 (home-page "https://github.com/mynyml/unindent")
6922 (license license:expat)))
f048ef52 6923
cd89fecb
PP
6924(define-public ruby-cucumber-core
6925 (package
6926 (name "ruby-cucumber-core")
95a5d992 6927 (version "7.1.0")
cd89fecb
PP
6928 (source
6929 (origin
95a5d992
MC
6930 (method git-fetch)
6931 (uri (git-reference
6932 (url "https://github.com/cucumber/cucumber-ruby-core.git")
6933 (commit (string-append "v" version))))
6934 (file-name (git-file-name name version))
cd89fecb
PP
6935 (sha256
6936 (base32
95a5d992 6937 "1p5wb6wbggbw37ariyag4kxpiczznvgm3c8cnz1744dmbj79q1rn"))))
cd89fecb 6938 (build-system ruby-build-system)
95a5d992
MC
6939 (arguments
6940 `(#:test-target "spec"
6941 #:phases
6942 (modify-phases %standard-phases
6943 (add-after 'extract-gemspec 'relax-version-requirements
6944 (lambda _
6945 (substitute* "cucumber-core.gemspec"
6946 (("'cucumber-tag-expressions',.*")
6947 "'cucumber-tag-expressions', '>=2.0.0'\n"))
6948 #t)))))
6949 (native-inputs
6950 `(("ruby-rspec" ,ruby-rspec)
6951 ("ruby-coveralls" ,ruby-coveralls)
6952 ("ruby-rubocop" ,ruby-rubocop)
6953 ("ruby-simplecov" ,ruby-simplecov)
6954 ("ruby-unindent" ,ruby-unindent)))
cd89fecb 6955 (propagated-inputs
95a5d992 6956 `(("ruby-cucumber-messages" ,ruby-cucumber-messages)
5cd047e8
CB
6957 ("ruby-gherkin" ,ruby-gherkin)
6958 ("ruby-cucumber-tag-expressions" ,ruby-cucumber-tag-expressions)))
cd89fecb
PP
6959 (synopsis "Core library for the Cucumber BDD app")
6960 (description "Cucumber is a tool for running automated tests
6961written in plain language. Because they're written in plain language,
6962they can be read by anyone on your team. Because they can be read by
6963anyone, you can use them to help improve communication, collaboration
6964and trust on your team.")
6965 (home-page "https://cucumber.io/")
6966 (license license:expat)))
212d563d 6967
fb1a8954
CB
6968(define-public ruby-cucumber-expressions
6969 (package
6970 (name "ruby-cucumber-expressions")
4ada4a42 6971 (version "10.2.0")
fb1a8954
CB
6972 (source
6973 (origin
4ada4a42
MC
6974 (method git-fetch)
6975 (uri (git-reference
6976 (url "https://github.com/cucumber/cucumber-expressions-ruby.git")
6977 (commit (string-append "v" version))))
6978 (file-name (git-file-name name version))
fb1a8954
CB
6979 (sha256
6980 (base32
4ada4a42 6981 "1aivhcpjrmbvp9bg0y7g6zxh2swfvylvg0sapq5jc4i1y74k8npd"))))
fb1a8954
CB
6982 (build-system ruby-build-system)
6983 (arguments
6984 '(#:test-target "spec"))
6985 (native-inputs
4ada4a42 6986 `(("ruby-rspec" ,ruby-rspec)
fb1a8954
CB
6987 ("ruby-simplecov" ,ruby-simplecov)))
6988 (synopsis "Simpler alternative to Regular Expressions")
6989 (description "Cucumber Expressions offer similar functionality to Regular
6990Expressions, with a syntax that is easier to read and write. Cucumber
6991Expressions are extensible with parameter types.")
6992 (home-page "https://github.com/cucumber/cucumber-expressions-ruby")
6993 (license license:expat)))
6994
ce872770
CB
6995(define-public ruby-cucumber-wire
6996 (package
6997 (name "ruby-cucumber-wire")
6516827e 6998 (version "3.1.0")
ce872770
CB
6999 (source
7000 (origin
7001 (method url-fetch)
7002 (uri (rubygems-uri "cucumber-wire" version))
7003 (sha256
7004 (base32
6516827e 7005 "0z1n13lqv70zb2lcrvs2263lm0gsb3gz8gbv890kxzwp8cvd433k"))))
ce872770
CB
7006 (build-system ruby-build-system)
7007 (arguments
6516827e 7008 '(#:tests? #f ;tests use cucumber, causing a cycle
ce872770
CB
7009 #:phases
7010 (modify-phases %standard-phases
6516827e 7011 (add-after 'extract-gemspec 'relax-version-requirements
ce872770 7012 (lambda _
6516827e
MC
7013 (substitute* ".gemspec"
7014 ((" 10\\.1") " 10.2"))
ce872770 7015 #t)))))
6516827e
MC
7016 (propagated-inputs
7017 `(("ruby-cucumber-core" ,ruby-cucumber-core)
7018 ("ruby-cucumber-expressions" ,ruby-cucumber-expressions)
7019 ("ruby-cucumber-messages" ,ruby-cucumber-messages)))
ce872770 7020 (synopsis "Cucumber wire protocol plugin")
6516827e
MC
7021 (description "Cucumber's wire protocol allows step definitions to be
7022implemented and invoked on any platform.")
ce872770
CB
7023 (home-page "https://github.com/cucumber/cucumber-ruby-wire")
7024 (license license:expat)))
7025
0ce8f344
CB
7026(define-public ruby-cucumber-tag-expressions
7027 (package
7028 (name "ruby-cucumber-tag-expressions")
0d2c45ce 7029 (version "3.0.0")
0ce8f344
CB
7030 (source
7031 (origin
0d2c45ce
MC
7032 (method git-fetch)
7033 (uri (git-reference
7034 (url "https://github.com/cucumber/tag-expressions-ruby.git")
7035 (commit (string-append "v" version))))
7036 (file-name (git-file-name name version))
0ce8f344
CB
7037 (sha256
7038 (base32
0d2c45ce 7039 "15dw4w0npd4m6aw7zhqkjxxzngp42kswrkwfygxkxcxnhy5zl1vx"))))
0ce8f344
CB
7040 (build-system ruby-build-system)
7041 (arguments
0d2c45ce 7042 `(#:test-target "spec"))
0ce8f344
CB
7043 (native-inputs
7044 `(("ruby-rspec" ,ruby-rspec)))
7045 (synopsis "Cucumber tag expressions for Ruby")
0d2c45ce
MC
7046 (description "Cucumber tag expression parser for Ruby. A tag expression
7047is an infix boolean expression used by Cucumber.")
0ce8f344
CB
7048 (home-page "https://github.com/cucumber/tag-expressions-ruby")
7049 (license license:expat)))
7050
73a5aff7
CB
7051(define-public ruby-bindex
7052 (package
7053 (name "ruby-bindex")
7054 (version "0.5.0")
7055 (source
7056 (origin
7057 (method url-fetch)
7058 (uri (rubygems-uri "bindex" version))
7059 (sha256
7060 (base32
7061 "1wvhf4v8sk5x8li03pcc0v0wglmyv7ikvvg05bnms83dfy7s4k8i"))))
7062 (build-system ruby-build-system)
7063 (arguments
7064 '(#:test-target "default"))
7065 (native-inputs
7066 `(("bundler" ,bundler)
7067 ("ruby-rake-compiler" ,ruby-rake-compiler)))
7068 (synopsis "Provides access for bindings relating to Ruby exceptions")
7069 (description
7070 "@code{bindex} provides a way to access the bindings that relate to
7071exceptions in Ruby, providing more information about the context in which the
7072exception occurred.")
7073 (home-page "https://github.com/gsamokovarov/bindex")
7074 (license license:expat)))
7075
212d563d
PP
7076(define-public ruby-bio-logger
7077 (package
7078 (name "ruby-bio-logger")
7079 (version "1.0.1")
7080 (source
7081 (origin
7082 (method url-fetch)
7083 (uri (rubygems-uri "bio-logger" version))
7084 (sha256
7085 (base32
7086 "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
7087 (build-system ruby-build-system)
7088 (arguments
7089 `(#:tests? #f)) ; rake errors, missing shoulda
7090 (propagated-inputs
7091 `(("ruby-log4r" ,ruby-log4r)))
7092 (synopsis "Log4r wrapper for Ruby")
7093 (description "Bio-logger is a wrapper around Log4r adding extra logging
7094features such as filtering and fine grained logging.")
7095 (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
7096 (license license:expat)))
07f61cb2 7097
2db0f9c8
BW
7098(define-public ruby-yajl-ruby
7099 (package
7100 (name "ruby-yajl-ruby")
7101 (version "1.4.1")
7102 (source
7103 (origin
7104 (method url-fetch)
7105 (uri (rubygems-uri "yajl-ruby" version))
7106 (sha256
7107 (base32
7108 "16v0w5749qjp13xhjgr2gcsvjv6mf35br7iqwycix1n2h7kfcckf"))))
7109 (build-system ruby-build-system)
7110 (arguments
7111 '(#:test-target "spec"
7112 #:phases
7113 (modify-phases %standard-phases
7114 (add-before 'check 'patch-test-to-update-load-path
7115 (lambda _
7116 (substitute* "spec/parsing/large_number_spec.rb"
7117 (("require \"yajl\"")
7118 "$LOAD_PATH << 'lib'; require 'yajl'"))
7119 #t)))))
7120 (native-inputs
7121 `(("ruby-rake-compiler" ,ruby-rake-compiler)
7122 ("ruby-rspec" ,ruby-rspec)))
7123 (synopsis "Streaming JSON parsing and encoding library for Ruby")
7124 (description
7125 "Ruby C bindings to the Yajl JSON stream-based parser library. The API
7126is compatible with the JSON gem, so yajl-ruby can act as a drop in
7127replacement.
7128
7129A modified copy of yajl is used, and included in the package.")
7130 (home-page "https://github.com/brianmario/yajl-ruby")
7131 (license (list license:expat ; Ruby code, yajl_ext.c and yajl_ext.h
7132 license:bsd-3)))) ; Included, modified copy of yajl
7133
07f61cb2 7134(define-public ruby-yard
6499893e
BW
7135 (package
7136 (name "ruby-yard")
7eb8ff0b 7137 (version "0.9.25")
6499893e
BW
7138 (source
7139 (origin
f3fd70c0 7140 (method git-fetch)
6499893e 7141 ;; Tests do not pass if we build from the distributed gem.
f3fd70c0 7142 (uri (git-reference
65a61239
MC
7143 (url "https://github.com/lsegal/yard")
7144 (commit (string-append "v" version))))
f3fd70c0 7145 (file-name (git-file-name name version))
6499893e
BW
7146 (sha256
7147 (base32
7eb8ff0b 7148 "1x7y4s557hrnq439lih7nqg1y7ximardw75jx9i92x3yzpviqqwa"))))
6499893e
BW
7149 (build-system ruby-build-system)
7150 (arguments
65a61239
MC
7151 ;; Note: Tests are willfully disabled to alleviate dependency cycle
7152 ;; problems.
7153 `(#:tests? #f))
6499893e 7154 (synopsis "Documentation generation tool for Ruby")
65a61239
MC
7155 (description "YARD is a documentation generation tool for the Ruby
7156programming language. It enables the user to generate consistent, usable
7157documentation that can be exported to a number of formats very easily, and
7158also supports extending for custom Ruby constructs such as custom class level
7159definitions.")
2f3800e5 7160 (home-page "https://yardoc.org")
6499893e 7161 (license license:expat)))
2cbcd23a 7162
df32ab11
MC
7163(define-public ruby-yard-with-tests
7164 (package
7165 (inherit ruby-yard)
7166 (name "ruby-yard-with-tests")
7167 (arguments
7168 (substitute-keyword-arguments (package-arguments ruby-yard)
7169 ((#:tests? _ #t) #t)
7170 ((#:test-target _ "default") "default")
7171 ((#:phases phases '%standard-phases)
7172 `(modify-phases ,phases
7173 (add-before 'check 'prepare-for-tests
7174 (lambda* (#:key tests? #:allow-other-keys)
7175 (when tests?
7176 (substitute* "Rakefile"
7177 ((".*[Ss]amus.*") ""))
7178 ;; Delete the Gemfile to avoid errors relating to it.
7179 (delete-file "Gemfile")
7180 ;; $HOME needs to be set to somewhere writeable for tests to
7181 ;; run.
7182 (setenv "HOME" "/tmp"))
7183 #t))))))
7184 (native-inputs
7185 `(("ruby-rspec" ,ruby-rspec)
7186 ("ruby-rack" ,ruby-rack)
7187 ("ruby-redcloth" ,ruby-redcloth)
7188 ("ruby-asciidoc" ,ruby-asciidoctor)))))
7189
ad686ef3
RW
7190(define-public ruby-clap
7191 (package
7192 (name "ruby-clap")
7193 (version "1.0.0")
7194 (source (origin
7195 (method url-fetch)
7196 (uri (rubygems-uri "clap" version))
7197 (sha256
7198 (base32
7199 "190m05k3pca72c1h8k0fnvby15m303zi0lpb9c478ad19wqawa5q"))))
7200 (build-system ruby-build-system)
7201 ;; Clap needs cutest for running tests, but cutest needs clap.
7202 (arguments `(#:tests? #f))
7203 (synopsis "Command line argument parsing for simple applications")
7204 (description
7205 "Clap provides command line argument parsing features. It covers the
7206simple case of executing code based on the flags or parameters passed.")
7207 (home-page "https://github.com/djanowski/cutest")
0c80451e
RW
7208 (license license:expat)))
7209
7210(define-public ruby-cutest
7211 (package
7212 (name "ruby-cutest")
7213 (version "1.2.2")
7214 (source (origin
7215 (method url-fetch)
7216 (uri (rubygems-uri "cutest" version))
7217 (sha256
7218 (base32
7219 "1mldhjn62g53vx4gq2qdqg2lgjvyrqxa8d0khf8347bbfgi16d32"))))
7220 (build-system ruby-build-system)
7221 (propagated-inputs
7222 `(("ruby-clap" ,ruby-clap)))
7223 (synopsis "Run tests in separate processes")
7224 (description
7225 "Cutest runs tests in separate processes to avoid shared state.")
7226 (home-page "https://github.com/djanowski/cutest")
ad686ef3
RW
7227 (license license:expat)))
7228
ac09beba
RW
7229(define-public ruby-pygmentize
7230 (package
7231 (name "ruby-pygmentize")
7232 (version "0.0.3")
7233 (source (origin
7234 (method url-fetch)
7235 (uri (rubygems-uri "pygmentize" version))
7236 (sha256
7237 (base32
7238 "1pxryhkiwvsz6xzda3bvqwz5z8ggzl1cdglf8qbcf4bb7akirdpb"))))
7239 (build-system ruby-build-system)
7240 (arguments
7241 `(#:phases
7242 (modify-phases %standard-phases
7243 (add-after 'unpack 'fix-pygmentize-path
7244 (lambda _
7245 (substitute* "lib/pygmentize.rb"
7246 (("\"/usr/bin/env python.*")
7247 (string-append "\"" (which "pygmentize") "\"\n")))
7248 #t))
7249 (add-after 'build 'do-not-use-vendor-directory
7250 (lambda _
7251 ;; Remove bundled pygments sources
7252 ;; FIXME: ruby-build-system does not support snippets.
7253 (delete-file-recursively "vendor")
7254 (substitute* "pygmentize.gemspec"
7255 (("\"vendor/\\*\\*/\\*\",") ""))
7256 #t)))))
7257 (inputs
7258 `(("pygments" ,python-pygments)))
7259 (native-inputs
7260 `(("ruby-cutest" ,ruby-cutest)
7261 ("ruby-nokogiri" ,ruby-nokogiri)))
7262 (synopsis "Thin Ruby wrapper around pygmentize")
7263 (description
7264 "Pygmentize provides a simple way to call pygmentize from within a Ruby
7265application.")
7266 (home-page "https://github.com/djanowski/pygmentize")
7267 (license license:expat)))
7268
2cbcd23a
DT
7269(define-public ruby-eventmachine
7270 (package
7271 (name "ruby-eventmachine")
c207fa5e 7272 (version "1.2.7")
2cbcd23a
DT
7273 (source
7274 (origin
7275 (method url-fetch)
7276 (uri (rubygems-uri "eventmachine" version))
7277 (sha256
7278 (base32
c207fa5e 7279 "0wh9aqb0skz80fhfn66lbpr4f86ya2z5rx6gm5xlfhd05bj1ch4r"))))
2cbcd23a
DT
7280 (build-system ruby-build-system)
7281 (arguments
c5d269fb 7282 '(#:tests? #f)) ; test suite tries to connect to google.com
2cbcd23a
DT
7283 (native-inputs
7284 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
7285 (synopsis "Single-threaded network event framework for Ruby")
7286 (description
7287 "EventMachine implements a single-threaded engine for arbitrary network
7288communications. EventMachine wraps all interactions with sockets, allowing
7289programs to concentrate on the implementation of network protocols. It can be
7290used to create both network servers and clients.")
24a26227
TGR
7291 ;; The ‘official’ rubyeventmachine.com domain is now registrar-squatted.
7292 (home-page "https://github.com/eventmachine/eventmachine")
2cbcd23a 7293 (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT
7d3a1a2d 7294
e218b0c8
BW
7295(define-public ruby-ruby-engine
7296 (package
7297 (name "ruby-ruby-engine")
77d098bf 7298 (version "2.0.0")
e218b0c8
BW
7299 (source
7300 (origin
7301 (method url-fetch)
7302 (uri (rubygems-uri "ruby_engine" version))
7303 (sha256
7304 (base32
77d098bf 7305 "0wqdcv8gxybp1y7kjhh18g3r9dczacs62d4ahcvyhz32bih8c9fm"))))
e218b0c8
BW
7306 (build-system ruby-build-system)
7307 (arguments
7308 `(#:phases
7309 (modify-phases %standard-phases
77d098bf 7310 (add-after 'extract-gemspec 'clean-up
e218b0c8
BW
7311 (lambda _
7312 (delete-file "Gemfile.lock")
7313 (substitute* "ruby_engine.gemspec"
7314 ;; Remove unnecessary imports that would entail further
7315 ;; dependencies.
7316 ((".*<rdoc.*") "")
7317 ((".*<rubygems-tasks.*") "")
7318 ;; Remove extraneous .gem file
77d098bf
MC
7319 (("\"pkg/ruby_engine-[0-9.]+\\.gem\".freeze, ") "")
7320 (("\"Gemfile.lock\".freeze, ") "")
e218b0c8 7321 ;; Soften rake dependency
77d098bf 7322 (("%q<rake>.freeze, \\[\"~> 10.0\"\\]")
e218b0c8
BW
7323 "%q<rake>.freeze, [\">= 10.0\"]")
7324 ;; Soften the rspec dependency
77d098bf 7325 (("%q<rspec>.freeze, \\[\"~> 2.4\"\\]")
e218b0c8
BW
7326 "%q<rspec>.freeze, [\">= 2.4\"]"))
7327 (substitute* "Rakefile"
7328 (("require 'rubygems/tasks'") "")
7329 (("Gem::Tasks.new") ""))
7330 ;; Remove extraneous .gem file that otherwise gets installed.
77d098bf 7331 (delete-file-recursively "pkg")
e218b0c8
BW
7332 #t)))))
7333 (native-inputs
7334 `(("bundler" ,bundler)
7335 ("ruby-rake" ,ruby-rake)
7336 ("ruby-rspec" ,ruby-rspec)))
7337 (synopsis "Simplifies checking for Ruby implementation")
7338 (description
7339 "@code{ruby_engine} provides an RubyEngine class that can be used to
7340check which implementation of Ruby is in use. It can provide the interpreter
7341name and provides query methods such as @{RubyEngine.mri?}.")
7342 (home-page "https://github.com/janlelis/ruby_engine")
7343 (license license:expat)))
7344
8092e333
BW
7345(define-public ruby-turn
7346 (package
7347 (name "ruby-turn")
7348 (version "0.9.7")
7349 (source
7350 (origin
7351 (method url-fetch)
7352 (uri (rubygems-uri "turn" version))
7353 (sha256
7354 (base32
7355 "1691rc2sq04cw8mxxh340k2j04ll90kwgcy8ddrp6rligmfrf8fw"))))
7356 (build-system ruby-build-system)
7357 (arguments
7358 `(#:phases
7359 (modify-phases %standard-phases
7360 ;; Tests fail because turn changes its environment so can no longer
7361 ;; find test/unit. Instead simply test if the executable runs
7362 ;; without issue.
7363 (replace 'check
7364 (lambda _
9923d5a4 7365 (invoke "ruby" "-Ilib" "bin/turn" "-h"))))))
8092e333
BW
7366 (propagated-inputs
7367 `(("ruby-ansi" ,ruby-ansi)
7368 ("ruby-minitest" ,ruby-minitest-4)))
7369 (synopsis "Alternate set of alternative runners for MiniTest")
7370 (description
7371 "TURN provides a set of alternative runners for MiniTest which are both
7372colorful and informative. TURN displays each test on a separate line with
7373failures being displayed immediately instead of at the end of the tests. Note
7374that TURN is no longer being maintained.")
f433b662 7375 (home-page "https://rubygems.org/gems/turn")
8092e333
BW
7376 (license license:expat)))
7377
8279b1d3
CB
7378(define-public ruby-mimemagic
7379 (package
7380 (name "ruby-mimemagic")
60bc8952 7381 (version "0.3.3")
8279b1d3
CB
7382 (source
7383 (origin
7384 (method url-fetch)
7385 (uri (rubygems-uri "mimemagic" version))
7386 (sha256
60bc8952 7387 (base32 "04cp5sfbh1qx82yqxn0q75c7hlcx8y1dr5g3kyzwm4mx6wi2gifw"))))
8279b1d3
CB
7388 (build-system ruby-build-system)
7389 (arguments
7390 '(#:phases
7391 (modify-phases %standard-phases
7392 ;; This phase breaks the tests, as it patches some of the test data.
7393 (delete 'patch-source-shebangs))))
7394 (native-inputs
7395 `(("ruby-bacon" ,ruby-bacon)))
7396 (synopsis "Ruby library for MIME detection by extension or content")
7397 (description
7398 "@acronym{MIME, Multipurpose Internet Mail Extensions} detection by
7399extension or content, using the freedesktop.org.xml shared-mime-info
7400database.")
7401 (home-page "https://github.com/minad/mimemagic")
7402 (license license:expat)))
7403
32d1c06f
BW
7404(define-public ruby-mime-types-data
7405 (package
7406 (name "ruby-mime-types-data")
f49511db 7407 (version "3.2016.0521")
32d1c06f
BW
7408 (source
7409 (origin
7410 (method url-fetch)
7411 (uri (rubygems-uri "mime-types-data" version))
7412 (sha256
7413 (base32
f49511db 7414 "04my3746hwa4yvbx1ranhfaqkgf6vavi1kyijjnw8w3dy37vqhkm"))))
32d1c06f
BW
7415 (build-system ruby-build-system)
7416 (native-inputs
7417 `(("ruby-hoe" ,ruby-hoe)))
7418 (synopsis "Registry for information about MIME media type definitions")
7419 (description
7420 "@code{mime-types-data} provides a registry for information about
7421Multipurpose Internet Mail Extensions (MIME) media type definitions. It can
7422be used with the Ruby mime-types library or other software to determine
7423defined filename extensions for MIME types, or to use filename extensions to
7424look up the likely MIME type definitions.")
7425 (home-page "https://github.com/mime-types/mime-types-data/")
7426 (license license:expat)))
7427
d39b606c
BW
7428(define-public ruby-mime-types
7429 (package
7430 (name "ruby-mime-types")
803bcc81 7431 (version "3.1")
d39b606c
BW
7432 (source
7433 (origin
7434 (method url-fetch)
7435 (uri (rubygems-uri "mime-types" version))
7436 (sha256
7437 (base32
803bcc81 7438 "0087z9kbnlqhci7fxh9f6il63hj1k02icq2rs0c6cppmqchr753m"))))
d39b606c
BW
7439 (build-system ruby-build-system)
7440 (propagated-inputs
7441 `(("ruby-mime-types-data" ,ruby-mime-types-data)))
7442 (native-inputs
7443 `(("ruby-hoe" ,ruby-hoe)
7444 ("ruby-fivemat" ,ruby-fivemat)
7445 ("ruby-minitest-focus" ,ruby-minitest-focus)
7446 ("ruby-minitest-rg" ,ruby-minitest-rg)
803bcc81
BW
7447 ("ruby-minitest-bonus-assertions" ,ruby-minitest-bonus-assertions)
7448 ("ruby-minitest-hooks" ,ruby-minitest-hooks)))
d39b606c
BW
7449 (synopsis "Library and registry for MIME content type definitions")
7450 (description "The mime-types library provides a library and registry for
7451information about Multipurpose Internet Mail Extensions (MIME) content type
7452definitions. It can be used to determine defined filename extensions for MIME
7453types, or to use filename extensions to look up the likely MIME type
7454definitions.")
7455 (home-page "https://github.com/mime-types/ruby-mime-types")
7456 (license license:expat)))
7457
eb5e0bd9
BW
7458(define-public ruby-fivemat
7459 (package
7460 (name "ruby-fivemat")
c664ebcc 7461 (version "1.3.7")
eb5e0bd9
BW
7462 (source
7463 (origin
7464 (method url-fetch)
7465 (uri (rubygems-uri "fivemat" version))
7466 (sha256
7467 (base32
c664ebcc 7468 "0pzlycasvwmg4bbx7plllpqnhd9zlmmff8l2w3yii86nrm2nvf9n"))))
eb5e0bd9
BW
7469 (build-system ruby-build-system)
7470 (arguments
7471 `(#:tests? #f)) ; no tests
7472 (synopsis "Each test file given its own line of dots")
7473 (description
7474 "Fivemat is a MiniTest/RSpec/Cucumber formatter that gives each test file
7475its own line of dots during testing. It aims to provide test output that is
7476neither too verbose nor too minimal.")
7477 (home-page "https://github.com/tpope/fivemat")
7478 (license license:expat)))
7479
4fea500b
BW
7480(define-public ruby-sqlite3
7481 (package
7482 (name "ruby-sqlite3")
e7cdba61 7483 (version "1.4.2")
4fea500b
BW
7484 (source
7485 (origin
7486 (method url-fetch)
7487 (uri (rubygems-uri "sqlite3" version))
7488 (sha256
7489 (base32
e7cdba61 7490 "0lja01cp9xd5m6vmx99zwn4r7s97r1w5cb76gqd8xhbm1wxyzf78"))))
4fea500b
BW
7491 (build-system ruby-build-system)
7492 (arguments
7493 `(#:phases
7494 (modify-phases %standard-phases
7495 (add-before 'check 'add-gemtest-file
7496 ;; This file exists in the repository but is not distributed.
9923d5a4 7497 (lambda _ (invoke "touch" ".gemtest"))))))
4fea500b
BW
7498 (inputs
7499 `(("sqlite" ,sqlite)))
7500 (native-inputs
7501 `(("ruby-hoe" ,ruby-hoe)
7502 ("ruby-rake-compiler" ,ruby-rake-compiler)
7503 ("ruby-mini-portile" ,ruby-mini-portile)))
7504 (synopsis "Interface with SQLite3 databases")
7505 (description
7506 "This module allows Ruby programs to interface with the SQLite3 database
7507engine.")
7508 (home-page
7509 "https://github.com/sparklemotion/sqlite3-ruby")
7510 (license license:bsd-3)))
7511
4dfa39cc
BW
7512(define-public ruby-shoulda-context
7513 (package
7514 (name "ruby-shoulda-context")
e7d1d472 7515 (version "1.2.2")
4dfa39cc
BW
7516 (source
7517 (origin
7518 (method url-fetch)
7519 (uri (rubygems-uri "shoulda-context" version))
7520 (sha256
7521 (base32
e7d1d472 7522 "1l0ncsxycb4s8n47dml97kdnixw4mizljbkwqc3rh05r70csq9bc"))))
4dfa39cc
BW
7523 (build-system ruby-build-system)
7524 (arguments
7525 `(#:phases
7526 (modify-phases %standard-phases
7527 (replace 'check
7528 (lambda _
7529 ;; Do not run tests to avoid circular dependence with rails.
7530 ;; Instead just import the library to test.
9923d5a4 7531 (invoke "ruby" "-Ilib" "-r" "shoulda-context"))))))
4dfa39cc
BW
7532 (synopsis "Test::Unit context framework extracted from Shoulda")
7533 (description
7534 "@code{shoulda-context} is the context framework extracted from Shoulda.
7535Instead of writing Ruby methods with lots_of_underscores, shoulda-context adds
7536context, setup, and should blocks combine to produce natural test method
7537names.")
7538 (home-page "https://github.com/thoughtbot/shoulda-context")
7539 (license license:expat)))
7540
e4fea008
BW
7541(define-public ruby-shoulda-matchers
7542 (package
7543 (name "ruby-shoulda-matchers")
d1c1f368 7544 (version "3.1.2")
e4fea008
BW
7545 (source
7546 (origin
7547 (method url-fetch)
7548 (uri (rubygems-uri "shoulda-matchers" version))
7549 (sha256
7550 (base32
d1c1f368 7551 "1zvv94pqk5b5my3w1shdz7h34xf2ldhg5k4qfdpbwi2iy0j9zw2a"))))
e4fea008
BW
7552 (build-system ruby-build-system)
7553 (arguments
7554 `(#:phases
7555 (modify-phases %standard-phases
e4fea008
BW
7556 (replace 'check
7557 (lambda _
7558 ;; Do not run tests to avoid circular dependence with rails. Instead
7559 ;; just import the library to test.
9923d5a4 7560 (invoke "ruby" "-Ilib" "-r" "shoulda-matchers"))))))
e4fea008
BW
7561 (propagated-inputs
7562 `(("ruby-activesupport" ,ruby-activesupport)))
7563 (synopsis "Collection of testing matchers extracted from Shoulda")
7564 (description
7565 "Shoulda Matchers provides RSpec- and Minitest-compatible one-liners that
7566test common Rails functionality. These tests would otherwise be much longer,
7567more complex, and error-prone.")
7568 (home-page "https://github.com/thoughtbot/shoulda-matchers")
7569 (license license:expat)))
7570
3885c58b
BW
7571(define-public ruby-shoulda-matchers-2
7572 (package
7573 (inherit ruby-shoulda-matchers)
7574 (version "2.8.0")
7575 (source (origin
7576 (method url-fetch)
7577 (uri (rubygems-uri "shoulda-matchers" version))
7578 (sha256
7579 (base32
7580 "0d3ryqcsk1n9y35bx5wxnqbgw4m8b3c79isazdjnnbg8crdp72d0"))))))
7581
6f390716
BW
7582(define-public ruby-shoulda
7583 (package
7584 (name "ruby-shoulda")
7585 (version "3.5.0")
7586 (source
7587 (origin
7588 (method url-fetch)
7589 (uri (rubygems-uri "shoulda" version))
7590 (sha256
7591 (base32
7592 "0csmf15a7mcinfq54lfa4arp0f4b2jmwva55m0p94hdf3pxnjymy"))))
7593 (build-system ruby-build-system)
7594 (arguments
7595 `(#:phases
7596 (modify-phases %standard-phases
7597 (replace 'check
7598 ;; Don't run tests to avoid circular dependence with rails. Instead
7599 ;; just import the library to test.
9923d5a4 7600 (lambda _ (invoke "ruby" "-Ilib" "-r" "shoulda"))))))
6f390716
BW
7601 (propagated-inputs
7602 `(("ruby-shoulda-context" ,ruby-shoulda-context)
7603 ("ruby-shoulda-matchers" ,ruby-shoulda-matchers-2)))
7604 (synopsis "Context framework and matchers for testing")
7605 (description
7606 "@code{shoulda} is a meta-package combining @code{shoulda-context} and
7607@code{shoulda-matchers} providing tools for writing tests.")
7608 (home-page "https://github.com/thoughtbot/shoulda")
7609 (license license:expat)))
7610
3b44bcdf
BW
7611(define-public ruby-unf
7612 (package
7613 (name "ruby-unf")
7614 (version "0.1.4")
7615 (source
7616 (origin
7617 (method url-fetch)
7618 (uri (rubygems-uri "unf" version))
7619 (sha256
7620 (base32
7621 "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9"))))
7622 (build-system ruby-build-system)
7623 (arguments
7624 `(#:phases
7625 (modify-phases %standard-phases
7626 (add-before 'check 'add-dependency-to-bundler
7627 (lambda _
7628 ;; test-unit is required but not provided by the bundler
7629 ;; environment. This is fixed in the upstream repository but fix
7630 ;; has not been released.
7631 (substitute* "Gemfile"
7632 (("^gemspec") "gem 'test-unit'\ngemspec"))
7633 #t)))))
7634 (propagated-inputs
7635 `(("ruby-unf-ext" ,ruby-unf-ext)))
7636 (native-inputs
7637 `(("ruby-shoulda" ,ruby-shoulda)
7638 ("bundler" ,bundler)
7639 ("ruby-test-unit" ,ruby-test-unit)))
7640 (synopsis "Unicode Normalization Form support to Ruby and JRuby")
7641 (description
7642 "@code{ruby-unf} is a wrapper library to bring Unicode Normalization Form
7643support to both Ruby and JRuby. It uses @code{unf_ext} on CRuby and
7644@code{java.text.Normalizer} on JRuby.")
7645 (home-page "https://github.com/knu/ruby-unf")
7646 (license license:bsd-2)))
7647
e32c99d2
CB
7648(define-public ruby-warden
7649 (package
7650 (name "ruby-warden")
7651 (version "1.2.8")
7652 (source
7653 (origin
7654 (method url-fetch)
7655 (uri (rubygems-uri "warden" version))
7656 (sha256
7657 (base32
7658 "1fr9n9i9r82xb6i61fdw4xgc7zjv7fsdrr4k0njchy87iw9fl454"))))
7659 (build-system ruby-build-system)
7660 (arguments
7661 '(#:tests? #f)) ; No included tests
7662 (propagated-inputs
7663 `(("ruby-rack" ,ruby-rack)))
7664 (synopsis "Rack middleware providing authentication")
7665 (description
7666 "Warden is a Rack-based middleware that provides a mechanism for
7667authentication in Ruby web applications.")
7668 (home-page "https://github.com/wardencommunity/warden")
7669 (license license:expat)))
7670
e42eecdb
CB
7671(define-public ruby-warden-oauth2
7672 (package
7673 (name "ruby-warden-oauth2")
7674 (version "0.0.1")
7675 (source
7676 (origin
7677 (method url-fetch)
7678 (uri (rubygems-uri "warden-oauth2" version))
7679 (sha256
7680 (base32
7681 "1z9154lvzrnnfjbjkmirh4n811nygp6pm2fa6ikr7y1ysa4zv3cz"))))
7682 (build-system ruby-build-system)
7683 (arguments
7684 '(#:test-target "spec"
7685 #:phases
7686 (modify-phases %standard-phases
7687 (add-after 'unpack 'remove-unnecessary-dependencies
7688 (lambda _
7689 (substitute* "Gemfile"
7690 ;; All of these gems relate to development, and are unnecessary
7691 ;; when running the tests
7692 (("gem 'guard-bundler'") "")
7693 (("gem 'guard'") "")
7694 (("gem 'guard-rspec'") "")
7695 (("gem 'rb-fsevent'") "")
7696 (("gem 'pry'") "")
7697 (("gem 'growl'") ""))
7698 #t))
7699 ;; The test suite doesn't work with rspec@2, and this is incompatible
7700 ;; with the current version of Rake, so invoke Rspec directly
7701 (replace 'check
7702 (lambda* (#:key tests? #:allow-other-keys)
7703 (when tests?
7704 (invoke "bundle" "exec" "rspec"))
7705 #t)))))
7706 (propagated-inputs
7707 `(("ruby-warden" ,ruby-warden)))
7708 (native-inputs
7709 `(("bundler" ,bundler)
7710 ("ruby-rspec" ,ruby-rspec-2)
7711 ("ruby-rack-test" ,ruby-rack-test)))
7712 (synopsis "OAuth 2.0 strategies for Warden")
7713 (description
7714 "This library extends Warden to support OAuth 2.0 authorized API
7715requests.")
7716 (home-page "https://github.com/opperator/warden-oauth2")
7717 (license license:expat)))
7718
8c7ae384
CB
7719(define-public ruby-webmock-2
7720 (package
7721 (name "ruby-webmock")
7722 (version "2.3.2")
7723 (source
7724 (origin
7725 (method url-fetch)
7726 (uri (rubygems-uri "webmock" version))
7727 (sha256
7728 (base32
7729 "04hkcqsmbfnp8g237pisnc834vpgildklicbjbyikqg0bg1rwcy5"))))
7730 (build-system ruby-build-system)
7731 (native-inputs
7732 `(("bundler" ,bundler)
7733 ("ruby-rspec" ,ruby-rspec)))
7734 (propagated-inputs
7735 `(("ruby-addressable" ,ruby-addressable)
7736 ("ruby-crack" ,ruby-crack)
7737 ("ruby-hashdiff" ,ruby-hashdiff)))
7738 (synopsis "Allows stubbing and setting expectations on HTTP requests")
7739 (description
7740 "WebMock allows stubbing HTTP requests and setting expectations on HTTP
7741requests. This is useful when testing software.")
7742 (home-page "https://github.com/bblimke/webmock")
7743 (license license:expat)))
7744
d8c189ed
CB
7745(define-public ruby-unicode-display-width
7746 (package
7747 (name "ruby-unicode-display-width")
216ccced 7748 (version "1.6.0")
d8c189ed
CB
7749 (source
7750 (origin
7751 (method url-fetch)
7752 (uri (rubygems-uri "unicode-display_width" version))
7753 (sha256
7754 (base32
216ccced 7755 "08kfiniak1pvg3gn5k6snpigzvhvhyg7slmm0s2qx5zkj62c1z2w"))))
d8c189ed
CB
7756 (build-system ruby-build-system)
7757 (arguments
7758 '(;; Test data not included.
7759 #:tests? #f))
7760 (synopsis "Determine the monospace display width of Ruby strings")
7761 (description
7762 "@code{Unicode::DisplayWidth} is a Ruby library which can determine the
7763display width of strings in Ruby.")
7764 (home-page "https://github.com/janlelis/unicode-display_width")
7765 (license license:expat)))
7766
6120589f
CB
7767;; There is another gem called 'ruby-version' so we use an underscore in this
7768;; name
7769(define-public ruby_version
7770 (package
7771 (name "ruby_version")
1097fdbe 7772 (version "1.0.2")
6120589f
CB
7773 (source
7774 (origin
7775 (method url-fetch)
7776 (uri (rubygems-uri "ruby_version" version))
7777 (sha256
7778 (base32
1097fdbe 7779 "0lvc7bd5ps3w2vq2wb02i0pi3vfcx2rnckx2ix4rjym1qf52kb2j"))))
6120589f
CB
7780 (build-system ruby-build-system)
7781 (arguments
1097fdbe 7782 `(#:phases
6120589f
CB
7783 (modify-phases %standard-phases
7784 (add-before 'check 'fix-dependencies
7785 (lambda _
7786 ;; Remove the Gemfile.lock, as we want to use Guix packages at
7787 ;; whatever versions.
7788 (delete-file "Gemfile.lock")
1097fdbe
MC
7789 ;; Remove the included gem files as they unnecessary.
7790 (delete-file-recursively "pkg/")
7791 ;; Accept any version of rake, rdoc and rspec
6120589f 7792 (substitute* "ruby_version.gemspec"
6120589f 7793 (("%q<rake.*") "%q<rake>)\n")
1097fdbe 7794 (("%q<rdoc.*") "%q<rdoc>)\n")
6120589f 7795 (("%q<rspec.*") "%q<rspec>)\n"))
1097fdbe 7796 ;; Do not use bundler.
6120589f 7797 (substitute* "Rakefile"
1097fdbe 7798 (("Bundler\\.setup.*") "nil\n"))
6120589f
CB
7799 #t)))))
7800 (native-inputs
1097fdbe
MC
7801 `(("ruby-rdoc" ,ruby-rdoc)
7802 ("ruby-rspec" ,ruby-rspec)
7803 ("ruby-rubygems-tasks", ruby-rubygems-tasks)))
6120589f 7804 (synopsis "Ruby library to help check the Ruby version")
1097fdbe 7805 (description "@code{ruby_version} provides a @code{RubyVersion} module to simplify
6120589f
CB
7806checking for the right Ruby version in software.")
7807 (home-page "https://github.com/janlelis/ruby_version")
7808 (license license:expat)))
7809
a229acff
CB
7810(define-public ruby-websocket-driver
7811 (package
7812 (name "ruby-websocket-driver")
9d1cf6d4 7813 (version "0.7.1")
a229acff
CB
7814 (source
7815 (origin
7816 (method url-fetch)
7817 (uri (rubygems-uri "websocket-driver" version))
7818 (sha256
9d1cf6d4 7819 (base32 "1bxamwqldmy98hxs5pqby3andws14hl36ch78g0s81gaz9b91nj2"))))
a229acff
CB
7820 (build-system ruby-build-system)
7821 (arguments
9d1cf6d4 7822 '(#:tests? #f)) ; no included tests
a229acff
CB
7823 (propagated-inputs
7824 `(("ruby-websocket-extensions" ,ruby-websocket-extensions)))
7825 (synopsis "WebSocket protocol handler with pluggable I/O")
7826 (description
7827 "@code{websocket-driver} provides a complete implementation of the
7828WebSocket protocols that can be hooked up to any TCP library")
7829 (home-page "https://github.com/faye/websocket-driver-ruby")
7830 (license license:expat)))
7831
52b015a9
CB
7832(define-public ruby-websocket-extensions
7833 (package
7834 (name "ruby-websocket-extensions")
7835 (version "0.1.3")
7836 (source
7837 (origin
7838 (method url-fetch)
7839 (uri (rubygems-uri "websocket-extensions" version))
7840 (sha256
7841 (base32
7842 "034sdr7fd34yag5l6y156rkbhiqgmy395m231dwhlpcswhs6d270"))))
7843 (build-system ruby-build-system)
7844 (arguments
7845 '(;; No included tests
7846 #:tests? #f))
7847 (synopsis "Generic extension manager for WebSocket connections")
7848 (description
7849 "@code{websocket-extensions} provides a container for registering
7850extension plugins.")
7851 (home-page "https://github.com/faye/websocket-extensions-ruby")
7852 (license license:expat)))
7853
5799aadd
BW
7854(define-public ruby-domain-name
7855 (package
7856 (name "ruby-domain-name")
222999c9 7857 (version "0.5.20180417")
5799aadd
BW
7858 (source
7859 (origin
7860 (method url-fetch)
7861 (uri (rubygems-uri "domain_name" version))
7862 (sha256
7863 (base32
222999c9 7864 "0abdlwb64ns7ssmiqhdwgl27ly40x2l27l8hs8hn0z4kb3zd2x3v"))))
5799aadd
BW
7865 (build-system ruby-build-system)
7866 (arguments
7867 `(#:phases
7868 (modify-phases %standard-phases
7869 (add-before 'check 'fix-versions
7870 (lambda _
7871 ;; Fix NameError that appears to already be fixed upstream.
7872 (substitute* "Rakefile"
7873 (("DomainName::VERSION")
7874 "Bundler::GemHelper.gemspec.version"))
7875 ;; Loosen unnecessarily strict test-unit version specification.
7876 (substitute* "domain_name.gemspec"
71596c3c 7877 (("<test-unit>.freeze, \\[\\\"~> 2.5.5") "<test-unit>, [\">0"))
5799aadd
BW
7878 #t)))))
7879 (propagated-inputs
7880 `(("ruby-unf" ,ruby-unf)))
7881 (native-inputs
7882 `(("ruby-shoulda" ,ruby-shoulda)
7883 ("bundler" ,bundler)
7884 ("ruby-test-unit" ,ruby-test-unit)))
7885 (synopsis "Domain name manipulation library")
7886 (description
7887 "@code{domain_name} is a Domain name manipulation library. It parses a
7888domain name ready for extracting the registered domain and TLD (Top Level
7889Domain). It can also be used for cookie domain validation based on the Public
7890Suffix List.")
7891 (home-page "https://github.com/knu/ruby-domain_name")
7892 (license license:bsd-2)))
7893
d114ceeb
BW
7894(define-public ruby-http-cookie
7895 (package
7896 (name "ruby-http-cookie")
2a2eb07d 7897 (version "1.0.3")
d114ceeb
BW
7898 (source
7899 (origin
7900 (method url-fetch)
7901 (uri (rubygems-uri "http-cookie" version))
7902 (sha256
7903 (base32
2a2eb07d 7904 "004cgs4xg5n6byjs7qld0xhsjq3n6ydfh897myr2mibvh6fjc49g"))))
d114ceeb
BW
7905 (build-system ruby-build-system)
7906 (arguments
7907 `(#:phases
7908 (modify-phases %standard-phases
7909 (add-before 'check 'add-dependency-to-bundler
7910 (lambda _
7911 ;; Fix NameError
7912 (substitute* "Rakefile"
7913 (("HTTP::Cookie::VERSION")
7914 "Bundler::GemHelper.gemspec.version"))
7915 #t)))))
7916 (propagated-inputs
7917 `(("ruby-domain-name" ,ruby-domain-name)))
7918 (native-inputs
7919 `(("rubysimplecov" ,ruby-simplecov)
7920 ("bundler" ,bundler)
7921 ("ruby-sqlite3" ,ruby-sqlite3)
7922 ("ruby-test-unit" ,ruby-test-unit)))
7923 (synopsis "Handle HTTP Cookies based on RFC 6265")
7924 (description
7925 "@code{HTTP::Cookie} is a Ruby library to handle HTTP Cookies based on
7926RFC 6265. It has been designed with security, standards compliance and
7927compatibility in mind, to behave just the same as today's major web browsers.
7928It has built-in support for the legacy @code{cookies.txt} and
7929@code{cookies.sqlite} formats of Mozilla Firefox.")
7930 (home-page "https://github.com/sparklemotion/http-cookie")
7931 (license license:expat)))
7932
1c8e6fd3
CB
7933(define-public ruby-httpclient
7934 (package
7935 (name "ruby-httpclient")
7936 (version "2.8.3")
7937 (source
7938 (origin
7939 (method url-fetch)
7940 (uri (rubygems-uri "httpclient" version))
7941 (sha256
7942 (base32
7943 "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99"))))
7944 (build-system ruby-build-system)
7945 (arguments
7946 '(;; TODO: Some tests currently fail
7947 ;; ------
7948 ;; 211 tests, 729 assertions, 13 failures, 4 errors, 0 pendings,
7949 ;; 2 omissions, 0 notifications
7950 ;; 91.866% passed
7951 ;; ------
7952 ;; 6.49 tests/s, 22.41 assertions/s
7953 #:tests? #f
7954 #:phases
7955 (modify-phases %standard-phases
7956 (replace 'check
7957 (lambda* (#:key tests? #:allow-other-keys)
7958 (if tests?
9923d5a4
TGR
7959 (invoke "ruby"
7960 "-Ilib"
7961 "test/runner.rb")
0076f5a9 7962 #t))))))
1c8e6fd3
CB
7963 (native-inputs
7964 `(("ruby-rack" ,ruby-rack)))
7965 (synopsis
7966 "Make HTTP requests with support for HTTPS, Cookies, authentication and more")
7967 (description
7968 "The @code{httpclient} ruby library provides functionality related to
7969HTTP. Compared to the @code{net/http} library, @{httpclient} also provides
7970Cookie, multithreading and authentication (digest, NTLM) support.
7971
7972Also provided is a @command{httpclient} command, which can perform HTTP
7973requests either using arguments or with an interactive prompt.")
7974 (home-page "https://github.com/nahi/httpclient")
7975 (license license:ruby)))
7976
7d3a1a2d
BW
7977(define-public ruby-ansi
7978 (package
7979 (name "ruby-ansi")
7980 (version "1.5.0")
7981 (source
7982 (origin
3d30c332 7983 (method git-fetch)
7d3a1a2d 7984 ;; Fetch from GitHub as the gem does not contain testing code.
3d30c332
EF
7985 (uri (git-reference
7986 (url "https://github.com/rubyworks/ansi")
7987 (commit version)))
7988 (file-name (git-file-name name version))
7d3a1a2d
BW
7989 (sha256
7990 (base32
3d30c332 7991 "1wsz7xxwl3vkh277jb7fd7akqnqqgbvalxzpjwniiqk8ghfprbi5"))))
7d3a1a2d
BW
7992 (build-system ruby-build-system)
7993 (arguments
7994 `(#:phases
7995 (modify-phases %standard-phases
7996 ;; Disable testing to break the cycle ansi, ae, ansi, as well as the
7997 ;; cycle ansi, qed, ansi. Instead simply test that the library can
7998 ;; be require'd.
7999 (replace 'check
8000 (lambda _
9923d5a4 8001 (invoke "ruby" "-Ilib" "-r" "ansi")))
0899352f
MB
8002 (add-before 'validate-runpath 'replace-broken-symlink
8003 (lambda* (#:key outputs #:allow-other-keys)
8004 (let* ((out (assoc-ref outputs "out"))
3cb3fa67
CB
8005 (file (string-append
8006 out "/lib/ruby/vendor_ruby/gems/ansi-"
8007 ,version "/lib/ansi.yml")))
0899352f
MB
8008 ;; XXX: This symlink is broken since ruby 2.4.
8009 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
8010 (delete-file file)
8011 (symlink "../.index" file)
8012 #t))))))
7d3a1a2d
BW
8013 (synopsis "ANSI escape code related libraries")
8014 (description
8015 "This package is a collection of ANSI escape code related libraries
8016enabling ANSI colorization and stylization of console output. Included in the
8017library are the @code{Code} module, which defines ANSI codes as constants and
8018methods, a @code{Mixin} module for including color methods, a @code{Logger}, a
8019@code{ProgressBar}, and a @code{String} subclass. The library also includes a
8020@code{Terminal} module which provides information about the current output
8021device.")
3d30c332 8022 (home-page "https://rubyworks.github.io/ansi/")
7d3a1a2d 8023 (license license:bsd-2)))
7c033c46
BW
8024
8025(define-public ruby-systemu
8026 (package
8027 (name "ruby-systemu")
8028 (version "2.6.5")
8029 (source
8030 (origin
8031 (method url-fetch)
8032 (uri (rubygems-uri "systemu" version))
8033 (sha256
8034 (base32
8035 "0gmkbakhfci5wnmbfx5i54f25j9zsvbw858yg3jjhfs5n4ad1xq1"))))
8036 (build-system ruby-build-system)
8037 (arguments
8038 `(#:phases
8039 (modify-phases %standard-phases
8040 (add-before 'check 'set-version
8041 (lambda _
8042 (setenv "VERSION" ,version)
8043 #t)))))
8044 (synopsis "Capture of stdout/stderr and handling of child processes")
8045 (description
8046 "Systemu can be used on any platform to return status, stdout, and stderr
8047of any command. Unlike other methods like @code{open3} and @code{popen4}
8048there is no danger of full pipes or threading issues hanging your process or
8049subprocess.")
8050 (home-page "https://github.com/ahoward/systemu")
8051 (license license:ruby)))
3d84a99e
BW
8052
8053(define-public ruby-bio-commandeer
8054 (package
8055 (name "ruby-bio-commandeer")
37b08547 8056 (version "0.4.0")
3d84a99e
BW
8057 (source
8058 (origin
8059 (method url-fetch)
8060 (uri (rubygems-uri "bio-commandeer" version))
8061 (sha256
8062 (base32
37b08547 8063 "0khpfw1yl5l3d2m8nxpkk32ybc4c3pa5hic3agd160jdfjjjnlni"))))
3d84a99e
BW
8064 (build-system ruby-build-system)
8065 (arguments
8066 `(#:phases
8067 (modify-phases %standard-phases
8068 (replace 'check
8069 ;; Run test without calling 'rake' so that jeweler is
8070 ;; not required as an input.
8071 (lambda _
9923d5a4 8072 (invoke "rspec" "spec/bio-commandeer_spec.rb"))))))
3d84a99e
BW
8073 (propagated-inputs
8074 `(("ruby-bio-logger" ,ruby-bio-logger)
8075 ("ruby-systemu" ,ruby-systemu)))
8076 (native-inputs
8077 `(("bundler" ,bundler)
8078 ("ruby-rspec" ,ruby-rspec)))
8079 (synopsis "Simplified running of shell commands from within Ruby")
8080 (description
8081 "Bio-commandeer provides an opinionated method of running shell commands
8082from within Ruby. The advantage of bio-commandeer over other methods of
8083running external commands is that when something goes wrong, messages printed
8084to the @code{STDOUT} and @code{STDERR} streams are reported, giving extra
8085detail to ease debugging.")
7bf837fd 8086 (home-page "https://github.com/wwood/bioruby-commandeer")
3d84a99e 8087 (license license:expat)))
7c8131c7
BW
8088
8089(define-public ruby-rubytest
8090 (package
8091 (name "ruby-rubytest")
8092 (version "0.8.1")
8093 (source
8094 (origin
8095 (method url-fetch)
8096 (uri (rubygems-uri "rubytest" version))
8097 (sha256
8098 (base32
8099 "19jydsdnkl81i9dhdcr4dc34j0ilm68ff2ngnka1hi38xiw4p5qz"))))
8100 (build-system ruby-build-system)
8101 (arguments
8102 ;; Disable regular testing to break the cycle rubytest, qed, brass,
8103 ;; rubytest, as well as the cycle rubytest, qed, ansi, rubytest. Instead
8104 ;; simply test that the library can be require'd.
8105 `(#:phases
8106 (modify-phases %standard-phases
8107 (replace 'check
8108 (lambda _
9923d5a4 8109 (invoke "ruby" "-Ilib" "-r" "rubytest"))))))
7c8131c7
BW
8110 (propagated-inputs
8111 `(("ruby-ansi" ,ruby-ansi)))
8112 (synopsis "Universal test harness for Ruby")
8113 (description
8114 "Rubytest is a testing meta-framework for Ruby. It can handle any
8115compliant test framework and can run tests from multiple frameworks in a
8116single pass.")
2f3800e5 8117 (home-page "https://rubyworks.github.io/rubytest")
7c8131c7 8118 (license license:bsd-2)))
90fcedf2
BW
8119
8120(define-public ruby-brass
8121 (package
8122 (name "ruby-brass")
8123 (version "1.2.1")
8124 (source
8125 (origin
8126 (method url-fetch)
8127 (uri (rubygems-uri "brass" version))
8128 (sha256
8129 (base32
8130 "154lp8rp1vmg60ri1j4cb8hqlw37z7bn575h899v8hzxwi11sxka"))))
8131 (build-system ruby-build-system)
8132 (arguments
8133 ;; Disable tests to break the cycle brass, lemon, ae, qed, brass.
8134 ;; Instead simply test that the library can be require'd.
8135 `(#:phases
8136 (modify-phases %standard-phases
8137 (replace 'check
8138 (lambda _
9923d5a4 8139 (invoke "ruby" "-Ilib" "-r" "brass"))))))
90fcedf2
BW
8140 (synopsis "Basic foundational assertions framework")
8141 (description
8142 "BRASS (Bare-Metal Ruby Assertion System Standard) is a basic
8143foundational assertions framework for other assertion and test frameworks to
8144make use of.")
2f3800e5 8145 (home-page "https://rubyworks.github.io/brass")
90fcedf2 8146 (license license:bsd-2)))
120fc74b
BW
8147
8148(define-public ruby-qed
8149 (package
8150 (name "ruby-qed")
8151 (version "2.9.2")
8152 (source
8153 (origin
8154 (method url-fetch)
8155 (uri (rubygems-uri "qed" version))
8156 (sha256
8157 (base32
8158 "03h4lmlxpcya8j7s2cnyscqlx8v3xl1xgsw5y1wk1scxcgz2vbmr"))))
8159 (build-system ruby-build-system)
8160 (arguments
8161 ;; Disable testing to break the cycle qed, ansi, qed, among others.
8162 ;; Instead simply test that the executable runs using --copyright.
8163 `(#:phases
8164 (modify-phases %standard-phases
8165 (replace 'check
8166 (lambda _
9923d5a4 8167 (invoke "ruby" "-Ilib" "bin/qed" "--copyright"))))))
120fc74b
BW
8168 (propagated-inputs
8169 `(("ruby-ansi" ,ruby-ansi)
8170 ("ruby-brass" ,ruby-brass)))
8171 (synopsis "Test framework utilizing literate programming techniques")
8172 (description
8173 "@dfn{Quality Ensured Demonstrations} (QED) is a test framework for
8174@dfn{Test Driven Development} (TDD) and @dfn{Behaviour Driven
8175Development} (BDD) utilizing Literate Programming techniques. QED sits
8176somewhere between lower-level testing tools like @code{Test::Unit} and
8177requirement specifications systems like Cucumber.")
2f3800e5 8178 (home-page "https://rubyworks.github.io/qed")
120fc74b 8179 (license license:bsd-2)))
9273ee8f 8180
dbbe88d3
CB
8181(define-public ruby-que
8182 (package
8183 (name "ruby-que")
8184 (version "1.0.0.beta3")
8185 (source
8186 (origin
8187 (method url-fetch)
8188 (uri (rubygems-uri "que" version))
8189 (sha256
8190 (base32
8191 "0gr9pb814d4qj3ds98g6cjrdk7wv0yg8aqbm7c1lmgl87jkg8q04"))))
8192 (build-system ruby-build-system)
8193 (arguments
8194 '(#:tests? #f)) ; No included tests
8195 (synopsis "Job queue using PostgreSQL written in Ruby")
8196 (description
8197 "This package provides a job queue that uses PostgreSQL for storing jobs
8198and locking between worker processes.")
8199 (home-page "https://github.com/chanks/que")
8200 (license license:expat)))
8201
9273ee8f
BW
8202(define-public ruby-ae
8203 (package
8204 (name "ruby-ae")
8205 (version "1.8.2")
8206 (source
8207 (origin
11d1b318 8208 (method git-fetch)
9273ee8f 8209 ;; Fetch from github so tests are included.
11d1b318
EF
8210 (uri (git-reference
8211 (url "https://github.com/rubyworks/ae")
8212 (commit version)))
8213 (file-name (git-file-name name version))
9273ee8f
BW
8214 (sha256
8215 (base32
11d1b318 8216 "11299jj5ma8mi7b4majkyjy70y6zlqpgl8aql1c5lvfjavlpwmlp"))))
9273ee8f
BW
8217 (build-system ruby-build-system)
8218 (arguments
8219 `(#:phases
8220 (modify-phases %standard-phases
8221 (replace 'check
9923d5a4 8222 (lambda _ (invoke "qed")))
de6f6efd
MB
8223 (add-before 'validate-runpath 'replace-broken-symlink
8224 (lambda* (#:key outputs #:allow-other-keys)
8225 (let* ((out (assoc-ref outputs "out"))
3cb3fa67
CB
8226 (file (string-append
8227 out "/lib/ruby/vendor_ruby/gems/ae-"
8228 ,version "/lib/ae.yml")))
de6f6efd
MB
8229 ;; XXX: This symlink is broken since ruby 2.4.
8230 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
8231 (delete-file file)
8232 (symlink "../.index" file)
8233 #t))))))
9273ee8f
BW
8234 (propagated-inputs
8235 `(("ruby-ansi" ,ruby-ansi)))
8236 (native-inputs
8237 `(("ruby-qed" ,ruby-qed)))
8238 (synopsis "Assertions library")
8239 (description
8240 "Assertive Expressive (AE) is an assertions library specifically designed
8241for reuse by other test frameworks.")
11d1b318 8242 (home-page "https://rubyworks.github.io/ae/")
9273ee8f 8243 (license license:bsd-2)))
78bb471f
BW
8244
8245(define-public ruby-lemon
8246 (package
8247 (name "ruby-lemon")
8248 (version "0.9.1")
8249 (source
8250 (origin
8251 (method url-fetch)
8252 (uri (rubygems-uri "lemon" version))
8253 (sha256
8254 (base32
8255 "0gqhpgjavgpvx23rqpfqcv3d5bs8gc7lr9yvj8kxgp7mfbdc2jcm"))))
8256 (build-system ruby-build-system)
8257 (arguments
8258 `(#:phases
8259 (modify-phases %standard-phases
9923d5a4 8260 (replace 'check (lambda _ (invoke "qed"))))))
78bb471f
BW
8261 (propagated-inputs
8262 `(("ruby-ae" ,ruby-ae)
8263 ("ruby-ansi" ,ruby-ansi)
8264 ("ruby-rubytest" ,ruby-rubytest)))
8265 (native-inputs
8266 `(("ruby-qed" ,ruby-qed)))
8267 (synopsis "Test framework correlating code structure and test unit")
8268 (description
8269 "Lemon is a unit testing framework that enforces highly formal
8270case-to-class and unit-to-method test construction. This enforcement can help
8271focus concern on individual units of behavior.")
2f3800e5 8272 (home-page "https://rubyworks.github.io/lemon")
78bb471f 8273 (license license:bsd-2)))
0832804e
BW
8274
8275(define-public ruby-rubytest-cli
8276 (package
8277 (name "ruby-rubytest-cli")
8278 (version "0.2.0")
8279 (source
8280 (origin
8281 (method url-fetch)
8282 (uri (rubygems-uri "rubytest-cli" version))
8283 (sha256
8284 (base32
8285 "0n7hv4k1ba4fm3i98c6ydbsqhkxgbp52mhi70ba1x3mqzfvk438p"))))
8286 (build-system ruby-build-system)
8287 (arguments
8288 `(#:tests? #f)) ; no tests
8289 (propagated-inputs
8290 `(("ruby-ansi" ,ruby-ansi)
8291 ("ruby-rubytest" ,ruby-rubytest)))
8292 (synopsis "Command-line interface for rubytest")
8293 (description
8294 "Rubytest CLI is a command-line interface for running tests for
8295Rubytest-based test frameworks. It provides the @code{rubytest} executable.")
2f3800e5 8296 (home-page "https://rubyworks.github.io/rubytest-cli")
0832804e 8297 (license license:bsd-2)))
72ccbfe3
BW
8298
8299(define-public ruby-hashery
8300 (package
8301 (name "ruby-hashery")
cba96208 8302 (version "2.1.2")
72ccbfe3
BW
8303 (source
8304 (origin
8305 (method url-fetch)
8306 (uri (rubygems-uri "hashery" version))
8307 (sha256
8308 (base32
cba96208 8309 "0qj8815bf7q6q7llm5rzdz279gzmpqmqqicxnzv066a020iwqffj"))))
72ccbfe3
BW
8310 (build-system ruby-build-system)
8311 (arguments
8312 `(#:phases
8313 (modify-phases %standard-phases
8314 (replace 'check
8315 (lambda _
9923d5a4
TGR
8316 (invoke "qed")
8317 (invoke "rubytest" "-Ilib" "-Itest" "test/"))))))
72ccbfe3
BW
8318 (native-inputs
8319 `(("ruby-rubytest-cli" ,ruby-rubytest-cli)
8320 ("ruby-qed" ,ruby-qed)
8321 ("ruby-lemon" ,ruby-lemon)))
8322 (synopsis "Hash-like classes with extra features")
8323 (description
8324 "The Hashery is a tight collection of @code{Hash}-like classes.
8325Included are the auto-sorting @code{Dictionary} class, the efficient
8326@code{LRUHash}, the flexible @code{OpenHash} and the convenient
8327@code{KeyHash}. Nearly every class is a subclass of the @code{CRUDHash} which
8328defines a CRUD (Create, Read, Update and Delete) model on top of Ruby's
8329standard @code{Hash} making it possible to subclass and augment to fit any
8330specific use case.")
2f3800e5 8331 (home-page "https://rubyworks.github.io/hashery")
72ccbfe3 8332 (license license:bsd-2)))
1f1d71e0
BW
8333
8334(define-public ruby-rc4
8335 (package
8336 (name "ruby-rc4")
8337 (version "0.1.5")
8338 (source
8339 (origin
8340 (method url-fetch)
8341 (uri (rubygems-uri "ruby-rc4" version))
8342 (sha256
8343 (base32
8344 "00vci475258mmbvsdqkmqadlwn6gj9m01sp7b5a3zd90knil1k00"))))
8345 (build-system ruby-build-system)
8346 (arguments
8347 `(#:phases
8348 (modify-phases %standard-phases
8349 (replace 'check
8350 (lambda _
9923d5a4 8351 (invoke "rspec" "spec/rc4_spec.rb"))))))
1f1d71e0
BW
8352 (native-inputs
8353 `(("ruby-rspec" ,ruby-rspec-2)))
8354 (synopsis "Implementation of the RC4 algorithm")
8355 (description
8356 "RubyRC4 is a pure Ruby implementation of the RC4 algorithm.")
8357 (home-page "https://github.com/caiges/Ruby-RC4")
8358 (license license:expat)))
f3e085a8
BW
8359
8360(define-public ruby-afm
8361 (package
8362 (name "ruby-afm")
8363 (version "0.2.2")
8364 (source
8365 (origin
8366 (method url-fetch)
8367 (uri (rubygems-uri "afm" version))
8368 (sha256
8369 (base32
8370 "06kj9hgd0z8pj27bxp2diwqh6fv7qhwwm17z64rhdc4sfn76jgn8"))))
8371 (build-system ruby-build-system)
8372 (native-inputs
8373 `(("bundler" ,bundler)))
8374 (synopsis "Read Adobe Font Metrics (afm) files")
8375 (description
8376 "This library provides methods to read @dfn{Adobe Font Metrics} (afm)
8377files and use the data therein.")
7bf837fd 8378 (home-page "https://github.com/halfbyte/afm")
f3e085a8 8379 (license license:expat)))
acb6be42
BW
8380
8381(define-public ruby-ascii85
8382 (package
8383 (name "ruby-ascii85")
5854082a 8384 (version "1.0.3")
acb6be42
BW
8385 (source
8386 (origin
8387 (method url-fetch)
8388 (uri (rubygems-uri "Ascii85" version))
8389 (sha256
8390 (base32
5854082a 8391 "0658m37jjjn6drzqg1gk4p6c205mgp7g1jh2d00n4ngghgmz5qvs"))))
acb6be42
BW
8392 (build-system ruby-build-system)
8393 (native-inputs
8394 `(("bundler" ,bundler)))
8395 (synopsis "Encode and decode Ascii85 binary-to-text encoding")
8396 (description
8397 "This library provides methods to encode and decode Ascii85
8398binary-to-text encoding. The main modern use of Ascii85 is in PostScript and
8399@dfn{Portable Document Format} (PDF) file formats.")
8400 (home-page "https://github.com/datawraith/ascii85gem")
8401 (license license:expat)))
edf8caae
BW
8402
8403(define-public ruby-ttfunk
8404 (package
8405 (name "ruby-ttfunk")
afb7a3e8 8406 (version "1.5.1")
edf8caae
BW
8407 (source
8408 (origin
4e110825 8409 (method git-fetch)
edf8caae 8410 ;; fetch from github as the gem does not contain testing code
4e110825
EF
8411 (uri (git-reference
8412 (url "https://github.com/prawnpdf/ttfunk")
8413 (commit version)))
8414 (file-name (git-file-name name version))
edf8caae
BW
8415 (sha256
8416 (base32
4e110825 8417 "0dx9891zcli0sjrslmsvrwalv86hbjbqlmbrcasnjr069v05h9v9"))))
edf8caae
BW
8418 (build-system ruby-build-system)
8419 (arguments
8420 `(#:test-target "spec"
8421 #:phases
8422 (modify-phases %standard-phases
afb7a3e8
JL
8423 (add-before 'build 'remove-ssh
8424 (lambda _
8425 ;; remove dependency on an ssh key pair that doesn't exist
8426 (substitute* "ttfunk.gemspec"
8427 (("spec.signing_key.*") ""))
8428 #t))
edf8caae
BW
8429 (add-before 'check 'remove-rubocop
8430 (lambda _
8431 ;; remove rubocop as a dependency as not needed for testing
8432 (substitute* "ttfunk.gemspec"
8433 (("spec.add_development_dependency\\('rubocop'.*") ""))
8434 (substitute* "Rakefile"
8435 (("require 'rubocop/rake_task'") "")
afb7a3e8 8436 (("RuboCop::RakeTask.new") ""))
edf8caae
BW
8437 #t)))))
8438 (native-inputs
8439 `(("ruby-rspec" ,ruby-rspec)
afb7a3e8 8440 ("ruby-yard" ,ruby-yard)
edf8caae
BW
8441 ("bundler" ,bundler)))
8442 (synopsis "Font metrics parser for the Prawn PDF generator")
8443 (description
8444 "TTFunk is a TrueType font parser written in pure Ruby. It is used as
8445part of the Prawn PDF generator.")
8446 (home-page "https://github.com/prawnpdf/ttfunk")
8447 ;; From the README: "Matz's terms for Ruby, GPLv2, or GPLv3. See LICENSE
8448 ;; for details."
8449 (license (list license:gpl2 license:gpl3 license:ruby))))
cbdd428c 8450
9270298f
BW
8451(define-public ruby-puma
8452 (package
8453 (name "ruby-puma")
63755fcd 8454 (version "3.9.1")
9270298f
BW
8455 (source
8456 (origin
a6cffe6e 8457 (method git-fetch)
9270298f 8458 ;; Fetch from GitHub because distributed gem does not contain tests.
a6cffe6e
EF
8459 (uri (git-reference
8460 (url "https://github.com/puma/puma")
8461 (commit (string-append "v" version))))
8462 (file-name (git-file-name name version))
9270298f
BW
8463 (sha256
8464 (base32
a6cffe6e 8465 "1kj75k81iik3aj73pkc9ixj9rwf95ipkyma65n28m64dgw02qi1f"))))
9270298f
BW
8466 (build-system ruby-build-system)
8467 (arguments
63755fcd
BW
8468 `(#:tests? #f ; Tests require an out-dated version of minitest.
8469 #:phases
9270298f
BW
8470 (modify-phases %standard-phases
8471 (add-before 'build 'fix-gemspec
8472 (lambda _
8473 (substitute* "puma.gemspec"
8474 (("git ls-files") "find * |sort"))
8475 #t)))))
9270298f
BW
8476 (synopsis "Simple, concurrent HTTP server for Ruby/Rack")
8477 (description
8478 "Puma is a simple, fast, threaded, and highly concurrent HTTP 1.1 server
8479for Ruby/Rack applications. Puma is intended for use in both development and
8480production environments. In order to get the best throughput, it is highly
8481recommended that you use a Ruby implementation with real threads like Rubinius
8482or JRuby.")
a6cffe6e 8483 (home-page "https://puma.io/")
9270298f
BW
8484 (license license:expat)))
8485
b0813490
BW
8486(define-public ruby-hoe-git
8487 (package
8488 (name "ruby-hoe-git")
8489 (version "1.6.0")
8490 (source
8491 (origin
8492 (method url-fetch)
8493 (uri (rubygems-uri "hoe-git" version))
8494 (sha256
8495 (base32
8496 "10jmmbjm0lkglwxbn4rpqghgg1ipjxrswm117n50adhmy8yij650"))))
8497 (build-system ruby-build-system)
8498 (propagated-inputs
8499 `(("ruby-hoe" ,ruby-hoe)
8500 ("git" ,git)))
8501 (synopsis "Hoe plugins for tighter Git integration")
8502 (description
8503 "This package provides a set of Hoe plugins for tighter Git integration.
8504It provides tasks to automate release tagging and pushing and changelog
8505generation.")
7bf837fd 8506 (home-page "https://github.com/jbarnette/hoe-git")
b0813490
BW
8507 (license license:expat)))
8508
cbdd428c
BW
8509(define-public ruby-sequel
8510 (package
8511 (name "ruby-sequel")
65a7f09c 8512 (version "4.49.0")
cbdd428c
BW
8513 (source
8514 (origin
8515 (method url-fetch)
8516 (uri (rubygems-uri "sequel" version))
8517 (sha256
8518 (base32
65a7f09c 8519 "010p4a60npppvgbyw7pq5xia8aydpgxdlhh3qjm2615kwjsw3fl8"))))
cbdd428c
BW
8520 (build-system ruby-build-system)
8521 (arguments
8522 '(#:tests? #f)) ; Avoid dependency loop with ruby-minitest-hooks.
8523 (synopsis "Database toolkit for Ruby")
8524 (description "Sequel provides thread safety, connection pooling and a
8525concise DSL for constructing SQL queries and table schemas. It includes a
8526comprehensive ORM layer for mapping records to Ruby objects and handling
8527associated records.")
e2b70d90 8528 (home-page "https://sequel.jeremyevans.net")
cbdd428c 8529 (license license:expat)))
3cc78097
BW
8530
8531(define-public ruby-timecop
8532 (package
8533 (name "ruby-timecop")
3d4a5eb5 8534 (version "0.9.1")
3cc78097
BW
8535 (source
8536 (origin
8537 (method url-fetch)
8538 (uri (rubygems-uri "timecop" version))
8539 (sha256
8540 (base32
3d4a5eb5 8541 "0d7mm786180v4kzvn1f77rhfppsg5n0sq2bdx63x9nv114zm8jrp"))))
3cc78097
BW
8542 (build-system ruby-build-system)
8543 (arguments
8544 `(#:phases
8545 (modify-phases %standard-phases
8546 (add-before 'check 'set-check-rubylib
8547 (lambda _
8548 ;; Set RUBYLIB so timecop tests finds its own lib.
8549 (setenv "RUBYLIB" "lib")
8550 #t)))))
8551 (native-inputs
8552 `(("bundler" ,bundler)
8553 ("ruby-minitest-rg" ,ruby-minitest-rg)
8554 ("ruby-mocha" ,ruby-mocha)
8555 ("ruby-activesupport" ,ruby-activesupport)))
66e07664 8556 (synopsis "Test mocks for time-dependent functions")
3cc78097
BW
8557 (description
8558 "Timecop provides \"time travel\" and \"time freezing\" capabilities,
8559making it easier to test time-dependent code. It provides a unified method to
8560mock @code{Time.now}, @code{Date.today}, and @code{DateTime.now} in a single
8561call.")
8562 (home-page "https://github.com/travisjeffery/timecop")
8563 (license license:expat)))
8564
dae620b8
BW
8565(define-public ruby-concurrent
8566 (package
8567 (name "ruby-concurrent")
1007640a 8568 (version "1.1.5")
dae620b8
BW
8569 (source
8570 (origin
8fcba3be 8571 (method git-fetch)
dae620b8
BW
8572 ;; Download from GitHub because the rubygems version does not contain
8573 ;; Rakefile.
8fcba3be
MB
8574 (uri (git-reference
8575 (url "https://github.com/ruby-concurrency/concurrent-ruby")
8576 (commit (string-append "v" version))))
8577 (file-name (git-file-name name version))
dae620b8
BW
8578 (sha256
8579 (base32
1007640a 8580 "193q2k47vk7qdvv9hlhmmdxgy91xl4imapyk1ijdg9vgf46knyzj"))))
dae620b8
BW
8581 (build-system ruby-build-system)
8582 (arguments
1007640a 8583 `(#:test-target "ci"
dae620b8
BW
8584 #:phases
8585 (modify-phases %standard-phases
520e89eb 8586 (add-before 'replace-git-ls-files 'remove-extra-gemspecs
dae620b8
BW
8587 (lambda _
8588 ;; Delete extra gemspec files so 'first-gemspec' chooses the
8589 ;; correct one.
8590 (delete-file "concurrent-ruby-edge.gemspec")
8591 (delete-file "concurrent-ruby-ext.gemspec")
8592 #t))
1007640a 8593 (replace 'replace-git-ls-files
520e89eb 8594 (lambda _
1007640a
MB
8595 ;; XXX: The default substitution made by this phase is not fully
8596 ;; compatible with "git ls-files". The latter produces file names
8597 ;; such as "lib/foo", whereas ruby-build-system uses "find . [...]"
8598 ;; which gives "./lib/foo". That difference in turn breaks the
8599 ;; comparison against a glob pattern in this script.
8600 (substitute* "concurrent-ruby.gemspec"
8601 (("git ls-files") "find * -type f | sort"))
8602 #t))
8603 (add-before 'build 'remove-jar-from-gemspec
520e89eb 8604 (lambda _
1007640a
MB
8605 ;; The gemspec wants to include a JAR file that we do not build
8606 ;; nor need.
8607 (substitute* "concurrent-ruby.gemspec"
8608 (("'lib/concurrent/concurrent_ruby.jar'")
8609 ""))
8610 #t))
8611 (add-before 'build 'remove-rake_compiler_dock-dependency
8612 (lambda _
8613 ;; This library is only used when building for non-MRI targets.
8614 (substitute* "Rakefile"
8615 (("require 'rake_compiler_dock'")
8616 ""))
520e89eb 8617 #t))
9019b37f
BW
8618 (add-before 'check 'remove-timecop-dependency
8619 ;; Remove timecop-dependent tests as having timecop as a depedency
8620 ;; causes circular depedencies.
8621 (lambda _
8622 (delete-file "spec/concurrent/executor/timer_set_spec.rb")
8623 (delete-file "spec/concurrent/scheduled_task_spec.rb")
8624 #t)))))
dae620b8
BW
8625 (native-inputs
8626 `(("ruby-rake-compiler" ,ruby-rake-compiler)
9019b37f 8627 ("ruby-rspec" ,ruby-rspec)))
dae620b8
BW
8628 (synopsis "Concurrency tools for Ruby")
8629 (description
8630 "This library provides modern concurrency tools including agents,
8631futures, promises, thread pools, actors, supervisors, and more. It is
8632inspired by Erlang, Clojure, Go, JavaScript, actors and classic concurrency
8633patterns.")
8634 (home-page "http://www.concurrent-ruby.com")
8635 (license license:expat)))
2de61e34
BW
8636
8637(define-public ruby-pkg-config
8638 (package
8639 (name "ruby-pkg-config")
884a80dd 8640 (version "1.2.5")
2de61e34
BW
8641 (source
8642 (origin
8643 (method url-fetch)
8644 (uri (rubygems-uri "pkg-config" version))
8645 (sha256
8646 (base32
884a80dd 8647 "056mzqdh4yjznsg36fi0xiq76f24vxlhzh2n4az919l3x5k318ar"))))
2de61e34
BW
8648 (build-system ruby-build-system)
8649 (arguments
8650 ;; Tests require extra files not included in the gem.
8651 `(#:tests? #f))
8652 (synopsis "Detect libraries for compiling Ruby native extensions")
8653 (description
8654 "@code{pkg-config} can be used in your extconf.rb to properly detect need
8655libraries for compiling Ruby native extensions.")
8656 (home-page "https://github.com/ruby-gnome2/pkg-config")
8657 (license license:lgpl2.0+)))
6689c636
MFM
8658
8659(define-public ruby-net-http-digest-auth
8660 (package
8661 (name "ruby-net-http-digest-auth")
ba074a85 8662 (version "1.4.1")
6689c636
MFM
8663 (source
8664 (origin
8665 (method url-fetch)
8666 (uri (rubygems-uri "net-http-digest_auth" version))
8667 (sha256
8668 (base32
ba074a85 8669 "1nq859b0gh2vjhvl1qh1zrk09pc7p54r9i6nnn6sb06iv07db2jb"))))
6689c636
MFM
8670 (build-system ruby-build-system)
8671 (native-inputs
8672 `(("ruby-hoe" ,ruby-hoe)))
8673 (synopsis "RFC 2617 HTTP digest authentication library")
8674 (description
8675 "This library implements HTTP's digest authentication scheme based on
8676RFC 2617. This enables the use of the digest authentication scheme instead
8677of the more insecure basic authentication scheme.")
7bf837fd 8678 (home-page "https://github.com/drbrain/net-http-digest_auth")
6689c636 8679 (license license:expat)))
06116573 8680
8681(define-public ruby-mail
8682 (package
8683 (name "ruby-mail")
04de0cb5 8684 (version "2.6.6")
06116573 8685 (source
8686 (origin
8687 (method url-fetch)
8688 (uri (rubygems-uri "mail" version))
8689 (sha256
8690 (base32
04de0cb5 8691 "0d7lhj2dw52ycls6xigkfz6zvfhc6qggply9iycjmcyj9760yvz9"))))
06116573 8692 (build-system ruby-build-system)
8693 (propagated-inputs
8694 `(("ruby-mime-types" ,ruby-mime-types)))
8695 (arguments
8696 ;; Tests require extra gems not included in the Gemfile.
8697 ;; XXX: Try enabling this for the next version with mini_mime.
8698 `(#:tests? #f))
8699 (synopsis "Mail library for Ruby")
8700 (description
8701 "Mail is an internet library for Ruby that is designed to handle email
8702generation, parsing and sending. The purpose of this library is to provide
8703a single point of access to handle all email functions, including sending
8704and receiving emails. All network type actions are done through proxy
8705methods to @code{Net::SMTP}, @code{Net::POP3} etc.
8706
8707Mail has been designed with a very simple object oriented system that
8708really opens up the email messages you are parsing, if you know what you
8709are doing, you can fiddle with every last bit of your email directly.")
8710 (home-page "https://github.com/mikel/mail")
8711 (license license:expat)))
9b4c8e1b 8712
4d372cb9
CB
8713(define-public ruby-mathn
8714 (package
8715 (name "ruby-mathn")
8716 (version "0.1.0")
8717 (source
8718 (origin
8719 (method url-fetch)
8720 (uri (rubygems-uri "mathn" version))
8721 (sha256
8722 (base32
8723 "1wn812llln9jzgybz2d7536q39z3gi99i6fi0j1dapcpzvhgrr0p"))))
8724 (build-system ruby-build-system)
8725 (native-inputs
8726 `(("bundler" ,bundler)
8727 ("ruby-rake-compiler" ,ruby-rake-compiler)))
8728 (synopsis "Extends math operations for increased precision")
8729 (description
8730 "This gem makes mathematical operations more precise in Ruby and
8731integrates other mathematical standard libraries. Prior to Ruby 2.5,
8732@code{mathn} was part of the Ruby standard library.")
8733 (home-page "https://github.com/ruby/mathn")
8734 (license license:bsd-2)))
8735
9b4c8e1b
BW
8736(define-public ruby-code-statistics
8737 (package
8738 (name "ruby-code-statistics")
8739 (version "0.2.13")
8740 (source
8741 (origin
8742 (method url-fetch)
8743 (uri (rubygems-uri "code_statistics" version))
8744 (sha256
8745 (base32
8746 "07rdpsbwbmh4vp8nxyh308cj7am2pbrfhv9v5xr2d5gq8hnnsm93"))))
8747 (build-system ruby-build-system)
8748 (arguments
8749 `(#:tests? #f)) ; Not all test code is included in gem.
8750 (synopsis "Port of the rails 'rake stats' method")
8751 (description
8752 "This gem is a port of the rails 'rake stats' method so it can be made
8753more robust and work for non rails projects.")
8754 (home-page "http://github.com/danmayer/code_statistics")
8755 (license license:expat)))
f90c25c1
CL
8756
8757(define-public ruby-rubypants
8758 (package
8759 (name "ruby-rubypants")
8760 (version "0.6.0")
8761 (source (origin
8762 (method url-fetch)
8763 (uri (rubygems-uri "rubypants" version))
8764 (sha256
8765 (base32
8766 "0xpqkslan2wkyal2h9qhplkr5d4sdn7q6csigrhnljjpp8j4qfsh"))))
8767 (build-system ruby-build-system)
8768 (arguments
8769 '(#:tests? #f)) ; need Codecov
8770 (synopsis "Port of the smart-quotes library SmartyPants")
8771 (description
8772 "RubyPants is a Ruby port of the smart-quotes library SmartyPants. The
8773original SmartyPants is a web publishing plug-in for Movable Type, Blosxom,
8774and BBEdit that easily translates plain ASCII punctuation characters into
8775smart typographic punctuation HTML entities.")
8776 (home-page "https://github.com/jmcnevin/rubypants")
8777 (license license:bsd-2)))
beb34835
CL
8778
8779(define-public ruby-org-ruby
8780 (package
8781 (name "ruby-org-ruby")
8782 (version "0.9.12")
8783 (source (origin
8784 (method url-fetch)
8785 (uri (rubygems-uri "org-ruby" version))
8786 (sha256
8787 (base32
8788 "0x69s7aysfiwlcpd9hkvksfyld34d8kxr62adb59vjvh8hxfrjwk"))))
8789 (build-system ruby-build-system)
8790 (arguments
8791 '(#:tests? #f)) ; no rakefile
8792 (propagated-inputs
8793 `(("ruby-rubypants" ,ruby-rubypants)))
8794 (synopsis "Org-mode parser written in Ruby")
8795 (description
8796 "Org-ruby is an org-mode parser written in Ruby. The most significant
8797thing this library does today is convert org-mode files to HTML or Textile or
8798Markdown.")
8799 (home-page "https://github.com/wallyqs/org-ruby")
8800 (license license:expat)))
670ee20a
BW
8801
8802(define-public ruby-rake
8803 (package
8804 (name "ruby-rake")
c997403a 8805 (version "13.0.1")
670ee20a
BW
8806 (source
8807 (origin
8808 (method url-fetch)
8809 (uri (rubygems-uri "rake" version))
8810 (sha256
8811 (base32
c997403a 8812 "0w6qza25bq1s825faaglkx1k6d59aiyjjk3yw3ip5sb463mhhai9"))))
670ee20a
BW
8813 (build-system ruby-build-system)
8814 (native-inputs
8815 `(("bundler" ,bundler)))
8816 (synopsis "Rake is a Make-like program implemented in Ruby")
8817 (description
8818 "Rake is a Make-like program where tasks and dependencies are specified
8819in standard Ruby syntax.")
8820 (home-page "https://github.com/ruby/rake")
8821 (license license:expat)))
45498f51 8822
51420124 8823(define-public ruby-childprocess
45498f51
DM
8824 (package
8825 (name "ruby-childprocess")
459e4a1a 8826 (version "3.0.0")
45498f51
DM
8827 (source
8828 (origin
8829 (method url-fetch)
8830 (uri (rubygems-uri "childprocess" version))
8831 (sha256
8832 (base32
459e4a1a 8833 "1ic028k8xgm2dds9mqnvwwx3ibaz32j8455zxr9f4bcnviyahya5"))))
45498f51
DM
8834 (build-system ruby-build-system)
8835 (arguments
8836 `(#:tests? #f))
8837 (native-inputs
8838 `(("bundler" ,bundler)
8839 ("ruby-rspec" ,ruby-rspec)))
8840 (propagated-inputs
8841 `(("ruby-ffi" ,ruby-ffi)))
8842 (synopsis "Control external programs running in the background, in Ruby")
8843 (description "@code{childprocess} provides a gem to control external
8844programs running in the background, in Ruby.")
459e4a1a 8845 (home-page "https://github.com/enkessler/childprocess")
45498f51 8846 (license license:expat)))
1f10e28d 8847
0d16905b
JL
8848(define-public ruby-public-suffix
8849 (package
8850 (name "ruby-public-suffix")
9de12df7 8851 (version "4.0.1")
0d16905b
JL
8852 (source (origin
8853 (method url-fetch)
8854 (uri (rubygems-uri "public_suffix" version))
8855 (sha256
8856 (base32
9de12df7 8857 "0xnfv2j2bqgdpg2yq9i2rxby0w2sc9h5iyjkpaas2xknwrgmhdb0"))))
0d16905b
JL
8858 (build-system ruby-build-system)
8859 (arguments
1f4fc125
CB
8860 '(#:phases
8861 (modify-phases %standard-phases
8862 ;; Remove the requirement on Rubocop, as it isn't useful to run, and
8863 ;; including it as an input can lead to circular dependencies.
8864 (add-after 'unpack 'remove-rubocop-from-Rakefile
8865 (lambda _
8866 (substitute* "Rakefile"
8867 (("require \"rubocop/rake\\_task\"") "")
8868 (("RuboCop::RakeTask\\.new") ""))
8869 #t)))))
8870 (native-inputs
8871 `(("bundler" ,bundler)
8872 ("ruby-yard" ,ruby-yard)
8873 ("ruby-mocha" ,ruby-mocha)
8874 ("ruby-minitest-reporters" ,ruby-minitest-reporters)))
0d16905b
JL
8875 (home-page "https://simonecarletti.com/code/publicsuffix-ruby/")
8876 (synopsis "Domain name parser")
8877 (description "The gem @code{public_suffix} is a domain name parser,
8878written in Ruby, and based on the @dfn{Public Suffix List}. A public suffix
8879is one under which Internet users can (or historically could) directly
8880register names. Some examples of public suffixes are @code{.com},
8881@code{.co.uk} and @code{pvt.k12.ma.us}. The Public Suffix List is a list of
8882all known public suffixes.")
8883 (license license:expat)))
6f2c4efb
JL
8884
8885(define-public ruby-addressable
8886 (package
8887 (name "ruby-addressable")
91f7ee87 8888 (version "2.7.0")
6f2c4efb
JL
8889 (source (origin
8890 (method url-fetch)
8891 (uri (rubygems-uri "addressable" version))
8892 (sha256
8893 (base32
91f7ee87 8894 "1fvchp2rhp2rmigx7qglf69xvjqvzq7x0g49naliw29r2bz656sy"))))
6f2c4efb 8895 (build-system ruby-build-system)
0a794b30
CB
8896 (arguments
8897 '(#:test-target "spec"
8898 #:phases
8899 (modify-phases %standard-phases
8900 (add-after 'unpack 'remove-unnecessary-dependencies-from-Gemfile
8901 (lambda _
8902 (substitute* "Gemfile"
8903 (("git: 'https://github.com/sporkmonger/rack-mount.git',") "")
8904 ((".*launchy.*") "")
8905 ((".*rake.*") "gem 'rake'\n")
8906 ((".*redcarpet.*") ""))
8907 #t))
8908 (add-before 'check 'delete-network-dependent-test
8909 (lambda _
8910 (delete-file "spec/addressable/net_http_compat_spec.rb")
8911 #t)))))
8912 (native-inputs
8913 `(("ruby-rspec" ,ruby-rspec)
8914 ("bundler" ,bundler)
8915 ("ruby-idn-ruby" ,ruby-idn-ruby)
8916 ("ruby-sporkmonger-rack-mount" ,ruby-sporkmonger-rack-mount)
d7bd7016 8917 ("ruby-rspec-its", ruby-rspec-its-minimal)
0a794b30
CB
8918 ("ruby-yard" ,ruby-yard)
8919 ("ruby-simplecov" ,ruby-simplecov)))
6f2c4efb
JL
8920 (propagated-inputs
8921 `(("ruby-public-suffix" ,ruby-public-suffix)))
6f2c4efb
JL
8922 (home-page "https://github.com/sporkmonger/addressable")
8923 (synopsis "Alternative URI implementation")
8924 (description "Addressable is a replacement for the URI implementation that
8925is part of Ruby's standard library. It more closely conforms to RFC 3986,
8926RFC 3987, and RFC 6570 (level 4), providing support for IRIs and URI templates.")
8927 (license license:asl2.0)))
9c7f15c0 8928
305e9b33
MB
8929(define-public ruby-colorize
8930 (package
8931 (name "ruby-colorize")
8932 (version "0.8.1")
8933 (source (origin
8934 (method url-fetch)
8935 (uri (rubygems-uri "colorize" version))
8936 (sha256
8937 (base32
8938 "133rqj85n400qk6g3dhf2bmfws34mak1wqihvh3bgy9jhajw580b"))))
8939 (build-system ruby-build-system)
8940 (arguments
8941 '(#:phases (modify-phases %standard-phases
8942 (add-before 'check 'remove-codeclimate-dependency
8943 (lambda _
8944 (substitute* "test/test_colorize.rb"
8945 ;; Do not hook the tests into the online CodeClimate
8946 ;; service which is unnecessary for these tests.
8947 (("require 'codeclimate-test-reporter'")
8948 "")
8949 (("CodeClimate.*") ""))
8950 #t)))))
8951 (synopsis "Add color effects to the @code{String} class")
8952 (description
8953 "This package extends the @code{String} class and adds a
8954@code{ColorizedString} with methods to set text color, background color,
8955and text effects.")
8956 (home-page "http://github.com/fazibear/colorize")
8957 (license license:gpl2+)))
8958
9c7f15c0
JL
8959(define-public ruby-colorator
8960 (package
8961 (name "ruby-colorator")
8962 (version "1.1.0")
8963 (source (origin
8964 (method url-fetch)
8965 (uri (rubygems-uri "colorator" version))
8966 (sha256
8967 (base32
8968 "0f7wvpam948cglrciyqd798gdc6z3cfijciavd0dfixgaypmvy72"))))
8969 (build-system ruby-build-system)
8970 (arguments
8971 ;; No test target
8972 `(#:tests? #f))
8973 (home-page "http://octopress.org/colorator/")
8974 (synopsis "Terminal color library")
8975 (description "Colorator is a Ruby gem that helps you colorize your text
8976for the terminal.")
8977 (license license:expat)))
78b9c291
JL
8978
8979(define-public ruby-command-line-reporter
8980 (package
8981 (name "ruby-command-line-reporter")
b448e408 8982 (version "4.0.1")
78b9c291
JL
8983 (source (origin
8984 (method url-fetch)
8985 (uri (rubygems-uri "command_line_reporter" version))
8986 (sha256
8987 (base32
b448e408 8988 "1l0zxkh5n9dxfw46lpkg416ljpldlq1bgdhqh0d118dk338nz4ll"))))
78b9c291
JL
8989 (build-system ruby-build-system)
8990 (arguments
8991 ;; No Rakefile
8992 `(#:tests? #f
8993 #:phases
8994 (modify-phases %standard-phases
8995 (add-before 'build 'fix-dependencies
8996 (lambda _
8997 (substitute* ".gemspec"
8998 ;; colored is unmaintained
8999 (("colored") "colorator")
9000 ;; colorator version
9001 (("= 1.2") "= 1.1"))
9002 #t)))))
9003 (propagated-inputs `(("ruby-colorator" ,ruby-colorator)))
9004 (home-page "https://github.com/wbailey/command_line_reporter")
9005 (synopsis "Report production while executing Ruby scripts")
9006 (description "This gem provides a DSL that makes it easy to write reports
9007of various types in ruby. It eliminates the need to litter your source with
9008puts statements, instead providing a more readable, expressive interface to
9009your application.")
9010 (license license:asl2.0)))
f22c0387
JL
9011
9012(define-public ruby-command-line-reporter-3
9013 (package
9014 (inherit ruby-command-line-reporter)
9015 (version "3.3.6")
9016 (source (origin
9017 (method url-fetch)
9018 (uri (rubygems-uri "command_line_reporter" version))
9019 (sha256
9020 (base32
9021 "1h39zqqxp3k4qk49ajpx0jps1vmvxgkh43mqkb6znk583bl0fv71"))))))
6bba8ecf 9022
439d47cd
MC
9023(define-public ruby-kpeg
9024 (package
9025 (name "ruby-kpeg")
9026 (version "1.1.0")
9027 (source
9028 (origin
9029 (method url-fetch)
9030 (uri (rubygems-uri "kpeg" version))
9031 (sha256
9032 (base32
9033 "0x2kpfrcagj931masm5y1kwbnc6nxl60cqdcd3lyd1d2hz7kzlia"))))
9034 (build-system ruby-build-system)
9035 (native-inputs
9036 `(("ruby-hoe" ,ruby-hoe)))
9037 (synopsis "PEG library for Ruby")
9038 (description "KPeg is a simple PEG library for Ruby. It provides an API as
9039well as native grammar to build the grammar. KPeg supports direct left
9040recursion of rules via the
9041@uref{http://www.vpri.org/pdf/tr2008003_experimenting.pdf,OMeta memoization}
9042technique.")
9043 (home-page "https://github.com/evanphx/kpeg")
9044 (license license:expat)))
9045
6bba8ecf
JL
9046(define-public ruby-rdoc
9047 (package
9048 (name "ruby-rdoc")
9304f989 9049 (version "6.2.0")
6bba8ecf 9050 (source
9304f989
MC
9051 (origin
9052 (method git-fetch)
9053 (uri (git-reference
9054 (url "https://github.com/ruby/rdoc.git")
9055 (commit (string-append "v" version))))
9056 (file-name (git-file-name name version))
9057 (sha256
9058 (base32
9059 "0dhk29nidv93b5vnjvlm9gcixgn4i0jcyzrgxdk6pdg019bw4cj6"))))
6bba8ecf 9060 (build-system ruby-build-system)
9304f989
MC
9061 (arguments
9062 `(#:phases
9063 (modify-phases %standard-phases
9064 (add-after 'unpack 'patch-gemspec
9065 ;; TODO: Remove after next release is tagged.
9066 (lambda _
9067 (substitute* "rdoc.gemspec"
9068 (("\"lib/rdoc/generator/template/darkfish/js/\
9069jquery\\.js\", ") ""))
9070 #t))
9071 (add-before 'build 'generate
9072 ;; 'gem build' doesn't honor Rakefile dependencies (see:
9073 ;; https://github.com/ruby/rdoc/issues/432#issuecomment-650808977).
9074 (lambda _
9075 (invoke "rake" "generate"))))))
6bba8ecf 9076 (native-inputs
9304f989
MC
9077 `(("bundler" ,bundler)
9078 ("ruby-kpeg" ,ruby-kpeg)
9079 ("ruby-racc" ,ruby-racc)
9080 ("ruby-rubocop" ,ruby-rubocop)))
6bba8ecf
JL
9081 (home-page "https://ruby.github.io/rdoc/")
9082 (synopsis "HTML and command-line documentation utility")
9083 (description "RDoc produces HTML and command-line documentation for Ruby
9084projects. RDoc includes the +rdoc+ and +ri+ tools for generating and displaying
9085documentation from the command-line.")
9086 (license license:gpl2+)))
18077ffc
JL
9087
9088(define-public ruby-sass-listen
9089 (package
9090 (name "ruby-sass-listen")
9091 (version "4.0.0")
9092 (source (origin
9093 (method url-fetch)
9094 (uri (rubygems-uri "sass-listen" version))
9095 (sha256
9096 (base32
9097 "0xw3q46cmahkgyldid5hwyiwacp590zj2vmswlll68ryvmvcp7df"))))
9098 (build-system ruby-build-system)
9099 (arguments
9100 ;; No test target
9101 `(#:tests? #f))
9102 (propagated-inputs
9103 `(("ruby-rb-fsevent" ,ruby-rb-fsevent)
9104 ("ruby-rb-inotify" ,ruby-rb-inotify)))
9105 (home-page "https://github.com/sass/listen")
9106 (synopsis "File modification notification library")
9107 (description "The Listen gem listens to file modifications and notifies you
9108about the changes.")
9109 (license license:expat)))
0c8eedc1
JL
9110
9111(define-public ruby-terminfo
9112 (package
9113 (name "ruby-terminfo")
9114 (version "0.1.1")
9115 (source
9116 (origin
9117 (method url-fetch)
9118 (uri (rubygems-uri "ruby-terminfo" version))
9119 (sha256
9120 (base32
9121 "0rl4ic5pzvrpgd42z0c1s2n3j39c9znksblxxvmhkzrc0ckyg2cm"))))
9122 (build-system ruby-build-system)
9123 (arguments
9124 `(#:test-target "test"
9125 ;; Rakefile requires old packages and would need modification to
9126 ;; work with current software.
9127 #:tests? #f))
9128 (inputs
9129 `(("ncurses" ,ncurses)))
9130 (native-inputs
9131 `(("ruby-rubygems-tasks" ,ruby-rubygems-tasks)
9132 ("ruby-rdoc" ,ruby-rdoc)))
9133 (home-page "http://www.a-k-r.org/ruby-terminfo/")
9134 (synopsis "Terminfo binding for Ruby")
9135 (description "Ruby-terminfo provides terminfo binding for Ruby.")
9136 (license license:bsd-3)))
ddc3a667
JL
9137
9138(define-public ruby-diffy
9139 (package
9140 (name "ruby-diffy")
9141 (version "3.2.1")
9142 (source
9143 (origin
9144 (method url-fetch)
9145 (uri (rubygems-uri "diffy" version))
9146 (sha256
9147 (base32
9148 "119imrkn01agwhx5raxhknsi331y5i4yda7r0ws0an6905ximzjg"))))
9149 (build-system ruby-build-system)
9150 (arguments
9151 ;; No tests
9152 `(#:tests? #f))
9153 (native-inputs
9154 `(("ruby-rspec" ,ruby-rspec)))
9155 (home-page "https://github.com/samg/diffy")
9156 (synopsis "Convenient diffing in ruby")
9157 (description "Diffy provides a convenient way to generate a diff from two
9158strings or files.")
9159 (license license:expat)))
6456beef
JL
9160
9161(define-public ruby-sass-spec
9162 (package
9163 (name "ruby-sass-spec")
9164 (version "3.5.4")
11df8321
TGR
9165 (source
9166 (origin
9167 (method git-fetch)
9168 (uri (git-reference
9169 (url "https://github.com/sass/sass-spec.git")
9170 (commit (string-append "v" version))))
9171 (file-name (git-file-name name version))
9172 (sha256
9173 (base32 "1zsw66830w0xlc7kxz6fm4b5nyb44vdsdgm9mgy06s5aixx83pwr"))))
6456beef
JL
9174 (build-system ruby-build-system)
9175 (propagated-inputs
9176 `(("ruby-command-line-reporter-3" ,ruby-command-line-reporter-3)
9177 ("ruby-diffy" ,ruby-diffy)
9178 ("ruby-terminfo" ,ruby-terminfo)))
9179 (arguments
2c7cb711
CB
9180 `(;; This package contains tests for a sass implementation, and the to
9181 ;; avoid any circular dependencies, the tests are not run here
9182 #:tests? #f
9183 #:phases
9184 (modify-phases %standard-phases
9185 (add-after 'unpack 'patch-test
9186 (lambda _
9187 (delete-file "spec/values/colors/alpha_hex-3.5/error")
9188 (substitute* "spec/values/colors/alpha_hex-3.5/expected_output.css"
9189 (("string") "color")))))))
6456beef
JL
9190 (home-page "https://github.com/sass/sass-spec")
9191 (synopsis "Test suite for Sass")
9192 (description "Sass Spec is a test suite for Sass. Test cases are all in
9193the @file{spec} directory.")
9194 (license license:expat)))
f00f4492
JL
9195
9196(define-public ruby-sass
9197 (package
9198 (name "ruby-sass")
11ff2adc 9199 (version "3.6.0")
f00f4492
JL
9200 (source (origin
9201 (method url-fetch)
9202 (uri (rubygems-uri "sass" version))
9203 (sha256
9204 (base32
11ff2adc 9205 "18c6prbw9wl8bqhb2435pd9s0lzarl3g7xf8pmyla28zblvwxmyh"))))
f00f4492
JL
9206 (build-system ruby-build-system)
9207 (propagated-inputs
9208 `(("ruby-sass-listen" ,ruby-sass-listen)))
9209 (native-inputs
11ff2adc
CB
9210 `(("ruby-sass-spec" ,ruby-sass-spec)
9211 ("ruby-mathn" ,ruby-mathn)))
3497086b 9212 (home-page "https://sass-lang.com/")
f00f4492
JL
9213 (synopsis "CSS extension language")
9214 (description "Sass is a CSS extension language. It extends CSS with
9215features that don't exist yet like variables, nesting, mixins and inheritance.")
9216 (license license:expat)))
5e242cb4 9217
9efc888d
CB
9218(define-public ruby-sassc
9219 (package
9220 (name "ruby-sassc")
3e776b44 9221 (version "2.2.1")
9efc888d
CB
9222 (source
9223 (origin
9224 (method url-fetch)
9225 (uri (rubygems-uri "sassc" version))
9226 (sha256
9227 (base32
3e776b44 9228 "09bnid7r5z5hcin5hykvpvv8xig27wbbckxwis60z2aaxq4j9siz"))))
9efc888d
CB
9229 (build-system ruby-build-system)
9230 (arguments
3e776b44
CB
9231 '(#:modules ((guix build ruby-build-system)
9232 (guix build utils)
9233 (ice-9 textual-ports))
9234 #:phases
9efc888d
CB
9235 (modify-phases %standard-phases
9236 ;; TODO: This would be better as a snippet, but the ruby-build-system
9237 ;; doesn't seem to support that
9238 (add-after 'unpack 'remove-libsass
9239 (lambda _
9240 (delete-file-recursively "ext")
3e776b44
CB
9241 (with-atomic-file-replacement "sassc.gemspec"
9242 (lambda (in out)
9243 (let* ((gemspec (get-string-all in))
9244 (index (string-contains gemspec "libsass_dir")))
9245 (display (string-append
9246 (string-take gemspec index)
9247 "\nend\n")
9248 out))))
9efc888d
CB
9249 #t))
9250 (add-after 'unpack 'dont-check-the-libsass-version
9251 (lambda _
9252 (substitute* "test/native_test.rb"
9253 (("assert_equal.*Native\\.version") ""))
9254 #t))
9255 (add-after 'unpack 'remove-git-from-gemspec
9256 (lambda _
9257 (substitute* "sassc.gemspec"
3e776b44 9258 (("`git ls-files -z`") "`find . -type f -print0 |sort -z`"))
9efc888d
CB
9259 #t))
9260 (add-after 'unpack 'remove-extensions-from-gemspec
9261 (lambda _
9262 (substitute* "sassc.gemspec"
3e776b44 9263 (("\\[\"ext/extconf.rb\"\\]") "[]"))
9efc888d
CB
9264 #t))
9265 (add-after 'unpack 'fix-Rakefile
9266 (lambda _
9267 (substitute* "Rakefile"
3e776b44 9268 (("test: 'compile:libsass'") ":test"))
9efc888d
CB
9269 #t))
9270 (add-after 'unpack 'remove-unnecessary-dependencies
9271 (lambda _
9272 (substitute* "test/test_helper.rb"
9273 (("require \"pry\"") ""))
9274 #t))
9275 (add-before 'build 'patch-native.rb
9276 (lambda* (#:key inputs #:allow-other-keys)
9277 (substitute* "lib/sassc/native.rb"
9278 ((".*gem_root = spec.gem_dir") "")
9279 (("ffi_lib .*\n")
9280 (string-append
9281 "ffi_lib '" (assoc-ref inputs "libsass") "/lib/libsass.so'")))
9282 #t))
9283 ;; The gemspec still references the libsass files, so just keep the
9284 ;; one in the gem.
9285 (delete 'extract-gemspec))))
9286 (propagated-inputs
9287 `(("ruby-ffi" ,ruby-ffi)
9288 ("ruby-rake" ,ruby-rake)))
9289 (inputs
9290 `(("libsass" ,libsass)))
9291 (native-inputs
9292 `(("bundler" ,bundler)
3e776b44 9293 ("ruby-rake-compiler" ,ruby-rake-compiler)
9efc888d
CB
9294 ("ruby-minitest-around" ,ruby-minitest-around)
9295 ("ruby-test-construct" ,ruby-test-construct)))
9296 (synopsis "Use libsss from Ruby")
9297 (description
9298 "This library provides Ruby q@acronym{FFI, Foreign Function Interface}
9299bindings to the libsass library. This enables rendering
9300@acronym{SASS,Syntactically awesome style sheets} from Ruby code.")
9301 (home-page "https://github.com/sass/sassc-ruby")
9302 (license license:expat)))
9303
5e242cb4
JL
9304(define-public ruby-jekyll-sass-converter
9305 (package
9306 (name "ruby-jekyll-sass-converter")
9307 (version "1.5.2")
9308 (source (origin
9309 (method url-fetch)
9310 (uri (rubygems-uri "jekyll-sass-converter" version))
9311 (sha256
9312 (base32
9313 "008ikh5fk0n6ri54mylcl8jn0mq8p2nfyfqif2q3pp0lwilkcxsk"))))
9314 (build-system ruby-build-system)
9315 (propagated-inputs
9316 `(("ruby-sass" ,ruby-sass)))
9317 (arguments
9318 ;; No rakefile
9319 `(#:tests? #f))
9320 (home-page "https://github.com/jekyll/jekyll-sass-converter")
9321 (synopsis "Sass converter for Jekyll")
9322 (description "This gem provide built-in support for the Sass converter
9323in Jekyll.")
9324 (license license:expat)))
ceac6f6f
JL
9325
9326(define-public ruby-jekyll-watch
9327 (package
9328 (name "ruby-jekyll-watch")
6cbba8a3 9329 (version "2.1.2")
ceac6f6f
JL
9330 (source (origin
9331 (method url-fetch)
9332 (uri (rubygems-uri "jekyll-watch" version))
9333 (sha256
9334 (base32
6cbba8a3 9335 "1s9ly83sp8albvgdff12xy2h4xd8lm6z2fah4lzmk2yvp85jzdzv"))))
ceac6f6f
JL
9336 (build-system ruby-build-system)
9337 (propagated-inputs
6cbba8a3 9338 `(("ruby-listen" ,ruby-listen)))
ceac6f6f
JL
9339 (arguments
9340 ;; No rakefile
9341 `(#:tests? #f))
9342 (home-page "https://github.com/jekyll/jekyll-watch")
9343 (synopsis "Jekyll auto-rebuild support")
9344 (description "This gems add the @code{--watch} switch to the jekyll CLI
9345interface. It allows Jekyll to rebuild your site when a file changes.")
9346 (license license:expat)))
3224a5a8
JL
9347
9348(define-public ruby-parallel
9349 (package
9350 (name "ruby-parallel")
c41fba01
CB
9351 (version "1.13.0")
9352 (source
9353 (origin
9354 (method git-fetch)
9355 (uri (git-reference
9356 (url "https://github.com/grosser/parallel.git")
9357 (commit (string-append "v" version))))
9358 (file-name (git-file-name name version))
9359 (sha256
9360 (base32
9361 "1isqzbqxz2ndad4i5z3lb9ldrhaijfncj8bmffv04sq44sv87ikv"))))
3224a5a8 9362 (build-system ruby-build-system)
c41fba01
CB
9363 (arguments
9364 `(;; TODO 3 test failures
9365 ;; rspec ./spec/parallel_spec.rb:190 # Parallel.in_processes does not
9366 ;; open unnecessary pipes
9367 ;; rspec './spec/parallel_spec.rb[1:9:7]' # Parallel.each works with
9368 ;; SQLite in processes
9369 ;; rspec './spec/parallel_spec.rb[1:9:16]' # Parallel.each works with
9370 ;; SQLite in threads
9371 #:tests? #f
9372 #:test-target "rspec-rerun:spec"
9373 #:phases
9374 (modify-phases %standard-phases
9375 (add-after 'unpack 'patch-Gemfile
9376 (lambda _
9377 (substitute* "Gemfile"
9378 (("gem 'rspec-legacy_formatters'") "")
9379 (("gem 'activerecord.*$") "gem 'activerecord'\n"))))
9380 (add-before 'check 'delete-Gemfile.lock
9381 (lambda _
9382 ;; Bundler isn't being used for fetching dependendencies, so
9383 ;; delete the Gemfile.lock
9384 (delete-file "Gemfile.lock")
9385 #t))
9386 (add-before 'build 'patch-gemspec
9387 (lambda _
9388 (substitute* "parallel.gemspec"
9389 (("git ls-files") "find"))
9390 #t)))))
9391 (native-inputs
9392 `(("ruby-rspec" ,ruby-rspec)
9393 ("ruby-rspec-rerun" ,ruby-rspec-rerun)
9394 ("bundler" ,bundler)
9395 ("ruby-activerecord" ,ruby-activerecord)
9396 ("ruby-progressbar" ,ruby-progressbar)
9397 ("ruby-bump" ,ruby-bump)
9398 ("procps" ,procps)
9399 ("lsof" ,lsof)
9400 ("ruby-mysql2" ,ruby-mysql2)
9401 ("ruby-sqlite3" ,ruby-sqlite3)
9402 ("ruby-i18n" ,ruby-i18n)))
3224a5a8
JL
9403 (home-page "https://github.com/grosser/parallel")
9404 (synopsis "Parallel processing in Ruby")
9405 (description "Parallel allows you to run any code in parallel Processes
9406(to use all CPUs) or Threads(to speedup blocking operations). It is best
9407suited for map-reduce or e.g. parallel downloads/uploads.")
9408 (license license:expat)))
83d9f672
JL
9409
9410(define-public ruby-cane
9411 (package
9412 (name "ruby-cane")
9413 (version "3.0.0")
9414 (source (origin
9415 (method url-fetch)
9416 (uri (rubygems-uri "cane" version))
9417 (sha256
9418 (base32
9419 "0yf5za3l7lhrqa3g56sah73wh33lbxy5y3cb7ij0a2bp1b4kwhih"))))
9420 (build-system ruby-build-system)
9421 (arguments `(#:tests? #f)); No rakefile
9422 (home-page "https://github.com/square/cane")
9423 (propagated-inputs
9424 `(("ruby-parallel" ,ruby-parallel)))
9425 (synopsis "Code quality threshold checking")
9426 (description "Cane fails your build if code quality thresholds are not met.")
9427 (license license:asl2.0)))
00d71efc
JL
9428
9429(define-public ruby-morecane
9430 (package
9431 (name "ruby-morecane")
9432 (version "0.2.0")
9433 (source (origin
9434 (method url-fetch)
9435 (uri (rubygems-uri "morecane" version))
9436 (sha256
9437 (base32
9438 "0w70vb8z5bdhvr21h660aa43m5948pv0bd27z7ngai2iwdvqd771"))))
9439 (build-system ruby-build-system)
9440 (home-page "https://github.com/yob/morecane")
9441 (arguments `(#:tests? #f)); No rakefile
9442 (propagated-inputs
9443 `(("ruby-parallel" ,ruby-parallel)))
9444 (synopsis "Extra checks for cane")
9445 (description "The cane gem provides a great framework for running quality
9446checks over your ruby project as part of continuous integration build. It
9447comes with a few checks out of the box, but also provides an API for loading
9448custom checks. This gem provides a set of additional checks.")
9449 (license license:expat)))
abbe629c
JL
9450
9451(define-public ruby-pdf-reader
9452 (package
9453 (name "ruby-pdf-reader")
9454 (version "2.1.0")
9455 (source (origin
9456 (method url-fetch)
9457 (uri (rubygems-uri "pdf-reader" version))
9458 (sha256
9459 (base32
9460 "1b3ig4wpcgdbqa7yw0ahwbmikkkywn2a22bfmrknl5ls7g066x45"))))
9461 (build-system ruby-build-system)
9462 (arguments `(#:test-target "spec"))
9463 (native-inputs
9464 `(("bundler" ,bundler)
9465 ("ruby-rspec" ,ruby-rspec)
9466 ("ruby-cane" ,ruby-cane)
9467 ("ruby-morecane" ,ruby-morecane)))
9468 (propagated-inputs
9469 `(("ruby-afm" ,ruby-afm)
9470 ("ruby-ascii85" ,ruby-ascii85)
9471 ("ruby-hashery" ,ruby-hashery)
9472 ("ruby-rc4" ,ruby-rc4)
9473 ("ruby-ttfunk" ,ruby-ttfunk)))
9474 (home-page "https://github.com/yob/pdf-reader")
9475 (synopsis "PDF parser in Ruby")
9476 (description "The PDF::Reader library implements a PDF parser conforming as
9477much as possible to the PDF specification from Adobe. It provides programmatic
9478access to the contents of a PDF file with a high degree of flexibility.")
9479 (license license:gpl3+)))
461fb859
JL
9480
9481(define-public ruby-pdf-inspector
9482 (package
9483 (name "ruby-pdf-inspector")
9484 (version "1.3.0")
9485 (source (origin
9486 (method url-fetch)
9487 (uri (rubygems-uri "pdf-inspector" version))
9488 (sha256
9489 (base32
9490 "1g853az4xzgqxr5xiwhb76g4sqmjg4s79mm35mp676zjsrwpa47w"))))
9491 (build-system ruby-build-system)
9492 (propagated-inputs
9493 `(("ruby-pdf-reader" ,ruby-pdf-reader)))
9494 (arguments `(#:tests? #f)); No rakefile
9495 (home-page "https://github.com/prawnpdf/pdf-inspector")
9496 (synopsis "Analysis classes for inspecting PDF output")
9497 (description "This library provides a number of PDF::Reader based tools for
9498use in testing PDF output. Presently, the primary purpose of this tool is to
9499support the tests found in Prawn, a pure Ruby PDF generation library.")
9500 (license license:gpl3+)))
770e3b53
JL
9501
9502(define-public ruby-pdf-core
9503 (package
9504 (name "ruby-pdf-core")
9505 (version "0.8.1")
9506 (source (origin
9507 (method url-fetch)
9508 (uri (rubygems-uri "pdf-core" version))
9509 (sha256
9510 (base32
9511 "15d6m99bc8bbzlkcg13qfpjjzphfg5x905pjbfygvpcxsm8gnsvg"))))
9512 (build-system ruby-build-system)
9513 (arguments
9514 ; No test target
9515 `(#:tests? #f))
9516 (home-page "https://github.com/prawnpdf/pdf-core")
9517 (synopsis "Low level PDF features for Prawn")
9518 (description "This is an experimental gem that extracts low-level PDF
9519functionality from Prawn.")
9520 (license license:gpl3+)))
37fbced7 9521
7ad8dd08
JL
9522(define-public ruby-prawn
9523 (package
9524 (name "ruby-prawn")
9525 (version "2.2.2")
9526 (source (origin
9527 (method url-fetch)
9528 (uri (rubygems-uri "prawn" version))
9529 (sha256
9530 (base32
9531 "1qdjf1v6sfl44g3rqxlg8k4jrzkwaxgvh2l4xws97a8f3xv4na4m"))))
9532 (build-system ruby-build-system)
9533 (arguments
9534 ; No tests
9535 `(#:tests? #f
9536 #:phases
9537 (modify-phases %standard-phases
9538 (add-before 'build 'fix-dependencies
9539 (lambda _
9540 (substitute* "prawn.gemspec"
9541 (("~> 0.7.0") "~> 0.7"))
9542 #t)))))
9543 (propagated-inputs
9544 `(("ruby-pdf-core" ,ruby-pdf-core)
9545 ("ruby-ttfunk" ,ruby-ttfunk)))
9546 (native-inputs
9547 `(("bundler" ,bundler)
9548 ("ruby-pdf-inspector" ,ruby-pdf-inspector)
9549 ("ruby-rspec" ,ruby-rspec)
9550 ("ruby-simplecov" ,ruby-simplecov)
9551 ("ruby-yard" ,ruby-yard)))
9552 (home-page "http://prawnpdf.org/api-docs/2.0/")
9553 (synopsis "PDF generation for Ruby")
9554 (description "Prawn is a pure Ruby PDF generation library.")
9555 (license license:gpl3+)))
197ca8ec
JL
9556
9557(define-public ruby-prawn-table
9558 (package
9559 (name "ruby-prawn-table")
9560 (version "0.2.2")
9561 (source (origin
9562 (method url-fetch)
9563 (uri (rubygems-uri "prawn-table" version))
9564 (sha256
9565 (base32
9566 "1nxd6qmxqwl850icp18wjh5k0s3amxcajdrkjyzpfgq0kvilcv9k"))))
9567 (build-system ruby-build-system)
197ca8ec 9568 (propagated-inputs
0927b039
CB
9569 `(("ruby-prawn" ,ruby-prawn)
9570 ("ruby-pdf-inspector" ,ruby-pdf-inspector)))
9571 (native-inputs
9572 `(("bundler" ,bundler)
9573 ("ruby-yard" ,ruby-yard)
9574 ("ruby-mocha" ,ruby-mocha)
9575 ("ruby-coderay" ,ruby-coderay)
9576 ("ruby-prawn-manual-builder" ,ruby-prawn-manual-builder)
9577 ("ruby-simplecov" ,ruby-simplecov)
9578 ("ruby-rspec-2" ,ruby-rspec-2)))
9579 (arguments
9580 '(;; TODO: 1 test fails
9581 ;; Failure/Error: pdf.page_count.should == 1
9582 ;; expected: 1
9583 ;; got: 2 (using ==)
9584 ;; # ./spec/table_spec.rb:1308
9585 ;;
9586 ;; 225 examples, 1 failure
9587 #:tests? #f
9588 #:phases
9589 (modify-phases %standard-phases
9590 (add-before 'check 'patch-gemspec
9591 (lambda _
9592 (substitute* "prawn-table.gemspec"
9593 ;; Loosen the requirement for pdf-inspector
9594 (("~> 1\\.1\\.0") ">= 0")
9595 ;; Loosen the requirement for pdf-reader
9596 (("~> 1\\.2") ">= 0"))))
9597 (replace 'check
9598 (lambda* (#:key tests? #:allow-other-keys)
9599 (when tests?
9600 (invoke "rspec"))
9601 #t)))))
197ca8ec
JL
9602 (home-page "https://github.com/prawnpdf/prawn-table")
9603 (synopsis "Tables support for Prawn")
9604 (description "This gem provides tables support for Prawn.")
9605 (license license:gpl3+)))
03127069
JL
9606
9607(define-public ruby-kramdown
9608 (package
9609 (name "ruby-kramdown")
9610 (version "1.17.0")
9611 (source (origin
9612 (method url-fetch)
9613 (uri (rubygems-uri "kramdown" version))
9614 (sha256
9615 (base32
9616 "1n1c4jmrh5ig8iv1rw81s4mw4xsp4v97hvf8zkigv4hn5h542qjq"))))
9617 (build-system ruby-build-system)
9618 (arguments `(#:tests? #f)); FIXME: some test failures
9619 (native-inputs
9620 `(("ruby-prawn" ,ruby-prawn)
9621 ("ruby-prawn-table" ,ruby-prawn-table)))
9622 (home-page "https://kramdown.gettalong.org/")
9623 (synopsis "Markdown parsing and converting library")
9624 (description "Kramdown is a library for parsing and converting a superset
9625of Markdown. It is completely written in Ruby, supports standard Markdown
9626(with some minor modifications) and various extensions that have been made
9627popular by the PHP @code{Markdown Extra} package and @code{Maruku}.")
9628 (license license:expat)))
fa0063bc
JL
9629
9630(define-public ruby-http-parser.rb
9631 (package
9632 (name "ruby-http-parser.rb")
9633 (version "0.6.0")
9634 (source
9635 (origin
9636 (method url-fetch)
9637 (uri (rubygems-uri "http_parser.rb" version))
9638 (sha256
9639 (base32
9640 "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi"))))
9641 (build-system ruby-build-system)
9642 (arguments
9643 ;; No tests
9644 `(#:tests? #f))
9645 (native-inputs
9646 `(("ruby-rake-compiler" ,ruby-rake-compiler)
9647 ("ruby-rspec" ,ruby-rspec)))
9648 (home-page "https://github.com/tmm1/http_parser.rb")
9649 (synopsis "HTTP parser un Ruby")
9650 (description "This gem is a simple callback-based HTTP request/response
9651parser for writing http servers, clients and proxies.")
9652 (license license:expat)))
5e2f74bd
JL
9653
9654(define-public ruby-em-websocket
9655 (package
9656 (name "ruby-em-websocket")
9657 (version "0.5.1")
9658 (source
9659 (origin
9660 (method url-fetch)
9661 (uri (rubygems-uri "em-websocket" version))
9662 (sha256
9663 (base32
9664 "1bsw8vjz0z267j40nhbmrvfz7dvacq4p0pagvyp17jif6mj6v7n3"))))
9665 (build-system ruby-build-system)
9666 (arguments
9667 ;; No tests
9668 `(#:tests? #f))
9669 (propagated-inputs
9670 `(("ruby-eventmachine" ,ruby-eventmachine)
9671 ("ruby-http-parser.rb" ,ruby-http-parser.rb)))
9672 (native-inputs
9673 `(("bundler" ,bundler)
9674 ("ruby-rspec" ,ruby-rspec)))
9675 (home-page "https://github.com/igrigorik/em-websocket")
9676 (synopsis "EventMachine based WebSocket server")
9677 (description "Em-websocket is an EventMachine based WebSocket server
9678implementation.")
9679 (license license:expat)))
4ce0414b
JL
9680
9681(define-public ruby-rouge
9682 (package
9683 (name "ruby-rouge")
55cc5ef8 9684 (version "3.13.0")
4ce0414b
JL
9685 (source (origin
9686 (method url-fetch)
9687 (uri (rubygems-uri "rouge" version))
9688 (sha256
9689 (base32
55cc5ef8 9690 "1y90nx9ph9adnrpcsvs2adca2l3dyz8am2d2kzxkwd3a086ji7aw"))))
4ce0414b
JL
9691 (build-system ruby-build-system)
9692 (arguments `(#:tests? #f)); No rakefile
9693 (home-page "http://rouge.jneen.net/")
9694 (synopsis "Code highlighter")
9695 (description "Rouge is a code highlighter written in Ruby. It supports more
9696than 100 languages and outputs HTML or ANSI 256-color text. Its HTML output
9697is compatible with stylesheets designed for pygments.")
9698 (license (list
9699 ;; rouge is licensed under expat
9700 license:expat
9701 ;; pygments is licensed under bsd-2
9702 license:bsd-2))))
2c5028bd
JL
9703
9704(define-public ruby-rouge-2
9705 (package
9706 (inherit ruby-rouge)
9707 (version "2.2.1")
9708 (source (origin
9709 (method url-fetch)
9710 (uri (rubygems-uri "rouge" version))
9711 (sha256
9712 (base32
9713 "02kpahk5nkc33yxnn75649kzxaz073wvazr2zyg491nndykgnvcs"))))))
2e072e37
JL
9714
9715(define-public ruby-hashie
9716 (package
9717 (name "ruby-hashie")
9718 (version "3.6.0")
9719 (source (origin
9720 (method url-fetch)
9721 (uri (rubygems-uri "hashie" version))
9722 (sha256
9723 (base32
9724 "13bdzfp25c8k51ayzxqkbzag3wj5gc1jd8h7d985nsq6pn57g5xh"))))
9725 (build-system ruby-build-system)
9726 (native-inputs
9727 `(("bundler" ,bundler)))
9728 (arguments `(#:tests? #f)); FIXME: Could not locate Gemfile or .bundle/ directory
9729 (home-page "https://github.com/intridea/hashie")
9730 (synopsis "Extensions to Ruby Hashes")
9731 (description "Hashie is a collection of classes and mixins that make Ruby
9732hashes more powerful.")
9733 (license license:expat)))
73bfc125
JL
9734
9735(define-public ruby-heredoc-unindent
9736 (package
9737 (name "ruby-heredoc-unindent")
9738 (version "1.2.0")
9739 (source (origin
9740 (method url-fetch)
9741 (uri (rubygems-uri "heredoc_unindent" version))
9742 (sha256
9743 (base32
9744 "14ijr2fsjwhrkjkcaz81d5xnfa4vvgvcflrff83avqw9klm011yw"))))
9745 (build-system ruby-build-system)
9746 (native-inputs
9747 `(("ruby-hoe" ,ruby-hoe)))
9748 (home-page "https://github.com/adrianomitre/heredoc_unindent")
9749 (synopsis "Heredoc indentation cleaner")
9750 (description "This gem removes common margin from indented strings, such
9751as the ones produced by indented heredocs. In other words, it strips out
4f66ae28 9752leading whitespace chars at the beginning of each line, but only as much as
73bfc125
JL
9753the line with the smallest margin.
9754
9755It is acknowledged that many strings defined by heredocs are just code and
9756fact is that most parsers are insensitive to indentation. If, however, the
9757strings are to be used otherwise, be it for printing or testing, the extra
9758indentation will probably be an issue and hence this gem.")
9759 (license license:expat)))
f8ae2ee5
JL
9760
9761(define-public ruby-safe-yaml
9762 (package
9763 (name "ruby-safe-yaml")
7fa83fa8 9764 (version "1.0.5")
28cf8dab
CB
9765 (source
9766 (origin
28cf8dab
CB
9767 (method git-fetch)
9768 (uri (git-reference
9769 (url "https://github.com/dtao/safe_yaml.git")
9770 (commit version)))
9771 (file-name (git-file-name name version))
9772 (sha256
9773 (base32
7fa83fa8 9774 "1a0wh7y3va2m7bjza95na2snw0vrdh9syz40mpjvjphbc4ph3pzg"))))
f8ae2ee5
JL
9775 (build-system ruby-build-system)
9776 (native-inputs
9777 `(("ruby-rspec" ,ruby-rspec)
9778 ("ruby-hashie" ,ruby-hashie)
9779 ("ruby-heredoc-unindent" ,ruby-heredoc-unindent)))
28cf8dab
CB
9780 (arguments
9781 '(#:test-target "spec"
9782 #:phases
9783 (modify-phases %standard-phases
9784 (add-before 'check 'set-TZ
9785 (lambda _
9786 ;; This test is dependent on the timezone
9787 ;; spec/transform/to_date_spec.rb:35
9788 ;; # SafeYAML::Transform::ToDate converts times to the local
9789 ;; timezone
9790 (setenv "TZ" "UTC-11")
9791 #t)))))
f8ae2ee5
JL
9792 (home-page "https://github.com/dtao/safe_yaml")
9793 (synopsis "YAML parser")
9794 (description "The SafeYAML gem provides an alternative implementation of
9795YAML.load suitable for accepting user input in Ruby applications.")
9796 (license license:expat)))
f1ec4d76
JL
9797
9798(define-public ruby-mercenary
9799 (package
9800 (name "ruby-mercenary")
9801 (version "0.3.6")
9802 (source (origin
9803 (method url-fetch)
9804 (uri (rubygems-uri "mercenary" version))
9805 (sha256
9806 (base32
9807 "10la0xw82dh5mqab8bl0dk21zld63cqxb1g16fk8cb39ylc4n21a"))))
9808 (build-system ruby-build-system)
9809 (arguments `(#:test-target "spec"))
9810 (native-inputs
9811 `(("bundler" ,bundler)))
9812 (home-page "https://github.com/jekyll/mercenary")
9813 (synopsis "Command-line apps library in Ruby")
9814 (description "Mercenary is a lightweight and flexible library for writing
9815command-line apps in Ruby.")
9816 (license license:expat)))
a13d451e
JL
9817
9818(define-public ruby-liquid
9819 (package
9820 (name "ruby-liquid")
9821 (version "4.0.0")
9822 (source (origin
9823 (method url-fetch)
9824 (uri (rubygems-uri "liquid" version))
9825 (sha256
9826 (base32
9827 "17fa0jgwm9a935fyvzy8bysz7j5n1vf1x2wzqkdfd5k08dbw3x2y"))))
9828 (build-system ruby-build-system)
9829 (arguments `(#:tests? #f)); No rakefile
9830 (home-page "https://shopify.github.io/liquid/")
9831 (synopsis "Template language")
9832 (description "Liquid is a template language written in Ruby. It is used
9833to load dynamic content on storefronts.")
9834 (license license:expat)))
49395112
JL
9835
9836(define-public ruby-forwardable-extended
9837 (package
9838 (name "ruby-forwardable-extended")
9839 (version "2.6.0")
9840 (source (origin
9841 (method url-fetch)
9842 (uri (rubygems-uri "forwardable-extended" version))
9843 (sha256
9844 (base32
9845 "15zcqfxfvsnprwm8agia85x64vjzr2w0xn9vxfnxzgcv8s699v0v"))))
9846 (build-system ruby-build-system)
9847 (arguments `(#:tests? #f)); Cyclic dependency on luna-rspec-formatters
9848 (home-page "https://github.com/envygeeks/forwardable-extended")
9849 (synopsis "Delegation to hashes and instance variables in Forwardable")
9850 (description "Forwardable Extended provides more @code{Forwardable}
9851methods for your source as @code{Forwardable::Extended}.")
9852 (license license:expat)))
37296113
JL
9853
9854(define-public ruby-pathutil
9855 (package
9856 (name "ruby-pathutil")
feaaa603 9857 (version "0.16.2")
37296113
JL
9858 (source (origin
9859 (method url-fetch)
9860 (uri (rubygems-uri "pathutil" version))
9861 (sha256
9862 (base32
feaaa603 9863 "12fm93ljw9fbxmv2krki5k5wkvr7560qy8p4spvb9jiiaqv78fz4"))))
37296113
JL
9864 (build-system ruby-build-system)
9865 (propagated-inputs
9866 `(("ruby-forwardable-extended" ,ruby-forwardable-extended)))
9867 (native-inputs
9868 `(("bundler" ,bundler)
9869 ("ruby-rspec" ,ruby-rspec)))
9870 ;; Fails with: cannot load such file --
9871 ;; /tmp/guix-build-ruby-pathutil-0.16.0.drv-0/gem/benchmark/support/task
9872 (arguments `(#:tests? #f))
9873 (home-page "https://github.com/envygeeks/pathutil")
9874 (synopsis "Extended implementation of Pathname")
9875 (description "Pathutil tries to be a faster pure Ruby implementation of
9876Pathname.")
9877 (license license:expat)))
49e1dde5
JL
9878
9879(define-public jekyll
9880 (package
9881 (name "jekyll")
fcf82fd3 9882 (version "3.8.6")
49e1dde5
JL
9883 (source (origin
9884 (method url-fetch)
9885 (uri (rubygems-uri "jekyll" version))
9886 (sha256
9887 (base32
fcf82fd3 9888 "1ph1jjjl25vmzif7bvxzviq7azjm384pm7ba4k24cah94285bzhz"))))
49e1dde5
JL
9889 (build-system ruby-build-system)
9890 (arguments
fcf82fd3 9891 ;; No rakefile, but a test subdirectory.
49e1dde5
JL
9892 `(#:tests? #f
9893 #:phases
9894 (modify-phases %standard-phases
9895 (add-before 'build 'fix-i18n
9896 (lambda _
9897 (substitute* ".gemspec"
9898 (("~> 0.7") ">= 0.7"))
9899 #t)))))
9900 (propagated-inputs
9901 `(("ruby-addressable" ,ruby-addressable)
9902 ("ruby-colorator" ,ruby-colorator)
9903 ("ruby-em-websocket" ,ruby-em-websocket)
9904 ("ruby-i18n" ,ruby-i18n)
9905 ("ruby-jekyll-sass-converter" ,ruby-jekyll-sass-converter)
9906 ("ruby-jekyll-watch" ,ruby-jekyll-watch)
9907 ("ruby-kramdown" ,ruby-kramdown)
9908 ("ruby-liquid" ,ruby-liquid)
9909 ("ruby-mercenary" ,ruby-mercenary)
9910 ("ruby-pathutil" ,ruby-pathutil)
9911 ("ruby-rouge" ,ruby-rouge-2)
9912 ("ruby-safe-yaml" ,ruby-safe-yaml)))
9913 (home-page "https://jekyllrb.com/")
9914 (synopsis "Static site generator")
9915 (description "Jekyll is a simple, blog aware, static site generator.")
9916 (license license:expat)))
37a0f470
JL
9917
9918(define-public ruby-jekyll-paginate-v2
9919 (package
9920 (name "ruby-jekyll-paginate-v2")
9921 (version "2.0.0")
9922 (source (origin
9923 (method url-fetch)
9924 (uri (rubygems-uri "jekyll-paginate-v2" version))
9925 (sha256
9926 (base32
9927 "154bfpyml6abxww9868hhyfvxasl8qhsc5zy2q30c7dxaj0igdib"))))
9928 (build-system ruby-build-system)
9929 (propagated-inputs
9930 `(("jekyll" ,jekyll)))
9931 (home-page "https://github.com/sverrirs/jekyll-paginate-v2")
9932 (synopsis "Pagination Generator for Jekyll 3")
9933 (description "The Pagination Generator forms the core of the pagination
9934logic in Jekyll. It calculates and generates the pagination pages.")
9935 (license license:expat)))
909eae21
CB
9936
9937(define-public ruby-faraday
9938 (package
9939 (name "ruby-faraday")
9940 (version "0.15.4")
9941 (source
9942 (origin
9943 (method url-fetch)
9944 (uri (rubygems-uri "faraday" version))
9945 (sha256
9946 (base32
9947 "0s72m05jvzc1pd6cw1i289chas399q0a14xrwg4rvkdwy7bgzrh0"))))
9948 (build-system ruby-build-system)
9949 (arguments
9950 '(#:tests? #f))
9951 (propagated-inputs
9952 `(("ruby-multipart-post" ,ruby-multipart-post)))
9953 (synopsis "Ruby HTTP/REST API client library")
9954 (description
9955 "Faraday is a HTTP/REST API client library which provides a common
9956interface over different adapters.")
9957 (home-page "https://github.com/lostisland/faraday")
9958 (license license:expat)))
a058cbfd
CB
9959
9960(define-public ruby-nio4r
9961 (package
9962 (name "ruby-nio4r")
7923b9bf 9963 (version "2.5.2")
a058cbfd
CB
9964 (source
9965 (origin
9966 (method url-fetch)
9967 (uri (rubygems-uri "nio4r" version))
9968 (sha256
9969 (base32
7923b9bf 9970 "0gnmvbryr521r135yz5bv8354m7xn6miiapfgpg1bnwsvxz8xj6c"))))
a058cbfd
CB
9971 (build-system ruby-build-system)
9972 (arguments
9973 '(#:phases
9974 (modify-phases %standard-phases
9975 (add-after 'unpack 'remove-unnecessary-dependencies
9976 (lambda _
9977 (substitute* "spec/spec_helper.rb"
9978 ;; Coveralls is for uploading test coverage information to an
9979 ;; online service, and thus unnecessary for building the Guix
9980 ;; package
9981 (("require \"coveralls\"") "")
9982 (("Coveralls\\.wear!") "")
9983 ;; Remove rspec/retry as we are not retrying the tests
9984 (("require \"rspec/retry\"") "")
9985 (("config\\.display_try_failure_messages = true") "")
9986 (("config\\.verbose_retry = true") ""))
9987 #t))
9988 (add-before 'check 'compile
9989 (lambda _
9990 (invoke "rake" "compile")
9991 #t))
9992 (replace 'check
9993 (lambda* (#:key tests? #:allow-other-keys)
9994 (when tests?
9995 (invoke "rspec"))
9996 #t)))))
9997 (native-inputs
9998 `(("bundler" ,bundler)
9999 ("ruby-rake-compiler" ,ruby-rake-compiler)
10000 ("ruby-rspec" ,ruby-rspec)
10001 ("ruby-rubocop" ,ruby-rubocop)))
10002 (synopsis "New I/O for Ruby")
10003 (description
10004 "@code{nio} provides cross-platform asynchronous I/O primitives in Ruby
10005for scalable network clients and servers.")
10006 (home-page "https://github.com/socketry/nio4r")
10007 (license license:expat)))
f9da1ada
CB
10008
10009(define-public ruby-globalid
10010 (package
10011 (name "ruby-globalid")
10012 (version "0.4.2")
10013 (source
10014 (origin
10015 (method url-fetch)
10016 (uri (rubygems-uri "globalid" version))
10017 (sha256
10018 (base32
10019 "1zkxndvck72bfw235bd9nl2ii0lvs5z88q14706cmn702ww2mxv1"))))
10020 (build-system ruby-build-system)
10021 (arguments
10022 '(;; No included tests
10023 #:tests? #f))
10024 (propagated-inputs
10025 `(("ruby-activesupport" ,ruby-activesupport)))
10026 (synopsis "Generate URIs idenfitying model instances in Ruby")
10027 (description
10028 "@code{GlobalID} provides a way to generate URIs from a model in Ruby that
10029uniquely identify it.")
10030 (home-page "https://rubyonrails.org/")
10031 (license license:expat)))
15606d98
CB
10032
10033(define-public ruby-sprockets
10034 (package
10035 (name "ruby-sprockets")
10036 (version "3.7.2")
10037 (source
10038 (origin
10039 (method url-fetch)
10040 (uri (rubygems-uri "sprockets" version))
10041 (sha256
10042 (base32
10043 "182jw5a0fbqah5w9jancvfmjbk88h8bxdbwnl4d3q809rpxdg8ay"))))
10044 (build-system ruby-build-system)
10045 (arguments
10046 '(;; No included tests
10047 #:tests? #f))
10048 (propagated-inputs
10049 `(("ruby-concurrent" ,ruby-concurrent)
10050 ("ruby-rack" ,ruby-rack)))
10051 (synopsis "Sprockets is a Rack-based asset packaging system")
10052 (description
10053 "Sprockets is a Rack-based asset packaging system that concatenates and
10054serves JavaScript, CoffeeScript, CSS, LESS, Sass, and SCSS.")
10055 (home-page "https://github.com/rails/sprockets")
10056 (license license:expat)))
acb9e3d8
PN
10057
10058(define-public ruby-mustermann
10059 (package
10060 (name "ruby-mustermann")
10061 (version "1.0.3")
10062 (source
10063 (origin
10064 (method url-fetch)
10065 (uri (rubygems-uri "mustermann" version))
10066 (sha256
10067 (base32
10068 "0lycgkmnyy0bf29nnd2zql5a6pcf8sp69g9v4xw0gcfcxgpwp7i1"))))
10069 (build-system ruby-build-system)
10070 (arguments
10071 ;; No tests.
10072 '(#:tests? #f))
10073 (synopsis "Library implementing patterns that behave like regular expressions")
10074 (description "Given a string pattern, Mustermann will turn it into an
10075object that behaves like a regular expression and has comparable performance
10076characteristics.")
10077 (home-page "https://github.com/sinatra/mustermann")
10078 (license license:expat)))
3bb094e2 10079
7bddb6aa
BL
10080(define-public ruby-htmlentities
10081 (package
10082 (name "ruby-htmlentities")
10083 (version "4.3.4")
10084 (source
10085 (origin
10086 (method url-fetch)
10087 (uri (rubygems-uri "htmlentities" version))
10088 (sha256
10089 (base32
10090 "1nkklqsn8ir8wizzlakncfv42i32wc0w9hxp00hvdlgjr7376nhj"))))
10091 (build-system ruby-build-system)
10092 (arguments
10093 `(#:phases
10094 (modify-phases %standard-phases
10095 (replace 'check
10096 (lambda _
10097 (map (lambda (file)
10098 (invoke "ruby" "-Itest" file))
10099 (find-files "./test" ".*_test\\.rb")))))))
10100 (synopsis "Encode and decode (X)HTML entities")
10101 (description
10102 "This package provides a module for encoding and decoding (X)HTML
10103entities.")
10104 (home-page "https://github.com/threedaymonk/htmlentities")
10105 (license license:expat)))
10106
3bb094e2
PN
10107(define-public ruby-sinatra
10108 (package
10109 (name "ruby-sinatra")
7af92924 10110 (version "2.0.8.1")
3bb094e2
PN
10111 (source
10112 (origin
10113 (method url-fetch)
10114 (uri (rubygems-uri "sinatra" version))
10115 (sha256
10116 (base32
7af92924 10117 "0riy3hwjab1mr73jcqx3brmbmwspnw3d193j06a5f0fy1w35z15q"))))
3bb094e2 10118 (build-system ruby-build-system)
7af92924
MC
10119 (arguments
10120 `(#:phases
10121 (modify-phases %standard-phases
10122 ;; See: https://github.com/sinatra/sinatra/issues/1578.
10123 (add-after 'extract-gemspec 'fix-slow-doc-generation
10124 (lambda _
10125 (substitute* "sinatra.gemspec"
10126 (("\"README.rdoc\"\\.freeze," all)
10127 (string-append all " \"--exclude=.*\\.md\".freeze,")))
10128 #t)))))
3bb094e2
PN
10129 (propagated-inputs
10130 `(("ruby-mustermann" ,ruby-mustermann)
10131 ("ruby-rack" ,ruby-rack)
10132 ("ruby-rack-protection" ,ruby-rack-protection)
10133 ("ruby-tilt" ,ruby-tilt)))
10134 (synopsis "DSL for quick web applications creation in Ruby")
10135 (description
10136 "Sinatra is a DSL for quickly creating web applications in Ruby with
10137minimal effort.")
10138 (home-page "http://sinatrarb.com/")
10139 (license license:expat)))
6e87695b
PN
10140
10141(define-public ruby-thin
10142 (package
10143 (name "ruby-thin")
10144 (version "1.7.2")
10145 (source
10146 (origin
10147 (method url-fetch)
10148 (uri (rubygems-uri "thin" version))
10149 (sha256
10150 (base32
10151 "0nagbf9pwy1vg09k6j4xqhbjjzrg5dwzvkn4ffvlj76fsn6vv61f"))))
10152 (build-system ruby-build-system)
10153 (arguments
10154 ;; No tests.
10155 '(#:tests? #f))
10156 (propagated-inputs
10157 `(("ruby-daemons" ,ruby-daemons)
10158 ("ruby-eventmachine" ,ruby-eventmachine)
10159 ("ruby-rack" ,ruby-rack)))
10160 (synopsis "Thin and fast web server for Ruby")
10161 (description "Thin is a Ruby web server that glues together 3 Ruby libraries:
10162@itemize
10163@item the Mongrel parser,
10164@item Event Machine, a network I/O library with high scalability, performance
10165and stability,
10166@item Rack, a minimal interface between webservers and Ruby frameworks.
10167@end itemize\n")
60783303 10168 (home-page "https://github.com/macournoyer/thin")
6e87695b 10169 (license license:ruby)))
be6016db
PN
10170
10171(define-public ruby-skinny
10172 (package
10173 (name "ruby-skinny")
10174 (version "0.2.4")
10175 (source
10176 (origin
10177 (method url-fetch)
10178 (uri (rubygems-uri "skinny" version))
10179 (sha256
10180 (base32
10181 "1y3yvx88ylgz4d2s1wskjk5rkmrcr15q3ibzp1q88qwzr5y493a9"))))
10182 (build-system ruby-build-system)
10183 (arguments
10184 '(#:tests? #f ; No included tests
10185 #:phases
10186 (modify-phases %standard-phases
10187 (add-before 'build 'patch-gemspec
10188 (lambda _
10189 (substitute* ".gemspec"
10190 (("<eventmachine>.freeze, \\[\\\"~> 1.0.0\"")
10191 "<eventmachine>, [\">= 1.0.0\"")
10192 (("<thin>.freeze, \\[\\\"< 1.7\", ") "<thin>, ["))
10193 #t)))))
10194 (propagated-inputs
10195 `(("ruby-eventmachine" ,ruby-eventmachine)
10196 ("ruby-thin" ,ruby-thin)))
10197 (synopsis "Simple, upgradable WebSockets for Ruby Thin")
10198 (description "Skinny is a simple, upgradable WebSockets for Ruby, using
10199the Thin library.")
10200 (home-page "https://github.com/sj26/skinny")
10201 (license license:expat)))
df747c8d 10202
9c566d1b
MB
10203(define-public ruby-sys-filesystem
10204 (package
10205 (name "ruby-sys-filesystem")
10206 (version "1.3.4")
10207 (source (origin
10208 (method url-fetch)
10209 (uri (rubygems-uri "sys-filesystem" version))
10210 (sha256
10211 (base32
10212 "0mizqnsiagagmracadr16s5na2ks2j3ih1w0f3gp4ssrda6szl01"))))
10213 (build-system ruby-build-system)
10214 (arguments
10215 '(#:phases (modify-phases %standard-phases
10216 (add-before 'check 'set-HOME
10217 (lambda _
10218 ;; Some tests attempt to stat $HOME. Let them.
10219 (setenv "HOME" "/tmp")
10220 #t)))))
10221 (propagated-inputs
10222 `(("ruby-ffi" ,ruby-ffi)))
10223 (native-inputs
10224 `(("ruby-mkmf-lite" ,ruby-mkmf-lite)))
10225 (synopsis "Gather file system information")
10226 (description
10227 "The @code{sys-filesystem} library provides a cross-platform interface
10228for gathering file system information, such as disk space and mount points.")
10229 (home-page "https://github.com/djberg96/sys-filesystem")
10230 (license license:asl2.0)))
10231
df747c8d
PN
10232(define-public mailcatcher
10233 (package
10234 (name "mailcatcher")
10235 (version "0.7.1")
10236 (source
10237 (origin
10238 (method url-fetch)
10239 (uri (rubygems-uri "mailcatcher" version))
10240 (sha256
10241 (base32
10242 "02w1ycyfv7x0sh9799lz7xa65p5qvl5z4pa8a7prb68h2zwkfq0n"))))
10243 (build-system ruby-build-system)
10244 (arguments
10245 ;; Tests require web/assets which is not included in the output. We
10246 ;; might be able to fix this by adding the Git repository to the GEM_PATH
10247 ;; of the tests. See ruby-mysql2.
10248 '(#:tests? #f
10249 #:phases
10250 (modify-phases %standard-phases
10251 (add-before 'build 'patch-gemspec
10252 (lambda _
10253 (substitute* ".gemspec"
10254 (("<eventmachine>.freeze, \\[\\\"= 1.0.9.1")
10255 "<eventmachine>, [\">= 1.0.9.1")
10256 (("<rack>.freeze, \\[\\\"~> 1.5") "<rack>, [\">= 1.5")
10257 (("<thin>.freeze, \\[\\\"~> 1.5.0") "<thin>, [\">= 1.5.0")
10258 (("<sinatra>.freeze, \\[\\\"~> 1.2") "<sinatra>, [\">= 1.2"))
10259 #t))
10260 (add-before 'build 'loosen-dependency-contraint
10261 (lambda _
10262 (substitute* "lib/mail_catcher.rb"
10263 (("\"eventmachine\", \"1.0.9.1\"") "\"eventmachine\", \">= 1.0.9.1\"")
10264 (("\"rack\", \"~> 1.5\"") "\"rack\", \">= 1.5\"")
10265 (("\"thin\", \"~> 1.5.0\"") "\"thin\", \">= 1.5.0\"")
10266 (("\"sinatra\", \"~> 1.2\"") "\"sinatra\", \">= 1.2\""))
10267 #t)))))
10268 (inputs
10269 `(("ruby-eventmachine" ,ruby-eventmachine)
10270 ("ruby-mail" ,ruby-mail)
10271 ("ruby-rack" ,ruby-rack)
10272 ("ruby-sinatra" ,ruby-sinatra)
10273 ("ruby-skinny" ,ruby-skinny)
10274 ("ruby-sqlite3" ,ruby-sqlite3)
10275 ("ruby-thin" ,ruby-thin)))
10276 (synopsis "SMTP server which catches messages to display them a browser")
10277 (description
10278 "MailCatcher runs a super simple SMTP server which catches any message
10279sent to it to display in a web interface. Run mailcatcher, set your favourite
10280app to deliver to smtp://127.0.0.1:1025 instead of your default SMTP server,
10281then check out http://127.0.0.1:1080 to see the mail.")
10282 (home-page "https://mailcatcher.me")
10283 (license license:expat)))
fc4f7c45
MK
10284
10285(define-public ruby-backport
10286 (package
10287 (name "ruby-backport")
b62863b8 10288 (version "1.1.2")
fc4f7c45
MK
10289 (source
10290 (origin
b62863b8 10291 ;; The gem does not include test code, so fetch from the Git repository.
fc4f7c45
MK
10292 (method git-fetch)
10293 (uri (git-reference
10294 (url "https://github.com/castwide/backport.git")
10295 (commit (string-append "v" version))))
10296 (file-name (git-file-name name version))
10297 (sha256
b62863b8 10298 (base32 "18fpg1n7n2z02ykz9v1x1q0cqa2lvivf8ygka768s01q1r9wfwv2"))))
fc4f7c45
MK
10299 (build-system ruby-build-system)
10300 (arguments
10301 `(#:test-target "spec"))
10302 (native-inputs
10303 `(("bundler" ,bundler)
10304 ("ruby-rspec" ,ruby-rspec)))
10305 (inputs
10306 `(("ruby-simplecov" ,ruby-simplecov)))
10307 (synopsis "Pure Ruby library for event-driven IO")
10308 (description
10309 "This package provides a pure Ruby library for event-driven IO.")
10310 (home-page "https://github.com/castwide/backport")
10311 (license license:expat)))
369faa59
JL
10312
10313(define-public ruby-json-schema
10314 (package
10315 (name "ruby-json-schema")
10316 (version "2.8.1")
10317 (source
10318 (origin
10319 (method url-fetch)
10320 (uri (rubygems-uri "json-schema" version))
10321 (sha256
10322 (base32
10323 "1yv5lfmr2nzd14af498xqd5p89f3g080q8wk0klr3vxgypsikkb5"))))
10324 (build-system ruby-build-system)
10325 (arguments
10326 `(#:tests? #f ; no tests
10327 #:phases
10328 (modify-phases %standard-phases
10329 (replace 'build
10330 (lambda _
10331 (invoke "gem" "build" ".gemspec"))))))
10332 (propagated-inputs
10333 `(("ruby-addressable" ,ruby-addressable)))
10334 (synopsis "Ruby JSON Schema Validator")
10335 (description "This library provides Ruby with an interface for validating
10336JSON objects against a JSON schema conforming to JSON Schema Draft 4. Legacy
10337support for JSON Schema Draft 3, JSON Schema Draft 2, and JSON Schema Draft 1
10338is also included.")
10339 (home-page "https://github.com/ruby-json-schema/json-schema")
10340 (license license:expat)))
44881cad
JL
10341
10342(define-public swagger-diff
10343 (package
10344 (name "swagger-diff")
10345 (version "1.1.2")
10346 (source
10347 (origin
10348 (method url-fetch)
10349 (uri (rubygems-uri "swagger-diff" version))
10350 (sha256
10351 (base32
10352 "1hxx50nga1bqn254iqjcdwkc9c72364ks9lyjyw10ajz0l0ly7sn"))))
10353 (build-system ruby-build-system)
10354 (arguments
10355 `(#:test-target "spec"
10356 #:phases
10357 (modify-phases %standard-phases
10358 ;; Don't run or require rubocop, the code linting tool, as this is a
10359 ;; bit unnecessary.
10360 (add-after 'unpack 'dont-run-rubocop
10361 (lambda _
10362 (substitute* "Rakefile"
10363 ((".*rubocop.*") "")
10364 ((".*RuboCop.*") ""))
10365 #t)))))
10366 (propagated-inputs
10367 `(("ruby-json-schema" ,ruby-json-schema)))
10368 (native-inputs
10369 `(("bundler" ,bundler)
10370 ("ruby-rspec-core" ,ruby-rspec-core)
10371 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
10372 (synopsis
10373 "Compare Open API Initiative specification files")
10374 (description
10375 "Swagger::Diff is a utility for comparing two different Open API
10376Initiative (OAI) specifications (formerly known as Swagger specifications).
10377It is intended to determine whether a newer API specification is
10378backwards-compatible with an older API specification.")
10379 (home-page "https://github.com/civisanalytics/swagger-diff")
10380 (license license:bsd-3)))
9e065a8a
BL
10381
10382(define-public ruby-reverse-markdown
10383 (package
10384 (name "ruby-reverse-markdown")
10385 (version "1.1.0")
10386 (source
10387 (origin
10388 (method url-fetch)
10389 (uri (rubygems-uri "reverse_markdown" version))
10390 (sha256
10391 (base32
10392 "0w7y5n74daajvl9gixr91nh8670d7mkgspkk3ql71m8azq3nffbg"))))
10393 (build-system ruby-build-system)
10394 (propagated-inputs
10395 `(("ruby-nokogiri" ,ruby-nokogiri)))
10396 (native-inputs
10397 `(("bundler" ,bundler)
10398 ("ruby-rspec" ,ruby-rspec)
10399 ("ruby-kramdown" ,ruby-kramdown)
10400 ("ruby-simplecov" ,ruby-simplecov)))
10401 (arguments
10402 `(#:phases
10403 (modify-phases %standard-phases
10404 (replace 'check
10405 (lambda* (#:key tests? #:allow-other-keys)
10406 (when tests?
10407 (invoke "rspec"))
10408 #t)))))
10409 (synopsis "Convert HTML into Markdown")
10410 (description
10411 "This Ruby module allows you to map simple HTML back into
10412Markdown---e.g., if you want to import existing HTML data in your
10413application.")
10414 (home-page "https://github.com/xijo/reverse_markdown")
10415 (license license:wtfpl2)))
10416
a9e2de7e
BL
10417(define-public ruby-solargraph
10418 (package
10419 (name "ruby-solargraph")
10420 (version "0.36.0")
10421 (source
10422 (origin
10423 (method url-fetch)
10424 (uri (rubygems-uri "solargraph" version))
10425 (sha256
10426 (base32
10427 "0b93xzkgd1h06da9gdnwivj1mzbil8lc072y2838dy6i7bxgpy9i"))))
10428 (build-system ruby-build-system)
10429 (propagated-inputs
10430 `(("ruby-backport" ,ruby-backport)
10431 ("bundler" ,bundler)
10432 ("ruby-htmlentities" ,ruby-htmlentities)
10433 ("ruby-jaro-winkler" ,ruby-jaro-winkler)
10434 ("ruby-maruku" ,ruby-maruku)
10435 ("ruby-nokogiri" ,ruby-nokogiri)
10436 ("ruby-parser" ,ruby-parser)
10437 ("ruby-reverse-markdown" ,ruby-reverse-markdown)
10438 ("ruby-rubocop" ,ruby-rubocop)
10439 ("ruby-thor" ,ruby-thor)
10440 ("ruby-tilt" ,ruby-tilt)
10441 ("ruby-yard" ,ruby-yard)))
10442 (native-inputs
10443 `(("ruby-rspec" ,ruby-rspec)
10444 ("ruby-pry" ,ruby-pry)
10445 ("ruby-simplecov" ,ruby-simplecov)
10446 ("ruby-webmock" ,ruby-webmock-2)))
10447 ;; FIXME: can't figure out how to run the tests properly:
10448
10449 ;; An error occurred while loading spec_helper.
10450 ;; Failure/Error: return gem_original_require(path)
10451 ;; LoadError:
10452 ;; cannot load such file -- spec_helper
10453 (arguments
10454 '(#:tests? #f
10455 #:phases
10456 (modify-phases %standard-phases
10457 (replace 'check
10458 (lambda* (#:key tests? #:allow-other-keys)
10459 (when tests?
10460 (invoke "rspec"))
10461 #t)))))
10462 (synopsis
10463 "IDE tools for code completion, inline documentation, and static analysis")
10464 (description
10465 "Solargraph provides a comprehensive suite of tools for Ruby
10466programming: intellisense, diagnostics, inline documentation, and type
10467checking.")
10468 (home-page "https://solargraph.org/")
10469 (license license:expat)))
0c558aa9
DNB
10470
10471(define-public ruby-wayback-machine-downloader
10472 (package
10473 (name "ruby-wayback-machine-downloader")
10474 (version "2.2.1")
10475 (source
10476 (origin
10477 (method url-fetch)
10478 (uri (rubygems-uri
10479 "wayback_machine_downloader"
10480 version))
10481 (sha256
10482 (base32
10483 "12kb1qmvmmsaihqab1prn6cmynkn6cgb4vf41mgv22wkcgv5wgk2"))))
10484 (build-system ruby-build-system)
10485 (arguments
10486 '(#:tests? #f)) ; no tests
10487 (synopsis "Download archived websites from the Wayback Machine")
10488 (description
10489 "Wayback Machine Downloader is a command line tool for downloading
10490websites from the Internet Archive's Wayback Machine (archive.org).
10491It allows fine grained control over what to download by specifying
10492which snapshots to consider and what files to include.")
10493 (home-page
10494 "https://github.com/hartator/wayback-machine-downloader")
10495 (license license:expat)))
e6483f8c
MB
10496
10497(define-public ruby-wwtd
10498 (package
10499 (name "ruby-wwtd")
10500 (version "1.4.1")
10501 (home-page "http://github.com/grosser/wwtd")
10502 (source (origin
10503 (method git-fetch)
10504 (uri (git-reference
10505 (url home-page)
10506 (commit (string-append "v" version))))
10507 (file-name (git-file-name name version))
10508 (sha256
10509 (base32
10510 "0gw7vfnbb41cy67yw82zji3jkhfsgmzcgzaszm99ax77y18wclf2"))
10511 (modules '((guix build utils)))
10512 (snippet
10513 '(begin
10514 ;; Remove bundled library.
10515 (delete-file "spec/rake-12.3.0.gem")
10516 #t))))
10517 (build-system ruby-build-system)
10518 (arguments
10519 '(;; XXX: Tests need multiple versions of ruby, wants to run
10520 ;; `bundle install`, etc.
10521 #:tests? #f
10522 #:phases (modify-phases %standard-phases
10523 (replace 'replace-git-ls-files
10524 (lambda _
10525 (substitute* "wwtd.gemspec"
10526 (("git ls-files lib/ bin/`")
10527 "find lib/ bin/ -type f |sort`"))
10528 #t))
10529 (add-before 'check 'remove-version-constraints
10530 (lambda _
10531 (delete-file "Gemfile.lock")
10532 #t))
10533 (replace 'check
10534 (lambda* (#:key tests? #:allow-other-keys)
10535 (if tests?
10536 (invoke "rspec" "spec/")
10537 (format #t "test suite not run~%"))
10538 #t)))))
10539 (native-inputs
10540 `(("ruby-bump" ,ruby-bump)
10541 ("ruby-rspec" ,ruby-rspec)))
10542 (synopsis "Run @file{.travis.yml} files locally")
10543 (description
10544 "WWTD is a @dfn{Travis Simulator} that lets you run test matrices
10545defined in @file{.travis.yml} on your local machine, using @code{rvm},
10546@code{rbenv}, or @code{chruby} to test different versions of Ruby.")
10547 (license license:expat)))