projects/guix·blob wip-digests · refs

11746 lines · 420.3 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014, 2015 Pjotr Prins <[email protected]>
3;;; Copyright © 2014, 2015, 2016, 2017 Ludovic Courtès <[email protected]>
4;;; Copyright © 2014, 2015 Mark H Weaver <[email protected]>
5;;; Copyright © 2014, 2015 David Thompson <[email protected]>
6;;; Copyright © 2015, 2019 Ricardo Wurmus <[email protected]>
7;;; Copyright © 2015, 2016, 2017 Ben Woodcroft <[email protected]>
8;;; Copyright © 2017 Nikita <[email protected]>
9;;; Copyright © 2017, 2019, 2020 Marius Bakke <[email protected]>
10;;; Copyright © 2017, 2018, 2019, 2020 Efraim Flashner <[email protected]>
11;;; Copyright © 2017, 2018, 2020 Tobias Geerinckx-Rice <[email protected]>
12;;; Copyright © 2017 Clément Lassieur <[email protected]>
13;;; Copyright © 2017, 2018, 2019 Christopher Baines <[email protected]>
14;;; Copyright © 2018 Vasile Dumitrascu <[email protected]>
15;;; Copyright © 2018 Alex Vong <[email protected]>
16;;; Copyright © 2019 Pierre Neidhardt <[email protected]>
17;;; Copyright © 2019 Mikhail Kirillov <[email protected]>
18;;; Copyright © 2019 Jelle Licht <[email protected]>
19;;; Copyright © 2019 Brian Leung <[email protected]>
20;;; Copyright © 2019 Collin J. Doering <[email protected]>
21;;; Copyright © 2019 Diego N. Barbato <[email protected]>
22;;; Copyright © 2019 Brett Gilio <[email protected]>
23;;; Copyright © 2020 Maxim Cournoyer <[email protected]>
24;;; Copyright © 2020 Nicolas Goaziou <[email protected]>
25;;; Copyright © 2020 Michael Rohleder <[email protected]>
26;;; Copyright © 2020 Holgr Peters <[email protected]>
27;;;
28;;; This file is part of GNU Guix.
29;;;
30;;; GNU Guix is free software; you can redistribute it and/or modify it
31;;; under the terms of the GNU General Public License as published by
32;;; the Free Software Foundation; either version 3 of the License, or (at
33;;; your option) any later version.
34;;;
35;;; GNU Guix is distributed in the hope that it will be useful, but
36;;; WITHOUT ANY WARRANTY; without even the implied warranty of
37;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
38;;; GNU General Public License for more details.
39;;;
40;;; You should have received a copy of the GNU General Public License
41;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
42
43(define-module (gnu packages ruby)
44 #:use-module ((guix licenses) #:prefix license:)
45 #:use-module (gnu packages)
46 #:use-module (gnu packages base)
47 #:use-module (gnu packages bison)
48 #:use-module (gnu packages c)
49 #:use-module (gnu packages check)
50 #:use-module (gnu packages compression)
51 #:use-module (gnu packages crypto)
52 #:use-module (gnu packages databases)
53 #:use-module (gnu packages dbm)
54 #:use-module (gnu packages rails)
55 #:use-module (gnu packages readline)
56 #:use-module (gnu packages autotools)
57 #:use-module (gnu packages haskell-xyz)
58 #:use-module (gnu packages java)
59 #:use-module (gnu packages libffi)
60 #:use-module (gnu packages libidn)
61 #:use-module (gnu packages linux)
62 #:use-module (gnu packages lsof)
63 #:use-module (gnu packages maths)
64 #:use-module (gnu packages ncurses)
65 #:use-module (gnu packages networking)
66 #:use-module (gnu packages node)
67 #:use-module (gnu packages protobuf)
68 #:use-module (gnu packages python)
69 #:use-module (gnu packages python-xyz)
70 #:use-module (gnu packages ragel)
71 #:use-module (gnu packages rsync)
72 #:use-module (gnu packages sqlite)
73 #:use-module (gnu packages tls)
74 #:use-module (gnu packages version-control)
75 #:use-module (guix packages)
76 #:use-module (guix download)
77 #:use-module (guix git-download)
78 #:use-module (guix utils)
79 #:use-module (guix build-system gnu)
80 #:use-module (gnu packages xml)
81 #:use-module (gnu packages web)
82 #:use-module (guix build-system ruby)
83 #:use-module ((srfi srfi-1) #:select (alist-delete)))
84
85(define %prawn-project-licenses
86 ;; This set of licenses applies to most (all?) components of the Prawn
87 ;; project (it is triple licensed).
88 (list license:ruby
89 license:gpl2+
90 license:gpl3+))
91
92(define-public ruby
93 (package
94 (name "ruby")
95 (version "2.6.5")
96 (source
97 (origin
98 (method url-fetch)
99 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
100 (version-major+minor version)
101 "/ruby-" version ".tar.xz"))
102 (sha256
103 (base32
104 "0qhsw2mr04f3lqinkh557msr35pb5rdaqy4vdxcj91flgxqxmmnm"))
105 (modules '((guix build utils)))
106 (snippet `(begin
107 ;; Remove bundled libffi
108 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
109 #t))))
110 (build-system gnu-build-system)
111 (arguments
112 `(#:test-target "test"
113 #:configure-flags '("--enable-shared") ; dynamic linking
114 #:phases
115 (modify-phases %standard-phases
116 (add-before 'configure 'replace-bin-sh-and-remove-libffi
117 (lambda _
118 (substitute* '("Makefile.in"
119 "ext/pty/pty.c"
120 "io.c"
121 "lib/mkmf.rb"
122 "process.c"
123 "test/rubygems/test_gem_ext_configure_builder.rb"
124 "test/rdoc/test_rdoc_parser.rb"
125 "test/ruby/test_rubyoptions.rb"
126 "test/ruby/test_process.rb"
127 "test/ruby/test_system.rb"
128 "tool/rbinstall.rb")
129 (("/bin/sh") (which "sh")))
130 #t)))))
131 (inputs
132 `(("readline" ,readline)
133 ("openssl" ,openssl)
134 ("libffi" ,libffi)
135 ("gdbm" ,gdbm)))
136 (propagated-inputs
137 `(("zlib" ,zlib)))
138 (native-search-paths
139 (list (search-path-specification
140 (variable "GEM_PATH")
141 (files (list (string-append "lib/ruby/vendor_ruby"))))))
142 (synopsis "Programming language interpreter")
143 (description "Ruby is a dynamic object-oriented programming language with
144a focus on simplicity and productivity.")
145 (home-page "https://www.ruby-lang.org")
146 (license license:ruby)))
147
148(define-public ruby-2.7
149 (package
150 (inherit ruby)
151 (version "2.7.2")
152 (source
153 (origin
154 (method url-fetch)
155 (uri (string-append "https://cache.ruby-lang.org/pub/ruby/"
156 (version-major+minor version)
157 "/ruby-" version ".tar.gz"))
158 (sha256
159 (base32
160 "1m63461mxi3fg4y3bspbgmb0ckbbb1ldgf9xi0piwkpfsk80cmvf"))
161 (modules '((guix build utils)))
162 (snippet `(begin
163 ;; Remove bundled libffi
164 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
165 #t))))
166 (arguments
167 `(#:test-target "test"
168 #:configure-flags '("--enable-shared") ; dynamic linking
169 #:phases
170 (modify-phases %standard-phases
171 (add-before 'configure 'replace-bin-sh-and-remove-libffi
172 (lambda _
173 (substitute* '("configure.ac"
174 "template/Makefile.in"
175 "lib/rubygems/installer.rb"
176 "ext/pty/pty.c"
177 "io.c"
178 "lib/mkmf.rb"
179 "process.c"
180 "test/rubygems/test_gem_ext_configure_builder.rb"
181 "test/rdoc/test_rdoc_parser.rb"
182 "test/ruby/test_rubyoptions.rb"
183 "test/ruby/test_process.rb"
184 "test/ruby/test_system.rb"
185 "tool/rbinstall.rb")
186 (("/bin/sh") (which "sh")))
187 #t)))))
188 (native-inputs
189 `(("autoconf" ,autoconf)))))
190
191(define-public ruby-2.5
192 (package
193 (inherit ruby)
194 (version "2.5.8")
195 (source
196 (origin
197 (method url-fetch)
198 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
199 (version-major+minor version)
200 "/ruby-" version ".tar.xz"))
201 (sha256
202 (base32
203 "0vad5ah1lrdhxsyqr5iqc8c7r7qczpmm76cz8rsf4crimpzv5483"))
204 (modules '((guix build utils)))
205 (snippet `(begin
206 ;; Remove bundled libffi
207 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
208 #t))))))
209
210(define-public ruby-2.4
211 (package
212 (inherit ruby)
213 (version "2.4.10")
214 (source
215 (origin
216 (method url-fetch)
217 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
218 (version-major+minor version)
219 "/ruby-" version ".tar.xz"))
220 (sha256
221 (base32
222 "1prhqlgik1zmw9lakl6hkriqslspw48pvhxff17h7ns42p8qwrnm"))
223 (modules '((guix build utils)))
224 (snippet `(begin
225 ;; Remove bundled libffi
226 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
227 #t))))))
228
229(define-public mruby
230 (package
231 (name "mruby")
232 (version "2.1.2")
233 (source
234 (origin
235 (method git-fetch)
236 (uri (git-reference
237 (url "https://github.com/mruby/mruby")
238 (commit version)))
239 (file-name (git-file-name name version))
240 (sha256
241 (base32
242 "0fhfv8pi7i8jn2vgk2n2rjnbnfa12nhj514v8i4k353n7q4pmkh3"))))
243 (build-system gnu-build-system)
244 (arguments
245 `(#:test-target "test"
246 #:phases
247 (modify-phases %standard-phases
248 (delete 'configure)
249 (add-after 'unpack 'enable-verbose-tests
250 (lambda _
251 (substitute* "Makefile"
252 (("ruby ./minirake" m)
253 (string-append m " --verbose")))
254 #t))
255 (add-after 'unpack 'disable-broken-tests
256 (lambda _
257 (substitute* "mrbgems/mruby-io/test/io.rb"
258 (("assert\\('IO.popen.+$" m)
259 (string-append m "skip \"Hangs in the Guix build environment\"\n"))
260 (("assert\\('IO#isatty.+$" m)
261 (string-append m "skip \"Disable for Guix; there is no /dev/tty\"\n"))
262 ;; This one is really weird. The *expected* output is all wrong.
263 (("assert\\('`cmd`.*" m)
264 (string-append m "skip \"Disable for Guix\"\n"))
265 (("echo foo")
266 (string-append (which "echo") " foo")))
267 #t))
268 ;; There is no install target
269 (replace 'install
270 (lambda* (#:key outputs #:allow-other-keys)
271 (let* ((out (assoc-ref outputs "out"))
272 (bin (string-append out "/bin"))
273 (lib (string-append out "/lib")))
274 (mkdir-p bin)
275 (copy-recursively "build/host/bin" bin)
276 (mkdir-p lib)
277 (copy-recursively "build/host/lib" lib))
278 #t)))))
279 (native-inputs
280 `(("ruby" ,ruby)
281 ("bison" ,bison)))
282 (home-page "https://github.com/mruby/mruby")
283 (synopsis "Lightweight Ruby")
284 (description "mruby is the lightweight implementation of the Ruby
285language. Its syntax is Ruby 1.9 compatible. mruby can be linked and
286embedded within your application.")
287 (license license:expat)))
288
289(define-public ruby-commander
290 (package
291 (name "ruby-commander")
292 (version "4.4.7")
293 (source
294 (origin
295 (method url-fetch)
296 (uri (rubygems-uri "commander" version))
297 (sha256
298 (base32
299 "1pxakz596fjqak3cdbha6iva1dlqis86i3kjrgg6lf3sp8i5vhwg"))))
300 (build-system ruby-build-system)
301 (arguments
302 `(#:test-target "spec"
303 #:phases
304 (modify-phases %standard-phases
305 ;; Don't run or require rubocop, the code linting tool, as this is a
306 ;; bit unnecessary.
307 (add-after 'unpack 'dont-run-rubocop
308 (lambda _
309 (substitute* "Rakefile"
310 ((".*rubocop.*") "")
311 ((".*RuboCop.*") ""))
312 #t)))))
313 (propagated-inputs
314 `(("ruby-highline" ,ruby-highline)))
315 (native-inputs
316 `(("bundler" ,bundler)
317 ("ruby-rspec-core" ,ruby-rspec-core)
318 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
319 ("ruby-rspec-mocks" ,ruby-rspec-mocks)
320 ("ruby-simplecov" ,ruby-simplecov)))
321 (home-page "https://github.com/commander-rb/commander")
322 (synopsis "Library for building Ruby command-line executables")
323 (description
324 "Commander aims to be a complete solution for Ruby command-line
325executables. Commander bridges the gap between other terminal related
326libraries (OptionParser, HighLine), while providing many new features, and an
327elegant API.")
328 (license license:expat)))
329
330(define-public ruby-highline
331 (package
332 (name "ruby-highline")
333 (version "2.0.1")
334 (source
335 (origin
336 (method url-fetch)
337 (uri (rubygems-uri "highline" version))
338 (sha256
339 (base32
340 "0gr6pckj2jayxw1gdgh9193j5jag5zrrqqlrnl4jvcwpyd3sn2zc"))))
341 (build-system ruby-build-system)
342 (arguments
343 `(#:tests? #f)) ;; TODO: NameError: uninitialized constant SPEC
344 (native-inputs
345 `(("bundler" ,bundler)
346 ("ruby-code-statistics" ,ruby-code-statistics)))
347 (synopsis
348 "HighLine helps you build command-line interfaces")
349 (description
350 "HighLine provides a high-level IO library that provides validation,
351type conversion, and more for command-line interfaces. HighLine also includes
352a menu system for providing multiple options to the user.")
353 (home-page "https://github.com/JEG2/highline")
354 (license (list license:gpl2 license:ruby))))
355
356(define-public ruby-hoe
357 (package
358 (name "ruby-hoe")
359 (version "3.21.0")
360 (source (origin
361 (method url-fetch)
362 (uri (rubygems-uri "hoe" version))
363 (sha256
364 (base32
365 "0qid0n56mgsjvq5ksxajv0gb92akky8imwgvw22ajms5g4fd6nf4"))))
366 (build-system ruby-build-system)
367 (arguments
368 '(#:phases
369 (modify-phases %standard-phases
370 ;; One of the tests fails if the SOURCE_DATE_EPOCH environment
371 ;; variable is set, so unset it for the duration of the tests.
372 ;;
373 ;; TestHoe#test_possibly_better
374 ;; [/tmp/guix-build-ruby-hoe-3.20.0.drv-0/gem/test/test_hoe.rb:250]:
375 ;; Expected: 2019-11-12 00:00:00 UTC
376 ;; Actual: 1970-01-01 00:00:00 UTC
377 (add-before 'check 'unset-SOURCE-DATE-EPOCH
378 (lambda _
379 (unsetenv "SOURCE_DATE_EPOCH")
380 #t))
381 (add-after 'check 'set-SOURCE-DATE-EPOCH-again
382 (lambda _
383 (setenv "SOURCE_DATE_EPOCH" "1")
384 #t)))))
385 (synopsis "Ruby project management helper")
386 (description
387 "Hoe is a rake/rubygems helper for project Rakefiles. It helps manage,
388maintain, and release projects and includes a dynamic plug-in system allowing
389for easy extensibility. Hoe ships with plug-ins for all the usual project
390tasks including rdoc generation, testing, packaging, deployment, and
391announcement.")
392 (home-page "https://www.zenspider.com/projects/hoe.html")
393 (license license:expat)))
394
395(define-public ruby-rake-compiler
396 (package
397 (name "ruby-rake-compiler")
398 (version "1.1.0")
399 (source (origin
400 (method url-fetch)
401 (uri (rubygems-uri "rake-compiler" version))
402 (sha256
403 (base32
404 "0l4hg21v0phfrfsc2hilgmwvn2imxr0byqh8dv16bya1s5d3km0q"))))
405 (build-system ruby-build-system)
406 (arguments
407 '(#:tests? #f)) ; needs cucumber
408 (synopsis "Building and packaging helper for Ruby native extensions")
409 (description "Rake-compiler provides a framework for building and
410packaging native C and Java extensions in Ruby.")
411 (home-page "https://github.com/rake-compiler/rake-compiler")
412 (license license:expat)))
413
414(define-public ruby-rsync
415 (package
416 (name "ruby-rsync")
417 (version "1.0.9")
418 (source
419 (origin
420 (method url-fetch)
421 (uri (rubygems-uri "rsync" version))
422 (sha256
423 (base32
424 "0p8b27q1gvxilqfq2528xpwglzcm2myikkjxpqk7mwbwg9r6knxv"))))
425 (build-system ruby-build-system)
426 (arguments
427 '(#:test-target "spec"
428 #:phases
429 (modify-phases %standard-phases
430 (add-after 'unpack 'remove-coveralls-requirement
431 (lambda _
432 (substitute* "spec/spec_helper.rb"
433 (("require 'coveralls'") "")
434 (("Coveralls.wear!") ""))
435 #t)))))
436 (native-inputs
437 `(("bundler" ,bundler)
438 ("rsync" ,rsync)
439 ("ruby-rspec-core" ,ruby-rspec-core)
440 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
441 ("ruby-rspec-mocks" ,ruby-rspec-mocks)))
442 (home-page "https://github.com/jbussdieker/ruby-rsync")
443 (synopsis "Ruby wrapper around rsync")
444 (description
445 "Ruby Rsync is a Ruby library that can synchronize files between remote
446hosts by wrapping the @file{rsync} binary.")
447 (license license:expat)))
448
449(define-public ruby-i18n
450 (package
451 (name "ruby-i18n")
452 (version "1.7.0")
453 (source (origin
454 (method url-fetch)
455 (uri (rubygems-uri "i18n" version))
456 (sha256
457 (base32
458 "0hmypvx9iyc0b4hski7aic2xzm09cg1c7q1qlpnk3k8s5acxzyhl"))))
459 (build-system ruby-build-system)
460 (arguments
461 '(#:tests? #f)) ; no tests
462 (propagated-inputs `(("concurrent-ruby" ,ruby-concurrent)))
463 (synopsis "Internationalization library for Ruby")
464 (description "Ruby i18n is an internationalization and localization
465solution for Ruby programs. It features translation and localization,
466interpolation of values to translations, pluralization, customizable
467transliteration to ASCII, flexible defaults, bulk lookup, lambdas as
468translation data, custom key/scope separator, custom exception handlers, and
469an extensible architecture with a swappable backend.")
470 (home-page "https://github.com/ruby-i18n/i18n")
471 (license license:expat)))
472
473(define-public ruby-iruby
474 (package
475 (name "ruby-iruby")
476 (version "0.3")
477 (source
478 (origin
479 (method url-fetch)
480 (uri (rubygems-uri "iruby" version))
481 (sha256
482 (base32
483 "1wdf2c0x8y6cya0n3y0p3p7b1sxkb2fdavdn2k58rf4rs37s7rzn"))))
484 (build-system ruby-build-system)
485 (arguments
486 ;; TODO: Tests currently fail.
487 ;;
488 ;; Finished in 1.764405s, 1.1335 runs/s, 5.1009 assertions/s.
489 ;;
490 ;; 1) Failure:
491 ;; IntegrationTest#test_interaction [/tmp/guix-build-ruby-iruby-0.3.drv-0/gem/test/integration_test.rb:25]:
492 ;; In [ expected
493 ;;
494 ;; 2 runs, 9 assertions, 1 failures, 0 errors, 0 skips
495 '(#:tests? #f
496 #:phases
497 (modify-phases %standard-phases
498 (add-after 'unpack 'patch-ipython
499 (lambda* (#:key inputs #:allow-other-keys)
500 (substitute* "lib/iruby/command.rb"
501 (("version = `")
502 (string-append
503 "version = `"
504 (assoc-ref inputs "python-ipython")
505 "/bin/"))
506 (("Kernel\\.exec\\('")
507 (string-append
508 "Kernel.exec('"
509 (assoc-ref inputs "python-ipython")
510 "/bin/")))
511 #t)))))
512 (inputs
513 `(("python-ipython" ,python-ipython)))
514 (propagated-inputs
515 `(("ruby-bond" ,ruby-bond)
516 ("ruby-data_uri" ,ruby-data_uri)
517 ("ruby-mimemagic" ,ruby-mimemagic)
518 ("ruby-multi-json" ,ruby-multi-json)
519 ("ruby-cztop" ,ruby-cztop)
520 ;; Optional inputs
521 ("ruby-pry" ,ruby-pry)))
522 (synopsis "Ruby kernel for Jupyter/IPython")
523 (description
524 "This package provides a Ruby kernel for Jupyter/IPython frontends (e.g.
525notebook).")
526 (home-page "https://github.com/SciRuby/iruby")
527 (license license:expat)))
528
529;; RSpec is the dominant testing library for Ruby projects. Even RSpec's
530;; dependencies use RSpec for their test suites! To avoid these circular
531;; dependencies, we disable tests for all of the RSpec-related packages.
532(define-public ruby-rspec-support
533 (package
534 (name "ruby-rspec-support")
535 (version "3.8.0")
536 (source (origin
537 (method url-fetch)
538 (uri (rubygems-uri "rspec-support" version))
539 (sha256
540 (base32
541 "0p3m7drixrlhvj2zpc38b11x145bvm311x6f33jjcxmvcm0wq609"))))
542 (build-system ruby-build-system)
543 (arguments
544 '(#:tests? #f)) ; avoid dependency cycles
545 (synopsis "RSpec support library")
546 (description "Support utilities for RSpec gems.")
547 (home-page "https://github.com/rspec/rspec-support")
548 (license license:expat)))
549
550(define-public ruby-rspec-core
551 (package
552 (name "ruby-rspec-core")
553 (version "3.8.0")
554 (source (origin
555 (method url-fetch)
556 (uri (rubygems-uri "rspec-core" version))
557 (sha256
558 (base32
559 "1p1s5bnbqp3sxk67y0fh0x884jjym527r0vgmhbm81w7aq6b7l4p"))))
560 (build-system ruby-build-system)
561 (arguments
562 '(#:tests? #f)) ; avoid dependency cycles
563 (propagated-inputs
564 `(("ruby-rspec-support" ,ruby-rspec-support)))
565 (synopsis "RSpec core library")
566 (description "Rspec-core provides the RSpec test runner and example
567groups.")
568 (home-page "https://github.com/rspec/rspec-core")
569 (license license:expat)))
570
571(define-public ruby-rspec-core-2
572 (package (inherit ruby-rspec-core)
573 (version "2.14.8")
574 (source (origin
575 (method url-fetch)
576 (uri (rubygems-uri "rspec-core" version))
577 (sha256
578 (base32
579 "0psjy5kdlz3ph39br0m01w65i1ikagnqlg39f8p65jh5q7dz8hwc"))))
580 (propagated-inputs `())))
581
582(define-public ruby-diff-lcs
583 (package
584 (name "ruby-diff-lcs")
585 (version "1.3")
586 (source (origin
587 (method url-fetch)
588 (uri (rubygems-uri "diff-lcs" version))
589 (sha256
590 (base32
591 "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza"))))
592 (build-system ruby-build-system)
593 (arguments
594 '(#:tests? #f)) ; avoid dependency cycles
595 (synopsis "Compute the difference between two Enumerable sequences")
596 (description "Diff::LCS computes the difference between two Enumerable
597sequences using the McIlroy-Hunt longest common subsequence (LCS) algorithm.
598It includes utilities to create a simple HTML diff output format and a
599standard diff-like tool.")
600 (home-page "https://github.com/halostatue/diff-lcs")
601 (license license:expat)))
602
603(define-public ruby-rspec-expectations
604 (package
605 (name "ruby-rspec-expectations")
606 (version "3.8.2")
607 (source (origin
608 (method url-fetch)
609 (uri (rubygems-uri "rspec-expectations" version))
610 (sha256
611 (base32
612 "18l21hy1zdc2pgc2yb17k3n2al1khpfr0z6pijlm852iz6vj0dkm"))))
613 (build-system ruby-build-system)
614 (arguments
615 '(#:tests? #f)) ; avoid dependency cycles
616 (propagated-inputs
617 `(("ruby-rspec-support" ,ruby-rspec-support)
618 ("ruby-diff-lcs" ,ruby-diff-lcs)))
619 (synopsis "RSpec expectations library")
620 (description "Rspec-expectations provides a simple API to express expected
621outcomes of a code example.")
622 (home-page "https://github.com/rspec/rspec-expectations")
623 (license license:expat)))
624
625(define-public ruby-rspec-expectations-2
626 (package (inherit ruby-rspec-expectations)
627 (version "2.14.5")
628 (source (origin
629 (method url-fetch)
630 (uri (rubygems-uri "rspec-expectations" version))
631 (sha256
632 (base32
633 "1ni8kw8kjv76jvwjzi4jba00k3qzj9f8wd94vm6inz0jz3gwjqf9"))))
634 (propagated-inputs
635 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
636
637(define-public ruby-sorcerer
638 (package
639 (name "ruby-sorcerer")
640 (version "2.0.1")
641 (source
642 (origin
643 (method url-fetch)
644 (uri (rubygems-uri "sorcerer" version))
645 (sha256
646 (base32
647 "0d32ha9pp9slpmsm027pkdpbr9vc5jn2m8rl6hwwx6a87m8cr58h"))))
648 (build-system ruby-build-system)
649 (synopsis "Ripper-style abstract syntax tree to Ruby source generator")
650 (description "Sorcerer generates Ruby code from a Ripper-like abstract
651syntax tree (i.e. S-Expressions). Sorcerer is targeted mainly at small
652snippets of Ruby code, expressible in a single line. Longer examples may be
653re-sourced, but they will be rendered in a single-line format.")
654 (home-page "https://github.com/rspec-given/sorcerer")
655 (license license:expat)))
656
657(define-public ruby-given-core
658 (package
659 (name "ruby-given-core")
660 (version "3.8.0")
661 (source
662 (origin
663 (method url-fetch)
664 (uri (rubygems-uri "given_core" version))
665 (sha256
666 (base32
667 "1lzyqllbbv6as3qgwz2007mvy7wy247bgkch9adnmh1zfa73bkrg"))))
668 (build-system ruby-build-system)
669 (arguments '(#:tests? #f)) ;no test suite for the core package
670 (propagated-inputs
671 `(("ruby-sorcerer" ,ruby-sorcerer)))
672 (synopsis "Core abstractions used by rspec-given and minitest-given")
673 (description "Given_core is the basic functionality behind rspec-given and
674minitest-given, extensions that allow the use of Given/When/Then terminology
675when defining specifications.")
676 (home-page "https://github.com/rspec-given/rspec-given")
677 (license license:expat)))
678
679(define-public ruby-rspec-given
680 (package
681 (name "ruby-rspec-given")
682 (version "3.8.0")
683 (source
684 (origin
685 (method url-fetch)
686 (uri (rubygems-uri "rspec-given" version))
687 (sha256
688 (base32
689 "1783bazja10kbha8hk15khvybsq88siyax02cpkk688604h54nji"))))
690 (build-system ruby-build-system)
691 (arguments
692 `(#:test-target "rs"
693 #:phases
694 (modify-phases %standard-phases
695 (add-after 'unpack 'fix-rakefile
696 (lambda _
697 (substitute* '("Rakefile" "rakelib/gemspec.rake")
698 (("require '\\./lib/given/.*") "")
699 (("Given::VERSION") (format #f "~s" ,version))
700 ;; Fix the error: "cannot load such file -- example_helper"
701 (("sh \"rspec")
702 "sh \"rspec -Ilib:examples"))
703 #t))
704 (add-after 'extract-gemspec 'delete-failing-tests
705 ;; See: https://github.com/jimweirich/rspec-given/issues/57.
706 (lambda _
707 (substitute* ".gemspec"
708 (("\"spec/lib/given/natural_assertion_spec.rb\".freeze, ")
709 "")
710 (("\"examples/integration/failing_messages_spec.rb\".freeze, ")
711 ""))
712 (delete-file "spec/lib/given/natural_assertion_spec.rb")
713 (delete-file "examples/integration/failing_messages_spec.rb")
714 #t)))))
715 (native-inputs
716 `(("ruby-rspec" ,ruby-rspec)
717 ("ruby-minitest" ,ruby-minitest)))
718 (propagated-inputs
719 `(("ruby-given-core" ,ruby-given-core)
720 ("ruby-rspec" ,ruby-rspec)))
721 (synopsis "Given/When/Then for RSpec and Minitest")
722 (description "Given is an RSpec extension that allows the use of
723Given/When/Then terminology when defining specifications, in a way similar to
724the Cucumber Gherkin language.")
725 (home-page "https://github.com/rspec-given/rspec-given")
726 (license license:expat)))
727
728(define-public ruby-rspec-its
729 (package
730 (name "ruby-rspec-its")
731 (version "1.3.0")
732 (source
733 (origin
734 (method git-fetch)
735 (uri (git-reference
736 (url "https://github.com/rspec/rspec-its")
737 (commit (string-append "v" version))))
738 (file-name (git-file-name name version))
739 (sha256
740 (base32
741 "02mlsc9d4d1cjj5vahi8v3q8hyn9fyiv8nnlidhgfh186qp20g1p"))))
742 (build-system ruby-build-system)
743 (arguments
744 `(#:test-target "spec"
745 #:phases
746 (modify-phases %standard-phases
747 (add-after 'unpack 'dont-install-gems-from-gemfile
748 (lambda _
749 (substitute* "Gemfile"
750 (("rspec rspec-core rspec-expectations rspec-mocks rspec-support")
751 ""))
752 #t))
753 (add-before 'build 'loosen-ffi-requirement
754 (lambda _
755 ;; Accept any version of ruby-ffi.
756 (substitute* "Gemfile"
757 ((" gem 'ffi', '~> 1\\.9\\.25'")
758 " gem 'ffi'"))
759 #t))
760 (add-before 'build 'remove-unnecessary-dependency-versions-from-gemfile
761 (lambda _
762 (substitute* "rspec-its.gemspec"
763 (("rake.*") "rake'\n")
764 (("spec.add_development_dependency 'cucumber'.*")
765 "spec.add_development_dependency 'cucumber'\n")
766 (("bundler.*") "bundler'\n")
767 (("\"aruba.*") "'aruba'\n"))
768 #t)))))
769 (propagated-inputs
770 `(("ruby-rspec-core" ,ruby-rspec-core)
771 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
772 (native-inputs
773 `(("bundler" ,bundler)
774 ("ruby-cucumber" ,ruby-cucumber)
775 ("ruby-ffi" ,ruby-ffi)
776 ("ruby-aruba" ,ruby-aruba)))
777 (synopsis "RSpec extension that provides the @code{its} method")
778 (description
779 "RSpec::Its provides the its method as a short-hand to specify the expected
780value of an attribute. For example, one can use @code{its(:size)\\{should
781eq(1)\\}}.")
782 (home-page "https://github.com/rspec/rspec-its")
783 (license license:expat)))
784
785;;; This variant is used to break a cycle with ruby-protobuf.
786(define-public ruby-rspec-its-minimal
787 (hidden-package
788 (package
789 (inherit ruby-rspec-its)
790 (arguments
791 (substitute-keyword-arguments (package-arguments ruby-rspec-its)
792 ((#:tests? _ #f) #f)))
793 (native-inputs '()))))
794
795(define-public ruby-rspec-mocks
796 (package
797 (name "ruby-rspec-mocks")
798 (version "3.8.0")
799 (source (origin
800 (method url-fetch)
801 (uri (rubygems-uri "rspec-mocks" version))
802 (sha256
803 (base32
804 "06y508cjqycb4yfhxmb3nxn0v9xqf17qbd46l1dh4xhncinr4fyp"))))
805 (build-system ruby-build-system)
806 (arguments
807 '(#:tests? #f)) ; avoid dependency cycles
808 (propagated-inputs
809 `(("ruby-rspec-support" ,ruby-rspec-support)
810 ("ruby-diff-lcs" ,ruby-diff-lcs)))
811 (synopsis "RSpec stubbing and mocking library")
812 (description "Rspec-mocks provides RSpec's \"test double\" framework, with
813support for stubbing and mocking.")
814 (home-page "https://github.com/rspec/rspec-mocks")
815 (license license:expat)))
816
817(define-public ruby-rspec-mocks-2
818 (package (inherit ruby-rspec-mocks)
819 (version "2.14.6")
820 (source (origin
821 (method url-fetch)
822 (uri (rubygems-uri "rspec-mocks" version))
823 (sha256
824 (base32
825 "1fwsmijd6w6cmqyh4ky2nq89jrpzh56hzmndx9wgkmdgfhfakv30"))))
826 (propagated-inputs
827 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
828
829(define-public ruby-rspec-rerun
830 (package
831 (name "ruby-rspec-rerun")
832 (version "1.1.0")
833 (source
834 (origin
835 (method url-fetch)
836 (uri (rubygems-uri "rspec-rerun" version))
837 (sha256
838 (base32
839 "1gy7znkcaqhpccfnk2nvaqbsvgxy3q57cmjwkl9fi1zabaq5lbkj"))))
840 (build-system ruby-build-system)
841 (arguments
842 '(;; No included tests
843 #:tests? #f))
844 (propagated-inputs `(("ruby-rspec" ,ruby-rspec)))
845 (synopsis "Track failed RSpec tests to re-run them")
846 (description
847 "This package provides an automated way to track, and then re-run failed
848RSpec tests.")
849 (home-page "https://github.com/dblock/rspec-rerun")
850 (license license:expat)))
851
852(define-public ruby-rspec-wait
853 (package
854 (name "ruby-rspec-wait")
855 (version "0.0.9")
856 (source
857 (origin
858 (method url-fetch)
859 (uri (rubygems-uri "rspec-wait" version))
860 (sha256
861 (base32
862 "0gvj1bp5ccx001dyvcgk2j49s5sl6vs9fdaqqb08z3bd1554hsww"))))
863 (build-system ruby-build-system)
864 (arguments
865 '(#:phases
866 (modify-phases %standard-phases
867 (replace 'check
868 (lambda _
869 (invoke "rake" "spec"))))))
870 (native-inputs
871 `(("bundler" ,bundler)))
872 (propagated-inputs
873 `(("ruby-rspec" ,ruby-rspec)))
874 (home-page "https://github.com/laserlemon/rspec-wait")
875 (synopsis "Wait for conditions in RSpec")
876 (description
877 "RSpec::Wait strives to make it easier to test asynchronous or slow
878interactions.")
879 (license license:expat)))
880
881(define-public ruby-rspec
882 (package
883 (name "ruby-rspec")
884 (version "3.8.0")
885 (source (origin
886 (method url-fetch)
887 (uri (rubygems-uri "rspec" version))
888 (sha256
889 (base32
890 "15ppasvb9qrscwlyjz67ppw1lnxiqnkzx5vkx1bd8x5n3dhikxc3"))))
891 (build-system ruby-build-system)
892 (arguments
893 '(#:tests? #f)) ; avoid dependency cycles
894 (propagated-inputs
895 `(("ruby-rspec-core" ,ruby-rspec-core)
896 ("ruby-rspec-mocks" ,ruby-rspec-mocks)
897 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
898 (synopsis "Behavior-driven development framework for Ruby")
899 (description "RSpec is a behavior-driven development (BDD) framework for
900Ruby. This meta-package includes the RSpec test runner, along with the
901expectations and mocks frameworks.")
902 (home-page "https://rspec.info/")
903 (license license:expat)))
904
905(define-public ruby-rspec-2
906 (package (inherit ruby-rspec)
907 (version "2.14.1")
908 (source (origin
909 (method url-fetch)
910 (uri (rubygems-uri "rspec" version))
911 (sha256
912 (base32
913 "134y4wzk1prninb5a0bhxgm30kqfzl8dg06af4js5ylnhv2wd7sg"))))
914 (propagated-inputs
915 `(("ruby-rspec-core" ,ruby-rspec-core-2)
916 ("ruby-rspec-mocks" ,ruby-rspec-mocks-2)
917 ("ruby-rspec-expectations" ,ruby-rspec-expectations-2)))))
918
919;; Bundler is yet another source of circular dependencies, so we must disable
920;; its test suite as well.
921(define-public bundler
922 (package
923 (name "bundler")
924 (version "2.1.4")
925 (source (origin
926 (method url-fetch)
927 (uri (rubygems-uri "bundler" version))
928 (sha256
929 (base32
930 "12glbb1357x91fvd004jgkw7ihlkpc9dwr349pd7j83isqhls0ah"))))
931 (build-system ruby-build-system)
932 (arguments
933 '(#:tests? #f)) ; avoid dependency cycles
934 (synopsis "Ruby gem bundler")
935 (description "Bundler automatically downloads and installs a list of gems
936specified in a \"Gemfile\", as well as their dependencies.")
937 (home-page "https://bundler.io/")
938 (license license:expat)))
939
940(define-public ruby-builder
941 (package
942 (name "ruby-builder")
943 (version "3.2.3")
944 (source (origin
945 (method url-fetch)
946 (uri (rubygems-uri "builder" version))
947 (sha256
948 (base32
949 "0qibi5s67lpdv1wgcj66wcymcr04q6j4mzws6a479n0mlrmh5wr1"))))
950 (build-system ruby-build-system)
951 (arguments
952 `(#:phases
953 (modify-phases %standard-phases
954 (add-after 'unpack 'do-not-use-rvm
955 (lambda _
956 (substitute* "rakelib/tags.rake"
957 (("RVM_GEMDIR = .*") "RVM_GEMDIR = 'no-rvm-please'\n"))
958 #t)))))
959 (synopsis "Ruby library to create structured data")
960 (description "Builder provides a number of builder objects that make it
961easy to create structured data. Currently the following builder objects are
962supported: XML Markup and XML Events.")
963 (home-page "https://github.com/jimweirich/builder")
964 (license license:expat)))
965
966(define-public ruby-bump
967 (package
968 (name "ruby-bump")
969 (version "0.7.0")
970 (source
971 (origin
972 (method url-fetch)
973 (uri (rubygems-uri "bump" version))
974 (sha256
975 (base32
976 "1xinbr9rzh6cj75x24niwgqcnbhdxc68a8bc41lk8xv6fd906fym"))))
977 (build-system ruby-build-system)
978 (arguments
979 '(;; No included tests
980 #:tests? #f))
981 (synopsis "Tool for working with Rubygems")
982 (description
983 "Bump provides commands to manage Rubygem versioning, updating to the
984next patch version for example.")
985 (home-page "https://github.com/gregorym/bump")
986 (license license:expat)))
987
988(define-public ruby-rjb
989 (package
990 (name "ruby-rjb")
991 (version "1.5.5")
992 (source (origin
993 (method url-fetch)
994 (uri (rubygems-uri "rjb" version))
995 (sha256
996 (base32
997 "1ppj8rbicj3w0nhh7f73mflq19yd7pzdzkh2a91hcvphriy5b0ca"))))
998 (build-system ruby-build-system)
999 (arguments
1000 `(#:tests? #f ; no rakefile
1001 #:phases
1002 (modify-phases %standard-phases
1003 (add-before 'build 'set-java-home
1004 (lambda* (#:key inputs #:allow-other-keys)
1005 (setenv "JAVA_HOME" (assoc-ref inputs "jdk"))
1006 #t)))))
1007 (native-inputs
1008 `(("jdk" ,icedtea "jdk")))
1009 (synopsis "Ruby-to-Java bridge using the Java Native Interface")
1010 (description "RJB is a bridge program that connects Ruby and Java via the
1011Java Native Interface.")
1012 (home-page "https://www.artonx.org/collabo/backyard/?RubyJavaBridge")
1013 (license license:lgpl2.1+)))
1014
1015(define-public ruby-log4r
1016 (package
1017 (name "ruby-log4r")
1018 (version "1.1.10")
1019 (source
1020 (origin
1021 (method url-fetch)
1022 (uri (rubygems-uri "log4r" version))
1023 (sha256
1024 (base32
1025 "0ri90q0frfmigkirqv5ihyrj59xm8pq5zcmf156cbdv4r4l2jicv"))))
1026 (build-system ruby-build-system)
1027 (arguments
1028 '(#:tests? #f)) ; no Rakefile in gem
1029 (synopsis "Flexible logging library for Ruby")
1030 (description "Comprehensive and flexible logging library written
1031in Ruby for use in Ruby programs. It features a hierarchical logging
1032system of any number of levels, custom level names, logger
1033inheritance, multiple output destinations per log event, execution
1034tracing, custom formatting, thread safteyness, XML and YAML
1035configuration, and more.")
1036 (home-page "http://log4r.rubyforge.org/")
1037 (license license:bsd-3)))
1038
1039(define-public ruby-atoulme-antwrap
1040 (package
1041 (name "ruby-atoulme-antwrap")
1042 (version "0.7.5")
1043 (source (origin
1044 (method url-fetch)
1045 (uri (rubygems-uri "atoulme-Antwrap" version))
1046 (sha256
1047 (base32
1048 "05s3iw44lqa81f8nfy5f0xjj808600h82zb9bsh46b9kcq2w2kmz"))))
1049 (build-system ruby-build-system)
1050 ;; Test data required for most of the tests are not included.
1051 (arguments `(#:tests? #f))
1052 (native-inputs
1053 `(("ruby-hoe" ,ruby-hoe)))
1054 (inputs
1055 `(("ruby-rjb" ,ruby-rjb)))
1056 (synopsis "Ruby wrapper for the Ant build tool")
1057 (description "Antwrap is a Ruby module that wraps the Apache Ant build
1058tool. Antwrap can be used to invoke Ant tasks from a Ruby or a JRuby
1059script.")
1060 (home-page "http://rubyforge.org/projects/antwrap/")
1061 (license license:expat)))
1062
1063(define-public ruby-atoulme-saikuro
1064 (package
1065 (name "ruby-atoulme-saikuro")
1066 (version "1.2.1")
1067 (source (origin
1068 (method url-fetch)
1069 (uri (rubygems-uri "atoulme-Saikuro" version))
1070 (sha256
1071 (base32
1072 "0kvd2nsxffbza61d3q4j94wrbnbv50r1zy3a7q26f6k706fw1f19"))))
1073 (build-system ruby-build-system)
1074 ;; FIXME: There are no unit tests. The tests are demonstrations of the
1075 ;; "saikuro" tool.
1076 (arguments `(#:tests? #f))
1077 (synopsis "Cyclomatic complexity analyzer")
1078 (description "Saikuro is a Ruby cyclomatic complexity analyzer. When
1079given Ruby source code Saikuro will generate a report listing the cyclomatic
1080complexity of each method found. In addition, Saikuro counts the number of
1081lines per method and can generate a listing of the number of tokens on each
1082line of code.")
1083 (home-page "http://www.github.com/atoulme/Saikuro")
1084 ;; File headers contain the BSD-3 license and the README.rdoc says that
1085 ;; "Saikuro uses the BSD license", but the LICENSE file contains the text
1086 ;; of the Expat license.
1087 (license license:bsd-3)))
1088
1089(define-public ruby-pandoc-ruby
1090 (package
1091 (name "ruby-pandoc-ruby")
1092 (version "2.1.4")
1093 (source
1094 (origin
1095 (method git-fetch) ;the gem lacks many test files
1096 (uri (git-reference
1097 (url "https://github.com/xwmx/pandoc-ruby")
1098 (commit version)))
1099 (file-name (git-file-name name version))
1100 (sha256
1101 (base32
1102 "03a11clhycyn0jhc7g9davpqd83sn60jqwjy1y145ag9sq6sp935"))))
1103 (build-system ruby-build-system)
1104 (arguments
1105 `(#:phases
1106 (modify-phases %standard-phases
1107 (add-after 'unpack 'disable-failing-tests
1108 ;; TODO: Remove this phase after ghc-pandoc gets upgraded to 2.9.2+
1109 ;; (see: https://github.com/xwmx/pandoc-ruby/issues/39).
1110 (lambda _
1111 (substitute* "test/test_conversions.rb"
1112 (("next if from == to.*" all)
1113 (string-append
1114 all
1115 " next if ['plain', 'beamer'].include? to\n")))
1116 #t))
1117 (add-after 'unpack 'patch-pandoc-path
1118 (lambda* (#:key inputs #:allow-other-keys)
1119 (let ((pandoc (string-append (assoc-ref inputs "pandoc")
1120 "/bin/pandoc")))
1121 (substitute* "lib/pandoc-ruby.rb"
1122 (("@@pandoc_path = 'pandoc'")
1123 (format #f "@@pandoc_path = '~a'" pandoc)))
1124 (substitute* "test/test_pandoc_ruby.rb"
1125 (("('|\")pandoc" _ quote)
1126 (string-append quote pandoc))
1127 (("\\^pandoc")
1128 ".*pandoc"))
1129 #t)))
1130 (add-after 'extract-gemspec 'remove-Gemfile.lock
1131 (lambda _
1132 (delete-file "Gemfile.lock")
1133 (substitute* "pandoc-ruby.gemspec"
1134 (("Gemfile\\.lock") ""))
1135 #t)))))
1136 (native-inputs
1137 `(("ruby-mocha" ,ruby-mocha)))
1138 (inputs
1139 `(("pandoc" ,pandoc)))
1140 (synopsis "Ruby wrapper for Pandoc")
1141 (description "PandocRuby is a wrapper for Pandoc, a Haskell library with
1142command line tools for converting one markup format to another. Pandoc can
1143convert documents from a variety of formats including markdown,
1144reStructuredText, textile, HTML, DocBook, LaTeX, and MediaWiki markup to a
1145variety of other formats, including markdown, reStructuredText, HTML, LaTeX,
1146ConTeXt, PDF, RTF, DocBook XML, OpenDocument XML, ODT, GNU Texinfo, MediaWiki
1147markup, groff man pages, HTML slide shows, EPUB, Microsoft Word docx, and
1148more.")
1149 (home-page "https://github.com/xwmx/pandoc-ruby")
1150 (license license:expat)))
1151
1152(define-public ruby-slim
1153 (package
1154 (name "ruby-slim")
1155 (version "4.1.0")
1156 (source
1157 (origin
1158 (method url-fetch)
1159 (uri (rubygems-uri "slim" version))
1160 (sha256
1161 (base32
1162 "0gjx30g84c82qzg32bd7giscvb4206v7mvg56kc839w9wjagn36n"))))
1163 (build-system ruby-build-system)
1164 (arguments
1165 `(#:phases
1166 (modify-phases %standard-phases
1167 ;; See: https://github.com/slim-template/slim/issues/857 and
1168 ;; https://github.com/slim-template/slim/issues/858.
1169 (add-after 'unpack 'skip-broken-tests
1170 (lambda _
1171 (substitute* "test/core/test_embedded_engines.rb"
1172 (("def test_render_with_markdown")
1173 "def skipped_test_render_with_markdown"))
1174 (substitute* "test/translator/test_translator.rb"
1175 (("raise (\"Missing test for.*)" _ tail)
1176 (string-append "print " tail)))
1177 #t))
1178 ;; See: https://salsa.debian.org/ruby-team/ruby-slim/-/commit/
1179 ;; 824862bd99d1675bc699d8fc71ba965a785c1f44.
1180 (add-after 'unpack 'prevent-bundler-interference
1181 (lambda _
1182 (substitute* "Rakefile"
1183 (("require 'bundler/setup'") "nil")
1184 (("Bundler::GemHelper\\.install_tasks") "nil"))
1185 #t)))))
1186 (native-inputs
1187 `(("ruby-rack-test" ,ruby-rack-test)
1188 ("ruby-sinatra" ,ruby-sinatra)))
1189 (propagated-inputs
1190 `(("ruby-temple" ,ruby-temple)
1191 ("ruby-tilt" ,ruby-tilt)))
1192 (synopsis "Minimalist template language for Ruby")
1193 (description "Slim is a template language for Ruby that aims to reduce the
1194syntax to the minimum while remaining clear.")
1195 (home-page "http://slim-lang.com/")
1196 (license license:expat)))
1197
1198(define-public ruby-asciidoctor
1199 (package
1200 (name "ruby-asciidoctor")
1201 (version "2.0.10")
1202 (source
1203 (origin
1204 (method git-fetch) ;the gem release lacks a Rakefile
1205 (uri (git-reference
1206 (url "https://github.com/asciidoctor/asciidoctor")
1207 (commit (string-append "v" version))))
1208 (file-name (git-file-name name version))
1209 (sha256
1210 (base32
1211 "0jaxpnsdnx3qyjw5p2lsx1swny12q1i2vxw2kgdp4vlsyjv95z95"))))
1212 (build-system ruby-build-system)
1213 (arguments
1214 `(#:test-target "test:all"
1215 #:phases
1216 (modify-phases %standard-phases
1217 (replace 'replace-git-ls-files
1218 (lambda _
1219 ;; TODO: Remove after the fix of using 'cut' to better mimic the
1220 ;; git ls-files output is merged in ruby-build-system.
1221 (substitute* "asciidoctor.gemspec"
1222 (("`git ls-files -z`")
1223 "`find . -type f -print0 |sort -z|cut -zc3-`"))
1224 #t))
1225 (add-after 'extract-gemspec 'strip-version-requirements
1226 (lambda _
1227 (delete-file "Gemfile")
1228 (substitute* "asciidoctor.gemspec"
1229 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
1230 (string-append stripped "\n")))
1231 #t)))))
1232 (native-inputs
1233 `(("ruby-erubis" ,ruby-erubis)
1234 ("ruby-minitest" ,ruby-minitest)
1235 ("ruby-nokogiri" ,ruby-nokogiri)
1236 ("ruby-asciimath" ,ruby-asciimath)
1237 ("ruby-coderay" ,ruby-coderay)
1238 ("ruby-cucumber" ,ruby-cucumber)
1239 ("ruby-haml" ,ruby-haml)
1240 ("ruby-rouge" ,ruby-rouge)
1241 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
1242 ("ruby-simplecov" ,ruby-simplecov)
1243 ("ruby-slim" ,ruby-slim)
1244 ("ruby-tilt" ,ruby-tilt)))
1245 (synopsis "Converter from AsciiDoc content to other formats")
1246 (description "Asciidoctor is a text processor and publishing toolchain for
1247converting AsciiDoc content to HTML5, DocBook 5 (or 4.5), PDF, and other
1248formats.")
1249 (home-page "https://asciidoctor.org")
1250 (license license:expat)))
1251
1252(define-public ruby-prawn-icon
1253 (package
1254 (name "ruby-prawn-icon")
1255 (version "2.5.0")
1256 (source
1257 (origin
1258 (method url-fetch)
1259 (uri (rubygems-uri "prawn-icon" version))
1260 (sha256
1261 (base32
1262 "1ivkdf8rdf92hhy97vbmc2a4w97vcvqd58jcj4z9hz3hfsb1526w"))))
1263 (build-system ruby-build-system)
1264 (arguments
1265 `(#:test-target "spec"
1266 #:phases (modify-phases %standard-phases
1267 (add-after 'unpack 'remove-unnecessary-dependencies
1268 (lambda _
1269 (substitute* '("Rakefile" "spec/spec_helper.rb")
1270 ((".*[Bb]undler.*") "")
1271 (("^require 'rubocop.*") "")
1272 (("^RuboCop.*") ""))
1273 #t)))))
1274 (native-inputs
1275 `(("ruby-pdf-inspector" ,ruby-pdf-inspector)
1276 ("ruby-pdf-reader" ,ruby-pdf-reader)
1277 ("ruby-rspec" ,ruby-rspec)
1278 ("ruby-simplecov" ,ruby-simplecov)))
1279 (propagated-inputs
1280 `(("ruby-prawn" ,ruby-prawn)))
1281 (synopsis "Icon fonts for use with the Prawn PDF toolkit")
1282 (description "@code{Prawn::Icon} provides various icon fonts including
1283FontAwesome, PaymentFont and Foundation Icons for use with the Prawn PDF
1284toolkit.")
1285 (home-page "https://github.com/jessedoyle/prawn-icon/")
1286 (license %prawn-project-licenses)))
1287
1288(define-public ruby-css-parser
1289 (package
1290 (name "ruby-css-parser")
1291 (version "1.7.1")
1292 (source
1293 (origin
1294 (method url-fetch)
1295 (uri (rubygems-uri "css_parser" version))
1296 (sha256
1297 (base32
1298 "04c4dl8cm5rjr50k9qa6yl9r05fk9zcb1zxh0y0cdahxlsgcydfw"))))
1299 (build-system ruby-build-system)
1300 (arguments `(#:tests? #f)) ;gem doesn't ship with test suite
1301 (propagated-inputs
1302 `(("ruby-addressable" ,ruby-addressable)))
1303 (synopsis "Ruby Cascading Style Sheets (CSS) parser")
1304 (description "This package allows loading, parsing and cascading Cascading
1305Style Sheets (CSS) rule sets in Ruby.")
1306 (home-page "https://github.com/premailer/css_parser")
1307 (license license:expat)))
1308
1309(define-public ruby-prawn-svg
1310 (package
1311 (name "ruby-prawn-svg")
1312 (version "0.30.0")
1313 (source
1314 (origin
1315 (method url-fetch)
1316 (uri (rubygems-uri "prawn-svg" version))
1317 (sha256
1318 (base32
1319 "0df3l49cy3xpwi0b73hmi2ykbjg9kjwrvhk0k3z7qhh5ghmmrn77"))))
1320 (build-system ruby-build-system)
1321 (arguments
1322 `(#:phases (modify-phases %standard-phases
1323 (add-after 'unpack 'do-not-use-bundler
1324 (lambda _
1325 (substitute* "spec/spec_helper.rb"
1326 ((".*[Bb]undler.*") ""))
1327 #t))
1328 (replace 'check
1329 (lambda* (#:key tests? #:allow-other-keys)
1330 (when tests?
1331 (invoke "rspec" "-Ilib" "-rprawn-svg"))
1332 #t)))))
1333 (native-inputs
1334 `(("ruby-rspec" ,ruby-rspec)))
1335 (propagated-inputs
1336 `(("ruby-css-parser" ,ruby-css-parser)
1337 ("ruby-prawn" ,ruby-prawn)))
1338 (synopsis "SVG renderer for the Prawn PDF library")
1339 (description "This library allows rendering Scalable Vector Graphics (SVG)
1340graphics directly into a Portable Document Format (PDF) document using the
1341Prawn module.")
1342 (home-page "https://github.com/mogest/prawn-svg")
1343 (license license:expat)))
1344
1345(define-public ruby-prawn-templates
1346 (package
1347 (name "ruby-prawn-templates")
1348 (version "0.1.2")
1349 (source
1350 (origin
1351 (method git-fetch)
1352 (uri (git-reference
1353 (url "https://github.com/prawnpdf/prawn-templates")
1354 (commit version)))
1355 (file-name (git-file-name name version))
1356 (sha256
1357 (base32
1358 "0wll54wxxwixpwazfn4ffbqvqbfrl01cfsv8y11vnlzy7isx5xvl"))))
1359 (build-system ruby-build-system)
1360 (arguments
1361 `(#:phases (modify-phases %standard-phases
1362 (add-after 'unpack 'do-not-use-bundler
1363 (lambda _
1364 (substitute* "spec/spec_helper.rb"
1365 ((".*[Bb]undler.*") ""))
1366 #t))
1367 (replace 'check
1368 (lambda* (#:key tests? #:allow-other-keys)
1369 (when tests?
1370 (invoke "rspec"))
1371 #t)))))
1372 (native-inputs
1373 `(("ruby-pdf-inspector" ,ruby-pdf-inspector)
1374 ("ruby-rspec" ,ruby-rspec)))
1375 (propagated-inputs
1376 `(("ruby-pdf-reader" ,ruby-pdf-reader)
1377 ("ruby-prawn" ,ruby-prawn)))
1378 (synopsis "Prawn extension to include or combine PDF documents")
1379 (description "This @strong{unmaintained} package provides a Prawn
1380extension that allows including other Portable Document Format (PDF) documents
1381as background or combining several PDF documents into one. This functionality
1382used to be part of Prawn itself, but was extracted from Prawn 0.15.0 because
1383of its many longstanding issues.")
1384 (home-page "https://github.com/prawnpdf/prawn-templates")
1385 (license %prawn-project-licenses)))
1386
1387(define-public ruby-polyglot
1388 (package
1389 (name "ruby-polyglot")
1390 (version "0.3.5")
1391 (source
1392 (origin
1393 (method url-fetch)
1394 (uri (rubygems-uri "polyglot" version))
1395 (sha256
1396 (base32
1397 "1bqnxwyip623d8pr29rg6m8r0hdg08fpr2yb74f46rn1wgsnxmjr"))))
1398 (build-system ruby-build-system)
1399 (arguments `(#:tests? #f)) ;no test suite
1400 (synopsis "Augment @code{require} to load non-Ruby file types")
1401 (description "The Polyglot library allows a Ruby module to register a
1402loader for the file type associated with a filename extension, and it augments
1403@code{require} to find and load matching files.")
1404 (home-page "https://github.com/cjheath/polyglot")
1405 (license license:expat)))
1406
1407(define-public ruby-treetop
1408 (package
1409 (name "ruby-treetop")
1410 (version "1.6.10")
1411 (source
1412 (origin
1413 (method git-fetch) ;no test suite in distributed gem
1414 (uri (git-reference
1415 (url "https://github.com/cjheath/treetop")
1416 (commit (string-append "v" version))))
1417 (file-name (git-file-name name version))
1418 (sha256
1419 (base32
1420 "1dmk94z6ivhrz5hsq68vl5vgydhkz89n394rha1ymddw3rymbfcv"))))
1421 (build-system ruby-build-system)
1422 (arguments
1423 `(#:test-target "spec"
1424 #:phases
1425 (modify-phases %standard-phases
1426 (replace 'replace-git-ls-files
1427 (lambda _
1428 ;; TODO: Remove after the fix of using 'cut' to better mimic the
1429 ;; git ls-files output is merged in ruby-build-system.
1430 (substitute* "treetop.gemspec"
1431 (("`git ls-files -z`")
1432 "`find . -type f -print0 |sort -z|cut -zc3-`"))
1433 #t)))))
1434 (native-inputs
1435 `(("ruby-activesupport" ,ruby-activesupport)
1436 ("ruby-rr" ,ruby-rr)
1437 ("ruby-rspec" ,ruby-rspec)))
1438 (propagated-inputs
1439 `(("ruby-polyglot" ,ruby-polyglot)))
1440 (synopsis "Ruby-based parsing DSL based on parsing expression grammars")
1441 (description "This package provides a Ruby-based Parsing Expression
1442Grammar (PEG) parser generator Domain Specific Language (DSL).")
1443 (home-page "https://github.com/cjheath/treetop")
1444 (license license:expat)))
1445
1446(define-public ruby-rubocop-performance
1447 (package
1448 (name "ruby-rubocop-performance")
1449 (version "1.7.1")
1450 (source
1451 (origin
1452 (method url-fetch)
1453 (uri (rubygems-uri "rubocop-performance" version))
1454 (sha256
1455 (base32
1456 "04r8d4x62ygv17spvz9yyfxbmbf8qxwhijs0xycfvzr0q4pyg9sw"))))
1457 (build-system ruby-build-system)
1458 (arguments
1459 `(#:tests? #f)) ;no test suite in the distributed gem
1460 (propagated-inputs
1461 `(("ruby-rubocop" ,ruby-rubocop)))
1462 (synopsis "Performance optimizations checkers for Ruby code")
1463 (description "This package provides a collection of RuboCop cops to check
1464for performance optimizations in Ruby code.")
1465 (home-page "https://docs.rubocop.org/rubocop-performance/")
1466 (license license:expat)))
1467
1468(define-public ruby-gimme
1469 (let ((revision "1")
1470 (commit "4e71f0236f1271871916dd403261d26533db34c0"))
1471 (package
1472 (name "ruby-gimme")
1473 (version (git-version "0.5.0" revision commit))
1474 (source
1475 (origin
1476 (method git-fetch)
1477 (uri (git-reference
1478 (url "https://github.com/searls/gimme")
1479 (commit commit)))
1480 (file-name (git-file-name name version))
1481 (sha256
1482 (base32
1483 "0hrd32ygvf3i7h47ak8f623cz8ns9q7g60nnnvvlnywbggjaz3h6"))))
1484 (build-system ruby-build-system)
1485 (native-inputs
1486 `(("ruby-coveralls" ,ruby-coveralls)
1487 ("ruby-cucumber" ,ruby-cucumber)
1488 ("ruby-pry" ,ruby-pry)
1489 ("ruby-simplecov" ,ruby-simplecov)
1490 ("ruby-rspec-given" ,ruby-rspec-given)))
1491 (arguments
1492 `(;; The cucumber task fails with error: "index 3 out of matches
1493 ;; (IndexError)", apparently due to our newer Cucumber version.
1494 ;; TODO: Try the "default" task with a future release.
1495 #:test-target "spec"
1496 #:phases
1497 (modify-phases %standard-phases
1498 (add-after 'extract-gemspec 'prepare-for-tests
1499 (lambda _
1500 ;; Delete failing tests (possibly due to our newer rspec
1501 ;; version).
1502 (delete-file "spec/gimme/gives_class_methods_spec.rb")
1503 (delete-file "spec/gimme/rspec_adapter_spec.rb")
1504 (delete-file "spec/gimme/verifies_class_methods_spec.rb")
1505 ;; Fix duplicate version requirements and de-register files.
1506 (delete-file "Gemfile")
1507 (delete-file "Gemfile.lock")
1508 (substitute* "gimme.gemspec"
1509 ((".*\"Gemfile\".*") "")
1510 ((".*\"Gemfile\\.lock\",.*") "")
1511 ((".*(rspec|cucumber).*\">= 0\".*") "")
1512 (("\"spec/gimme/gives_class_methods_spec.rb\",") "")
1513 (("\"spec/gimme/rspec_adapter_spec.rb\",") "")
1514 (("\"spec/gimme/verifies_class_methods_spec.rb\",") "")
1515 ;; All of these gems relate to development, and are
1516 ;; unnecessary when running the tests.
1517 ((".*(add|gem).*guard-.*") "")
1518 ((".*(add|gem).*jeweler.*") "")
1519 ((".*(add|gem).*pry.*") "")
1520 ((".*(add|gem).*growl.*") "")
1521 ((".*(add|gem).*rb-fsevent.*") ""))
1522 #t)))))
1523 (synopsis "Lightweight test double library for Ruby")
1524 (description "Gimme is a very lightweight test double library for Ruby,
1525based on Mockito (a mocking framework for Java). It is an opinionated (but
1526not noisy) means to facilitate test-driving by enabling the authors to specify
1527only what they care about.")
1528 (home-page "https://github.com/searls/gimme")
1529 (license license:expat))))
1530
1531(define-public ruby-standard
1532 (package
1533 (name "ruby-standard")
1534 (version "0.4.7")
1535 (source
1536 (origin
1537 (method git-fetch) ;no test suite in distributed gem
1538 (uri (git-reference
1539 (url "https://github.com/testdouble/standard")
1540 (commit (string-append "v" version))))
1541 (file-name (git-file-name name version))
1542 (sha256
1543 (base32
1544 "0ylx0lm2pbbgr5h7fban592w96bl3wxmvfcpcdfrhkxnpg5kiwgv"))))
1545 (build-system ruby-build-system)
1546 (arguments
1547 ;; TODO: the tests are currently broken due to using a newer Rubocop.
1548 `(#:tests? #f
1549 #:phases
1550 (modify-phases %standard-phases
1551 (add-after 'unpack 'relax-version-requiremens
1552 (lambda _
1553 (delete-file "Gemfile")
1554 (delete-file "Gemfile.lock")
1555 #t))
1556 (replace 'replace-git-ls-files
1557 (lambda _
1558 ;; TODO: Remove after the fix of using 'cut' to better mimic the
1559 ;; git ls-files output is merged in ruby-build-system.
1560 (substitute* "standard.gemspec"
1561 (("`git ls-files -z`")
1562 "`find . -type f -not -regex '.*\\.gem$' -print0 \
1563|sort -z|cut -zc3-`"))
1564 #t)))))
1565 (native-inputs
1566 `(("ruby-gimme" ,ruby-gimme)
1567 ("ruby-pry" ,ruby-pry)
1568 ("ruby-simplecov" ,ruby-simplecov)))
1569 (propagated-inputs
1570 `(("ruby-rubocop" ,ruby-rubocop)
1571 ("ruby-rubocop-performance" ,ruby-rubocop-performance)))
1572 (synopsis "Ruby Style Guide, with linter & automatic code fixer")
1573 (description "Standard is a port of StandardJS. Like StandardJS, it aims
1574to save time in the following ways:
1575@itemize
1576@item No configuration.
1577@item Automatically format code.
1578@item Catch style issues and programmer errors early.
1579@end itemize")
1580 (home-page "https://github.com/testdouble/standard")
1581 (license license:expat)))
1582
1583(define-public ruby-chunky-png
1584 (package
1585 (name "ruby-chunky-png")
1586 (version "1.3.14")
1587 (source
1588 (origin
1589 (method git-fetch)
1590 (uri (git-reference
1591 (url "https://github.com/wvanbergen/chunky_png")
1592 (commit (string-append "v" version))))
1593 (file-name (git-file-name name version))
1594 (sha256
1595 (base32 "1m7y11ix38h5a2pj5v81qdmvqh980ql9hp62hk2dxwkwsa4nh22h"))))
1596 (build-system ruby-build-system)
1597 (arguments
1598 `(#:test-target "spec"
1599 #:phases
1600 (modify-phases %standard-phases
1601 (add-after 'unpack 'disable-bundler
1602 (lambda _
1603 (substitute* (find-files "." "\\.rb$")
1604 (("require.*bundler/setup.*") ""))
1605 #t))
1606 (replace 'replace-git-ls-files
1607 (lambda _
1608 ;; TODO: Remove after the fix of using 'cut' to better mimic the
1609 ;; git ls-files output is merged in ruby-build-system.
1610 (substitute* "chunky_png.gemspec"
1611 (("`git ls-files`")
1612 "`find . -type f -not -regex '.*\\.gem$' |sort |cut -c3-`"))
1613 #t)))))
1614 (native-inputs
1615 `(("bundler" ,bundler)
1616 ("ruby-rspec" ,ruby-rspec)
1617 ("ruby-standard" ,ruby-standard)
1618 ("ruby-yard" ,ruby-yard)))
1619 (synopsis "Ruby library to handle PNG images")
1620 (description "ChunkyPNG is a pure Ruby library that can read and write
1621Portable Network Graphics (PNG) images without depending on an external image
1622library. It tries to be memory efficient and reasonably fast. It has
1623features such as:
1624@itemize
1625@item
1626Decoding support for any image that the PNG standard allows. This includes all
1627standard color modes, all bit depths, all transparency, and interlacing and
1628filtering options.
1629@item
1630Encoding support for images of all color modes (true color, grayscale, and
1631indexed) and transparency for all these color modes. The best color mode is
1632chosen automatically, based on the amount of used colors.
1633@item Read/write access to the image's pixels.
1634@item Read/write access to all image metadata that is stored in chunks.
1635@item
1636Memory efficiency: @code{fixnum} are used, i.e. 4 or 8 bytes of memory per
1637pixel, depending on the hardware).
1638@item
1639Performance: ChunkyPNG is reasonably fast for Ruby standards, by only using
1640integer math and a highly optimized saving routine.
1641@item Interoperability with RMagick.
1642@end itemize
1643
1644ChunkyPNG is vulnerable to decompression bombs and can run out of memory when
1645loading a specifically crafted PNG file. This is hard to fix in pure Ruby.
1646Deal with untrusted images in a separate process, e.g., by using @code{fork}
1647or a background processing library.")
1648 (home-page "https://github.com/wvanbergen/chunky_png/wiki")
1649 (license license:expat)))
1650
1651(define-public ruby-text-hyphen
1652 (package
1653 (name "ruby-text-hyphen")
1654 (version "1.4.1")
1655 (source
1656 (origin
1657 (method url-fetch)
1658 (uri (rubygems-uri "text-hyphen" version))
1659 (sha256
1660 (base32
1661 "1gj4awvs9ryf960m0iawg43jyjmfwcqgfwrbcfp890a57b9ag7q1"))))
1662 (build-system ruby-build-system)
1663 (native-inputs
1664 `(("ruby-hoe" ,ruby-hoe)))
1665 (synopsis "Ruby library to hyphenate words in various languages")
1666 (description "Text::Hyphen is a Ruby library to hyphenate words in various
1667languages using Ruby-fied versions of TeX hyphenation patterns. It will
1668properly hyphenate various words according to the rules of the language the
1669word is written in. The algorithm is based on that of the TeX typesetting
1670system by Donald E. Knuth.")
1671 (home-page "https://github.com/halostatue/text-hyphen")
1672 ;; The whole is licensed under the Expat license, but parts use various
1673 ;; versions of the LaTeX Project Public License.
1674 (license license:expat)))
1675
1676(define-public ruby-open-uri-cached
1677 (package
1678 (name "ruby-open-uri-cached")
1679 (version "0.0.5")
1680 (source
1681 (origin
1682 (method url-fetch)
1683 (uri (rubygems-uri "open-uri-cached" version))
1684 (sha256
1685 (base32
1686 "13xy2vhrgz9mdxhklw5fszhamsdxh8ysf3l40g92hqm4hm288wap"))))
1687 (build-system ruby-build-system)
1688 (arguments
1689 `(#:tests? #f)) ;no test suite
1690 (synopsis "OpenURI with transparent disk caching")
1691 (description "OpenURI with transparent disk caching, which is
1692useful to avoid making excessive queries, for example when scraping
1693web pages.")
1694 (home-page "https://github.com/tigris/open-uri-cached")
1695 (license license:expat)))
1696
1697(define-public ruby-asciidoctor-pdf
1698 ;; Use the latest commit, as the last tag doesn't build with the
1699 ;; latest Ruby dependencies in Guix.
1700 (let ((revision "1")
1701 (commit "d257440df895d1595a3825ef58b32e4b290ba1c3"))
1702 (package
1703 (name "ruby-asciidoctor-pdf")
1704 (version (git-version "1.5.3" revision commit))
1705 (source
1706 (origin
1707 (method git-fetch) ;no test suite in the distributed gem
1708 (uri (git-reference
1709 (url "https://github.com/asciidoctor/asciidoctor-pdf")
1710 (commit commit)))
1711 (file-name (git-file-name name version))
1712 (sha256
1713 (base32
1714 "1563d11ghzsrsg4inwfwj6b9hb5sk5b429f49fwq5qg3sq76kgjj"))))
1715 (build-system ruby-build-system)
1716 (arguments
1717 `(#:test-target "spec"
1718 #:phases
1719 (modify-phases %standard-phases
1720 (add-after 'unpack 'remove-failing-tests
1721 ;; Two tests module fail for unknown reasons, *only* when
1722 ;; ran in the build container (see:
1723 ;; https://github.com/asciidoctor/asciidoctor-pdf/issues/1725#issuecomment-658777965).
1724 (lambda _
1725 (delete-file "spec/audio_spec.rb")
1726 (delete-file "spec/video_spec.rb")
1727 #t))
1728 (add-after 'extract-gemspec 'strip-version-requirements
1729 (lambda _
1730 (substitute* "asciidoctor-pdf.gemspec"
1731 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
1732 (string-append stripped "\n")))
1733 #t))
1734 (replace 'replace-git-ls-files
1735 ;; TODO: Remove after the fix of using 'cut' to better mimic the
1736 ;; git ls-files output is merged in ruby-build-system.
1737 (lambda _
1738 (substitute* "asciidoctor-pdf.gemspec"
1739 (("`git ls-files -z`")
1740 "`find . -type f -not -regex '.*\\.gem$' -print0 \
1741|sort -z|cut -zc3-`"))
1742 #t))
1743 ;; The tests rely on the Gem being installed, so move the check phase
1744 ;; after the install phase.
1745 (delete 'check)
1746 (add-after 'install 'check
1747 (lambda* (#:key outputs tests? #:allow-other-keys)
1748 (let ((new-gem (string-append (assoc-ref outputs "out")
1749 "/lib/ruby/vendor_ruby")))
1750 (setenv "GEM_PATH"
1751 (string-append (getenv "GEM_PATH") ":" new-gem))
1752 (when tests?
1753 (invoke "rspec" "-t" "~visual" "-t" "~cli" "-t" "~network"))
1754 #t))))))
1755 (native-inputs
1756 `(("ruby-chunky-png" ,ruby-chunky-png)
1757 ("ruby-coderay" ,ruby-coderay)
1758 ("ruby-pdf-inspector" ,ruby-pdf-inspector)
1759 ("ruby-rouge" ,ruby-rouge)
1760 ("ruby-rspec" ,ruby-rspec)))
1761 (propagated-inputs
1762 `(("ruby-asciidoctor" ,ruby-asciidoctor)
1763 ("ruby-concurrent-ruby" ,ruby-concurrent)
1764 ("ruby-open-uri-cached" ,ruby-open-uri-cached)
1765 ("ruby-prawn" ,ruby-prawn)
1766 ("ruby-prawn-icon" ,ruby-prawn-icon)
1767 ("ruby-prawn-svg" ,ruby-prawn-svg)
1768 ("ruby-prawn-table" ,ruby-prawn-table)
1769 ("ruby-prawn-templates" ,ruby-prawn-templates)
1770 ("ruby-safe-yaml" ,ruby-safe-yaml)
1771 ("ruby-text-hyphen" ,ruby-text-hyphen)
1772 ("ruby-thread-safe" ,ruby-thread-safe)
1773 ("ruby-treetop" ,ruby-treetop)
1774 ("ruby-ttfunk" ,ruby-ttfunk)))
1775 (synopsis"AsciiDoc to Portable Document Format (PDF)} converter")
1776 (description "Asciidoctor PDF is an extension for Asciidoctor that
1777converts AsciiDoc documents to Portable Document Format (PDF) using the Prawn
1778PDF library. It has features such as:
1779@itemize
1780@item Direct AsciiDoc to PDF conversion
1781@item Configuration-driven theme (style and layout)
1782@item Scalable Vector Graphics (SVG) support
1783@item PDF document outline (i.e., bookmarks)
1784@item Table of contents page(s)
1785@item Document metadata (title, authors, subject, keywords, etc.)
1786@item Internal cross reference links
1787@item Syntax highlighting with Rouge, Pygments, or CodeRay
1788@item Page numbering
1789@item Customizable running content (header and footer)
1790@item
1791“Keep together” blocks (i.e., page breaks avoided in certain block content)
1792@item Orphaned section titles avoided
1793@item Autofit verbatim blocks (as permitted by base_font_size_min setting)
1794@item Table border settings honored
1795@item Font-based icons
1796@item Custom TrueType (TTF) fonts
1797@item Double-sided printing mode (margins alternate on recto and verso pages)
1798@end itemize")
1799 (home-page "https://asciidoctor.org/docs/asciidoctor-pdf")
1800 (license license:expat))))
1801
1802(define-public ruby-ast
1803 (package
1804 (name "ruby-ast")
1805 (version "2.4.1")
1806 (source
1807 (origin
1808 (method git-fetch) ;no test included in gem from v2.4.1
1809 (uri (git-reference
1810 (url "https://github.com/whitequark/ast")
1811 (commit (string-append "v" version))))
1812 (file-name (git-file-name name version))
1813 (sha256
1814 (base32
1815 "0k8vya256chimy473g818gim06m5rjgh6mz5sc5g8xz3csh3rysi"))))
1816 (build-system ruby-build-system)
1817 (arguments
1818 '(#:phases
1819 (modify-phases %standard-phases
1820 (add-after 'unpack 'remove-coveralls-requirement
1821 (lambda _
1822 (substitute* "test/helper.rb"
1823 (("require 'coveralls'") "")
1824 (("Coveralls::SimpleCov::Formatter") ""))
1825 #t))
1826 (add-after 'extract-gemspec 'remove-unnecessary-requirements
1827 (lambda _
1828 (substitute* "ast.gemspec"
1829 ((".*coveralls.*") "\n")
1830 (("%q<rest-client>.*") "%q<rest-client>.freeze, [\">= 0\"])\n")
1831 (("%q<mime-types>.*") "%q<mime-types>.freeze, [\">= 0\"])\n")
1832 (("%q<rake>.*") "%q<rake>.freeze, [\">= 0\"])\n"))
1833 #t)))))
1834 (native-inputs
1835 `(("bundler" ,bundler)
1836 ("ruby-simplecov" ,ruby-simplecov)
1837 ("ruby-json-pure" ,ruby-json-pure)
1838 ("ruby-mime-times" ,ruby-mime-types)
1839 ("ruby-yard" ,ruby-yard)
1840 ("ruby-kramdown" ,ruby-kramdown)
1841 ("ruby-rest-client" ,ruby-rest-client)
1842 ("ruby-bacon" ,ruby-bacon)
1843 ("ruby-bacon-colored-output" ,ruby-bacon-colored-output)
1844 ("ruby-racc" ,ruby-racc)))
1845 (synopsis "Library for working with Abstract Syntax Trees")
1846 (description
1847 "@code{ast} is a Ruby library for working with Abstract Syntax Trees.
1848It does this through immutable data structures.")
1849 (home-page "https://whitequark.github.io/ast/")
1850 (license license:expat)))
1851
1852(define-public ruby-sporkmonger-rack-mount
1853 ;; Testing the addressable gem requires a newer commit than that released, so
1854 ;; use an up to date version.
1855 (let ((revision "1")
1856 (commit "076aa2c47d9a4c081f1e9bcb56a826a9e72bd5c3"))
1857 (package
1858 (name "ruby-sporkmonger-rack-mount")
1859 (version (git-version "0.8.3" revision commit))
1860 (source (origin
1861 (method git-fetch)
1862 (uri (git-reference
1863 (url "https://github.com/sporkmonger/rack-mount")
1864 (commit commit)))
1865 (file-name (git-file-name name version))
1866 (sha256
1867 (base32
1868 "1scx273g3xd93424x9lxc4zyvcp2niknbw5mkz6wkivpf7xsyxdq"))))
1869 (build-system ruby-build-system)
1870 (arguments
1871 ;; Tests currently fail so disable them.
1872 ;; https://github.com/sporkmonger/rack-mount/pull/1
1873 `(#:tests? #f))
1874 (propagated-inputs `(("ruby-rack" ,ruby-rack)))
1875 (synopsis "Stackable dynamic tree based Rack router")
1876 (description
1877 "@code{Rack::Mount} supports Rack's @code{X-Cascade} convention to
1878continue trying routes if the response returns pass. This allows multiple
1879routes to be nested or stacked on top of each other.")
1880 (home-page "https://github.com/sporkmonger/rack-mount")
1881 (license license:expat))))
1882
1883(define-public ruby-ci-reporter
1884 (package
1885 (name "ruby-ci-reporter")
1886 (version "2.0.0")
1887 (source (origin
1888 (method url-fetch)
1889 (uri (rubygems-uri "ci_reporter" version))
1890 (sha256
1891 (base32
1892 "17fm20jmw3ajdryhkkxpjahcfx7bgswqzxrskivlkns2718ayyyg"))))
1893 (build-system ruby-build-system)
1894 (arguments
1895 `(#:test-target "rspec"))
1896 (propagated-inputs
1897 `(("ruby-builder" ,ruby-builder)))
1898 (native-inputs
1899 `(("bundler" ,bundler)
1900 ("ruby-rspec" ,ruby-rspec)))
1901 (synopsis "Generate XML reports of runs test")
1902 (description
1903 "@code{CI::Reporter} is an add-on to Ruby testing frameworks that allows
1904you to generate XML reports of your test runs. The resulting files can be
1905read by a continuous integration system that understands Ant's JUnit report
1906format.")
1907 (home-page "https://github.com/nicksieger/ci_reporter")
1908 (license license:expat)))
1909
1910(define-public ruby-contracts
1911 (package
1912 (name "ruby-contracts")
1913 (version "0.16.0")
1914 (source
1915 (origin
1916 (method url-fetch)
1917 (uri (rubygems-uri "contracts" version))
1918 (sha256
1919 (base32
1920 "119f5p1n6r5svbx8h09za6a4vrsnj5i1pzr9cqdn9hj3wrxvyl3a"))))
1921 (build-system ruby-build-system)
1922 (arguments
1923 '(#:test-target "spec"
1924 #:phases
1925 (modify-phases %standard-phases
1926 ;; Don't run or require rubocop, the code linting tool, as this is a
1927 ;; bit unnecessary.
1928 (add-after 'unpack 'dont-run-rubocop
1929 (lambda _
1930 (substitute* "Rakefile"
1931 ((".*rubocop.*") "")
1932 ((".*RuboCop.*") ""))
1933 #t)))))
1934 (native-inputs
1935 `(("ruby-rspec" ,ruby-rspec)))
1936 (synopsis "Method contracts for Ruby")
1937 (description
1938 "This library provides contracts for Ruby. A contract describes the
1939correct inputs and output for a method, and will raise an error if a incorrect
1940value is found.")
1941 (home-page "https://github.com/egonSchiele/contracts.ruby")
1942 (license license:bsd-2)))
1943
1944(define-public ruby-crack
1945 (package
1946 (name "ruby-crack")
1947 (version "0.4.3")
1948 (source
1949 (origin
1950 (method url-fetch)
1951 (uri (rubygems-uri "crack" version))
1952 (sha256
1953 (base32
1954 "0abb0fvgw00akyik1zxnq7yv391va148151qxdghnzngv66bl62k"))))
1955 (build-system ruby-build-system)
1956 (arguments
1957 `(#:phases
1958 (modify-phases %standard-phases
1959 (replace 'check
1960 (lambda* (#:key tests? #:allow-other-keys)
1961 (when tests?
1962 (for-each (lambda (file)
1963 (display file)(display "\n")
1964 (invoke "ruby" "-Ilib" "-Itest" "-rrubygems" file))
1965 (find-files "test" ".*rb$")))
1966 #t)))))
1967 (propagated-inputs
1968 `(("ruby-safe-yaml" ,ruby-safe-yaml)))
1969 (synopsis "Simple JSON and XML parsing for Ruby")
1970 (description
1971 "@code{crack} provides really simple JSON and XML parsing, extracted from
1972code in Merb and Rails.")
1973 (home-page "https://github.com/jnunemaker/crack")
1974 (license license:expat)))
1975
1976(define-public ruby-cliver
1977 (package
1978 (name "ruby-cliver")
1979 (version "0.3.2")
1980 (source
1981 (origin
1982 (method url-fetch)
1983 (uri (rubygems-uri "cliver" version))
1984 (sha256
1985 (base32
1986 "096f4rj7virwvqxhkavy0v55rax10r4jqf8cymbvn4n631948xc7"))))
1987 (build-system ruby-build-system)
1988 (arguments
1989 '(#:phases
1990 (modify-phases %standard-phases
1991 ;; Avoid a incompatibility between rspec@2 and rake. Using rspec@3
1992 ;; would be nice, but the tests look to be incompatible:
1993 ;;
1994 ;; NoMethodError: undefined method `last_comment'
1995 (replace 'check
1996 (lambda* (#:key tests? #:allow-other-keys)
1997 (when tests?
1998 (invoke "rspec"))
1999 #t)))))
2000 (native-inputs
2001 `(("bundler" ,bundler)
2002 ("ruby-rspec" ,ruby-rspec-2)))
2003 (synopsis "Assertions for command-line dependencies in Ruby")
2004 (description
2005 "@code{cliver} provides a way to detect missing command-line
2006dependencies, including versions.")
2007 (home-page "https://github.com/yaauie/cliver")
2008 (license license:expat)))
2009
2010(define-public ruby-czmq-ffi-gen
2011 (package
2012 (name "ruby-czmq-ffi-gen")
2013 (version "0.13.0")
2014 (source
2015 (origin
2016 (method url-fetch)
2017 (uri (rubygems-uri "czmq-ffi-gen" version))
2018 (sha256
2019 (base32
2020 "1yf719dmf4mwks1hqdsy6i5kzfvlsha69sfnhb2fr2cgk2snbys3"))))
2021 (build-system ruby-build-system)
2022 (arguments
2023 '(#:tests? #f ;; Tests are not included in the release on rubygems.org
2024 #:phases
2025 (modify-phases %standard-phases
2026 (add-after 'unpack 'patch-lib_dirs
2027 (lambda* (#:key inputs #:allow-other-keys)
2028 (substitute* "lib/czmq-ffi-gen/czmq/ffi.rb"
2029 (("lib\\_dirs = \\[.*\\]")
2030 (string-append "lib_dirs = ['"
2031 (assoc-ref inputs "czmq") "/lib"
2032 "']")))
2033 (substitute* "lib/czmq-ffi-gen/libzmq.rb"
2034 (("lib\\_dirs = \\[.*\\]")
2035 (string-append "lib_dirs = ['"
2036 (assoc-ref inputs "zeromq") "/lib"
2037 "']"))))))))
2038 (inputs
2039 `(("zeromq" ,zeromq)
2040 ("czmq" ,czmq)))
2041 (propagated-inputs `(("ruby-ffi" ,ruby-ffi)))
2042 (synopsis "Low-level Ruby bindings for CZMQ (generated using zproject)")
2043 (description
2044 "These Ruby bindings are not intended to be directly used, but rather
2045used by higher level bindings like those provided by CZTop.")
2046 (home-page
2047 "https://github.com/paddor/czmq-ffi-gen")
2048 (license license:isc)))
2049
2050(define-public ruby-cztop
2051 (package
2052 (name "ruby-cztop")
2053 (version "0.12.2")
2054 (source
2055 (origin
2056 (method url-fetch)
2057 (uri (rubygems-uri "cztop" version))
2058 (sha256
2059 (base32
2060 "0yqbpaiw5d7f271d73lyrsh8xpx6n4zi6xqwfgi00dacxrq3s3fa"))))
2061 (build-system ruby-build-system)
2062 (arguments
2063 '(#:test-target "spec"
2064 #:phases
2065 (modify-phases %standard-phases
2066 (add-after 'unpack 'patch-lib_paths
2067 (lambda* (#:key inputs #:allow-other-keys)
2068 (substitute* "lib/cztop/poller/zmq.rb"
2069 (("lib\\_paths = \\[.*\\]")
2070 (string-append "lib_paths = ['"
2071 (assoc-ref inputs "zeromq") "/lib"
2072 "']"))))))))
2073 (native-inputs
2074 `(("bundler" ,bundler)
2075 ("ruby-rspec" ,ruby-rspec)))
2076 (inputs
2077 `(("zeromq" ,zeromq)))
2078 (propagated-inputs
2079 `(("ruby-czmq-ffi-gen" ,ruby-czmq-ffi-gen)))
2080 (synopsis "CZMQ Ruby bindings")
2081 (description
2082 "CZMQ Ruby bindings, based on the generated low-level FFI bindings of
2083CZMQ. The focus of of CZTop is on being easy to use and providing first class
2084support for security mechanisms.")
2085 (home-page "https://github.com/paddor/cztop")
2086 (license license:isc)))
2087
2088(define-public ruby-saikuro-treemap
2089 (package
2090 (name "ruby-saikuro-treemap")
2091 (version "0.2.0")
2092 (source (origin
2093 (method url-fetch)
2094 (uri (rubygems-uri "saikuro_treemap" version))
2095 (sha256
2096 (base32
2097 "0w70nmh43mwfbpq20iindl61siqqr8acmf7p3m7n5ipd61c24950"))))
2098 (build-system ruby-build-system)
2099 ;; Some of the tests fail because the generated JSON has keys in a
2100 ;; different order. This is a problem with the test suite rather than any
2101 ;; of the involved libraries.
2102 (arguments `(#:tests? #f))
2103 (propagated-inputs
2104 `(("ruby-json-pure" ,ruby-json-pure)
2105 ("ruby-atoulme-saikuro" ,ruby-atoulme-saikuro)))
2106 (synopsis "Generate complexity treemap based on saikuro analysis")
2107 (description
2108 "This gem generates a treemap showing the complexity of Ruby code on
2109which it is run. It uses Saikuro under the covers to analyze Ruby code
2110complexity.")
2111 (home-page "https://github.com/ThoughtWorksStudios/saikuro_treemap")
2112 (license license:expat)))
2113
2114(define-public ruby-oauth2
2115 (package
2116 (name "ruby-oauth2")
2117 (version "1.4.2")
2118 (source
2119 (origin
2120 (method url-fetch)
2121 (uri (rubygems-uri "oauth2" version))
2122 (sha256
2123 (base32 "15i9z4j5pcjkr30lkcd79xzbr4kpmy0bqgwa436fqyqk646fv036"))))
2124 (build-system ruby-build-system)
2125 (arguments
2126 '(#:tests? #f)) ; no included tests
2127 (propagated-inputs
2128 `(("ruby-faraday" ,ruby-faraday)
2129 ("ruby-jwt" ,ruby-jwt)
2130 ("ruby-multi-json" ,ruby-multi-json)
2131 ("ruby-multi-xml" ,ruby-multi-xml)
2132 ("ruby-rack" ,ruby-rack)))
2133 (synopsis "Ruby wrapper for the OAuth 2.0")
2134 (description
2135 "This package provides a Ruby wrapper for the OAuth 2.0 protocol built
2136with a similar style to the original OAuth spec.")
2137 (home-page "https://github.com/oauth-xx/oauth2")
2138 (license license:expat)))
2139
2140(define-public ruby-omniauth
2141 (package
2142 (name "ruby-omniauth")
2143 (version "1.9.1")
2144 (source
2145 (origin
2146 (method url-fetch)
2147 (uri (rubygems-uri "omniauth" version))
2148 (sha256
2149 (base32 "002vi9gwamkmhf0dsj2im1d47xw2n1jfhnzl18shxf3ampkqfmyz"))))
2150 (build-system ruby-build-system)
2151 (arguments
2152 '(#:tests? #f)) ; No included tests
2153 (propagated-inputs
2154 `(("ruby-hashie" ,ruby-hashie)
2155 ("ruby-rack" ,ruby-rack)))
2156 (synopsis "Generalized Rack framework for multiple-provider authentication")
2157 (description
2158 "This package provides a generalized Rack framework for multiple-provider
2159authentication.")
2160 (home-page "https://github.com/omniauth/omniauth")
2161 (license license:expat)))
2162
2163(define-public ruby-omniauth-oauth2
2164 (package
2165 (name "ruby-omniauth-oauth2")
2166 (version "1.6.0")
2167 (source
2168 (origin
2169 (method url-fetch)
2170 (uri (rubygems-uri "omniauth-oauth2" version))
2171 (sha256
2172 (base32
2173 "11mi36l9d97r77q99jnafdc1yaa0a9wahhpp7dj7ank8q52g7g79"))))
2174 (build-system ruby-build-system)
2175 (arguments
2176 '(#:phases
2177 (modify-phases %standard-phases
2178 (add-after 'unpack 'remove-unnecessary-dependencies
2179 (lambda _
2180 ;; The coveralls gem submits coverage information to an online
2181 ;; service, and is unnecessary when running the tests
2182 (substitute* "Gemfile"
2183 ((".*coveralls\"") ""))
2184 (substitute* "spec/helper.rb"
2185 (("require \"coveralls\"") "")
2186 (("Coveralls::SimpleCov::Formatter") ""))
2187 #t)))))
2188 (propagated-inputs
2189 `(("ruby-oauth2" ,ruby-oauth2)
2190 ("ruby-omniauth" ,ruby-omniauth)))
2191 (native-inputs
2192 `(("bundler" ,bundler)
2193 ("ruby-rspec" ,ruby-rspec)
2194 ("ruby-simplecov" ,ruby-simplecov)
2195 ("ruby-rack-test" ,ruby-rack-test)
2196 ("ruby-webmock" ,ruby-webmock-2)))
2197 (synopsis "Abstract OAuth2 strategy for OmniAuth")
2198 (description
2199 "This library provides a generic OAuth2 strategy for OmniAuth. It
2200doesn't provide a way to gather user information, so should be used as a
2201building block for authentication strategies.")
2202 (home-page "https://github.com/omniauth/omniauth-oauth2")
2203 (license license:expat)))
2204
2205(define-public ruby-open4
2206 (package
2207 (name "ruby-open4")
2208 (version "1.3.4")
2209 (source
2210 (origin
2211 (method url-fetch)
2212 (uri (rubygems-uri "open4" version))
2213 (sha256
2214 (base32
2215 "1cgls3f9dlrpil846q0w7h66vsc33jqn84nql4gcqkk221rh7px1"))))
2216 (build-system ruby-build-system)
2217 (arguments
2218 '(#:phases
2219 (modify-phases %standard-phases
2220 (add-after 'unpack 'patch
2221 (lambda _
2222 (substitute* "rakefile"
2223 ;; Update the Rakefile so it works
2224 (("-rubygems") "-rrubygems")
2225 (("Config") "RbConfig"))
2226 #t))
2227 (add-before 'check 'set-LIB
2228 (lambda _
2229 ;; This is used in the rakefile when running the tests
2230 (setenv "LIB" "open4")
2231 #t)))))
2232 (synopsis "Open child processes from Ruby and manage them easily")
2233 (description
2234 "@code{Open4} is a Ruby library to run child processes and manage their
2235input and output.")
2236 (home-page "https://github.com/ahoward/open4")
2237 (license license:ruby)))
2238
2239(define-public ruby-options
2240 (package
2241 (name "ruby-options")
2242 (version "2.3.2")
2243 (source
2244 (origin
2245 (method url-fetch)
2246 (uri (rubygems-uri "options" version))
2247 (sha256
2248 (base32
2249 "1s650nwnabx66w584m1cyw82icyym6hv5kzfsbp38cinkr5klh9j"))))
2250 (build-system ruby-build-system)
2251 (arguments
2252 '(#:tests? #f ;; TODO: NameError: uninitialized constant Config
2253 #:phases
2254 (modify-phases %standard-phases
2255 (add-before 'check 'set-LIB
2256 (lambda _
2257 ;; This is used in the Rakefile, and setting it avoids an issue
2258 ;; with running the tests.
2259 (setenv "LIB" "options")
2260 #t)))))
2261 (synopsis "Ruby library to parse options from *args cleanly")
2262 (description
2263 "The @code{options} library helps with parsing keyword options in Ruby
2264functions.")
2265 (home-page "https://github.com/ahoward/options")
2266 (license license:ruby)))
2267
2268(define-public ruby-erubi
2269 (package
2270 (name "ruby-erubi")
2271 (version "1.8.0")
2272 (source
2273 (origin
2274 (method url-fetch)
2275 (uri (rubygems-uri "erubi" version))
2276 (sha256
2277 (base32
2278 "1kagnf6ziahj0d781s6ryy6fwqwa3ad4xbzzj84p9m4nv4c2jir1"))))
2279 (build-system ruby-build-system)
2280 (synopsis "ERB template engine for Ruby")
2281 (description
2282 "Erubi is a ERB template engine for Ruby. It is a simplified fork of
2283Erubis")
2284 (home-page "https://github.com/jeremyevans/erubi")
2285 (license license:expat)))
2286
2287(define-public ruby-erubis
2288 (package
2289 (name "ruby-erubis")
2290 (version "2.7.0")
2291 (source
2292 (origin
2293 (method url-fetch)
2294 (uri (rubygems-uri "erubis" version))
2295 (sha256
2296 (base32
2297 "1fj827xqjs91yqsydf0zmfyw9p4l2jz5yikg3mppz6d7fi8kyrb3"))))
2298 (build-system ruby-build-system)
2299 (arguments
2300 '(#:tests? #f)) ; tests do not run properly with Ruby 2.0
2301 (synopsis "Implementation of embedded Ruby (eRuby)")
2302 (description
2303 "Erubis is a fast implementation of embedded Ruby (eRuby) with several
2304features such as multi-language support, auto escaping, auto trimming spaces
2305around @code{<% %>}, a changeable embedded pattern, and Ruby on Rails
2306support.")
2307 (home-page "http://www.kuwata-lab.com/erubis/")
2308 (license license:expat)))
2309
2310(define-public ruby-execjs
2311 (package
2312 (name "ruby-execjs")
2313 (version "2.7.0")
2314 (source
2315 (origin
2316 ;; fetch from github as the gem does not contain testing code
2317 (method git-fetch)
2318 (uri (git-reference
2319 (url "https://github.com/rails/execjs")
2320 (commit (string-append "v" version))))
2321 (file-name (git-file-name name version))
2322 (sha256
2323 (base32
2324 "0c0vd2mmqq3ar4plbwi2wsbr31vn4h45i19r5km66skydnnbp1y6"))))
2325 (build-system ruby-build-system)
2326 (native-inputs
2327 `(("bundler" ,bundler)
2328 ;; The test suite tests all the available backends. Currenly, this just
2329 ;; means the node backend.
2330 ;;
2331 ;; PASSED: test:node
2332 ;; SKIPPED: test:duktape, ;; test:javascriptcore, test:jscript,
2333 ;; test:miniracer, test:rubyracer, ;; test:rubyrhino, test:v8
2334 ("node" ,node)))
2335 (synopsis "Run JavaScript code from Ruby")
2336 (description
2337 "ExecJS lets you run JavaScript code from Ruby. It automatically picks a
2338runtime to evaluate your JavaScript program, then returns the result to you as
2339a Ruby object.")
2340 (home-page "https://github.com/rails/execjs")
2341 (license license:expat)))
2342
2343(define-public ruby-fakefs
2344 (package
2345 (name "ruby-fakefs")
2346 (version "1.2.2")
2347 (home-page "https://github.com/fakefs/fakefs")
2348 (source (origin
2349 ;; The Rubygems release does not contain tests.
2350 (method git-fetch)
2351 (uri (git-reference
2352 (url home-page)
2353 (commit (string-append "v" version))))
2354 (file-name (git-file-name name version))
2355 (sha256
2356 (base32
2357 "008dq9knyip2bfbl0mrk8b8r7bv0k3bf128wcfqsgy1rqal4mgwk"))))
2358 (build-system ruby-build-system)
2359 (arguments
2360 '(#:phases (modify-phases %standard-phases
2361 (replace 'replace-git-ls-files
2362 (lambda _
2363 (substitute* "fakefs.gemspec"
2364 (("`git ls-files lib README.md LICENSE`")
2365 "`find lib README.md LICENSE -type f | sort`"))
2366 #t))
2367 (add-before 'check 'remove-version-constraints
2368 (lambda _
2369 ;; Drop hard version requirements for test dependencies.
2370 (substitute* "fakefs.gemspec"
2371 (("(.*add_development_dependency .*), .*" _ dep)
2372 (string-append dep "\n")))
2373 #t)))))
2374 (native-inputs
2375 `(("ruby-bump" ,ruby-bump)
2376 ("ruby-maxitest" ,ruby-maxitest)
2377 ("ruby-rubocop" ,ruby-rubocop)
2378 ("ruby-rspec" ,ruby-rspec)))
2379 (synopsis "Fake file system for Ruby")
2380 (description
2381 "This package provides a fake file system for use in test suites. It
2382avoids the need for manually creating temporary directories, or dealing
2383with platform intricacies in @code{File} and @code{FileUtils}.")
2384 (license license:expat)))
2385
2386(define-public ruby-orderedhash
2387 (package
2388 (name "ruby-orderedhash")
2389 (version "0.0.6")
2390 (source (origin
2391 (method url-fetch)
2392 (uri (rubygems-uri "orderedhash" version))
2393 (sha256
2394 (base32
2395 "0fryy7f9jbpx33jq5m402yqj01zcg563k9fsxlqbhmq638p4bzd7"))))
2396 (build-system ruby-build-system)
2397 (arguments
2398 '(#:tests? #f)) ; no test suite
2399 (synopsis "Ruby library providing an order-preserving hash")
2400 (description "Orderedhash is a Ruby library providing a hash
2401implementation that preserves the order of items and features some array-like
2402extensions.")
2403 (home-page "http://codeforpeople.com/lib/ruby/orderedhash/")
2404 (license license:public-domain)))
2405
2406(define-public ruby-libxml
2407 (package
2408 (name "ruby-libxml")
2409 (version "3.0.0")
2410 (source
2411 (origin
2412 (method url-fetch)
2413 (uri (rubygems-uri "libxml-ruby" version))
2414 (sha256
2415 (base32
2416 "0xy8wmjwjcnv36zi042678ncjzpxvy351ccbv7mzkns2n3kxfp54"))))
2417 (build-system ruby-build-system)
2418 (inputs
2419 `(("zlib" ,zlib)
2420 ("libxml2" ,libxml2)))
2421 (arguments
2422 '(#:tests? #f ; test suite hangs for unknown reason
2423 #:gem-flags
2424 (list "--no-document" ; TODO: Re-enable when documentation
2425 ; generation works
2426 "--"
2427 (string-append "--with-xml2-include="
2428 (assoc-ref %build-inputs "libxml2")
2429 "/include/libxml2" ))))
2430 (synopsis "Ruby bindings for GNOME Libxml2")
2431 (description "The Libxml-Ruby project provides Ruby language bindings for
2432the GNOME Libxml2 XML toolkit.")
2433 (home-page "https://xml4r.github.com/libxml-ruby")
2434 (license license:expat)))
2435
2436(define-public ruby-lino
2437 (package
2438 (name "ruby-lino")
2439 (version "1.1.0")
2440 (source
2441 (origin
2442 (method url-fetch)
2443 (uri (rubygems-uri "lino" version))
2444 (sha256
2445 (base32
2446 "11d29g0fk372b9fcpyr0k6hxm2b4j4igpysmi542hgbbgqgp9cd3"))))
2447 (build-system ruby-build-system)
2448 (arguments
2449 '(#:tests? #f)) ; No included tests
2450 (propagated-inputs
2451 `(("ruby-hamster" ,ruby-hamster)
2452 ("ruby-open4" ,ruby-open4)))
2453 (synopsis "Build and execute commands in Ruby")
2454 (description
2455 "@code{Lino} provides an interface to run external commands. It provides
2456an interface to add options as well as managing the standard input, output and
2457error streams.")
2458 (home-page "https://github.com/tobyclemson/lino")
2459 (license license:expat)))
2460
2461(define-public ruby-xml-simple
2462 (package
2463 (name "ruby-xml-simple")
2464 (version "1.1.5")
2465 (source (origin
2466 (method url-fetch)
2467 (uri (rubygems-uri "xml-simple" version))
2468 (sha256
2469 (base32
2470 "0xlqplda3fix5pcykzsyzwgnbamb3qrqkgbrhhfz2a2fxhrkvhw8"))))
2471 (build-system ruby-build-system)
2472 (arguments
2473 '(#:tests? #f)) ; no test suite
2474 (synopsis "Simple Ruby library for XML processing")
2475 (description "This library provides a simple API for XML processing in
2476Ruby.")
2477 (home-page "https://github.com/maik/xml-simple")
2478 (license license:ruby)))
2479
2480(define-public ruby-thor
2481 (package
2482 (name "ruby-thor")
2483 (version "1.0.1")
2484 (source (origin
2485 ;; Pull from git because the gem has no tests.
2486 (method git-fetch)
2487 (uri (git-reference
2488 (url "https://github.com/erikhuda/thor")
2489 (commit (string-append "v" version))))
2490 (file-name (git-file-name name version))
2491 (sha256
2492 (base32
2493 "1anrx5vynk57hn5c8ig5pgkmcsbj9q5mvckd5rviw1jid7n89k57"))))
2494 (build-system ruby-build-system)
2495 (arguments
2496 '(#:phases (modify-phases %standard-phases
2497 (add-after 'unpack 'fix-readline-tests
2498 (lambda _
2499 ;; Ensure Readline is initialized before running the
2500 ;; test to avoid a type clash with the mock ::Readline.
2501 ;; See <https://github.com/erikhuda/thor/pull/717>.
2502 (substitute* "spec/line_editor/readline_spec.rb"
2503 (("unless defined\\? ::Readline" all)
2504 (string-append "Thor::LineEditor::Readline.available?\n"
2505 all)))
2506 #t))
2507 (add-after 'unpack 'remove-coveralls-dependency
2508 (lambda _
2509 ;; Do not hook the test suite into the online
2510 ;; coveralls service.
2511 (substitute* "Gemfile"
2512 ((".*coveralls.*") ""))
2513 (substitute* "spec/helper.rb"
2514 (("require \"coveralls\"") "")
2515 (("Coveralls::SimpleCov::Formatter") "")
2516 ;; Also drop the WebMock dependency which is only
2517 ;; present to allow a coveralls.io connection, and
2518 ;; would otherwise introduce a circular dependency.
2519 (("require \"webmock/rspec\"") "")
2520 (("WebMock\\.disable_net_connect.*") ""))
2521 #t))
2522 (add-after 'unpack 'disable-network-tests
2523 (lambda _
2524 ;; These tests attempt to look up example.com.
2525 (substitute* "spec/actions/file_manipulation_spec.rb"
2526 (("it \"accepts (https?) remote sources" _ proto)
2527 (string-append "xit \"accepts " proto " remote sources")))
2528 #t))
2529 (add-after 'unpack 'disable-quality-tests
2530 (lambda _
2531 ;; These tests attempt to check the git repository for
2532 ;; tabs vs spaces, double vs single quotes, etc, and
2533 ;; depend on the git checkout.
2534 (delete-file "spec/quality_spec.rb")
2535 #t))
2536 (add-before 'check 'make-files-writable
2537 (lambda _
2538 ;; The tests needs rw access to the test suite.
2539 (for-each make-file-writable (find-files "spec"))
2540 #t))
2541 (replace 'check
2542 (lambda _
2543 (invoke "rspec" "spec"))))))
2544 (native-inputs
2545 `(("ruby-rspec" ,ruby-rspec)
2546 ("ruby-simplecov" ,ruby-simplecov)))
2547 (synopsis "Ruby toolkit for building command-line interfaces")
2548 (description "Thor is a toolkit for building powerful command-line
2549interfaces.")
2550 (home-page "http://whatisthor.com/")
2551 (license license:expat)))
2552
2553(define-public ruby-lumberjack
2554 (package
2555 (name "ruby-lumberjack")
2556 (version "1.0.13")
2557 (source (origin
2558 (method url-fetch)
2559 (uri (rubygems-uri "lumberjack" version))
2560 (sha256
2561 (base32
2562 "06im7gcg42x77yhz2w5da2ly9xz0n0c36y5ks7xs53v0l9g0vf5n"))))
2563 (build-system ruby-build-system)
2564 (native-inputs
2565 `(("ruby-rspec" ,ruby-rspec)
2566 ("ruby-timecop" ,ruby-timecop)))
2567 (synopsis "Logging utility library for Ruby")
2568 (description "Lumberjack is a simple logging utility that can be a drop in
2569replacement for Logger or ActiveSupport::BufferedLogger. It provides support
2570for automatically rolling log files even with multiple processes writing the
2571same log file.")
2572 (home-page "https://github.com/bdurand/lumberjack")
2573 (license license:expat)))
2574
2575(define-public ruby-rbnacl
2576 (package
2577 (name "ruby-rbnacl")
2578 (version "6.0.1")
2579 (source
2580 (origin
2581 (method url-fetch)
2582 (uri (rubygems-uri "rbnacl" version))
2583 (sha256
2584 (base32
2585 "0ajxy5kj2jw09wdsla3jmha8w07vj5l14288xr9djpl327g3lzhn"))))
2586 (build-system ruby-build-system)
2587 (arguments
2588 `(#:phases
2589 (modify-phases %standard-phases
2590 (add-after 'unpack 'remove-unnecessary-dependencies
2591 (lambda _
2592 ;; Coveralls relates to a network service, and Rubocop to code
2593 ;; linting and both are unnecessary to run the tests
2594 (substitute* "Gemfile"
2595 ((".*rubocop.*") "\n")
2596 ((".*guard-rspec.*") "\n")
2597 ((".*coveralls.*") "\n"))
2598 (substitute* "spec/spec_helper.rb"
2599 (("require \"coveralls\"") "")
2600 (("Coveralls.wear!") ""))
2601 #t))
2602 (add-after 'unpack 'use-libsodium-from-store
2603 (lambda* (#:key inputs #:allow-other-keys)
2604 (substitute* '("lib/rbnacl/init.rb"
2605 "lib/rbnacl/sodium.rb")
2606 (("ffi_lib \\[.+\\]")
2607 (string-append "ffi_lib [\""
2608 (assoc-ref inputs "libsodium") "/lib/libsodium.so"
2609 "\"]")))
2610 #t))
2611 ;; Run Rspec directly to avoid the Rubocop dependency in the Rakefile
2612 (replace 'check
2613 (lambda* (#:key tests? #:allow-other-keys)
2614 (when tests?
2615 (invoke "rspec"))
2616 #t)))))
2617 (propagated-inputs
2618 `(("ruby-ffi" ,ruby-ffi)))
2619 (inputs
2620 `(("libsodium" ,libsodium)))
2621 (native-inputs
2622 `(("bundler" ,bundler)
2623 ("ruby-rspec" ,ruby-rspec)))
2624 (synopsis "Ruby FFI binding to libsodium")
2625 (description
2626 "This package provides Ruby FFI bindings to the Networking and
2627Cryptography (NaCl) library, also known as libsodium. This provides a
2628high-level toolkit for building cryptographic systems and protocols.")
2629 (home-page "https://github.com/crypto-rb/rbnacl")
2630 (license license:expat)))
2631
2632(define-public ruby-nenv
2633 (package
2634 (name "ruby-nenv")
2635 (version "0.3.0")
2636 (source (origin
2637 (method url-fetch)
2638 (uri (rubygems-uri "nenv" version))
2639 (sha256
2640 (base32
2641 "0r97jzknll9bhd8yyg2bngnnkj8rjhal667n7d32h8h7ny7nvpnr"))))
2642 (build-system ruby-build-system)
2643 (arguments
2644 `(#:tests? #f)) ; no tests included
2645 (native-inputs
2646 `(("ruby-rspec" ,ruby-rspec)
2647 ("bundler" ,bundler)))
2648 (synopsis "Ruby interface for modifying the environment")
2649 (description "Nenv provides a convenient wrapper for Ruby's ENV to modify
2650and inspect the environment.")
2651 (home-page "https://github.com/e2/nenv")
2652 (license license:expat)))
2653
2654(define-public ruby-ptools
2655 (package
2656 (name "ruby-ptools")
2657 (version "1.3.5")
2658 (source (origin
2659 (method url-fetch)
2660 (uri (rubygems-uri "ptools" version))
2661 (sha256
2662 (base32
2663 "1jb1h1nsk9zwykpniw8filbsk26kjsdlpk5wz6w0zyamcd41h87j"))))
2664 (build-system ruby-build-system)
2665 (arguments
2666 '(#:phases (modify-phases %standard-phases
2667 (add-after 'unpack 'patch-/bin/ls
2668 (lambda _
2669 (substitute* "test/test_binary.rb"
2670 (("/bin/ls")
2671 (which "ls")))
2672 #t))
2673 (add-before 'install 'create-gem
2674 (lambda _
2675 ;; Do not attempt to sign the gem.
2676 (substitute* "Rakefile"
2677 (("spec\\.signing_key = .*")
2678 ""))
2679 (invoke "rake" "gem:create"))))))
2680 (synopsis "Extra methods for Ruby's @code{File} class")
2681 (description
2682 "The @dfn{ptools} (power tools) library extends Ruby's core @code{File}
2683class with many additional methods modelled after common POSIX tools, such as
2684@code{File.which} for finding executables, @code{File.tail} to print the last
2685lines of a file, @code{File.wc} to count words, and so on.")
2686 (home-page "https://github.com/djberg96/ptools")
2687 (license license:artistic2.0)))
2688
2689(define-public ruby-permutation
2690 (package
2691 (name "ruby-permutation")
2692 (version "0.1.8")
2693 (source (origin
2694 (method url-fetch)
2695 (uri (rubygems-uri "permutation" version))
2696 (sha256
2697 (base32
2698 "13crwk2vfbzv99czva7881027dbcnidihmvx2jc58z2vm3bp9sl8"))))
2699 (build-system ruby-build-system)
2700 (arguments
2701 `(#:phases
2702 (modify-phases %standard-phases
2703 (add-after 'unpack 'fix-rakefile
2704 (lambda _
2705 (substitute* "Rakefile"
2706 (("require 'rake/gempackagetask'")
2707 "require 'rubygems/package_task'")
2708 (("include Config") ""))
2709 #t))
2710 (replace 'check
2711 (lambda _
2712 (invoke "ruby" "-Ilib" "test/test.rb"))))))
2713 (synopsis "Library to perform operations with sequence permutations")
2714 (description "This package provides a Ruby library to perform different
2715operations with permutations of sequences, such as strings and arrays.")
2716 (home-page "https://flori.github.io/permutation")
2717 (license license:gpl2))) ; GPL 2 only
2718
2719(define-public ruby-shellany
2720 (package
2721 (name "ruby-shellany")
2722 (version "0.0.1")
2723 (source (origin
2724 (method url-fetch)
2725 (uri (rubygems-uri "shellany" version))
2726 (sha256
2727 (base32
2728 "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf"))))
2729 (build-system ruby-build-system)
2730 (arguments
2731 `(#:test-target "default"
2732 #:phases
2733 (modify-phases %standard-phases
2734 (add-after 'unpack 'fix-version-test
2735 (lambda _
2736 (substitute* "spec/shellany_spec.rb"
2737 (("^RSpec") "require \"shellany\"\nRSpec"))
2738 #t)))))
2739 (native-inputs
2740 `(("ruby-rspec" ,ruby-rspec)
2741 ("ruby-nenv" ,ruby-nenv)
2742 ("bundler" ,bundler)))
2743 (synopsis "Capture command output")
2744 (description "Shellany is a Ruby library providing functions to capture
2745the output produced by running shell commands.")
2746 (home-page "https://rubygems.org/gems/shellany")
2747 (license license:expat)))
2748
2749(define-public ruby-notiffany
2750 (package
2751 (name "ruby-notiffany")
2752 (version "0.1.3")
2753 (source (origin
2754 (method url-fetch)
2755 (uri (rubygems-uri "notiffany" version))
2756 (sha256
2757 (base32
2758 "0f47h3bmg1apr4x51szqfv3rh2vq58z3grh4w02cp3bzbdh6jxnk"))))
2759 (build-system ruby-build-system)
2760 ;; Tests are not included in the gem.
2761 (arguments `(#:tests? #f))
2762 (propagated-inputs
2763 `(("ruby-shellany" ,ruby-shellany)
2764 ("ruby-nenv" ,ruby-nenv)))
2765 (native-inputs
2766 `(("bundler" ,bundler)))
2767 (synopsis "Wrapper library for notification libraries")
2768 (description "Notiffany is a Ruby wrapper library for notification
2769libraries such as Libnotify.")
2770 (home-page "https://github.com/guard/notiffany")
2771 (license license:expat)))
2772
2773(define-public ruby-forking-test-runner
2774 (package
2775 (name "ruby-forking-test-runner")
2776 (version "1.6.0")
2777 (home-page "https://github.com/grosser/forking_test_runner")
2778 (source (origin
2779 (method git-fetch)
2780 (uri (git-reference (url home-page)
2781 (commit (string-append "v" version))))
2782 (file-name (git-file-name name version))
2783 (sha256
2784 (base32
2785 "1mrglzkj2nrgisccf2f30zbfmcs0awv1g3lw994b2az90fl39x8m"))))
2786 (build-system ruby-build-system)
2787 (arguments
2788 '(#:test-target "spec"
2789 ;; FIXME: ActiveRecord depends on sqlite3 1.3.6, but Guix has
2790 ;; 1.4.1, which in turn breaks the tests that use ActiveRecord.
2791 #:tests? #f
2792 #:phases (modify-phases %standard-phases
2793 (replace 'replace-git-ls-files
2794 (lambda _
2795 (substitute* "forking_test_runner.gemspec"
2796 (("`git ls-files lib/ bin/ MIT-LICENSE`")
2797 "`find lib/ bin/ MIT-LICENSE -type f | sort`"))
2798 #t))
2799 (add-before 'check 'remove-version-constraints
2800 (lambda _
2801 ;; Ignore hard coded version constraints for the tests.
2802 (delete-file "Gemfile.lock")
2803 #t))
2804 (add-before 'check 'set-HOME
2805 (lambda _
2806 ;; Many tests invoke Bundler, and fails when Bundler
2807 ;; warns that /homeless-shelter does not exist.
2808 (setenv "HOME" "/tmp")
2809 #t)))))
2810 (native-inputs
2811 `(("ruby-activerecord" ,ruby-activerecord)
2812 ("ruby-bump" ,ruby-bump)
2813 ("ruby-rspec" ,ruby-rspec)
2814 ("ruby-sqlite3" ,ruby-sqlite3)
2815 ("ruby-wwtd" ,ruby-wwtd)))
2816 (propagated-inputs
2817 `(("ruby-parallel-tests" ,ruby-parallel-tests)))
2818 (synopsis "Run every test in a fork")
2819 (description
2820 "This package is a wrapper around @code{parallel_tests} that runs every
2821test in a fork to avoid pollution and get clean output per test.")
2822 (license license:expat)))
2823
2824(define-public ruby-formatador
2825 (package
2826 (name "ruby-formatador")
2827 (version "0.2.5")
2828 (source (origin
2829 (method url-fetch)
2830 (uri (rubygems-uri "formatador" version))
2831 (sha256
2832 (base32
2833 "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0"))))
2834 (build-system ruby-build-system)
2835 ;; Circular dependency: Tests require ruby-shindo, which requires
2836 ;; ruby-formatador at runtime.
2837 (arguments `(#:tests? #f))
2838 (synopsis "Ruby library to format text on stdout")
2839 (description "Formatador is a Ruby library to format text printed to the
2840standard output stream.")
2841 (home-page "https://github.com/geemus/formatador")
2842 (license license:expat)))
2843
2844(define-public ruby-fuubar
2845 (package
2846 (name "ruby-fuubar")
2847 (version "2.3.2")
2848 (source
2849 (origin
2850 ;; Fetch from the git repository, as the gem package doesn't include
2851 ;; the tests.
2852 (method git-fetch)
2853 (uri (git-reference
2854 (url "https://github.com/thekompanee/fuubar")
2855 (commit (string-append "releases/v" version))))
2856 (file-name (git-file-name name version))
2857 (sha256
2858 (base32
2859 "0jm1x2xp13csbnadixaikj7mlkp5yk4byx51npm56zi13izp7259"))))
2860 (build-system ruby-build-system)
2861 (arguments
2862 '(;; TODO: Some tests fail, unsure why.
2863 ;; 21 examples, 7 failures
2864 #:tests? #f
2865 #:phases
2866 (modify-phases %standard-phases
2867 (add-before 'build 'delete-certificate
2868 (lambda _
2869 ;; Remove 's.cert_chain' as we do not build with a private key
2870 (substitute* "fuubar.gemspec"
2871 ((".*cert_chain.*") "")
2872 ((".*signing_key.*") ""))
2873 #t))
2874 (replace 'check
2875 (lambda* (#:key tests? #:allow-other-keys)
2876 (when tests?
2877 (invoke "rspec"))
2878 #t)))))
2879 (native-inputs
2880 `(("bundler" ,bundler)))
2881 (propagated-inputs
2882 `(("ruby-rspec-core" ,ruby-rspec-core)
2883 ("ruby-progressbar" ,ruby-progressbar)))
2884 (synopsis "Fuubar is an RSpec formatter that uses a progress bar")
2885 (description
2886 "Fuubar is an RSpec formatter that uses a progress bar instead of a
2887string of letters and dots as feedback. It also stops on the first test
2888failure.")
2889 (home-page "https://github.com/thekompanee/fuubar")
2890 (license license:expat)))
2891
2892(define-public ruby-haml
2893 (package
2894 (name "ruby-haml")
2895 (version "5.0.4")
2896 (source
2897 (origin
2898 (method url-fetch)
2899 (uri (rubygems-uri "haml" version))
2900 (sha256
2901 (base32
2902 "1q0a9fvqh8kn6wm97fcks6qzbjd400bv8bx748w8v87m7p4klhac"))))
2903 (build-system ruby-build-system)
2904 (arguments
2905 '(#:tests? #f)) ; No included tests
2906 (propagated-inputs
2907 `(("ruby-tilt" ,ruby-tilt)
2908 ("ruby-temple" ,ruby-temple)))
2909 (synopsis "Haml is a Ruby library to generate HTML documents")
2910 (description
2911 "@acronym{Haml, HTML Abstraction Markup Language} is a layer on top of
2912HTML or XML that is designed to express the structure of documents using
2913indentation rather than closing tags. It was originally envisioned as a
2914plugin for Ruby on Rails, but it can function as a stand-alone templating
2915engine.")
2916 (home-page "http://haml.info/")
2917 (license license:expat)))
2918
2919(define-public ruby-hamster
2920 (package
2921 (name "ruby-hamster")
2922 (version "3.0.0")
2923 (source
2924 (origin
2925 (method url-fetch)
2926 (uri (rubygems-uri "hamster" version))
2927 (sha256
2928 (base32
2929 "1n1lsh96vnyc1pnzyd30f9prcsclmvmkdb3nm5aahnyizyiy6lar"))))
2930 (build-system ruby-build-system)
2931 (arguments
2932 '(#:phases
2933 (modify-phases %standard-phases
2934 (add-after 'unpack 'remove-unnecessary-dependencies
2935 (lambda _
2936 ;; pry is a debugging tool, and is unnecessary when running the
2937 ;; tests
2938 (substitute* "spec/lib/hamster/vector/insert_spec.rb"
2939 (("require 'pry'") ""))
2940 (substitute* "spec/spec_helper.rb"
2941 (("require \"pry\"") "")
2942 ;; CodeClimate is an online service, and is unnecessary for
2943 ;; running the tests
2944 (("require \"codeclimate-test-reporter\"") "")
2945 (("CodeClimate.*\n") ""))
2946 #t))
2947 ;; No Rakefile is included, so run rspec directly.
2948 (replace 'check
2949 (lambda* (#:key tests? #:allow-other-keys)
2950 (when tests?
2951 (invoke "rspec"))
2952 #t)))))
2953 (propagated-inputs
2954 `(("ruby-concurrent" ,ruby-concurrent)))
2955 (native-inputs
2956 `(("ruby-rspec" ,ruby-rspec)))
2957 (synopsis "Efficient, immutable, thread-safe collection classes for Ruby")
2958 (description
2959 "Hamster provides 6 persistent data structures: @code{Hash}, @code{Vector},
2960@code{Set}, @code{SortedSet}, @code{List}, and @code{Deque} (which works as an
2961immutable queue or stack).")
2962 (home-page "https://github.com/hamstergem/hamster")
2963 (license license:expat)))
2964
2965(define-public ruby-hashdiff
2966 (package
2967 (name "ruby-hashdiff")
2968 (version "0.3.8")
2969 (source
2970 (origin
2971 (method url-fetch)
2972 (uri (rubygems-uri "hashdiff" version))
2973 (sha256
2974 (base32
2975 "19ykg5pax8798nh1yv71adkx0zzs7gn2rxjj86v7nsw0jba5lask"))))
2976 (build-system ruby-build-system)
2977 (arguments
2978 '(#:phases
2979 (modify-phases %standard-phases
2980 ;; Run tests directly via rspec to avoid Rake issue:
2981 ;; NoMethodError: undefined method `last_comment'
2982 (replace 'check
2983 (lambda* (#:key tests? #:allow-other-keys)
2984 (when tests?
2985 (invoke "rspec"))
2986 #t)))))
2987 (native-inputs
2988 `(("bundler" ,bundler)
2989 ("ruby-rspec" ,ruby-rspec-2)))
2990 (synopsis "HashDiff computes the smallest difference between two hashes")
2991 (description
2992 "HashDiff is a Ruby library to compute the smallest difference between
2993two hashes.")
2994 (home-page "https://github.com/liufengyun/hashdiff")
2995 (license license:expat)))
2996
2997(define-public ruby-hydra
2998 ;; No releases yet.
2999 (let ((commit "5abfa378743756ae4d9306cc134bcc482f5c9525")
3000 (revision "0"))
3001 (package
3002 (name "ruby-hydra")
3003 (version (git-version "0.0" revision commit))
3004 (home-page "https://github.com/hyphenation/hydra")
3005 (source (origin
3006 (method git-fetch)
3007 (uri (git-reference (url home-page) (commit commit)))
3008 (file-name (git-file-name name version))
3009 (sha256
3010 (base32
3011 "1cik398l2765y3d9sdhjzki3303hkry58ac6jlkiy7iy62nm529f"))))
3012 (build-system ruby-build-system)
3013 (arguments
3014 '(#:phases (modify-phases %standard-phases
3015 (add-after 'unpack 'make-files-writable
3016 (lambda _
3017 (for-each make-file-writable (find-files "."))
3018 #t))
3019 (replace 'check
3020 (lambda _
3021 (invoke "rspec"))))))
3022 (native-inputs
3023 `(("ruby-rspec" ,ruby-rspec)))
3024 (propagated-inputs
3025 `(("ruby-byebug" ,ruby-byebug)))
3026 (synopsis "Ruby hyphenation patterns")
3027 (description
3028 "ruby-hydra is a Ruby library for working with hyphenation patterns.")
3029 (license license:expat))))
3030
3031(define-public ruby-shindo
3032 (package
3033 (name "ruby-shindo")
3034 (version "0.3.8")
3035 (source (origin
3036 (method url-fetch)
3037 (uri (rubygems-uri "shindo" version))
3038 (sha256
3039 (base32
3040 "0s8v1jbz8i0jh92f2fgxb3p51l1azrpkc8nv4mhrqy4vndpvd7wq"))))
3041 (build-system ruby-build-system)
3042 (arguments
3043 `(#:test-target "shindo_tests"
3044 #:phases
3045 (modify-phases %standard-phases
3046 (add-after 'unpack 'fix-tests
3047 (lambda _
3048 (substitute* "tests/tests_helper.rb"
3049 (("-rubygems") ""))
3050 (substitute* "Rakefile"
3051 (("system \"shindo") "system \"./bin/shindo")
3052 ;; This test doesn't work, so we disable it.
3053 (("fail \"The build_error test should fail") "#")
3054 ((" -rubygems") ""))
3055 #t)))))
3056 (propagated-inputs
3057 `(("ruby-formatador" ,ruby-formatador)))
3058 (synopsis "Simple depth first Ruby testing")
3059 (description "Shindo is a simple depth first testing library for Ruby.")
3060 (home-page "https://github.com/geemus/shindo")
3061 (license license:expat)))
3062
3063(define-public ruby-rubygems-tasks
3064 (package
3065 (name "ruby-rubygems-tasks")
3066 (version "0.2.5")
3067 (source (origin
3068 (method url-fetch)
3069 (uri (rubygems-uri "rubygems-tasks" version))
3070 (sha256
3071 (base32
3072 "1x3sz3n2dlknd3v7w1mrq6f0ag6pwzhjvg7z29p75w3p42ma1gbx"))))
3073 (build-system ruby-build-system)
3074 ;; Tests need Internet access.
3075 (arguments `(#:tests? #f))
3076 (native-inputs
3077 `(("ruby-rspec" ,ruby-rspec)
3078 ("ruby-yard" ,ruby-yard)))
3079 (synopsis "Rake tasks for managing and releasing Ruby Gems")
3080 (description "Rubygems-task provides Rake tasks for managing and releasing
3081Ruby Gems.")
3082 (home-page "https://github.com/postmodern/rubygems-tasks")
3083 (license license:expat)))
3084
3085(define-public ruby-rubyzip
3086 (package
3087 (name "ruby-rubyzip")
3088 (version "1.2.1")
3089 (source
3090 (origin
3091 (method url-fetch)
3092 (uri (rubygems-uri "rubyzip" version))
3093 (sha256
3094 (base32
3095 "06js4gznzgh8ac2ldvmjcmg9v1vg9llm357yckkpylaj6z456zqz"))))
3096 (build-system ruby-build-system)
3097 (arguments
3098 '(#:phases
3099 (modify-phases %standard-phases
3100 (add-before 'check 'patch-tests
3101 (lambda* (#:key inputs #:allow-other-keys)
3102 (substitute* "test/gentestfiles.rb"
3103 (("/usr/bin/zip")
3104 (string-append
3105 (assoc-ref inputs "zip") "/bin/zip")))
3106 (substitute* "test/input_stream_test.rb"
3107 (("/usr/bin/env ruby") (which "ruby")))
3108 #t)))))
3109 (native-inputs
3110 `(("bundler" ,bundler)
3111 ("ruby-simplecov" ,ruby-simplecov)
3112 ("zip" ,zip)
3113 ("unzip" ,unzip)))
3114 (synopsis "Ruby module is for reading and writing zip files")
3115 (description
3116 "The rubyzip module provides ways to read from and create zip files.")
3117 (home-page "https://github.com/rubyzip/rubyzip")
3118 (license license:bsd-2)))
3119
3120(define-public ruby-simplecov-html
3121 (package
3122 (name "ruby-simplecov-html")
3123 (version "0.10.2")
3124 (source (origin
3125 (method url-fetch)
3126 (uri (rubygems-uri "simplecov-html" version))
3127 (sha256
3128 (base32
3129 "1lihraa4rgxk8wbfl77fy9sf0ypk31iivly8vl3w04srd7i0clzn"))))
3130 (build-system ruby-build-system)
3131 (arguments `(#:tests? #f)) ; there are no tests
3132 (native-inputs
3133 `(("bundler" ,bundler)))
3134 (synopsis "Default HTML formatter for SimpleCov code coverage tool")
3135 (description "This package provides the default HTML formatter for
3136the SimpleCov code coverage tool for Ruby version 1.9 and above.")
3137 (home-page "https://github.com/colszowka/simplecov-html")
3138 (license license:expat)))
3139
3140(define-public ruby-simplecov
3141 (package
3142 (name "ruby-simplecov")
3143 (version "0.17.1")
3144 (source (origin
3145 (method url-fetch)
3146 (uri (rubygems-uri "simplecov" version))
3147 (sha256
3148 (base32
3149 "1135k46nik05sdab30yxb8264lqiz01c8v000g16cl9pjc4mxrdw"))))
3150 (build-system ruby-build-system)
3151 ;; Simplecov depends on rubocop for code style checking at build time.
3152 ;; Rubocop needs simplecov at build time.
3153 (arguments `(#:tests? #f))
3154 (propagated-inputs
3155 `(("ruby-json" ,ruby-json)
3156 ("ruby-docile" ,ruby-docile)
3157 ("ruby-simplecov-html" ,ruby-simplecov-html)))
3158 (native-inputs
3159 `(("bundler" ,bundler)))
3160 (synopsis "Code coverage framework for Ruby")
3161 (description "SimpleCov is a code coverage framework for Ruby with a
3162powerful configuration library and automatic merging of coverage across test
3163suites.")
3164 (home-page "https://github.com/colszowka/simplecov")
3165 (license license:expat)))
3166
3167(define-public ruby-useragent
3168 (package
3169 (name "ruby-useragent")
3170 (version "0.16.10")
3171 (source (origin
3172 (method url-fetch)
3173 (uri (rubygems-uri "useragent" version))
3174 (sha256
3175 (base32
3176 "1fv5kvq494swy0p17h9qya9r50w15xsi9zmvhzb8gh55kq6ki50p"))))
3177 (build-system ruby-build-system)
3178 (arguments
3179 '(#:tests? #f)) ; no test suite
3180 (synopsis "HTTP user agent parser for Ruby")
3181 (description "UserAgent is a Ruby library that parses and compares HTTP
3182User Agents.")
3183 (home-page "https://github.com/gshutler/useragent")
3184 (license license:expat)))
3185
3186(define-public ruby-backports
3187 (package
3188 (name "ruby-backports")
3189 (version "3.11.4")
3190 (source
3191 (origin
3192 (method url-fetch)
3193 (uri (rubygems-uri "backports" version))
3194 (sha256
3195 (base32
3196 "1hshjxww2h7s0dk57njrygq4zpp0nlqrjfya7zwm27iq3rhc3y8g"))))
3197 (build-system ruby-build-system)
3198 (arguments
3199 '(;; TODO: This should be default, but there is one test failure
3200 #:test-target "all_spec"))
3201 (native-inputs
3202 `(("ruby-mspec" ,ruby-mspec)
3203 ("ruby-activesupport" ,ruby-activesupport)))
3204 (synopsis "Backports of the features in newer Ruby versions")
3205 (description
3206 "Backports enables more compatibility across Ruby versions by providing
3207backports of some features.")
3208 (home-page "https://github.com/marcandre/backports")
3209 (license license:expat)))
3210
3211(define-public ruby-bacon
3212 (package
3213 (name "ruby-bacon")
3214 (version "1.2.0")
3215 (source (origin
3216 (method url-fetch)
3217 (uri (rubygems-uri "bacon" version))
3218 (sha256
3219 (base32
3220 "1f06gdj77bmwzc1k5iragl1595hbn67yc7sqvs56ca8plrr2vmai"))))
3221 (build-system ruby-build-system)
3222 (synopsis "Small RSpec clone")
3223 (description "Bacon is a small RSpec clone providing all essential
3224features.")
3225 (home-page "https://github.com/chneukirchen/bacon")
3226 (license license:expat)))
3227
3228(define-public ruby-bacon-bits
3229 (package
3230 (name "ruby-bacon-bits")
3231 (version "0.1.0")
3232 (source
3233 (origin
3234 (method url-fetch)
3235 (uri (rubygems-uri "bacon-bits" version))
3236 (sha256
3237 (base32
3238 "1ghpj8ja94lhi8rgi872hqk4fd2amz2k7g9znd64z5dj7v6l0dmx"))))
3239 (build-system ruby-build-system)
3240 (arguments
3241 ;; No tests
3242 '(#:tests? #f))
3243 (propagated-inputs `(("ruby-bacon" ,ruby-bacon)))
3244 (synopsis "Extensions to Bacon, for disabling tests, before and after
3245blocks and more")
3246 (description
3247 "This extends the bacon testing framework with useful extensions to
3248disable tests, have before and after blocks that run once and more.")
3249 (home-page "https://github.com/cldwalker/bacon-bits")
3250 (license license:expat)))
3251
3252(define-public ruby-bacon-colored-output
3253 (package
3254 (name "ruby-bacon-colored-output")
3255 (version "1.1.1")
3256 (source
3257 (origin
3258 (method url-fetch)
3259 (uri (rubygems-uri "bacon-colored_output" version))
3260 (sha256
3261 (base32
3262 "1znyh3vkfdlmf19p3k4zip88ibym41dn5g4p4n5hmks2iznb7qpx"))))
3263 (build-system ruby-build-system)
3264 (arguments
3265 '(;; No included tests
3266 #:tests? #f))
3267 (propagated-inputs
3268 `(("ruby-bacon" ,ruby-bacon)))
3269 (synopsis "Colored output for Bacon test framework")
3270 (description
3271 "This package adds color through ANSI escape codes to Bacon test
3272output.")
3273 (home-page "https://github.com/whitequark/bacon-colored_output")
3274 (license license:expat)))
3275
3276(define-public ruby-connection-pool
3277 (package
3278 (name "ruby-connection-pool")
3279 (version "2.2.2")
3280 (source (origin
3281 (method url-fetch)
3282 (uri (rubygems-uri "connection_pool" version))
3283 (sha256
3284 (base32
3285 "0lflx29mlznf1hn0nihkgllzbj8xp5qasn8j7h838465pi399k68"))))
3286 (build-system ruby-build-system)
3287 (native-inputs
3288 `(("bundler" ,bundler)))
3289 (synopsis "Generic connection pool for Ruby")
3290 (description "Connection_pool provides a generic connection pooling
3291interface for Ruby programs.")
3292 (home-page "https://github.com/mperham/connection_pool")
3293 (license license:expat)))
3294
3295(define-public ruby-fast-gettext
3296 (package
3297 (name "ruby-fast-gettext")
3298 (version "2.0.3")
3299 (home-page "https://github.com/grosser/fast_gettext")
3300 (source (origin
3301 (method git-fetch)
3302 (uri (git-reference (url home-page)
3303 (commit (string-append "v" version))))
3304 (file-name (git-file-name name version))
3305 (sha256
3306 (base32
3307 "1dg14apq5sfjshhcq0idphhs7aq9ikzswhqmn689p1h76mxqr1v6"))))
3308 (build-system ruby-build-system)
3309 (arguments
3310 '(#:test-target "spec"
3311 #:phases (modify-phases %standard-phases
3312 (add-before 'check 'remove-version-constraints
3313 (lambda _
3314 (delete-file "Gemfile.lock")
3315 #t))
3316 (add-before 'check 'remove-activerecord-test
3317 (lambda _
3318 ;; FIXME: This test fails because ActiveRecord depends on
3319 ;; a different version of ruby-sqlite than the currently
3320 ;; available one.
3321 (delete-file
3322 "spec/fast_gettext/translation_repository/db_spec.rb")
3323 #t))
3324 (add-before 'check 'disable-i18n-test
3325 (lambda _
3326 ;; XXX: This test checks i18n intricasies with Rails 3 and
3327 ;; automatically disables itself for Rails 4.0, but does
3328 ;; not know about newer versions as it has not been updated
3329 ;; since 2014. Disable for later versions of Rails too.
3330 (substitute* "spec/fast_gettext/vendor/string_spec.rb"
3331 (((string-append "ActiveRecord::VERSION::MAJOR == 4 and "
3332 "ActiveRecord::VERSION::MINOR == 0"))
3333 "ActiveRecord::VERSION::MAJOR >= 4"))
3334 #t)))))
3335 (native-inputs
3336 `(;; For tests.
3337 ("ruby-activerecord" ,ruby-activerecord)
3338 ("ruby-activesupport" ,ruby-activesupport)
3339 ("ruby-bump" ,ruby-bump)
3340 ("ruby-forking-test-runner" ,ruby-forking-test-runner)
3341 ("ruby-i18n" ,ruby-i18n)
3342 ("ruby-rubocop" ,ruby-rubocop)
3343 ("ruby-rspec" ,ruby-rspec)
3344 ("ruby-single-cov" ,ruby-single-cov)
3345 ("ruby-sqlite3" ,ruby-sqlite3)
3346 ("ruby-wwtd" ,ruby-wwtd)))
3347 (synopsis "Fast implementation of @code{GetText}")
3348 (description
3349 "This package provides an alternative implementation of the Ruby
3350@code{GetText} library that is approximately 12x faster yet thread safe.")
3351 ;; Some parts are covered by the Ruby license, see file headers.
3352 (license (list license:expat license:ruby))))
3353
3354(define-public ruby-net-http-persistent
3355 (package
3356 (name "ruby-net-http-persistent")
3357 (version "3.0.0")
3358 (source (origin
3359 (method url-fetch)
3360 (uri (rubygems-uri "net-http-persistent" version))
3361 (sha256
3362 (base32
3363 "156rv95bgxfz6qw5y1r7c7bswr77918hygl8dyl14qzbqc5vyp18"))))
3364 (build-system ruby-build-system)
3365 (native-inputs
3366 `(("ruby-connection-pool" ,ruby-connection-pool)
3367 ("ruby-hoe" ,ruby-hoe)))
3368 (synopsis "Persistent HTTP connection manager")
3369 (description "Net::HTTP::Persistent manages persistent HTTP connections
3370using Net::HTTP, supporting reconnection and retry according to RFC 2616.")
3371 (home-page "https://github.com/drbrain/net-http-persistent")
3372 (license license:expat)))
3373
3374(define-public ruby-power-assert
3375 (package
3376 (name "ruby-power-assert")
3377 (version "1.1.5")
3378 (source (origin
3379 (method url-fetch)
3380 (uri (rubygems-uri "power_assert" version))
3381 (sha256
3382 (base32
3383 "1dii0wkfa0jm8sk9b20zl1z4980dmrjh0zqnii058485pp3ws10s"))))
3384 (build-system ruby-build-system)
3385 (arguments
3386 '(#:tests? #f)) ; No included tests
3387 (native-inputs
3388 `(("bundler" ,bundler)))
3389 (synopsis "Assert library with descriptive assertion messages")
3390 (description "Power-assert is an assertion library providing descriptive
3391assertion messages for tests.")
3392 (home-page "https://github.com/k-tsj/power_assert")
3393 (license (list license:bsd-2 license:ruby))))
3394
3395(define-public ruby-powerpack
3396 (package
3397 (name "ruby-powerpack")
3398 (version "0.1.2")
3399 (source
3400 (origin
3401 (method url-fetch)
3402 (uri (rubygems-uri "powerpack" version))
3403 (sha256
3404 (base32
3405 "1r51d67wd467rpdfl6x43y84vwm8f5ql9l9m85ak1s2sp3nc5hyv"))))
3406 (build-system ruby-build-system)
3407 (arguments
3408 '(#:test-target "spec"))
3409 (native-inputs
3410 `(("bundler" ,bundler)
3411 ("ruby-rspec" ,ruby-rspec)
3412 ("ruby-yard" ,ruby-yard)))
3413 (synopsis "Useful extensions to core Ruby classes")
3414 (description
3415 "This package provides a few useful extensions to core Ruby classes,
3416including @code{Array}, @code{Enumerable}, @code{Hash}, @code{Numeric}, and
3417@code{String}.")
3418 (home-page "https://github.com/bbatsov/powerpack")
3419 (license license:expat)))
3420
3421(define-public ruby-locale
3422 (package
3423 (name "ruby-locale")
3424 (version "2.1.2")
3425 (source (origin
3426 (method url-fetch)
3427 (uri (rubygems-uri "locale" version))
3428 (sha256
3429 (base32
3430 "1sls9bq4krx0fmnzmlbn64dw23c4d6pz46ynjzrn9k8zyassdd0x"))))
3431 (build-system ruby-build-system)
3432 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
3433 ;; which needs ruby-gettext, which needs ruby-locale. To break the
3434 ;; dependency cycle we disable tests.
3435 (arguments `(#:tests? #f))
3436 (native-inputs
3437 `(("bundler" ,bundler)
3438 ("ruby-yard" ,ruby-yard)))
3439 (synopsis "Ruby library providing basic localization APIs")
3440 (description
3441 "Ruby-Locale is the pure ruby library which provides basic APIs for
3442localization.")
3443 (home-page "https://github.com/ruby-gettext/locale")
3444 (license (list license:lgpl3+ license:ruby))))
3445
3446(define-public ruby-temple
3447 (package
3448 (name "ruby-temple")
3449 (version "0.8.2")
3450 (source
3451 (origin
3452 (method url-fetch)
3453 (uri (rubygems-uri "temple" version))
3454 (sha256
3455 (base32
3456 "060zzj7c2kicdfk6cpnn40n9yjnhfrr13d0rsbdhdij68chp2861"))))
3457 (build-system ruby-build-system)
3458 (native-inputs
3459 `(("ruby-tilt" ,ruby-tilt)
3460 ("ruby-bacon" ,ruby-bacon)
3461 ("ruby-erubis" ,ruby-erubis)))
3462 (synopsis "Template compilation framework in Ruby")
3463 (description
3464 "Temple is an abstraction and framework for compiling templates to pure
3465Ruby.")
3466 (home-page "https://github.com/judofyr/temple")
3467 (license license:expat)))
3468
3469(define-public ruby-text
3470 (package
3471 (name "ruby-text")
3472 (version "1.3.1")
3473 (source (origin
3474 (method url-fetch)
3475 (uri (rubygems-uri "text" version))
3476 (sha256
3477 (base32
3478 "1x6kkmsr49y3rnrin91rv8mpc3dhrf3ql08kbccw8yffq61brfrg"))))
3479 (build-system ruby-build-system)
3480 (synopsis "Collection of text algorithms for Ruby")
3481 (description
3482 "This package provides a collection of text algorithms: Levenshtein,
3483Soundex, Metaphone, Double Metaphone, Porter Stemming.")
3484 (home-page "https://github.com/threedaymonk/text")
3485 (license license:expat)))
3486
3487(define-public ruby-gettext
3488 (package
3489 (name "ruby-gettext")
3490 (version "3.1.7")
3491 (source (origin
3492 (method url-fetch)
3493 (uri (rubygems-uri "gettext" version))
3494 (sha256
3495 (base32
3496 "1hg9islkm324mb4sd4za1fgafj1hqnm3bdvzj3k4fqpnzqnbcfiq"))))
3497 (build-system ruby-build-system)
3498 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
3499 ;; which needs ruby-gettext. To break the dependency cycle we disable
3500 ;; tests.
3501 (arguments `(#:tests? #f))
3502 (propagated-inputs
3503 `(("ruby-locale" ,ruby-locale)
3504 ("ruby-text" ,ruby-text)))
3505 (native-inputs
3506 `(("bundler" ,bundler)
3507 ("ruby-yard" ,ruby-yard)))
3508 (synopsis "GNU gettext-like program for Ruby")
3509 (description
3510 "Gettext is a GNU gettext-like program for Ruby. The catalog
3511file (po-file) used is the same as that used by GNU gettext, allowing you to
3512use GNU gettext tools for maintenance.")
3513 (home-page "https://ruby-gettext.github.com/")
3514 (license (list license:lgpl3+ license:ruby))))
3515
3516(define-public ruby-packnga
3517 (package
3518 (name "ruby-packnga")
3519 (version "1.0.4")
3520 (source (origin
3521 (method url-fetch)
3522 (uri (rubygems-uri "packnga" version))
3523 (sha256
3524 (base32
3525 "1vv2j0i43s4xid2km5hgrrxqlqpwgq8nlm8kaxfg2531c1vwfsd4"))))
3526 (build-system ruby-build-system)
3527 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga.
3528 ;; To break the dependency cycle we disable tests.
3529 (arguments `(#:tests? #f))
3530 (propagated-inputs
3531 `(("ruby-gettext" ,ruby-gettext)
3532 ("ruby-yard" ,ruby-yard)))
3533 (native-inputs
3534 `(("bundler" ,bundler)))
3535 (synopsis "Utility library to package internationalized libraries")
3536 (description
3537 "Packnga is a library to translate to many languages using YARD.")
3538 (home-page "http://ranguba.org/packnga/")
3539 (license license:lgpl2.0+)))
3540
3541(define-public ruby-test-construct
3542 (package
3543 (name "ruby-test-construct")
3544 (version "2.0.1")
3545 (source
3546 (origin
3547 (method url-fetch)
3548 (uri (rubygems-uri "test_construct" version))
3549 (sha256
3550 (base32
3551 "1a2ym3l068d0pxzzr95kvqx87zpdsarxslz9ygd4qfm9frrz0kgj"))))
3552 (build-system ruby-build-system)
3553 (native-inputs
3554 `(("bundler" ,bundler)
3555 ("ruby-mocha" ,ruby-mocha)
3556 ("ruby-rspec" ,ruby-rspec)))
3557 (synopsis "Creates temporary files and directories for testing")
3558 (description
3559 "TestConstruct is a @acronym{DSL, Domain Specific Language} for creating
3560temporary files and directories during tests.")
3561 (home-page "https://github.com/bhb/test_construct")
3562 (license license:expat)))
3563
3564(define-public ruby-test-unit
3565 (package
3566 (name "ruby-test-unit")
3567 (version "3.2.5")
3568 (source (origin
3569 (method url-fetch)
3570 (uri (rubygems-uri "test-unit" version))
3571 (sha256
3572 (base32
3573 "05bx36fw01iqz0xqhvjfrwjgnj1zx3b2vn6w1fzp19rchd7zqc52"))))
3574 (build-system ruby-build-system)
3575 (propagated-inputs
3576 `(("ruby-power-assert" ,ruby-power-assert)))
3577 (native-inputs
3578 `(("bundler" ,bundler)
3579 ("ruby-packnga" ,ruby-packnga)
3580 ("ruby-yard" ,ruby-yard)))
3581 (synopsis "Unit testing framework for Ruby")
3582 (description "@code{Test::Unit} is unit testing framework for Ruby, based
3583on xUnit principles. These were originally designed by Kent Beck, creator of
3584extreme programming software development methodology, for Smalltalk's SUnit.
3585It allows writing tests, checking results and automated testing in Ruby.")
3586 (home-page "https://test-unit.github.io/")
3587 (license (list license:psfl license:ruby))))
3588
3589(define-public ruby-markaby
3590 (package
3591 (name "ruby-markaby")
3592 (version "0.9.0")
3593 (source
3594 (origin
3595 (method url-fetch)
3596 (uri (rubygems-uri "markaby" version))
3597 (sha256
3598 (base32
3599 "1j4jc31ycydbkh5h3q6zwidzpavg3g5mbb5lqyaczd3jrq78rd7i"))))
3600 (build-system ruby-build-system)
3601 (arguments
3602 '(#:phases
3603 (modify-phases %standard-phases
3604 ;; Run rspec manually without using the Rakefile, as the versions of
3605 ;; Rake and RSpec 2 are incompatible:
3606 ;;
3607 ;; NoMethodError: undefined method `last_comment'
3608 (replace 'check
3609 (lambda* (#:key tests? #:allow-other-keys)
3610 (when tests?
3611 (invoke "rspec"))
3612 #t)))))
3613 (propagated-inputs
3614 `(("ruby-builder" ,ruby-builder)))
3615 (native-inputs
3616 `(("bundler" ,bundler)
3617 ("ruby-rspec" ,ruby-rspec-2)))
3618 (synopsis "Write HTML pages in pure Ruby")
3619 (description
3620 "Markaby allows writing HTML packages in pure Ruby. This is similar to
3621the functionality provided by @acronym{ERB, Embedded Ruby}, but without the
3622mixture of HTML and additional ERB syntax.")
3623 (home-page "https://markaby.github.io/")
3624 (license license:expat)))
3625
3626(define-public ruby-maruku
3627 (package
3628 (name "ruby-maruku")
3629 (version "0.7.3")
3630 (source
3631 (origin
3632 (method url-fetch)
3633 (uri (rubygems-uri "maruku" version))
3634 (sha256
3635 (base32
3636 "1r7bxpgnx2hp3g12bjrmdrpv663dfqxsdp0af69kjhxmaxpia56x"))))
3637 (build-system ruby-build-system)
3638 (arguments
3639 '(;; TODO: 3 tests seem to fail due to HTML encoding issues
3640 #:tests? #f
3641 #:phases
3642 (modify-phases %standard-phases
3643 (replace 'check
3644 (lambda* (#:key tests? #:allow-other-keys)
3645 (when tests?
3646 (invoke "rspec"))
3647 #t)))))
3648 (native-inputs
3649 `(("ruby-rspec" ,ruby-rspec)
3650 ("ruby-simplecov" ,ruby-simplecov)
3651 ("ruby-nokogiri-diff" ,ruby-nokogiri-diff)))
3652 (synopsis "Markdown interpreter in Ruby")
3653 (description
3654 "Maruku is a Markdown interpreter in Ruby. It can export Markdown to
3655HTML, and PDF through LaTeX.")
3656 (home-page "https://github.com/bhollis/maruku")
3657 (license license:expat)))
3658
3659(define-public ruby-metaclass
3660 (package
3661 (name "ruby-metaclass")
3662 (version "0.0.4")
3663 (source (origin
3664 (method url-fetch)
3665 (uri (rubygems-uri "metaclass" version))
3666 (sha256
3667 (base32
3668 "0hp99y2b1nh0nr8pc398n3f8lakgci6pkrg4bf2b2211j1f6hsc5"))))
3669 (build-system ruby-build-system)
3670 (arguments
3671 `(#:phases
3672 (modify-phases %standard-phases
3673 (add-after 'unpack 'add-test-unit-to-search-path
3674 (lambda* (#:key inputs #:allow-other-keys)
3675 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
3676 (substitute* "Rakefile"
3677 (("t\\.libs << \"test\"" line)
3678 (string-append line "; t.libs << \""
3679 test-unit "/lib/ruby/vendor_ruby"
3680 "/gems/test-unit-"
3681 ,(package-version ruby-test-unit)
3682 "/lib\""))))
3683 #t)))))
3684 (native-inputs
3685 `(("bundler" ,bundler)
3686 ("ruby-test-unit" ,ruby-test-unit)))
3687 (synopsis "Ruby library adding metaclass method to all objects")
3688 (description
3689 "Metaclass is a Ruby library adding a @code{metaclass} method to all Ruby
3690objects.")
3691 (home-page "https://github.com/floehopper/metaclass")
3692 (license license:expat)))
3693
3694(define-public ruby-mkmf-lite
3695 (package
3696 (name "ruby-mkmf-lite")
3697 (version "0.3.2")
3698 (source (origin
3699 (method url-fetch)
3700 (uri (rubygems-uri "mkmf-lite" version))
3701 (sha256
3702 (base32
3703 "0br9k6zijj1zc25n8p7f2j1mwl58nfgdknf3q13h9k156jvrir06"))))
3704 (build-system ruby-build-system)
3705 (propagated-inputs
3706 `(("ruby-ptools" ,ruby-ptools)))
3707 (synopsis "Lightweight alternative to @code{mkmf}")
3708 (description
3709 "@code{mkmf-lite} is a light version of Ruby's @code{mkmf.rb} designed
3710for use as a library. It does not create packages, builds, or log files of
3711any kind. Instead, it provides mixin methods that you can use in FFI or tests
3712to check for the presence of header files, constants, and so on.")
3713 (home-page "https://github.com/djberg96/mkmf-lite")
3714 (license license:asl2.0)))
3715
3716(define-public ruby-mspec
3717 (package
3718 (name "ruby-mspec")
3719 (version "1.9.1")
3720 (source
3721 (origin
3722 (method url-fetch)
3723 (uri (rubygems-uri "mspec" version))
3724 (sha256
3725 (base32
3726 "0wmyh2n40m4srwdx9z6h6g6p46k02pzyhcsja3hqcw5h5b0hfmhd"))))
3727 (build-system ruby-build-system)
3728 (arguments
3729 '(;; TODO: 3 test failures
3730 ;; ./spec/mocks/mock_spec.rb:82
3731 ;; ./spec/utils/name_map_spec.rb:151
3732 ;; ./spec/utils/name_map_spec.rb:155
3733 #:tests? #f
3734 #:phases
3735 (modify-phases %standard-phases
3736 (add-after 'extract-gemspec 'change-dependency-constraints
3737 (lambda _
3738 (substitute* "mspec.gemspec"
3739 (("rake.*") "rake>)\n")
3740 (("rspec.*") "rspec>)\n"))
3741 #t))
3742 (replace 'check
3743 (lambda* (#:key tests? #:allow-other-keys)
3744 (when tests?
3745 (invoke "rspec" "spec"))
3746 #t)))))
3747 (native-inputs
3748 `(("bundler" ,bundler)
3749 ("ruby-rake" ,ruby-rake)
3750 ("ruby-rspec" ,ruby-rspec)))
3751 (synopsis "MSpec is a specialized framework for RubySpec")
3752 (description
3753 "MSpec is a specialized framework that is syntax-compatible with RSpec 2
3754for basic features. MSpec contains additional features that assist in writing
3755specs for Ruby implementations in ruby/spec.")
3756 (home-page "http://rubyspec.org")
3757 (license license:expat)))
3758
3759(define-public ruby-mysql2
3760 (package
3761 (name "ruby-mysql2")
3762 (version "0.5.2")
3763 (source
3764 (origin
3765 (method git-fetch)
3766 (uri (git-reference
3767 (url "https://github.com/brianmario/mysql2")
3768 (commit version)))
3769 (file-name (git-file-name name version))
3770 (sha256
3771 (base32
3772 "11lvfgc2rmvkm52jp0nbi6pvhk06klznghr7llldfw8basl9n5wv"))))
3773 (build-system ruby-build-system)
3774 (arguments
3775 '(;; TODO: Tests require a running MySQL/MariaDB service
3776 #:tests? #f
3777 #:phases
3778 (modify-phases %standard-phases
3779 (replace 'replace-git-ls-files
3780 (lambda _
3781 (substitute* "mysql2.gemspec"
3782 (("git ls-files .*`") "find . -type f |sort`"))
3783 #t))
3784 (add-before 'install 'set-MAKEFLAGS
3785 (lambda* (#:key outputs #:allow-other-keys)
3786 (setenv "MAKEFLAGS"
3787 (string-append
3788 "V=1 "
3789 "prefix=" (assoc-ref outputs "out")))
3790 #t))
3791 ;; Move the 'check phase to after 'install, as then you can test
3792 ;; using the installed mysql2 gem in the store.
3793 (delete 'check)
3794 (add-after 'install 'check
3795 (lambda* (#:key outputs tests? #:allow-other-keys)
3796 (setenv "GEM_PATH"
3797 (string-append
3798 (getenv "GEM_PATH")
3799 ":"
3800 (assoc-ref outputs "out") "/lib/ruby/vendor_ruby"))
3801 (when tests?
3802 (invoke "rspec"))
3803 #t)))))
3804 (inputs
3805 `(("mariadb-dev" ,mariadb "dev")
3806 ("zlib" ,zlib)))
3807 (native-inputs
3808 `(("ruby-rspec" ,ruby-rspec)
3809 ("ruby-rake-compiler" ,ruby-rake-compiler)))
3810 (synopsis "MySQL library for Ruby, binding to libmysql")
3811 (description
3812 "This package provides a simple, fast MySQL library for Ruby, binding to
3813libmysql.")
3814 (home-page "https://github.com/brianmario/mysql2")
3815 (license license:expat)))
3816
3817(define-public ruby-blankslate
3818 (package
3819 (name "ruby-blankslate")
3820 (version "3.1.3")
3821 (source (origin
3822 (method url-fetch)
3823 (uri (rubygems-uri "blankslate" version))
3824 (sha256
3825 (base32
3826 "0fwkb4d1j9gc7vdwn2nxvwgy2g5wlag4c4bp7bl85jvq0kgp6cyx"))))
3827 (build-system ruby-build-system)
3828 (arguments
3829 `(#:phases
3830 (modify-phases %standard-phases
3831 (replace 'check
3832 (lambda _ (invoke "rspec" "spec/"))))))
3833 (native-inputs
3834 `(("bundler" ,bundler)
3835 ("ruby-rspec" ,ruby-rspec)))
3836 (synopsis "Abstract base class with no predefined methods")
3837 (description
3838 "BlankSlate provides an abstract base class with no predefined
3839methods (except for @code{__send__} and @code{__id__}). BlankSlate is useful
3840as a base class when writing classes that depend upon
3841@code{method_missing} (e.g. dynamic proxies).")
3842 (home-page "https://github.com/masover/blankslate")
3843 (license license:expat)))
3844
3845(define-public ruby-bond
3846 (package
3847 (name "ruby-bond")
3848 (version "0.5.1")
3849 (source
3850 (origin
3851 (method url-fetch)
3852 (uri (rubygems-uri "bond" version))
3853 (sha256
3854 (base32
3855 "1r19ifc4skyl2gxnifrxa5jvbbay9fb2in79ppgv02b6n4bhsw90"))))
3856 (build-system ruby-build-system)
3857 (arguments
3858 ;; The test suite fails (see:
3859 ;; https://github.com/cldwalker/bond/issues/46).
3860 `(#:tests? #f))
3861 (native-inputs
3862 `(("ruby-bacon" ,ruby-bacon)
3863 ("ruby-bacon-bits" ,ruby-bacon-bits)
3864 ("ruby-mocha-on-bacon" ,ruby-mocha-on-bacon)))
3865 (synopsis "Bond can provide custom autocompletion for arguments, methods
3866and more")
3867 (description
3868 "Bond can autocomplete argument(s) to methods, uniquely completing per
3869module, per method and per argument. Bond provides a configuration system and
3870a DSL for creating custom completions and completion rules. Bond can also
3871load completions that ship with gems. Bond is able to offer more than irb's
3872completion since it uses the full line of input when completing as opposed to
3873irb's last-word approach.")
3874 (home-page "http://tagaholic.me/bond/")
3875 (license license:expat)))
3876
3877(define-public ruby-idn-ruby
3878 (package
3879 (name "ruby-idn-ruby")
3880 (version "0.1.0")
3881 (source
3882 (origin
3883 (method url-fetch)
3884 (uri (rubygems-uri "idn-ruby" version))
3885 (sha256
3886 (base32
3887 "07vblcyk3g72sbq12xz7xj28snpxnh3sbcnxy8bglqbfqqhvmawr"))))
3888 (build-system ruby-build-system)
3889 (arguments
3890 '(#:phases
3891 (modify-phases %standard-phases
3892 (delete 'check)
3893 (add-after 'install 'check
3894 (lambda* (#:key tests? outputs #:allow-other-keys)
3895 (when tests?
3896 (let* ((gem-file (cadr (find-files "." "\\.gem")))
3897 (name-and-version (basename gem-file ".gem")))
3898 (apply invoke
3899 "ruby" "--verbose"
3900 (string-append "-I"
3901 (assoc-ref outputs "out")
3902 "/lib/ruby/vendor_ruby/gems/"
3903 name-and-version
3904 "/lib")
3905 (find-files "./test" ".*\\.rb"))))
3906 #t)))))
3907 (inputs
3908 `(("libidn" ,libidn)))
3909 (synopsis "Ruby Bindings for the GNU LibIDN library")
3910 (description
3911 "Ruby Bindings for the GNU LibIDN library, an implementation of the
3912Stringprep, Punycode and IDNA specifications. These are used to encode and
3913decode internationalized domain + names according to the IDNA2003
3914specifications.
3915
3916Included are the most important parts of the Stringprep, Punycode and IDNA
3917APIs like performing Stringprep processings, encoding to and decoding from
3918Punycode strings and converting entire domain names to and from the ACE
3919encoded form.")
3920 (home-page "https://github.com/deepfryed/idn-ruby")
3921 (license license:asl2.0)))
3922
3923(define-public ruby-instantiator
3924 (package
3925 (name "ruby-instantiator")
3926 (version "0.0.7")
3927 (source (origin
3928 (method url-fetch)
3929 (uri (rubygems-uri "instantiator" version))
3930 (sha256
3931 (base32
3932 "0w07w3gkyqr7m0vz5h13vm8b411660qywjm2xxxgdjv4wb3fazbr"))))
3933 (build-system ruby-build-system)
3934 (arguments
3935 `(#:phases
3936 (modify-phases %standard-phases
3937 (add-after 'unpack 'add-test-unit-to-search-path
3938 (lambda* (#:key inputs #:allow-other-keys)
3939 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
3940 (substitute* "Rakefile"
3941 (("t\\.libs << \"test\"" line)
3942 (string-append line "; t.libs << \""
3943 test-unit "/lib/ruby/vendor_ruby"
3944 "/gems/test-unit-"
3945 ,(package-version ruby-test-unit)
3946 "/lib\""))))
3947 #t)))))
3948 (propagated-inputs
3949 `(("ruby-blankslate" ,ruby-blankslate)))
3950 (native-inputs
3951 `(("bundler" ,bundler)
3952 ("ruby-test-unit" ,ruby-test-unit)))
3953 (synopsis "Instantiate an arbitrary Ruby class")
3954 (description
3955 "Instantiator lets you instantiate an arbitrary Ruby class without
3956knowing anything about the constructor.")
3957 (home-page "https://github.com/floehopper/instantiator")
3958 (license license:expat)))
3959
3960(define-public ruby-introspection
3961 (package
3962 (name "ruby-introspection")
3963 (version "0.0.4")
3964 (source (origin
3965 (method url-fetch)
3966 (uri (rubygems-uri "introspection" version))
3967 (sha256
3968 (base32
3969 "1y2nbijkc0zlfmn9ss6588ilarq2kbn2i7w7pwwsli66dj84zgca"))))
3970 (build-system ruby-build-system)
3971 (arguments
3972 `(#:phases
3973 (modify-phases %standard-phases
3974 (add-after 'unpack 'add-test-unit-to-search-path
3975 (lambda* (#:key inputs #:allow-other-keys)
3976 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
3977 (substitute* "Rakefile"
3978 (("t\\.libs << \"test\"" line)
3979 (string-append line "; t.libs << \""
3980 test-unit "/lib/ruby/vendor_ruby"
3981 "/gems/test-unit-"
3982 ,(package-version ruby-test-unit)
3983 "/lib\""))))
3984 #t)))))
3985 (propagated-inputs
3986 `(("ruby-instantiator" ,ruby-instantiator)
3987 ("ruby-metaclass" ,ruby-metaclass)))
3988 (native-inputs
3989 `(("bundler" ,bundler)
3990 ("ruby-blankslate" ,ruby-blankslate)
3991 ("ruby-test-unit" ,ruby-test-unit)))
3992 (synopsis "Dynamic inspection of the method hierarchy on a Ruby object")
3993 (description
3994 "Introspection provides tools to inspect the hierarchy of method
3995definitions on a Ruby object.")
3996 (home-page "https://github.com/floehopper/introspection")
3997 (license license:expat)))
3998
3999(define-public ruby-redcarpet
4000 (package
4001 (name "ruby-redcarpet")
4002 (version "3.5.0")
4003 (source (origin
4004 (method url-fetch)
4005 (uri (rubygems-uri "redcarpet" version))
4006 (sha256
4007 (base32
4008 "0skcyx1h8b5ms0rp2zm3ql6g322b8c1adnkwkqyv7z3kypb4bm7k"))))
4009 (build-system ruby-build-system)
4010 (arguments
4011 `(#:phases
4012 (modify-phases %standard-phases
4013 ;; The gem archive does not include the conformance tests.
4014 (add-after 'unpack 'disable-conformance-tests
4015 (lambda _
4016 (substitute* "Rakefile"
4017 (("task :test => %w\\[test:unit test:conformance\\]")
4018 "task :test => %w[test:unit]"))
4019 #t)))))
4020 (native-inputs
4021 `(("bundler" ,bundler)
4022 ("ruby-test-unit" ,ruby-test-unit)
4023 ("ruby-rake-compiler" ,ruby-rake-compiler)))
4024 (synopsis "Extensible Markdown to (X)HTML converter")
4025 (description
4026 "Redcarpet is an extensible Ruby library for Markdown processing and
4027conversion to (X)HTML.")
4028 (home-page "https://github.com/vmg/redcarpet")
4029 (license license:expat)))
4030
4031(define-public ruby-rerun
4032 (package
4033 (name "ruby-rerun")
4034 (version "0.13.0")
4035 (source
4036 (origin
4037 (method url-fetch)
4038 (uri (rubygems-uri "rerun" version))
4039 (sha256
4040 (base32
4041 "1cskvxk8z8vmfail8na7hj91hs0qnvds9nydj04zi3dbddgnbmvz"))))
4042 (build-system ruby-build-system)
4043 (arguments
4044 '(#:tests? #f)) ; No included tests
4045 (propagated-inputs
4046 `(("ruby-listen" ,ruby-listen)))
4047 (synopsis "Run a process, and restart when some monitored files change")
4048 (description
4049 "Rerun is a tool to launch programs, then monitor the file system, and
4050restart the program when any of the monitored files change. It's written in
4051Ruby, but can be used for all programs.")
4052 (home-page "https://github.com/alexch/rerun/")
4053 (license license:expat)))
4054
4055(define-public ruby-maxitest
4056 (package
4057 (name "ruby-maxitest")
4058 (version "3.6.0")
4059 (home-page "https://github.com/grosser/maxitest")
4060 (source (origin
4061 ;; Pull from git because the gem does not contain tests.
4062 (method git-fetch)
4063 (uri (git-reference
4064 (url home-page)
4065 (commit (string-append "v" version))))
4066 (file-name (git-file-name name version))
4067 (sha256
4068 (base32
4069 "07b3j0bv3dx5j42jlvpvl07aaxplyi6wq688y3jl8y528ww2hjz8"))))
4070 (build-system ruby-build-system)
4071 (arguments
4072 '(#:test-target "default"
4073 #:phases (modify-phases %standard-phases
4074 (replace 'replace-git-ls-files
4075 (lambda _
4076 (substitute* "maxitest.gemspec"
4077 (("`git ls-files lib/ bin/ MIT-LICENSE Readme.md`")
4078 "`find lib/ bin/ MIT-LICENSE Readme.md -type f | sort`"))
4079 #t))
4080 (add-before 'check 'remove-version-constraints
4081 (lambda _
4082 ;; Don't use specific versions of dependencies, instead
4083 ;; take whatever is available in Guix.
4084 (delete-file "Gemfile.lock")
4085 #t))
4086 (add-before 'check 'add-mtest-on-PATH
4087 (lambda _
4088 ;; Tests use 'mtest' which is not automatically added on
4089 ;; PATH.
4090 (setenv "PATH" (string-append (getcwd) "/bin:"
4091 (getenv "PATH")))
4092 #t)))))
4093 (native-inputs
4094 `(("ps" ,procps)
4095 ("ruby-bump" ,ruby-bump)
4096 ("ruby-byebug" ,ruby-byebug)
4097 ("ruby-rspec" ,ruby-rspec)
4098 ("ruby-wwtd" ,ruby-wwtd)))
4099 (propagated-inputs
4100 `(("ruby-minitest" ,ruby-minitest)))
4101 (synopsis "Minitest with extra features")
4102 (description
4103 "Maxitest is a wrapper around Minitest with extra functionality such
4104as timeouts, an @command{mtest} executable that can run tests by line
4105number, support for interrupted tests, better backtraces, and more.")
4106 (license license:expat)))
4107
4108(define-public ruby-mocha
4109 (package
4110 (name "ruby-mocha")
4111 (version "1.11.2")
4112 (source (origin
4113 (method url-fetch)
4114 (uri (rubygems-uri "mocha" version))
4115 (sha256
4116 (base32
4117 "0hxmkm8qxd04vwj8mqnpyrf2dwy7g1k9zipdfhl4y71cw7ijm9n4"))))
4118 (build-system ruby-build-system)
4119 (arguments
4120 `(#:phases
4121 (modify-phases %standard-phases
4122 (add-before 'check 'remove-rubocop-dependency
4123 (lambda _
4124 ;; Disable dependency on Rubocop, which is just a linter,
4125 ;; and would introduce a circular dependency.
4126 (substitute* "mocha.gemspec"
4127 ((".*rubocop.*")
4128 "true\n"))
4129 #t)))))
4130 (native-inputs
4131 `(("ruby-introspection" ,ruby-introspection)))
4132 (synopsis "Mocking and stubbing library for Ruby")
4133 (description
4134 "Mocha is a mocking and stubbing library with JMock/SchMock syntax, which
4135allows mocking and stubbing of methods on real (non-mock) classes.")
4136 (home-page "http://gofreerange.com/mocha/docs")
4137 ;; Mocha can be used with either license at the users choice.
4138 (license (list license:expat license:ruby))))
4139
4140(define-public ruby-mocha-on-bacon
4141 (package
4142 (name "ruby-mocha-on-bacon")
4143 (version "0.2.3")
4144 (source
4145 (origin
4146 (method url-fetch)
4147 (uri (rubygems-uri "mocha-on-bacon" version))
4148 (sha256
4149 (base32
4150 "1h49b33rq889hn8x3wp9byczl91va16jh1w4d2wyy4yj23icdrcp"))))
4151 (build-system ruby-build-system)
4152 (arguments
4153 ;; rubygems.org release missing tests
4154 '(#:tests? #f))
4155 (propagated-inputs `(("ruby-mocha" ,ruby-mocha)))
4156 (synopsis "Mocha adapter for Bacon")
4157 (description
4158 "This package provides a Mocha adapter for Bacon, allowing you to use the
4159Mocha stubbing and mocking library with Bacon, a small RSpec clone.")
4160 (home-page
4161 "https://github.com/alloy/mocha-on-bacon")
4162 (license license:expat)))
4163
4164(define-public ruby-net-ssh
4165 (package
4166 (name "ruby-net-ssh")
4167 (version "4.2.0")
4168 (source (origin
4169 (method url-fetch)
4170 (uri (rubygems-uri "net-ssh" version))
4171 (sha256
4172 (base32
4173 "07c4v97zl1daabmri9zlbzs6yvkl56z1q14bw74d53jdj0c17nhx"))))
4174 (build-system ruby-build-system)
4175 (native-inputs
4176 `(("bundler" ,bundler)
4177 ("ruby-mocha" ,ruby-mocha)
4178 ("ruby-test-unit" ,ruby-test-unit)))
4179 (synopsis "Ruby implementation of the SSH2 client protocol")
4180 (description "@code{Net::SSH} is a pure-Ruby implementation of the SSH2
4181client protocol. It allows you to write programs that invoke and interact
4182with processes on remote servers, via SSH2.")
4183 (home-page "https://github.com/net-ssh/net-ssh")
4184 (license license:expat)))
4185
4186(define-public ruby-net-scp
4187 (package
4188 (name "ruby-net-scp")
4189 ;; The 1.2.1 release would be incompatible with ruby-net-ssh >= 4.
4190 (version "1.2.2.rc2")
4191 (source
4192 (origin
4193 (method git-fetch)
4194 (uri (git-reference
4195 (url "https://github.com/net-ssh/net-scp")
4196 (commit (string-append "v" version))))
4197 (file-name (git-file-name name version))
4198 (sha256
4199 (base32 "1nyn17sy71fn7zs3y6wbgcn35318c10flqgc0582409095x4h0sx"))))
4200 (build-system ruby-build-system)
4201 (native-inputs
4202 `(("bundler" ,bundler)
4203 ("ruby-test-unit" ,ruby-test-unit)
4204 ("ruby-mocha" ,ruby-mocha)))
4205 (propagated-inputs
4206 `(("ruby-net-ssh" ,ruby-net-ssh)))
4207 (synopsis "Pure-Ruby SCP client library")
4208 (description "@code{Net::SCP} is a pure-Ruby implementation of the SCP
4209client protocol.")
4210 (home-page "https://github.com/net-ssh/net-scp")
4211 (license license:expat)))
4212
4213(define-public ruby-minitest
4214 (package
4215 (name "ruby-minitest")
4216 (version "5.11.3")
4217 (source (origin
4218 (method url-fetch)
4219 (uri (rubygems-uri "minitest" version))
4220 (sha256
4221 (base32
4222 "0icglrhghgwdlnzzp4jf76b0mbc71s80njn5afyfjn4wqji8mqbq"))))
4223 (build-system ruby-build-system)
4224 (native-inputs
4225 `(("ruby-hoe" ,ruby-hoe)))
4226 (synopsis "Small test suite library for Ruby")
4227 (description "Minitest provides a complete suite of Ruby testing
4228facilities supporting TDD, BDD, mocking, and benchmarking.")
4229 (home-page "https://github.com/seattlerb/minitest")
4230 (license license:expat)))
4231
4232;; This is the last release of Minitest 4, which is used by some packages.
4233(define-public ruby-minitest-4
4234 (package (inherit ruby-minitest)
4235 (version "4.7.5")
4236 (source (origin
4237 (method url-fetch)
4238 (uri (rubygems-uri "minitest" version))
4239 (sha256
4240 (base32
4241 "03p6iban9gcpcflzp4z901s1hgj9369p6515h967ny6hlqhcf2iy"))))
4242 (arguments
4243 `(#:phases
4244 (modify-phases %standard-phases
4245 (add-after 'unpack 'remove-unsupported-method
4246 (lambda _
4247 (substitute* "Rakefile"
4248 (("self\\.rubyforge_name = .*") ""))
4249 #t))
4250 (add-after 'build 'exclude-failing-tests
4251 (lambda _
4252 ;; Some tests are failing on Ruby 2.4 due to the deprecation of
4253 ;; Fixnum.
4254 (delete-file "test/minitest/test_minitest_spec.rb")
4255 #t)))))))
4256
4257(define-public ruby-minitest-around
4258 (package
4259 (name "ruby-minitest-around")
4260 (version "0.5.0")
4261 (source
4262 (origin
4263 (method url-fetch)
4264 (uri (rubygems-uri "minitest-around" version))
4265 (sha256
4266 (base32
4267 "15ywnqx0719jl9c25yqfshmwcir57i5f4hr1ra9v9vay9ylcwndr"))))
4268 (build-system ruby-build-system)
4269 (arguments
4270 '(#:phases
4271 (modify-phases %standard-phases
4272 (add-after 'extract-gemspec 'remove-unnecessary-dependency-versions
4273 (lambda _
4274 (substitute* "minitest-around.gemspec"
4275 (("%q<cucumber>.*") "%q<cucumber>, [\">= 0\"])\n"))
4276 #t)))))
4277 (propagated-inputs
4278 `(("ruby-minitest" ,ruby-minitest)))
4279 (native-inputs
4280 `(("bundler" ,bundler)
4281 ("ruby-cucumber" ,ruby-cucumber)
4282 ("ruby-bump" ,ruby-bump)
4283 ("ruby-test-construct" ,ruby-test-construct)))
4284 (synopsis "Run code around tests in Minitest")
4285 (description
4286 "This library provides a way to run code around tests in Minitest,
4287written using either the unit test or spec style.")
4288 (home-page "https://github.com/splattael/minitest-around")
4289 (license license:expat)))
4290
4291(define-public ruby-minitest-sprint
4292 (package
4293 (name "ruby-minitest-sprint")
4294 (version "1.1.0")
4295 (source (origin
4296 (method url-fetch)
4297 (uri (rubygems-uri "minitest-sprint" version))
4298 (sha256
4299 (base32
4300 "179d6pj56l9xzm46fqsqj10mzjkr1f9fv4cxa8wvchs97hqz33w1"))))
4301 (build-system ruby-build-system)
4302 (native-inputs
4303 `(("ruby-hoe" ,ruby-hoe)
4304 ("ruby-minitest" ,ruby-minitest)))
4305 (synopsis "Fast test suite runner for minitest")
4306 (description "Minitest-sprint is a test runner for minitest that makes it
4307easier to re-run individual failing tests.")
4308 (home-page "https://github.com/seattlerb/minitest-sprint")
4309 (license license:expat)))
4310
4311(define-public ruby-minitest-bacon
4312 (package
4313 (name "ruby-minitest-bacon")
4314 (version "1.0.3")
4315 (source (origin
4316 (method url-fetch)
4317 (uri (rubygems-uri "minitest-bacon" version))
4318 (sha256
4319 (base32
4320 "0zhdwcl6bgha61qiyfvr7zs7ywaxc33wmj9xhxl8jdmpdvifvfaj"))))
4321 (build-system ruby-build-system)
4322 (native-inputs
4323 `(("ruby-hoe" ,ruby-hoe)))
4324 (inputs
4325 `(("ruby-minitest" ,ruby-minitest)))
4326 (synopsis "Bacon compatibility library for minitest")
4327 (description "Minitest-bacon extends minitest with bacon-like
4328functionality, making it easier to migrate test suites from bacon to minitest.")
4329 (home-page "https://github.com/seattlerb/minitest-bacon")
4330 (license license:expat)))
4331
4332(define-public ruby-minitest-focus
4333 (package
4334 (name "ruby-minitest-focus")
4335 (version "1.1.2")
4336 (source
4337 (origin
4338 (method url-fetch)
4339 (uri (rubygems-uri "minitest-focus" version))
4340 (sha256
4341 (base32
4342 "1zgjslp6d7dzcn8smj595idymgd5j603p9g2jqkfgi28sqbhz6m0"))))
4343 (build-system ruby-build-system)
4344 (propagated-inputs
4345 `(("ruby-minitest" ,ruby-minitest)))
4346 (native-inputs
4347 `(("ruby-hoe" ,ruby-hoe)))
4348 (synopsis "Allows a few specific tests to be focused on")
4349 (description
4350 "@code{minitest-focus} gives the ability focus on a few tests with ease
4351without having to use command-line arguments. It introduces a @code{focus}
4352class method for use in testing classes, specifying that the next defined test
4353is to be run.")
4354 (home-page "https://github.com/seattlerb/minitest-focus")
4355 (license license:expat)))
4356
4357(define-public ruby-minitest-pretty-diff
4358 ;; Use git reference because gem is out of date and does not contain testing
4359 ;; script. There are no releases on GitHub.
4360 (let ((commit "11f32e930f574225432f42e5e1ef6e7471efe572"))
4361 (package
4362 (name "ruby-minitest-pretty-diff")
4363 (version (string-append "0.1-1." (string-take commit 8)))
4364 (source (origin
4365 (method git-fetch)
4366 (uri (git-reference
4367 (url "https://github.com/adammck/minitest-pretty_diff")
4368 (commit commit)))
4369 (file-name (string-append name "-" version "-checkout"))
4370 (sha256
4371 (base32
4372 "13y5dhmcckhzd83gj1nfwh41iykbjcm2w7y4pr6j6rpqa5as122r"))))
4373 (build-system ruby-build-system)
4374 (arguments
4375 `(#:phases
4376 (modify-phases %standard-phases
4377 (replace 'check
4378 (lambda _
4379 (invoke "script/test"))))))
4380 (native-inputs
4381 `(("bundler" ,bundler)
4382 ("ruby-turn" ,ruby-turn)))
4383 (synopsis "Pretty-print hashes and arrays in MiniTest")
4384 (description
4385 "@code{minitest-pretty_diff} monkey-patches
4386@code{MiniTest::Assertions#mu_pp} to pretty-print hashes and arrays before
4387diffing them. This makes it easier to spot differences between nested
4388structures when tests fail.")
4389 (home-page "https://github.com/adammck/minitest-pretty_diff")
4390 (license license:expat))))
4391
4392(define-public ruby-minitest-moar
4393 (package
4394 (name "ruby-minitest-moar")
4395 (version "0.0.4")
4396 (source
4397 (origin
4398 (method url-fetch)
4399 (uri (rubygems-uri "minitest-moar" version))
4400 (sha256
4401 (base32
4402 "0nb83blrsab92gcy6nfpw39njys7zisia8pw4igzzfzfl51cis0x"))))
4403 (build-system ruby-build-system)
4404 (arguments
4405 `(#:phases
4406 (modify-phases %standard-phases
4407 (add-before 'check 'clean-dependencies
4408 (lambda _
4409 ;; Remove all gems defined in the Gemfile because these are not
4410 ;; truly needed.
4411 (substitute* "Gemfile"
4412 (("gem .*") ""))
4413 ;; Remove byebug as not needed to run tests.
4414 (substitute* "test/test_helper.rb"
4415 (("require 'byebug'") ""))
4416 #t)))))
4417 (native-inputs
4418 `(("bundler" ,bundler)
4419 ("ruby-minitest" ,ruby-minitest)))
4420 (synopsis "Extra features and changes to MiniTest")
4421 (description "@code{MiniTest Moar} add some additional features and
4422changes some default behaviours in MiniTest. For instance, Moar replaces the
4423MiniTest @code{Object#stub} with a global @code{stub} method.")
4424 (home-page "https://github.com/dockyard/minitest-moar")
4425 (license license:expat)))
4426
4427(define-public ruby-minitest-bonus-assertions
4428 (package
4429 (name "ruby-minitest-bonus-assertions")
4430 (version "3.0")
4431 (source
4432 (origin
4433 (method url-fetch)
4434 (uri (rubygems-uri "minitest-bonus-assertions" version))
4435 (sha256
4436 (base32
4437 "1hbq9jk904xkz868yha1bqcm6azm7kmjsll2k4pn2nrcib508h2a"))))
4438 (build-system ruby-build-system)
4439 (arguments
4440 `(#:phases
4441 (modify-phases %standard-phases
4442 (add-before 'check 'clean-dependencies
4443 (lambda _
4444 ;; Remove unneeded require statement that would entail another
4445 ;; dependency.
4446 (substitute* "test/minitest_config.rb"
4447 (("require 'minitest/bisect'") ""))
4448 #t)))))
4449 (native-inputs
4450 `(("ruby-hoe" ,ruby-hoe)
4451 ("ruby-minitest-pretty-diff" ,ruby-minitest-pretty-diff)
4452 ("ruby-minitest-focus" ,ruby-minitest-focus)
4453 ("ruby-minitest-moar" ,ruby-minitest-moar)))
4454 (synopsis "Bonus assertions for @code{Minitest}")
4455 (description
4456 "Minitest bonus assertions provides extra MiniTest assertions. For
4457instance, it provides @code{assert_true}, @code{assert_false} and
4458@code{assert_set_equal}.")
4459 (home-page "https://github.com/halostatue/minitest-bonus-assertions")
4460 (license license:expat)))
4461
4462(define-public ruby-minitest-reporters
4463 (package
4464 (name "ruby-minitest-reporters")
4465 (version "1.3.6")
4466 (source
4467 (origin
4468 (method url-fetch)
4469 (uri (rubygems-uri "minitest-reporters" version))
4470 (sha256
4471 (base32
4472 "1a3das80rwgys5rj48i5ly144nvszyqyi748bk9bss74jblcf5ay"))))
4473 (build-system ruby-build-system)
4474 (arguments
4475 '(#:phases
4476 (modify-phases %standard-phases
4477 ;; Remove the requirement on Rubocop, as it isn't useful to run, and
4478 ;; including it as an input can lead to circular dependencies.
4479 (add-after 'unpack 'remove-rubocop-from-Rakefile
4480 (lambda _
4481 (substitute* "Rakefile"
4482 (("require 'rubocop/rake\\_task'") "")
4483 (("RuboCop::RakeTask\\.new\\(:rubocop\\)") "[].each"))
4484 #t))
4485 (add-after 'extract-gemspec 'remove-rubocop-from-gemspec
4486 (lambda _
4487 (substitute* "minitest-reporters.gemspec"
4488 ((".*%q<rubocop>.*") "\n"))
4489 #t)))))
4490 (propagated-inputs
4491 `(("ruby-ansi" ,ruby-ansi)
4492 ("ruby-builder" ,ruby-builder)
4493 ("ruby-minitest" ,ruby-minitest)
4494 ("ruby-progressbar" ,ruby-progressbar)))
4495 (native-inputs
4496 `(("bundler" ,bundler)
4497 ("ruby-maruku" ,ruby-maruku)))
4498 (synopsis "Enhanced reporting for Minitest tests")
4499 (description
4500 "@code{minitest/reporters} provides a custom Minitest runner to improve
4501how the test state is reported. A number of different reporters are
4502available, including a spec reporter, progress bar reporter, a HTML
4503reporter.")
4504 (home-page "https://github.com/kern/minitest-reporters")
4505 (license license:expat)))
4506
4507(define-public ruby-minitest-rg
4508 (package
4509 (name "ruby-minitest-rg")
4510 (version "5.2.0")
4511 (source
4512 (origin
4513 (method url-fetch)
4514 (uri (rubygems-uri "minitest-rg" version))
4515 (sha256
4516 (base32
4517 "0sq509ax1x62rd0w10b0hcydcxyk5bxxr3fwrgxv02r8drq2r354"))))
4518 (build-system ruby-build-system)
4519 (arguments
4520 ;; Some tests fail even outside Guix, so disable tests.
4521 ;; https://github.com/blowmage/minitest-rg/issues/12
4522 ;; https://github.com/blowmage/minitest-rg/pull/13
4523 `(#:tests? #f))
4524 (propagated-inputs
4525 `(("ruby-minitest" ,ruby-minitest)))
4526 (synopsis "Coloured output for Minitest")
4527 (description
4528 "@code{minitest-rg} changes the colour of the output from Minitest.")
4529 (home-page "https://blowmage.com/minitest-rg/")
4530 (license license:expat)))
4531
4532(define-public ruby-minitest-global-expectations
4533 (package
4534 (name "ruby-minitest-global-expectations")
4535 (version "1.0.1")
4536 (source
4537 (origin
4538 (method url-fetch)
4539 (uri (rubygems-uri "minitest-global_expectations"
4540 version))
4541 (sha256
4542 (base32
4543 "1pp3k2608spj4kvqy2y16hs18an917g6vwgvphrfhjviac83090x"))))
4544 (build-system ruby-build-system)
4545 (propagated-inputs
4546 `(("ruby-minitest" ,ruby-minitest)))
4547 (synopsis "Adjust minitest behaviour for calling expectation methods")
4548 (description
4549 "Minitest-global_expectations allows continued use of expectation methods
4550on all objects. Calling expectation methods on all objects was deprecated in
4551minitest 5.12, and is planned to be removed from minitest 6.")
4552 (home-page "https://github.com/jeremyevans/minitest-global_expectations")
4553 (license license:expat)))
4554
4555(define-public ruby-minitest-hooks
4556 (package
4557 (name "ruby-minitest-hooks")
4558 (version "1.4.2")
4559 (source
4560 (origin
4561 (method url-fetch)
4562 (uri (rubygems-uri "minitest-hooks" version))
4563 (sha256
4564 (base32
4565 "0lnpvzijbjrvxjc43d155jnbk2mkfshrz22an711wh004scavlzc"))))
4566 (build-system ruby-build-system)
4567 (arguments
4568 '(#:test-target "spec"))
4569 (native-inputs
4570 `(("ruby-sequel" ,ruby-sequel)
4571 ("ruby-sqlite3" ,ruby-sqlite3)))
4572 (synopsis "Hooks for the minitest framework")
4573 (description
4574 "Minitest-hooks adds @code{around}, @code{before_all}, @code{after_all},
4575@code{around_all} hooks for Minitest. This allows, for instance, running each
4576suite of specs inside a database transaction, running each spec inside its own
4577savepoint inside that transaction. This can significantly speed up testing
4578for specs that share expensive database setup code.")
4579 (home-page "https://github.com/jeremyevans/minitest-hooks")
4580 (license license:expat)))
4581
4582(define-public ruby-daemons
4583 (package
4584 (name "ruby-daemons")
4585 (version "1.2.5")
4586 (source (origin
4587 (method url-fetch)
4588 (uri (rubygems-uri "daemons" version))
4589 (sha256
4590 (base32
4591 "15smbsg0gxb7nf0nrlnplc68y0cdy13dm6fviavpmw7c630sring"))))
4592 (build-system ruby-build-system)
4593 (arguments
4594 `(#:tests? #f)) ; no test suite
4595 (synopsis "Daemonize Ruby programs")
4596 (description "Daemons provides a way to wrap existing Ruby scripts to be
4597run as a daemon and to be controlled by simple start/stop/restart commands.")
4598 (home-page "https://github.com/thuehlinger/daemons")
4599 (license license:expat)))
4600
4601(define-public ruby-data_uri
4602 (package
4603 (name "ruby-data_uri")
4604 (version "0.1.0")
4605 (source
4606 (origin
4607 (method url-fetch)
4608 (uri (rubygems-uri "data_uri" version))
4609 (sha256
4610 (base32
4611 "0fzkxgdxrlbfl4537y3n9mjxbm28kir639gcw3x47ffchwsgdcky"))))
4612 (build-system ruby-build-system)
4613 (synopsis "URI class for parsing data URIs")
4614 (description
4615 "Data @acronym{URI, universal resource idenfitier}s allow resources to be
4616embedded inside a URI. The URI::Data class provides support for parsing these
4617URIs using the normal URI.parse method.")
4618 (home-page "https://github.com/dball/data_uri")
4619 (license license:expat)))
4620
4621(define-public ruby-deep-merge
4622 (package
4623 (name "ruby-deep-merge")
4624 (version "1.2.1")
4625 (home-page "https://github.com/danielsdeleo/deep_merge")
4626 ;; The Rubygem source does not contain the gemspec required for tests.
4627 (source (origin
4628 (method git-fetch)
4629 (uri (git-reference (url home-page) (commit version)))
4630 (file-name (git-file-name name version))
4631 (sha256
4632 (base32
4633 "0c9rk23ilhc0n4489y6lda2wzphpzh6ish6fahlbpjhxn82wb931"))))
4634 (build-system ruby-build-system)
4635 (native-inputs
4636 `(("ruby-minitest" ,ruby-minitest)))
4637 (synopsis "Recursively merge hashes")
4638 (description
4639 "Deep Merge is a set of utility functions for @code{Hash}. It permits
4640you to merge elements inside a hash together recursively.")
4641 (license license:expat)))
4642
4643(define-public ruby-git
4644 (package
4645 (name "ruby-git")
4646 (version "1.3.0")
4647 (source (origin
4648 (method url-fetch)
4649 (uri (rubygems-uri "git" version))
4650 (sha256
4651 (base32
4652 "1waikaggw7a1d24nw0sh8fd419gbf7awh000qhsf411valycj6q3"))))
4653 (build-system ruby-build-system)
4654 (arguments
4655 `(#:tests? #f ; no tests
4656 #:phases (modify-phases %standard-phases
4657 (add-after 'install 'patch-git-binary
4658 (lambda* (#:key inputs outputs #:allow-other-keys)
4659 ;; Make the default git binary an absolute path to the
4660 ;; store.
4661 (let ((git (string-append (assoc-ref inputs "git")
4662 "/bin/git"))
4663 (config (string-append
4664 (assoc-ref outputs "out")
4665 "/lib/ruby/vendor_ruby/gems/git-"
4666 ,version "/lib/git/config.rb")))
4667 (substitute* (list config)
4668 (("'git'")
4669 (string-append "'" git "'")))
4670 #t))))))
4671 (inputs
4672 `(("git" ,git)))
4673 (synopsis "Ruby wrappers for Git")
4674 (description "Ruby/Git is a Ruby library that can be used to create, read
4675and manipulate Git repositories by wrapping system calls to the git binary.")
4676 (home-page "https://github.com/schacon/ruby-git")
4677 (license license:expat)))
4678
4679(define-public ruby-hocon
4680 (package
4681 (name "ruby-hocon")
4682 (version "1.3.1")
4683 (home-page "https://github.com/puppetlabs/ruby-hocon")
4684 (source (origin
4685 (method git-fetch)
4686 (uri (git-reference (url home-page) (commit version)))
4687 (file-name (git-file-name name version))
4688 (sha256
4689 (base32
4690 "172hh2zr0n9nnszv0qvlgwszgkrq84yahrg053m68asy79zpmbqr"))))
4691 (build-system ruby-build-system)
4692 (arguments
4693 '(#:phases (modify-phases %standard-phases
4694 (replace 'check
4695 (lambda* (#:key tests? #:allow-other-keys)
4696 (if tests?
4697 (invoke "rspec")
4698 (format #t "test suite not run~%"))
4699 #t)))))
4700 (native-inputs
4701 `(("bundler" ,bundler)
4702 ("ruby-rspec" ,ruby-rspec)))
4703 (synopsis "HOCON config library")
4704 (description
4705 "This package provides Ruby support for the @acronym{HOCON,
4706Human-Optimized Config Object Notation} configuration file format. It
4707supports parsing and modifying HOCON and JSON files, and rendering parsed
4708objects back to a @code{String}.")
4709 (license license:asl2.0)))
4710
4711(define-public ruby-slop
4712 (package
4713 (name "ruby-slop")
4714 (version "4.5.0")
4715 (source (origin
4716 (method url-fetch)
4717 (uri (rubygems-uri "slop" version))
4718 (sha256
4719 (base32
4720 "0bfm8535g0rkn9cbjndkckf0f7a3wj0rg4rqhrpsgxnbfdf2lm0p"))))
4721 (build-system ruby-build-system)
4722 (native-inputs
4723 `(("ruby-minitest" ,ruby-minitest)))
4724 (synopsis "Ruby command line option parser")
4725 (description "Slop provides a Ruby domain specific language for gathering
4726options and parsing command line flags.")
4727 (home-page "https://github.com/leejarvis/slop")
4728 (license license:expat)))
4729
4730(define-public ruby-slop-3
4731 (package (inherit ruby-slop)
4732 (version "3.6.0")
4733 (source (origin
4734 (method url-fetch)
4735 (uri (rubygems-uri "slop" version))
4736 (sha256
4737 (base32
4738 "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n"))))))
4739
4740(define-public ruby-multi-xml
4741 (package
4742 (name "ruby-multi-xml")
4743 (version "0.6.0")
4744 (source
4745 (origin
4746 (method url-fetch)
4747 (uri (rubygems-uri "multi_xml" version))
4748 (sha256
4749 (base32
4750 "0lmd4f401mvravi1i1yq7b2qjjli0yq7dfc4p1nj5nwajp7r6hyj"))))
4751 (build-system ruby-build-system)
4752 (arguments
4753 '(#:tests? #f)) ; No included tests
4754 (synopsis "Swappable XML backends for Ruby")
4755 (description
4756 "@code{MultiXml} provides swappable XML backends utilizing either LibXML,
4757Nokogiri, Ox, or REXML.")
4758 (home-page "https://github.com/sferik/multi_xml")
4759 (license license:expat)))
4760
4761(define-public ruby-multipart-post
4762 (package
4763 (name "ruby-multipart-post")
4764 (version "2.0.0")
4765 (source (origin
4766 (method url-fetch)
4767 (uri (rubygems-uri "multipart-post" version))
4768 (sha256
4769 (base32
4770 "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x"))))
4771 (build-system ruby-build-system)
4772 (native-inputs
4773 `(("bundler" ,bundler)))
4774 (synopsis "Multipart POST library for Ruby")
4775 (description "Multipart-Post Adds multipart POST capability to Ruby's
4776net/http library.")
4777 (home-page "https://github.com/nicksieger/multipart-post")
4778 (license license:expat)))
4779
4780(define-public ruby-multi-json
4781 (package
4782 (name "ruby-multi-json")
4783 (version "1.13.1")
4784 (source
4785 (origin
4786 (method git-fetch)
4787 ;; Tests are not distributed at rubygems.org so download from GitHub
4788 ;; instead.
4789 (uri (git-reference
4790 (url "https://github.com/intridea/multi_json")
4791 (commit (string-append "v" version))))
4792 (file-name (git-file-name name version))
4793 (sha256
4794 (base32
4795 "18wpb6p01rrkl4v33byh70vxj2a5jxkfxzv3pz8z6pssy4ymwkm4"))))
4796 (build-system ruby-build-system)
4797 (arguments
4798 `(#:phases
4799 (modify-phases %standard-phases
4800 (add-after 'unpack 'remove-signing-key-reference
4801 (lambda _
4802 (substitute* "multi_json.gemspec"
4803 ((".*spec.signing_key.*") ""))
4804 #t)))))
4805 (native-inputs
4806 `(("bundler" ,bundler)
4807 ("ruby-rspec" ,ruby-rspec)
4808 ("ruby-yard" ,ruby-yard)
4809 ("ruby-json-pure" ,ruby-json-pure)
4810 ("ruby-oj" ,ruby-oj)
4811 ("ruby-yajl-ruby" ,ruby-yajl-ruby)))
4812 (synopsis "Common interface to multiple JSON libraries for Ruby")
4813 (description
4814 "This package provides a common interface to multiple JSON libraries,
4815including Oj, Yajl, the JSON gem (with C-extensions), the pure-Ruby JSON gem,
4816NSJSONSerialization, gson.rb, JrJackson, and OkJson.")
4817 (home-page "https://github.com/intridea/multi_json")
4818 (license license:expat)))
4819
4820(define-public ruby-multi-test
4821 (package
4822 (name "ruby-multi-test")
4823 (version "0.1.2")
4824 (source
4825 (origin
4826 (method url-fetch)
4827 (uri (rubygems-uri "multi_test" version))
4828 (sha256
4829 (base32
4830 "1sx356q81plr67hg16jfwz9hcqvnk03bd9n75pmdw8pfxjfy1yxd"))))
4831 (build-system ruby-build-system)
4832 (arguments
4833 '(;; Tests require different sets of specific gem versions to be available,
4834 ;; and there is no gemfile that specifies the newest versions of
4835 ;; dependencies to be tested.
4836 #:tests? #f))
4837 (synopsis
4838 "Interface to testing libraries loaded into a running Ruby process")
4839 (description
4840 "@code{multi_test} provides a uniform interface onto whatever testing
4841libraries that have been loaded into a running Ruby process to help control
4842rogue test/unit/autorun requires.")
4843 (home-page "https://github.com/cucumber/multi_test")
4844 (license license:expat)))
4845
4846(define-public ruby-arel
4847 (package
4848 (name "ruby-arel")
4849 (version "9.0.0")
4850 (source (origin
4851 (method url-fetch)
4852 (uri (rubygems-uri "arel" version))
4853 (sha256
4854 (base32
4855 "1jk7wlmkr61f6g36w9s2sn46nmdg6wn2jfssrhbhirv5x9n95nk0"))))
4856 (build-system ruby-build-system)
4857 (arguments '(#:tests? #f)) ; no tests
4858 (home-page "https://github.com/rails/arel")
4859 (synopsis "SQL AST manager for Ruby")
4860 (description "Arel is an SQL @dfn{Abstract Syntax Tree} (AST) manager for
4861Ruby. It simplifies the generation of complex SQL queries and adapts to
4862various relational database implementations.")
4863 (license license:expat)))
4864
4865(define-public ruby-marcel
4866 (package
4867 (name "ruby-marcel")
4868 (version "0.3.3")
4869 (source
4870 (origin
4871 (method url-fetch)
4872 (uri (rubygems-uri "marcel" version))
4873 (sha256
4874 (base32
4875 "1nxbjmcyg8vlw6zwagf17l9y2mwkagmmkg95xybpn4bmf3rfnksx"))))
4876 (build-system ruby-build-system)
4877 (arguments
4878 '(;; No included tests
4879 #:tests? #f))
4880 (propagated-inputs
4881 `(("ruby-mimemagic" ,ruby-mimemagic)))
4882 (synopsis "MIME type detection using magic numbers, filenames and extensions")
4883 (description
4884 "@code{marcel} provides @acronym{MIME, Multipurpose Internet Mail
4885Extensions} type detection using magic numbers, filenames, and extensions")
4886 (home-page "https://github.com/basecamp/marcel")
4887 (license license:expat)))
4888
4889(define-public ruby-minitar
4890 ;; We package from the GitHub source to fix the security issue reported at
4891 ;; https://github.com/halostatue/minitar/issues/16.
4892 (let ((commit "e25205ecbb6277ae8a3df1e6a306d7ed4458b6e4"))
4893 (package
4894 (name "ruby-minitar")
4895 (version (string-append "0.5.4-1." (string-take commit 8)))
4896 (source
4897 (origin
4898 (method git-fetch)
4899 (uri (git-reference
4900 (url "https://github.com/halostatue/minitar")
4901 (commit commit)))
4902 (file-name (string-append name "-" version "-checkout"))
4903 (sha256
4904 (base32
4905 "1iywfx07jgjqcmixzkxk9zdwfmij1fyg1z2jlwzj15cj7s99qlfv"))))
4906 (build-system ruby-build-system)
4907 (arguments
4908 '(#:tests? #f)) ; missing a gemspec
4909 (synopsis "Ruby library and utility for handling tar archives")
4910 (description
4911 "Archive::Tar::Minitar is a pure-Ruby library and command-line utility
4912that provides the ability to deal with POSIX tar archive files.")
4913 (home-page "http://www.github.com/atoulme/minitar")
4914 (license (list license:gpl2+ license:ruby)))))
4915
4916(define-public ruby-mini-portile
4917 (package
4918 (name "ruby-mini-portile")
4919 (version "0.6.2")
4920 (source
4921 (origin
4922 (method url-fetch)
4923 (uri (rubygems-uri "mini_portile" version))
4924 (sha256
4925 (base32
4926 "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w"))))
4927 (build-system ruby-build-system)
4928 (arguments
4929 '(#:tests? #f)) ; tests require network access
4930 (synopsis "Ports system for Ruby developers")
4931 (description "Mini-portile is a port/recipe system for Ruby developers.
4932It provides a standard way to compile against specific versions of libraries
4933to reproduce user environments.")
4934 (home-page "https://github.com/flavorjones/mini_portile")
4935 (license license:expat)))
4936
4937(define-public ruby-mini-portile-2
4938 (package (inherit ruby-mini-portile)
4939 (version "2.4.0")
4940 (source (origin
4941 (method url-fetch)
4942 (uri (rubygems-uri "mini_portile2" version))
4943 (sha256
4944 (base32
4945 "15zplpfw3knqifj9bpf604rb3wc1vhq6363pd6lvhayng8wql5vy"))))))
4946
4947(define-public ruby-nokogiri
4948 (package
4949 (name "ruby-nokogiri")
4950 (version "1.10.9")
4951 (source (origin
4952 (method url-fetch)
4953 (uri (rubygems-uri "nokogiri" version))
4954 (sha256
4955 (base32
4956 "12j76d0bp608932xkzmfi638c7aqah57l437q8494znzbj610qnm"))))
4957 (build-system ruby-build-system)
4958 (arguments
4959 ;; Tests fail because Nokogiri can only test with an installed extension,
4960 ;; and also because many test framework dependencies are missing.
4961 `(#:tests? #f
4962 #:gem-flags (list "--" "--use-system-libraries"
4963 (string-append "--with-xml2-include="
4964 (assoc-ref %build-inputs "libxml2")
4965 "/include/libxml2" ))
4966 #:phases
4967 (modify-phases %standard-phases
4968 (add-before 'build 'patch-extconf
4969 ;; 'pkg-config' is not included in the GEM_PATH during
4970 ;; installation, so we add it directly to the load path.
4971 (lambda* (#:key inputs #:allow-other-keys)
4972 (let* ((pkg-config (assoc-ref inputs "ruby-pkg-config")))
4973 (substitute* "ext/nokogiri/extconf.rb"
4974 (("gem 'pkg-config'.*")
4975 (string-append "$:.unshift '"
4976 pkg-config "/lib/ruby/vendor_ruby"
4977 "/gems/pkg-config-"
4978 ,(package-version ruby-pkg-config)
4979 "/lib'\n"))))
4980 #t)))))
4981 (native-inputs
4982 `(("ruby-hoe" ,ruby-hoe)))
4983 (inputs
4984 `(("zlib" ,zlib)
4985 ("libxml2" ,libxml2)
4986 ("libxslt" ,libxslt)))
4987 (propagated-inputs
4988 `(("ruby-mini-portile" ,ruby-mini-portile-2)
4989 ("ruby-pkg-config" ,ruby-pkg-config)))
4990 (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
4991 (description "Nokogiri (鋸) parses and searches XML/HTML, and features
4992both CSS3 selector and XPath 1.0 support.")
4993 (home-page "http://www.nokogiri.org/")
4994 (license license:expat)))
4995
4996(define-public ruby-method-source
4997 (package
4998 (name "ruby-method-source")
4999 (version "1.0.0")
5000 (source
5001 (origin
5002 (method url-fetch)
5003 (uri (rubygems-uri "method_source" version))
5004 (sha256
5005 (base32
5006 "1pnyh44qycnf9mzi1j6fywd5fkskv3x7nmsqrrws0rjn5dd4ayfp"))))
5007 (build-system ruby-build-system)
5008 (arguments
5009 `(#:test-target "spec"))
5010 (native-inputs
5011 `(("ruby-rspec" ,ruby-rspec)
5012 ("git" ,git)))
5013 (synopsis "Retrieve the source code for Ruby methods")
5014 (description "Method_source retrieves the source code for Ruby methods.
5015Additionally, it can extract source code from Proc and Lambda objects or just
5016extract comments.")
5017 (home-page "https://github.com/banister/method_source")
5018 (license license:expat)))
5019
5020(define-public ruby-coderay
5021 (package
5022 (name "ruby-coderay")
5023 (version "1.1.2")
5024 (source
5025 (origin
5026 (method url-fetch)
5027 (uri (rubygems-uri "coderay" version))
5028 (sha256
5029 (base32
5030 "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y"))))
5031 (build-system ruby-build-system)
5032 (arguments
5033 '(#:tests? #f)) ; missing test files
5034 (synopsis "Ruby syntax highlighting library")
5035 (description "Coderay is a Ruby library that provides syntax highlighting
5036for select languages.")
5037 (home-page "http://coderay.rubychan.de")
5038 (license license:expat)))
5039
5040(define-public ruby-cuke-modeler
5041 (package
5042 (name "ruby-cuke-modeler")
5043 (version "3.1.0")
5044 (source
5045 (origin
5046 (method url-fetch)
5047 (uri (rubygems-uri "cuke_modeler" version))
5048 (sha256
5049 (base32
5050 "19smj3g3wvz0203l549sadpcxgh0ir350a6k78gq0bmlv9cchmjb"))))
5051 (build-system ruby-build-system)
5052 (arguments `(#:tests? #f)) ;no test suite in gem
5053 (propagated-inputs
5054 `(("ruby-gherkin" ,ruby-gherkin)))
5055 (synopsis "Gherkin test suite analysis tool")
5056 (description "CukeModeler facilitates modeling a test suite that is
5057written in Gherkin (e.g. Cucumber, SpecFlow, Lettuce, etc.). It does this by
5058providing an abstraction layer on top of the Abstract Syntax Tree (AST) that
5059the @code{cucumber-gherkin} generates when parsing features, as well as
5060providing models for feature files and directories in order to be able to have
5061a fully traversable model tree of a test suite's structure. These models can
5062then be analyzed or manipulated more easily than the underlying AST layer.")
5063 (home-page "https://github.com/enkessler/cuke_modeler")
5064 (license license:expat)))
5065
5066(define-public ruby-parallel-tests
5067 (package
5068 (name "ruby-parallel-tests")
5069 (version "3.0.0")
5070 (home-page "https://github.com/grosser/parallel_tests")
5071 (source (origin
5072 (method git-fetch)
5073 (uri (git-reference
5074 (url home-page)
5075 (commit (string-append "v" version))))
5076 (file-name (string-append name version))
5077 (sha256
5078 (base32
5079 "08a6ndqn2dqacmc7yg48k0dh2rfrynvhkd5hiay16dl9m1r9q8pz"))))
5080 (build-system ruby-build-system)
5081 (arguments
5082 '(#:test-target "default"
5083 #:phases (modify-phases %standard-phases
5084 (add-after 'patch-source-shebangs 'patch-shell-invokations
5085 (lambda _
5086 (substitute* '("lib/parallel_tests/tasks.rb"
5087 "spec/parallel_tests/tasks_spec.rb")
5088 (("/bin/sh") (which "sh"))
5089 (("/bin/bash") (which "bash")))
5090 #t))
5091 (add-before 'check 'remove-version-constraints
5092 (lambda _
5093 ;; Remove hard coded version constraints, instead just
5094 ;; use whatever versions are available in Guix.
5095 (delete-file "Gemfile.lock")
5096 (substitute* "Gemfile"
5097 (("'minitest',.*")
5098 "'minitest'\n")
5099 (("'cucumber',.*")
5100 "'cucumber'\n"))
5101 #t))
5102 (add-before 'check 'disable-rails-test
5103 (lambda _
5104 ;; XXX: This test attempts to download and run the test
5105 ;; suites of multiple Rails versions(!) directly.
5106 (delete-file "spec/rails_spec.rb")
5107 #t))
5108 (add-before 'check 'set-HOME
5109 (lambda _
5110 ;; Some tests check the output of Bundler, and fail when
5111 ;; Bundler warns that /homeless-shelter does not exist.
5112 (setenv "HOME" "/tmp")
5113 #t)))))
5114 (native-inputs
5115 `(("ruby-bump" ,ruby-bump)
5116 ("ruby-cucumber" ,ruby-cucumber)
5117 ("ruby-cuke-modeler" ,ruby-cuke-modeler)
5118 ("ruby-minitest" ,ruby-minitest)
5119 ("ruby-rake" ,ruby-rake)
5120 ("ruby-rspec" ,ruby-rspec)
5121 ("ruby-spinach" ,ruby-spinach)))
5122 (propagated-inputs
5123 `(("ruby-parallel" ,ruby-parallel)))
5124 (synopsis "Run tests in parallel")
5125 (description
5126 "This package can speed up @code{Test::Unit}, @code{RSpec},
5127@code{Cucumber}, and @code{Spinach} tests by running them concurrently
5128across multiple CPU cores.")
5129 (license license:expat)))
5130
5131(define-public ruby-parser
5132 (package
5133 (name "ruby-parser")
5134 (version "2.7.2.0")
5135 (source
5136 (origin
5137 (method url-fetch)
5138 (uri (rubygems-uri "parser" version))
5139 (sha256
5140 (base32
5141 "1f7gmm60yla325wlnd3qkxs59qm2y0aan8ljpg6k18rwzrrfil6z"))))
5142 (build-system ruby-build-system)
5143 (arguments
5144 '(#:tests? #f)) ; tests not included in gem
5145 (native-inputs
5146 `(("bundler" ,bundler)
5147 ("ruby-cliver" ,ruby-cliver)
5148 ("ruby-simplecov" ,ruby-simplecov)
5149 ("ruby-racc" ,ruby-racc)))
5150 (inputs
5151 `(("ragel" ,ragel)))
5152 (propagated-inputs
5153 `(("ruby-ast" ,ruby-ast)))
5154 (synopsis "Ruby parser written in pure Ruby")
5155 (description
5156 "This package provides a Ruby parser written in pure Ruby.")
5157 (home-page "https://github.com/whitequark/parser")
5158 (license license:expat)))
5159
5160(define-public ruby-sexp-processor
5161 (package
5162 (name "ruby-sexp-processor")
5163 (version "4.15.0")
5164 (source
5165 (origin
5166 (method url-fetch)
5167 (uri (rubygems-uri "sexp_processor" version))
5168 (sha256
5169 (base32
5170 "0d1vks77xnd0m3s94a58f9bkdwlaml5qdkmprx279m2s0pc2gv55"))))
5171 (build-system ruby-build-system)
5172 (native-inputs
5173 ;; TODO: Add ruby-minitest-proveit once available.
5174 `(("hoe" ,ruby-hoe)))
5175 (synopsis "ParseTree fork which includes generic S-exp processing tools")
5176 (description "The sexp_processor package is derived from ParseTree, but
5177contrary to ParseTree, it includes all the generic S-exp processing tools.
5178Amongst the included tools are @code{Sexp}, @code{SexpProcessor} and
5179@code{Environment}")
5180 (home-page "https://github.com/seattlerb/sexp_processor")
5181 (license license:expat)))
5182
5183(define-public ruby-ruby-parser
5184 (package
5185 (name "ruby-ruby-parser")
5186 (version "3.14.2")
5187 (source
5188 (origin
5189 (method url-fetch)
5190 (uri (rubygems-uri "ruby_parser" version))
5191 (sha256
5192 (base32
5193 "09qcdyjjw3p7g6cjm5m9swkms1xnv35ndiy7yw24cas16qrhha6c"))))
5194 (build-system ruby-build-system)
5195 (native-inputs
5196 `(("hoe" ,ruby-hoe)
5197 ("racc" ,ruby-racc)
5198 ("unifdef" ,unifdef)))
5199 (propagated-inputs
5200 `(("ruby-sexp-processor" ,ruby-sexp-processor)))
5201 (home-page "https://github.com/seattlerb/ruby_parser/")
5202 (synopsis "Ruby parser written in pure Ruby")
5203 (description "The ruby_parser (RP) package provides a Ruby parser written
5204in pure Ruby. It outputs S-expressions which can be manipulated and converted
5205back to Ruby via the @code{ruby2ruby} library.")
5206 (license license:expat)))
5207
5208(define-public ruby-prawn-manual-builder
5209 (package
5210 (name "ruby-prawn-manual-builder")
5211 (version "0.3.1")
5212 (source
5213 (origin
5214 (method url-fetch)
5215 (uri (rubygems-uri "prawn-manual_builder" version))
5216 (sha256
5217 (base32 "1vlg5w7wq43g2hgpgra2nrcxj1kb4ayqliz4gmja2rhs037j2vzs"))))
5218 (build-system ruby-build-system)
5219 (arguments
5220 '(#:tests? #f ; no included tests
5221 #:phases
5222 (modify-phases %standard-phases
5223 (add-after 'extract-gemspec 'patch-gemspec
5224 (lambda _
5225 (substitute* ".gemspec"
5226 ;; Loosen the requirement for pdf-inspector
5227 (("~> 1\\.0\\.7") ">= 0")))))))
5228 (propagated-inputs
5229 `(("ruby-coderay" ,ruby-coderay)))
5230 (synopsis "Tool for writing manuals for Prawn and Prawn accessories")
5231 (description
5232 "This package provides a tool for writing manuals for Prawn and Prawn
5233accessories")
5234 (home-page "https://github.com/prawnpdf/prawn-manual_builder")
5235 (license %prawn-project-licenses)))
5236
5237(define-public ruby-progress_bar
5238 (package
5239 (name "ruby-progress_bar")
5240 (version "1.1.0")
5241 (source
5242 (origin
5243 (method url-fetch)
5244 (uri (rubygems-uri "progress_bar" version))
5245 (sha256
5246 (base32
5247 "1qc40mr6p1z9a3vlpnsg1zfgk1qswviql2a31y63wpv3vr6b5f48"))))
5248 (build-system ruby-build-system)
5249 (arguments
5250 '(#:test-target "spec"))
5251 (propagated-inputs
5252 `(("ruby-highline" ,ruby-highline)
5253 ("ruby-options" ,ruby-options)))
5254 (native-inputs
5255 `(("bundler" ,bundler)
5256 ("ruby-rspec" ,ruby-rspec)
5257 ("ruby-timecop" ,ruby-timecop)))
5258 (synopsis
5259 "Ruby library for displaying progress bars")
5260 (description
5261 "ProgressBar is a simple library for displaying progress bars. The
5262maximum value is configurable, and additional information can be displayed
5263like the percentage completion, estimated time remaining, elapsed time and
5264rate.")
5265 (home-page "https://github.com/paul/progress_bar")
5266 (license license:wtfpl2)))
5267
5268(define-public ruby-dep
5269 (package
5270 (name "ruby-dep")
5271 (version "1.5.0")
5272 (source
5273 (origin
5274 (method url-fetch)
5275 (uri (rubygems-uri "ruby_dep" version))
5276 (sha256
5277 (base32
5278 "1c1bkl97i9mkcvkn1jks346ksnvnnp84cs22gwl0vd7radybrgy5"))))
5279 (build-system ruby-build-system)
5280 (arguments
5281 '(#:tests? #f)) ; No included tests
5282 (synopsis "Creates a version constraint of supported Rubies")
5283 (description
5284 "This package helps create a version constraint of supported Rubies,
5285suitable for a gemspec file.")
5286 (home-page "https://github.com/e2/ruby_dep")
5287 (license license:expat)))
5288
5289(define-public ruby-progressbar
5290 (package
5291 (name "ruby-progressbar")
5292 (version "1.10.1")
5293 (source
5294 (origin
5295 (method url-fetch)
5296 (uri (rubygems-uri "ruby-progressbar" version))
5297 (sha256
5298 (base32 "1k77i0d4wsn23ggdd2msrcwfy0i376cglfqypkk2q77r2l3408zf"))))
5299 (build-system ruby-build-system)
5300 (arguments
5301 '(;; TODO: There looks to be a circular dependency with ruby-fuubar.
5302 #:tests? #f))
5303 (synopsis "Text progress bar library for Ruby")
5304 (description
5305 "Ruby/ProgressBar is an flexible text progress bar library for Ruby.
5306The output can be customized with a formatting system.")
5307 (home-page "https://github.com/jfelchner/ruby-progressbar")
5308 (license license:expat)))
5309
5310(define-public ruby-pry
5311 (package
5312 (name "ruby-pry")
5313 (version "0.13.1")
5314 (source
5315 (origin
5316 (method url-fetch)
5317 (uri (rubygems-uri "pry" version))
5318 (sha256
5319 (base32
5320 "0iyw4q4an2wmk8v5rn2ghfy2jaz9vmw2nk8415nnpx2s866934qk"))))
5321 (build-system ruby-build-system)
5322 (arguments
5323 '(#:tests? #f)) ; no tests
5324 (propagated-inputs
5325 `(("ruby-coderay" ,ruby-coderay)
5326 ("ruby-method-source" ,ruby-method-source)))
5327 (synopsis "Ruby REPL")
5328 (description "Pry is an IRB alternative and runtime developer console for
5329Ruby. It features syntax highlighting, a plugin architecture, runtime
5330invocation, and source and documentation browsing.")
5331 (home-page "https://cobaltbluemedia.com/pryrepl/")
5332 (license license:expat)))
5333
5334(define-public ruby-single-cov
5335 (package
5336 (name "ruby-single-cov")
5337 (version "1.3.2")
5338 (home-page "https://github.com/grosser/single_cov")
5339 (source (origin
5340 (method git-fetch)
5341 (uri (git-reference (url home-page)
5342 (commit (string-append "v" version))))
5343 (file-name (git-file-name name version))
5344 (sha256
5345 (base32
5346 "05qdzpcai1p23a120gb9bxkfl4y73k9hicx34ch2lsk31lgi9bl7"))))
5347 (build-system ruby-build-system)
5348 (arguments
5349 '(#:test-target "default"
5350 #:phases (modify-phases %standard-phases
5351 (replace 'replace-git-ls-files
5352 (lambda _
5353 (substitute* "single_cov.gemspec"
5354 (("`git ls-files lib/ bin/ MIT-LICENSE`")
5355 "`find lib/ bin/ MIT-LICENSE -type f | sort`"))
5356 #t))
5357 (add-before 'check 'remove-version-constraints
5358 (lambda _
5359 (delete-file "Gemfile.lock")
5360 #t))
5361 (add-before 'check 'make-files-writable
5362 (lambda _
5363 ;; Tests need to create local directories and open files
5364 ;; with write permissions.
5365 (for-each make-file-writable
5366 (find-files "specs" #:directories? #t))
5367 #t))
5368 (add-before 'check 'disable-failing-test
5369 (lambda _
5370 ;; XXX: This test copies assets from minitest, but can
5371 ;; not cope with the files being read-only. Just skip
5372 ;; it for now.
5373 (substitute* "specs/single_cov_spec.rb"
5374 (("it \"complains when coverage is bad\"")
5375 "xit \"complains when coverage is bad\""))
5376 #t)))))
5377 (native-inputs
5378 `(("ruby-bump" ,ruby-bump)
5379 ("ruby-minitest" ,ruby-minitest)
5380 ("ruby-rspec" ,ruby-rspec)
5381 ("ruby-simplecov" ,ruby-simplecov)))
5382 (synopsis "Code coverage reporting tool")
5383 (description
5384 "This package provides actionable code coverage reports for Ruby
5385projects. It has very little overhead and can be easily integrated with
5386development tools to catch coverage problems early.")
5387 (license license:expat)))
5388
5389(define-public ruby-guard
5390 (package
5391 (name "ruby-guard")
5392 (version "2.13.0")
5393 (source (origin
5394 (method git-fetch)
5395 ;; The gem does not include a Rakefile, nor does it contain a
5396 ;; gemspec file, nor does it come with the tests. This is why
5397 ;; we fetch the tarball from Github.
5398 (uri (git-reference
5399 (url "https://github.com/guard/guard")
5400 (commit (string-append "v" version))))
5401 (file-name (git-file-name name version))
5402 (sha256
5403 (base32
5404 "16pxcszr0g2jnl3090didxh1d8z5m2mly14m3w4rspb8fmclsnjs"))))
5405 (build-system ruby-build-system)
5406 (arguments
5407 `(#:tests? #f ; tests require cucumber
5408 #:phases
5409 (modify-phases %standard-phases
5410 (add-after 'unpack 'remove-git-ls-files
5411 (lambda* (#:key outputs #:allow-other-keys)
5412 (substitute* "guard.gemspec"
5413 (("git ls-files -z") "find . -type f -print0"))
5414 #t))
5415 (replace 'build
5416 (lambda _
5417 (invoke "gem" "build" "guard.gemspec"))))))
5418 (propagated-inputs
5419 `(("ruby-formatador" ,ruby-formatador)
5420 ("ruby-listen" ,ruby-listen)
5421 ("ruby-lumberjack" ,ruby-lumberjack)
5422 ("ruby-nenv" ,ruby-nenv)
5423 ("ruby-notiffany" ,ruby-notiffany)
5424 ("ruby-pry" ,ruby-pry)
5425 ("ruby-shellany" ,ruby-shellany)
5426 ("ruby-thor" ,ruby-thor)))
5427 (native-inputs
5428 `(("bundler" ,bundler)
5429 ("ruby-rspec" ,ruby-rspec)))
5430 (synopsis "Tool to handle events on file system modifications")
5431 (description
5432 "Guard is a command line tool to easily handle events on file system
5433modifications. Guard automates various tasks by running custom rules whenever
5434file or directories are modified.")
5435 (home-page "https://guardgem.org/")
5436 (license license:expat)))
5437
5438(define-public ruby-spinach
5439 (package
5440 (name "ruby-spinach")
5441 (version "0.11.0")
5442 (home-page "https://github.com/codegram/spinach")
5443 (source (origin
5444 (method url-fetch)
5445 (uri (rubygems-uri "spinach" version))
5446 (sha256
5447 (base32
5448 "1mv053mqz9c8ngqa6wp1ymk2fax6j0yqzax6918akrdr7c3fx3c6"))))
5449 (build-system ruby-build-system)
5450 (arguments
5451 ;; FIXME: Disable tests altogether because they depend on 'capybara'
5452 ;; which in turn depends on many other unpackaged gems. Enable once
5453 ;; capybara is available.
5454 '(#:tests? #f))
5455 (propagated-inputs
5456 `(("ruby-colorize" ,ruby-colorize)
5457 ("ruby-gherkin-ruby" ,ruby-gherkin-ruby)
5458 ("ruby-json" ,ruby-json)))
5459 (synopsis "Gherkin-based BDD framework")
5460 (description
5461 "Spinach is a high-level @acronym{BDD, Behavior-driven development}
5462framework that leverages the expressive @code{Gherkin} language to help you
5463define executable specifications of your code.")
5464 (license license:expat)))
5465
5466(define-public ruby-tilt
5467 (package
5468 (name "ruby-tilt")
5469 (version "2.0.10")
5470 (source
5471 (origin
5472 (method git-fetch) ;the distributed gem lacks tests
5473 (uri (git-reference
5474 (url "https://github.com/rtomayko/tilt")
5475 (commit (string-append "v" version))))
5476 (file-name (git-file-name name version))
5477 (sha256
5478 (base32
5479 "0adb7fg7925n2rd9a8kkqz3mgylw2skp9hkh9qc1rnph72mqsm6r"))))
5480 (build-system ruby-build-system)
5481 (arguments
5482 '(#:phases
5483 (modify-phases %standard-phases
5484 (add-after 'unpack 'remove-some-dependencies
5485 (lambda _
5486 (substitute* "Gemfile"
5487 ;; TODO ronn is used for generating the manual
5488 (("gem 'ronn'.*") "\n")
5489 ;; ruby-haml has a runtime dependency on ruby-tilt, so don't
5490 ;; pass it in as a native-input
5491 (("gem 'haml'.*") "\n")
5492 ;; TODO Not all of these gems are packaged for Guix yet:
5493 ;; less, coffee-script, livescript, babel-transpiler,
5494 ;; typescript-node
5495 (("if can_execjs") "if false")
5496 ;; Disable the secondary group to reduce the number of
5497 ;; dependencies. None of the normal approaches work, so patch
5498 ;; the Gemfile instead.
5499 (("group :secondary") "[].each"))
5500 #t)))))
5501 (propagated-inputs
5502 `(("ruby-pandoc-ruby" ,ruby-pandoc-ruby)
5503 ("ruby-sassc" ,ruby-sassc)))
5504 (native-inputs
5505 `(("bundler" ,bundler)
5506 ("ruby-yard" ,ruby-yard)
5507 ("ruby-builder" ,ruby-builder)
5508 ("ruby-erubis" ,ruby-erubis)
5509 ("ruby-markaby" ,ruby-markaby)))
5510 (synopsis "Generic interface to multiple Ruby template engines")
5511 (description
5512 "Tilt is a thin interface over a number of different Ruby template
5513engines in an attempt to make their usage as generic as possible.")
5514 (home-page "https://github.com/rtomayko/tilt/")
5515 (license license:expat)))
5516
5517(define-public ruby-thread-safe
5518 (package
5519 (name "ruby-thread-safe")
5520 (version "0.3.6")
5521 (source
5522 (origin
5523 (method url-fetch)
5524 (uri (rubygems-uri "thread_safe" version))
5525 (sha256
5526 (base32
5527 "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy"))))
5528 (build-system ruby-build-system)
5529 (arguments
5530 '(#:tests? #f)) ; needs simplecov, among others
5531 (synopsis "Thread-safe utilities for Ruby")
5532 (description "The thread_safe library provides thread-safe collections and
5533utilities for Ruby.")
5534 (home-page "https://github.com/ruby-concurrency/thread_safe")
5535 (license license:asl2.0)))
5536
5537(define-public ruby-tzinfo
5538 (package
5539 (name "ruby-tzinfo")
5540 (version "1.2.4")
5541 (source
5542 (origin
5543 (method url-fetch)
5544 (uri (rubygems-uri "tzinfo" version))
5545 (sha256
5546 (base32
5547 "09dpbrih054mn42flbbcdpzk2727mzfvjrgqb12zdafhx7p9rrzp"))))
5548 (build-system ruby-build-system)
5549 (arguments
5550 '(#:phases
5551 (modify-phases %standard-phases
5552 (add-after 'unpack 'skip-safe-tests
5553 (lambda _
5554 (substitute* "test/test_utils.rb"
5555 (("def safe_test\\(options = \\{\\}\\)")
5556 "def safe_test(options = {})
5557 skip('The Guix build environment has an unsafe load path')"))
5558 #t)))))
5559 (propagated-inputs
5560 `(("ruby-thread-safe" ,ruby-thread-safe)))
5561 (synopsis "Time zone library for Ruby")
5562 (description "TZInfo is a Ruby library that provides daylight savings
5563aware transformations between times in different time zones.")
5564 (home-page "https://tzinfo.github.io")
5565 (license license:expat)))
5566
5567(define-public ruby-tzinfo-data
5568 (package
5569 (name "ruby-tzinfo-data")
5570 (version "1.2017.3")
5571 (source
5572 (origin
5573 (method git-fetch)
5574 ;; Download from GitHub because the rubygems version does not contain
5575 ;; Rakefile or tests.
5576 (uri (git-reference
5577 (url "https://github.com/tzinfo/tzinfo-data")
5578 (commit (string-append "v" version))))
5579 (file-name (git-file-name name version))
5580 (sha256
5581 (base32
5582 "0v3phl5l3jrm6waxcszqmj2dkjhqawxfsxb6mss7vkp1hlckqcdp"))
5583 ;; Remove the known test failure.
5584 ;; https://github.com/tzinfo/tzinfo-data/issues/10
5585 ;; https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1587128
5586 (patches (search-patches
5587 "ruby-tzinfo-data-ignore-broken-test.patch"))))
5588 (build-system ruby-build-system)
5589 (propagated-inputs
5590 `(("ruby-tzinfo" ,ruby-tzinfo)))
5591 (synopsis "Data from the IANA Time Zone database")
5592 (description
5593 "This library provides @code{TZInfo::Data}, which contains data from the
5594IANA Time Zone database packaged as Ruby modules for use with @code{TZInfo}.")
5595 (home-page "https://tzinfo.github.io")
5596 (license license:expat)))
5597
5598(define-public ruby-rb-inotify
5599 (package
5600 (name "ruby-rb-inotify")
5601 (version "0.9.10")
5602 (source
5603 (origin
5604 (method url-fetch)
5605 (uri (rubygems-uri "rb-inotify" version))
5606 (sha256
5607 (base32
5608 "0yfsgw5n7pkpyky6a9wkf1g9jafxb0ja7gz0qw0y14fd2jnzfh71"))))
5609 (build-system ruby-build-system)
5610 (arguments
5611 '(#:tests? #f ; there are no tests
5612 #:phases
5613 (modify-phases %standard-phases
5614 ;; Building the gemspec with rake is not working here since it is
5615 ;; generated with Jeweler. It is also unnecessary because the
5616 ;; existing gemspec does not use any development tools to generate a
5617 ;; list of files.
5618 (replace 'build
5619 (lambda _
5620 (invoke "gem" "build" "rb-inotify.gemspec"))))))
5621 (propagated-inputs
5622 `(("ruby-ffi" ,ruby-ffi)))
5623 (native-inputs
5624 `(("ruby-yard" ,ruby-yard)))
5625 (synopsis "Ruby wrapper for Linux's inotify")
5626 (description "rb-inotify is a simple wrapper over the @code{inotify} Linux
5627kernel subsystem for monitoring changes to files and directories.")
5628 (home-page "https://github.com/nex3/rb-inotify")
5629 (license license:expat)))
5630
5631(define-public ruby-pry-editline
5632 (package
5633 (name "ruby-pry-editline")
5634 (version "1.1.2")
5635 (source (origin
5636 (method url-fetch)
5637 (uri (rubygems-uri "pry-editline" version))
5638 (sha256
5639 (base32
5640 "1pjxyvdxvw41xw3yyl18pwzix8hbvn6lgics7qcfhjfsf1zs8x1z"))))
5641 (build-system ruby-build-system)
5642 (arguments `(#:tests? #f)) ; no tests included
5643 (native-inputs
5644 `(("bundler" ,bundler)))
5645 (synopsis "Open the current REPL line in an editor")
5646 (description
5647 "This gem provides a plugin for the Ruby REPL to enable opening the
5648current line in an external editor.")
5649 (home-page "https://github.com/tpope/pry-editline")
5650 (license license:expat)))
5651
5652(define-public ruby-sdoc
5653 (package
5654 (name "ruby-sdoc")
5655 (version "1.1.0")
5656 (source (origin
5657 (method url-fetch)
5658 (uri (rubygems-uri "sdoc" version))
5659 (sha256
5660 (base32
5661 "1am73dldx1fqlw2xny5vyk00pgkisg6bvs0pa8jjd7c19drjczrd"))))
5662 (build-system ruby-build-system)
5663 (arguments
5664 `(#:phases
5665 (modify-phases %standard-phases
5666 (add-before 'check 'set-rubylib-and-patch-gemfile
5667 (lambda _
5668 (setenv "RUBYLIB" "lib")
5669 (substitute* "sdoc.gemspec"
5670 (("s.add_runtime_dependency.*") "\n")
5671 (("s.add_dependency.*") "\n"))
5672 (substitute* "Gemfile"
5673 (("gem \"rake\".*")
5674 "gem 'rake'\ngem 'rdoc'\ngem 'json'\n"))
5675 #t)))))
5676 (propagated-inputs
5677 `(("ruby-json" ,ruby-json)))
5678 (native-inputs
5679 `(("bundler" ,bundler)
5680 ("ruby-minitest" ,ruby-minitest)
5681 ("ruby-hoe" ,ruby-hoe)))
5682 (synopsis "Generate searchable RDoc documentation")
5683 (description
5684 "SDoc is an RDoc documentation generator to build searchable HTML
5685documentation for Ruby code.")
5686 (home-page "https://github.com/voloko/sdoc")
5687 (license license:expat)))
5688
5689(define-public ruby-tins
5690 (package
5691 (name "ruby-tins")
5692 (version "1.15.0")
5693 (source (origin
5694 (method url-fetch)
5695 (uri (rubygems-uri "tins" version))
5696 (sha256
5697 (base32
5698 "09whix5a7ics6787zrkwjmp16kqyh6560p9f317syks785805f7s"))))
5699 (build-system ruby-build-system)
5700 ;; This gem needs gem-hadar at development time, but gem-hadar needs tins
5701 ;; at runtime. To avoid the dependency on gem-hadar we disable rebuilding
5702 ;; the gemspec.
5703 (arguments
5704 `(#:tests? #f ; there are no tests
5705 #:phases
5706 (modify-phases %standard-phases
5707 (replace 'build
5708 (lambda _
5709 ;; "lib/spruz" is a symlink. Leaving it in the gemspec file
5710 ;; causes an error.
5711 (substitute* "tins.gemspec"
5712 (("\"lib/spruz\", ") ""))
5713 (invoke "gem" "build" "tins.gemspec"))))))
5714 (synopsis "Assorted tools for Ruby")
5715 (description "Tins is a Ruby library providing assorted tools.")
5716 (home-page "https://github.com/flori/tins")
5717 (license license:expat)))
5718
5719(define-public ruby-gem-hadar
5720 (package
5721 (name "ruby-gem-hadar")
5722 (version "1.9.1")
5723 (source (origin
5724 (method url-fetch)
5725 (uri (rubygems-uri "gem_hadar" version))
5726 (sha256
5727 (base32
5728 "1zxvd9l95rbks7x3cxn396w0sn7nha5542bf97v8akkn4vm7nby9"))))
5729 (build-system ruby-build-system)
5730 ;; This gem needs itself at development time. We disable rebuilding of the
5731 ;; gemspec to avoid this loop.
5732 (arguments
5733 `(#:tests? #f ; there are no tests
5734 #:phases
5735 (modify-phases %standard-phases
5736 (replace 'build
5737 (lambda _
5738 (invoke "gem" "build" "gem_hadar.gemspec"))))))
5739 (propagated-inputs
5740 `(("git" ,git)
5741 ("ruby-tins" ,ruby-tins)
5742 ("ruby-yard" ,ruby-yard)))
5743 (synopsis "Library for the development of Ruby gems")
5744 (description
5745 "This library contains some useful functionality to support the
5746development of Ruby gems.")
5747 (home-page "https://github.com/flori/gem_hadar")
5748 (license license:expat)))
5749
5750(define-public ruby-minitest-tu-shim
5751 (package
5752 (name "ruby-minitest-tu-shim")
5753 (version "1.3.3")
5754 (source (origin
5755 (method url-fetch)
5756 (uri (rubygems-uri "minitest_tu_shim" version))
5757 (sha256
5758 (base32
5759 "0xlyh94iirvssix157ng2akr9nqhdygdd0c6094hhv7dqcfrn9fn"))))
5760 (build-system ruby-build-system)
5761 (arguments
5762 `(#:phases
5763 (modify-phases %standard-phases
5764 (add-after 'unpack 'fix-test-include-path
5765 (lambda* (#:key inputs #:allow-other-keys)
5766 (let* ((minitest (assoc-ref inputs "ruby-minitest-4")))
5767 (substitute* "Rakefile"
5768 (("Hoe\\.add_include_dirs .*")
5769 (string-append "Hoe.add_include_dirs \""
5770 minitest "/lib/ruby/vendor_ruby"
5771 "/gems/minitest-"
5772 ,(package-version ruby-minitest-4)
5773 "/lib" "\""))))
5774 #t))
5775 (add-before 'check 'fix-test-assumptions
5776 (lambda _
5777 ;; The test output includes the file name, so a couple of tests
5778 ;; fail. Changing the regular expressions slightly fixes this
5779 ;; problem.
5780 (substitute* "test/test_mini_test.rb"
5781 (("output.sub!\\(.*, 'FILE:LINE'\\)")
5782 "output.sub!(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')")
5783 (("gsub\\(/.*, 'FILE:LINE'\\)")
5784 "gsub(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')"))
5785 #t)))))
5786 (propagated-inputs
5787 `(("ruby-minitest-4" ,ruby-minitest-4)))
5788 (native-inputs
5789 `(("ruby-hoe" ,ruby-hoe)))
5790 (synopsis "Adapter library between minitest and test/unit")
5791 (description
5792 "This library bridges the gap between the small and fast minitest and
5793Ruby's large and slower test/unit.")
5794 (home-page "https://rubygems.org/gems/minitest_tu_shim")
5795 (license license:expat)))
5796
5797(define-public ruby-term-ansicolor
5798 (package
5799 (name "ruby-term-ansicolor")
5800 (version "1.6.0")
5801 (source (origin
5802 (method url-fetch)
5803 (uri (rubygems-uri "term-ansicolor" version))
5804 (sha256
5805 (base32
5806 "1b1wq9ljh7v3qyxkk8vik2fqx2qzwh5lval5f92llmldkw7r7k7b"))))
5807 (build-system ruby-build-system)
5808 ;; Rebuilding the gemspec seems to require git, even though this is not a
5809 ;; git repository, so we just build the gem from the existing gemspec.
5810 (arguments
5811 `(#:phases
5812 (modify-phases %standard-phases
5813 (add-after 'unpack 'fix-test
5814 (lambda -
5815 (substitute* "tests/hsl_triple_test.rb"
5816 (("0\\\\\\.0%")
5817 "0\\.?0?%"))))
5818 (replace 'build
5819 (lambda _
5820 (invoke "gem" "build" "term-ansicolor.gemspec"))))))
5821 (propagated-inputs
5822 `(("ruby-tins" ,ruby-tins)))
5823 (native-inputs
5824 `(("ruby-gem-hadar" ,ruby-gem-hadar)
5825 ("ruby-minitest-tu-shim" ,ruby-minitest-tu-shim)))
5826 (synopsis "Ruby library to control the attributes of terminal output")
5827 (description
5828 "This Ruby library uses ANSI escape sequences to control the attributes
5829of terminal output.")
5830 (home-page "https://flori.github.io/term-ansicolor/")
5831 ;; There is no mention of the "or later" clause.
5832 (license license:gpl2)))
5833
5834(define-public ruby-terraform
5835 (package
5836 (name "ruby-terraform")
5837 (version "0.22.0")
5838 (source
5839 (origin
5840 (method url-fetch)
5841 (uri (rubygems-uri "ruby-terraform" version))
5842 (sha256
5843 (base32
5844 "13zjkp71cd19j2ds2h9rqwcfr1zdg5nsh63p89l6qcsc9z39z324"))))
5845 (build-system ruby-build-system)
5846 (arguments
5847 '(#:tests? #f)) ; No included tests
5848 (propagated-inputs
5849 `(("ruby-lino" ,ruby-lino)))
5850 (synopsis "Ruby wrapper around the Terraform command line interface")
5851 (description
5852 "This package provides a Ruby wrapper around the Terraform command line
5853interface so that Terraform can be more easily invoked from Ruby code.")
5854 (home-page "https://github.com/infrablocks/ruby_terraform")
5855 (license license:expat)))
5856
5857(define-public ruby-pstree
5858 (package
5859 (name "ruby-pstree")
5860 (version "0.1.0")
5861 (source (origin
5862 (method url-fetch)
5863 (uri (rubygems-uri "pstree" version))
5864 (sha256
5865 (base32
5866 "1mig1sv5qx1cdyhjaipy8jlh9j8pnja04vprrzihyfr54x0215p1"))))
5867 (build-system ruby-build-system)
5868 (native-inputs
5869 `(("ruby-gem-hadar" ,ruby-gem-hadar)
5870 ("bundler" ,bundler)))
5871 (synopsis "Create a process tree data structure")
5872 (description
5873 "This library uses the output of the @code{ps} command to create a
5874process tree data structure for the current host.")
5875 (home-page "https://github.com/flori/pstree")
5876 ;; There is no mention of the "or later" clause.
5877 (license license:gpl2)))
5878
5879(define-public ruby-utils
5880 (package
5881 (name "ruby-utils")
5882 (version "0.9.0")
5883 (source (origin
5884 (method url-fetch)
5885 (uri (rubygems-uri "utils" version))
5886 (sha256
5887 (base32
5888 "196zhgcygrnx09bb9mh22qas03rl9avzx8qs0wnxznpin4pffwcl"))))
5889 (build-system ruby-build-system)
5890 (propagated-inputs
5891 `(("ruby-tins" ,ruby-tins)
5892 ("ruby-term-ansicolor" ,ruby-term-ansicolor)
5893 ("ruby-pstree" ,ruby-pstree)
5894 ("ruby-pry-editline" ,ruby-pry-editline)))
5895 (native-inputs
5896 `(("ruby-gem-hadar" ,ruby-gem-hadar)
5897 ("bundler" ,bundler)))
5898 (synopsis "Command line tools for working with Ruby")
5899 (description
5900 "This package provides assorted command line tools that may be useful
5901when working with Ruby code.")
5902 (home-page "https://github.com/flori/utils")
5903 ;; There is no mention of the "or later" clause.
5904 (license license:gpl2)))
5905
5906(define-public ruby-jaro-winkler
5907 (package
5908 (name "ruby-jaro-winkler")
5909 (version "1.5.4")
5910 (source
5911 (origin
5912 (method url-fetch)
5913 (uri (rubygems-uri "jaro_winkler" version))
5914 (sha256
5915 (base32 "1y8l6k34svmdyqxya3iahpwbpvmn3fswhwsvrz0nk1wyb8yfihsh"))))
5916 (build-system ruby-build-system)
5917 (arguments
5918 '(#:tests? #f)) ; no included tests
5919 (synopsis "Ruby implementation of Jaro-Winkler distance algorithm")
5920 (description
5921 "@code{jaro_winkler} is an implementation of Jaro-Winkler distance
5922algorithm. It is written as a C extension and will fallback to a pure Ruby
5923implementation on platforms where this is unsupported.")
5924 (home-page "https://github.com/tonytonyjan/jaro_winkler")
5925 (license license:expat)))
5926
5927(define-public ruby-json
5928 (package
5929 (name "ruby-json")
5930 (version "2.1.0")
5931 (source
5932 (origin
5933 (method url-fetch)
5934 (uri (rubygems-uri "json" version))
5935 (sha256
5936 (base32
5937 "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp"))))
5938 (build-system ruby-build-system)
5939 (arguments '(#:tests? #f)) ; dependency cycle with sdoc
5940 (synopsis "JSON library for Ruby")
5941 (description "This Ruby library provides a JSON implementation written as
5942a native C extension.")
5943 (home-page "http://json-jruby.rubyforge.org/")
5944 (license (list license:ruby license:gpl2)))) ; GPL2 only
5945
5946(define-public ruby-json-pure
5947 (package
5948 (name "ruby-json-pure")
5949 (version "2.2.0")
5950 (source (origin
5951 (method url-fetch)
5952 (uri (rubygems-uri "json_pure" version))
5953 (sha256
5954 (base32
5955 "0m0j1mfwv0mvw72kzqisb26xjl236ivqypw1741dkis7s63b8439"))))
5956 (build-system ruby-build-system)
5957 (arguments
5958 `(#:phases
5959 (modify-phases %standard-phases
5960 (add-after 'unpack 'fix-rakefile
5961 (lambda _
5962 (substitute* "Rakefile"
5963 ;; Since this is not a git repository, do not call 'git'.
5964 (("`git ls-files`") "`find . -type f |sort`")
5965 ;; Loosen dependency constraint.
5966 (("'test-unit', '~> 2.0'") "'test-unit', '>= 2.0'"))
5967 #t))
5968 (add-after 'replace-git-ls-files 'regenerate-gemspec
5969 (lambda _
5970 ;; Regenerate gemspec so loosened dependency constraints are
5971 ;; propagated.
5972 (invoke "rake" "gemspec")))
5973 (add-after 'regenerate-gemspec 'fix-json-java.gemspec
5974 (lambda _
5975 ;; This gemspec doesn't look to be generated by the above
5976 ;; command, so patch it separately.
5977 (substitute* "json-java.gemspec"
5978 (("%q<test-unit>\\.freeze, \\[\"~> 2\\.0\"\\]")
5979 "%q<test-unit>.freeze, [\">= 2.0\"]"))
5980 #t)))))
5981 (native-inputs
5982 `(("bundler" ,bundler)
5983 ("ragel" ,ragel)
5984 ("ruby-simplecov" ,ruby-simplecov)
5985 ("ruby-test-unit" ,ruby-test-unit)))
5986 (synopsis "JSON implementation in pure Ruby")
5987 (description
5988 "This package provides a JSON implementation written in pure Ruby.")
5989 (home-page "https://flori.github.com/json/")
5990 (license license:ruby)))
5991
5992(define-public ruby-jwt
5993 (package
5994 (name "ruby-jwt")
5995 (version "2.1.0")
5996 (source
5997 (origin
5998 (method url-fetch)
5999 (uri (rubygems-uri "jwt" version))
6000 (sha256
6001 (base32
6002 "1w0kaqrbl71cq9sbnixc20x5lqah3hs2i93xmhlfdg2y3by7yzky"))))
6003 (build-system ruby-build-system)
6004 (arguments
6005 '(#:test-target "test"
6006 #:phases
6007 (modify-phases %standard-phases
6008 (add-after 'unpack 'remove-unnecessary-dependencies
6009 (lambda _
6010 (substitute* "spec/spec_helper.rb"
6011 (("require 'simplecov.*") "\n")
6012 ;; Use [].each to disable running the SimpleCov configuration
6013 ;; block
6014 (("SimpleCov\\.configure") "[].each")
6015 (("require 'codeclimate-test-reporter'") "")
6016 (("require 'codacy-coverage'") "")
6017 (("Codacy::Reporter\\.start") ""))
6018 #t)))))
6019 (native-inputs
6020 `(("bundler" ,bundler)
6021 ("ruby-rspec" ,ruby-rspec)
6022 ("ruby-rbnacl" ,ruby-rbnacl)))
6023 (synopsis "Ruby implementation of the JSON Web Token standard")
6024 (description
6025 "This package provides a pure Ruby implementation of the RFC 7519 OAuth
6026@acronym{JWT, JSON Web Token} standard.")
6027 (home-page "https://github.com/jwt/ruby-jwt")
6028 (license license:expat)))
6029
6030;; Even though this package only provides bindings for a Mac OSX API it is
6031;; required by "ruby-listen" at runtime.
6032(define-public ruby-rb-fsevent
6033 (package
6034 (name "ruby-rb-fsevent")
6035 (version "0.10.3")
6036 (source (origin
6037 (method url-fetch)
6038 (uri (rubygems-uri "rb-fsevent" version))
6039 (sha256
6040 (base32
6041 "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8"))))
6042 (build-system ruby-build-system)
6043 ;; Tests need "guard-rspec", which needs "guard". However, "guard" needs
6044 ;; "listen", which needs "rb-fsevent" at runtime.
6045 (arguments `(#:tests? #f))
6046 (synopsis "FSEvents API with signals catching")
6047 (description
6048 "This library provides Ruby bindings for the Mac OSX FSEvents API.")
6049 (home-page "https://rubygems.org/gems/rb-fsevent")
6050 (license license:expat)))
6051
6052(define-public ruby-listen
6053 (package
6054 (name "ruby-listen")
6055 (version "3.2.0")
6056 (source
6057 (origin
6058 ;; The gem does not include a Rakefile, so fetch from the Git
6059 ;; repository.
6060 (method git-fetch)
6061 (uri (git-reference
6062 (url "https://github.com/guard/listen")
6063 (commit (string-append "v" version))))
6064 (file-name (git-file-name name version))
6065 (sha256
6066 (base32
6067 "1hkp1g6hk5clsmbd001gkc12ma6s459x820piajyasv61m87if24"))))
6068 (build-system ruby-build-system)
6069 (arguments
6070 `(#:test-target "spec"
6071 #:phases
6072 (modify-phases %standard-phases
6073 (add-after 'unpack 'fix-files-in-gemspec
6074 (lambda _
6075 (substitute* "listen.gemspec"
6076 (("`git ls-files -z`") "`find . -type f -printf '%P\\\\0' |sort -z`"))
6077 #t))
6078 (add-before 'check 'remove-unnecessary-dependencies'
6079 (lambda _
6080 (substitute* "Rakefile"
6081 ;; Rubocop is for code linting, and is unnecessary for running
6082 ;; the tests.
6083 ((".*rubocop.*") ""))
6084 #t)))))
6085 (native-inputs
6086 `(("bundler" ,bundler)
6087 ("ruby-rspec" ,ruby-rspec)))
6088 (inputs
6089 `(;; ruby-thor is used for the command line interface, and is referenced
6090 ;; in the wrapper, and therefore just needs to be an input.
6091 ("ruby-thor" ,ruby-thor)))
6092 (propagated-inputs
6093 `(("ruby-rb-fsevent" ,ruby-rb-fsevent)
6094 ("ruby-rb-inotify" ,ruby-rb-inotify)
6095 ("ruby-dep" ,ruby-dep)))
6096 (synopsis "Listen to file modifications")
6097 (description "The Listen gem listens to file modifications and notifies
6098you about the changes.")
6099 (home-page "https://github.com/guard/listen")
6100 (license license:expat)))
6101
6102(define-public ruby-loofah
6103 (package
6104 (name "ruby-loofah")
6105 (version "2.2.3")
6106 (source
6107 (origin
6108 (method url-fetch)
6109 (uri (rubygems-uri "loofah" version))
6110 (sha256
6111 (base32
6112 "1ccsid33xjajd0im2xv941aywi58z7ihwkvaf1w2bv89vn5bhsjg"))))
6113 (build-system ruby-build-system)
6114 (arguments
6115 '(#:phases
6116 (modify-phases %standard-phases
6117 (add-after 'unpack 'remove-unnecessary-dependencies
6118 (lambda _
6119 ;; concourse is a development tool which is unused, so remove it
6120 ;; so it's not required.
6121 (substitute* "Gemfile"
6122 ((".*\"concourse\".*") "\n"))
6123 (substitute* "Rakefile"
6124 (("require 'concourse'") "")
6125 (("Concourse\\.new.*") "\n"))
6126 #t)))))
6127 (native-inputs
6128 `(("ruby-hoe" ,ruby-hoe)
6129 ("ruby-rr" ,ruby-rr)))
6130 (propagated-inputs
6131 `(("ruby-nokogiri" ,ruby-nokogiri)
6132 ("ruby-crass" ,ruby-crass)))
6133 (synopsis "Ruby library for manipulating and transforming HTML/XML")
6134 (description
6135 "Loofah is a general library for manipulating and transforming HTML/XML
6136documents and fragments. It's built on top of Nokogiri and libxml2.")
6137 (home-page "https://github.com/flavorjones/loofah")
6138 (license license:expat)))
6139
6140(define-public ruby-activesupport
6141 (package
6142 (name "ruby-activesupport")
6143 (version "5.2.2.1")
6144 (source
6145 (origin
6146 (method url-fetch)
6147 (uri (rubygems-uri "activesupport" version))
6148 (sha256
6149 (base32
6150 "161bp4p01v1a1lvszrhd1a02zf9x1p1l1yhw79a3rix1kvzkkdqb"))))
6151 (build-system ruby-build-system)
6152 (arguments
6153 `(#:phases
6154 (modify-phases %standard-phases
6155 (replace 'check
6156 (lambda _
6157 ;; There are no tests, instead attempt to load the library.
6158 (invoke "ruby" "-Ilib" "-r" "active_support"))))))
6159 (propagated-inputs
6160 `(("ruby-concurrent" ,ruby-concurrent)
6161 ("ruby-i18n" ,ruby-i18n)
6162 ("ruby-minitest" ,ruby-minitest)
6163 ("ruby-tzinfo" ,ruby-tzinfo)
6164 ("ruby-tzinfo-data" ,ruby-tzinfo-data)))
6165 (synopsis "Ruby on Rails utility library")
6166 (description "ActiveSupport is a toolkit of support libraries and Ruby
6167core extensions extracted from the Rails framework. It includes support for
6168multibyte strings, internationalization, time zones, and testing.")
6169 (home-page "http://www.rubyonrails.org")
6170 (license license:expat)))
6171
6172(define-public ruby-crass
6173 (package
6174 (name "ruby-crass")
6175 (version "1.0.6")
6176 (home-page "https://github.com/rgrove/crass")
6177 (source (origin
6178 ;; The gem does not contain tests, so pull from git.
6179 (method git-fetch)
6180 (uri (git-reference
6181 (url home-page)
6182 (commit (string-append "v" version))))
6183 (file-name (git-file-name name version))
6184 (sha256
6185 (base32
6186 "1gbsb81psgb6xhnwpx4s409jc0mk0gijh039sy5xyi8jpaaadp40"))))
6187 (build-system ruby-build-system)
6188 (synopsis "Pure Ruby CSS parser")
6189 (description
6190 "Crass is a pure Ruby CSS parser based on the CSS Syntax Level 3 spec.")
6191 (license license:expat)))
6192
6193(define-public ruby-nokogumbo
6194 (package
6195 (name "ruby-nokogumbo")
6196 (version "2.0.2")
6197 (source (origin
6198 ;; We use the git reference, because there's no Rakefile in the
6199 ;; published gem and the tarball on Github is outdated.
6200 (method git-fetch)
6201 (uri (git-reference
6202 (url "https://github.com/rubys/nokogumbo")
6203 (commit (string-append "v" version))))
6204 (file-name (string-append name "-" version "-checkout"))
6205 (sha256
6206 (base32
6207 "1qg0iyw450lw6d0j1ghzg79a6l60nm1m4qmrzwzybi585861jxcx"))))
6208 (build-system ruby-build-system)
6209 (native-inputs
6210 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
6211 (inputs
6212 `(("gumbo-parser" ,gumbo-parser)))
6213 (propagated-inputs
6214 `(("ruby-nokogiri" ,ruby-nokogiri)))
6215 (synopsis "Ruby bindings to the Gumbo HTML5 parser")
6216 (description
6217 "Nokogumbo allows a Ruby program to invoke the Gumbo HTML5 parser and
6218access the result as a Nokogiri parsed document.")
6219 (home-page "https://github.com/rubys/nokogumbo/")
6220 (license license:asl2.0)))
6221
6222(define-public ruby-sanitize
6223 (package
6224 (name "ruby-sanitize")
6225 (version "5.1.0")
6226 (home-page "https://github.com/rgrove/sanitize")
6227 (source (origin
6228 (method git-fetch)
6229 ;; The gem does not include the Rakefile, so we download the
6230 ;; source from Github.
6231 (uri (git-reference
6232 (url home-page)
6233 (commit (string-append "v" version))))
6234 (file-name (git-file-name name version))
6235 (patches (search-patches "ruby-sanitize-system-libxml.patch"))
6236 (sha256
6237 (base32
6238 "0lj0q9yhjp0q0in5majkshnki07mw8m2vxgndx4m5na6232aszl0"))))
6239 (build-system ruby-build-system)
6240 (propagated-inputs
6241 `(("ruby-crass" ,ruby-crass)
6242 ("ruby-nokogiri" ,ruby-nokogiri)
6243 ("ruby-nokogumbo" ,ruby-nokogumbo)))
6244 (native-inputs
6245 `(("ruby-minitest" ,ruby-minitest)))
6246 (synopsis "Whitelist-based HTML and CSS sanitizer")
6247 (description
6248 "Sanitize is a whitelist-based HTML and CSS sanitizer. Given a list of
6249acceptable elements, attributes, and CSS properties, Sanitize will remove all
6250unacceptable HTML and/or CSS from a string.")
6251 (license license:expat)))
6252
6253(define-public ruby-oj
6254 (package
6255 (name "ruby-oj")
6256 (version "3.10.1")
6257 (source
6258 (origin
6259 (method git-fetch)
6260 ;; Version on rubygems.org does not contain Rakefile, so download from
6261 ;; GitHub instead.
6262 (uri (git-reference
6263 (url "https://github.com/ohler55/oj")
6264 (commit (string-append "v" version))))
6265 (file-name (git-file-name name version))
6266 (sha256
6267 (base32
6268 "0i5xjx4sh816zx2c1a4d1q67k7vllg5jnnc4jy6zhbmwi1dvp5vw"))))
6269 (build-system ruby-build-system)
6270 (arguments
6271 '(#:test-target "test_all"
6272 #:phases
6273 (modify-phases %standard-phases
6274 (add-before 'check 'disable-bundler
6275 (lambda _
6276 (substitute* "Rakefile"
6277 (("Bundler\\.with_clean_env") "1.times")
6278 (("bundle exec ") "")))))))
6279 (native-inputs
6280 `(("bundler" ,bundler)
6281 ("ruby-rspec" ,ruby-rspec)
6282 ("ruby-rake-compiler" ,ruby-rake-compiler)))
6283 (synopsis "JSON parser for Ruby optimized for speed")
6284 (description
6285 "Oj is a JSON parser and generator for Ruby, where the encoding and
6286decoding of JSON is implemented as a C extension to Ruby.")
6287 (home-page "http://www.ohler.com/oj/")
6288 (license (list license:expat ; Ruby code
6289 license:bsd-3)))) ; extension code
6290
6291(define-public ruby-ox
6292 (package
6293 (name "ruby-ox")
6294 (version "2.6.0")
6295 (source
6296 (origin
6297 (method url-fetch)
6298 (uri (rubygems-uri "ox" version))
6299 (sha256
6300 (base32
6301 "0fmk62b1h2i79dfzjj8wmf8qid1rv5nhwfc17l489ywnga91xl83"))))
6302 (build-system ruby-build-system)
6303 (arguments
6304 '(#:tests? #f)) ; no tests
6305 (synopsis "Optimized XML library for Ruby")
6306 (description
6307 "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
6308written as a native C extension. It was designed to be an alternative to
6309Nokogiri and other Ruby XML parsers for generic XML parsing and as an
6310alternative to Marshal for Object serialization. ")
6311 (home-page "http://www.ohler.com/ox")
6312 (license license:expat)))
6313
6314(define-public ruby-redcloth
6315 (package
6316 (name "ruby-redcloth")
6317 (version "4.3.2")
6318 (source (origin
6319 (method url-fetch)
6320 (uri (rubygems-uri "RedCloth" version))
6321 (sha256
6322 (base32
6323 "0m9dv7ya9q93r8x1pg2gi15rxlbck8m178j1fz7r5v6wr1avrrqy"))))
6324 (build-system ruby-build-system)
6325 (arguments
6326 `(#:tests? #f ; no tests
6327 #:phases
6328 (modify-phases %standard-phases
6329 ;; Redcloth has complicated rake tasks to build various versions for
6330 ;; multiple targets using RVM. We don't want this so we just use the
6331 ;; existing gemspec.
6332 (replace 'build
6333 (lambda _
6334 (invoke "gem" "build" "redcloth.gemspec"))))))
6335 (native-inputs
6336 `(("bundler" ,bundler)
6337 ("ruby-diff-lcs" ,ruby-diff-lcs)
6338 ("ruby-rspec-2" ,ruby-rspec-2)))
6339 (synopsis "Textile markup language parser for Ruby")
6340 (description
6341 "RedCloth is a Ruby parser for the Textile markup language.")
6342 (home-page "http://redcloth.org")
6343 (license license:expat)))
6344
6345(define-public ruby-pg
6346 (package
6347 (name "ruby-pg")
6348 (version "1.2.3")
6349 (source
6350 (origin
6351 (method url-fetch)
6352 (uri (rubygems-uri "pg" version))
6353 (sha256
6354 (base32
6355 "13mfrysrdrh8cka1d96zm0lnfs59i5x2g6ps49r2kz5p3q81xrzj"))))
6356 (build-system ruby-build-system)
6357 (arguments
6358 '(#:test-target "spec"))
6359 (native-inputs
6360 `(("ruby-rake-compiler" ,ruby-rake-compiler)
6361 ("ruby-hoe" ,ruby-hoe)
6362 ("ruby-rspec" ,ruby-rspec)))
6363 (inputs
6364 `(("postgresql" ,postgresql)))
6365 (synopsis "Ruby interface to PostgreSQL")
6366 (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
6367with PostgreSQL 9.0 and later.")
6368 (home-page "https://bitbucket.org/ged/ruby-pg")
6369 (license license:ruby)))
6370
6371(define-public ruby-byebug
6372 (package
6373 (name "ruby-byebug")
6374 (version "9.0.6")
6375 (source
6376 (origin
6377 (method url-fetch)
6378 (uri (rubygems-uri "byebug" version))
6379 (sha256
6380 (base32
6381 "1kbfcn65rgdhi72n8x9l393b89rvi5z542459k7d1ggchpb0idb0"))))
6382 (build-system ruby-build-system)
6383 (arguments
6384 '(#:tests? #f)) ; no tests
6385 (synopsis "Debugger for Ruby 2")
6386 (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
6387TracePoint C API for execution control and the Debug Inspector C API for call
6388stack navigation. The core component provides support that front-ends can
6389build on. It provides breakpoint handling and bindings for stack frames among
6390other things and it comes with a command line interface.")
6391 (home-page "https://github.com/deivid-rodriguez/byebug")
6392 (license license:bsd-2)))
6393
6394;;; TODO: Make it the default byebug in core-updates.
6395(define-public ruby-byebug-11
6396 (package
6397 (inherit ruby-byebug)
6398 (name "ruby-byebug")
6399 (version "11.1.3")
6400 (source
6401 (origin
6402 (method git-fetch)
6403 (uri (git-reference
6404 (url "https://github.com/deivid-rodriguez/byebug")
6405 (commit (string-append "v" version))))
6406 (file-name (git-file-name name version))
6407 (sha256
6408 (base32
6409 "0vyy3k2s7dcndngj6m8kxhs1vxc2c93dw8b3yyand3srsg9ffpij"))
6410 (modules '((guix build utils)))
6411 (snippet
6412 '(begin
6413 ;; Remove wrappers that try to setup a bundle environment.
6414 (with-directory-excursion "bin"
6415 (for-each delete-file '("bundle" "rake" "rubocop"))
6416 ;; ruby-minitest doesn't come with a launcher, so fix the one
6417 ;; provided.
6418 (substitute* "minitest"
6419 (("load File\\.expand_path\\(\"bundle\".*") "")
6420 (("require \"bundler/setup\".*") "")))
6421 #t))))
6422 (arguments
6423 `(#:tests? #t
6424 #:phases
6425 (modify-phases %standard-phases
6426 (add-after 'unpack 'skip-tmp-path-sensitive-test
6427 (lambda _
6428 (substitute* "test/commands/where_test.rb"
6429 (("unless /cygwin\\|mswin\\|mingw\\|darwin/.*")
6430 "unless true\n"))
6431 #t))
6432 (add-before 'build 'compile
6433 (lambda _
6434 (invoke "rake" "compile")))
6435 (add-before 'check 'set-home
6436 (lambda _
6437 (setenv "HOME" (getcwd))
6438 #t)))))
6439 (native-inputs
6440 `(("bundler" ,bundler)
6441 ("ruby-chandler" ,ruby-chandler)
6442 ("ruby-minitest" ,ruby-minitest)
6443 ("ruby-pry" ,ruby-pry)
6444 ("ruby-rake-compiler" ,ruby-rake-compiler)
6445 ("ruby-rubocop" ,ruby-rubocop)
6446 ("ruby-yard" ,ruby-yard)))))
6447
6448(define-public ruby-netrc
6449 (package
6450 (name "ruby-netrc")
6451 (version "0.11.0")
6452 (source (origin
6453 (method url-fetch)
6454 (uri (rubygems-uri "netrc" version))
6455 (sha256
6456 (base32
6457 "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y"))))
6458 (build-system ruby-build-system)
6459 (arguments
6460 `(#:phases
6461 (modify-phases %standard-phases
6462 (replace 'check
6463 ;; There is no Rakefile and minitest can only run one file at once,
6464 ;; so we have to iterate over all test files.
6465 (lambda _
6466 (for-each (lambda (file)
6467 (invoke "ruby" "-Itest" file))
6468 (find-files "./test" "test_.*\\.rb"))
6469 #t)))))
6470 (native-inputs
6471 `(("ruby-minitest" ,ruby-minitest)))
6472 (synopsis "Library to read and update netrc files")
6473 (description
6474 "This library can read and update netrc files, preserving formatting
6475including comments and whitespace.")
6476 (home-page "https://github.com/geemus/netrc")
6477 (license license:expat)))
6478
6479(define-public ruby-unf-ext
6480 (package
6481 (name "ruby-unf-ext")
6482 (version "0.0.7.6")
6483 (source (origin
6484 (method url-fetch)
6485 (uri (rubygems-uri "unf_ext" version))
6486 (sha256
6487 (base32
6488 "1ll6w64ibh81qwvjx19h8nj7mngxgffg7aigjx11klvf5k2g4nxf"))))
6489 (build-system ruby-build-system)
6490 (arguments
6491 `(#:phases
6492 (modify-phases %standard-phases
6493 (add-after 'build 'build-ext
6494 (lambda _ (invoke "rake" "compile:unf_ext")))
6495 (add-before 'check 'lose-rake-compiler-dock-dependency
6496 (lambda _
6497 ;; rake-compiler-dock is listed in the gemspec, but only
6498 ;; required when cross-compiling.
6499 (substitute* "unf_ext.gemspec"
6500 ((".*rake-compiler-dock.*") ""))
6501 #t)))))
6502 (native-inputs
6503 `(("bundler" ,bundler)
6504 ("ruby-rake-compiler" ,ruby-rake-compiler)
6505 ("ruby-test-unit" ,ruby-test-unit)))
6506 (synopsis "Unicode normalization form support library")
6507 (description
6508 "This package provides unicode normalization form support for Ruby.")
6509 (home-page "https://github.com/knu/ruby-unf_ext")
6510 (license license:expat)))
6511
6512(define-public ruby-tdiff
6513 ;; Use a newer than released snapshot so that rspec-2 is not required.
6514 (let ((commit "b662a6048f08abc45c1a834e5f34dd1c662935e2"))
6515 (package
6516 (name "ruby-tdiff")
6517 (version (string-append "0.3.3-1." (string-take commit 8)))
6518 (source (origin
6519 (method git-fetch)
6520 (uri (git-reference
6521 (url "https://github.com/postmodern/tdiff")
6522 (commit commit)))
6523 (file-name (string-append name "-" version "-checkout"))
6524 (sha256
6525 (base32
6526 "0n3gq8rx49f7ln6zqlshqfg2mgqyy30rsdjlnki5mv307ykc7ad4"))))
6527 (build-system ruby-build-system)
6528 (native-inputs
6529 `(("ruby-rspec" ,ruby-rspec)
6530 ("ruby-yard" ,ruby-yard)
6531 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
6532 (synopsis "Calculate the differences between two tree-like structures")
6533 (description
6534 "This library provides functions to calculate the differences between two
6535tree-like structures. It is similar to Ruby's built-in @code{TSort} module.")
6536 (home-page "https://github.com/postmodern/tdiff")
6537 (license license:expat))))
6538
6539(define-public ruby-nokogiri-diff
6540 ;; Use a newer than released snapshot so that rspec-2 is not required.
6541 (let ((commit "a38491e4d8709b7406f2cae11a50226d927d06f5"))
6542 (package
6543 (name "ruby-nokogiri-diff")
6544 (version (string-append "0.2.0-1." (string-take commit 8)))
6545 (source (origin
6546 (method git-fetch)
6547 (uri (git-reference
6548 (url "https://github.com/postmodern/nokogiri-diff")
6549 (commit commit)))
6550 (file-name (string-append name "-" version "-checkout"))
6551 (sha256
6552 (base32
6553 "1ah2sfjh9n1p0ln2wkqzfl448ml7j4zfy6dhp1qgzq2m41php6rf"))))
6554 (build-system ruby-build-system)
6555 (propagated-inputs
6556 `(("ruby-tdiff" ,ruby-tdiff)
6557 ("ruby-nokogiri" ,ruby-nokogiri)))
6558 (native-inputs
6559 `(("ruby-rspec" ,ruby-rspec)
6560 ("ruby-yard" ,ruby-yard)
6561 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
6562 (synopsis "Calculate the differences between two XML/HTML documents")
6563 (description
6564 "@code{Nokogiri::Diff} adds the ability to calculate the
6565differences (added or removed nodes) between two XML/HTML documents.")
6566 (home-page "https://github.com/postmodern/nokogiri-diff")
6567 (license license:expat))))
6568
6569(define-public ruby-racc
6570 (package
6571 (name "ruby-racc")
6572 (version "1.4.14")
6573 (source
6574 (origin
6575 (method url-fetch)
6576 (uri (rubygems-uri "racc" version))
6577 (sha256
6578 (base32
6579 "00yhs2ag7yy5v83mqvkbnhk9bvsh6mx3808k53n61ddzx446v1zl"))))
6580 (build-system ruby-build-system)
6581 (native-inputs
6582 `(("ruby-hoe" ,ruby-hoe)
6583 ("ruby-rake-compiler" ,ruby-rake-compiler)))
6584 (synopsis "LALR(1) parser generator for Ruby")
6585 (description
6586 "Racc is a LALR(1) parser generator. It is written in Ruby itself, and
6587generates Ruby program.")
6588 (home-page "http://i.loveruby.net/en/projects/racc/")
6589 (license (list
6590 ;; Generally licensed under the LGPL2.1, and some files also
6591 ;; available under the same license as Ruby.
6592 license:lgpl2.1
6593 license:ruby))))
6594
6595(define-public ruby-rack
6596 (package
6597 (name "ruby-rack")
6598 (version "2.0.6")
6599 (source
6600 (origin
6601 (method git-fetch)
6602 ;; Download from GitHub so that the patch can be applied.
6603 (uri (git-reference
6604 (url "https://github.com/rack/rack")
6605 (commit version)))
6606 (file-name (git-file-name name version))
6607 (sha256
6608 (base32
6609 "1n7z4g1x6yxip096cdc04wq7yk7ywpinq28g2xjb46r4nlv5h0j6"))
6610 ;; Ignore test which fails inside the build environment but works
6611 ;; outside.
6612 (patches (search-patches "ruby-rack-ignore-failing-test.patch"))))
6613 (build-system ruby-build-system)
6614 (arguments
6615 '(#:phases
6616 (modify-phases %standard-phases
6617 (add-before 'check 'fix-tests
6618 (lambda _
6619 ;; A few of the tests use the length of a file on disk for
6620 ;; Content-Length and Content-Range headers. However, this file
6621 ;; has a shebang in it which an earlier phase patches, growing
6622 ;; the file size from 193 to 239 bytes when the store prefix is
6623 ;; "/gnu/store".
6624 (let ((size-diff (- (string-length (which "ruby"))
6625 (string-length "/usr/bin/env ruby"))))
6626 (substitute* '("test/spec_file.rb")
6627 (("193")
6628 (number->string (+ 193 size-diff)))
6629 (("bytes(.)22-33" all delimiter)
6630 (string-append "bytes"
6631 delimiter
6632 (number->string (+ 22 size-diff))
6633 "-"
6634 (number->string (+ 33 size-diff))))))
6635 #t))
6636 (add-before 'reset-gzip-timestamps 'make-files-writable
6637 (lambda* (#:key outputs #:allow-other-keys)
6638 ;; Make sure .gz files are writable so that the
6639 ;; 'reset-gzip-timestamps' phase can do its work.
6640 (let ((out (assoc-ref outputs "out")))
6641 (for-each make-file-writable
6642 (find-files out "\\.gz$"))
6643 #t))))))
6644 (native-inputs
6645 `(("ruby-minitest" ,ruby-minitest)
6646 ("ruby-minitest-sprint" ,ruby-minitest-sprint)
6647 ("which" ,which)))
6648 (propagated-inputs
6649 `(("ruby-concurrent" ,ruby-concurrent)))
6650 (synopsis "Unified web application interface for Ruby")
6651 (description "Rack provides a minimal, modular and adaptable interface for
6652developing web applications in Ruby. By wrapping HTTP requests and responses,
6653it unifies the API for web servers, web frameworks, and software in between
6654into a single method call.")
6655 (home-page "https://rack.github.io/")
6656 (license license:expat)))
6657
6658(define-public ruby-rack-test
6659 (package
6660 (name "ruby-rack-test")
6661 (version "0.8.3")
6662 (source
6663 (origin
6664 (method url-fetch)
6665 (uri (rubygems-uri "rack-test" version))
6666 (sha256
6667 (base32
6668 "14ij39zywvr1i9f6jsixfg4zxi2q1m1n1nydvf47f0b6sfc9mv1g"))))
6669 (build-system ruby-build-system)
6670 (arguments
6671 ;; Disable tests because of circular dependencies: requires sinatra,
6672 ;; which requires rack-protection, which requires rack-test. Instead
6673 ;; simply require the library.
6674 `(#:phases
6675 (modify-phases %standard-phases
6676 (replace 'check
6677 (lambda _
6678 (invoke "ruby" "-Ilib" "-r" "rack/test"))))))
6679 (propagated-inputs
6680 `(("ruby-rack" ,ruby-rack)))
6681 (synopsis "Testing API for Rack applications")
6682 (description
6683 "Rack::Test is a small, simple testing API for Rack applications. It can
6684be used on its own or as a reusable starting point for Web frameworks and
6685testing libraries to build on.")
6686 (home-page "https://github.com/rack-test/rack-test")
6687 (license license:expat)))
6688
6689(define-public ruby-rack-protection
6690 (package
6691 (name "ruby-rack-protection")
6692 (version "2.0.5")
6693 (source
6694 (origin
6695 (method url-fetch)
6696 (uri (rubygems-uri "rack-protection" version))
6697 (sha256
6698 (base32
6699 "15167q25rmxipqwi6hjqj3i1byi9iwl3xq9b7mdar7qiz39pmjsk"))))
6700 (build-system ruby-build-system)
6701 (arguments
6702 '(;; Tests missing from the gem.
6703 #:tests? #f))
6704 (propagated-inputs
6705 `(("ruby-rack" ,ruby-rack)))
6706 (native-inputs
6707 `(("bundler" ,bundler)
6708 ("ruby-rspec" ,ruby-rspec-2)
6709 ("ruby-rack-test" ,ruby-rack-test)))
6710 (synopsis "Rack middleware that protects against typical web attacks")
6711 (description "Rack middleware that can be used to protect against typical
6712web attacks. It can protect all Rack apps, including Rails. For instance, it
6713protects against cross site request forgery, cross site scripting,
6714clickjacking, directory traversal, session hijacking and IP spoofing.")
6715 (home-page "https://github.com/sinatra/sinatra/tree/master/rack-protection")
6716 (license license:expat)))
6717
6718(define-public ruby-rainbow
6719 (package
6720 (name "ruby-rainbow")
6721 (version "3.0.0")
6722 (source
6723 (origin
6724 (method url-fetch)
6725 (uri (rubygems-uri "rainbow" version))
6726 (sha256
6727 (base32
6728 "0bb2fpjspydr6x0s8pn1pqkzmxszvkfapv0p4627mywl7ky4zkhk"))))
6729 (build-system ruby-build-system)
6730 (arguments
6731 '(#:phases
6732 (modify-phases %standard-phases
6733 ;; Run rspec directly, to avoid requiring Rubocop which is used from
6734 ;; the Rakefile.
6735 (replace 'check
6736 (lambda* (#:key tests? #:allow-other-keys)
6737 (when tests?
6738 (invoke "rspec"))
6739 #t)))))
6740 (native-inputs
6741 `(("bundler" ,bundler)
6742 ("ruby-rspec" ,ruby-rspec)))
6743 (synopsis "Colorize printed text on ANSI terminals")
6744 (description
6745 "@code{rainbow} provides a string presenter object to colorize strings by
6746wrapping them in ANSI escape codes.")
6747 (home-page "https://github.com/sickill/rainbow")
6748 (license license:expat)))
6749
6750(define-public ruby-rr
6751 (package
6752 (name "ruby-rr")
6753 (version "1.2.1")
6754 (source
6755 (origin
6756 (method url-fetch)
6757 (uri (rubygems-uri "rr" version))
6758 (sha256
6759 (base32
6760 "1n9g78ba4c2zzmz8cdb97c38h1xm0clircag00vbcxwqs4dq0ymp"))))
6761 (build-system ruby-build-system)
6762 (arguments
6763 '(#:tests? #f)) ; test files not included
6764 (native-inputs
6765 `(("bundler" ,bundler)
6766 ("ruby-rspec" ,ruby-rspec)))
6767 (synopsis "Ruby test double framework")
6768 (description
6769 "RR is a test double framework that features a rich selection of double
6770techniques and a terse syntax.")
6771 (home-page "https://rr.github.io/rr/")
6772 (license license:expat)))
6773
6774(define-public ruby-rest-client
6775 (package
6776 (name "ruby-rest-client")
6777 (version "2.0.2")
6778 (source
6779 (origin
6780 (method url-fetch)
6781 (uri (rubygems-uri "rest-client" version))
6782 (sha256
6783 (base32
6784 "1hzcs2r7b5bjkf2x2z3n8z6082maz0j8vqjiciwgg3hzb63f958j"))))
6785 (build-system ruby-build-system)
6786 (arguments
6787 '(#:phases
6788 (modify-phases %standard-phases
6789 (add-before 'check 'remove-unnecessary-development-dependencies
6790 (lambda _
6791 (substitute* "rest-client.gemspec"
6792 ;; Remove rubocop as it's unused. Rubocop also indirectly
6793 ;; depends on this package through ruby-parser and ruby-ast so
6794 ;; this avoids a dependency loop.
6795 ((".*rubocop.*") "\n")
6796 ;; Remove pry as it's unused, it's a debugging tool
6797 ((".*pry.*") "\n")
6798 ;; Remove an unnecessarily strict rdoc dependency
6799 ((".*rdoc.*") "\n"))
6800 #t))
6801 (add-before 'check 'delete-network-dependent-tests
6802 (lambda _
6803 (delete-file "spec/integration/request_spec.rb")
6804 (delete-file "spec/integration/httpbin_spec.rb")
6805 #t)))))
6806 (propagated-inputs
6807 `(("ruby-http-cookie" ,ruby-http-cookie)
6808 ("ruby-mime-types" ,ruby-mime-types)
6809 ("ruby-netrc" ,ruby-netrc)))
6810 (native-inputs
6811 `(("bundler" ,bundler)
6812 ("ruby-webmock" ,ruby-webmock-2)
6813 ("ruby-rspec" ,ruby-rspec)))
6814 (synopsis "Simple HTTP and REST client for Ruby")
6815 (description
6816 "@code{rest-client} provides a simple HTTP and REST client for Ruby,
6817inspired by the Sinatra microframework style of specifying actions:
6818@code{get}, @code{put}, @code{post}, @code{delete}.")
6819 (home-page "https://github.com/rest-client/rest-client")
6820 (license license:expat)))
6821
6822(define-public ruby-rubocop-ast
6823 (package
6824 (name "ruby-rubocop-ast")
6825 (version "0.3.0")
6826 (source
6827 (origin
6828 (method git-fetch) ;no test suite in distributed gem
6829 (uri (git-reference
6830 (url "https://github.com/rubocop-hq/rubocop-ast")
6831 (commit (string-append "v" version))))
6832 (file-name (git-file-name name version))
6833 (sha256
6834 (base32
6835 "1ycf6qcj8nbzk2js72priim4642lkn56w5kbny1nlryjkckxgm04"))))
6836 (build-system ruby-build-system)
6837 (arguments
6838 `(#:test-target "spec"
6839 #:phases (modify-phases %standard-phases
6840 (add-after 'unpack 'disable-bundler
6841 (lambda _
6842 (substitute* "Rakefile"
6843 (("Bundler\\.setup.*") "nil\n"))
6844 #t))
6845 (replace 'replace-git-ls-files
6846 (lambda _
6847 (substitute* "rubocop-ast.gemspec"
6848 (("`git ls-files(.*)`" _ files)
6849 (format #f "`find ~a -type f| sort`" files)))
6850 #t)))))
6851 (native-inputs
6852 `(("ruby-bump" ,ruby-bump)
6853 ("ruby-rspec" ,ruby-rspec)))
6854 (propagated-inputs
6855 `(("ruby-parser" ,ruby-parser)))
6856 (synopsis "RuboCop's AST extensions and NodePattern functionality")
6857 (description "Rubocop::AST extends @code{ruby-parser} with classes used
6858by RuboCop to deal with Ruby's Abstract Syntax Tree (AST), in particular:
6859@itemize
6860@item @code{RuboCop::AST::Node}
6861@item @code{RuboCop::AST::NodePattern}
6862@end itemize")
6863 (home-page "https://rubocop.org/")
6864 (license license:expat)))
6865
6866(define-public ruby-rexml
6867 (package
6868 (name "ruby-rexml")
6869 (version "3.2.4")
6870 (source
6871 (origin
6872 (method git-fetch) ;no tests in distributed gem
6873 (uri (git-reference
6874 (url "https://github.com/ruby/rexml")
6875 (commit (string-append "v" version))))
6876 (file-name (git-file-name name version))
6877 (sha256
6878 (base32
6879 "0rhjjbkaq2f2cs8hyr2i4yjqpcyl8m0wmr2cypa401m3fvz4221i"))))
6880 (build-system ruby-build-system)
6881 (synopsis "XML toolkit for Ruby")
6882 (description "Inspired by Electric XML library for Java, REXML aims to be
6883easy-to-use API, small and fast. It supports both tree and stream document
6884parsing.")
6885 (home-page "https://github.com/ruby/rexml")
6886 (license license:bsd-2)))
6887
6888(define-public ruby-character-set
6889 (package
6890 (name "ruby-character-set")
6891 (version "1.4.0")
6892 (source
6893 (origin
6894 (method url-fetch)
6895 (uri (rubygems-uri "character_set" version))
6896 (sha256
6897 (base32
6898 "0affq9n77vwy897ri2zhmfinfagf37hcwwimrccy1bcxan9mj3h3"))))
6899 (build-system ruby-build-system)
6900 (arguments '(#:tests? #f)) ;avoid a cycle with ruby-regexp-parser
6901 (synopsis "Ruby library to manipulate Unicode")
6902 (description "CharacterSet is a C-extended Ruby library to work with sets
6903of Unicode code points. It can read and write these sets in various formats
6904and implements the @code{stdlib} @code{Set} interface for them. It also
6905offers an alternate paradigm of @code{String} processing which grants much
6906better performance than @code{Regexp} and @code{String} methods from the
6907@code{stdlib} where applicable. Many parts can be used independently, e.g.:
6908@itemize
6909@item @code{CharacterSet::Character}
6910@item @code{CharacterSet::Parser}
6911@item @code{CharacterSet::Writer}
6912@item @code{RangeCompressor}
6913@end itemize")
6914 (home-page "https://github.com/jaynetics/character_set")
6915 (license license:expat)))
6916
6917(define-public ruby-range-compressor
6918 (package
6919 (name "ruby-range-compressor")
6920 (version "1.0.0")
6921 (source
6922 (origin
6923 (method git-fetch)
6924 (uri (git-reference
6925 (url "https://github.com/janosch-x/range_compressor")
6926 (commit (string-append "v" version))))
6927 (file-name (git-file-name name version))
6928 (sha256
6929 (base32
6930 "0y8slri2msyyg2szgwgriqd6qw9hkxycssdrcl5lk2dbcq5zvn54"))))
6931 (build-system ruby-build-system)
6932 (arguments
6933 `(#:test-target "spec"
6934 #:phases (modify-phases %standard-phases
6935 (add-after 'extract-gemspec 'strip-version-requirements
6936 (lambda _
6937 (substitute* "range_compressor.gemspec"
6938 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
6939 (string-append stripped "\n")))
6940 #t)))))
6941 (native-inputs
6942 `(("ruby-rspec" ,ruby-rspec)))
6943 (synopsis "Simple arrays of objects to arrays of ranges compressor")
6944 (description "RangeCompresses is a tiny library that allows compressing
6945arrays of objects into arrays of ranges. For example, it can turn the
6946following: @code{[1, 2, 3, 4, 6, 8, 9, 10]} into @code{[1..4, 6..6, 8..10]}.")
6947 (home-page "https://github.com/janosch-x/range_compressor")
6948 (license license:expat)))
6949
6950(define-public ruby-regexp-property-values
6951 (package
6952 (name "ruby-regexp-property-values")
6953 (version "1.0.0")
6954 (source
6955 (origin
6956 (method git-fetch)
6957 (uri (git-reference ;no test suite in distributed gem
6958 (url "https://github.com/jaynetics/regexp_property_values")
6959 (commit (string-append "v" version))))
6960 (file-name (git-file-name name version))
6961 (sha256
6962 (base32
6963 "0l3fjmscg1wxn7kc6bl022cc6k5d91pwb7daq1b5w36kvsx52w1j"))))
6964 (build-system ruby-build-system)
6965 (arguments
6966 '(#:test-target "default"))
6967 (native-inputs
6968 `(("ruby-character-set" ,ruby-character-set)
6969 ("ruby-rake-compiler" ,ruby-rake-compiler)
6970 ("ruby-range-compressor" ,ruby-range-compressor)
6971 ("ruby-rspec" ,ruby-rspec)))
6972 (synopsis "Inspect Ruby's regex engine property values")
6973 (description "This small library lets you see which property values are
6974supported by the regular expression engine of the Ruby version you are running
6975and can directly read out their code point ranges. In other words, it
6976determines all supported values for @code{\\p{value}} expressions and what
6977they match.")
6978 (home-page "https://github.com/jaynetics/regexp_property_values")
6979 (license license:expat)))
6980
6981(define-public ruby-regexp-parser
6982 (package
6983 (name "ruby-regexp-parser")
6984 (version "2.0.0")
6985 (source
6986 (origin
6987 (method git-fetch) ;bin/test missing from gem
6988 (uri (git-reference
6989 (url "https://github.com/ammar/regexp_parser")
6990 (commit (string-append "v" version))))
6991 (file-name (git-file-name name version))
6992 (sha256
6993 (base32
6994 "09ddxdwlml30q6j4rqf06bbjj1mwx00rs0bksnyblhv85anrqz3k"))))
6995 (build-system ruby-build-system)
6996 (arguments
6997 '(#:test-target "default"
6998 #:phases (modify-phases %standard-phases
6999 (add-before 'build 'compile-scanner.rb
7000 (lambda _
7001 (invoke "rake" "build")
7002 ;; XXX: This is needed otherwise the install
7003 ;; phase fails to delete the installed cached
7004 ;; gem file.
7005 (delete-file-recursively "pkg")
7006 #t)))))
7007 (native-inputs
7008 `(("ragel" ,ragel)
7009 ("ruby-regexp-property-values" ,ruby-regexp-property-values)
7010 ("ruby-rspec" ,ruby-rspec)))
7011 (synopsis "A regular expression parser library for Ruby ")
7012 (description "A Ruby gem for tokenizing, parsing, and transforming regular
7013expressions. It comprises the following components:
7014@itemize
7015@item A scanner/tokenizer based on Ragel,
7016@item A lexer that produces a stream of token objects,
7017@item A parser that produces a tree of Expression objects.
7018@end itemize")
7019 (home-page "https://github.com/ammar/regexp_parser")
7020 (license license:expat)))
7021
7022(define-public ruby-test-queue
7023 (package
7024 (name "ruby-test-queue")
7025 (version "0.4.2")
7026 (source
7027 (origin
7028 (method url-fetch)
7029 (uri (rubygems-uri "test-queue" version))
7030 (sha256
7031 (base32
7032 "0hvm3n1qrqxqilhqk4rjivw3gcrd08zz1i6am9qzg1ppjxv6f36f"))))
7033 (build-system ruby-build-system)
7034 (arguments
7035 '(#:phases
7036 (modify-phases %standard-phases
7037 (replace 'check
7038 (lambda* (#:key tests? #:allow-other-keys)
7039 (when tests?
7040 (invoke "rspec"))
7041 #t)))))
7042 (native-inputs
7043 `(("ruby-rspec" ,ruby-rspec)))
7044 (synopsis "Minitest/RSpec parallel test runner for CI environments")
7045 (description "The test-queue module is a parallel test runner,
7046built using a centralized queue to ensure optimal distribution of
7047tests between workers. It is specifically optimized for Continuous
7048Integration (CI) environments: build statistics from each run are
7049stored locally and used to sort the queue at the beginning of the next
7050run.")
7051 (home-page "https://github.com/tmm1/test-queue")
7052 (license license:expat)))
7053
7054(define-public ruby-rubocop
7055 (package
7056 (name "ruby-rubocop")
7057 (version "0.88.0")
7058 (source
7059 (origin
7060 (method git-fetch) ;no tests in distributed gem
7061 (uri (git-reference
7062 (url "https://github.com/rubocop-hq/rubocop")
7063 (commit (string-append "v" version))))
7064 (file-name (git-file-name name version))
7065 (sha256
7066 (base32
7067 "1d06893jp8pd85fvgp5d16vqcf31bafi430v4f4y746ihyvhzz5r"))
7068 (patches (search-patches "ruby-rubocop-break-dependency-cycle.patch"))))
7069 (build-system ruby-build-system)
7070 (arguments
7071 '(#:test-target "default"
7072 #:phases
7073 (modify-phases %standard-phases
7074 (add-after 'unpack 'remove-problematic-tests
7075 ;; These tests depend on Rubocop extensions, which cannot be
7076 ;; included as they cause a dependency cycle with Rubocop itself.
7077 (lambda _
7078 (delete-file "spec/rubocop/config_loader_spec.rb")
7079 (substitute* "Gemfile"
7080 ((".*'rubocop-performance'.*") "")
7081 ((".*'rubocop-rspec'.*") ""))
7082 ;; Prevent "Unnecessary disabling of RSpec/* (unknown cop)"
7083 ;; errors.
7084 (substitute* (find-files "spec/rubocop/cop/" "_spec\\.rb$")
7085 (("# (rubocop:(enable|disable) RSpec.*)" _ what)
7086 (string-append "# Disabled: " what)))
7087 #t))
7088 (add-after 'unpack 'disable-bundler
7089 (lambda _
7090 (substitute* "Rakefile"
7091 (("Bundler\\.setup.*") "nil\n"))
7092 #t))
7093 (replace 'replace-git-ls-files
7094 (lambda _
7095 (substitute* "rubocop.gemspec"
7096 (("`git ls-files(.*)`" _ files)
7097 (format #f "`find ~a -type f| sort`" files)))
7098 #t))
7099 (add-before 'check 'set-home
7100 (lambda _
7101 (setenv "HOME" (getcwd))
7102 #t))
7103 (add-before 'check 'make-adoc-files-writable
7104 (lambda _
7105 (let ((adoc-files (find-files "docs/modules/ROOT/pages"
7106 "\\.adoc$")))
7107 (for-each make-file-writable adoc-files))
7108 #t)))))
7109 (native-inputs
7110 `(("ruby-bump" ,ruby-bump)
7111 ("ruby-pry" ,ruby-pry)
7112 ("ruby-rspec" ,ruby-rspec)
7113 ("ruby-test-queue" ,ruby-test-queue)
7114 ("ruby-webmock" ,ruby-webmock-2)
7115 ("ruby-yard" ,ruby-yard)))
7116 (propagated-inputs
7117 `(("ruby-parallel" ,ruby-parallel)
7118 ("ruby-parser" ,ruby-parser)
7119 ("ruby-rainbow" ,ruby-rainbow)
7120 ("ruby-regexp-parser" ,ruby-regexp-parser)
7121 ("ruby-rexml" ,ruby-rexml)
7122 ("ruby-rubocop-ast" ,ruby-rubocop-ast)
7123 ("ruby-progressbar" ,ruby-progressbar)
7124 ("ruby-unicode-display-width" ,ruby-unicode-display-width)))
7125 (synopsis "Ruby code style checking tool")
7126 (description
7127 "@code{rubocop} is a Ruby code style checking tool. It aims to enforce
7128the community-driven Ruby Style Guide.")
7129 (home-page "https://github.com/rubocop-hq/rubocop")
7130 (license license:expat)))
7131
7132(define-public ruby-contest
7133 (package
7134 (name "ruby-contest")
7135 (version "0.1.3")
7136 (source
7137 (origin
7138 (method url-fetch)
7139 (uri (rubygems-uri "contest" version))
7140 (sha256
7141 (base32
7142 "1p9f2292b7b0fbrcjswvj9v01z7ig5ig52328wyqcabgb553qsdf"))))
7143 (build-system ruby-build-system)
7144 (synopsis "Write declarative tests using nested contexts")
7145 (description
7146 "Contest allows writing declarative @code{Test::Unit} tests using nested
7147contexts without performance penalties.")
7148 (home-page "https://github.com/citrusbyte/contest")
7149 (license license:expat)))
7150
7151(define-public ruby-creole
7152 (package
7153 (name "ruby-creole")
7154 (version "0.5.0")
7155 (source
7156 (origin
7157 (method url-fetch)
7158 (uri (rubygems-uri "creole" version))
7159 (sha256
7160 (base32
7161 "00rcscz16idp6dx0dk5yi5i0fz593i3r6anbn5bg2q07v3i025wm"))))
7162 (build-system ruby-build-system)
7163 (native-inputs
7164 `(("ruby-bacon" ,ruby-bacon)))
7165 (synopsis "Creole markup language converter")
7166 (description
7167 "Creole is a lightweight markup language and this library for converting
7168creole to @code{HTML}.")
7169 (home-page "https://github.com/minad/creole")
7170 (license license:ruby)))
7171
7172(define-public ruby-docile
7173 (package
7174 (name "ruby-docile")
7175 (version "1.1.5")
7176 (source
7177 (origin
7178 (method url-fetch)
7179 (uri (rubygems-uri "docile" version))
7180 (sha256
7181 (base32
7182 "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx"))))
7183 (build-system ruby-build-system)
7184 (arguments
7185 '(#:tests? #f)) ; needs github-markup, among others
7186 (synopsis "Ruby EDSL helper library")
7187 (description "Docile is a Ruby library that provides an interface for
7188creating embedded domain specific languages (EDSLs) that manipulate existing
7189Ruby classes.")
7190 (home-page "https://ms-ati.github.io/docile/")
7191 (license license:expat)))
7192
7193(define-public ruby-middleware
7194 (package
7195 (name "ruby-middleware")
7196 (version "0.1.0")
7197 (source
7198 (origin
7199 (method url-fetch)
7200 (uri (rubygems-uri "middleware" version))
7201 (sha256
7202 (base32
7203 "0703nkf2v371wqr41c04x5qid7ww45cxqv3hnlg07if3b3xrm9xl"))))
7204 (build-system ruby-build-system)
7205 (arguments '(#:tests? #f)) ;no test suite
7206 (synopsis "Implementation of a middleware abstraction for Ruby")
7207 (description "Middleware is a generalized implementation of a middleware
7208abstraction for Ruby.")
7209 (home-page "https://github.com/mitchellh/middleware")
7210 (license license:expat)))
7211
7212(define-public ruby-benchmark-ips
7213 (package
7214 (name "ruby-benchmark-ips")
7215 (version "2.8.2")
7216 (source
7217 (origin
7218 (method url-fetch)
7219 (uri (rubygems-uri "benchmark-ips" version))
7220 (sha256
7221 (base32
7222 "1n9397j7kh4vvikfann1467qgksc679imlr50hax3lk1q3af8kdw"))))
7223 (build-system ruby-build-system)
7224 (native-inputs
7225 `(("ruby-hoe" ,ruby-hoe)))
7226 (synopsis "Iterations per second enhancement for the Ruby Benchmark module")
7227 (description "Benchmark-ips enhances the Ruby Benchmark module with the
7228iterations per second count. For short snippets of code, it can automatically
7229figure out how many times to run the code to get interesting data.")
7230 (home-page "https://github.com/evanphx/benchmark-ips")
7231 (license license:expat)))
7232
7233(define-public ruby-ffi-rzmq-core
7234 (package
7235 (name "ruby-ffi-rzmq-core")
7236 (version "1.0.7")
7237 (source
7238 (origin
7239 (method url-fetch)
7240 (uri (rubygems-uri "ffi-rzmq-core" version))
7241 (sha256
7242 (base32
7243 "0amkbvljpjfnv0jpdmz71p1i3mqbhyrnhamjn566w0c01xd64hb5"))))
7244 (build-system ruby-build-system)
7245 (arguments
7246 `(#:phases
7247 (modify-phases %standard-phases
7248 (add-after 'unpack 'patch-libzmq-search-path
7249 (lambda* (#:key inputs #:allow-other-keys)
7250 (let ((zeromq (assoc-ref inputs "zeromq")))
7251 (substitute* "lib/ffi-rzmq-core/libzmq.rb"
7252 (("/usr/local/lib")
7253 (string-append zeromq "/lib")))
7254 #t)))
7255 (replace 'check
7256 (lambda _
7257 (invoke "rspec"))))))
7258 (native-inputs
7259 `(("ruby-rspec" ,ruby-rspec)))
7260 (inputs
7261 `(("zeromq" ,zeromq)))
7262 (propagated-inputs `(("ruby-ffi" ,ruby-ffi)))
7263 (synopsis "Low-level Ruby FFI wrapper for the ZeroMQ networking library")
7264 (description "This library only provides the FFI wrapper for the ZeroMQ
7265networking library. It can be used to implement a Ruby API for the ZeroMQ
7266library.")
7267 (home-page "https://github.com/chuckremes/ffi-rzmq-core")
7268 (license license:expat)))
7269
7270(define-public ruby-ffi-rzmq
7271 (package
7272 (name "ruby-ffi-rzmq")
7273 (version "2.0.7")
7274 (source
7275 (origin
7276 (method url-fetch)
7277 (uri (rubygems-uri "ffi-rzmq" version))
7278 (sha256
7279 (base32
7280 "14a5kxfnf8l3ngyk8hgmk30z07aj1324ll8i48z67ps6pz2kpsrg"))))
7281 (build-system ruby-build-system)
7282 (arguments '(#:tests? #t
7283 #:phases (modify-phases %standard-phases
7284 (replace 'check
7285 (lambda _
7286 (invoke "rspec"))))))
7287 (native-inputs
7288 `(("ruby-rspec" ,ruby-rspec)))
7289 (propagated-inputs
7290 `(("ruby-ffi-rzmq-core" ,ruby-ffi-rzmq-core)))
7291 (synopsis "High-level Ruby wrapper for the ZeroMQ networking library")
7292 (description "This library provides a high-level API that wraps the ZeroMQ
7293networking library using the Ruby foreign function interface (FFI). It is a
7294pure Ruby wrapper, hence is compatible with any Ruby runtime that has support
7295for FFI.")
7296 (home-page "https://github.com/chuckremes/ffi-rzmq")
7297 (license license:expat)))
7298
7299(define-public ruby-sawyer
7300 (package
7301 (name "ruby-sawyer")
7302 (version "0.8.2")
7303 (source
7304 (origin
7305 (method url-fetch)
7306 (uri (rubygems-uri "sawyer" version))
7307 (sha256
7308 (base32
7309 "0yrdchs3psh583rjapkv33mljdivggqn99wkydkjdckcjn43j3cz"))))
7310 (build-system ruby-build-system)
7311 (propagated-inputs
7312 `(("ruby-addressable" ,ruby-addressable)
7313 ("ruby-faraday" ,ruby-faraday)))
7314 (synopsis "Experimental hypermedia agent for Ruby")
7315 (description "Sawyer is an experimental hypermedia agent for Ruby built on
7316top of Faraday.")
7317 (home-page "https://github.com/lostisland/sawyer")
7318 (license license:expat)))
7319
7320(define-public ruby-octokit
7321 (package
7322 (name "ruby-octokit")
7323 (version "4.18.0")
7324 (source
7325 (origin
7326 (method url-fetch)
7327 (uri (rubygems-uri "octokit" version))
7328 (sha256
7329 (base32
7330 "0zvfr9njmj5svi39fcsi2b0g7pcxb0vamw9dlyas8bg814jlzhi6"))))
7331 (build-system ruby-build-system)
7332 (arguments '(#:tests? #f)) ;no test suite in the gem release
7333 (propagated-inputs
7334 `(("ruby-faraday" ,ruby-faraday)
7335 ("ruby-sawyer" ,ruby-sawyer)))
7336 (synopsis "Ruby toolkit for the GitHub API")
7337 (description "Octokit wraps the GitHub API in a flat API client that
7338follows Ruby conventions and requires little knowledge of REST.")
7339 (home-page "https://github.com/octokit/octokit.rb")
7340 (license license:expat)))
7341
7342(define-public ruby-chandler
7343 (package
7344 (name "ruby-chandler")
7345 (version "0.9.0")
7346 (source
7347 (origin
7348 (method url-fetch)
7349 (uri (rubygems-uri "chandler" version))
7350 (sha256
7351 (base32
7352 "1n8a4mr2jkcz5vaaps45g2rxa2pzy1wb7cylgw85xmmyyp14lnrr"))))
7353 (build-system ruby-build-system)
7354 (native-inputs
7355 `(("ruby-rubocop" ,ruby-rubocop)))
7356 (propagated-inputs
7357 `(("ruby-netrc" ,ruby-netrc)
7358 ("ruby-octokit" ,ruby-octokit)))
7359 (synopsis "Sync CHANGELOG entries to GitHub's release notes")
7360 (description "Chandler syncs a project's CHANGELOG file entries to
7361GitHub's release notes to remove the need of manually entering release
7362notes.")
7363 (home-page "https://github.com/mattbrictson/chandler")
7364 (license license:expat)))
7365
7366(define-public ruby-pry-byebug
7367 (package
7368 (name "ruby-pry-byebug")
7369 (version "3.9.0")
7370 (source
7371 (origin
7372 (method git-fetch)
7373 (uri (git-reference
7374 (url "https://github.com/deivid-rodriguez/pry-byebug")
7375 (commit (string-append "v" version))))
7376 (file-name (git-file-name name version))
7377 (sha256
7378 (base32
7379 "1kchrwccai92068p50zyd6mh524ywqnm0jw5g3lks7iwmf0xkmgc"))))
7380 (build-system ruby-build-system)
7381 (arguments
7382 `(#:phases (modify-phases %standard-phases
7383 (add-before 'check 'set-home
7384 (lambda _
7385 (setenv "HOME" (getcwd))
7386 #t)))))
7387 (native-inputs
7388 `(("ruby-chandler" ,ruby-chandler)
7389 ("ruby-rubocop" ,ruby-rubocop)
7390 ("ruby-simplecov" ,ruby-simplecov)))
7391 (propagated-inputs
7392 `(("ruby-byebug" ,ruby-byebug-11)
7393 ("ruby-pry" ,ruby-pry)))
7394 (synopsis "Step-by-step debugging and stack navigation in Pry")
7395 (description "This package adds step-by-step debugging and stack
7396navigation capabilities to @code{pry}, using @code{byebug}.")
7397 (home-page "https://github.com/deivid-rodriguez/pry-byebug")
7398 (license license:expat)))
7399
7400(define-public ruby-binding-of-caller
7401 (package
7402 (name "ruby-binding-of-caller")
7403 (version "0.8.0")
7404 (source
7405 (origin
7406 (method url-fetch)
7407 (uri (rubygems-uri "binding_of_caller" version))
7408 (sha256
7409 (base32
7410 "05syqlks7463zsy1jdfbbdravdhj9hpj5pv2m74blqpv8bq4vv5g"))))
7411 (build-system ruby-build-system)
7412 ;; Attempting to run the test suite fails with a rake deprecation error
7413 ;; (see: https://github.com/banister/binding_of_caller/issues/76).
7414 (arguments '(#:tests? #f))
7415 (propagated-inputs
7416 `(("ruby-debug-inspector" ,ruby-debug-inspector)))
7417 (synopsis "Retrieve the binding of a method's caller")
7418 (description "The @code{binding_of_caller} module provides the
7419@code{Binding#of_caller} method. It allows accessing bindings from upper
7420frames in the call stack and can evaluate code in that context.")
7421 (home-page "https://github.com/banister/binding_of_caller")
7422 (license license:expat)))
7423
7424(define-public ruby-pry-stack-explorer
7425 (package
7426 (name "ruby-pry-stack-explorer")
7427 (version "0.5.1")
7428 (source
7429 (origin
7430 (method url-fetch)
7431 (uri (rubygems-uri "pry-stack_explorer" version))
7432 (sha256
7433 (base32
7434 "157rd2n9pfvcmmicm0xkq8z4p6famaj13syrpra6b4032qpb1wn0"))))
7435 (build-system ruby-build-system)
7436 (arguments '(#:tests? #f)) ;no test suite in gem release
7437 (propagated-inputs
7438 `(("ruby-binding-of-caller" ,ruby-binding-of-caller)
7439 ("ruby-pry" ,ruby-pry)))
7440 (synopsis "Call-stack navigation plugin for the Pry REPL")
7441 (description "@code{pry-stack_explorer} is a plugin for the Pry REPL that
7442add support to navigate the call-stack.")
7443 (home-page "https://github.com/pry/pry-stack_explorer")
7444 (license license:expat)))
7445
7446(define-public ruby-varint
7447 (package
7448 (name "ruby-varint")
7449 (version "0.1.1")
7450 (source
7451 (origin
7452 (method url-fetch)
7453 (uri (rubygems-uri "varint" version))
7454 (sha256
7455 (base32
7456 "1y0l2qc64cwsyv76ygg9bbjnk86riz2kq73kmn87gdrlmpiyrdac"))))
7457 (build-system ruby-build-system)
7458 (arguments '(#:tests? #f)) ;no test suite
7459 (synopsis "Variable length integers (varint) C extension for Ruby")
7460 (description "This package provides a small C extension to speed up
7461variable length integers (varint) in Ruby Protocol Buffers.")
7462 (home-page "https://github.com/liquidm/varint")
7463 (license license:bsd-3)))
7464
7465(define-public ruby-ruby-prof
7466 (package
7467 (name "ruby-ruby-prof")
7468 (version "1.4.1")
7469 (source
7470 (origin
7471 (method url-fetch)
7472 (uri (rubygems-uri "ruby-prof" version))
7473 (sha256
7474 (base32
7475 "12cd91m08ih0imfpy4k87618hd4mhyz291a6bx2hcskza4nf6d27"))))
7476 (build-system ruby-build-system)
7477 (arguments
7478 `(#:phases
7479 (modify-phases %standard-phases
7480 (add-after 'unpack 'patch-rakefile
7481 ;; This fixes the following error: "NameError: uninitialized
7482 ;; constant Bundler::GemHelper" (see:
7483 ;; https://github.com/ruby-prof/ruby-prof/issues/274).
7484 (lambda _
7485 (substitute* "Rakefile"
7486 ((".*require \"bundler/setup\".*" all)
7487 (string-append all " require 'bundler/gem_tasks'\n")))
7488 #t))
7489 ;; The LineNumbersTest test fails non-deterministically (see:
7490 ;; https://github.com/ruby-prof/ruby-prof/issues/276).
7491 (add-after 'extract-gemspec 'delete-flaky-test
7492 (lambda _
7493 (delete-file "test/line_number_test.rb")
7494 (substitute* "ruby-prof.gemspec"
7495 (("\"test/line_number_test\\.rb\"\\.freeze, ") ""))
7496 #t))
7497 (add-before 'check 'compile
7498 (lambda _
7499 (invoke "rake" "compile"))))))
7500 (native-inputs
7501 `(("bundler" ,bundler)
7502 ("ruby-minitest" ,ruby-minitest)
7503 ("ruby-rake-compiler" ,ruby-rake-compiler)
7504 ("ruby-rdoc" ,ruby-rdoc)))
7505 (synopsis "Fast code profiler for Ruby")
7506 (description "RubyProf is a fast code profiler for Ruby. Its features
7507include:
7508@table @asis
7509@item Speed
7510Being a C extension, it is many times faster than the standard Ruby profiler.
7511@item Measurement Modes
7512It can measure program wall time, process time, object allocations and memory
7513usage.
7514@item Reports
7515A variety of text and cross-referenced HTML reports can be generated.
7516@item Threads
7517Profiling multiple threads simultaneously is supported.
7518@end table")
7519 (home-page "https://github.com/ruby-prof/ruby-prof")
7520 (license license:bsd-2)))
7521
7522(define-public ruby-cucumber-messages
7523 (package
7524 (name "ruby-cucumber-messages")
7525 (version "12.2.0")
7526 (source (origin
7527 (method git-fetch)
7528 (uri (git-reference
7529 (url "https://github.com/cucumber/messages-ruby")
7530 (commit "12cd07eac87bce7843fd1bb0bf64bc4da09f097c")))
7531 (file-name (git-file-name name version))
7532 (sha256
7533 (base32
7534 "16wwqfpsq7crvxc3q08lphgyh12cl2d83p1c79p312q4jmy9cn5a"))))
7535 (build-system ruby-build-system)
7536 (arguments
7537 `(#:phases (modify-phases %standard-phases
7538 (add-after 'unpack 'patch-protobuf.rb
7539 (lambda _
7540 (substitute* "rake/protobuf.rb"
7541 (("load 'protobuf/tasks/compile.rake'")
7542 "require 'protobuf/tasks'"))
7543 #t))
7544 (add-before 'build 'compile
7545 (lambda _
7546 (substitute* "Makefile"
7547 (("bundle exec ") "")
7548 (("include default.mk.*" all)
7549 (string-append "#" all)))
7550 (invoke "make")))
7551 (replace 'check
7552 (lambda _
7553 (invoke "rspec"))))))
7554 (propagated-inputs
7555 `(("ruby-protobuf" ,ruby-protobuf-cucumber)))
7556 (native-inputs
7557 `(("ruby-rspec" ,ruby-rspec)))
7558 (home-page "https://github.com/cucumber/messages-ruby")
7559 (synopsis "Cucumber Messages for Ruby (Protocol Buffers)")
7560 (description "Cucumber Messages for Ruby is a library which allows
7561serialization and deserialization of the protocol buffer messages used in
7562Cucumber.")
7563 (license license:expat)))
7564
7565(define-public ruby-gherkin
7566 (package
7567 (name "ruby-gherkin")
7568 (version "14.0.1")
7569 (source (origin
7570 (method git-fetch)
7571 (uri (git-reference
7572 (url "https://github.com/cucumber/gherkin-ruby")
7573 (commit (string-append "v" version))))
7574 (file-name (git-file-name name version))
7575 (sha256
7576 (base32
7577 "1dwa8632nc6kijv8p257jl64rsjmc0fimlaqvxlkdi2h9n1nympb"))))
7578 (build-system ruby-build-system)
7579 (native-inputs
7580 `(("ruby-cucumber-messages" ,ruby-cucumber-messages)
7581 ("ruby-rspec" ,ruby-rspec)))
7582 (arguments
7583 `(#:test-target "spec"))
7584 (synopsis "Gherkin parser for Ruby")
7585 (description "Gherkin is a parser and compiler for the Gherkin language.
7586It is intended be used by all Cucumber implementations to parse
7587@file{.feature} files.")
7588 (home-page "https://github.com/cucumber/gherkin-ruby")
7589 (license license:expat)))
7590
7591(define-public ruby-gherkin-ruby
7592 (package
7593 (name "ruby-gherkin-ruby")
7594 (version "0.3.2")
7595 (home-page "https://github.com/codegram/gherkin-ruby")
7596 (source (origin
7597 (method url-fetch)
7598 (uri (rubygems-uri "gherkin-ruby" version))
7599 (sha256
7600 (base32
7601 "18ay7yiibf4sl9n94k7mbi4k5zj2igl4j71qcmkswv69znyx0sn1"))))
7602 (build-system ruby-build-system)
7603 (synopsis "Pure Ruby Gherkin parser")
7604 (description
7605 "Gherkin-ruby is a Gherkin parser written in pure Ruby and less than
7606200 lines of code.")
7607 ;; XXX: No license information anywhere but Readme.md.
7608 (license license:expat)))
7609
7610(define-public ruby-aruba
7611 (package
7612 (name "ruby-aruba")
7613 (version "0.14.14")
7614 (source
7615 (origin
7616 (method url-fetch)
7617 (uri (rubygems-uri "aruba" version))
7618 (sha256
7619 (base32
7620 "0l2mfpdxc03gdrbwc2hv4vdhjhqhfcdp6d02j05j64ncpi9srlqn"))))
7621 (build-system ruby-build-system)
7622 (arguments
7623 '(#:test-target "spec"
7624 #:phases
7625 (modify-phases %standard-phases
7626 (add-after 'unpack 'patch
7627 (lambda _
7628 (substitute* "spec/aruba/api_spec.rb"
7629 ;; This resolves some errors in the specs
7630 ;;
7631 ;; undefined method `parse' for Time:Class
7632 (("require 'spec_helper'")
7633 "require 'spec_helper'\nrequire 'time'"))
7634 ;; Avoid shebang issues in this spec file
7635 (substitute* "spec/aruba/matchers/command_spec.rb"
7636 (("/usr/bin/env bash")
7637 (which "bash")))
7638 #t))
7639 (add-before 'check 'remove-unnecessary-dependencies
7640 (lambda _
7641 (substitute* "Gemfile"
7642 ((".*byebug.*") "\n")
7643 ((".*pry.*") "\n")
7644 ((".*yaml.*") "\n")
7645 ((".*bcat.*") "\n")
7646 ((".*kramdown.*") "\n")
7647 ((".*rubocop.*") "\n")
7648 ((".*cucumber-pro.*") "\n")
7649 ((".*cucumber.*") "\n")
7650 ((".*license_finder.*") "\n")
7651 ((".*rake.*") "gem 'rake'\n")
7652 ((".*relish.*") "\n"))
7653 (substitute* "aruba.gemspec"
7654 (("spec\\.add\\_runtime\\_dependency 'cucumber'.*")
7655 "spec.add_runtime_dependency 'cucumber'"))
7656 #t))
7657 (add-before 'check 'set-home
7658 (lambda _ (setenv "HOME" "/tmp") #t)))))
7659 (native-inputs
7660 `(("bundler" ,bundler)
7661 ("ruby-rspec" ,ruby-rspec)
7662 ("ruby-fuubar" ,ruby-fuubar)
7663 ("ruby-simplecov" ,ruby-simplecov)))
7664 (propagated-inputs
7665 `(("ruby-childprocess" ,ruby-childprocess)
7666 ("ruby-contracts" ,ruby-contracts)
7667 ("ruby-cucumber" ,ruby-cucumber)
7668 ("ruby-ffi" ,ruby-ffi)
7669 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
7670 ("ruby-thor" ,ruby-thor)
7671 ("ruby-yard" ,ruby-yard)))
7672 (synopsis "Test command-line applications with Cucumber, RSpec or Minitest")
7673 (description
7674 "Aruba is an extension for Cucumber, RSpec and Minitest for testing
7675command-line applications. It supports applications written in any
7676language.")
7677 (home-page "https://github.com/cucumber/aruba")
7678 (license license:expat)))
7679
7680;; A version of ruby-aruba without tests run so that circular dependencies can
7681;; be avoided.
7682(define ruby-aruba-without-tests
7683 (package
7684 (inherit ruby-aruba)
7685 (arguments '(#:tests? #f))
7686 (propagated-inputs
7687 `(("ruby-cucumber" ,ruby-cucumber-without-tests)
7688 ,@(alist-delete "ruby-cucumber"
7689 (package-propagated-inputs ruby-aruba))))
7690 (native-inputs '())))
7691
7692(define-public ruby-sys-uname
7693 (package
7694 (name "ruby-sys-uname")
7695 (version "1.2.1")
7696 (source
7697 (origin
7698 (method url-fetch)
7699 (uri (rubygems-uri "sys-uname" version))
7700 (sha256
7701 (base32
7702 "00p3wwvkdbg6pl38bchaagncv3i4fq4y0ks470imwykjanpy2ic0"))))
7703 (build-system ruby-build-system)
7704 (arguments
7705 `(#:test-target "spec"))
7706 (propagated-inputs `(("ruby-ffi" ,ruby-ffi)))
7707 (native-inputs `(("ruby-rspec" ,ruby-rspec)))
7708 (synopsis "Ruby interface for gathering system information")
7709 (description "The sys-uname library provides an interface for gathering
7710information about your current platform. It allows retrieving information
7711such as the OS name, OS version, system name, etc.")
7712 (home-page "https://github.com/djberg96/sys-uname")
7713 (license license:asl2.0)))
7714
7715(define-public ruby-cucumber-create-meta
7716 (package
7717 (name "ruby-cucumber-create-meta")
7718 (version "1.0.0")
7719 (source
7720 (origin
7721 (method url-fetch)
7722 (uri (rubygems-uri "cucumber-create-meta" version))
7723 (sha256
7724 (base32
7725 "0i0i3arymjrnjk72mg79w1a11607x4d0lrqafm9sz2gq9l52zasw"))))
7726 (build-system ruby-build-system)
7727 (arguments
7728 `(#:phases (modify-phases %standard-phases
7729 (add-after 'extract-gemspec 'relax-version-requirements
7730 (lambda _
7731 (substitute* ".gemspec"
7732 ((" 12\\.2")
7733 " 12.1"))
7734 #t))
7735 (replace 'check
7736 (lambda _
7737 (invoke "rspec"))))))
7738 (native-inputs
7739 `(("ruby-rspec" ,ruby-rspec)))
7740 (propagated-inputs
7741 `(("ruby-cucumber-messages" ,ruby-cucumber-messages)
7742 ("ruby-sys-uname" ,ruby-sys-uname)))
7743 (synopsis "Function to create @code{Meta} messages for Cucumber Ruby")
7744 (description "The @code{createMeta} utility function allows generating
7745system-specific @code{Meta} messages for Cucumber Ruby.")
7746 (home-page "https://github.com/cucumber/cucumber/tree/master/create-meta/ruby")
7747 (license license:expat)))
7748
7749(define-public ruby-cucumber-html-formatter
7750 (package
7751 (name "ruby-cucumber-html-formatter")
7752 (version "7.0.0")
7753 (source
7754 (origin
7755 (method url-fetch)
7756 (uri (rubygems-uri "cucumber-html-formatter" version))
7757 (sha256
7758 (base32
7759 "0lshj4sw9jw7687wrhknyb9kffblai3l843zgrznyqij3ga0bc62"))))
7760 (build-system ruby-build-system)
7761 (arguments
7762 `(#:phases (modify-phases %standard-phases
7763 (replace 'check
7764 (lambda _
7765 (invoke "rspec"))))))
7766 (native-inputs
7767 `(("ruby-rspec" ,ruby-rspec)))
7768 (propagated-inputs
7769 `(("ruby-cucumber-messages" ,ruby-cucumber-messages)))
7770 (synopsis "HTML formatter for Cucumber")
7771 (description "Cucumber HTML Formatter produces a HTML report for Cucumber
7772runs. It is built on top of cucumber-react and works with any Cucumber
7773implementation with a protocol buffer formatter that outputs Cucumber
7774messages.")
7775 (home-page "https://github.com/cucumber/cucumber/tree/\
7776master/html-formatter/ruby")
7777 (license license:expat)))
7778
7779(define-public ruby-cucumber
7780 (package
7781 (name "ruby-cucumber")
7782 (version "4.1.0")
7783 (source
7784 (origin
7785 (method git-fetch)
7786 (uri (git-reference
7787 (url "https://github.com/cucumber/cucumber-ruby")
7788 (commit (string-append "v" version))))
7789 (file-name (git-file-name name version))
7790 (sha256
7791 (base32
7792 "0g9rqfslbzkkrq2kvl14fgknrhfbji3bjjpjxff5nc9wzd3hd549"))))
7793 (build-system ruby-build-system)
7794 (arguments
7795 '(#:test-target "default"
7796 #:phases
7797 (modify-phases %standard-phases
7798 (add-after 'unpack 'disable-rubocop
7799 ;; Rubocop lint check fails with our more recent version.
7800 (lambda _
7801 (substitute* "Rakefile"
7802 (("spec cucumber rubocop")
7803 "spec cucumber"))
7804 #t))
7805 (add-after 'extract-gemspec 'strip-version-requirements
7806 (lambda _
7807 (delete-file "Gemfile") ;do not use Bundler
7808 (substitute* "cucumber.gemspec"
7809 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
7810 (string-append stripped "\n")))
7811 #t))
7812 (add-before 'check 'set-home
7813 (lambda _
7814 (setenv "HOME" (getcwd))
7815 #t)))))
7816 (propagated-inputs
7817 `(("ruby-builder" ,ruby-builder)
7818 ("ruby-cucumber-core" ,ruby-cucumber-core)
7819 ("ruby-cucumber-create-meta" ,ruby-cucumber-create-meta)
7820 ("ruby-cucumber-html-formatter" ,ruby-cucumber-html-formatter)
7821 ("ruby-cucumber-messages" ,ruby-cucumber-messages)
7822 ("ruby-cucumber-wire" ,ruby-cucumber-wire)
7823 ("ruby-diff-lcs" ,ruby-diff-lcs)
7824 ("ruby-gherkin" ,ruby-gherkin)
7825 ("ruby-multi-json" ,ruby-multi-json)
7826 ("ruby-multi-test" ,ruby-multi-test)))
7827 (native-inputs
7828 `(;; Use a untested version of aruba, to avoid a circular dependency, as
7829 ;; ruby-aruba depends on ruby-cucumber.
7830 ("ruby-aruba" ,ruby-aruba-without-tests)
7831 ("ruby-rspec" ,ruby-rspec)
7832 ("ruby-pry" ,ruby-pry)
7833 ("ruby-nokogiri" ,ruby-nokogiri)
7834 ("ruby-rubocop" ,ruby-rubocop)))
7835 (synopsis "Describe automated tests in plain language")
7836 (description "Cucumber is a tool for running automated tests written in
7837plain language. It's designed to support a Behaviour Driven Development (BDD)
7838software development workflow.")
7839 (home-page "https://cucumber.io/")
7840 (license license:expat)))
7841
7842(define ruby-cucumber-without-tests
7843 (package (inherit ruby-cucumber)
7844 (arguments
7845 '(#:tests? #f))
7846 (native-inputs
7847 '())))
7848
7849(define-public ruby-coveralls
7850 (package
7851 (name "ruby-coveralls")
7852 (version "0.8.23")
7853 (source
7854 (origin
7855 (method url-fetch)
7856 (uri (rubygems-uri "coveralls" version))
7857 (sha256
7858 (base32
7859 "1mv4fn5lfxhy7bc2f1lpnc5yp9mvv97az77j4r7jgrxcqwn8fqxc"))))
7860 (build-system ruby-build-system)
7861 ;; The test suite depends on ruby-vcr, which cannot be included in Guix
7862 ;; because of its nonfree, Hippocratic-derived license.
7863 (arguments
7864 `(#:tests? #f
7865 #:phases (modify-phases %standard-phases
7866 (add-after 'extract-gemspec 'strip-version-requirements
7867 ;; Keeping strict version requirements can cause problems
7868 ;; to users of the library, such as: Gem::ConflictError:
7869 ;; Unable to activate coveralls-0.8.23, because
7870 ;; simplecov-0.17.1 conflicts with simplecov (~> 0.16.1).
7871 (lambda _
7872 (substitute* "coveralls-ruby.gemspec"
7873 (("(.*add_.*dependency\\([^,]+), .*" _ stripped)
7874 (string-append stripped ")\n")))
7875 #t)))))
7876 (propagated-inputs
7877 `(("ruby-json" ,ruby-json)
7878 ("ruby-term-ansicolor" ,ruby-term-ansicolor)
7879 ("ruby-thor" ,ruby-thor)
7880 ("ruby-tins" ,ruby-tins)))
7881 (synopsis "Ruby implementation of the Coveralls API")
7882 (description "This package provides a Ruby implementation of the Coveralls
7883API.")
7884 (home-page "https://coveralls.io")
7885 (license license:expat)))
7886
7887(define-public ruby-unindent
7888 (package
7889 (name "ruby-unindent")
7890 (version "1.0")
7891 (source
7892 (origin
7893 (method url-fetch)
7894 (uri (rubygems-uri "unindent" version))
7895 (sha256
7896 (base32
7897 "1wqh3rzv8589yzibigminxx3qpmj2nqj28f90xy1sczk1pijmcrd"))))
7898 (build-system ruby-build-system)
7899 (synopsis "Ruby method to unindent strings")
7900 (description "This module provides a @code{String#unindent} Ruby method to
7901unindent strings, which can be useful to unindent multiline strings embedded
7902in already-indented code.")
7903 (home-page "https://github.com/mynyml/unindent")
7904 (license license:expat)))
7905
7906(define-public ruby-cucumber-core
7907 (package
7908 (name "ruby-cucumber-core")
7909 (version "7.1.0")
7910 (source
7911 (origin
7912 (method git-fetch)
7913 (uri (git-reference
7914 (url "https://github.com/cucumber/cucumber-ruby-core")
7915 (commit (string-append "v" version))))
7916 (file-name (git-file-name name version))
7917 (sha256
7918 (base32
7919 "1p5wb6wbggbw37ariyag4kxpiczznvgm3c8cnz1744dmbj79q1rn"))))
7920 (build-system ruby-build-system)
7921 (arguments
7922 `(#:test-target "spec"
7923 #:phases
7924 (modify-phases %standard-phases
7925 (add-after 'extract-gemspec 'relax-version-requirements
7926 (lambda _
7927 (substitute* "cucumber-core.gemspec"
7928 (("'cucumber-tag-expressions',.*")
7929 "'cucumber-tag-expressions', '>=2.0.0'\n"))
7930 #t)))))
7931 (native-inputs
7932 `(("ruby-rspec" ,ruby-rspec)
7933 ("ruby-coveralls" ,ruby-coveralls)
7934 ("ruby-rubocop" ,ruby-rubocop)
7935 ("ruby-simplecov" ,ruby-simplecov)
7936 ("ruby-unindent" ,ruby-unindent)))
7937 (propagated-inputs
7938 `(("ruby-cucumber-messages" ,ruby-cucumber-messages)
7939 ("ruby-gherkin" ,ruby-gherkin)
7940 ("ruby-cucumber-tag-expressions" ,ruby-cucumber-tag-expressions)))
7941 (synopsis "Core library for the Cucumber BDD app")
7942 (description "Cucumber is a tool for running automated tests
7943written in plain language. Because they're written in plain language,
7944they can be read by anyone on your team. Because they can be read by
7945anyone, you can use them to help improve communication, collaboration
7946and trust on your team.")
7947 (home-page "https://cucumber.io/")
7948 (license license:expat)))
7949
7950(define-public ruby-cucumber-expressions
7951 (package
7952 (name "ruby-cucumber-expressions")
7953 (version "10.2.0")
7954 (source
7955 (origin
7956 (method git-fetch)
7957 (uri (git-reference
7958 (url "https://github.com/cucumber/cucumber-expressions-ruby")
7959 (commit (string-append "v" version))))
7960 (file-name (git-file-name name version))
7961 (sha256
7962 (base32
7963 "1aivhcpjrmbvp9bg0y7g6zxh2swfvylvg0sapq5jc4i1y74k8npd"))))
7964 (build-system ruby-build-system)
7965 (arguments
7966 '(#:test-target "spec"))
7967 (native-inputs
7968 `(("ruby-rspec" ,ruby-rspec)
7969 ("ruby-simplecov" ,ruby-simplecov)))
7970 (synopsis "Simpler alternative to Regular Expressions")
7971 (description "Cucumber Expressions offer similar functionality to Regular
7972Expressions, with a syntax that is easier to read and write. Cucumber
7973Expressions are extensible with parameter types.")
7974 (home-page "https://github.com/cucumber/cucumber-expressions-ruby")
7975 (license license:expat)))
7976
7977(define-public ruby-cucumber-wire
7978 (package
7979 (name "ruby-cucumber-wire")
7980 (version "3.1.0")
7981 (source
7982 (origin
7983 (method url-fetch)
7984 (uri (rubygems-uri "cucumber-wire" version))
7985 (sha256
7986 (base32
7987 "0z1n13lqv70zb2lcrvs2263lm0gsb3gz8gbv890kxzwp8cvd433k"))))
7988 (build-system ruby-build-system)
7989 (arguments
7990 '(#:tests? #f ;tests use cucumber, causing a cycle
7991 #:phases
7992 (modify-phases %standard-phases
7993 (add-after 'extract-gemspec 'relax-version-requirements
7994 (lambda _
7995 (substitute* ".gemspec"
7996 ((" 10\\.1") " 10.2"))
7997 #t)))))
7998 (propagated-inputs
7999 `(("ruby-cucumber-core" ,ruby-cucumber-core)
8000 ("ruby-cucumber-expressions" ,ruby-cucumber-expressions)
8001 ("ruby-cucumber-messages" ,ruby-cucumber-messages)))
8002 (synopsis "Cucumber wire protocol plugin")
8003 (description "Cucumber's wire protocol allows step definitions to be
8004implemented and invoked on any platform.")
8005 (home-page "https://github.com/cucumber/cucumber-ruby-wire")
8006 (license license:expat)))
8007
8008(define-public ruby-cucumber-tag-expressions
8009 (package
8010 (name "ruby-cucumber-tag-expressions")
8011 (version "3.0.0")
8012 (source
8013 (origin
8014 (method git-fetch)
8015 (uri (git-reference
8016 (url "https://github.com/cucumber/tag-expressions-ruby")
8017 (commit (string-append "v" version))))
8018 (file-name (git-file-name name version))
8019 (sha256
8020 (base32
8021 "15dw4w0npd4m6aw7zhqkjxxzngp42kswrkwfygxkxcxnhy5zl1vx"))))
8022 (build-system ruby-build-system)
8023 (arguments
8024 `(#:test-target "spec"))
8025 (native-inputs
8026 `(("ruby-rspec" ,ruby-rspec)))
8027 (synopsis "Cucumber tag expressions for Ruby")
8028 (description "Cucumber tag expression parser for Ruby. A tag expression
8029is an infix boolean expression used by Cucumber.")
8030 (home-page "https://github.com/cucumber/tag-expressions-ruby")
8031 (license license:expat)))
8032
8033(define-public ruby-bindex
8034 (package
8035 (name "ruby-bindex")
8036 (version "0.5.0")
8037 (source
8038 (origin
8039 (method url-fetch)
8040 (uri (rubygems-uri "bindex" version))
8041 (sha256
8042 (base32
8043 "1wvhf4v8sk5x8li03pcc0v0wglmyv7ikvvg05bnms83dfy7s4k8i"))))
8044 (build-system ruby-build-system)
8045 (arguments
8046 '(#:test-target "default"))
8047 (native-inputs
8048 `(("bundler" ,bundler)
8049 ("ruby-rake-compiler" ,ruby-rake-compiler)))
8050 (synopsis "Provides access for bindings relating to Ruby exceptions")
8051 (description
8052 "@code{bindex} provides a way to access the bindings that relate to
8053exceptions in Ruby, providing more information about the context in which the
8054exception occurred.")
8055 (home-page "https://github.com/gsamokovarov/bindex")
8056 (license license:expat)))
8057
8058(define-public ruby-bio-logger
8059 (package
8060 (name "ruby-bio-logger")
8061 (version "1.0.1")
8062 (source
8063 (origin
8064 (method url-fetch)
8065 (uri (rubygems-uri "bio-logger" version))
8066 (sha256
8067 (base32
8068 "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
8069 (build-system ruby-build-system)
8070 (arguments
8071 `(#:tests? #f)) ; rake errors, missing shoulda
8072 (propagated-inputs
8073 `(("ruby-log4r" ,ruby-log4r)))
8074 (synopsis "Log4r wrapper for Ruby")
8075 (description "Bio-logger is a wrapper around Log4r adding extra logging
8076features such as filtering and fine grained logging.")
8077 (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
8078 (license license:expat)))
8079
8080(define-public ruby-yajl-ruby
8081 (package
8082 (name "ruby-yajl-ruby")
8083 (version "1.4.1")
8084 (source
8085 (origin
8086 (method url-fetch)
8087 (uri (rubygems-uri "yajl-ruby" version))
8088 (sha256
8089 (base32
8090 "16v0w5749qjp13xhjgr2gcsvjv6mf35br7iqwycix1n2h7kfcckf"))))
8091 (build-system ruby-build-system)
8092 (arguments
8093 '(#:test-target "spec"
8094 #:phases
8095 (modify-phases %standard-phases
8096 (add-before 'check 'patch-test-to-update-load-path
8097 (lambda _
8098 (substitute* "spec/parsing/large_number_spec.rb"
8099 (("require \"yajl\"")
8100 "$LOAD_PATH << 'lib'; require 'yajl'"))
8101 #t)))))
8102 (native-inputs
8103 `(("ruby-rake-compiler" ,ruby-rake-compiler)
8104 ("ruby-rspec" ,ruby-rspec)))
8105 (synopsis "Streaming JSON parsing and encoding library for Ruby")
8106 (description
8107 "Ruby C bindings to the Yajl JSON stream-based parser library. The API
8108is compatible with the JSON gem, so yajl-ruby can act as a drop in
8109replacement.
8110
8111A modified copy of yajl is used, and included in the package.")
8112 (home-page "https://github.com/brianmario/yajl-ruby")
8113 (license (list license:expat ; Ruby code, yajl_ext.c and yajl_ext.h
8114 license:bsd-3)))) ; Included, modified copy of yajl
8115
8116(define-public ruby-yard
8117 (package
8118 (name "ruby-yard")
8119 (version "0.9.25")
8120 (source
8121 (origin
8122 (method git-fetch)
8123 ;; Tests do not pass if we build from the distributed gem.
8124 (uri (git-reference
8125 (url "https://github.com/lsegal/yard")
8126 (commit (string-append "v" version))))
8127 (file-name (git-file-name name version))
8128 (sha256
8129 (base32
8130 "1x7y4s557hrnq439lih7nqg1y7ximardw75jx9i92x3yzpviqqwa"))))
8131 (build-system ruby-build-system)
8132 (arguments
8133 ;; Note: Tests are willfully disabled to alleviate dependency cycle
8134 ;; problems.
8135 `(#:tests? #f
8136 #:phases (modify-phases %standard-phases
8137 (add-after 'unpack 'do-not-set-date-in-gemspec
8138 ;; Fix a reproducibility issue (see:
8139 ;; https://github.com/lsegal/yard/issues/1343).
8140 (lambda _
8141 (substitute* "yard.gemspec"
8142 ((".*s\\.date.*") ""))
8143 #t)))))
8144 (synopsis "Documentation generation tool for Ruby")
8145 (description "YARD is a documentation generation tool for the Ruby
8146programming language. It enables the user to generate consistent, usable
8147documentation that can be exported to a number of formats very easily, and
8148also supports extending for custom Ruby constructs such as custom class level
8149definitions.")
8150 (home-page "https://yardoc.org")
8151 (license license:expat)))
8152
8153(define-public ruby-yard-with-tests
8154 (package
8155 (inherit ruby-yard)
8156 (name "ruby-yard-with-tests")
8157 (arguments
8158 (substitute-keyword-arguments (package-arguments ruby-yard)
8159 ((#:tests? _ #t) #t)
8160 ((#:test-target _ "default") "default")
8161 ((#:phases phases '%standard-phases)
8162 `(modify-phases ,phases
8163 (add-before 'check 'prepare-for-tests
8164 (lambda* (#:key tests? #:allow-other-keys)
8165 (when tests?
8166 (substitute* "Rakefile"
8167 ((".*[Ss]amus.*") ""))
8168 ;; Delete the Gemfile to avoid errors relating to it.
8169 (delete-file "Gemfile")
8170 ;; $HOME needs to be set to somewhere writeable for tests to
8171 ;; run.
8172 (setenv "HOME" "/tmp"))
8173 #t))))))
8174 (native-inputs
8175 `(("ruby-rspec" ,ruby-rspec)
8176 ("ruby-rack" ,ruby-rack)
8177 ("ruby-redcloth" ,ruby-redcloth)
8178 ("ruby-asciidoc" ,ruby-asciidoctor)))))
8179
8180(define-public ruby-spectroscope
8181 (package
8182 (name "ruby-spectroscope")
8183 (version "0.1.0")
8184 (source
8185 (origin
8186 (method url-fetch)
8187 (uri (rubygems-uri "spectroscope" version))
8188 (sha256
8189 (base32
8190 "0iiid9sm110qhx0i1zkds710cvsnmhd308wbqa7slkzbq2akrb3y"))))
8191 (build-system ruby-build-system)
8192 (arguments
8193 `(#:phases
8194 (modify-phases %standard-phases
8195 (replace 'check
8196 (lambda _
8197 (with-output-to-file ".test"
8198 (lambda _
8199 (display
8200 "\
8201require 'ae/should'
8202require 'rspec'
8203
8204include RSpec
8205
8206Test.run :default do |run|
8207 run.files << 'spec/*_spec.rb'
8208end")))
8209 (invoke "ruby" "-Ilib" "-rrubytest" ".test"))))))
8210 (native-inputs
8211 `(("ruby-ae" ,ruby-ae)
8212 ("ruby-rspec" ,ruby-rspec)))
8213 (propagated-inputs
8214 `(("ruby-rubytest" ,ruby-rubytest)))
8215 (synopsis "Behavior-Driven Development (BDD) framework built on RubyTest")
8216 (description "Spectroscope is a Behavior-Driven Development (BDD)
8217framework built on RubyTest, designed to emulate RSpec in most respects. It
8218is assertion framework independent so any number of assertion systems can be
8219used, such as Assay or AE.")
8220 (home-page "http://rubyworks.github.com/spectroscope/")
8221 (license license:bsd-2)))
8222
8223(define-public ruby-tomparse
8224 (package
8225 (name "ruby-tomparse")
8226 (version "0.4.2")
8227 (source
8228 (origin
8229 (method url-fetch)
8230 (uri (rubygems-uri "tomparse" version))
8231 (sha256
8232 (base32
8233 "06xakk41f1kgj6j1ahkwn4r6cvidixvm4phhlrvmwb7c3pr8ygc8"))))
8234 (build-system ruby-build-system)
8235 ;; TODO: Tests require citron and rulebow, not yet packaged.
8236 (arguments '(#:tests? #f))
8237 (synopsis "TomDoc parser for Ruby")
8238 (description "TomParse is a TomDoc parser for Ruby. It takes a code
8239comment as input and parses it into a convenient object-oriented structure in
8240accordance with the TomDoc standard. See
8241@url{https://github.com/mojombo/tomdoc, TomDoc} for more information about the
8242TomDoc format.")
8243 (home-page "http://rubyworks.github.com/tomparse/")
8244 (license license:bsd-2)))
8245
8246(define-public ruby-yard-tomdoc
8247 (package
8248 (name "ruby-yard-tomdoc")
8249 (version "0.7.1")
8250 (source
8251 (origin
8252 (method url-fetch)
8253 (uri (rubygems-uri "yard-tomdoc" version))
8254 (sha256
8255 (base32
8256 "1725gs8b8klpwhrvnf2wwp7dw3zxs9vz2la983l2d8c4r4fn1j2z"))))
8257 (build-system ruby-build-system)
8258 (arguments
8259 `(#:phases (modify-phases %standard-phases
8260 (replace 'check
8261 (lambda _
8262 (invoke "rubytest" "-Ilib" "-Itest" "test/"))))))
8263 (native-inputs
8264 `(("ruby-rubytest-cli" ,ruby-rubytest-cli)
8265 ("ruby-spectroscope" ,ruby-spectroscope)
8266 ("ruby-ae" ,ruby-ae)))
8267 (propagated-inputs
8268 `(("ruby-tomparse" ,ruby-tomparse)
8269 ("ruby-yard" ,ruby-yard)))
8270 (synopsis "TomDoc syntax for YARD")
8271 (description "This module adds support for the TomDoc documentation format
8272to YARD, a documentation generation tool for Ruby.")
8273 (home-page "http://rubyworks.github.com/yard-tomdoc/")
8274 (license license:expat)))
8275
8276(define-public ruby-clap
8277 (package
8278 (name "ruby-clap")
8279 (version "1.0.0")
8280 (source (origin
8281 (method url-fetch)
8282 (uri (rubygems-uri "clap" version))
8283 (sha256
8284 (base32
8285 "190m05k3pca72c1h8k0fnvby15m303zi0lpb9c478ad19wqawa5q"))))
8286 (build-system ruby-build-system)
8287 ;; Clap needs cutest for running tests, but cutest needs clap.
8288 (arguments `(#:tests? #f))
8289 (synopsis "Command line argument parsing for simple applications")
8290 (description
8291 "Clap provides command line argument parsing features. It covers the
8292simple case of executing code based on the flags or parameters passed.")
8293 (home-page "https://github.com/djanowski/cutest")
8294 (license license:expat)))
8295
8296(define-public ruby-cutest
8297 (package
8298 (name "ruby-cutest")
8299 (version "1.2.2")
8300 (source (origin
8301 (method url-fetch)
8302 (uri (rubygems-uri "cutest" version))
8303 (sha256
8304 (base32
8305 "1mldhjn62g53vx4gq2qdqg2lgjvyrqxa8d0khf8347bbfgi16d32"))))
8306 (build-system ruby-build-system)
8307 (propagated-inputs
8308 `(("ruby-clap" ,ruby-clap)))
8309 (synopsis "Run tests in separate processes")
8310 (description
8311 "Cutest runs tests in separate processes to avoid shared state.")
8312 (home-page "https://github.com/djanowski/cutest")
8313 (license license:expat)))
8314
8315(define-public ruby-pygmentize
8316 (package
8317 (name "ruby-pygmentize")
8318 (version "0.0.3")
8319 (source (origin
8320 (method url-fetch)
8321 (uri (rubygems-uri "pygmentize" version))
8322 (sha256
8323 (base32
8324 "1pxryhkiwvsz6xzda3bvqwz5z8ggzl1cdglf8qbcf4bb7akirdpb"))))
8325 (build-system ruby-build-system)
8326 (arguments
8327 `(#:phases
8328 (modify-phases %standard-phases
8329 (add-after 'unpack 'fix-pygmentize-path
8330 (lambda _
8331 (substitute* "lib/pygmentize.rb"
8332 (("\"/usr/bin/env python.*")
8333 (string-append "\"" (which "pygmentize") "\"\n")))
8334 #t))
8335 (add-after 'build 'do-not-use-vendor-directory
8336 (lambda _
8337 ;; Remove bundled pygments sources
8338 ;; FIXME: ruby-build-system does not support snippets.
8339 (delete-file-recursively "vendor")
8340 (substitute* "pygmentize.gemspec"
8341 (("\"vendor/\\*\\*/\\*\",") ""))
8342 #t)))))
8343 (inputs
8344 `(("pygments" ,python-pygments)))
8345 (native-inputs
8346 `(("ruby-cutest" ,ruby-cutest)
8347 ("ruby-nokogiri" ,ruby-nokogiri)))
8348 (synopsis "Thin Ruby wrapper around pygmentize")
8349 (description
8350 "Pygmentize provides a simple way to call pygmentize from within a Ruby
8351application.")
8352 (home-page "https://github.com/djanowski/pygmentize")
8353 (license license:expat)))
8354
8355(define-public ruby-eventmachine
8356 (package
8357 (name "ruby-eventmachine")
8358 (version "1.2.7")
8359 (source
8360 (origin
8361 (method url-fetch)
8362 (uri (rubygems-uri "eventmachine" version))
8363 (sha256
8364 (base32
8365 "0wh9aqb0skz80fhfn66lbpr4f86ya2z5rx6gm5xlfhd05bj1ch4r"))))
8366 (build-system ruby-build-system)
8367 (arguments
8368 '(#:tests? #f)) ; test suite tries to connect to google.com
8369 (native-inputs
8370 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
8371 (synopsis "Single-threaded network event framework for Ruby")
8372 (description
8373 "EventMachine implements a single-threaded engine for arbitrary network
8374communications. EventMachine wraps all interactions with sockets, allowing
8375programs to concentrate on the implementation of network protocols. It can be
8376used to create both network servers and clients.")
8377 ;; The ‘official’ rubyeventmachine.com domain is now registrar-squatted.
8378 (home-page "https://github.com/eventmachine/eventmachine")
8379 (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT
8380
8381(define-public ruby-ruby-engine
8382 (package
8383 (name "ruby-ruby-engine")
8384 (version "2.0.0")
8385 (source
8386 (origin
8387 (method url-fetch)
8388 (uri (rubygems-uri "ruby_engine" version))
8389 (sha256
8390 (base32
8391 "0wqdcv8gxybp1y7kjhh18g3r9dczacs62d4ahcvyhz32bih8c9fm"))))
8392 (build-system ruby-build-system)
8393 (arguments
8394 `(#:phases
8395 (modify-phases %standard-phases
8396 (add-after 'extract-gemspec 'clean-up
8397 (lambda _
8398 (delete-file "Gemfile.lock")
8399 (substitute* "ruby_engine.gemspec"
8400 ;; Remove unnecessary imports that would entail further
8401 ;; dependencies.
8402 ((".*<rdoc.*") "")
8403 ((".*<rubygems-tasks.*") "")
8404 ;; Remove extraneous .gem file
8405 (("\"pkg/ruby_engine-[0-9.]+\\.gem\".freeze, ") "")
8406 (("\"Gemfile.lock\".freeze, ") "")
8407 ;; Soften rake dependency
8408 (("%q<rake>.freeze, \\[\"~> 10.0\"\\]")
8409 "%q<rake>.freeze, [\">= 10.0\"]")
8410 ;; Soften the rspec dependency
8411 (("%q<rspec>.freeze, \\[\"~> 2.4\"\\]")
8412 "%q<rspec>.freeze, [\">= 2.4\"]"))
8413 (substitute* "Rakefile"
8414 (("require 'rubygems/tasks'") "")
8415 (("Gem::Tasks.new") ""))
8416 ;; Remove extraneous .gem file that otherwise gets installed.
8417 (delete-file-recursively "pkg")
8418 #t)))))
8419 (native-inputs
8420 `(("bundler" ,bundler)
8421 ("ruby-rake" ,ruby-rake)
8422 ("ruby-rspec" ,ruby-rspec)))
8423 (synopsis "Simplifies checking for Ruby implementation")
8424 (description
8425 "@code{ruby_engine} provides an RubyEngine class that can be used to
8426check which implementation of Ruby is in use. It can provide the interpreter
8427name and provides query methods such as @{RubyEngine.mri?}.")
8428 (home-page "https://github.com/janlelis/ruby_engine")
8429 (license license:expat)))
8430
8431(define-public ruby-turn
8432 (package
8433 (name "ruby-turn")
8434 (version "0.9.7")
8435 (source
8436 (origin
8437 (method url-fetch)
8438 (uri (rubygems-uri "turn" version))
8439 (sha256
8440 (base32
8441 "1691rc2sq04cw8mxxh340k2j04ll90kwgcy8ddrp6rligmfrf8fw"))))
8442 (build-system ruby-build-system)
8443 (arguments
8444 `(#:phases
8445 (modify-phases %standard-phases
8446 ;; Tests fail because turn changes its environment so can no longer
8447 ;; find test/unit. Instead simply test if the executable runs
8448 ;; without issue.
8449 (replace 'check
8450 (lambda _
8451 (invoke "ruby" "-Ilib" "bin/turn" "-h"))))))
8452 (propagated-inputs
8453 `(("ruby-ansi" ,ruby-ansi)
8454 ("ruby-minitest" ,ruby-minitest-4)))
8455 (synopsis "Alternate set of alternative runners for MiniTest")
8456 (description
8457 "TURN provides a set of alternative runners for MiniTest which are both
8458colorful and informative. TURN displays each test on a separate line with
8459failures being displayed immediately instead of at the end of the tests. Note
8460that TURN is no longer being maintained.")
8461 (home-page "https://rubygems.org/gems/turn")
8462 (license license:expat)))
8463
8464(define-public ruby-mimemagic
8465 (package
8466 (name "ruby-mimemagic")
8467 (version "0.3.3")
8468 (source
8469 (origin
8470 (method url-fetch)
8471 (uri (rubygems-uri "mimemagic" version))
8472 (sha256
8473 (base32 "04cp5sfbh1qx82yqxn0q75c7hlcx8y1dr5g3kyzwm4mx6wi2gifw"))))
8474 (build-system ruby-build-system)
8475 (arguments
8476 '(#:phases
8477 (modify-phases %standard-phases
8478 ;; This phase breaks the tests, as it patches some of the test data.
8479 (delete 'patch-source-shebangs))))
8480 (native-inputs
8481 `(("ruby-bacon" ,ruby-bacon)))
8482 (synopsis "Ruby library for MIME detection by extension or content")
8483 (description
8484 "@acronym{MIME, Multipurpose Internet Mail Extensions} detection by
8485extension or content, using the freedesktop.org.xml shared-mime-info
8486database.")
8487 (home-page "https://github.com/minad/mimemagic")
8488 (license license:expat)))
8489
8490(define-public ruby-mime-types-data
8491 (package
8492 (name "ruby-mime-types-data")
8493 (version "3.2016.0521")
8494 (source
8495 (origin
8496 (method url-fetch)
8497 (uri (rubygems-uri "mime-types-data" version))
8498 (sha256
8499 (base32
8500 "04my3746hwa4yvbx1ranhfaqkgf6vavi1kyijjnw8w3dy37vqhkm"))))
8501 (build-system ruby-build-system)
8502 (native-inputs
8503 `(("ruby-hoe" ,ruby-hoe)))
8504 (synopsis "Registry for information about MIME media type definitions")
8505 (description
8506 "@code{mime-types-data} provides a registry for information about
8507Multipurpose Internet Mail Extensions (MIME) media type definitions. It can
8508be used with the Ruby mime-types library or other software to determine
8509defined filename extensions for MIME types, or to use filename extensions to
8510look up the likely MIME type definitions.")
8511 (home-page "https://github.com/mime-types/mime-types-data/")
8512 (license license:expat)))
8513
8514(define-public ruby-mime-types
8515 (package
8516 (name "ruby-mime-types")
8517 (version "3.1")
8518 (source
8519 (origin
8520 (method url-fetch)
8521 (uri (rubygems-uri "mime-types" version))
8522 (sha256
8523 (base32
8524 "0087z9kbnlqhci7fxh9f6il63hj1k02icq2rs0c6cppmqchr753m"))))
8525 (build-system ruby-build-system)
8526 (propagated-inputs
8527 `(("ruby-mime-types-data" ,ruby-mime-types-data)))
8528 (native-inputs
8529 `(("ruby-hoe" ,ruby-hoe)
8530 ("ruby-fivemat" ,ruby-fivemat)
8531 ("ruby-minitest-focus" ,ruby-minitest-focus)
8532 ("ruby-minitest-rg" ,ruby-minitest-rg)
8533 ("ruby-minitest-bonus-assertions" ,ruby-minitest-bonus-assertions)
8534 ("ruby-minitest-hooks" ,ruby-minitest-hooks)))
8535 (synopsis "Library and registry for MIME content type definitions")
8536 (description "The mime-types library provides a library and registry for
8537information about Multipurpose Internet Mail Extensions (MIME) content type
8538definitions. It can be used to determine defined filename extensions for MIME
8539types, or to use filename extensions to look up the likely MIME type
8540definitions.")
8541 (home-page "https://github.com/mime-types/ruby-mime-types")
8542 (license license:expat)))
8543
8544(define-public ruby-fivemat
8545 (package
8546 (name "ruby-fivemat")
8547 (version "1.3.7")
8548 (source
8549 (origin
8550 (method url-fetch)
8551 (uri (rubygems-uri "fivemat" version))
8552 (sha256
8553 (base32
8554 "0pzlycasvwmg4bbx7plllpqnhd9zlmmff8l2w3yii86nrm2nvf9n"))))
8555 (build-system ruby-build-system)
8556 (arguments
8557 `(#:tests? #f)) ; no tests
8558 (synopsis "Each test file given its own line of dots")
8559 (description
8560 "Fivemat is a MiniTest/RSpec/Cucumber formatter that gives each test file
8561its own line of dots during testing. It aims to provide test output that is
8562neither too verbose nor too minimal.")
8563 (home-page "https://github.com/tpope/fivemat")
8564 (license license:expat)))
8565
8566(define-public ruby-sqlite3
8567 (package
8568 (name "ruby-sqlite3")
8569 (version "1.4.2")
8570 (source
8571 (origin
8572 (method url-fetch)
8573 (uri (rubygems-uri "sqlite3" version))
8574 (sha256
8575 (base32
8576 "0lja01cp9xd5m6vmx99zwn4r7s97r1w5cb76gqd8xhbm1wxyzf78"))))
8577 (build-system ruby-build-system)
8578 (arguments
8579 `(#:phases
8580 (modify-phases %standard-phases
8581 (add-before 'check 'add-gemtest-file
8582 ;; This file exists in the repository but is not distributed.
8583 (lambda _ (invoke "touch" ".gemtest"))))))
8584 (inputs
8585 `(("sqlite" ,sqlite)))
8586 (native-inputs
8587 `(("ruby-hoe" ,ruby-hoe)
8588 ("ruby-rake-compiler" ,ruby-rake-compiler)
8589 ("ruby-mini-portile" ,ruby-mini-portile)))
8590 (synopsis "Interface with SQLite3 databases")
8591 (description
8592 "This module allows Ruby programs to interface with the SQLite3 database
8593engine.")
8594 (home-page
8595 "https://github.com/sparklemotion/sqlite3-ruby")
8596 (license license:bsd-3)))
8597
8598(define-public ruby-shoulda-context
8599 (package
8600 (name "ruby-shoulda-context")
8601 (version "1.2.2")
8602 (source
8603 (origin
8604 (method url-fetch)
8605 (uri (rubygems-uri "shoulda-context" version))
8606 (sha256
8607 (base32
8608 "1l0ncsxycb4s8n47dml97kdnixw4mizljbkwqc3rh05r70csq9bc"))))
8609 (build-system ruby-build-system)
8610 (arguments
8611 `(#:phases
8612 (modify-phases %standard-phases
8613 (replace 'check
8614 (lambda _
8615 ;; Do not run tests to avoid circular dependence with rails.
8616 ;; Instead just import the library to test.
8617 (invoke "ruby" "-Ilib" "-r" "shoulda-context"))))))
8618 (synopsis "Test::Unit context framework extracted from Shoulda")
8619 (description
8620 "@code{shoulda-context} is the context framework extracted from Shoulda.
8621Instead of writing Ruby methods with lots_of_underscores, shoulda-context adds
8622context, setup, and should blocks combine to produce natural test method
8623names.")
8624 (home-page "https://github.com/thoughtbot/shoulda-context")
8625 (license license:expat)))
8626
8627(define-public ruby-shoulda-matchers
8628 (package
8629 (name "ruby-shoulda-matchers")
8630 (version "3.1.2")
8631 (source
8632 (origin
8633 (method url-fetch)
8634 (uri (rubygems-uri "shoulda-matchers" version))
8635 (sha256
8636 (base32
8637 "1zvv94pqk5b5my3w1shdz7h34xf2ldhg5k4qfdpbwi2iy0j9zw2a"))))
8638 (build-system ruby-build-system)
8639 (arguments
8640 `(#:phases
8641 (modify-phases %standard-phases
8642 (replace 'check
8643 (lambda _
8644 ;; Do not run tests to avoid circular dependence with rails. Instead
8645 ;; just import the library to test.
8646 (invoke "ruby" "-Ilib" "-r" "shoulda-matchers"))))))
8647 (propagated-inputs
8648 `(("ruby-activesupport" ,ruby-activesupport)))
8649 (synopsis "Collection of testing matchers extracted from Shoulda")
8650 (description
8651 "Shoulda Matchers provides RSpec- and Minitest-compatible one-liners that
8652test common Rails functionality. These tests would otherwise be much longer,
8653more complex, and error-prone.")
8654 (home-page "https://github.com/thoughtbot/shoulda-matchers")
8655 (license license:expat)))
8656
8657(define-public ruby-shoulda-matchers-2
8658 (package
8659 (inherit ruby-shoulda-matchers)
8660 (version "2.8.0")
8661 (source (origin
8662 (method url-fetch)
8663 (uri (rubygems-uri "shoulda-matchers" version))
8664 (sha256
8665 (base32
8666 "0d3ryqcsk1n9y35bx5wxnqbgw4m8b3c79isazdjnnbg8crdp72d0"))))))
8667
8668(define-public ruby-shoulda
8669 (package
8670 (name "ruby-shoulda")
8671 (version "3.5.0")
8672 (source
8673 (origin
8674 (method url-fetch)
8675 (uri (rubygems-uri "shoulda" version))
8676 (sha256
8677 (base32
8678 "0csmf15a7mcinfq54lfa4arp0f4b2jmwva55m0p94hdf3pxnjymy"))))
8679 (build-system ruby-build-system)
8680 (arguments
8681 `(#:phases
8682 (modify-phases %standard-phases
8683 (replace 'check
8684 ;; Don't run tests to avoid circular dependence with rails. Instead
8685 ;; just import the library to test.
8686 (lambda _ (invoke "ruby" "-Ilib" "-r" "shoulda"))))))
8687 (propagated-inputs
8688 `(("ruby-shoulda-context" ,ruby-shoulda-context)
8689 ("ruby-shoulda-matchers" ,ruby-shoulda-matchers-2)))
8690 (synopsis "Context framework and matchers for testing")
8691 (description
8692 "@code{shoulda} is a meta-package combining @code{shoulda-context} and
8693@code{shoulda-matchers} providing tools for writing tests.")
8694 (home-page "https://github.com/thoughtbot/shoulda")
8695 (license license:expat)))
8696
8697(define-public ruby-unf
8698 (package
8699 (name "ruby-unf")
8700 (version "0.1.4")
8701 (source
8702 (origin
8703 (method url-fetch)
8704 (uri (rubygems-uri "unf" version))
8705 (sha256
8706 (base32
8707 "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9"))))
8708 (build-system ruby-build-system)
8709 (arguments
8710 `(#:phases
8711 (modify-phases %standard-phases
8712 (add-before 'check 'add-dependency-to-bundler
8713 (lambda _
8714 ;; test-unit is required but not provided by the bundler
8715 ;; environment. This is fixed in the upstream repository but fix
8716 ;; has not been released.
8717 (substitute* "Gemfile"
8718 (("^gemspec") "gem 'test-unit'\ngemspec"))
8719 #t)))))
8720 (propagated-inputs
8721 `(("ruby-unf-ext" ,ruby-unf-ext)))
8722 (native-inputs
8723 `(("ruby-shoulda" ,ruby-shoulda)
8724 ("bundler" ,bundler)
8725 ("ruby-test-unit" ,ruby-test-unit)))
8726 (synopsis "Unicode Normalization Form support to Ruby and JRuby")
8727 (description
8728 "@code{ruby-unf} is a wrapper library to bring Unicode Normalization Form
8729support to both Ruby and JRuby. It uses @code{unf_ext} on CRuby and
8730@code{java.text.Normalizer} on JRuby.")
8731 (home-page "https://github.com/knu/ruby-unf")
8732 (license license:bsd-2)))
8733
8734(define-public ruby-warden
8735 (package
8736 (name "ruby-warden")
8737 (version "1.2.8")
8738 (source
8739 (origin
8740 (method url-fetch)
8741 (uri (rubygems-uri "warden" version))
8742 (sha256
8743 (base32
8744 "1fr9n9i9r82xb6i61fdw4xgc7zjv7fsdrr4k0njchy87iw9fl454"))))
8745 (build-system ruby-build-system)
8746 (arguments
8747 '(#:tests? #f)) ; No included tests
8748 (propagated-inputs
8749 `(("ruby-rack" ,ruby-rack)))
8750 (synopsis "Rack middleware providing authentication")
8751 (description
8752 "Warden is a Rack-based middleware that provides a mechanism for
8753authentication in Ruby web applications.")
8754 (home-page "https://github.com/wardencommunity/warden")
8755 (license license:expat)))
8756
8757(define-public ruby-warden-oauth2
8758 (package
8759 (name "ruby-warden-oauth2")
8760 (version "0.0.1")
8761 (source
8762 (origin
8763 (method url-fetch)
8764 (uri (rubygems-uri "warden-oauth2" version))
8765 (sha256
8766 (base32
8767 "1z9154lvzrnnfjbjkmirh4n811nygp6pm2fa6ikr7y1ysa4zv3cz"))))
8768 (build-system ruby-build-system)
8769 (arguments
8770 '(#:test-target "spec"
8771 #:phases
8772 (modify-phases %standard-phases
8773 (add-after 'unpack 'remove-unnecessary-dependencies
8774 (lambda _
8775 (substitute* "Gemfile"
8776 ;; All of these gems relate to development, and are unnecessary
8777 ;; when running the tests
8778 (("gem 'guard-bundler'") "")
8779 (("gem 'guard'") "")
8780 (("gem 'guard-rspec'") "")
8781 (("gem 'rb-fsevent'") "")
8782 (("gem 'pry'") "")
8783 (("gem 'growl'") ""))
8784 #t))
8785 ;; The test suite doesn't work with rspec@2, and this is incompatible
8786 ;; with the current version of Rake, so invoke Rspec directly
8787 (replace 'check
8788 (lambda* (#:key tests? #:allow-other-keys)
8789 (when tests?
8790 (invoke "bundle" "exec" "rspec"))
8791 #t)))))
8792 (propagated-inputs
8793 `(("ruby-warden" ,ruby-warden)))
8794 (native-inputs
8795 `(("bundler" ,bundler)
8796 ("ruby-rspec" ,ruby-rspec-2)
8797 ("ruby-rack-test" ,ruby-rack-test)))
8798 (synopsis "OAuth 2.0 strategies for Warden")
8799 (description
8800 "This library extends Warden to support OAuth 2.0 authorized API
8801requests.")
8802 (home-page "https://github.com/opperator/warden-oauth2")
8803 (license license:expat)))
8804
8805(define-public ruby-webmock-2
8806 (package
8807 (name "ruby-webmock")
8808 (version "2.3.2")
8809 (source
8810 (origin
8811 (method url-fetch)
8812 (uri (rubygems-uri "webmock" version))
8813 (sha256
8814 (base32
8815 "04hkcqsmbfnp8g237pisnc834vpgildklicbjbyikqg0bg1rwcy5"))))
8816 (build-system ruby-build-system)
8817 (native-inputs
8818 `(("bundler" ,bundler)
8819 ("ruby-rspec" ,ruby-rspec)))
8820 (propagated-inputs
8821 `(("ruby-addressable" ,ruby-addressable)
8822 ("ruby-crack" ,ruby-crack)
8823 ("ruby-hashdiff" ,ruby-hashdiff)))
8824 (synopsis "Allows stubbing and setting expectations on HTTP requests")
8825 (description
8826 "WebMock allows stubbing HTTP requests and setting expectations on HTTP
8827requests. This is useful when testing software.")
8828 (home-page "https://github.com/bblimke/webmock")
8829 (license license:expat)))
8830
8831(define-public ruby-unicode-display-width
8832 (package
8833 (name "ruby-unicode-display-width")
8834 (version "1.6.0")
8835 (source
8836 (origin
8837 (method url-fetch)
8838 (uri (rubygems-uri "unicode-display_width" version))
8839 (sha256
8840 (base32
8841 "08kfiniak1pvg3gn5k6snpigzvhvhyg7slmm0s2qx5zkj62c1z2w"))))
8842 (build-system ruby-build-system)
8843 (arguments
8844 '(;; Test data not included.
8845 #:tests? #f))
8846 (synopsis "Determine the monospace display width of Ruby strings")
8847 (description
8848 "@code{Unicode::DisplayWidth} is a Ruby library which can determine the
8849display width of strings in Ruby.")
8850 (home-page "https://github.com/janlelis/unicode-display_width")
8851 (license license:expat)))
8852
8853;; There is another gem called 'ruby-version' so we use an underscore in this
8854;; name
8855(define-public ruby_version
8856 (package
8857 (name "ruby_version")
8858 (version "1.0.2")
8859 (source
8860 (origin
8861 (method url-fetch)
8862 (uri (rubygems-uri "ruby_version" version))
8863 (sha256
8864 (base32
8865 "0lvc7bd5ps3w2vq2wb02i0pi3vfcx2rnckx2ix4rjym1qf52kb2j"))))
8866 (build-system ruby-build-system)
8867 (arguments
8868 `(#:phases
8869 (modify-phases %standard-phases
8870 (add-before 'check 'fix-dependencies
8871 (lambda _
8872 ;; Remove the Gemfile.lock, as we want to use Guix packages at
8873 ;; whatever versions.
8874 (delete-file "Gemfile.lock")
8875 ;; Remove the included gem files as they unnecessary.
8876 (delete-file-recursively "pkg/")
8877 ;; Accept any version of rake, rdoc and rspec
8878 (substitute* "ruby_version.gemspec"
8879 (("%q<rake.*") "%q<rake>)\n")
8880 (("%q<rdoc.*") "%q<rdoc>)\n")
8881 (("%q<rspec.*") "%q<rspec>)\n"))
8882 ;; Do not use bundler.
8883 (substitute* "Rakefile"
8884 (("Bundler\\.setup.*") "nil\n"))
8885 #t)))))
8886 (native-inputs
8887 `(("ruby-rdoc" ,ruby-rdoc)
8888 ("ruby-rspec" ,ruby-rspec)
8889 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
8890 (synopsis "Ruby library to help check the Ruby version")
8891 (description "@code{ruby_version} provides a @code{RubyVersion} module to simplify
8892checking for the right Ruby version in software.")
8893 (home-page "https://github.com/janlelis/ruby_version")
8894 (license license:expat)))
8895
8896(define-public ruby-websocket-driver
8897 (package
8898 (name "ruby-websocket-driver")
8899 (version "0.7.1")
8900 (source
8901 (origin
8902 (method url-fetch)
8903 (uri (rubygems-uri "websocket-driver" version))
8904 (sha256
8905 (base32 "1bxamwqldmy98hxs5pqby3andws14hl36ch78g0s81gaz9b91nj2"))))
8906 (build-system ruby-build-system)
8907 (arguments
8908 '(#:tests? #f)) ; no included tests
8909 (propagated-inputs
8910 `(("ruby-websocket-extensions" ,ruby-websocket-extensions)))
8911 (synopsis "WebSocket protocol handler with pluggable I/O")
8912 (description
8913 "@code{websocket-driver} provides a complete implementation of the
8914WebSocket protocols that can be hooked up to any TCP library")
8915 (home-page "https://github.com/faye/websocket-driver-ruby")
8916 (license license:expat)))
8917
8918(define-public ruby-websocket-extensions
8919 (package
8920 (name "ruby-websocket-extensions")
8921 (version "0.1.3")
8922 (source
8923 (origin
8924 (method url-fetch)
8925 (uri (rubygems-uri "websocket-extensions" version))
8926 (sha256
8927 (base32
8928 "034sdr7fd34yag5l6y156rkbhiqgmy395m231dwhlpcswhs6d270"))))
8929 (build-system ruby-build-system)
8930 (arguments
8931 '(;; No included tests
8932 #:tests? #f))
8933 (synopsis "Generic extension manager for WebSocket connections")
8934 (description
8935 "@code{websocket-extensions} provides a container for registering
8936extension plugins.")
8937 (home-page "https://github.com/faye/websocket-extensions-ruby")
8938 (license license:expat)))
8939
8940(define-public ruby-domain-name
8941 (package
8942 (name "ruby-domain-name")
8943 (version "0.5.20190701")
8944 (source
8945 (origin
8946 (method url-fetch)
8947 (uri (rubygems-uri "domain_name" version))
8948 (sha256
8949 (base32 "0lcqjsmixjp52bnlgzh4lg9ppsk52x9hpwdjd53k8jnbah2602h0"))))
8950 (build-system ruby-build-system)
8951 (arguments
8952 `(#:phases
8953 (modify-phases %standard-phases
8954 (add-before 'check 'fix-versions
8955 (lambda _
8956 ;; Fix NameError that appears to already be fixed upstream.
8957 (substitute* "Rakefile"
8958 (("DomainName::VERSION")
8959 "Bundler::GemHelper.gemspec.version"))
8960 ;; Loosen unnecessarily strict test-unit version specification.
8961 (substitute* "domain_name.gemspec"
8962 (("<test-unit>.freeze, \\[\\\"~> 2.5.5") "<test-unit>, [\">0"))
8963 #t)))))
8964 (propagated-inputs
8965 `(("ruby-unf" ,ruby-unf)))
8966 (native-inputs
8967 `(("ruby-shoulda" ,ruby-shoulda)
8968 ("bundler" ,bundler)
8969 ("ruby-test-unit" ,ruby-test-unit)))
8970 (synopsis "Domain name manipulation library")
8971 (description
8972 "@code{domain_name} is a Domain name manipulation library. It parses a
8973domain name ready for extracting the registered domain and TLD (Top Level
8974Domain). It can also be used for cookie domain validation based on the Public
8975Suffix List.")
8976 (home-page "https://github.com/knu/ruby-domain_name")
8977 (license license:bsd-2)))
8978
8979(define-public ruby-http-cookie
8980 (package
8981 (name "ruby-http-cookie")
8982 (version "1.0.3")
8983 (source
8984 (origin
8985 (method url-fetch)
8986 (uri (rubygems-uri "http-cookie" version))
8987 (sha256
8988 (base32
8989 "004cgs4xg5n6byjs7qld0xhsjq3n6ydfh897myr2mibvh6fjc49g"))))
8990 (build-system ruby-build-system)
8991 (arguments
8992 `(#:phases
8993 (modify-phases %standard-phases
8994 (add-before 'check 'add-dependency-to-bundler
8995 (lambda _
8996 ;; Fix NameError
8997 (substitute* "Rakefile"
8998 (("HTTP::Cookie::VERSION")
8999 "Bundler::GemHelper.gemspec.version"))
9000 #t)))))
9001 (propagated-inputs
9002 `(("ruby-domain-name" ,ruby-domain-name)))
9003 (native-inputs
9004 `(("rubysimplecov" ,ruby-simplecov)
9005 ("bundler" ,bundler)
9006 ("ruby-sqlite3" ,ruby-sqlite3)
9007 ("ruby-test-unit" ,ruby-test-unit)))
9008 (synopsis "Handle HTTP Cookies based on RFC 6265")
9009 (description
9010 "@code{HTTP::Cookie} is a Ruby library to handle HTTP Cookies based on
9011RFC 6265. It has been designed with security, standards compliance and
9012compatibility in mind, to behave just the same as today's major web browsers.
9013It has built-in support for the legacy @code{cookies.txt} and
9014@code{cookies.sqlite} formats of Mozilla Firefox.")
9015 (home-page "https://github.com/sparklemotion/http-cookie")
9016 (license license:expat)))
9017
9018(define-public ruby-httpclient
9019 (package
9020 (name "ruby-httpclient")
9021 (version "2.8.3")
9022 (source
9023 (origin
9024 (method url-fetch)
9025 (uri (rubygems-uri "httpclient" version))
9026 (sha256
9027 (base32
9028 "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99"))))
9029 (build-system ruby-build-system)
9030 (arguments
9031 '(;; TODO: Some tests currently fail
9032 ;; ------
9033 ;; 211 tests, 729 assertions, 13 failures, 4 errors, 0 pendings,
9034 ;; 2 omissions, 0 notifications
9035 ;; 91.866% passed
9036 ;; ------
9037 ;; 6.49 tests/s, 22.41 assertions/s
9038 #:tests? #f
9039 #:phases
9040 (modify-phases %standard-phases
9041 (replace 'check
9042 (lambda* (#:key tests? #:allow-other-keys)
9043 (if tests?
9044 (invoke "ruby"
9045 "-Ilib"
9046 "test/runner.rb")
9047 #t))))))
9048 (native-inputs
9049 `(("ruby-rack" ,ruby-rack)))
9050 (synopsis
9051 "Make HTTP requests with support for HTTPS, Cookies, authentication and more")
9052 (description
9053 "The @code{httpclient} ruby library provides functionality related to
9054HTTP. Compared to the @code{net/http} library, @{httpclient} also provides
9055Cookie, multithreading and authentication (digest, NTLM) support.
9056
9057Also provided is a @command{httpclient} command, which can perform HTTP
9058requests either using arguments or with an interactive prompt.")
9059 (home-page "https://github.com/nahi/httpclient")
9060 (license license:ruby)))
9061
9062(define-public ruby-ansi
9063 (package
9064 (name "ruby-ansi")
9065 (version "1.5.0")
9066 (source
9067 (origin
9068 (method git-fetch)
9069 ;; Fetch from GitHub as the gem does not contain testing code.
9070 (uri (git-reference
9071 (url "https://github.com/rubyworks/ansi")
9072 (commit version)))
9073 (file-name (git-file-name name version))
9074 (sha256
9075 (base32
9076 "1wsz7xxwl3vkh277jb7fd7akqnqqgbvalxzpjwniiqk8ghfprbi5"))))
9077 (build-system ruby-build-system)
9078 (arguments
9079 `(#:phases
9080 (modify-phases %standard-phases
9081 ;; Disable testing to break the cycle ansi, ae, ansi, as well as the
9082 ;; cycle ansi, qed, ansi. Instead simply test that the library can
9083 ;; be require'd.
9084 (replace 'check
9085 (lambda _
9086 (invoke "ruby" "-Ilib" "-r" "ansi")))
9087 (add-before 'validate-runpath 'replace-broken-symlink
9088 (lambda* (#:key outputs #:allow-other-keys)
9089 (let* ((out (assoc-ref outputs "out"))
9090 (file (string-append
9091 out "/lib/ruby/vendor_ruby/gems/ansi-"
9092 ,version "/lib/ansi.yml")))
9093 ;; XXX: This symlink is broken since ruby 2.4.
9094 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
9095 (delete-file file)
9096 (symlink "../.index" file)
9097 #t))))))
9098 (synopsis "ANSI escape code related libraries")
9099 (description
9100 "This package is a collection of ANSI escape code related libraries
9101enabling ANSI colorization and stylization of console output. Included in the
9102library are the @code{Code} module, which defines ANSI codes as constants and
9103methods, a @code{Mixin} module for including color methods, a @code{Logger}, a
9104@code{ProgressBar}, and a @code{String} subclass. The library also includes a
9105@code{Terminal} module which provides information about the current output
9106device.")
9107 (home-page "https://rubyworks.github.io/ansi/")
9108 (license license:bsd-2)))
9109
9110(define-public ruby-systemu
9111 (package
9112 (name "ruby-systemu")
9113 (version "2.6.5")
9114 (source
9115 (origin
9116 (method url-fetch)
9117 (uri (rubygems-uri "systemu" version))
9118 (sha256
9119 (base32
9120 "0gmkbakhfci5wnmbfx5i54f25j9zsvbw858yg3jjhfs5n4ad1xq1"))))
9121 (build-system ruby-build-system)
9122 (arguments
9123 `(#:phases
9124 (modify-phases %standard-phases
9125 (add-before 'check 'set-version
9126 (lambda _
9127 (setenv "VERSION" ,version)
9128 #t)))))
9129 (synopsis "Capture of stdout/stderr and handling of child processes")
9130 (description
9131 "Systemu can be used on any platform to return status, stdout, and stderr
9132of any command. Unlike other methods like @code{open3} and @code{popen4}
9133there is no danger of full pipes or threading issues hanging your process or
9134subprocess.")
9135 (home-page "https://github.com/ahoward/systemu")
9136 (license license:ruby)))
9137
9138(define-public ruby-bio-commandeer
9139 (package
9140 (name "ruby-bio-commandeer")
9141 (version "0.4.0")
9142 (source
9143 (origin
9144 (method url-fetch)
9145 (uri (rubygems-uri "bio-commandeer" version))
9146 (sha256
9147 (base32
9148 "0khpfw1yl5l3d2m8nxpkk32ybc4c3pa5hic3agd160jdfjjjnlni"))))
9149 (build-system ruby-build-system)
9150 (arguments
9151 `(#:phases
9152 (modify-phases %standard-phases
9153 (replace 'check
9154 ;; Run test without calling 'rake' so that jeweler is
9155 ;; not required as an input.
9156 (lambda _
9157 (invoke "rspec" "spec/bio-commandeer_spec.rb"))))))
9158 (propagated-inputs
9159 `(("ruby-bio-logger" ,ruby-bio-logger)
9160 ("ruby-systemu" ,ruby-systemu)))
9161 (native-inputs
9162 `(("bundler" ,bundler)
9163 ("ruby-rspec" ,ruby-rspec)))
9164 (synopsis "Simplified running of shell commands from within Ruby")
9165 (description
9166 "Bio-commandeer provides an opinionated method of running shell commands
9167from within Ruby. The advantage of bio-commandeer over other methods of
9168running external commands is that when something goes wrong, messages printed
9169to the @code{STDOUT} and @code{STDERR} streams are reported, giving extra
9170detail to ease debugging.")
9171 (home-page "https://github.com/wwood/bioruby-commandeer")
9172 (license license:expat)))
9173
9174(define-public ruby-rubytest
9175 (package
9176 (name "ruby-rubytest")
9177 (version "0.8.1")
9178 (source
9179 (origin
9180 (method url-fetch)
9181 (uri (rubygems-uri "rubytest" version))
9182 (sha256
9183 (base32
9184 "19jydsdnkl81i9dhdcr4dc34j0ilm68ff2ngnka1hi38xiw4p5qz"))))
9185 (build-system ruby-build-system)
9186 (arguments
9187 ;; Disable regular testing to break the cycle rubytest, qed, brass,
9188 ;; rubytest, as well as the cycle rubytest, qed, ansi, rubytest. Instead
9189 ;; simply test that the library can be require'd.
9190 `(#:phases
9191 (modify-phases %standard-phases
9192 (replace 'check
9193 (lambda _
9194 (invoke "ruby" "-Ilib" "-r" "rubytest"))))))
9195 (propagated-inputs
9196 `(("ruby-ansi" ,ruby-ansi)))
9197 (synopsis "Universal test harness for Ruby")
9198 (description
9199 "Rubytest is a testing meta-framework for Ruby. It can handle any
9200compliant test framework and can run tests from multiple frameworks in a
9201single pass.")
9202 (home-page "https://rubyworks.github.io/rubytest")
9203 (license license:bsd-2)))
9204
9205(define-public ruby-brass
9206 (package
9207 (name "ruby-brass")
9208 (version "1.2.1")
9209 (source
9210 (origin
9211 (method url-fetch)
9212 (uri (rubygems-uri "brass" version))
9213 (sha256
9214 (base32
9215 "154lp8rp1vmg60ri1j4cb8hqlw37z7bn575h899v8hzxwi11sxka"))))
9216 (build-system ruby-build-system)
9217 (arguments
9218 ;; Disable tests to break the cycle brass, lemon, ae, qed, brass.
9219 ;; Instead simply test that the library can be require'd.
9220 `(#:phases
9221 (modify-phases %standard-phases
9222 (replace 'check
9223 (lambda _
9224 (invoke "ruby" "-Ilib" "-r" "brass"))))))
9225 (synopsis "Basic foundational assertions framework")
9226 (description
9227 "BRASS (Bare-Metal Ruby Assertion System Standard) is a basic
9228foundational assertions framework for other assertion and test frameworks to
9229make use of.")
9230 (home-page "https://rubyworks.github.io/brass")
9231 (license license:bsd-2)))
9232
9233(define-public ruby-qed
9234 (package
9235 (name "ruby-qed")
9236 (version "2.9.2")
9237 (source
9238 (origin
9239 (method url-fetch)
9240 (uri (rubygems-uri "qed" version))
9241 (sha256
9242 (base32
9243 "03h4lmlxpcya8j7s2cnyscqlx8v3xl1xgsw5y1wk1scxcgz2vbmr"))))
9244 (build-system ruby-build-system)
9245 (arguments
9246 ;; Disable testing to break the cycle qed, ansi, qed, among others.
9247 ;; Instead simply test that the executable runs using --copyright.
9248 `(#:phases
9249 (modify-phases %standard-phases
9250 (replace 'check
9251 (lambda _
9252 (invoke "ruby" "-Ilib" "bin/qed" "--copyright"))))))
9253 (propagated-inputs
9254 `(("ruby-ansi" ,ruby-ansi)
9255 ("ruby-brass" ,ruby-brass)))
9256 (synopsis "Test framework utilizing literate programming techniques")
9257 (description
9258 "@dfn{Quality Ensured Demonstrations} (QED) is a test framework for
9259@dfn{Test Driven Development} (TDD) and @dfn{Behaviour Driven
9260Development} (BDD) utilizing Literate Programming techniques. QED sits
9261somewhere between lower-level testing tools like @code{Test::Unit} and
9262requirement specifications systems like Cucumber.")
9263 (home-page "https://rubyworks.github.io/qed")
9264 (license license:bsd-2)))
9265
9266(define-public ruby-que
9267 (package
9268 (name "ruby-que")
9269 (version "1.0.0.beta3")
9270 (source
9271 (origin
9272 (method url-fetch)
9273 (uri (rubygems-uri "que" version))
9274 (sha256
9275 (base32
9276 "0gr9pb814d4qj3ds98g6cjrdk7wv0yg8aqbm7c1lmgl87jkg8q04"))))
9277 (build-system ruby-build-system)
9278 (arguments
9279 '(#:tests? #f)) ; No included tests
9280 (synopsis "Job queue using PostgreSQL written in Ruby")
9281 (description
9282 "This package provides a job queue that uses PostgreSQL for storing jobs
9283and locking between worker processes.")
9284 (home-page "https://github.com/chanks/que")
9285 (license license:expat)))
9286
9287(define-public ruby-ae
9288 (package
9289 (name "ruby-ae")
9290 (version "1.8.2")
9291 (source
9292 (origin
9293 (method git-fetch)
9294 ;; Fetch from github so tests are included.
9295 (uri (git-reference
9296 (url "https://github.com/rubyworks/ae")
9297 (commit version)))
9298 (file-name (git-file-name name version))
9299 (sha256
9300 (base32
9301 "11299jj5ma8mi7b4majkyjy70y6zlqpgl8aql1c5lvfjavlpwmlp"))))
9302 (build-system ruby-build-system)
9303 (arguments
9304 `(#:phases
9305 (modify-phases %standard-phases
9306 (replace 'check
9307 (lambda _ (invoke "qed")))
9308 (add-before 'validate-runpath 'replace-broken-symlink
9309 (lambda* (#:key outputs #:allow-other-keys)
9310 (let* ((out (assoc-ref outputs "out"))
9311 (file (string-append
9312 out "/lib/ruby/vendor_ruby/gems/ae-"
9313 ,version "/lib/ae.yml")))
9314 ;; XXX: This symlink is broken since ruby 2.4.
9315 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
9316 (delete-file file)
9317 (symlink "../.index" file)
9318 #t))))))
9319 (propagated-inputs
9320 `(("ruby-ansi" ,ruby-ansi)))
9321 (native-inputs
9322 `(("ruby-qed" ,ruby-qed)))
9323 (synopsis "Assertions library")
9324 (description
9325 "Assertive Expressive (AE) is an assertions library specifically designed
9326for reuse by other test frameworks.")
9327 (home-page "https://rubyworks.github.io/ae/")
9328 (license license:bsd-2)))
9329
9330(define-public ruby-lemon
9331 (package
9332 (name "ruby-lemon")
9333 (version "0.9.1")
9334 (source
9335 (origin
9336 (method url-fetch)
9337 (uri (rubygems-uri "lemon" version))
9338 (sha256
9339 (base32
9340 "0gqhpgjavgpvx23rqpfqcv3d5bs8gc7lr9yvj8kxgp7mfbdc2jcm"))))
9341 (build-system ruby-build-system)
9342 (arguments
9343 `(#:phases
9344 (modify-phases %standard-phases
9345 (replace 'check (lambda _ (invoke "qed"))))))
9346 (propagated-inputs
9347 `(("ruby-ae" ,ruby-ae)
9348 ("ruby-ansi" ,ruby-ansi)
9349 ("ruby-rubytest" ,ruby-rubytest)))
9350 (native-inputs
9351 `(("ruby-qed" ,ruby-qed)))
9352 (synopsis "Test framework correlating code structure and test unit")
9353 (description
9354 "Lemon is a unit testing framework that enforces highly formal
9355case-to-class and unit-to-method test construction. This enforcement can help
9356focus concern on individual units of behavior.")
9357 (home-page "https://rubyworks.github.io/lemon")
9358 (license license:bsd-2)))
9359
9360(define-public ruby-rubytest-cli
9361 (package
9362 (name "ruby-rubytest-cli")
9363 (version "0.2.0")
9364 (source
9365 (origin
9366 (method url-fetch)
9367 (uri (rubygems-uri "rubytest-cli" version))
9368 (sha256
9369 (base32
9370 "0n7hv4k1ba4fm3i98c6ydbsqhkxgbp52mhi70ba1x3mqzfvk438p"))))
9371 (build-system ruby-build-system)
9372 (arguments
9373 `(#:tests? #f)) ; no tests
9374 (propagated-inputs
9375 `(("ruby-ansi" ,ruby-ansi)
9376 ("ruby-rubytest" ,ruby-rubytest)))
9377 (synopsis "Command-line interface for rubytest")
9378 (description
9379 "Rubytest CLI is a command-line interface for running tests for
9380Rubytest-based test frameworks. It provides the @code{rubytest} executable.")
9381 (home-page "https://rubyworks.github.io/rubytest-cli")
9382 (license license:bsd-2)))
9383
9384(define-public ruby-hashery
9385 (package
9386 (name "ruby-hashery")
9387 (version "2.1.2")
9388 (source
9389 (origin
9390 (method url-fetch)
9391 (uri (rubygems-uri "hashery" version))
9392 (sha256
9393 (base32
9394 "0qj8815bf7q6q7llm5rzdz279gzmpqmqqicxnzv066a020iwqffj"))))
9395 (build-system ruby-build-system)
9396 (arguments
9397 `(#:phases
9398 (modify-phases %standard-phases
9399 (replace 'check
9400 (lambda _
9401 (invoke "qed")
9402 (invoke "rubytest" "-Ilib" "-Itest" "test/"))))))
9403 (native-inputs
9404 `(("ruby-rubytest-cli" ,ruby-rubytest-cli)
9405 ("ruby-qed" ,ruby-qed)
9406 ("ruby-lemon" ,ruby-lemon)))
9407 (synopsis "Hash-like classes with extra features")
9408 (description
9409 "The Hashery is a tight collection of @code{Hash}-like classes.
9410Included are the auto-sorting @code{Dictionary} class, the efficient
9411@code{LRUHash}, the flexible @code{OpenHash} and the convenient
9412@code{KeyHash}. Nearly every class is a subclass of the @code{CRUDHash} which
9413defines a CRUD (Create, Read, Update and Delete) model on top of Ruby's
9414standard @code{Hash} making it possible to subclass and augment to fit any
9415specific use case.")
9416 (home-page "https://rubyworks.github.io/hashery")
9417 (license license:bsd-2)))
9418
9419(define-public ruby-rc4
9420 (package
9421 (name "ruby-rc4")
9422 (version "0.1.5")
9423 (source
9424 (origin
9425 (method url-fetch)
9426 (uri (rubygems-uri "ruby-rc4" version))
9427 (sha256
9428 (base32
9429 "00vci475258mmbvsdqkmqadlwn6gj9m01sp7b5a3zd90knil1k00"))))
9430 (build-system ruby-build-system)
9431 (arguments
9432 `(#:phases
9433 (modify-phases %standard-phases
9434 (replace 'check
9435 (lambda _
9436 (invoke "rspec" "spec/rc4_spec.rb"))))))
9437 (native-inputs
9438 `(("ruby-rspec" ,ruby-rspec-2)))
9439 (synopsis "Implementation of the RC4 algorithm")
9440 (description
9441 "RubyRC4 is a pure Ruby implementation of the RC4 algorithm.")
9442 (home-page "https://github.com/caiges/Ruby-RC4")
9443 (license license:expat)))
9444
9445(define-public ruby-afm
9446 (package
9447 (name "ruby-afm")
9448 (version "0.2.2")
9449 (source
9450 (origin
9451 (method url-fetch)
9452 (uri (rubygems-uri "afm" version))
9453 (sha256
9454 (base32
9455 "06kj9hgd0z8pj27bxp2diwqh6fv7qhwwm17z64rhdc4sfn76jgn8"))))
9456 (build-system ruby-build-system)
9457 (native-inputs
9458 `(("bundler" ,bundler)))
9459 (synopsis "Read Adobe Font Metrics (afm) files")
9460 (description
9461 "This library provides methods to read @dfn{Adobe Font Metrics} (afm)
9462files and use the data therein.")
9463 (home-page "https://github.com/halfbyte/afm")
9464 (license license:expat)))
9465
9466(define-public ruby-ascii85
9467 (package
9468 (name "ruby-ascii85")
9469 (version "1.0.3")
9470 (source
9471 (origin
9472 (method url-fetch)
9473 (uri (rubygems-uri "Ascii85" version))
9474 (sha256
9475 (base32
9476 "0658m37jjjn6drzqg1gk4p6c205mgp7g1jh2d00n4ngghgmz5qvs"))))
9477 (build-system ruby-build-system)
9478 (native-inputs
9479 `(("bundler" ,bundler)))
9480 (synopsis "Encode and decode Ascii85 binary-to-text encoding")
9481 (description
9482 "This library provides methods to encode and decode Ascii85
9483binary-to-text encoding. The main modern use of Ascii85 is in PostScript and
9484@dfn{Portable Document Format} (PDF) file formats.")
9485 (home-page "https://github.com/datawraith/ascii85gem")
9486 (license license:expat)))
9487
9488(define-public ruby-ttfunk
9489 (package
9490 (name "ruby-ttfunk")
9491 (version "1.6.2.1")
9492 (source
9493 (origin
9494 (method git-fetch)
9495 ;; fetch from github as the gem does not contain testing code
9496 (uri (git-reference
9497 (url "https://github.com/prawnpdf/ttfunk")
9498 (commit version)))
9499 (file-name (git-file-name name version))
9500 (sha256
9501 (base32
9502 "0rsf4j6s97wbcnjbvmmh6xrc7imw4g9lrlcvn945wh400lc8r53z"))))
9503 (build-system ruby-build-system)
9504 (arguments
9505 `(#:test-target "spec"
9506 #:phases
9507 (modify-phases %standard-phases
9508 (add-before 'build 'remove-ssh
9509 (lambda _
9510 ;; remove dependency on an ssh key pair that doesn't exist
9511 (substitute* "ttfunk.gemspec"
9512 (("spec.signing_key.*") ""))
9513 #t))
9514 (add-before 'check 'remove-rubocop
9515 (lambda _
9516 ;; remove rubocop as a dependency as not needed for testing
9517 (substitute* "ttfunk.gemspec"
9518 (("spec.add_development_dependency\\('rubocop'.*") ""))
9519 (substitute* "Rakefile"
9520 (("require 'rubocop/rake_task'") "")
9521 (("RuboCop::RakeTask.new") ""))
9522 #t)))))
9523 (native-inputs
9524 `(("ruby-rspec" ,ruby-rspec)
9525 ("ruby-yard" ,ruby-yard)
9526 ("bundler" ,bundler)))
9527 (synopsis "Font metrics parser for the Prawn PDF generator")
9528 (description
9529 "TTFunk is a TrueType font parser written in pure Ruby. It is used as
9530part of the Prawn PDF generator.")
9531 (home-page "https://github.com/prawnpdf/ttfunk")
9532 ;; From the README: "Matz's terms for Ruby, GPLv2, or GPLv3. See LICENSE
9533 ;; for details."
9534 (license %prawn-project-licenses)))
9535
9536(define-public ruby-puma
9537 (package
9538 (name "ruby-puma")
9539 (version "3.9.1")
9540 (source
9541 (origin
9542 (method git-fetch)
9543 ;; Fetch from GitHub because distributed gem does not contain tests.
9544 (uri (git-reference
9545 (url "https://github.com/puma/puma")
9546 (commit (string-append "v" version))))
9547 (file-name (git-file-name name version))
9548 (sha256
9549 (base32
9550 "1kj75k81iik3aj73pkc9ixj9rwf95ipkyma65n28m64dgw02qi1f"))))
9551 (build-system ruby-build-system)
9552 (arguments
9553 `(#:tests? #f ; Tests require an out-dated version of minitest.
9554 #:phases
9555 (modify-phases %standard-phases
9556 (add-before 'build 'fix-gemspec
9557 (lambda _
9558 (substitute* "puma.gemspec"
9559 (("git ls-files") "find * |sort"))
9560 #t)))))
9561 (synopsis "Simple, concurrent HTTP server for Ruby/Rack")
9562 (description
9563 "Puma is a simple, fast, threaded, and highly concurrent HTTP 1.1 server
9564for Ruby/Rack applications. Puma is intended for use in both development and
9565production environments. In order to get the best throughput, it is highly
9566recommended that you use a Ruby implementation with real threads like Rubinius
9567or JRuby.")
9568 (home-page "https://puma.io/")
9569 (license license:expat)))
9570
9571(define-public ruby-hoe-git
9572 (package
9573 (name "ruby-hoe-git")
9574 (version "1.6.0")
9575 (source
9576 (origin
9577 (method url-fetch)
9578 (uri (rubygems-uri "hoe-git" version))
9579 (sha256
9580 (base32
9581 "10jmmbjm0lkglwxbn4rpqghgg1ipjxrswm117n50adhmy8yij650"))))
9582 (build-system ruby-build-system)
9583 (propagated-inputs
9584 `(("ruby-hoe" ,ruby-hoe)))
9585 (synopsis "Hoe plugins for tighter Git integration")
9586 (description
9587 "This package provides a set of Hoe plugins for tighter Git integration.
9588It provides tasks to automate release tagging and pushing and changelog
9589generation.")
9590 (home-page "https://github.com/jbarnette/hoe-git")
9591 (license license:expat)))
9592
9593(define-public ruby-sequel
9594 (package
9595 (name "ruby-sequel")
9596 (version "4.49.0")
9597 (source
9598 (origin
9599 (method url-fetch)
9600 (uri (rubygems-uri "sequel" version))
9601 (sha256
9602 (base32
9603 "010p4a60npppvgbyw7pq5xia8aydpgxdlhh3qjm2615kwjsw3fl8"))))
9604 (build-system ruby-build-system)
9605 (arguments
9606 '(#:tests? #f)) ; Avoid dependency loop with ruby-minitest-hooks.
9607 (synopsis "Database toolkit for Ruby")
9608 (description "Sequel provides thread safety, connection pooling and a
9609concise DSL for constructing SQL queries and table schemas. It includes a
9610comprehensive ORM layer for mapping records to Ruby objects and handling
9611associated records.")
9612 (home-page "https://sequel.jeremyevans.net")
9613 (license license:expat)))
9614
9615(define-public ruby-timecop
9616 (package
9617 (name "ruby-timecop")
9618 (version "0.9.1")
9619 (source
9620 (origin
9621 (method url-fetch)
9622 (uri (rubygems-uri "timecop" version))
9623 (sha256
9624 (base32
9625 "0d7mm786180v4kzvn1f77rhfppsg5n0sq2bdx63x9nv114zm8jrp"))))
9626 (build-system ruby-build-system)
9627 (arguments
9628 `(#:phases
9629 (modify-phases %standard-phases
9630 (add-before 'check 'set-check-rubylib
9631 (lambda _
9632 ;; Set RUBYLIB so timecop tests finds its own lib.
9633 (setenv "RUBYLIB" "lib")
9634 #t)))))
9635 (native-inputs
9636 `(("bundler" ,bundler)
9637 ("ruby-minitest-rg" ,ruby-minitest-rg)
9638 ("ruby-mocha" ,ruby-mocha)
9639 ("ruby-activesupport" ,ruby-activesupport)))
9640 (synopsis "Test mocks for time-dependent functions")
9641 (description
9642 "Timecop provides \"time travel\" and \"time freezing\" capabilities,
9643making it easier to test time-dependent code. It provides a unified method to
9644mock @code{Time.now}, @code{Date.today}, and @code{DateTime.now} in a single
9645call.")
9646 (home-page "https://github.com/travisjeffery/timecop")
9647 (license license:expat)))
9648
9649(define-public ruby-concurrent
9650 (package
9651 (name "ruby-concurrent")
9652 (version "1.1.5")
9653 (source
9654 (origin
9655 (method git-fetch)
9656 ;; Download from GitHub because the rubygems version does not contain
9657 ;; Rakefile.
9658 (uri (git-reference
9659 (url "https://github.com/ruby-concurrency/concurrent-ruby")
9660 (commit (string-append "v" version))))
9661 (file-name (git-file-name name version))
9662 (sha256
9663 (base32
9664 "193q2k47vk7qdvv9hlhmmdxgy91xl4imapyk1ijdg9vgf46knyzj"))))
9665 (build-system ruby-build-system)
9666 (arguments
9667 `(#:test-target "ci"
9668 #:phases
9669 (modify-phases %standard-phases
9670 (add-before 'replace-git-ls-files 'remove-extra-gemspecs
9671 (lambda _
9672 ;; Delete extra gemspec files so 'first-gemspec' chooses the
9673 ;; correct one.
9674 (delete-file "concurrent-ruby-edge.gemspec")
9675 (delete-file "concurrent-ruby-ext.gemspec")
9676 #t))
9677 (replace 'replace-git-ls-files
9678 (lambda _
9679 ;; XXX: The default substitution made by this phase is not fully
9680 ;; compatible with "git ls-files". The latter produces file names
9681 ;; such as "lib/foo", whereas ruby-build-system uses "find . [...]"
9682 ;; which gives "./lib/foo". That difference in turn breaks the
9683 ;; comparison against a glob pattern in this script.
9684 (substitute* "concurrent-ruby.gemspec"
9685 (("git ls-files") "find * -type f | sort"))
9686 #t))
9687 (add-before 'build 'remove-jar-from-gemspec
9688 (lambda _
9689 ;; The gemspec wants to include a JAR file that we do not build
9690 ;; nor need.
9691 (substitute* "concurrent-ruby.gemspec"
9692 (("'lib/concurrent/concurrent_ruby.jar'")
9693 ""))
9694 #t))
9695 (add-before 'build 'remove-rake_compiler_dock-dependency
9696 (lambda _
9697 ;; This library is only used when building for non-MRI targets.
9698 (substitute* "Rakefile"
9699 (("require 'rake_compiler_dock'")
9700 ""))
9701 #t))
9702 (add-before 'check 'remove-timecop-dependency
9703 ;; Remove timecop-dependent tests as having timecop as a depedency
9704 ;; causes circular depedencies.
9705 (lambda _
9706 (delete-file "spec/concurrent/executor/timer_set_spec.rb")
9707 (delete-file "spec/concurrent/scheduled_task_spec.rb")
9708 #t)))))
9709 (native-inputs
9710 `(("ruby-rake-compiler" ,ruby-rake-compiler)
9711 ("ruby-rspec" ,ruby-rspec)))
9712 (synopsis "Concurrency tools for Ruby")
9713 (description
9714 "This library provides modern concurrency tools including agents,
9715futures, promises, thread pools, actors, supervisors, and more. It is
9716inspired by Erlang, Clojure, Go, JavaScript, actors and classic concurrency
9717patterns.")
9718 (home-page "http://www.concurrent-ruby.com")
9719 (license license:expat)))
9720
9721(define-public ruby-pkg-config
9722 (package
9723 (name "ruby-pkg-config")
9724 (version "1.2.5")
9725 (source
9726 (origin
9727 (method url-fetch)
9728 (uri (rubygems-uri "pkg-config" version))
9729 (sha256
9730 (base32
9731 "056mzqdh4yjznsg36fi0xiq76f24vxlhzh2n4az919l3x5k318ar"))))
9732 (build-system ruby-build-system)
9733 (arguments
9734 ;; Tests require extra files not included in the gem.
9735 `(#:tests? #f))
9736 (synopsis "Detect libraries for compiling Ruby native extensions")
9737 (description
9738 "@code{pkg-config} can be used in your extconf.rb to properly detect need
9739libraries for compiling Ruby native extensions.")
9740 (home-page "https://github.com/ruby-gnome2/pkg-config")
9741 (license license:lgpl2.0+)))
9742
9743(define-public ruby-net-http-digest-auth
9744 (package
9745 (name "ruby-net-http-digest-auth")
9746 (version "1.4.1")
9747 (source
9748 (origin
9749 (method url-fetch)
9750 (uri (rubygems-uri "net-http-digest_auth" version))
9751 (sha256
9752 (base32
9753 "1nq859b0gh2vjhvl1qh1zrk09pc7p54r9i6nnn6sb06iv07db2jb"))))
9754 (build-system ruby-build-system)
9755 (native-inputs
9756 `(("ruby-hoe" ,ruby-hoe)))
9757 (synopsis "RFC 2617 HTTP digest authentication library")
9758 (description
9759 "This library implements HTTP's digest authentication scheme based on
9760RFC 2617. This enables the use of the digest authentication scheme instead
9761of the more insecure basic authentication scheme.")
9762 (home-page "https://github.com/drbrain/net-http-digest_auth")
9763 (license license:expat)))
9764
9765(define-public ruby-mail
9766 (package
9767 (name "ruby-mail")
9768 (version "2.6.6")
9769 (source
9770 (origin
9771 (method url-fetch)
9772 (uri (rubygems-uri "mail" version))
9773 (sha256
9774 (base32
9775 "0d7lhj2dw52ycls6xigkfz6zvfhc6qggply9iycjmcyj9760yvz9"))))
9776 (build-system ruby-build-system)
9777 (propagated-inputs
9778 `(("ruby-mime-types" ,ruby-mime-types)))
9779 (arguments
9780 ;; Tests require extra gems not included in the Gemfile.
9781 ;; XXX: Try enabling this for the next version with mini_mime.
9782 `(#:tests? #f))
9783 (synopsis "Mail library for Ruby")
9784 (description
9785 "Mail is an internet library for Ruby that is designed to handle email
9786generation, parsing and sending. The purpose of this library is to provide
9787a single point of access to handle all email functions, including sending
9788and receiving emails. All network type actions are done through proxy
9789methods to @code{Net::SMTP}, @code{Net::POP3} etc.
9790
9791Mail has been designed with a very simple object oriented system that
9792really opens up the email messages you are parsing, if you know what you
9793are doing, you can fiddle with every last bit of your email directly.")
9794 (home-page "https://github.com/mikel/mail")
9795 (license license:expat)))
9796
9797(define-public ruby-mathn
9798 (package
9799 (name "ruby-mathn")
9800 (version "0.1.0")
9801 (source
9802 (origin
9803 (method url-fetch)
9804 (uri (rubygems-uri "mathn" version))
9805 (sha256
9806 (base32
9807 "1wn812llln9jzgybz2d7536q39z3gi99i6fi0j1dapcpzvhgrr0p"))))
9808 (build-system ruby-build-system)
9809 (native-inputs
9810 `(("bundler" ,bundler)
9811 ("ruby-rake-compiler" ,ruby-rake-compiler)))
9812 (synopsis "Extends math operations for increased precision")
9813 (description
9814 "This gem makes mathematical operations more precise in Ruby and
9815integrates other mathematical standard libraries. Prior to Ruby 2.5,
9816@code{mathn} was part of the Ruby standard library.")
9817 (home-page "https://github.com/ruby/mathn")
9818 (license license:bsd-2)))
9819
9820(define-public ruby-code-statistics
9821 (package
9822 (name "ruby-code-statistics")
9823 (version "0.2.13")
9824 (source
9825 (origin
9826 (method url-fetch)
9827 (uri (rubygems-uri "code_statistics" version))
9828 (sha256
9829 (base32
9830 "07rdpsbwbmh4vp8nxyh308cj7am2pbrfhv9v5xr2d5gq8hnnsm93"))))
9831 (build-system ruby-build-system)
9832 (arguments
9833 `(#:tests? #f)) ; Not all test code is included in gem.
9834 (synopsis "Port of the rails 'rake stats' method")
9835 (description
9836 "This gem is a port of the rails 'rake stats' method so it can be made
9837more robust and work for non rails projects.")
9838 (home-page "https://github.com/danmayer/code_statistics")
9839 (license license:expat)))
9840
9841(define-public ruby-rubypants
9842 (package
9843 (name "ruby-rubypants")
9844 (version "0.6.0")
9845 (source (origin
9846 (method url-fetch)
9847 (uri (rubygems-uri "rubypants" version))
9848 (sha256
9849 (base32
9850 "0xpqkslan2wkyal2h9qhplkr5d4sdn7q6csigrhnljjpp8j4qfsh"))))
9851 (build-system ruby-build-system)
9852 (arguments
9853 '(#:tests? #f)) ; need Codecov
9854 (synopsis "Port of the smart-quotes library SmartyPants")
9855 (description
9856 "RubyPants is a Ruby port of the smart-quotes library SmartyPants. The
9857original SmartyPants is a web publishing plug-in for Movable Type, Blosxom,
9858and BBEdit that easily translates plain ASCII punctuation characters into
9859smart typographic punctuation HTML entities.")
9860 (home-page "https://github.com/jmcnevin/rubypants")
9861 (license license:bsd-2)))
9862
9863(define-public ruby-org-ruby
9864 (package
9865 (name "ruby-org-ruby")
9866 (version "0.9.12")
9867 (source (origin
9868 (method url-fetch)
9869 (uri (rubygems-uri "org-ruby" version))
9870 (sha256
9871 (base32
9872 "0x69s7aysfiwlcpd9hkvksfyld34d8kxr62adb59vjvh8hxfrjwk"))))
9873 (build-system ruby-build-system)
9874 (arguments
9875 '(#:tests? #f)) ; no rakefile
9876 (propagated-inputs
9877 `(("ruby-rubypants" ,ruby-rubypants)))
9878 (synopsis "Org-mode parser written in Ruby")
9879 (description
9880 "Org-ruby is an org-mode parser written in Ruby. The most significant
9881thing this library does today is convert org-mode files to HTML or Textile or
9882Markdown.")
9883 (home-page "https://github.com/wallyqs/org-ruby")
9884 (license license:expat)))
9885
9886(define-public ruby-rake
9887 (package
9888 (name "ruby-rake")
9889 (version "13.0.1")
9890 (source
9891 (origin
9892 (method url-fetch)
9893 (uri (rubygems-uri "rake" version))
9894 (sha256
9895 (base32
9896 "0w6qza25bq1s825faaglkx1k6d59aiyjjk3yw3ip5sb463mhhai9"))))
9897 (build-system ruby-build-system)
9898 (native-inputs
9899 `(("bundler" ,bundler)))
9900 (synopsis "Rake is a Make-like program implemented in Ruby")
9901 (description
9902 "Rake is a Make-like program where tasks and dependencies are specified
9903in standard Ruby syntax.")
9904 (home-page "https://github.com/ruby/rake")
9905 (license license:expat)))
9906
9907(define-public ruby-childprocess
9908 (package
9909 (name "ruby-childprocess")
9910 (version "3.0.0")
9911 (source
9912 (origin
9913 (method url-fetch)
9914 (uri (rubygems-uri "childprocess" version))
9915 (sha256
9916 (base32
9917 "1ic028k8xgm2dds9mqnvwwx3ibaz32j8455zxr9f4bcnviyahya5"))))
9918 (build-system ruby-build-system)
9919 (arguments
9920 `(#:tests? #f))
9921 (native-inputs
9922 `(("bundler" ,bundler)
9923 ("ruby-rspec" ,ruby-rspec)))
9924 (propagated-inputs
9925 `(("ruby-ffi" ,ruby-ffi)))
9926 (synopsis "Control external programs running in the background, in Ruby")
9927 (description "@code{childprocess} provides a gem to control external
9928programs running in the background, in Ruby.")
9929 (home-page "https://github.com/enkessler/childprocess")
9930 (license license:expat)))
9931
9932(define-public ruby-public-suffix
9933 (package
9934 (name "ruby-public-suffix")
9935 (version "4.0.5")
9936 (source (origin
9937 (method url-fetch)
9938 (uri (rubygems-uri "public_suffix" version))
9939 (sha256
9940 (base32
9941 "0vywld400fzi17cszwrchrzcqys4qm6sshbv73wy5mwcixmrgg7g"))))
9942 (build-system ruby-build-system)
9943 (arguments
9944 '(#:phases
9945 (modify-phases %standard-phases
9946 ;; Remove the requirement on Rubocop, as it isn't useful to run, and
9947 ;; including it as an input can lead to circular dependencies.
9948 (add-after 'unpack 'remove-rubocop-from-Rakefile
9949 (lambda _
9950 (substitute* "Rakefile"
9951 (("require \"rubocop/rake\\_task\"") "")
9952 (("RuboCop::RakeTask\\.new") ""))
9953 #t)))))
9954 (native-inputs
9955 `(("bundler" ,bundler)
9956 ("ruby-yard" ,ruby-yard)
9957 ("ruby-mocha" ,ruby-mocha)
9958 ("ruby-minitest-reporters" ,ruby-minitest-reporters)))
9959 (home-page "https://simonecarletti.com/code/publicsuffix-ruby/")
9960 (synopsis "Domain name parser")
9961 (description "The gem @code{public_suffix} is a domain name parser,
9962written in Ruby, and based on the @dfn{Public Suffix List}. A public suffix
9963is one under which Internet users can (or historically could) directly
9964register names. Some examples of public suffixes are @code{.com},
9965@code{.co.uk} and @code{pvt.k12.ma.us}. The Public Suffix List is a list of
9966all known public suffixes.")
9967 (license license:expat)))
9968
9969(define-public ruby-addressable
9970 (package
9971 (name "ruby-addressable")
9972 (version "2.7.0")
9973 (source (origin
9974 (method url-fetch)
9975 (uri (rubygems-uri "addressable" version))
9976 (sha256
9977 (base32
9978 "1fvchp2rhp2rmigx7qglf69xvjqvzq7x0g49naliw29r2bz656sy"))))
9979 (build-system ruby-build-system)
9980 (arguments
9981 '(#:test-target "spec"
9982 #:phases
9983 (modify-phases %standard-phases
9984 (add-after 'unpack 'remove-unnecessary-dependencies-from-Gemfile
9985 (lambda _
9986 (substitute* "Gemfile"
9987 (("git: 'https://github.com/sporkmonger/rack-mount.git',") "")
9988 ((".*launchy.*") "")
9989 ((".*rake.*") "gem 'rake'\n")
9990 ((".*redcarpet.*") ""))
9991 #t))
9992 (add-before 'check 'delete-network-dependent-test
9993 (lambda _
9994 (delete-file "spec/addressable/net_http_compat_spec.rb")
9995 #t)))))
9996 (native-inputs
9997 `(("ruby-rspec" ,ruby-rspec)
9998 ("bundler" ,bundler)
9999 ("ruby-idn-ruby" ,ruby-idn-ruby)
10000 ("ruby-sporkmonger-rack-mount" ,ruby-sporkmonger-rack-mount)
10001 ("ruby-rspec-its" ,ruby-rspec-its-minimal)
10002 ("ruby-yard" ,ruby-yard)
10003 ("ruby-simplecov" ,ruby-simplecov)))
10004 (propagated-inputs
10005 `(("ruby-public-suffix" ,ruby-public-suffix)))
10006 (home-page "https://github.com/sporkmonger/addressable")
10007 (synopsis "Alternative URI implementation")
10008 (description "Addressable is a replacement for the URI implementation that
10009is part of Ruby's standard library. It more closely conforms to RFC 3986,
10010RFC 3987, and RFC 6570 (level 4), providing support for IRIs and URI templates.")
10011 (license license:asl2.0)))
10012
10013(define-public ruby-colorize
10014 (package
10015 (name "ruby-colorize")
10016 (version "0.8.1")
10017 (source (origin
10018 (method url-fetch)
10019 (uri (rubygems-uri "colorize" version))
10020 (sha256
10021 (base32
10022 "133rqj85n400qk6g3dhf2bmfws34mak1wqihvh3bgy9jhajw580b"))))
10023 (build-system ruby-build-system)
10024 (arguments
10025 '(#:phases (modify-phases %standard-phases
10026 (add-before 'check 'remove-codeclimate-dependency
10027 (lambda _
10028 (substitute* "test/test_colorize.rb"
10029 ;; Do not hook the tests into the online CodeClimate
10030 ;; service which is unnecessary for these tests.
10031 (("require 'codeclimate-test-reporter'")
10032 "")
10033 (("CodeClimate.*") ""))
10034 #t)))))
10035 (synopsis "Add color effects to the @code{String} class")
10036 (description
10037 "This package extends the @code{String} class and adds a
10038@code{ColorizedString} with methods to set text color, background color,
10039and text effects.")
10040 (home-page "https://github.com/fazibear/colorize")
10041 (license license:gpl2+)))
10042
10043(define-public ruby-colorator
10044 (package
10045 (name "ruby-colorator")
10046 (version "1.1.0")
10047 (source (origin
10048 (method url-fetch)
10049 (uri (rubygems-uri "colorator" version))
10050 (sha256
10051 (base32
10052 "0f7wvpam948cglrciyqd798gdc6z3cfijciavd0dfixgaypmvy72"))))
10053 (build-system ruby-build-system)
10054 (arguments
10055 ;; No test target
10056 `(#:tests? #f))
10057 (home-page "http://octopress.org/colorator/")
10058 (synopsis "Terminal color library")
10059 (description "Colorator is a Ruby gem that helps you colorize your text
10060for the terminal.")
10061 (license license:expat)))
10062
10063(define-public ruby-command-line-reporter
10064 (package
10065 (name "ruby-command-line-reporter")
10066 (version "4.0.1")
10067 (source (origin
10068 (method url-fetch)
10069 (uri (rubygems-uri "command_line_reporter" version))
10070 (sha256
10071 (base32
10072 "1l0zxkh5n9dxfw46lpkg416ljpldlq1bgdhqh0d118dk338nz4ll"))))
10073 (build-system ruby-build-system)
10074 (arguments
10075 ;; No Rakefile
10076 `(#:tests? #f
10077 #:phases
10078 (modify-phases %standard-phases
10079 (add-before 'build 'fix-dependencies
10080 (lambda _
10081 (substitute* ".gemspec"
10082 ;; colored is unmaintained
10083 (("colored") "colorator")
10084 ;; colorator version
10085 (("= 1.2") "= 1.1"))
10086 #t)))))
10087 (propagated-inputs `(("ruby-colorator" ,ruby-colorator)))
10088 (home-page "https://github.com/wbailey/command_line_reporter")
10089 (synopsis "Report production while executing Ruby scripts")
10090 (description "This gem provides a DSL that makes it easy to write reports
10091of various types in ruby. It eliminates the need to litter your source with
10092puts statements, instead providing a more readable, expressive interface to
10093your application.")
10094 (license license:asl2.0)))
10095
10096(define-public ruby-command-line-reporter-3
10097 (package
10098 (inherit ruby-command-line-reporter)
10099 (version "3.3.6")
10100 (source (origin
10101 (method url-fetch)
10102 (uri (rubygems-uri "command_line_reporter" version))
10103 (sha256
10104 (base32
10105 "1h39zqqxp3k4qk49ajpx0jps1vmvxgkh43mqkb6znk583bl0fv71"))))))
10106
10107(define-public ruby-kpeg
10108 (package
10109 (name "ruby-kpeg")
10110 (version "1.1.0")
10111 (source
10112 (origin
10113 (method url-fetch)
10114 (uri (rubygems-uri "kpeg" version))
10115 (sha256
10116 (base32
10117 "0x2kpfrcagj931masm5y1kwbnc6nxl60cqdcd3lyd1d2hz7kzlia"))))
10118 (build-system ruby-build-system)
10119 (native-inputs
10120 `(("ruby-hoe" ,ruby-hoe)))
10121 (synopsis "PEG library for Ruby")
10122 (description "KPeg is a simple PEG library for Ruby. It provides an API as
10123well as native grammar to build the grammar. KPeg supports direct left
10124recursion of rules via the
10125@uref{http://www.vpri.org/pdf/tr2008003_experimenting.pdf,OMeta memoization}
10126technique.")
10127 (home-page "https://github.com/evanphx/kpeg")
10128 (license license:expat)))
10129
10130(define-public ruby-rdoc
10131 (package
10132 (name "ruby-rdoc")
10133 (version "6.2.0")
10134 (source
10135 (origin
10136 (method git-fetch)
10137 (uri (git-reference
10138 (url "https://github.com/ruby/rdoc")
10139 (commit (string-append "v" version))))
10140 (file-name (git-file-name name version))
10141 (sha256
10142 (base32
10143 "0dhk29nidv93b5vnjvlm9gcixgn4i0jcyzrgxdk6pdg019bw4cj6"))))
10144 (build-system ruby-build-system)
10145 (arguments
10146 `(#:phases
10147 (modify-phases %standard-phases
10148 (add-after 'unpack 'patch-gemspec
10149 ;; TODO: Remove after next release is tagged.
10150 (lambda _
10151 (substitute* "rdoc.gemspec"
10152 (("\"lib/rdoc/generator/template/darkfish/js/\
10153jquery\\.js\", ") ""))
10154 #t))
10155 (add-before 'build 'generate
10156 ;; 'gem build' doesn't honor Rakefile dependencies (see:
10157 ;; https://github.com/ruby/rdoc/issues/432#issuecomment-650808977).
10158 (lambda _
10159 (invoke "rake" "generate"))))))
10160 (native-inputs
10161 `(("bundler" ,bundler)
10162 ("ruby-kpeg" ,ruby-kpeg)
10163 ("ruby-racc" ,ruby-racc)
10164 ("ruby-rubocop" ,ruby-rubocop)))
10165 (home-page "https://ruby.github.io/rdoc/")
10166 (synopsis "HTML and command-line documentation utility")
10167 (description "RDoc produces HTML and command-line documentation for Ruby
10168projects. RDoc includes the +rdoc+ and +ri+ tools for generating and displaying
10169documentation from the command-line.")
10170 (license license:gpl2+)))
10171
10172(define-public ruby-sass-listen
10173 (package
10174 (name "ruby-sass-listen")
10175 (version "4.0.0")
10176 (source (origin
10177 (method url-fetch)
10178 (uri (rubygems-uri "sass-listen" version))
10179 (sha256
10180 (base32
10181 "0xw3q46cmahkgyldid5hwyiwacp590zj2vmswlll68ryvmvcp7df"))))
10182 (build-system ruby-build-system)
10183 (arguments
10184 ;; No test target
10185 `(#:tests? #f))
10186 (propagated-inputs
10187 `(("ruby-rb-fsevent" ,ruby-rb-fsevent)
10188 ("ruby-rb-inotify" ,ruby-rb-inotify)))
10189 (home-page "https://github.com/sass/listen")
10190 (synopsis "File modification notification library")
10191 (description "The Listen gem listens to file modifications and notifies you
10192about the changes.")
10193 (license license:expat)))
10194
10195(define-public ruby-terminfo
10196 (package
10197 (name "ruby-terminfo")
10198 (version "0.1.1")
10199 (source
10200 (origin
10201 (method url-fetch)
10202 (uri (rubygems-uri "ruby-terminfo" version))
10203 (sha256
10204 (base32
10205 "0rl4ic5pzvrpgd42z0c1s2n3j39c9znksblxxvmhkzrc0ckyg2cm"))))
10206 (build-system ruby-build-system)
10207 (arguments
10208 `(#:test-target "test"
10209 ;; Rakefile requires old packages and would need modification to
10210 ;; work with current software.
10211 #:tests? #f))
10212 (inputs
10213 `(("ncurses" ,ncurses)))
10214 (native-inputs
10215 `(("ruby-rubygems-tasks" ,ruby-rubygems-tasks)
10216 ("ruby-rdoc" ,ruby-rdoc)))
10217 (home-page "http://www.a-k-r.org/ruby-terminfo/")
10218 (synopsis "Terminfo binding for Ruby")
10219 (description "Ruby-terminfo provides terminfo binding for Ruby.")
10220 (license license:bsd-3)))
10221
10222(define-public ruby-diffy
10223 (package
10224 (name "ruby-diffy")
10225 (version "3.2.1")
10226 (source
10227 (origin
10228 (method url-fetch)
10229 (uri (rubygems-uri "diffy" version))
10230 (sha256
10231 (base32
10232 "119imrkn01agwhx5raxhknsi331y5i4yda7r0ws0an6905ximzjg"))))
10233 (build-system ruby-build-system)
10234 (arguments
10235 ;; No tests
10236 `(#:tests? #f))
10237 (native-inputs
10238 `(("ruby-rspec" ,ruby-rspec)))
10239 (home-page "https://github.com/samg/diffy")
10240 (synopsis "Convenient diffing in ruby")
10241 (description "Diffy provides a convenient way to generate a diff from two
10242strings or files.")
10243 (license license:expat)))
10244
10245(define-public ruby-sass-spec
10246 (package
10247 (name "ruby-sass-spec")
10248 (version "3.5.4")
10249 (source
10250 (origin
10251 (method git-fetch)
10252 (uri (git-reference
10253 (url "https://github.com/sass/sass-spec")
10254 (commit (string-append "v" version))))
10255 (file-name (git-file-name name version))
10256 (sha256
10257 (base32 "1zsw66830w0xlc7kxz6fm4b5nyb44vdsdgm9mgy06s5aixx83pwr"))))
10258 (build-system ruby-build-system)
10259 (propagated-inputs
10260 `(("ruby-command-line-reporter-3" ,ruby-command-line-reporter-3)
10261 ("ruby-diffy" ,ruby-diffy)
10262 ("ruby-terminfo" ,ruby-terminfo)))
10263 (arguments
10264 `(;; This package contains tests for a sass implementation, and the to
10265 ;; avoid any circular dependencies, the tests are not run here
10266 #:tests? #f
10267 #:phases
10268 (modify-phases %standard-phases
10269 (add-after 'unpack 'patch-test
10270 (lambda _
10271 (delete-file "spec/values/colors/alpha_hex-3.5/error")
10272 (substitute* "spec/values/colors/alpha_hex-3.5/expected_output.css"
10273 (("string") "color")))))))
10274 (home-page "https://github.com/sass/sass-spec")
10275 (synopsis "Test suite for Sass")
10276 (description "Sass Spec is a test suite for Sass. Test cases are all in
10277the @file{spec} directory.")
10278 (license license:expat)))
10279
10280(define-public ruby-sass
10281 (package
10282 (name "ruby-sass")
10283 (version "3.6.0")
10284 (source (origin
10285 (method url-fetch)
10286 (uri (rubygems-uri "sass" version))
10287 (sha256
10288 (base32
10289 "18c6prbw9wl8bqhb2435pd9s0lzarl3g7xf8pmyla28zblvwxmyh"))))
10290 (build-system ruby-build-system)
10291 (propagated-inputs
10292 `(("ruby-sass-listen" ,ruby-sass-listen)))
10293 (native-inputs
10294 `(("ruby-sass-spec" ,ruby-sass-spec)
10295 ("ruby-mathn" ,ruby-mathn)))
10296 (home-page "https://sass-lang.com/")
10297 (synopsis "CSS extension language")
10298 (description "Sass is a CSS extension language. It extends CSS with
10299features that don't exist yet like variables, nesting, mixins and inheritance.")
10300 (license license:expat)))
10301
10302(define-public ruby-sassc
10303 (package
10304 (name "ruby-sassc")
10305 (version "2.2.1")
10306 (source
10307 (origin
10308 (method url-fetch)
10309 (uri (rubygems-uri "sassc" version))
10310 (sha256
10311 (base32
10312 "09bnid7r5z5hcin5hykvpvv8xig27wbbckxwis60z2aaxq4j9siz"))))
10313 (build-system ruby-build-system)
10314 (arguments
10315 '(#:modules ((guix build ruby-build-system)
10316 (guix build utils)
10317 (ice-9 textual-ports))
10318 #:phases
10319 (modify-phases %standard-phases
10320 ;; TODO: This would be better as a snippet, but the ruby-build-system
10321 ;; doesn't seem to support that
10322 (add-after 'unpack 'remove-libsass
10323 (lambda _
10324 (delete-file-recursively "ext")
10325 (with-atomic-file-replacement "sassc.gemspec"
10326 (lambda (in out)
10327 (let* ((gemspec (get-string-all in))
10328 (index (string-contains gemspec "libsass_dir")))
10329 (display (string-append
10330 (string-take gemspec index)
10331 "\nend\n")
10332 out))))
10333 #t))
10334 (add-after 'unpack 'dont-check-the-libsass-version
10335 (lambda _
10336 (substitute* "test/native_test.rb"
10337 (("assert_equal.*Native\\.version") ""))
10338 #t))
10339 (add-after 'unpack 'remove-git-from-gemspec
10340 (lambda _
10341 (substitute* "sassc.gemspec"
10342 (("`git ls-files -z`") "`find . -type f -print0 |sort -z`"))
10343 #t))
10344 (add-after 'unpack 'remove-extensions-from-gemspec
10345 (lambda _
10346 (substitute* "sassc.gemspec"
10347 (("\\[\"ext/extconf.rb\"\\]") "[]"))
10348 #t))
10349 (add-after 'unpack 'fix-Rakefile
10350 (lambda _
10351 (substitute* "Rakefile"
10352 (("test: 'compile:libsass'") ":test"))
10353 #t))
10354 (add-after 'unpack 'remove-unnecessary-dependencies
10355 (lambda _
10356 (substitute* "test/test_helper.rb"
10357 (("require \"pry\"") ""))
10358 #t))
10359 (add-before 'build 'patch-native.rb
10360 (lambda* (#:key inputs #:allow-other-keys)
10361 (substitute* "lib/sassc/native.rb"
10362 ((".*gem_root = spec.gem_dir") "")
10363 (("ffi_lib .*\n")
10364 (string-append
10365 "ffi_lib '" (assoc-ref inputs "libsass") "/lib/libsass.so'")))
10366 #t))
10367 ;; The gemspec still references the libsass files, so just keep the
10368 ;; one in the gem.
10369 (delete 'extract-gemspec))))
10370 (propagated-inputs
10371 `(("ruby-ffi" ,ruby-ffi)
10372 ("ruby-rake" ,ruby-rake)))
10373 (inputs
10374 `(("libsass" ,libsass)))
10375 (native-inputs
10376 `(("bundler" ,bundler)
10377 ("ruby-rake-compiler" ,ruby-rake-compiler)
10378 ("ruby-minitest-around" ,ruby-minitest-around)
10379 ("ruby-test-construct" ,ruby-test-construct)))
10380 (synopsis "Use libsss from Ruby")
10381 (description
10382 "This library provides Ruby q@acronym{FFI, Foreign Function Interface}
10383bindings to the libsass library. This enables rendering
10384@acronym{SASS,Syntactically awesome style sheets} from Ruby code.")
10385 (home-page "https://github.com/sass/sassc-ruby")
10386 (license license:expat)))
10387
10388(define-public ruby-jekyll-sass-converter
10389 (package
10390 (name "ruby-jekyll-sass-converter")
10391 (version "1.5.2")
10392 (source (origin
10393 (method url-fetch)
10394 (uri (rubygems-uri "jekyll-sass-converter" version))
10395 (sha256
10396 (base32
10397 "008ikh5fk0n6ri54mylcl8jn0mq8p2nfyfqif2q3pp0lwilkcxsk"))))
10398 (build-system ruby-build-system)
10399 (propagated-inputs
10400 `(("ruby-sass" ,ruby-sass)))
10401 (arguments
10402 ;; No rakefile
10403 `(#:tests? #f))
10404 (home-page "https://github.com/jekyll/jekyll-sass-converter")
10405 (synopsis "Sass converter for Jekyll")
10406 (description "This gem provide built-in support for the Sass converter
10407in Jekyll.")
10408 (license license:expat)))
10409
10410(define-public ruby-jekyll-watch
10411 (package
10412 (name "ruby-jekyll-watch")
10413 (version "2.1.2")
10414 (source (origin
10415 (method url-fetch)
10416 (uri (rubygems-uri "jekyll-watch" version))
10417 (sha256
10418 (base32
10419 "1s9ly83sp8albvgdff12xy2h4xd8lm6z2fah4lzmk2yvp85jzdzv"))))
10420 (build-system ruby-build-system)
10421 (propagated-inputs
10422 `(("ruby-listen" ,ruby-listen)))
10423 (arguments
10424 ;; No rakefile
10425 `(#:tests? #f))
10426 (home-page "https://github.com/jekyll/jekyll-watch")
10427 (synopsis "Jekyll auto-rebuild support")
10428 (description "This gems add the @code{--watch} switch to the jekyll CLI
10429interface. It allows Jekyll to rebuild your site when a file changes.")
10430 (license license:expat)))
10431
10432(define-public ruby-parallel
10433 (package
10434 (name "ruby-parallel")
10435 (version "1.13.0")
10436 (source
10437 (origin
10438 (method git-fetch)
10439 (uri (git-reference
10440 (url "https://github.com/grosser/parallel")
10441 (commit (string-append "v" version))))
10442 (file-name (git-file-name name version))
10443 (sha256
10444 (base32
10445 "1isqzbqxz2ndad4i5z3lb9ldrhaijfncj8bmffv04sq44sv87ikv"))))
10446 (build-system ruby-build-system)
10447 (arguments
10448 `(;; TODO 3 test failures
10449 ;; rspec ./spec/parallel_spec.rb:190 # Parallel.in_processes does not
10450 ;; open unnecessary pipes
10451 ;; rspec './spec/parallel_spec.rb[1:9:7]' # Parallel.each works with
10452 ;; SQLite in processes
10453 ;; rspec './spec/parallel_spec.rb[1:9:16]' # Parallel.each works with
10454 ;; SQLite in threads
10455 #:tests? #f
10456 #:test-target "rspec-rerun:spec"
10457 #:phases
10458 (modify-phases %standard-phases
10459 (add-after 'unpack 'patch-Gemfile
10460 (lambda _
10461 (substitute* "Gemfile"
10462 (("gem 'rspec-legacy_formatters'") "")
10463 (("gem 'activerecord.*$") "gem 'activerecord'\n"))))
10464 (add-before 'check 'delete-Gemfile.lock
10465 (lambda _
10466 ;; Bundler isn't being used for fetching dependendencies, so
10467 ;; delete the Gemfile.lock
10468 (delete-file "Gemfile.lock")
10469 #t))
10470 (add-before 'build 'patch-gemspec
10471 (lambda _
10472 (substitute* "parallel.gemspec"
10473 (("git ls-files") "find"))
10474 #t)))))
10475 (native-inputs
10476 `(("ruby-rspec" ,ruby-rspec)
10477 ("ruby-rspec-rerun" ,ruby-rspec-rerun)
10478 ("bundler" ,bundler)
10479 ("ruby-activerecord" ,ruby-activerecord)
10480 ("ruby-progressbar" ,ruby-progressbar)
10481 ("ruby-bump" ,ruby-bump)
10482 ("procps" ,procps)
10483 ("lsof" ,lsof)
10484 ("ruby-mysql2" ,ruby-mysql2)
10485 ("ruby-sqlite3" ,ruby-sqlite3)
10486 ("ruby-i18n" ,ruby-i18n)))
10487 (home-page "https://github.com/grosser/parallel")
10488 (synopsis "Parallel processing in Ruby")
10489 (description "Parallel allows you to run any code in parallel Processes
10490(to use all CPUs) or Threads(to speedup blocking operations). It is best
10491suited for map-reduce or e.g. parallel downloads/uploads.")
10492 (license license:expat)))
10493
10494(define-public ruby-cane
10495 (package
10496 (name "ruby-cane")
10497 (version "3.0.0")
10498 (source (origin
10499 (method url-fetch)
10500 (uri (rubygems-uri "cane" version))
10501 (sha256
10502 (base32
10503 "0yf5za3l7lhrqa3g56sah73wh33lbxy5y3cb7ij0a2bp1b4kwhih"))))
10504 (build-system ruby-build-system)
10505 (arguments `(#:tests? #f)); No rakefile
10506 (home-page "https://github.com/square/cane")
10507 (propagated-inputs
10508 `(("ruby-parallel" ,ruby-parallel)))
10509 (synopsis "Code quality threshold checking")
10510 (description "Cane fails your build if code quality thresholds are not met.")
10511 (license license:asl2.0)))
10512
10513(define-public ruby-morecane
10514 (package
10515 (name "ruby-morecane")
10516 (version "0.2.0")
10517 (source (origin
10518 (method url-fetch)
10519 (uri (rubygems-uri "morecane" version))
10520 (sha256
10521 (base32
10522 "0w70vb8z5bdhvr21h660aa43m5948pv0bd27z7ngai2iwdvqd771"))))
10523 (build-system ruby-build-system)
10524 (home-page "https://github.com/yob/morecane")
10525 (arguments `(#:tests? #f)); No rakefile
10526 (propagated-inputs
10527 `(("ruby-parallel" ,ruby-parallel)))
10528 (synopsis "Extra checks for cane")
10529 (description "The cane gem provides a great framework for running quality
10530checks over your ruby project as part of continuous integration build. It
10531comes with a few checks out of the box, but also provides an API for loading
10532custom checks. This gem provides a set of additional checks.")
10533 (license license:expat)))
10534
10535(define-public ruby-pdf-reader
10536 (package
10537 (name "ruby-pdf-reader")
10538 (version "2.4.0")
10539 (source (origin
10540 (method git-fetch) ;no test in distributed gem archive
10541 (uri (git-reference
10542 (url "https://github.com/yob/pdf-reader")
10543 (commit (string-append "v" version))))
10544 (file-name (git-file-name name version))
10545 (sha256
10546 (base32
10547 "1yh8yrlssf5ppnkvk4m78vmh5r5vqwdcd0gm3lqipw162llz0rai"))))
10548 (build-system ruby-build-system)
10549 (arguments `(#:test-target "spec"
10550 #:phases (modify-phases %standard-phases
10551 (add-after 'unpack 'do-not-use-bundler
10552 (lambda _
10553 (substitute* "spec/spec_helper.rb"
10554 ((".*[Bb]undler.*") ""))
10555 #t)))))
10556 (native-inputs
10557 `(("ruby-rspec" ,ruby-rspec)
10558 ("ruby-cane" ,ruby-cane)
10559 ("ruby-morecane" ,ruby-morecane)))
10560 (propagated-inputs
10561 `(("ruby-afm" ,ruby-afm)
10562 ("ruby-ascii85" ,ruby-ascii85)
10563 ("ruby-hashery" ,ruby-hashery)
10564 ("ruby-rc4" ,ruby-rc4)
10565 ("ruby-ttfunk" ,ruby-ttfunk)))
10566 (home-page "https://github.com/yob/pdf-reader")
10567 (synopsis "PDF parser in Ruby")
10568 (description "The PDF::Reader library implements a PDF parser conforming as
10569much as possible to the PDF specification from Adobe. It provides programmatic
10570access to the contents of a PDF file with a high degree of flexibility.")
10571 (license license:gpl3+)))
10572
10573(define-public ruby-pdf-inspector
10574 (let ((revision "1")
10575 (commit "00ee4c92ff917118785ebec188e81effc968abeb"))
10576 (package
10577 (name "ruby-pdf-inspector")
10578 (version (git-version "1.3.0" revision commit))
10579 (source (origin
10580 (method git-fetch)
10581 (uri (git-reference
10582 (url "https://github.com/prawnpdf/pdf-inspector")
10583 (commit commit)))
10584 (file-name (git-file-name name version))
10585 (sha256
10586 (base32
10587 "0h9w81ddd0gvkh5n2cvny9ddb5qiac1si0dhinkk0xxh5382qs0m"))))
10588 (build-system ruby-build-system)
10589 (arguments
10590 `(#:test-target "spec"
10591 #:phases (modify-phases %standard-phases
10592 (add-before 'build 'drop-signing-key-requirement
10593 (lambda _
10594 (substitute* "pdf-inspector.gemspec"
10595 (("spec.signing_key =.*")
10596 "spec.signing_key = nil"))
10597 #t))
10598 (replace 'check
10599 (lambda _
10600 (substitute* "pdf-inspector.gemspec"
10601 ((".*rubocop.*") "")
10602 ((".*yard.*") ""))
10603 (invoke "rspec"))))))
10604 (native-inputs
10605 `(("ruby-rspec" ,ruby-rspec)))
10606 (propagated-inputs
10607 `(("ruby-pdf-reader" ,ruby-pdf-reader)))
10608 (home-page "https://github.com/prawnpdf/pdf-inspector")
10609 (synopsis "Analysis classes for inspecting PDF output")
10610 (description "This library provides a number of PDF::Reader based tools for
10611use in testing PDF output. Presently, the primary purpose of this tool is to
10612support the tests found in Prawn, a pure Ruby PDF generation library.")
10613 (license %prawn-project-licenses))))
10614
10615(define-public ruby-pdf-core
10616 (package
10617 (name "ruby-pdf-core")
10618 (version "0.8.1")
10619 (source (origin
10620 (method url-fetch)
10621 (uri (rubygems-uri "pdf-core" version))
10622 (sha256
10623 (base32
10624 "15d6m99bc8bbzlkcg13qfpjjzphfg5x905pjbfygvpcxsm8gnsvg"))))
10625 (build-system ruby-build-system)
10626 (arguments
10627 ; No test target
10628 `(#:tests? #f))
10629 (home-page "https://github.com/prawnpdf/pdf-core")
10630 (synopsis "Low level PDF features for Prawn")
10631 (description "This is an experimental gem that extracts low-level PDF
10632functionality from Prawn.")
10633 (license license:gpl3+)))
10634
10635(define-public ruby-prawn
10636 ;; There hasn't been a new release since 2017/03/17.
10637 (let ((revision "1")
10638 (commit "d980247be8a00e7c59cd4e5785e3aa98f9856db1"))
10639 (package
10640 (name "ruby-prawn")
10641 (version (git-version "2.2.2" revision commit))
10642 (source (origin
10643 (method git-fetch)
10644 (uri (git-reference
10645 (url "https://github.com/prawnpdf/prawn")
10646 (commit commit)))
10647 (file-name (git-file-name name version))
10648 (sha256
10649 (base32
10650 "0mcmvf22h8il93yq48v9f31qpy27pvjxgv9172p0f4x9lqy0imwr"))))
10651 (build-system ruby-build-system)
10652 (arguments
10653 `(#:phases
10654 (modify-phases %standard-phases
10655 (add-before 'build 'drop-signing-key-requirement
10656 (lambda _
10657 (substitute* "prawn.gemspec"
10658 (("spec.signing_key =.*")
10659 "spec.signing_key = nil"))
10660 #t))
10661 (replace 'check
10662 (lambda* (#:key tests? #:allow-other-keys)
10663 (when tests?
10664 ;; The Prawn manual test fails (see:
10665 ;; https://github.com/prawnpdf/prawn/issues/1163), so exclude
10666 ;; it.
10667 (invoke "rspec" "--exclude-pattern" "prawn_manual_spec.rb"))
10668 #t)))))
10669 (propagated-inputs
10670 `(("ruby-pdf-core" ,ruby-pdf-core)
10671 ("ruby-ttfunk" ,ruby-ttfunk)))
10672 (native-inputs
10673 `(("ruby-pdf-inspector" ,ruby-pdf-inspector)
10674 ("ruby-prawn-manual-builder" ,ruby-prawn-manual-builder)
10675 ("ruby-rspec" ,ruby-rspec)
10676 ("ruby-simplecov" ,ruby-simplecov)
10677 ("ruby-yard" ,ruby-yard)))
10678 (home-page "https://prawnpdf.org/api-docs/2.0/")
10679 (synopsis "PDF generation for Ruby")
10680 (description "Prawn is a pure Ruby PDF generation library.")
10681 (license %prawn-project-licenses))))
10682
10683(define-public ruby-prawn-table
10684 (package
10685 (name "ruby-prawn-table")
10686 (version "0.2.2")
10687 (source (origin
10688 (method url-fetch)
10689 (uri (rubygems-uri "prawn-table" version))
10690 (sha256
10691 (base32
10692 "1nxd6qmxqwl850icp18wjh5k0s3amxcajdrkjyzpfgq0kvilcv9k"))))
10693 (build-system ruby-build-system)
10694 (propagated-inputs
10695 `(("ruby-prawn" ,ruby-prawn)
10696 ("ruby-pdf-inspector" ,ruby-pdf-inspector)))
10697 (native-inputs
10698 `(("bundler" ,bundler)
10699 ("ruby-yard" ,ruby-yard)
10700 ("ruby-mocha" ,ruby-mocha)
10701 ("ruby-coderay" ,ruby-coderay)
10702 ("ruby-prawn-manual-builder" ,ruby-prawn-manual-builder)
10703 ("ruby-simplecov" ,ruby-simplecov)
10704 ("ruby-rspec-2" ,ruby-rspec-2)))
10705 (arguments
10706 '(;; TODO: 1 test fails
10707 ;; Failure/Error: pdf.page_count.should == 1
10708 ;; expected: 1
10709 ;; got: 2 (using ==)
10710 ;; # ./spec/table_spec.rb:1308
10711 ;;
10712 ;; 225 examples, 1 failure
10713 #:tests? #f
10714 #:phases
10715 (modify-phases %standard-phases
10716 (add-before 'check 'patch-gemspec
10717 (lambda _
10718 (substitute* "prawn-table.gemspec"
10719 ;; Loosen the requirement for pdf-inspector
10720 (("~> 1\\.1\\.0") ">= 0")
10721 ;; Loosen the requirement for pdf-reader
10722 (("~> 1\\.2") ">= 0"))))
10723 (replace 'check
10724 (lambda* (#:key tests? #:allow-other-keys)
10725 (when tests?
10726 (invoke "rspec"))
10727 #t)))))
10728 (home-page "https://github.com/prawnpdf/prawn-table")
10729 (synopsis "Tables support for Prawn")
10730 (description "This gem provides tables support for Prawn.")
10731 (license license:gpl3+)))
10732
10733(define-public ruby-kramdown
10734 (package
10735 (name "ruby-kramdown")
10736 (version "2.3.0")
10737 (source (origin
10738 (method url-fetch)
10739 (uri (rubygems-uri "kramdown" version))
10740 (sha256
10741 (base32
10742 "1vmw752c26ny2jwl0npn0gbyqwgz4hdmlpxnsld9qi9xhk5b1qh7"))))
10743 (build-system ruby-build-system)
10744 (arguments `(#:tests? #f)); FIXME: some test failures
10745 (native-inputs
10746 `(("ruby-prawn" ,ruby-prawn)
10747 ("ruby-prawn-table" ,ruby-prawn-table)))
10748 (home-page "https://kramdown.gettalong.org/")
10749 (synopsis "Markdown parsing and converting library")
10750 (description "Kramdown is a library for parsing and converting a superset
10751of Markdown. It is completely written in Ruby, supports standard Markdown
10752(with some minor modifications) and various extensions that have been made
10753popular by the PHP @code{Markdown Extra} package and @code{Maruku}.")
10754 (license license:expat)))
10755
10756(define-public ruby-kramdown-parser-gfm
10757 (package
10758 (name "ruby-kramdown-parser-gfm")
10759 (version "1.1.0")
10760 (source
10761 (origin
10762 (method url-fetch)
10763 (uri (rubygems-uri "kramdown-parser-gfm" version))
10764 (sha256
10765 (base32 "0a8pb3v951f4x7h968rqfsa19c8arz21zw1vaj42jza22rap8fgv"))))
10766 (build-system ruby-build-system)
10767 (arguments
10768 `(#:tests? #f)) ;no rakefile
10769 (propagated-inputs
10770 `(("ruby-kramdown" ,ruby-kramdown)))
10771 (synopsis "Kramdown parser for the GFM dialect of Markdown")
10772 (description
10773 "This is a parser for kramdown that converts Markdown documents in the
10774GFM dialect to HTML.")
10775 (home-page "https://github.com/kramdown/parser-gfm")
10776 (license license:expat)))
10777
10778(define-public ruby-http-parser.rb
10779 (package
10780 (name "ruby-http-parser.rb")
10781 (version "0.6.0")
10782 (source
10783 (origin
10784 (method url-fetch)
10785 (uri (rubygems-uri "http_parser.rb" version))
10786 (sha256
10787 (base32
10788 "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi"))))
10789 (build-system ruby-build-system)
10790 (arguments
10791 ;; No tests
10792 `(#:tests? #f))
10793 (native-inputs
10794 `(("ruby-rake-compiler" ,ruby-rake-compiler)
10795 ("ruby-rspec" ,ruby-rspec)))
10796 (home-page "https://github.com/tmm1/http_parser.rb")
10797 (synopsis "HTTP parser un Ruby")
10798 (description "This gem is a simple callback-based HTTP request/response
10799parser for writing http servers, clients and proxies.")
10800 (license license:expat)))
10801
10802(define-public ruby-em-websocket
10803 (package
10804 (name "ruby-em-websocket")
10805 (version "0.5.1")
10806 (source
10807 (origin
10808 (method url-fetch)
10809 (uri (rubygems-uri "em-websocket" version))
10810 (sha256
10811 (base32
10812 "1bsw8vjz0z267j40nhbmrvfz7dvacq4p0pagvyp17jif6mj6v7n3"))))
10813 (build-system ruby-build-system)
10814 (arguments
10815 ;; No tests
10816 `(#:tests? #f))
10817 (propagated-inputs
10818 `(("ruby-eventmachine" ,ruby-eventmachine)
10819 ("ruby-http-parser.rb" ,ruby-http-parser.rb)))
10820 (native-inputs
10821 `(("bundler" ,bundler)
10822 ("ruby-rspec" ,ruby-rspec)))
10823 (home-page "https://github.com/igrigorik/em-websocket")
10824 (synopsis "EventMachine based WebSocket server")
10825 (description "Em-websocket is an EventMachine based WebSocket server
10826implementation.")
10827 (license license:expat)))
10828
10829(define-public ruby-rouge
10830 (package
10831 (name "ruby-rouge")
10832 (version "3.21.0")
10833 (source (origin
10834 (method url-fetch)
10835 (uri (rubygems-uri "rouge" version))
10836 (sha256
10837 (base32
10838 "1agrrmj88k9jkk36ra1ml2c1jffpp595pkxmcla74ac9ia09vn3s"))))
10839 (build-system ruby-build-system)
10840 (arguments `(#:tests? #f)); No rakefile
10841 (home-page "http://rouge.jneen.net/")
10842 (synopsis "Code highlighter")
10843 (description "Rouge is a code highlighter written in Ruby. It supports more
10844than 100 languages and outputs HTML or ANSI 256-color text. Its HTML output
10845is compatible with stylesheets designed for pygments.")
10846 (license (list
10847 ;; rouge is licensed under expat
10848 license:expat
10849 ;; pygments is licensed under bsd-2
10850 license:bsd-2))))
10851
10852(define-public ruby-rouge-2
10853 (package
10854 (inherit ruby-rouge)
10855 (version "2.2.1")
10856 (source (origin
10857 (method url-fetch)
10858 (uri (rubygems-uri "rouge" version))
10859 (sha256
10860 (base32
10861 "02kpahk5nkc33yxnn75649kzxaz073wvazr2zyg491nndykgnvcs"))))))
10862
10863(define-public ruby-hashie
10864 (package
10865 (name "ruby-hashie")
10866 (version "3.6.0")
10867 (source (origin
10868 (method url-fetch)
10869 (uri (rubygems-uri "hashie" version))
10870 (sha256
10871 (base32
10872 "13bdzfp25c8k51ayzxqkbzag3wj5gc1jd8h7d985nsq6pn57g5xh"))))
10873 (build-system ruby-build-system)
10874 (native-inputs
10875 `(("bundler" ,bundler)))
10876 (arguments `(#:tests? #f)); FIXME: Could not locate Gemfile or .bundle/ directory
10877 (home-page "https://github.com/intridea/hashie")
10878 (synopsis "Extensions to Ruby Hashes")
10879 (description "Hashie is a collection of classes and mixins that make Ruby
10880hashes more powerful.")
10881 (license license:expat)))
10882
10883(define-public ruby-heredoc-unindent
10884 (package
10885 (name "ruby-heredoc-unindent")
10886 (version "1.2.0")
10887 (source (origin
10888 (method url-fetch)
10889 (uri (rubygems-uri "heredoc_unindent" version))
10890 (sha256
10891 (base32
10892 "14ijr2fsjwhrkjkcaz81d5xnfa4vvgvcflrff83avqw9klm011yw"))))
10893 (build-system ruby-build-system)
10894 (native-inputs
10895 `(("ruby-hoe" ,ruby-hoe)))
10896 (home-page "https://github.com/adrianomitre/heredoc_unindent")
10897 (synopsis "Heredoc indentation cleaner")
10898 (description "This gem removes common margin from indented strings, such
10899as the ones produced by indented heredocs. In other words, it strips out
10900leading whitespace chars at the beginning of each line, but only as much as
10901the line with the smallest margin.
10902
10903It is acknowledged that many strings defined by heredocs are just code and
10904fact is that most parsers are insensitive to indentation. If, however, the
10905strings are to be used otherwise, be it for printing or testing, the extra
10906indentation will probably be an issue and hence this gem.")
10907 (license license:expat)))
10908
10909(define-public ruby-safe-yaml
10910 (package
10911 (name "ruby-safe-yaml")
10912 (version "1.0.5")
10913 (source
10914 (origin
10915 (method git-fetch)
10916 (uri (git-reference
10917 (url "https://github.com/dtao/safe_yaml")
10918 (commit version)))
10919 (file-name (git-file-name name version))
10920 (sha256
10921 (base32
10922 "1a0wh7y3va2m7bjza95na2snw0vrdh9syz40mpjvjphbc4ph3pzg"))))
10923 (build-system ruby-build-system)
10924 (native-inputs
10925 `(("ruby-rspec" ,ruby-rspec)
10926 ("ruby-hashie" ,ruby-hashie)
10927 ("ruby-heredoc-unindent" ,ruby-heredoc-unindent)))
10928 (arguments
10929 '(#:test-target "spec"
10930 #:phases
10931 (modify-phases %standard-phases
10932 (add-before 'check 'set-TZ
10933 (lambda _
10934 ;; This test is dependent on the timezone
10935 ;; spec/transform/to_date_spec.rb:35
10936 ;; # SafeYAML::Transform::ToDate converts times to the local
10937 ;; timezone
10938 (setenv "TZ" "UTC-11")
10939 #t)))))
10940 (home-page "https://github.com/dtao/safe_yaml")
10941 (synopsis "YAML parser")
10942 (description "The SafeYAML gem provides an alternative implementation of
10943YAML.load suitable for accepting user input in Ruby applications.")
10944 (license license:expat)))
10945
10946(define-public ruby-mercenary
10947 (package
10948 (name "ruby-mercenary")
10949 (version "0.3.6")
10950 (source (origin
10951 (method url-fetch)
10952 (uri (rubygems-uri "mercenary" version))
10953 (sha256
10954 (base32
10955 "10la0xw82dh5mqab8bl0dk21zld63cqxb1g16fk8cb39ylc4n21a"))))
10956 (build-system ruby-build-system)
10957 (arguments `(#:test-target "spec"))
10958 (native-inputs
10959 `(("bundler" ,bundler)))
10960 (home-page "https://github.com/jekyll/mercenary")
10961 (synopsis "Command-line apps library in Ruby")
10962 (description "Mercenary is a lightweight and flexible library for writing
10963command-line apps in Ruby.")
10964 (license license:expat)))
10965
10966(define-public ruby-liquid
10967 (package
10968 (name "ruby-liquid")
10969 (version "4.0.0")
10970 (source (origin
10971 (method url-fetch)
10972 (uri (rubygems-uri "liquid" version))
10973 (sha256
10974 (base32
10975 "17fa0jgwm9a935fyvzy8bysz7j5n1vf1x2wzqkdfd5k08dbw3x2y"))))
10976 (build-system ruby-build-system)
10977 (arguments `(#:tests? #f)); No rakefile
10978 (home-page "https://shopify.github.io/liquid/")
10979 (synopsis "Template language")
10980 (description "Liquid is a template language written in Ruby. It is used
10981to load dynamic content on storefronts.")
10982 (license license:expat)))
10983
10984(define-public ruby-forwardable-extended
10985 (package
10986 (name "ruby-forwardable-extended")
10987 (version "2.6.0")
10988 (source (origin
10989 (method url-fetch)
10990 (uri (rubygems-uri "forwardable-extended" version))
10991 (sha256
10992 (base32
10993 "15zcqfxfvsnprwm8agia85x64vjzr2w0xn9vxfnxzgcv8s699v0v"))))
10994 (build-system ruby-build-system)
10995 (arguments `(#:tests? #f)); Cyclic dependency on luna-rspec-formatters
10996 (home-page "https://github.com/envygeeks/forwardable-extended")
10997 (synopsis "Delegation to hashes and instance variables in Forwardable")
10998 (description "Forwardable Extended provides more @code{Forwardable}
10999methods for your source as @code{Forwardable::Extended}.")
11000 (license license:expat)))
11001
11002(define-public ruby-pathutil
11003 (package
11004 (name "ruby-pathutil")
11005 (version "0.16.2")
11006 (source (origin
11007 (method url-fetch)
11008 (uri (rubygems-uri "pathutil" version))
11009 (sha256
11010 (base32
11011 "12fm93ljw9fbxmv2krki5k5wkvr7560qy8p4spvb9jiiaqv78fz4"))))
11012 (build-system ruby-build-system)
11013 (propagated-inputs
11014 `(("ruby-forwardable-extended" ,ruby-forwardable-extended)))
11015 (native-inputs
11016 `(("bundler" ,bundler)
11017 ("ruby-rspec" ,ruby-rspec)))
11018 ;; Fails with: cannot load such file --
11019 ;; /tmp/guix-build-ruby-pathutil-0.16.0.drv-0/gem/benchmark/support/task
11020 (arguments `(#:tests? #f))
11021 (home-page "https://github.com/envygeeks/pathutil")
11022 (synopsis "Extended implementation of Pathname")
11023 (description "Pathutil tries to be a faster pure Ruby implementation of
11024Pathname.")
11025 (license license:expat)))
11026
11027(define-public jekyll
11028 (package
11029 (name "jekyll")
11030 (version "3.8.6")
11031 (source (origin
11032 (method url-fetch)
11033 (uri (rubygems-uri "jekyll" version))
11034 (sha256
11035 (base32
11036 "1ph1jjjl25vmzif7bvxzviq7azjm384pm7ba4k24cah94285bzhz"))))
11037 (build-system ruby-build-system)
11038 (arguments
11039 ;; No rakefile, but a test subdirectory.
11040 `(#:tests? #f
11041 #:phases
11042 (modify-phases %standard-phases
11043 (add-before 'build 'fix-i18n
11044 (lambda _
11045 (substitute* ".gemspec"
11046 (("~> 0.7") ">= 0.7")
11047 (("~> 1.14") ">= 1.14"))
11048 #t)))))
11049 (propagated-inputs
11050 `(("ruby-addressable" ,ruby-addressable)
11051 ("ruby-colorator" ,ruby-colorator)
11052 ("ruby-em-websocket" ,ruby-em-websocket)
11053 ("ruby-i18n" ,ruby-i18n)
11054 ("ruby-jekyll-sass-converter" ,ruby-jekyll-sass-converter)
11055 ("ruby-jekyll-watch" ,ruby-jekyll-watch)
11056 ("ruby-kramdown" ,ruby-kramdown-parser-gfm)
11057 ("ruby-liquid" ,ruby-liquid)
11058 ("ruby-mercenary" ,ruby-mercenary)
11059 ("ruby-pathutil" ,ruby-pathutil)
11060 ("ruby-rouge" ,ruby-rouge-2)
11061 ("ruby-safe-yaml" ,ruby-safe-yaml)))
11062 (home-page "https://jekyllrb.com/")
11063 (synopsis "Static site generator")
11064 (description "Jekyll is a simple, blog aware, static site generator.")
11065 (license license:expat)))
11066
11067(define-public ruby-jekyll-paginate-v2
11068 (package
11069 (name "ruby-jekyll-paginate-v2")
11070 (version "3.0.0")
11071 (source (origin
11072 (method url-fetch)
11073 (uri (rubygems-uri "jekyll-paginate-v2" version))
11074 (sha256
11075 (base32
11076 "1qzlqhpiqz28624fp0ak76hfy7908w6kpx62v7z43aiwjv0yc6q0"))))
11077 (build-system ruby-build-system)
11078 (propagated-inputs
11079 `(("jekyll" ,jekyll)))
11080 (home-page "https://github.com/sverrirs/jekyll-paginate-v2")
11081 (synopsis "Pagination Generator for Jekyll 3")
11082 (description "The Pagination Generator forms the core of the pagination
11083logic in Jekyll. It calculates and generates the pagination pages.")
11084 (license license:expat)))
11085
11086(define-public ruby-faraday
11087 (package
11088 (name "ruby-faraday")
11089 (version "0.15.4")
11090 (source
11091 (origin
11092 (method url-fetch)
11093 (uri (rubygems-uri "faraday" version))
11094 (sha256
11095 (base32
11096 "0s72m05jvzc1pd6cw1i289chas399q0a14xrwg4rvkdwy7bgzrh0"))))
11097 (build-system ruby-build-system)
11098 (arguments
11099 '(#:tests? #f))
11100 (propagated-inputs
11101 `(("ruby-multipart-post" ,ruby-multipart-post)))
11102 (synopsis "Ruby HTTP/REST API client library")
11103 (description
11104 "Faraday is a HTTP/REST API client library which provides a common
11105interface over different adapters.")
11106 (home-page "https://github.com/lostisland/faraday")
11107 (license license:expat)))
11108
11109(define-public ruby-nio4r
11110 (package
11111 (name "ruby-nio4r")
11112 (version "2.5.2")
11113 (source
11114 (origin
11115 (method url-fetch)
11116 (uri (rubygems-uri "nio4r" version))
11117 (sha256
11118 (base32
11119 "0gnmvbryr521r135yz5bv8354m7xn6miiapfgpg1bnwsvxz8xj6c"))))
11120 (build-system ruby-build-system)
11121 (arguments
11122 '(#:phases
11123 (modify-phases %standard-phases
11124 (add-after 'unpack 'remove-unnecessary-dependencies
11125 (lambda _
11126 (substitute* "spec/spec_helper.rb"
11127 ;; Coveralls is for uploading test coverage information to an
11128 ;; online service, and thus unnecessary for building the Guix
11129 ;; package
11130 (("require \"coveralls\"") "")
11131 (("Coveralls\\.wear!") "")
11132 ;; Remove rspec/retry as we are not retrying the tests
11133 (("require \"rspec/retry\"") "")
11134 (("config\\.display_try_failure_messages = true") "")
11135 (("config\\.verbose_retry = true") ""))
11136 #t))
11137 (add-before 'check 'compile
11138 (lambda _
11139 (invoke "rake" "compile")
11140 #t))
11141 (replace 'check
11142 (lambda* (#:key tests? #:allow-other-keys)
11143 (when tests?
11144 (invoke "rspec"))
11145 #t)))))
11146 (native-inputs
11147 `(("bundler" ,bundler)
11148 ("ruby-rake-compiler" ,ruby-rake-compiler)
11149 ("ruby-rspec" ,ruby-rspec)
11150 ("ruby-rubocop" ,ruby-rubocop)))
11151 (synopsis "New I/O for Ruby")
11152 (description
11153 "@code{nio} provides cross-platform asynchronous I/O primitives in Ruby
11154for scalable network clients and servers.")
11155 (home-page "https://github.com/socketry/nio4r")
11156 (license license:expat)))
11157
11158(define-public ruby-globalid
11159 (package
11160 (name "ruby-globalid")
11161 (version "0.4.2")
11162 (source
11163 (origin
11164 (method url-fetch)
11165 (uri (rubygems-uri "globalid" version))
11166 (sha256
11167 (base32
11168 "1zkxndvck72bfw235bd9nl2ii0lvs5z88q14706cmn702ww2mxv1"))))
11169 (build-system ruby-build-system)
11170 (arguments
11171 '(;; No included tests
11172 #:tests? #f))
11173 (propagated-inputs
11174 `(("ruby-activesupport" ,ruby-activesupport)))
11175 (synopsis "Generate URIs idenfitying model instances in Ruby")
11176 (description
11177 "@code{GlobalID} provides a way to generate URIs from a model in Ruby that
11178uniquely identify it.")
11179 (home-page "https://rubyonrails.org/")
11180 (license license:expat)))
11181
11182(define-public ruby-sprockets
11183 (package
11184 (name "ruby-sprockets")
11185 (version "3.7.2")
11186 (source
11187 (origin
11188 (method url-fetch)
11189 (uri (rubygems-uri "sprockets" version))
11190 (sha256
11191 (base32
11192 "182jw5a0fbqah5w9jancvfmjbk88h8bxdbwnl4d3q809rpxdg8ay"))))
11193 (build-system ruby-build-system)
11194 (arguments
11195 '(;; No included tests
11196 #:tests? #f))
11197 (propagated-inputs
11198 `(("ruby-concurrent" ,ruby-concurrent)
11199 ("ruby-rack" ,ruby-rack)))
11200 (synopsis "Sprockets is a Rack-based asset packaging system")
11201 (description
11202 "Sprockets is a Rack-based asset packaging system that concatenates and
11203serves JavaScript, CoffeeScript, CSS, LESS, Sass, and SCSS.")
11204 (home-page "https://github.com/rails/sprockets")
11205 (license license:expat)))
11206
11207(define-public ruby-mustache
11208 (package
11209 (name "ruby-mustache")
11210 (version "1.1.1")
11211 (source
11212 (origin
11213 (method url-fetch)
11214 (uri (rubygems-uri "mustache" version))
11215 (sha256
11216 (base32 "1l0p4wx15mi3wnamfv92ipkia4nsx8qi132c6g51jfdma3fiz2ch"))))
11217 (build-system ruby-build-system)
11218 (native-inputs
11219 `(("ruby-simplecov" ,ruby-simplecov)))
11220 (synopsis "framework-agnostic way to render logic-free views")
11221 (description
11222 "Mustache is a framework-agnostic way to render logic-free views.
11223Think of Mustache as a replacement for your views. Instead of views
11224consisting of ERB or HAML with random helpers and arbitrary logic,
11225your views are broken into two parts: a Ruby class and an HTML
11226template.")
11227 (home-page "https://github.com/mustache/mustache")
11228 (license license:expat)))
11229
11230(define-public ruby-mustermann
11231 (package
11232 (name "ruby-mustermann")
11233 (version "1.0.3")
11234 (source
11235 (origin
11236 (method url-fetch)
11237 (uri (rubygems-uri "mustermann" version))
11238 (sha256
11239 (base32
11240 "0lycgkmnyy0bf29nnd2zql5a6pcf8sp69g9v4xw0gcfcxgpwp7i1"))))
11241 (build-system ruby-build-system)
11242 (arguments
11243 ;; No tests.
11244 '(#:tests? #f))
11245 (synopsis "Library implementing patterns that behave like regular expressions")
11246 (description "Given a string pattern, Mustermann will turn it into an
11247object that behaves like a regular expression and has comparable performance
11248characteristics.")
11249 (home-page "https://github.com/sinatra/mustermann")
11250 (license license:expat)))
11251
11252(define-public ruby-htmlentities
11253 (package
11254 (name "ruby-htmlentities")
11255 (version "4.3.4")
11256 (source
11257 (origin
11258 (method url-fetch)
11259 (uri (rubygems-uri "htmlentities" version))
11260 (sha256
11261 (base32
11262 "1nkklqsn8ir8wizzlakncfv42i32wc0w9hxp00hvdlgjr7376nhj"))))
11263 (build-system ruby-build-system)
11264 (arguments
11265 `(#:phases
11266 (modify-phases %standard-phases
11267 (replace 'check
11268 (lambda _
11269 (map (lambda (file)
11270 (invoke "ruby" "-Itest" file))
11271 (find-files "./test" ".*_test\\.rb")))))))
11272 (synopsis "Encode and decode (X)HTML entities")
11273 (description
11274 "This package provides a module for encoding and decoding (X)HTML
11275entities.")
11276 (home-page "https://github.com/threedaymonk/htmlentities")
11277 (license license:expat)))
11278
11279(define-public ruby-sinatra
11280 (package
11281 (name "ruby-sinatra")
11282 (version "2.0.8.1")
11283 (source
11284 (origin
11285 (method url-fetch)
11286 (uri (rubygems-uri "sinatra" version))
11287 (sha256
11288 (base32
11289 "0riy3hwjab1mr73jcqx3brmbmwspnw3d193j06a5f0fy1w35z15q"))))
11290 (build-system ruby-build-system)
11291 (arguments
11292 `(#:phases
11293 (modify-phases %standard-phases
11294 ;; See: https://github.com/sinatra/sinatra/issues/1578.
11295 (add-after 'extract-gemspec 'fix-slow-doc-generation
11296 (lambda _
11297 (substitute* "sinatra.gemspec"
11298 (("\"README.rdoc\"\\.freeze," all)
11299 (string-append all " \"--exclude=.*\\.md\".freeze,")))
11300 #t)))))
11301 (propagated-inputs
11302 `(("ruby-mustermann" ,ruby-mustermann)
11303 ("ruby-rack" ,ruby-rack)
11304 ("ruby-rack-protection" ,ruby-rack-protection)
11305 ("ruby-tilt" ,ruby-tilt)))
11306 (synopsis "DSL for quick web applications creation in Ruby")
11307 (description
11308 "Sinatra is a DSL for quickly creating web applications in Ruby with
11309minimal effort.")
11310 (home-page "http://sinatrarb.com/")
11311 (license license:expat)))
11312
11313(define-public ruby-thin
11314 (package
11315 (name "ruby-thin")
11316 (version "1.7.2")
11317 (source
11318 (origin
11319 (method url-fetch)
11320 (uri (rubygems-uri "thin" version))
11321 (sha256
11322 (base32
11323 "0nagbf9pwy1vg09k6j4xqhbjjzrg5dwzvkn4ffvlj76fsn6vv61f"))))
11324 (build-system ruby-build-system)
11325 (arguments
11326 ;; No tests.
11327 '(#:tests? #f))
11328 (propagated-inputs
11329 `(("ruby-daemons" ,ruby-daemons)
11330 ("ruby-eventmachine" ,ruby-eventmachine)
11331 ("ruby-rack" ,ruby-rack)))
11332 (synopsis "Thin and fast web server for Ruby")
11333 (description "Thin is a Ruby web server that glues together 3 Ruby libraries:
11334@itemize
11335@item the Mongrel parser,
11336@item Event Machine, a network I/O library with high scalability, performance
11337and stability,
11338@item Rack, a minimal interface between webservers and Ruby frameworks.
11339@end itemize\n")
11340 (home-page "https://github.com/macournoyer/thin")
11341 (license license:ruby)))
11342
11343(define-public ruby-skinny
11344 (package
11345 (name "ruby-skinny")
11346 (version "0.2.4")
11347 (source
11348 (origin
11349 (method url-fetch)
11350 (uri (rubygems-uri "skinny" version))
11351 (sha256
11352 (base32
11353 "1y3yvx88ylgz4d2s1wskjk5rkmrcr15q3ibzp1q88qwzr5y493a9"))))
11354 (build-system ruby-build-system)
11355 (arguments
11356 '(#:tests? #f ; No included tests
11357 #:phases
11358 (modify-phases %standard-phases
11359 (add-before 'build 'patch-gemspec
11360 (lambda _
11361 (substitute* ".gemspec"
11362 (("<eventmachine>.freeze, \\[\\\"~> 1.0.0\"")
11363 "<eventmachine>, [\">= 1.0.0\"")
11364 (("<thin>.freeze, \\[\\\"< 1.7\", ") "<thin>, ["))
11365 #t)))))
11366 (propagated-inputs
11367 `(("ruby-eventmachine" ,ruby-eventmachine)
11368 ("ruby-thin" ,ruby-thin)))
11369 (synopsis "Simple, upgradable WebSockets for Ruby Thin")
11370 (description "Skinny is a simple, upgradable WebSockets for Ruby, using
11371the Thin library.")
11372 (home-page "https://github.com/sj26/skinny")
11373 (license license:expat)))
11374
11375(define-public ruby-sys-filesystem
11376 (package
11377 (name "ruby-sys-filesystem")
11378 (version "1.3.4")
11379 (source (origin
11380 (method url-fetch)
11381 (uri (rubygems-uri "sys-filesystem" version))
11382 (sha256
11383 (base32
11384 "0mizqnsiagagmracadr16s5na2ks2j3ih1w0f3gp4ssrda6szl01"))))
11385 (build-system ruby-build-system)
11386 (arguments
11387 '(#:phases (modify-phases %standard-phases
11388 (add-before 'check 'set-HOME
11389 (lambda _
11390 ;; Some tests attempt to stat $HOME. Let them.
11391 (setenv "HOME" "/tmp")
11392 #t)))))
11393 (propagated-inputs
11394 `(("ruby-ffi" ,ruby-ffi)))
11395 (native-inputs
11396 `(("ruby-mkmf-lite" ,ruby-mkmf-lite)))
11397 (synopsis "Gather file system information")
11398 (description
11399 "The @code{sys-filesystem} library provides a cross-platform interface
11400for gathering file system information, such as disk space and mount points.")
11401 (home-page "https://github.com/djberg96/sys-filesystem")
11402 (license license:asl2.0)))
11403
11404(define-public mailcatcher
11405 (package
11406 (name "mailcatcher")
11407 (version "0.7.1")
11408 (source
11409 (origin
11410 (method url-fetch)
11411 (uri (rubygems-uri "mailcatcher" version))
11412 (sha256
11413 (base32
11414 "02w1ycyfv7x0sh9799lz7xa65p5qvl5z4pa8a7prb68h2zwkfq0n"))))
11415 (build-system ruby-build-system)
11416 (arguments
11417 ;; Tests require web/assets which is not included in the output. We
11418 ;; might be able to fix this by adding the Git repository to the GEM_PATH
11419 ;; of the tests. See ruby-mysql2.
11420 '(#:tests? #f
11421 #:phases
11422 (modify-phases %standard-phases
11423 (add-before 'build 'patch-gemspec
11424 (lambda _
11425 (substitute* ".gemspec"
11426 (("<eventmachine>.freeze, \\[\\\"= 1.0.9.1")
11427 "<eventmachine>, [\">= 1.0.9.1")
11428 (("<rack>.freeze, \\[\\\"~> 1.5") "<rack>, [\">= 1.5")
11429 (("<thin>.freeze, \\[\\\"~> 1.5.0") "<thin>, [\">= 1.5.0")
11430 (("<sinatra>.freeze, \\[\\\"~> 1.2") "<sinatra>, [\">= 1.2"))
11431 #t))
11432 (add-before 'build 'loosen-dependency-contraint
11433 (lambda _
11434 (substitute* "lib/mail_catcher.rb"
11435 (("\"eventmachine\", \"1.0.9.1\"") "\"eventmachine\", \">= 1.0.9.1\"")
11436 (("\"rack\", \"~> 1.5\"") "\"rack\", \">= 1.5\"")
11437 (("\"thin\", \"~> 1.5.0\"") "\"thin\", \">= 1.5.0\"")
11438 (("\"sinatra\", \"~> 1.2\"") "\"sinatra\", \">= 1.2\""))
11439 #t)))))
11440 (inputs
11441 `(("ruby-eventmachine" ,ruby-eventmachine)
11442 ("ruby-mail" ,ruby-mail)
11443 ("ruby-rack" ,ruby-rack)
11444 ("ruby-sinatra" ,ruby-sinatra)
11445 ("ruby-skinny" ,ruby-skinny)
11446 ("ruby-sqlite3" ,ruby-sqlite3)
11447 ("ruby-thin" ,ruby-thin)))
11448 (synopsis "SMTP server which catches messages to display them a browser")
11449 (description
11450 "MailCatcher runs a super simple SMTP server which catches any message
11451sent to it to display in a web interface. Run mailcatcher, set your favourite
11452app to deliver to smtp://127.0.0.1:1025 instead of your default SMTP server,
11453then check out http://127.0.0.1:1080 to see the mail.")
11454 (home-page "https://mailcatcher.me")
11455 (license license:expat)))
11456
11457(define-public ruby-backport
11458 (package
11459 (name "ruby-backport")
11460 (version "1.1.2")
11461 (source
11462 (origin
11463 ;; The gem does not include test code, so fetch from the Git repository.
11464 (method git-fetch)
11465 (uri (git-reference
11466 (url "https://github.com/castwide/backport")
11467 (commit (string-append "v" version))))
11468 (file-name (git-file-name name version))
11469 (sha256
11470 (base32 "18fpg1n7n2z02ykz9v1x1q0cqa2lvivf8ygka768s01q1r9wfwv2"))))
11471 (build-system ruby-build-system)
11472 (arguments
11473 `(#:test-target "spec"))
11474 (native-inputs
11475 `(("bundler" ,bundler)
11476 ("ruby-rspec" ,ruby-rspec)))
11477 (inputs
11478 `(("ruby-simplecov" ,ruby-simplecov)))
11479 (synopsis "Pure Ruby library for event-driven IO")
11480 (description
11481 "This package provides a pure Ruby library for event-driven IO.")
11482 (home-page "https://github.com/castwide/backport")
11483 (license license:expat)))
11484
11485(define-public ruby-json-schema
11486 (package
11487 (name "ruby-json-schema")
11488 (version "2.8.1")
11489 (source
11490 (origin
11491 (method url-fetch)
11492 (uri (rubygems-uri "json-schema" version))
11493 (sha256
11494 (base32
11495 "1yv5lfmr2nzd14af498xqd5p89f3g080q8wk0klr3vxgypsikkb5"))))
11496 (build-system ruby-build-system)
11497 (arguments
11498 `(#:tests? #f ; no tests
11499 #:phases
11500 (modify-phases %standard-phases
11501 (replace 'build
11502 (lambda _
11503 (invoke "gem" "build" ".gemspec"))))))
11504 (propagated-inputs
11505 `(("ruby-addressable" ,ruby-addressable)))
11506 (synopsis "Ruby JSON Schema Validator")
11507 (description "This library provides Ruby with an interface for validating
11508JSON objects against a JSON schema conforming to JSON Schema Draft 4. Legacy
11509support for JSON Schema Draft 3, JSON Schema Draft 2, and JSON Schema Draft 1
11510is also included.")
11511 (home-page "https://github.com/ruby-json-schema/json-schema")
11512 (license license:expat)))
11513
11514(define-public swagger-diff
11515 (package
11516 (name "swagger-diff")
11517 (version "1.1.2")
11518 (source
11519 (origin
11520 (method url-fetch)
11521 (uri (rubygems-uri "swagger-diff" version))
11522 (sha256
11523 (base32
11524 "1hxx50nga1bqn254iqjcdwkc9c72364ks9lyjyw10ajz0l0ly7sn"))))
11525 (build-system ruby-build-system)
11526 (arguments
11527 `(#:test-target "spec"
11528 #:phases
11529 (modify-phases %standard-phases
11530 ;; Don't run or require rubocop, the code linting tool, as this is a
11531 ;; bit unnecessary.
11532 (add-after 'unpack 'dont-run-rubocop
11533 (lambda _
11534 (substitute* "Rakefile"
11535 ((".*rubocop.*") "")
11536 ((".*RuboCop.*") ""))
11537 #t)))))
11538 (propagated-inputs
11539 `(("ruby-json-schema" ,ruby-json-schema)))
11540 (native-inputs
11541 `(("bundler" ,bundler)
11542 ("ruby-rspec-core" ,ruby-rspec-core)
11543 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
11544 (synopsis
11545 "Compare Open API Initiative specification files")
11546 (description
11547 "Swagger::Diff is a utility for comparing two different Open API
11548Initiative (OAI) specifications (formerly known as Swagger specifications).
11549It is intended to determine whether a newer API specification is
11550backwards-compatible with an older API specification.")
11551 (home-page "https://github.com/civisanalytics/swagger-diff")
11552 (license license:bsd-3)))
11553
11554(define-public ruby-reverse-markdown
11555 (package
11556 (name "ruby-reverse-markdown")
11557 (version "1.1.0")
11558 (source
11559 (origin
11560 (method url-fetch)
11561 (uri (rubygems-uri "reverse_markdown" version))
11562 (sha256
11563 (base32
11564 "0w7y5n74daajvl9gixr91nh8670d7mkgspkk3ql71m8azq3nffbg"))))
11565 (build-system ruby-build-system)
11566 (propagated-inputs
11567 `(("ruby-nokogiri" ,ruby-nokogiri)))
11568 (native-inputs
11569 `(("bundler" ,bundler)
11570 ("ruby-rspec" ,ruby-rspec)
11571 ("ruby-kramdown" ,ruby-kramdown)
11572 ("ruby-simplecov" ,ruby-simplecov)))
11573 (arguments
11574 `(#:phases
11575 (modify-phases %standard-phases
11576 (replace 'check
11577 (lambda* (#:key tests? #:allow-other-keys)
11578 (when tests?
11579 (invoke "rspec"))
11580 #t)))))
11581 (synopsis "Convert HTML into Markdown")
11582 (description
11583 "This Ruby module allows you to map simple HTML back into
11584Markdown---e.g., if you want to import existing HTML data in your
11585application.")
11586 (home-page "https://github.com/xijo/reverse_markdown")
11587 (license license:wtfpl2)))
11588
11589(define-public ruby-solargraph
11590 (package
11591 (name "ruby-solargraph")
11592 (version "0.36.0")
11593 (source
11594 (origin
11595 (method url-fetch)
11596 (uri (rubygems-uri "solargraph" version))
11597 (sha256
11598 (base32
11599 "0b93xzkgd1h06da9gdnwivj1mzbil8lc072y2838dy6i7bxgpy9i"))))
11600 (build-system ruby-build-system)
11601 (propagated-inputs
11602 `(("ruby-backport" ,ruby-backport)
11603 ("bundler" ,bundler)
11604 ("ruby-htmlentities" ,ruby-htmlentities)
11605 ("ruby-jaro-winkler" ,ruby-jaro-winkler)
11606 ("ruby-maruku" ,ruby-maruku)
11607 ("ruby-nokogiri" ,ruby-nokogiri)
11608 ("ruby-parser" ,ruby-parser)
11609 ("ruby-reverse-markdown" ,ruby-reverse-markdown)
11610 ("ruby-rubocop" ,ruby-rubocop)
11611 ("ruby-thor" ,ruby-thor)
11612 ("ruby-tilt" ,ruby-tilt)
11613 ("ruby-yard" ,ruby-yard)))
11614 (native-inputs
11615 `(("ruby-rspec" ,ruby-rspec)
11616 ("ruby-pry" ,ruby-pry)
11617 ("ruby-simplecov" ,ruby-simplecov)
11618 ("ruby-webmock" ,ruby-webmock-2)))
11619 ;; FIXME: can't figure out how to run the tests properly:
11620
11621 ;; An error occurred while loading spec_helper.
11622 ;; Failure/Error: return gem_original_require(path)
11623 ;; LoadError:
11624 ;; cannot load such file -- spec_helper
11625 (arguments
11626 '(#:tests? #f
11627 #:phases
11628 (modify-phases %standard-phases
11629 (replace 'check
11630 (lambda* (#:key tests? #:allow-other-keys)
11631 (when tests?
11632 (invoke "rspec"))
11633 #t)))))
11634 (synopsis
11635 "IDE tools for code completion, inline documentation, and static analysis")
11636 (description
11637 "Solargraph provides a comprehensive suite of tools for Ruby
11638programming: intellisense, diagnostics, inline documentation, and type
11639checking.")
11640 (home-page "https://solargraph.org/")
11641 (license license:expat)))
11642
11643(define-public ruby-wayback-machine-downloader
11644 (package
11645 (name "ruby-wayback-machine-downloader")
11646 (version "2.2.1")
11647 (source
11648 (origin
11649 (method url-fetch)
11650 (uri (rubygems-uri
11651 "wayback_machine_downloader"
11652 version))
11653 (sha256
11654 (base32
11655 "12kb1qmvmmsaihqab1prn6cmynkn6cgb4vf41mgv22wkcgv5wgk2"))))
11656 (build-system ruby-build-system)
11657 (arguments
11658 '(#:tests? #f)) ; no tests
11659 (synopsis "Download archived websites from the Wayback Machine")
11660 (description
11661 "Wayback Machine Downloader is a command line tool for downloading
11662websites from the Internet Archive's Wayback Machine (archive.org).
11663It allows fine grained control over what to download by specifying
11664which snapshots to consider and what files to include.")
11665 (home-page
11666 "https://github.com/hartator/wayback-machine-downloader")
11667 (license license:expat)))
11668
11669(define-public ruby-wwtd
11670 (package
11671 (name "ruby-wwtd")
11672 (version "1.4.1")
11673 (home-page "https://github.com/grosser/wwtd")
11674 (source (origin
11675 (method git-fetch)
11676 (uri (git-reference
11677 (url home-page)
11678 (commit (string-append "v" version))))
11679 (file-name (git-file-name name version))
11680 (sha256
11681 (base32
11682 "0gw7vfnbb41cy67yw82zji3jkhfsgmzcgzaszm99ax77y18wclf2"))
11683 (modules '((guix build utils)))
11684 (snippet
11685 '(begin
11686 ;; Remove bundled library.
11687 (delete-file "spec/rake-12.3.0.gem")
11688 #t))))
11689 (build-system ruby-build-system)
11690 (arguments
11691 '(;; XXX: Tests need multiple versions of ruby, wants to run
11692 ;; `bundle install`, etc.
11693 #:tests? #f
11694 #:phases (modify-phases %standard-phases
11695 (replace 'replace-git-ls-files
11696 (lambda _
11697 (substitute* "wwtd.gemspec"
11698 (("git ls-files lib/ bin/`")
11699 "find lib/ bin/ -type f |sort`"))
11700 #t))
11701 (add-before 'check 'remove-version-constraints
11702 (lambda _
11703 (delete-file "Gemfile.lock")
11704 #t))
11705 (replace 'check
11706 (lambda* (#:key tests? #:allow-other-keys)
11707 (if tests?
11708 (invoke "rspec" "spec/")
11709 (format #t "test suite not run~%"))
11710 #t)))))
11711 (native-inputs
11712 `(("ruby-bump" ,ruby-bump)
11713 ("ruby-rspec" ,ruby-rspec)))
11714 (synopsis "Run @file{.travis.yml} files locally")
11715 (description
11716 "WWTD is a @dfn{Travis Simulator} that lets you run test matrices
11717defined in @file{.travis.yml} on your local machine, using @code{rvm},
11718@code{rbenv}, or @code{chruby} to test different versions of Ruby.")
11719 (license license:expat)))
11720
11721(define-public ruby-rugged
11722 (package
11723 (name "ruby-rugged")
11724 (version "1.1.0")
11725 (home-page "https://www.rubydoc.info/gems/rugged")
11726 (source
11727 (origin
11728 (method url-fetch)
11729 (uri (rubygems-uri "rugged" version))
11730 (sha256
11731 (base32 "04aq913plcxjw71l5r62qgz3bx3466p0wvgyfqahg5n3nybmcwqy"))))
11732 (build-system ruby-build-system)
11733 (arguments
11734 `(#:tests? #f
11735 #:gem-flags (list "--" "--use-system-libraries")))
11736 (inputs
11737 `(("libgit2" ,libgit2)))
11738 (native-inputs
11739 `(("ruby-minitest" ,ruby-minitest)
11740 ("ruby-pry" ,ruby-pry)
11741 ("ruby-rake-compiler" ,ruby-rake-compiler)))
11742 (synopsis "Ruby bindings to the libgit2 linkable C Git library")
11743 (description "Rugged is a library for accessing libgit2 in Ruby. It gives
11744you the speed and portability of libgit2 with the beauty of the Ruby
11745language.")
11746 (license license:expat)))