projects/guix·blob version-1.4.0 · refs

13752 lines · 488.4 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014, 2015 Pjotr Prins <[email protected]>
3;;; Copyright © 2014-2017, 2021-2022 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-2022 Marius Bakke <[email protected]>
10;;; Copyright © 2017, 2018, 2019, 2020, 2021, 2022 Efraim Flashner <[email protected]>
11;;; Copyright © 2017, 2018, 2020, 2021 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, 2021 Nicolas Goaziou <[email protected]>
25;;; Copyright © 2020 Michael Rohleder <[email protected]>
26;;; Copyright © 2020 Holgr Peters <[email protected]>
27;;; Copyright © 2020 Giacomo Leidi <[email protected]>
28;;; Copyright © 2021 EuAndreh <[email protected]>
29;;; Copyright © 2020 Tomás Ortín Fernández <[email protected]>
30;;; Copyright © 2021 Giovanni Biscuolo <[email protected]>
31;;; Copyright © 2022 Philip McGrath <[email protected]>
32;;; Copyright © 2022 Remco van 't Veer <[email protected]>
33;;; Copyright © 2022 Taiju HIGASHI <[email protected]>
34;;;
35;;; This file is part of GNU Guix.
36;;;
37;;; GNU Guix is free software; you can redistribute it and/or modify it
38;;; under the terms of the GNU General Public License as published by
39;;; the Free Software Foundation; either version 3 of the License, or (at
40;;; your option) any later version.
41;;;
42;;; GNU Guix is distributed in the hope that it will be useful, but
43;;; WITHOUT ANY WARRANTY; without even the implied warranty of
44;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
45;;; GNU General Public License for more details.
46;;;
47;;; You should have received a copy of the GNU General Public License
48;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
49
50(define-module (gnu packages ruby)
51 #:use-module ((guix licenses) #:prefix license:)
52 #:use-module (gnu packages)
53 #:use-module (gnu packages base)
54 #:use-module (gnu packages bison)
55 #:use-module (gnu packages c)
56 #:use-module (gnu packages check)
57 #:use-module (gnu packages compression)
58 #:use-module (gnu packages crypto)
59 #:use-module (gnu packages curl)
60 #:use-module (gnu packages databases)
61 #:use-module (gnu packages dbm)
62 #:use-module (gnu packages rails)
63 #:use-module (gnu packages readline)
64 #:use-module (gnu packages autotools)
65 #:use-module (gnu packages haskell-xyz)
66 #:use-module (gnu packages java)
67 #:use-module (gnu packages libffi)
68 #:use-module (gnu packages libidn)
69 #:use-module (gnu packages linux)
70 #:use-module (gnu packages lsof)
71 #:use-module (gnu packages man)
72 #:use-module (gnu packages maths)
73 #:use-module (gnu packages ncurses)
74 #:use-module (gnu packages networking)
75 #:use-module (gnu packages node)
76 #:use-module (gnu packages protobuf)
77 #:use-module (gnu packages python)
78 #:use-module (gnu packages python-xyz)
79 #:use-module (gnu packages ragel)
80 #:use-module (gnu packages rsync)
81 #:use-module (gnu packages sqlite)
82 #:use-module (gnu packages tls)
83 #:use-module (gnu packages version-control)
84 #:use-module (guix packages)
85 #:use-module (guix download)
86 #:use-module (guix git-download)
87 #:use-module (guix gexp)
88 #:use-module (guix utils)
89 #:use-module (guix build-system gnu)
90 #:use-module (gnu packages xml)
91 #:use-module (gnu packages web)
92 #:use-module (guix build-system ruby)
93 #:use-module ((srfi srfi-1) #:select (alist-delete)))
94
95(define %prawn-project-licenses
96 ;; This set of licenses applies to most (all?) components of the Prawn
97 ;; project (it is triple licensed).
98 (list license:ruby
99 license:gpl2+
100 license:gpl3+))
101
102(define-public ruby-2.6
103 (package
104 (name "ruby")
105 (version "2.6.10")
106 (source
107 (origin
108 (method url-fetch)
109 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
110 (version-major+minor version)
111 "/ruby-" version ".tar.xz"))
112 (sha256
113 (base32
114 "1wn12klc44hn2nh5v1lkqbdyvljip6qhwjqvkkf8zf112gaxxn2z"))
115 (modules '((guix build utils)))
116 (snippet `(begin
117 ;; Remove bundled libffi
118 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
119 #t))))
120 (build-system gnu-build-system)
121 (arguments
122 `(#:test-target "test"
123 #:configure-flags '("--enable-shared") ; dynamic linking
124 #:phases
125 (modify-phases %standard-phases
126 (add-before 'configure 'replace-bin-sh-and-remove-libffi
127 (lambda _
128 (substitute* '("Makefile.in"
129 "ext/pty/pty.c"
130 "io.c"
131 "lib/mkmf.rb"
132 "process.c"
133 "test/rubygems/test_gem_ext_configure_builder.rb"
134 "test/rdoc/test_rdoc_parser.rb"
135 "test/ruby/test_rubyoptions.rb"
136 "test/ruby/test_process.rb"
137 "test/ruby/test_system.rb"
138 "tool/rbinstall.rb")
139 (("/bin/sh") (which "sh")))
140 #t)))))
141 (inputs
142 (list readline openssl-1.1 libffi gdbm))
143 (propagated-inputs
144 (list zlib))
145 (native-search-paths
146 (list (search-path-specification
147 (variable "GEM_PATH")
148 (files (list (string-append "lib/ruby/vendor_ruby"))))))
149 (synopsis "Programming language interpreter")
150 (description "Ruby is a dynamic object-oriented programming language with
151a focus on simplicity and productivity.")
152 (home-page "https://www.ruby-lang.org")
153 (license license:ruby)))
154
155(define-public ruby-2.7
156 (package
157 (inherit ruby-2.6)
158 (version "2.7.4")
159 (replacement ruby-2.7-fixed) ; security fixes
160 (source
161 (origin
162 (inherit (package-source ruby-2.6))
163 (uri (string-append "https://cache.ruby-lang.org/pub/ruby/"
164 (version-major+minor version)
165 "/ruby-" version ".tar.gz"))
166 (sha256
167 (base32
168 "0nxwkxh7snmjqf787qsp4i33mxd1rbf9yzyfiky5k230i680jhrh"))))
169 (arguments
170 `(#:test-target "test"
171 #:configure-flags '("--enable-shared") ; dynamic linking
172 #:phases
173 (modify-phases %standard-phases
174 (add-before 'configure 'replace-bin-sh-and-remove-libffi
175 (lambda _
176 (substitute* '("configure.ac"
177 "template/Makefile.in"
178 "lib/rubygems/installer.rb"
179 "ext/pty/pty.c"
180 "io.c"
181 "lib/mkmf.rb"
182 "process.c"
183 "test/rubygems/test_gem_ext_configure_builder.rb"
184 "test/rdoc/test_rdoc_parser.rb"
185 "test/ruby/test_rubyoptions.rb"
186 "test/ruby/test_process.rb"
187 "test/ruby/test_system.rb"
188 "tool/rbinstall.rb")
189 (("/bin/sh") (which "sh")))
190 #t)))))
191 (native-inputs
192 (list autoconf))))
193
194(define ruby-2.7-fixed
195 (package
196 (inherit ruby-2.7)
197 (version "2.7.7")
198 (source
199 (origin
200 (inherit (package-source ruby-2.7))
201 (uri (string-append "https://cache.ruby-lang.org/pub/ruby/"
202 (version-major+minor version)
203 "/ruby-" version ".tar.gz"))
204 (sha256
205 (base32
206 "143vih5jzmrd2r5h94pa3qzml0ldii0qzs6g09jg6zqxd7djf0g1"))))))
207
208(define-public ruby-3.0
209 (package
210 (inherit ruby-2.7)
211 (version "3.0.5")
212 (source
213 (origin
214 (method url-fetch)
215 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
216 (version-major+minor version)
217 "/ruby-" version ".tar.xz"))
218 (sha256
219 (base32
220 "1pnxbdkkh2miq9nqfq2qscvh76nprzg0r620d9ckdzih42xbaz6g"))))
221 (inputs
222 (modify-inputs (package-inputs ruby-2.7)
223 (replace "openssl" openssl)))))
224
225(define-public ruby-3.1
226 (package
227 (inherit ruby-3.0)
228 (version "3.1.2")
229 (source
230 (origin
231 (method url-fetch)
232 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
233 (version-major+minor version)
234 "/ruby-" version ".tar.xz"))
235 (sha256
236 (base32
237 "0amzqczgvr51ilcqfgw0n41hrfanzi0wh8k6am3x5dm1z0bx046a"))))))
238
239(define-public ruby ruby-2.7)
240
241(define-public mruby
242 (package
243 (name "mruby")
244 (version "2.1.2")
245 (source
246 (origin
247 (method git-fetch)
248 (uri (git-reference
249 (url "https://github.com/mruby/mruby")
250 (commit version)))
251 (file-name (git-file-name name version))
252 (sha256
253 (base32
254 "0fhfv8pi7i8jn2vgk2n2rjnbnfa12nhj514v8i4k353n7q4pmkh3"))))
255 (build-system gnu-build-system)
256 (arguments
257 `(#:test-target "test"
258 #:phases
259 (modify-phases %standard-phases
260 (delete 'configure)
261 (add-after 'unpack 'enable-verbose-tests
262 (lambda _
263 (substitute* "Makefile"
264 (("ruby ./minirake" m)
265 (string-append m " --verbose")))
266 #t))
267 (add-after 'unpack 'disable-broken-tests
268 (lambda _
269 (substitute* "mrbgems/mruby-io/test/io.rb"
270 (("assert\\('IO.popen.+$" m)
271 (string-append m "skip \"Hangs in the Guix build environment\"\n"))
272 (("assert\\('IO#isatty.+$" m)
273 (string-append m "skip \"Disable for Guix; there is no /dev/tty\"\n"))
274 ;; This one is really weird. The *expected* output is all wrong.
275 (("assert\\('`cmd`.*" m)
276 (string-append m "skip \"Disable for Guix\"\n"))
277 (("echo foo")
278 (string-append (which "echo") " foo")))
279 #t))
280 ;; There is no install target
281 (replace 'install
282 (lambda* (#:key outputs #:allow-other-keys)
283 (let* ((out (assoc-ref outputs "out"))
284 (bin (string-append out "/bin"))
285 (lib (string-append out "/lib")))
286 (mkdir-p bin)
287 (copy-recursively "build/host/bin" bin)
288 (mkdir-p lib)
289 (copy-recursively "build/host/lib" lib))
290 #t)))))
291 (native-inputs
292 (list ruby bison))
293 (home-page "https://github.com/mruby/mruby")
294 (synopsis "Lightweight Ruby")
295 (description "mruby is the lightweight implementation of the Ruby
296language. Its syntax is Ruby 1.9 compatible. mruby can be linked and
297embedded within your application.")
298 (license license:expat)))
299
300(define-public ruby-commander
301 (package
302 (name "ruby-commander")
303 (version "4.4.7")
304 (source
305 (origin
306 (method url-fetch)
307 (uri (rubygems-uri "commander" version))
308 (sha256
309 (base32
310 "1pxakz596fjqak3cdbha6iva1dlqis86i3kjrgg6lf3sp8i5vhwg"))))
311 (build-system ruby-build-system)
312 (arguments
313 `(#:test-target "spec"
314 #:phases
315 (modify-phases %standard-phases
316 ;; Don't run or require rubocop, the code linting tool, as this is a
317 ;; bit unnecessary.
318 (add-after 'unpack 'dont-run-rubocop
319 (lambda _
320 (substitute* "Rakefile"
321 ((".*rubocop.*") "")
322 ((".*RuboCop.*") ""))
323 #t)))))
324 (propagated-inputs
325 (list ruby-highline))
326 (native-inputs
327 (list bundler ruby-rspec-core ruby-rspec-expectations
328 ruby-rspec-mocks ruby-simplecov))
329 (home-page "https://github.com/commander-rb/commander")
330 (synopsis "Library for building Ruby command-line executables")
331 (description
332 "Commander aims to be a complete solution for Ruby command-line
333executables. Commander bridges the gap between other terminal related
334libraries (OptionParser, HighLine), while providing many new features, and an
335elegant API.")
336 (license license:expat)))
337
338(define-public ruby-highline
339 (package
340 (name "ruby-highline")
341 (version "2.0.1")
342 (source
343 (origin
344 (method url-fetch)
345 (uri (rubygems-uri "highline" version))
346 (sha256
347 (base32
348 "0gr6pckj2jayxw1gdgh9193j5jag5zrrqqlrnl4jvcwpyd3sn2zc"))))
349 (build-system ruby-build-system)
350 (arguments
351 `(#:tests? #f)) ;; TODO: NameError: uninitialized constant SPEC
352 (native-inputs
353 (list bundler ruby-code-statistics))
354 (synopsis
355 "HighLine helps you build command-line interfaces")
356 (description
357 "HighLine provides a high-level IO library that provides validation,
358type conversion, and more for command-line interfaces. HighLine also includes
359a menu system for providing multiple options to the user.")
360 (home-page "https://github.com/JEG2/highline")
361 (license (list license:gpl2 license:ruby))))
362
363(define-public ruby-hoe
364 (package
365 (name "ruby-hoe")
366 (version "3.21.0")
367 (source (origin
368 (method url-fetch)
369 (uri (rubygems-uri "hoe" version))
370 (sha256
371 (base32
372 "0qid0n56mgsjvq5ksxajv0gb92akky8imwgvw22ajms5g4fd6nf4"))))
373 (build-system ruby-build-system)
374 (arguments
375 '(#:phases
376 (modify-phases %standard-phases
377 ;; One of the tests fails if the SOURCE_DATE_EPOCH environment
378 ;; variable is set, so unset it for the duration of the tests.
379 ;;
380 ;; TestHoe#test_possibly_better
381 ;; [/tmp/guix-build-ruby-hoe-3.20.0.drv-0/gem/test/test_hoe.rb:250]:
382 ;; Expected: 2019-11-12 00:00:00 UTC
383 ;; Actual: 1970-01-01 00:00:00 UTC
384 (add-before 'check 'unset-SOURCE-DATE-EPOCH
385 (lambda _
386 (unsetenv "SOURCE_DATE_EPOCH")
387 #t))
388 (add-after 'check 'set-SOURCE-DATE-EPOCH-again
389 (lambda _
390 (setenv "SOURCE_DATE_EPOCH" "1")
391 #t)))))
392 (synopsis "Ruby project management helper")
393 (description
394 "Hoe is a rake/rubygems helper for project Rakefiles. It helps manage,
395maintain, and release projects and includes a dynamic plug-in system allowing
396for easy extensibility. Hoe ships with plug-ins for all the usual project
397tasks including rdoc generation, testing, packaging, deployment, and
398announcement.")
399 (home-page "https://www.zenspider.com/projects/hoe.html")
400 (license license:expat)))
401
402(define-public ruby-rake-compiler
403 (package
404 (name "ruby-rake-compiler")
405 (version "1.1.1")
406 (source (origin
407 (method url-fetch)
408 (uri (rubygems-uri "rake-compiler" version))
409 (sha256
410 (base32
411 "11sxgw10jrd6a4irb51jjwam9wikixn5kss11pw4b80cmh32yvpf"))))
412 (build-system ruby-build-system)
413 (arguments
414 '(#:tests? #f)) ; needs cucumber
415 (synopsis "Building and packaging helper for Ruby native extensions")
416 (description "Rake-compiler provides a framework for building and
417packaging native C and Java extensions in Ruby.")
418 (home-page "https://github.com/rake-compiler/rake-compiler")
419 (license license:expat)))
420
421(define-public ruby-rsync
422 (package
423 (name "ruby-rsync")
424 (version "1.0.9")
425 (source
426 (origin
427 (method url-fetch)
428 (uri (rubygems-uri "rsync" version))
429 (sha256
430 (base32
431 "0p8b27q1gvxilqfq2528xpwglzcm2myikkjxpqk7mwbwg9r6knxv"))))
432 (build-system ruby-build-system)
433 (arguments
434 '(#:test-target "spec"
435 #:phases
436 (modify-phases %standard-phases
437 (add-after 'unpack 'remove-coveralls-requirement
438 (lambda _
439 (substitute* "spec/spec_helper.rb"
440 (("require 'coveralls'") "")
441 (("Coveralls.wear!") ""))
442 #t)))))
443 (native-inputs
444 (list bundler rsync ruby-rspec-core ruby-rspec-expectations
445 ruby-rspec-mocks))
446 (home-page "https://github.com/jbussdieker/ruby-rsync")
447 (synopsis "Ruby wrapper around rsync")
448 (description
449 "Ruby Rsync is a Ruby library that can synchronize files between remote
450hosts by wrapping the @file{rsync} binary.")
451 (license license:expat)))
452
453(define-public ruby-i18n
454 (package
455 (name "ruby-i18n")
456 (version "1.7.0")
457 (source (origin
458 (method url-fetch)
459 (uri (rubygems-uri "i18n" version))
460 (sha256
461 (base32
462 "0hmypvx9iyc0b4hski7aic2xzm09cg1c7q1qlpnk3k8s5acxzyhl"))))
463 (build-system ruby-build-system)
464 (arguments
465 '(#:tests? #f)) ; no tests
466 (propagated-inputs `(("concurrent-ruby" ,ruby-concurrent)))
467 (synopsis "Internationalization library for Ruby")
468 (description "Ruby i18n is an internationalization and localization
469solution for Ruby programs. It features translation and localization,
470interpolation of values to translations, pluralization, customizable
471transliteration to ASCII, flexible defaults, bulk lookup, lambdas as
472translation data, custom key/scope separator, custom exception handlers, and
473an extensible architecture with a swappable backend.")
474 (home-page "https://github.com/ruby-i18n/i18n")
475 (license license:expat)))
476
477(define-public ruby-iruby
478 (package
479 (name "ruby-iruby")
480 (version "0.3")
481 (source
482 (origin
483 (method url-fetch)
484 (uri (rubygems-uri "iruby" version))
485 (sha256
486 (base32
487 "1wdf2c0x8y6cya0n3y0p3p7b1sxkb2fdavdn2k58rf4rs37s7rzn"))))
488 (build-system ruby-build-system)
489 (arguments
490 ;; TODO: Tests currently fail.
491 ;;
492 ;; Finished in 1.764405s, 1.1335 runs/s, 5.1009 assertions/s.
493 ;;
494 ;; 1) Failure:
495 ;; IntegrationTest#test_interaction [/tmp/guix-build-ruby-iruby-0.3.drv-0/gem/test/integration_test.rb:25]:
496 ;; In [ expected
497 ;;
498 ;; 2 runs, 9 assertions, 1 failures, 0 errors, 0 skips
499 '(#:tests? #f
500 #:phases
501 (modify-phases %standard-phases
502 (add-after 'unpack 'patch-ipython
503 (lambda* (#:key inputs #:allow-other-keys)
504 (substitute* "lib/iruby/command.rb"
505 (("version = `")
506 (string-append
507 "version = `"
508 (assoc-ref inputs "python-ipython")
509 "/bin/"))
510 (("Kernel\\.exec\\('")
511 (string-append
512 "Kernel.exec('"
513 (assoc-ref inputs "python-ipython")
514 "/bin/")))
515 #t)))))
516 (inputs
517 (list python-ipython))
518 (propagated-inputs
519 (list ruby-bond
520 ruby-data_uri
521 ruby-mimemagic
522 ruby-multi-json
523 ruby-cztop
524 ;; Optional inputs
525 ruby-pry))
526 (synopsis "Ruby kernel for Jupyter/IPython")
527 (description
528 "This package provides a Ruby kernel for Jupyter/IPython frontends (e.g.
529notebook).")
530 (home-page "https://github.com/SciRuby/iruby")
531 (license license:expat)))
532
533;; RSpec is the dominant testing library for Ruby projects. Even RSpec's
534;; dependencies use RSpec for their test suites! To avoid these circular
535;; dependencies, we disable tests for all of the RSpec-related packages.
536(define-public ruby-rspec-support
537 (package
538 (name "ruby-rspec-support")
539 (version "3.8.0")
540 (source (origin
541 (method url-fetch)
542 (uri (rubygems-uri "rspec-support" version))
543 (sha256
544 (base32
545 "0p3m7drixrlhvj2zpc38b11x145bvm311x6f33jjcxmvcm0wq609"))))
546 (build-system ruby-build-system)
547 (arguments
548 '(#:tests? #f)) ; avoid dependency cycles
549 (synopsis "RSpec support library")
550 (description "Support utilities for RSpec gems.")
551 (home-page "https://github.com/rspec/rspec-support")
552 (license license:expat)))
553
554(define-public ruby-rspec-core
555 (package
556 (name "ruby-rspec-core")
557 (version "3.8.0")
558 (source (origin
559 (method url-fetch)
560 (uri (rubygems-uri "rspec-core" version))
561 (sha256
562 (base32
563 "1p1s5bnbqp3sxk67y0fh0x884jjym527r0vgmhbm81w7aq6b7l4p"))))
564 (build-system ruby-build-system)
565 (arguments
566 '(#:tests? #f)) ; avoid dependency cycles
567 (propagated-inputs
568 (list ruby-rspec-support))
569 (synopsis "RSpec core library")
570 (description "Rspec-core provides the RSpec test runner and example
571groups.")
572 (home-page "https://github.com/rspec/rspec-core")
573 (license license:expat)))
574
575(define-public ruby-rspec-core-2
576 (package (inherit ruby-rspec-core)
577 (version "2.14.8")
578 (source (origin
579 (method url-fetch)
580 (uri (rubygems-uri "rspec-core" version))
581 (sha256
582 (base32
583 "0psjy5kdlz3ph39br0m01w65i1ikagnqlg39f8p65jh5q7dz8hwc"))))
584 (propagated-inputs `())))
585
586(define-public ruby-diff-lcs
587 (package
588 (name "ruby-diff-lcs")
589 (version "1.3")
590 (source (origin
591 (method url-fetch)
592 (uri (rubygems-uri "diff-lcs" version))
593 (sha256
594 (base32
595 "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza"))))
596 (build-system ruby-build-system)
597 (arguments
598 '(#:tests? #f)) ; avoid dependency cycles
599 (synopsis "Compute the difference between two Enumerable sequences")
600 (description "Diff::LCS computes the difference between two Enumerable
601sequences using the McIlroy-Hunt longest common subsequence (LCS) algorithm.
602It includes utilities to create a simple HTML diff output format and a
603standard diff-like tool.")
604 (home-page "https://github.com/halostatue/diff-lcs")
605 (license license:expat)))
606
607(define-public ruby-rspec-expectations
608 (package
609 (name "ruby-rspec-expectations")
610 (version "3.8.2")
611 (source (origin
612 (method url-fetch)
613 (uri (rubygems-uri "rspec-expectations" version))
614 (sha256
615 (base32
616 "18l21hy1zdc2pgc2yb17k3n2al1khpfr0z6pijlm852iz6vj0dkm"))))
617 (build-system ruby-build-system)
618 (arguments
619 '(#:tests? #f)) ; avoid dependency cycles
620 (propagated-inputs
621 (list ruby-rspec-support ruby-diff-lcs))
622 (synopsis "RSpec expectations library")
623 (description "Rspec-expectations provides a simple API to express expected
624outcomes of a code example.")
625 (home-page "https://github.com/rspec/rspec-expectations")
626 (license license:expat)))
627
628(define-public ruby-rspec-expectations-2
629 (package (inherit ruby-rspec-expectations)
630 (version "2.14.5")
631 (source (origin
632 (method url-fetch)
633 (uri (rubygems-uri "rspec-expectations" version))
634 (sha256
635 (base32
636 "1ni8kw8kjv76jvwjzi4jba00k3qzj9f8wd94vm6inz0jz3gwjqf9"))))
637 (propagated-inputs
638 (list ruby-diff-lcs))))
639
640(define-public ruby-sorcerer
641 (package
642 (name "ruby-sorcerer")
643 (version "2.0.1")
644 (source
645 (origin
646 (method url-fetch)
647 (uri (rubygems-uri "sorcerer" version))
648 (sha256
649 (base32
650 "0d32ha9pp9slpmsm027pkdpbr9vc5jn2m8rl6hwwx6a87m8cr58h"))))
651 (build-system ruby-build-system)
652 (synopsis "Ripper-style abstract syntax tree to Ruby source generator")
653 (description "Sorcerer generates Ruby code from a Ripper-like abstract
654syntax tree (i.e. S-Expressions). Sorcerer is targeted mainly at small
655snippets of Ruby code, expressible in a single line. Longer examples may be
656re-sourced, but they will be rendered in a single-line format.")
657 (home-page "https://github.com/rspec-given/sorcerer")
658 (license license:expat)))
659
660(define-public ruby-given-core
661 (package
662 (name "ruby-given-core")
663 (version "3.8.0")
664 (source
665 (origin
666 (method url-fetch)
667 (uri (rubygems-uri "given_core" version))
668 (sha256
669 (base32
670 "1lzyqllbbv6as3qgwz2007mvy7wy247bgkch9adnmh1zfa73bkrg"))))
671 (build-system ruby-build-system)
672 (arguments '(#:tests? #f)) ;no test suite for the core package
673 (propagated-inputs
674 (list ruby-sorcerer))
675 (synopsis "Core abstractions used by rspec-given and minitest-given")
676 (description "Given_core is the basic functionality behind rspec-given and
677minitest-given, extensions that allow the use of Given/When/Then terminology
678when defining specifications.")
679 (home-page "https://github.com/rspec-given/rspec-given")
680 (license license:expat)))
681
682(define-public ruby-rspec-given
683 (package
684 (name "ruby-rspec-given")
685 (version "3.8.0")
686 (source
687 (origin
688 (method url-fetch)
689 (uri (rubygems-uri "rspec-given" version))
690 (sha256
691 (base32
692 "1783bazja10kbha8hk15khvybsq88siyax02cpkk688604h54nji"))))
693 (build-system ruby-build-system)
694 (arguments
695 `(#:test-target "rs"
696 #:phases
697 (modify-phases %standard-phases
698 (add-after 'unpack 'fix-rakefile
699 (lambda _
700 (substitute* '("Rakefile" "rakelib/gemspec.rake")
701 (("require '\\./lib/given/.*") "")
702 (("Given::VERSION") (format #f "~s" ,version))
703 ;; Fix the error: "cannot load such file -- example_helper"
704 (("sh \"rspec")
705 "sh \"rspec -Ilib:examples"))
706 #t))
707 (add-after 'extract-gemspec 'delete-failing-tests
708 ;; See: https://github.com/jimweirich/rspec-given/issues/57.
709 (lambda _
710 (substitute* ".gemspec"
711 (("\"spec/lib/given/natural_assertion_spec.rb\".freeze, ")
712 "")
713 (("\"examples/integration/failing_messages_spec.rb\".freeze, ")
714 ""))
715 (delete-file "spec/lib/given/natural_assertion_spec.rb")
716 (delete-file "examples/integration/failing_messages_spec.rb")
717 #t)))))
718 (native-inputs
719 (list ruby-rspec ruby-minitest))
720 (propagated-inputs
721 (list ruby-given-core ruby-rspec))
722 (synopsis "Given/When/Then for RSpec and Minitest")
723 (description "Given is an RSpec extension that allows the use of
724Given/When/Then terminology when defining specifications, in a way similar to
725the Cucumber Gherkin language.")
726 (home-page "https://github.com/rspec-given/rspec-given")
727 (license license:expat)))
728
729(define-public ruby-rspec-its
730 (package
731 (name "ruby-rspec-its")
732 (version "1.3.0")
733 (source
734 (origin
735 (method git-fetch)
736 (uri (git-reference
737 (url "https://github.com/rspec/rspec-its")
738 (commit (string-append "v" version))))
739 (file-name (git-file-name name version))
740 (sha256
741 (base32
742 "02mlsc9d4d1cjj5vahi8v3q8hyn9fyiv8nnlidhgfh186qp20g1p"))))
743 (build-system ruby-build-system)
744 (arguments
745 `(#:test-target "spec"
746 #:phases
747 (modify-phases %standard-phases
748 (add-after 'unpack 'dont-install-gems-from-gemfile
749 (lambda _
750 (substitute* "Gemfile"
751 (("rspec rspec-core rspec-expectations rspec-mocks rspec-support")
752 ""))
753 #t))
754 (add-before 'build 'loosen-ffi-requirement
755 (lambda _
756 ;; Accept any version of ruby-ffi.
757 (substitute* "Gemfile"
758 ((" gem 'ffi', '~> 1\\.9\\.25'")
759 " gem 'ffi'"))
760 #t))
761 (add-before 'build 'remove-unnecessary-dependency-versions-from-gemfile
762 (lambda _
763 (substitute* "rspec-its.gemspec"
764 (("rake.*") "rake'\n")
765 (("spec.add_development_dependency 'cucumber'.*")
766 "spec.add_development_dependency 'cucumber'\n")
767 (("bundler.*") "bundler'\n")
768 (("\"aruba.*") "'aruba'\n"))
769 #t)))))
770 (propagated-inputs
771 (list ruby-rspec-core ruby-rspec-expectations))
772 (native-inputs
773 (list bundler ruby-cucumber ruby-ffi ruby-aruba))
774 (synopsis "RSpec extension that provides the @code{its} method")
775 (description
776 "RSpec::Its provides the its method as a short-hand to specify the expected
777value of an attribute. For example, one can use @code{its(:size)\\{should
778eq(1)\\}}.")
779 (home-page "https://github.com/rspec/rspec-its")
780 (license license:expat)))
781
782;;; This variant is used to break a cycle with ruby-protobuf.
783(define-public ruby-rspec-its-minimal
784 (hidden-package
785 (package
786 (inherit ruby-rspec-its)
787 (arguments
788 (substitute-keyword-arguments (package-arguments ruby-rspec-its)
789 ((#:tests? _ #f) #f)))
790 (native-inputs '()))))
791
792(define-public ruby-rspec-mocks
793 (package
794 (name "ruby-rspec-mocks")
795 (version "3.8.0")
796 (source (origin
797 (method url-fetch)
798 (uri (rubygems-uri "rspec-mocks" version))
799 (sha256
800 (base32
801 "06y508cjqycb4yfhxmb3nxn0v9xqf17qbd46l1dh4xhncinr4fyp"))))
802 (build-system ruby-build-system)
803 (arguments
804 '(#:tests? #f)) ; avoid dependency cycles
805 (propagated-inputs
806 (list ruby-rspec-support ruby-diff-lcs))
807 (synopsis "RSpec stubbing and mocking library")
808 (description "Rspec-mocks provides RSpec's \"test double\" framework, with
809support for stubbing and mocking.")
810 (home-page "https://github.com/rspec/rspec-mocks")
811 (license license:expat)))
812
813(define-public ruby-rspec-mocks-2
814 (package (inherit ruby-rspec-mocks)
815 (version "2.14.6")
816 (source (origin
817 (method url-fetch)
818 (uri (rubygems-uri "rspec-mocks" version))
819 (sha256
820 (base32
821 "1fwsmijd6w6cmqyh4ky2nq89jrpzh56hzmndx9wgkmdgfhfakv30"))))
822 (propagated-inputs
823 (list ruby-diff-lcs))))
824
825(define-public ruby-rspec-rerun
826 (package
827 (name "ruby-rspec-rerun")
828 (version "1.1.0")
829 (source
830 (origin
831 (method url-fetch)
832 (uri (rubygems-uri "rspec-rerun" version))
833 (sha256
834 (base32
835 "1gy7znkcaqhpccfnk2nvaqbsvgxy3q57cmjwkl9fi1zabaq5lbkj"))))
836 (build-system ruby-build-system)
837 (arguments
838 '(;; No included tests
839 #:tests? #f))
840 (propagated-inputs (list ruby-rspec))
841 (synopsis "Track failed RSpec tests to re-run them")
842 (description
843 "This package provides an automated way to track, and then re-run failed
844RSpec tests.")
845 (home-page "https://github.com/dblock/rspec-rerun")
846 (license license:expat)))
847
848(define-public ruby-rspec-wait
849 (package
850 (name "ruby-rspec-wait")
851 (version "0.0.9")
852 (source
853 (origin
854 (method url-fetch)
855 (uri (rubygems-uri "rspec-wait" version))
856 (sha256
857 (base32
858 "0gvj1bp5ccx001dyvcgk2j49s5sl6vs9fdaqqb08z3bd1554hsww"))))
859 (build-system ruby-build-system)
860 (arguments
861 '(#:phases
862 (modify-phases %standard-phases
863 (replace 'check
864 (lambda _
865 (invoke "rake" "spec"))))))
866 (native-inputs
867 (list bundler))
868 (propagated-inputs
869 (list ruby-rspec))
870 (home-page "https://github.com/laserlemon/rspec-wait")
871 (synopsis "Wait for conditions in RSpec")
872 (description
873 "RSpec::Wait strives to make it easier to test asynchronous or slow
874interactions.")
875 (license license:expat)))
876
877(define-public ruby-rspec
878 (package
879 (name "ruby-rspec")
880 (version "3.8.0")
881 (source (origin
882 (method url-fetch)
883 (uri (rubygems-uri "rspec" version))
884 (sha256
885 (base32
886 "15ppasvb9qrscwlyjz67ppw1lnxiqnkzx5vkx1bd8x5n3dhikxc3"))))
887 (build-system ruby-build-system)
888 (arguments
889 '(#:tests? #f)) ; avoid dependency cycles
890 (propagated-inputs
891 (list ruby-rspec-core ruby-rspec-mocks ruby-rspec-expectations))
892 (synopsis "Behavior-driven development framework for Ruby")
893 (description "RSpec is a behavior-driven development (BDD) framework for
894Ruby. This meta-package includes the RSpec test runner, along with the
895expectations and mocks frameworks.")
896 (home-page "https://rspec.info/")
897 (license license:expat)))
898
899(define-public ruby-rspec-2
900 (package (inherit ruby-rspec)
901 (version "2.14.1")
902 (source (origin
903 (method url-fetch)
904 (uri (rubygems-uri "rspec" version))
905 (sha256
906 (base32
907 "134y4wzk1prninb5a0bhxgm30kqfzl8dg06af4js5ylnhv2wd7sg"))))
908 (propagated-inputs
909 (list ruby-rspec-core-2 ruby-rspec-mocks-2 ruby-rspec-expectations-2))))
910
911;; Bundler is yet another source of circular dependencies, so we must disable
912;; its test suite as well.
913(define-public bundler
914 (package
915 (name "bundler")
916 (version "2.1.4")
917 (source (origin
918 (method url-fetch)
919 (uri (rubygems-uri "bundler" version))
920 (sha256
921 (base32
922 "12glbb1357x91fvd004jgkw7ihlkpc9dwr349pd7j83isqhls0ah"))))
923 (build-system ruby-build-system)
924 (arguments
925 '(#:tests? #f)) ; avoid dependency cycles
926 (synopsis "Ruby gem bundler")
927 (description "Bundler automatically downloads and installs a list of gems
928specified in a \"Gemfile\", as well as their dependencies.")
929 (home-page "https://bundler.io/")
930 (license license:expat)))
931
932(define-public ruby-builder
933 (package
934 (name "ruby-builder")
935 (version "3.2.4")
936 (source (origin
937 (method url-fetch)
938 (uri (rubygems-uri "builder" version))
939 (sha256
940 (base32
941 "045wzckxpwcqzrjr353cxnyaxgf0qg22jh00dcx7z38cys5g1jlr"))))
942 (build-system ruby-build-system)
943 (arguments
944 `(#:phases
945 (modify-phases %standard-phases
946 (add-after 'unpack 'do-not-use-rvm
947 (lambda _
948 (substitute* "rakelib/tags.rake"
949 (("RVM_GEMDIR = .*") "RVM_GEMDIR = 'no-rvm-please'\n"))
950 #t)))))
951 (synopsis "Ruby library to create structured data")
952 (description "Builder provides a number of builder objects that make it
953easy to create structured data. Currently the following builder objects are
954supported: XML Markup and XML Events.")
955 (home-page "https://github.com/jimweirich/builder")
956 (license license:expat)))
957
958(define-public ruby-bump
959 (package
960 (name "ruby-bump")
961 (version "0.7.0")
962 (source
963 (origin
964 (method url-fetch)
965 (uri (rubygems-uri "bump" version))
966 (sha256
967 (base32
968 "1xinbr9rzh6cj75x24niwgqcnbhdxc68a8bc41lk8xv6fd906fym"))))
969 (build-system ruby-build-system)
970 (arguments
971 '(;; No included tests
972 #:tests? #f))
973 (synopsis "Tool for working with Rubygems")
974 (description
975 "Bump provides commands to manage Rubygem versioning, updating to the
976next patch version for example.")
977 (home-page "https://github.com/gregorym/bump")
978 (license license:expat)))
979
980(define-public ruby-rjb
981 (package
982 (name "ruby-rjb")
983 (version "1.5.5")
984 (source (origin
985 (method url-fetch)
986 (uri (rubygems-uri "rjb" version))
987 (sha256
988 (base32
989 "1ppj8rbicj3w0nhh7f73mflq19yd7pzdzkh2a91hcvphriy5b0ca"))))
990 (build-system ruby-build-system)
991 (arguments
992 `(#:tests? #f ; no rakefile
993 #:phases
994 (modify-phases %standard-phases
995 (add-before 'build 'set-java-home
996 (lambda* (#:key inputs #:allow-other-keys)
997 (setenv "JAVA_HOME" (assoc-ref inputs "jdk"))
998 #t)))))
999 (native-inputs
1000 `(("jdk" ,icedtea "jdk")))
1001 (synopsis "Ruby-to-Java bridge using the Java Native Interface")
1002 (description "RJB is a bridge program that connects Ruby and Java via the
1003Java Native Interface.")
1004 (home-page "https://www.artonx.org/collabo/backyard/?RubyJavaBridge")
1005 (license license:lgpl2.1+)))
1006
1007(define-public ruby-log4r
1008 (package
1009 (name "ruby-log4r")
1010 (version "1.1.10")
1011 (source
1012 (origin
1013 (method url-fetch)
1014 (uri (rubygems-uri "log4r" version))
1015 (sha256
1016 (base32
1017 "0ri90q0frfmigkirqv5ihyrj59xm8pq5zcmf156cbdv4r4l2jicv"))))
1018 (build-system ruby-build-system)
1019 (arguments
1020 '(#:tests? #f)) ; no Rakefile in gem
1021 (synopsis "Flexible logging library for Ruby")
1022 (description "Comprehensive and flexible logging library written
1023in Ruby for use in Ruby programs. It features a hierarchical logging
1024system of any number of levels, custom level names, logger
1025inheritance, multiple output destinations per log event, execution
1026tracing, custom formatting, thread safteyness, XML and YAML
1027configuration, and more.")
1028 (home-page "http://log4r.rubyforge.org/")
1029 (license license:bsd-3)))
1030
1031(define-public ruby-atoulme-antwrap
1032 (package
1033 (name "ruby-atoulme-antwrap")
1034 (version "0.7.5")
1035 (source (origin
1036 (method url-fetch)
1037 (uri (rubygems-uri "atoulme-Antwrap" version))
1038 (sha256
1039 (base32
1040 "05s3iw44lqa81f8nfy5f0xjj808600h82zb9bsh46b9kcq2w2kmz"))))
1041 (build-system ruby-build-system)
1042 ;; Test data required for most of the tests are not included.
1043 (arguments `(#:tests? #f))
1044 (native-inputs
1045 (list ruby-hoe))
1046 (inputs
1047 (list ruby-rjb))
1048 (synopsis "Ruby wrapper for the Ant build tool")
1049 (description "Antwrap is a Ruby module that wraps the Apache Ant build
1050tool. Antwrap can be used to invoke Ant tasks from a Ruby or a JRuby
1051script.")
1052 (home-page "http://rubyforge.org/projects/antwrap/")
1053 (license license:expat)))
1054
1055(define-public ruby-atoulme-saikuro
1056 (package
1057 (name "ruby-atoulme-saikuro")
1058 (version "1.2.1")
1059 (source (origin
1060 (method url-fetch)
1061 (uri (rubygems-uri "atoulme-Saikuro" version))
1062 (sha256
1063 (base32
1064 "0kvd2nsxffbza61d3q4j94wrbnbv50r1zy3a7q26f6k706fw1f19"))))
1065 (build-system ruby-build-system)
1066 ;; FIXME: There are no unit tests. The tests are demonstrations of the
1067 ;; "saikuro" tool.
1068 (arguments `(#:tests? #f))
1069 (synopsis "Cyclomatic complexity analyzer")
1070 (description "Saikuro is a Ruby cyclomatic complexity analyzer. When
1071given Ruby source code Saikuro will generate a report listing the cyclomatic
1072complexity of each method found. In addition, Saikuro counts the number of
1073lines per method and can generate a listing of the number of tokens on each
1074line of code.")
1075 (home-page "http://www.github.com/atoulme/Saikuro")
1076 ;; File headers contain the BSD-3 license and the README.rdoc says that
1077 ;; "Saikuro uses the BSD license", but the LICENSE file contains the text
1078 ;; of the Expat license.
1079 (license license:bsd-3)))
1080
1081(define-public ruby-awesome-print
1082 (package
1083 (name "ruby-awesome-print")
1084 (version "1.8.0")
1085 (source
1086 (origin
1087 (method url-fetch)
1088 (uri (rubygems-uri "awesome_print" version))
1089 (sha256
1090 (base32
1091 "14arh1ixfsd6j5md0agyzvksm5svfkvchb90fp32nn7y3avcmc2h"))))
1092 (build-system ruby-build-system)
1093 (arguments
1094 `(#:phases
1095 (modify-phases %standard-phases
1096 (replace 'check
1097 (lambda _
1098 ;; Remove failing test.
1099 (for-each delete-file
1100 '("spec/ext/nokogiri_spec.rb"
1101 "spec/colors_spec.rb"
1102 "spec/formats_spec.rb"
1103 "spec/methods_spec.rb"
1104 "spec/misc_spec.rb"
1105 "spec/objects_spec.rb"))
1106 (invoke "rspec" "-c" "spec"))))))
1107 (native-inputs
1108 (list ruby-nokogiri ruby-rspec ruby-simplecov))
1109 (synopsis "Pretty print Ruby objects to visualize their structure")
1110 (description
1111 "Ruby dubugging companion: pretty print Ruby objects to visualize their
1112structure. Supports custom object formatting via plugins.")
1113 (home-page "https://github.com/awesome-print/awesome_print")
1114 (license license:expat)))
1115
1116(define-public ruby-pandoc-ruby
1117 (package
1118 (name "ruby-pandoc-ruby")
1119 (version "2.1.4")
1120 (source
1121 (origin
1122 (method git-fetch) ;the gem lacks many test files
1123 (uri (git-reference
1124 (url "https://github.com/xwmx/pandoc-ruby")
1125 (commit version)))
1126 (file-name (git-file-name name version))
1127 (sha256
1128 (base32
1129 "03a11clhycyn0jhc7g9davpqd83sn60jqwjy1y145ag9sq6sp935"))))
1130 (build-system ruby-build-system)
1131 (arguments
1132 `(#:tests? #f ; Disable tests since they depend on pandoc behavior
1133 ; and there are no upstream releases.
1134 #:phases
1135 (modify-phases %standard-phases
1136 (add-after 'unpack 'patch-pandoc-path
1137 (lambda* (#:key inputs #:allow-other-keys)
1138 (let ((pandoc (search-input-file inputs "/bin/pandoc")))
1139 (substitute* "lib/pandoc-ruby.rb"
1140 (("@@pandoc_path = 'pandoc'")
1141 (format #f "@@pandoc_path = '~a'" pandoc)))
1142 (substitute* "test/test_pandoc_ruby.rb"
1143 (("('|\")pandoc" _ quote)
1144 (string-append quote pandoc))
1145 (("\\^pandoc")
1146 ".*pandoc")))))
1147 (add-after 'unpack 'adjust-tests
1148 ;; The tests expect filenames with spaces. Because they don't have
1149 ;; spaces the quotes around the output are dropped automatically.
1150 (lambda _
1151 (substitute* "test/test_pandoc_ruby.rb"
1152 (("\\\\\"#\\{file\\.path\\}\\\\\"") "#{file.path}"))))
1153 (add-after 'extract-gemspec 'remove-Gemfile.lock
1154 (lambda _
1155 (delete-file "Gemfile.lock")
1156 (substitute* "pandoc-ruby.gemspec"
1157 (("Gemfile\\.lock") "")))))))
1158 (native-inputs
1159 (list ruby-mocha))
1160 (inputs
1161 (list pandoc))
1162 (synopsis "Ruby wrapper for Pandoc")
1163 (description "PandocRuby is a wrapper for Pandoc, a Haskell library with
1164command line tools for converting one markup format to another. Pandoc can
1165convert documents from a variety of formats including markdown,
1166reStructuredText, textile, HTML, DocBook, LaTeX, and MediaWiki markup to a
1167variety of other formats, including markdown, reStructuredText, HTML, LaTeX,
1168ConTeXt, PDF, RTF, DocBook XML, OpenDocument XML, ODT, GNU Texinfo, MediaWiki
1169markup, groff man pages, HTML slide shows, EPUB, Microsoft Word docx, and
1170more.")
1171 (home-page "https://github.com/xwmx/pandoc-ruby")
1172 (license license:expat)))
1173
1174(define-public ruby-patron
1175 (package
1176 (name "ruby-patron")
1177 (version "0.13.3")
1178 (source
1179 (origin
1180 (method url-fetch)
1181 (uri (rubygems-uri "patron" version))
1182 (sha256
1183 (base32
1184 "0523gddx88zql2mq6655k60gy2ac8vybpzkcf90lmd9nx7wl3fi9"))))
1185 (build-system ruby-build-system)
1186 (inputs
1187 (list curl))
1188 (arguments
1189 `(#:tests? #f)) ; no included tests
1190 (synopsis "Ruby HTTP client library based on @code{libcurl}")
1191 (description
1192 "Patron is a Ruby HTTP client library based on @code{libcurl}. It does
1193not try to expose the full power (read complexity) of @code{libcurl} but
1194instead tries to provide a sane API while taking advantage of @code{libcurl}
1195under the hood.")
1196 (home-page "https://github.com/toland/patron")
1197 (license license:expat)))
1198
1199(define-public ruby-slim
1200 (package
1201 (name "ruby-slim")
1202 (version "4.1.0")
1203 (source
1204 (origin
1205 (method url-fetch)
1206 (uri (rubygems-uri "slim" version))
1207 (sha256
1208 (base32
1209 "0gjx30g84c82qzg32bd7giscvb4206v7mvg56kc839w9wjagn36n"))))
1210 (build-system ruby-build-system)
1211 (arguments
1212 `(#:phases
1213 (modify-phases %standard-phases
1214 ;; See: https://github.com/slim-template/slim/issues/857 and
1215 ;; https://github.com/slim-template/slim/issues/858.
1216 (add-after 'unpack 'skip-broken-tests
1217 (lambda _
1218 (substitute* "test/core/test_embedded_engines.rb"
1219 (("def test_render_with_markdown")
1220 "def skipped_test_render_with_markdown"))
1221 (substitute* "test/translator/test_translator.rb"
1222 (("raise (\"Missing test for.*)" _ tail)
1223 (string-append "print " tail)))
1224 #t))
1225 ;; See: https://salsa.debian.org/ruby-team/ruby-slim/-/commit/
1226 ;; 824862bd99d1675bc699d8fc71ba965a785c1f44.
1227 (add-after 'unpack 'prevent-bundler-interference
1228 (lambda _
1229 (substitute* "Rakefile"
1230 (("require 'bundler/setup'") "nil")
1231 (("Bundler::GemHelper\\.install_tasks") "nil"))
1232 #t)))))
1233 (native-inputs
1234 (list ruby-rack-test ruby-sinatra))
1235 (propagated-inputs
1236 (list ruby-temple ruby-tilt))
1237 (synopsis "Minimalist template language for Ruby")
1238 (description "Slim is a template language for Ruby that aims to reduce the
1239syntax to the minimum while remaining clear.")
1240 (home-page "http://slim-lang.com/")
1241 (license license:expat)))
1242
1243(define-public ruby-asciidoctor
1244 (package
1245 (name "ruby-asciidoctor")
1246 (version "2.0.16")
1247 (source
1248 (origin
1249 (method git-fetch) ;the gem release lacks a Rakefile
1250 (uri (git-reference
1251 (url "https://github.com/asciidoctor/asciidoctor")
1252 (commit (string-append "v" version))))
1253 (file-name (git-file-name name version))
1254 (sha256
1255 (base32
1256 "086i17v9rxx0sxac26xp8c5v75jqba6rqjlk57x94qjvrh8vzyw2"))))
1257 (build-system ruby-build-system)
1258 (arguments
1259 `(#:test-target "test:all"
1260 #:phases
1261 (modify-phases %standard-phases
1262 (add-after 'extract-gemspec 'strip-version-requirements
1263 (lambda _
1264 (delete-file "Gemfile")
1265 (substitute* "asciidoctor.gemspec"
1266 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
1267 (string-append stripped "\n")))
1268 #t)))))
1269 (native-inputs
1270 (list ruby-erubi
1271 ruby-erubis
1272 ruby-minitest
1273 ruby-nokogiri
1274 ruby-asciimath
1275 ruby-coderay
1276 ruby-cucumber
1277 ruby-haml
1278 ruby-rouge
1279 ruby-rspec-expectations
1280 ruby-simplecov
1281 ruby-slim
1282 ruby-tilt))
1283 (synopsis "Converter from AsciiDoc content to other formats")
1284 (description "Asciidoctor is a text processor and publishing toolchain for
1285converting AsciiDoc content to HTML5, DocBook 5 (or 4.5), PDF, and other
1286formats.")
1287 (home-page "https://asciidoctor.org")
1288 (license license:expat)))
1289
1290(define-public ruby-asciidoctor-multipage
1291 (package
1292 (name "ruby-asciidoctor-multipage")
1293 (version "0.0.15")
1294 (source (origin
1295 (method git-fetch)
1296 (uri (git-reference
1297 (url "https://github.com/owenh000/asciidoctor-multipage")
1298 (commit (string-append "v" version))))
1299 (file-name (git-file-name name version))
1300 (sha256
1301 (base32
1302 "01qqkf00cp4sj82brz8kl02pjirydafwgld3z166slysiq78d1c5"))))
1303 (propagated-inputs (list ruby-asciidoctor ruby-slim))
1304 (build-system ruby-build-system)
1305 (arguments
1306 `(#:phases (modify-phases %standard-phases
1307 (add-after 'extract-gemspec 'strip-version-requirements
1308 (lambda _
1309 (delete-file "Gemfile")
1310 (substitute* "asciidoctor-multipage.gemspec"
1311 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
1312 (string-append stripped "
1313"))) #t)))))
1314 (synopsis
1315 "Asciidoctor extension for generating HTML output using multiple pages")
1316 (description
1317 "Asciidoctor generates single-page documents. This extension
1318splits documents up into multiple HTML pages according to their headings, with
1319configurable levels.")
1320 (license license:expat)
1321 (home-page "https://github.com/owenh000/asciidoctor-multipage")))
1322
1323(define-public ruby-prawn-icon
1324 (package
1325 (name "ruby-prawn-icon")
1326 (version "2.5.0")
1327 (source
1328 (origin
1329 (method url-fetch)
1330 (uri (rubygems-uri "prawn-icon" version))
1331 (sha256
1332 (base32
1333 "1ivkdf8rdf92hhy97vbmc2a4w97vcvqd58jcj4z9hz3hfsb1526w"))))
1334 (build-system ruby-build-system)
1335 (arguments
1336 `(#:test-target "spec"
1337 #:phases (modify-phases %standard-phases
1338 (add-after 'unpack 'remove-unnecessary-dependencies
1339 (lambda _
1340 (substitute* '("Rakefile" "spec/spec_helper.rb")
1341 ((".*[Bb]undler.*") "")
1342 (("^require 'rubocop.*") "")
1343 (("^RuboCop.*") ""))
1344 #t)))))
1345 (native-inputs
1346 (list ruby-pdf-inspector ruby-pdf-reader ruby-rspec ruby-simplecov))
1347 (propagated-inputs
1348 (list ruby-prawn))
1349 (synopsis "Icon fonts for use with the Prawn PDF toolkit")
1350 (description "@code{Prawn::Icon} provides various icon fonts including
1351FontAwesome, PaymentFont and Foundation Icons for use with the Prawn PDF
1352toolkit.")
1353 (home-page "https://github.com/jessedoyle/prawn-icon/")
1354 (license %prawn-project-licenses)))
1355
1356(define-public ruby-css-parser
1357 (package
1358 (name "ruby-css-parser")
1359 (version "1.7.1")
1360 (source
1361 (origin
1362 (method url-fetch)
1363 (uri (rubygems-uri "css_parser" version))
1364 (sha256
1365 (base32
1366 "04c4dl8cm5rjr50k9qa6yl9r05fk9zcb1zxh0y0cdahxlsgcydfw"))))
1367 (build-system ruby-build-system)
1368 (arguments `(#:tests? #f)) ;gem doesn't ship with test suite
1369 (propagated-inputs
1370 (list ruby-addressable))
1371 (synopsis "Ruby Cascading Style Sheets (CSS) parser")
1372 (description "This package allows loading, parsing and cascading Cascading
1373Style Sheets (CSS) rule sets in Ruby.")
1374 (home-page "https://github.com/premailer/css_parser")
1375 (license license:expat)))
1376
1377(define-public ruby-prawn-svg
1378 (package
1379 (name "ruby-prawn-svg")
1380 (version "0.30.0")
1381 (source
1382 (origin
1383 (method url-fetch)
1384 (uri (rubygems-uri "prawn-svg" version))
1385 (sha256
1386 (base32
1387 "0df3l49cy3xpwi0b73hmi2ykbjg9kjwrvhk0k3z7qhh5ghmmrn77"))))
1388 (build-system ruby-build-system)
1389 (arguments
1390 `(#:phases (modify-phases %standard-phases
1391 (add-after 'unpack 'do-not-use-bundler
1392 (lambda _
1393 (substitute* "spec/spec_helper.rb"
1394 ((".*[Bb]undler.*") ""))
1395 #t))
1396 (replace 'check
1397 (lambda* (#:key tests? #:allow-other-keys)
1398 (when tests?
1399 (invoke "rspec" "-Ilib" "-rprawn-svg"))
1400 #t)))))
1401 (native-inputs
1402 (list ruby-rspec))
1403 (propagated-inputs
1404 (list ruby-css-parser ruby-prawn))
1405 (synopsis "SVG renderer for the Prawn PDF library")
1406 (description "This library allows rendering Scalable Vector Graphics (SVG)
1407graphics directly into a Portable Document Format (PDF) document using the
1408Prawn module.")
1409 (home-page "https://github.com/mogest/prawn-svg")
1410 (license license:expat)))
1411
1412(define-public ruby-prawn-templates
1413 (package
1414 (name "ruby-prawn-templates")
1415 (version "0.1.2")
1416 (source
1417 (origin
1418 (method git-fetch)
1419 (uri (git-reference
1420 (url "https://github.com/prawnpdf/prawn-templates")
1421 (commit version)))
1422 (file-name (git-file-name name version))
1423 (sha256
1424 (base32
1425 "0wll54wxxwixpwazfn4ffbqvqbfrl01cfsv8y11vnlzy7isx5xvl"))))
1426 (build-system ruby-build-system)
1427 (arguments
1428 `(#:phases (modify-phases %standard-phases
1429 (add-after 'unpack 'do-not-use-bundler
1430 (lambda _
1431 (substitute* "spec/spec_helper.rb"
1432 ((".*[Bb]undler.*") ""))
1433 #t))
1434 (replace 'check
1435 (lambda* (#:key tests? #:allow-other-keys)
1436 (when tests?
1437 (invoke "rspec"))
1438 #t)))))
1439 (native-inputs
1440 (list ruby-pdf-inspector ruby-rspec))
1441 (propagated-inputs
1442 (list ruby-pdf-reader ruby-prawn))
1443 (synopsis "Prawn extension to include or combine PDF documents")
1444 (description "This @strong{unmaintained} package provides a Prawn
1445extension that allows including other Portable Document Format (PDF) documents
1446as background or combining several PDF documents into one. This functionality
1447used to be part of Prawn itself, but was extracted from Prawn 0.15.0 because
1448of its many longstanding issues.")
1449 (home-page "https://github.com/prawnpdf/prawn-templates")
1450 (license %prawn-project-licenses)))
1451
1452(define-public ruby-polyglot
1453 (package
1454 (name "ruby-polyglot")
1455 (version "0.3.5")
1456 (source
1457 (origin
1458 (method url-fetch)
1459 (uri (rubygems-uri "polyglot" version))
1460 (sha256
1461 (base32
1462 "1bqnxwyip623d8pr29rg6m8r0hdg08fpr2yb74f46rn1wgsnxmjr"))))
1463 (build-system ruby-build-system)
1464 (arguments `(#:tests? #f)) ;no test suite
1465 (synopsis "Augment @code{require} to load non-Ruby file types")
1466 (description "The Polyglot library allows a Ruby module to register a
1467loader for the file type associated with a filename extension, and it augments
1468@code{require} to find and load matching files.")
1469 (home-page "https://github.com/cjheath/polyglot")
1470 (license license:expat)))
1471
1472(define-public ruby-treetop
1473 (package
1474 (name "ruby-treetop")
1475 (version "1.6.10")
1476 (source
1477 (origin
1478 (method git-fetch) ;no test suite in distributed gem
1479 (uri (git-reference
1480 (url "https://github.com/cjheath/treetop")
1481 (commit (string-append "v" version))))
1482 (file-name (git-file-name name version))
1483 (sha256
1484 (base32
1485 "1dmk94z6ivhrz5hsq68vl5vgydhkz89n394rha1ymddw3rymbfcv"))))
1486 (build-system ruby-build-system)
1487 (arguments
1488 `(#:test-target "spec"))
1489 (native-inputs
1490 (list ruby-activesupport ruby-rr ruby-rspec))
1491 (propagated-inputs
1492 (list ruby-polyglot))
1493 (synopsis "Ruby-based parsing DSL based on parsing expression grammars")
1494 (description "This package provides a Ruby-based Parsing Expression
1495Grammar (PEG) parser generator Domain Specific Language (DSL).")
1496 (home-page "https://github.com/cjheath/treetop")
1497 (license license:expat)))
1498
1499(define-public ruby-typhoeus
1500 (package
1501 (name "ruby-typhoeus")
1502 (version "1.4.0")
1503 (source
1504 (origin
1505 (method url-fetch)
1506 (uri (rubygems-uri "typhoeus" version))
1507 (sha256
1508 (base32
1509 "1m22yrkmbj81rzhlny81j427qdvz57yk5wbcf3km0nf3bl6qiygz"))))
1510 (build-system ruby-build-system)
1511 (arguments
1512 `(#:tests? #f)) ; no included tests
1513 (propagated-inputs
1514 (list ruby-ethon))
1515 (synopsis "@code{libcurl} wrapper in Ruby")
1516 (description
1517 "Like a modern code version of the mythical beast with 100 serpent heads,
1518Typhoeus runs HTTP requests in parallel while cleanly encapsulating handling
1519logic.")
1520 (home-page "https://github.com/typhoeus/typhoeus")
1521 (license license:expat)))
1522
1523(define-public ruby-rubocop-rspec
1524 (package
1525 (name "ruby-rubocop-rspec")
1526 (version "2.2.0")
1527 (source
1528 (origin
1529 (method git-fetch)
1530 (uri (git-reference
1531 (url "https://github.com/rubocop-hq/rubocop-rspec")
1532 (commit (string-append "v" version))))
1533 (file-name (git-file-name name version))
1534 (sha256
1535 (base32
1536 "0gdpjpympb6qc77bang759z7z6lckf14ghkx8v6614agxg8l3g5y"))))
1537 (build-system ruby-build-system)
1538 (arguments
1539 '(#:test-target "internal_investigation"
1540 #:phases
1541 (modify-phases %standard-phases
1542 (add-before 'check 'set-HOME
1543 (lambda _
1544 (setenv "HOME" "/tmp")
1545 #t)))))
1546 (propagated-inputs
1547 (list ruby-rubocop ruby-rubocop-ast))
1548 (native-inputs
1549 (list ruby-rack ruby-rspec ruby-rubocop-performance ruby-simplecov
1550 ruby-yard))
1551 (synopsis "Code style checking for RSpec files")
1552 (description "This package provides a plugin for the RuboCop code style
1553enforcing & linting tool.")
1554 (home-page "https://github.com/rubocop-hq/rubocop-rspec")
1555 (license license:expat)))
1556
1557(define-public ruby-rubocop-rspec-minimal
1558 (hidden-package
1559 (package
1560 (inherit ruby-rubocop-rspec)
1561 (arguments
1562 (substitute-keyword-arguments (package-arguments ruby-rubocop-rspec)
1563 ((#:tests? _ #f) #f)))
1564 (propagated-inputs '())
1565 (native-inputs '()))))
1566
1567(define-public ruby-rubocop-performance
1568 (package
1569 (name "ruby-rubocop-performance")
1570 (version "1.9.2")
1571 (source
1572 (origin
1573 (method git-fetch)
1574 (uri (git-reference
1575 (url "https://github.com/rubocop-hq/rubocop-performance")
1576 (commit (string-append "v" version))))
1577 (file-name (git-file-name name version))
1578 (sha256
1579 (base32
1580 "04lmkmz6c0ccs5miikrww7lakp7y6xz00g7b47ay7rn7sx5j6qyf"))))
1581 (build-system ruby-build-system)
1582 (arguments
1583 `(#:tests? #f ; tests require a git checkout of rubocop's source code.
1584 #:phases
1585 (modify-phases %standard-phases
1586 (replace 'replace-git-ls-files
1587 (lambda _
1588 (substitute* "rubocop-performance.gemspec"
1589 (("`git ls-files -z config lib LICENSE.txt README.md`")
1590 "`find config lib LICENSE.txt README.md -type f -print0 |sort -z`"))
1591 #t))
1592 (add-before 'check 'set-HOME
1593 (lambda _
1594 (setenv "HOME" "/tmp")
1595 #t)))))
1596 (propagated-inputs
1597 (list ruby-rubocop ruby-rubocop-ast))
1598 (native-inputs
1599 (list ruby-bump ruby-yard))
1600 (synopsis "Performance optimizations checkers for Ruby code")
1601 (description "This package provides a collection of RuboCop cops to check
1602for performance optimizations in Ruby code.")
1603 (home-page "https://docs.rubocop.org/rubocop-performance/")
1604 (license license:expat)))
1605
1606(define-public ruby-rubocop-performance-minimal
1607 (hidden-package
1608 (package
1609 (inherit ruby-rubocop-performance)
1610 (arguments
1611 (substitute-keyword-arguments (package-arguments ruby-rubocop-performance)
1612 ((#:tests? _ #f) #f)))
1613 (propagated-inputs '())
1614 (native-inputs '()))))
1615
1616(define-public ruby-gimme
1617 (let ((revision "1")
1618 (commit "4e71f0236f1271871916dd403261d26533db34c0"))
1619 (package
1620 (name "ruby-gimme")
1621 (version (git-version "0.5.0" revision commit))
1622 (source
1623 (origin
1624 (method git-fetch)
1625 (uri (git-reference
1626 (url "https://github.com/searls/gimme")
1627 (commit commit)))
1628 (file-name (git-file-name name version))
1629 (sha256
1630 (base32
1631 "0hrd32ygvf3i7h47ak8f623cz8ns9q7g60nnnvvlnywbggjaz3h6"))))
1632 (build-system ruby-build-system)
1633 (native-inputs
1634 (list ruby-coveralls ruby-cucumber ruby-pry ruby-simplecov
1635 ruby-rspec-given))
1636 (arguments
1637 `(;; The cucumber task fails with error: "index 3 out of matches
1638 ;; (IndexError)", apparently due to our newer Cucumber version.
1639 ;; TODO: Try the "default" task with a future release.
1640 #:test-target "spec"
1641 #:phases
1642 (modify-phases %standard-phases
1643 (add-after 'extract-gemspec 'prepare-for-tests
1644 (lambda _
1645 ;; Delete failing tests (possibly due to our newer rspec
1646 ;; version).
1647 (delete-file "spec/gimme/gives_class_methods_spec.rb")
1648 (delete-file "spec/gimme/rspec_adapter_spec.rb")
1649 (delete-file "spec/gimme/verifies_class_methods_spec.rb")
1650 ;; Fix duplicate version requirements and de-register files.
1651 (delete-file "Gemfile")
1652 (delete-file "Gemfile.lock")
1653 (substitute* "gimme.gemspec"
1654 ((".*\"Gemfile\".*") "")
1655 ((".*\"Gemfile\\.lock\",.*") "")
1656 ((".*(rspec|cucumber).*\">= 0\".*") "")
1657 (("\"spec/gimme/gives_class_methods_spec.rb\",") "")
1658 (("\"spec/gimme/rspec_adapter_spec.rb\",") "")
1659 (("\"spec/gimme/verifies_class_methods_spec.rb\",") "")
1660 ;; All of these gems relate to development, and are
1661 ;; unnecessary when running the tests.
1662 ((".*(add|gem).*guard-.*") "")
1663 ((".*(add|gem).*jeweler.*") "")
1664 ((".*(add|gem).*pry.*") "")
1665 ((".*(add|gem).*growl.*") "")
1666 ((".*(add|gem).*rb-fsevent.*") ""))
1667 #t)))))
1668 (synopsis "Lightweight test double library for Ruby")
1669 (description "Gimme is a very lightweight test double library for Ruby,
1670based on Mockito (a mocking framework for Java). It is an opinionated (but
1671not noisy) means to facilitate test-driving by enabling the authors to specify
1672only what they care about.")
1673 (home-page "https://github.com/searls/gimme")
1674 (license license:expat))))
1675
1676(define-public ruby-standard
1677 (package
1678 (name "ruby-standard")
1679 (version "0.4.7")
1680 (source
1681 (origin
1682 (method git-fetch) ;no test suite in distributed gem
1683 (uri (git-reference
1684 (url "https://github.com/testdouble/standard")
1685 (commit (string-append "v" version))))
1686 (file-name (git-file-name name version))
1687 (sha256
1688 (base32
1689 "0ylx0lm2pbbgr5h7fban592w96bl3wxmvfcpcdfrhkxnpg5kiwgv"))))
1690 (build-system ruby-build-system)
1691 (arguments
1692 ;; TODO: the tests are currently broken due to using a newer Rubocop.
1693 `(#:tests? #f
1694 #:phases
1695 (modify-phases %standard-phases
1696 (add-after 'unpack 'relax-version-requiremens
1697 (lambda _
1698 (delete-file "Gemfile")
1699 (delete-file "Gemfile.lock")
1700 #t)))))
1701 (native-inputs
1702 (list ruby-gimme ruby-pry ruby-simplecov))
1703 (propagated-inputs
1704 (list ruby-rubocop ruby-rubocop-performance))
1705 (synopsis "Ruby Style Guide, with linter & automatic code fixer")
1706 (description "Standard is a port of StandardJS. Like StandardJS, it aims
1707to save time in the following ways:
1708@itemize
1709@item No configuration.
1710@item Automatically format code.
1711@item Catch style issues and programmer errors early.
1712@end itemize")
1713 (home-page "https://github.com/testdouble/standard")
1714 (license license:expat)))
1715
1716(define-public ruby-chunky-png
1717 (package
1718 (name "ruby-chunky-png")
1719 (version "1.3.14")
1720 (source
1721 (origin
1722 (method git-fetch)
1723 (uri (git-reference
1724 (url "https://github.com/wvanbergen/chunky_png")
1725 (commit (string-append "v" version))))
1726 (file-name (git-file-name name version))
1727 (sha256
1728 (base32 "1m7y11ix38h5a2pj5v81qdmvqh980ql9hp62hk2dxwkwsa4nh22h"))))
1729 (build-system ruby-build-system)
1730 (arguments
1731 `(#:test-target "spec"
1732 #:phases
1733 (modify-phases %standard-phases
1734 (add-after 'unpack 'disable-bundler
1735 (lambda _
1736 (substitute* (find-files "." "\\.rb$")
1737 (("require.*bundler/setup.*") ""))
1738 #t)))))
1739 (native-inputs
1740 (list bundler ruby-rspec ruby-standard ruby-yard))
1741 (synopsis "Ruby library to handle PNG images")
1742 (description "ChunkyPNG is a pure Ruby library that can read and write
1743Portable Network Graphics (PNG) images without depending on an external image
1744library. It tries to be memory efficient and reasonably fast. It has
1745features such as:
1746@itemize
1747@item
1748Decoding support for any image that the PNG standard allows. This includes all
1749standard color modes, all bit depths, all transparency, and interlacing and
1750filtering options.
1751@item
1752Encoding support for images of all color modes (true color, grayscale, and
1753indexed) and transparency for all these color modes. The best color mode is
1754chosen automatically, based on the amount of used colors.
1755@item Read/write access to the image's pixels.
1756@item Read/write access to all image metadata that is stored in chunks.
1757@item
1758Memory efficiency: @code{fixnum} are used, i.e. 4 or 8 bytes of memory per
1759pixel, depending on the hardware).
1760@item
1761Performance: ChunkyPNG is reasonably fast for Ruby standards, by only using
1762integer math and a highly optimized saving routine.
1763@item Interoperability with RMagick.
1764@end itemize
1765
1766ChunkyPNG is vulnerable to decompression bombs and can run out of memory when
1767loading a specifically crafted PNG file. This is hard to fix in pure Ruby.
1768Deal with untrusted images in a separate process, e.g., by using @code{fork}
1769or a background processing library.")
1770 (home-page "https://github.com/wvanbergen/chunky_png/wiki")
1771 (license license:expat)))
1772
1773(define-public ruby-text-hyphen
1774 (package
1775 (name "ruby-text-hyphen")
1776 (version "1.4.1")
1777 (source
1778 (origin
1779 (method url-fetch)
1780 (uri (rubygems-uri "text-hyphen" version))
1781 (sha256
1782 (base32
1783 "1gj4awvs9ryf960m0iawg43jyjmfwcqgfwrbcfp890a57b9ag7q1"))))
1784 (build-system ruby-build-system)
1785 (native-inputs
1786 (list ruby-hoe))
1787 (synopsis "Ruby library to hyphenate words in various languages")
1788 (description "Text::Hyphen is a Ruby library to hyphenate words in various
1789languages using Ruby-fied versions of TeX hyphenation patterns. It will
1790properly hyphenate various words according to the rules of the language the
1791word is written in. The algorithm is based on that of the TeX typesetting
1792system by Donald E. Knuth.")
1793 (home-page "https://github.com/halostatue/text-hyphen")
1794 ;; The whole is licensed under the Expat license, but parts use various
1795 ;; versions of the LaTeX Project Public License.
1796 (license license:expat)))
1797
1798(define-public ruby-open-uri-cached
1799 (package
1800 (name "ruby-open-uri-cached")
1801 (version "0.0.5")
1802 (source
1803 (origin
1804 (method url-fetch)
1805 (uri (rubygems-uri "open-uri-cached" version))
1806 (sha256
1807 (base32
1808 "13xy2vhrgz9mdxhklw5fszhamsdxh8ysf3l40g92hqm4hm288wap"))))
1809 (build-system ruby-build-system)
1810 (arguments
1811 `(#:tests? #f)) ;no test suite
1812 (synopsis "OpenURI with transparent disk caching")
1813 (description "OpenURI with transparent disk caching, which is
1814useful to avoid making excessive queries, for example when scraping
1815web pages.")
1816 (home-page "https://github.com/tigris/open-uri-cached")
1817 (license license:expat)))
1818
1819(define-public ruby-asciidoctor-pdf
1820 (package
1821 (name "ruby-asciidoctor-pdf")
1822 (version "1.6.1")
1823 (source
1824 (origin
1825 (method git-fetch) ;no test suite in the distributed gem
1826 (uri (git-reference
1827 (url "https://github.com/asciidoctor/asciidoctor-pdf")
1828 (commit (string-append "v" version))))
1829 (file-name (git-file-name name version))
1830 (sha256
1831 (base32
1832 "1iyfy6n9d3rkyrfjmnnfb44c76mq1larmkv1x8n6p5nbm33wb9sf"))))
1833 (build-system ruby-build-system)
1834 (arguments
1835 `(#:test-target "spec"
1836 #:phases
1837 (modify-phases %standard-phases
1838 (add-after 'unpack 'remove-failing-tests
1839 ;; Two tests module fail for unknown reasons, *only* when
1840 ;; ran in the build container (see:
1841 ;; https://github.com/asciidoctor/asciidoctor-pdf/issues/1725#issuecomment-658777965).
1842 (lambda _
1843 (delete-file "spec/audio_spec.rb")
1844 (delete-file "spec/video_spec.rb")))
1845 (add-after 'extract-gemspec 'strip-version-requirements
1846 (lambda _
1847 (substitute* "asciidoctor-pdf.gemspec"
1848 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
1849 (string-append stripped "\n")))))
1850 ;; The tests rely on the Gem being installed, so move the check phase
1851 ;; after the install phase.
1852 (delete 'check)
1853 (add-after 'install 'check
1854 (lambda* (#:key outputs tests? #:allow-other-keys)
1855 (let ((new-gem (string-append (assoc-ref outputs "out")
1856 "/lib/ruby/vendor_ruby")))
1857 (setenv "GEM_PATH"
1858 (string-append (getenv "GEM_PATH") ":" new-gem))
1859 (when tests?
1860 (invoke "rspec" "-t" "~visual" "-t" "~cli" "-t" "~network"))))))))
1861 (native-inputs
1862 (list ruby-chunky-png ruby-coderay ruby-pdf-inspector ruby-rouge
1863 ruby-rspec))
1864 (propagated-inputs
1865 `(("ruby-asciidoctor" ,ruby-asciidoctor)
1866 ("ruby-concurrent-ruby" ,ruby-concurrent)
1867 ("ruby-open-uri-cached" ,ruby-open-uri-cached)
1868 ("ruby-prawn" ,ruby-prawn)
1869 ("ruby-prawn-icon" ,ruby-prawn-icon)
1870 ("ruby-prawn-svg" ,ruby-prawn-svg)
1871 ("ruby-prawn-table" ,ruby-prawn-table)
1872 ("ruby-prawn-templates" ,ruby-prawn-templates)
1873 ("ruby-safe-yaml" ,ruby-safe-yaml)
1874 ("ruby-text-hyphen" ,ruby-text-hyphen)
1875 ("ruby-thread-safe" ,ruby-thread-safe)
1876 ("ruby-treetop" ,ruby-treetop)
1877 ("ruby-ttfunk" ,ruby-ttfunk)))
1878 (synopsis"AsciiDoc to Portable Document Format (PDF)} converter")
1879 (description "Asciidoctor PDF is an extension for Asciidoctor that
1880converts AsciiDoc documents to Portable Document Format (PDF) using the Prawn
1881PDF library. It has features such as:
1882@itemize
1883@item Direct AsciiDoc to PDF conversion
1884@item Configuration-driven theme (style and layout)
1885@item Scalable Vector Graphics (SVG) support
1886@item PDF document outline (i.e., bookmarks)
1887@item Table of contents page(s)
1888@item Document metadata (title, authors, subject, keywords, etc.)
1889@item Internal cross reference links
1890@item Syntax highlighting with Rouge, Pygments, or CodeRay
1891@item Page numbering
1892@item Customizable running content (header and footer)
1893@item
1894“Keep together” blocks (i.e., page breaks avoided in certain block content)
1895@item Orphaned section titles avoided
1896@item Autofit verbatim blocks (as permitted by base_font_size_min setting)
1897@item Table border settings honored
1898@item Font-based icons
1899@item Custom TrueType (TTF) fonts
1900@item Double-sided printing mode (margins alternate on recto and verso pages)
1901@end itemize")
1902 (home-page "https://asciidoctor.org/docs/asciidoctor-pdf")
1903 (license license:expat)))
1904
1905(define-public ruby-ast
1906 (package
1907 (name "ruby-ast")
1908 (version "2.4.2")
1909 (source
1910 (origin
1911 (method git-fetch) ;no test included in gem from v2.4.1
1912 (uri (git-reference
1913 (url "https://github.com/whitequark/ast")
1914 (commit (string-append "v" version))))
1915 (file-name (git-file-name name version))
1916 (sha256
1917 (base32
1918 "0vm94yml8rknr7z034vg6s3fpx6lml2prz9fn3hr67cx0143bb4h"))))
1919 (build-system ruby-build-system)
1920 (arguments
1921 '(#:phases
1922 (modify-phases %standard-phases
1923 (add-after 'unpack 'remove-coveralls-requirement
1924 (lambda _
1925 (substitute* "test/helper.rb"
1926 (("require 'coveralls'") "")
1927 (("Coveralls::SimpleCov::Formatter") ""))
1928 #t))
1929 (add-after 'extract-gemspec 'remove-unnecessary-requirements
1930 (lambda* (#:key inputs #:allow-other-keys)
1931 (substitute* "ast.gemspec"
1932 ((".*coveralls.*") "\n")
1933 (("%q<rest-client>.*") "%q<rest-client>.freeze, [\">= 0\"])\n")
1934 (("%q<mime-types>.*") "%q<mime-types>.freeze, [\">= 0\"])\n")
1935 (("%q<rake>.*") "%q<rake>.freeze, [\">= 0\"])\n")
1936 (("12\\.3") "13.0"))
1937 #t)))))
1938 (native-inputs
1939 (list bundler
1940 ruby-bacon
1941 ruby-bacon-colored-output
1942 ruby-json-pure
1943 ruby-kramdown
1944 ruby-mime-types
1945 ruby-racc
1946 ruby-rest-client
1947 ruby-simplecov
1948 ruby-yard))
1949 (synopsis "Library for working with Abstract Syntax Trees")
1950 (description
1951 "@code{ast} is a Ruby library for working with Abstract Syntax Trees.
1952It does this through immutable data structures.")
1953 (home-page "https://whitequark.github.io/ast/")
1954 (license license:expat)))
1955
1956(define-public ruby-sporkmonger-rack-mount
1957 ;; Testing the addressable gem requires a newer commit than that released, so
1958 ;; use an up to date version.
1959 (let ((revision "1")
1960 (commit "076aa2c47d9a4c081f1e9bcb56a826a9e72bd5c3"))
1961 (package
1962 (name "ruby-sporkmonger-rack-mount")
1963 (version (git-version "0.8.3" revision commit))
1964 (source (origin
1965 (method git-fetch)
1966 (uri (git-reference
1967 (url "https://github.com/sporkmonger/rack-mount")
1968 (commit commit)))
1969 (file-name (git-file-name name version))
1970 (sha256
1971 (base32
1972 "1scx273g3xd93424x9lxc4zyvcp2niknbw5mkz6wkivpf7xsyxdq"))))
1973 (build-system ruby-build-system)
1974 (arguments
1975 ;; Tests currently fail so disable them.
1976 ;; https://github.com/sporkmonger/rack-mount/pull/1
1977 `(#:tests? #f))
1978 (propagated-inputs (list ruby-rack))
1979 (synopsis "Stackable dynamic tree based Rack router")
1980 (description
1981 "@code{Rack::Mount} supports Rack's @code{X-Cascade} convention to
1982continue trying routes if the response returns pass. This allows multiple
1983routes to be nested or stacked on top of each other.")
1984 (home-page "https://github.com/sporkmonger/rack-mount")
1985 (license license:expat))))
1986
1987(define-public ruby-ci-reporter
1988 (package
1989 (name "ruby-ci-reporter")
1990 (version "2.0.0")
1991 (source (origin
1992 (method url-fetch)
1993 (uri (rubygems-uri "ci_reporter" version))
1994 (sha256
1995 (base32
1996 "17fm20jmw3ajdryhkkxpjahcfx7bgswqzxrskivlkns2718ayyyg"))))
1997 (build-system ruby-build-system)
1998 (arguments
1999 `(#:test-target "rspec"))
2000 (propagated-inputs
2001 (list ruby-builder))
2002 (native-inputs
2003 (list bundler ruby-rspec))
2004 (synopsis "Generate XML reports of runs test")
2005 (description
2006 "@code{CI::Reporter} is an add-on to Ruby testing frameworks that allows
2007you to generate XML reports of your test runs. The resulting files can be
2008read by a continuous integration system that understands Ant's JUnit report
2009format.")
2010 (home-page "https://github.com/nicksieger/ci_reporter")
2011 (license license:expat)))
2012
2013(define-public ruby-contracts
2014 (package
2015 (name "ruby-contracts")
2016 (version "0.16.0")
2017 (source
2018 (origin
2019 (method url-fetch)
2020 (uri (rubygems-uri "contracts" version))
2021 (sha256
2022 (base32
2023 "119f5p1n6r5svbx8h09za6a4vrsnj5i1pzr9cqdn9hj3wrxvyl3a"))))
2024 (build-system ruby-build-system)
2025 (arguments
2026 '(#:test-target "spec"
2027 #:phases
2028 (modify-phases %standard-phases
2029 ;; Don't run or require rubocop, the code linting tool, as this is a
2030 ;; bit unnecessary.
2031 (add-after 'unpack 'dont-run-rubocop
2032 (lambda _
2033 (substitute* "Rakefile"
2034 ((".*rubocop.*") "")
2035 ((".*RuboCop.*") ""))
2036 #t)))))
2037 (native-inputs
2038 (list ruby-rspec))
2039 (synopsis "Method contracts for Ruby")
2040 (description
2041 "This library provides contracts for Ruby. A contract describes the
2042correct inputs and output for a method, and will raise an error if a incorrect
2043value is found.")
2044 (home-page "https://github.com/egonSchiele/contracts.ruby")
2045 (license license:bsd-2)))
2046
2047(define-public ruby-crack
2048 (package
2049 (name "ruby-crack")
2050 (version "0.4.5")
2051 (source
2052 (origin
2053 (method url-fetch)
2054 (uri (rubygems-uri "crack" version))
2055 (sha256
2056 (base32
2057 "1cr1kfpw3vkhysvkk3wg7c54m75kd68mbm9rs5azdjdq57xid13r"))))
2058 (build-system ruby-build-system)
2059 (arguments
2060 `(#:phases
2061 (modify-phases %standard-phases
2062 (replace 'check
2063 (lambda* (#:key tests? #:allow-other-keys)
2064 (when tests?
2065 (for-each (lambda (file)
2066 (display file)(display "\n")
2067 (invoke "ruby" "-Ilib" "-Itest" "-rrubygems" file))
2068 (find-files "test" ".*rb$")))
2069 #t)))))
2070 (synopsis "Simple JSON and XML parsing for Ruby")
2071 (description
2072 "@code{crack} provides really simple JSON and XML parsing, extracted from
2073code in Merb and Rails.")
2074 (home-page "https://github.com/jnunemaker/crack")
2075 (license license:expat)))
2076
2077(define-public ruby-cliver
2078 (package
2079 (name "ruby-cliver")
2080 (version "0.3.2")
2081 (source
2082 (origin
2083 (method url-fetch)
2084 (uri (rubygems-uri "cliver" version))
2085 (sha256
2086 (base32
2087 "096f4rj7virwvqxhkavy0v55rax10r4jqf8cymbvn4n631948xc7"))))
2088 (build-system ruby-build-system)
2089 (arguments
2090 '(#:phases
2091 (modify-phases %standard-phases
2092 ;; Avoid a incompatibility between rspec@2 and rake. Using rspec@3
2093 ;; would be nice, but the tests look to be incompatible:
2094 ;;
2095 ;; NoMethodError: undefined method `last_comment'
2096 (replace 'check
2097 (lambda* (#:key tests? #:allow-other-keys)
2098 (when tests?
2099 (invoke "rspec"))
2100 #t)))))
2101 (native-inputs
2102 (list bundler ruby-rspec-2))
2103 (synopsis "Assertions for command-line dependencies in Ruby")
2104 (description
2105 "@code{cliver} provides a way to detect missing command-line
2106dependencies, including versions.")
2107 (home-page "https://github.com/yaauie/cliver")
2108 (license license:expat)))
2109
2110(define-public ruby-czmq-ffi-gen
2111 (package
2112 (name "ruby-czmq-ffi-gen")
2113 (version "0.13.0")
2114 (source
2115 (origin
2116 (method url-fetch)
2117 (uri (rubygems-uri "czmq-ffi-gen" version))
2118 (sha256
2119 (base32
2120 "1yf719dmf4mwks1hqdsy6i5kzfvlsha69sfnhb2fr2cgk2snbys3"))))
2121 (build-system ruby-build-system)
2122 (arguments
2123 '(#:tests? #f ;; Tests are not included in the release on rubygems.org
2124 #:phases
2125 (modify-phases %standard-phases
2126 (add-after 'unpack 'patch-lib_dirs
2127 (lambda* (#:key inputs #:allow-other-keys)
2128 (substitute* "lib/czmq-ffi-gen/czmq/ffi.rb"
2129 (("lib\\_dirs = \\[.*\\]")
2130 (string-append "lib_dirs = ['"
2131 (assoc-ref inputs "czmq") "/lib"
2132 "']")))
2133 (substitute* "lib/czmq-ffi-gen/libzmq.rb"
2134 (("lib\\_dirs = \\[.*\\]")
2135 (string-append "lib_dirs = ['"
2136 (assoc-ref inputs "zeromq") "/lib"
2137 "']"))))))))
2138 (inputs
2139 (list zeromq czmq))
2140 (propagated-inputs (list ruby-ffi))
2141 (synopsis "Low-level Ruby bindings for CZMQ (generated using zproject)")
2142 (description
2143 "These Ruby bindings are not intended to be directly used, but rather
2144used by higher level bindings like those provided by CZTop.")
2145 (home-page
2146 "https://github.com/paddor/czmq-ffi-gen")
2147 (license license:isc)))
2148
2149(define-public ruby-cztop
2150 (package
2151 (name "ruby-cztop")
2152 (version "0.12.2")
2153 (source
2154 (origin
2155 (method url-fetch)
2156 (uri (rubygems-uri "cztop" version))
2157 (sha256
2158 (base32
2159 "0yqbpaiw5d7f271d73lyrsh8xpx6n4zi6xqwfgi00dacxrq3s3fa"))))
2160 (build-system ruby-build-system)
2161 (arguments
2162 '(#:test-target "spec"
2163 #:phases
2164 (modify-phases %standard-phases
2165 (add-after 'unpack 'patch-lib_paths
2166 (lambda* (#:key inputs #:allow-other-keys)
2167 (substitute* "lib/cztop/poller/zmq.rb"
2168 (("lib\\_paths = \\[.*\\]")
2169 (string-append "lib_paths = ['"
2170 (assoc-ref inputs "zeromq") "/lib"
2171 "']"))))))))
2172 (native-inputs
2173 (list bundler ruby-rspec))
2174 (inputs
2175 (list zeromq))
2176 (propagated-inputs
2177 (list ruby-czmq-ffi-gen))
2178 (synopsis "CZMQ Ruby bindings")
2179 (description
2180 "CZMQ Ruby bindings, based on the generated low-level FFI bindings of
2181CZMQ. The focus of of CZTop is on being easy to use and providing first class
2182support for security mechanisms.")
2183 (home-page "https://github.com/paddor/cztop")
2184 (license license:isc)))
2185
2186(define-public ruby-saikuro-treemap
2187 (package
2188 (name "ruby-saikuro-treemap")
2189 (version "0.2.0")
2190 (source (origin
2191 (method url-fetch)
2192 (uri (rubygems-uri "saikuro_treemap" version))
2193 (sha256
2194 (base32
2195 "0w70nmh43mwfbpq20iindl61siqqr8acmf7p3m7n5ipd61c24950"))))
2196 (build-system ruby-build-system)
2197 ;; Some of the tests fail because the generated JSON has keys in a
2198 ;; different order. This is a problem with the test suite rather than any
2199 ;; of the involved libraries.
2200 (arguments `(#:tests? #f))
2201 (propagated-inputs
2202 (list ruby-json-pure ruby-atoulme-saikuro))
2203 (synopsis "Generate complexity treemap based on saikuro analysis")
2204 (description
2205 "This gem generates a treemap showing the complexity of Ruby code on
2206which it is run. It uses Saikuro under the covers to analyze Ruby code
2207complexity.")
2208 (home-page "https://github.com/ThoughtWorksStudios/saikuro_treemap")
2209 (license license:expat)))
2210
2211(define-public ruby-oauth2
2212 (package
2213 (name "ruby-oauth2")
2214 (version "1.4.2")
2215 (source
2216 (origin
2217 (method url-fetch)
2218 (uri (rubygems-uri "oauth2" version))
2219 (sha256
2220 (base32 "15i9z4j5pcjkr30lkcd79xzbr4kpmy0bqgwa436fqyqk646fv036"))))
2221 (build-system ruby-build-system)
2222 (arguments
2223 '(#:tests? #f)) ; no included tests
2224 (propagated-inputs
2225 (list ruby-faraday ruby-jwt ruby-multi-json ruby-multi-xml
2226 ruby-rack))
2227 (synopsis "Ruby wrapper for the OAuth 2.0")
2228 (description
2229 "This package provides a Ruby wrapper for the OAuth 2.0 protocol built
2230with a similar style to the original OAuth spec.")
2231 (home-page "https://github.com/oauth-xx/oauth2")
2232 (license license:expat)))
2233
2234(define-public ruby-omniauth
2235 (package
2236 (name "ruby-omniauth")
2237 (version "2.0.3")
2238 (source
2239 (origin
2240 (method url-fetch)
2241 (uri (rubygems-uri "omniauth" version))
2242 (sha256
2243 (base32 "105mzgvmn2kjaacxw01h4wqv33r7hfn5z8fxlkk3jcjar14j71bh"))))
2244 (build-system ruby-build-system)
2245 (propagated-inputs
2246 (list ruby-hashie ruby-rack ruby-rack-protection))
2247 (native-inputs
2248 (list ruby-rspec))
2249 (synopsis "Generalized Rack framework for multiple-provider authentication")
2250 (description
2251 "This package provides a generalized Rack framework for multiple-provider
2252authentication.")
2253 (home-page "https://github.com/omniauth/omniauth")
2254 (license license:expat)))
2255
2256(define-public ruby-omniauth-oauth2
2257 (package
2258 (name "ruby-omniauth-oauth2")
2259 (version "1.7.1")
2260 (source
2261 (origin
2262 (method url-fetch)
2263 (uri (rubygems-uri "omniauth-oauth2" version))
2264 (sha256
2265 (base32
2266 "10fr2b58sp7l6nfdvxpbi67374hkrvsf507cvda89jjs0jacy319"))))
2267 (build-system ruby-build-system)
2268 (arguments
2269 '(#:phases
2270 (modify-phases %standard-phases
2271 (add-after 'unpack 'remove-unnecessary-dependencies
2272 (lambda _
2273 ;; The coveralls gem submits coverage information to an online
2274 ;; service, and is unnecessary when running the tests
2275 (substitute* "Gemfile"
2276 ((".*coveralls\"") ""))
2277 (substitute* "spec/helper.rb"
2278 (("require \"coveralls\"") "")
2279 (("Coveralls::SimpleCov::Formatter") ""))
2280 #t)))))
2281 (propagated-inputs
2282 (list ruby-oauth2 ruby-omniauth))
2283 (native-inputs
2284 (list bundler ruby-rspec ruby-simplecov ruby-rack-test ruby-webmock))
2285 (synopsis "Abstract OAuth2 strategy for OmniAuth")
2286 (description
2287 "This library provides a generic OAuth2 strategy for OmniAuth. It
2288doesn't provide a way to gather user information, so should be used as a
2289building block for authentication strategies.")
2290 (home-page "https://github.com/omniauth/omniauth-oauth2")
2291 (license license:expat)))
2292
2293(define-public ruby-open4
2294 (package
2295 (name "ruby-open4")
2296 (version "1.3.4")
2297 (source
2298 (origin
2299 (method url-fetch)
2300 (uri (rubygems-uri "open4" version))
2301 (sha256
2302 (base32
2303 "1cgls3f9dlrpil846q0w7h66vsc33jqn84nql4gcqkk221rh7px1"))))
2304 (build-system ruby-build-system)
2305 (arguments
2306 '(#:phases
2307 (modify-phases %standard-phases
2308 (add-after 'unpack 'patch
2309 (lambda _
2310 (substitute* "rakefile"
2311 ;; Update the Rakefile so it works
2312 (("-rubygems") "-rrubygems")
2313 (("Config") "RbConfig"))
2314 #t))
2315 (add-before 'check 'set-LIB
2316 (lambda _
2317 ;; This is used in the rakefile when running the tests
2318 (setenv "LIB" "open4")
2319 #t)))))
2320 (synopsis "Open child processes from Ruby and manage them easily")
2321 (description
2322 "@code{Open4} is a Ruby library to run child processes and manage their
2323input and output.")
2324 (home-page "https://github.com/ahoward/open4")
2325 (license license:ruby)))
2326
2327(define-public ruby-options
2328 (package
2329 (name "ruby-options")
2330 (version "2.3.2")
2331 (source
2332 (origin
2333 (method url-fetch)
2334 (uri (rubygems-uri "options" version))
2335 (sha256
2336 (base32
2337 "1s650nwnabx66w584m1cyw82icyym6hv5kzfsbp38cinkr5klh9j"))))
2338 (build-system ruby-build-system)
2339 (arguments
2340 '(#:tests? #f ;; TODO: NameError: uninitialized constant Config
2341 #:phases
2342 (modify-phases %standard-phases
2343 (add-before 'check 'set-LIB
2344 (lambda _
2345 ;; This is used in the Rakefile, and setting it avoids an issue
2346 ;; with running the tests.
2347 (setenv "LIB" "options")
2348 #t)))))
2349 (synopsis "Ruby library to parse options from *args cleanly")
2350 (description
2351 "The @code{options} library helps with parsing keyword options in Ruby
2352functions.")
2353 (home-page "https://github.com/ahoward/options")
2354 (license license:ruby)))
2355
2356(define-public ruby-erubi
2357 (package
2358 (name "ruby-erubi")
2359 (version "1.8.0")
2360 (source
2361 (origin
2362 (method url-fetch)
2363 (uri (rubygems-uri "erubi" version))
2364 (sha256
2365 (base32
2366 "1kagnf6ziahj0d781s6ryy6fwqwa3ad4xbzzj84p9m4nv4c2jir1"))))
2367 (build-system ruby-build-system)
2368 (synopsis "ERB template engine for Ruby")
2369 (description
2370 "Erubi is a ERB template engine for Ruby. It is a simplified fork of
2371Erubis")
2372 (home-page "https://github.com/jeremyevans/erubi")
2373 (license license:expat)))
2374
2375(define-public ruby-erubis
2376 (package
2377 (name "ruby-erubis")
2378 (version "2.7.0")
2379 (source
2380 (origin
2381 (method url-fetch)
2382 (uri (rubygems-uri "erubis" version))
2383 (sha256
2384 (base32
2385 "1fj827xqjs91yqsydf0zmfyw9p4l2jz5yikg3mppz6d7fi8kyrb3"))))
2386 (build-system ruby-build-system)
2387 (arguments
2388 '(#:tests? #f)) ; tests do not run properly with Ruby 2.0
2389 (synopsis "Implementation of embedded Ruby (eRuby)")
2390 (description
2391 "Erubis is a fast implementation of embedded Ruby (eRuby) with several
2392features such as multi-language support, auto escaping, auto trimming spaces
2393around @code{<% %>}, a changeable embedded pattern, and Ruby on Rails
2394support.")
2395 (home-page "http://www.kuwata-lab.com/erubis/")
2396 (license license:expat)))
2397
2398(define-public ruby-ethon
2399 (package
2400 (name "ruby-ethon")
2401 (version "0.12.0")
2402 (source
2403 (origin
2404 (method url-fetch)
2405 (uri (rubygems-uri "ethon" version))
2406 (sha256
2407 (base32
2408 "0gggrgkcq839mamx7a8jbnp2h7x2ykfn34ixwskwb0lzx2ak17g9"))))
2409 (build-system ruby-build-system)
2410 (arguments
2411 `(#:tests? #f)) ; no included tests
2412 (inputs
2413 (list curl))
2414 (propagated-inputs
2415 (list ruby-ffi))
2416 (synopsis "Very lightweight @code{libcurl} wrapper")
2417 (description
2418 "Ethon is a very basic @code{libcurl} wrapper using ffi.")
2419 (home-page "https://github.com/typhoeus/ethon")
2420 (license license:expat)))
2421
2422(define-public ruby-execjs
2423 (package
2424 (name "ruby-execjs")
2425 (version "2.7.0")
2426 (source
2427 (origin
2428 ;; fetch from github as the gem does not contain testing code
2429 (method git-fetch)
2430 (uri (git-reference
2431 (url "https://github.com/rails/execjs")
2432 (commit (string-append "v" version))))
2433 (file-name (git-file-name name version))
2434 (sha256
2435 (base32
2436 "0c0vd2mmqq3ar4plbwi2wsbr31vn4h45i19r5km66skydnnbp1y6"))))
2437 (build-system ruby-build-system)
2438 (native-inputs
2439 (list bundler
2440 ;; The test suite tests all the available backends. Currenly, this just
2441 ;; means the node backend.
2442 ;;
2443 ;; PASSED: test:node
2444 ;; SKIPPED: test:duktape, ;; test:javascriptcore, test:jscript,
2445 ;; test:miniracer, test:rubyracer, ;; test:rubyrhino, test:v8
2446 node))
2447 (synopsis "Run JavaScript code from Ruby")
2448 (description
2449 "ExecJS lets you run JavaScript code from Ruby. It automatically picks a
2450runtime to evaluate your JavaScript program, then returns the result to you as
2451a Ruby object.")
2452 (home-page "https://github.com/rails/execjs")
2453 (license license:expat)))
2454
2455(define-public ruby-fakefs
2456 (package
2457 (name "ruby-fakefs")
2458 (version "1.2.2")
2459 (home-page "https://github.com/fakefs/fakefs")
2460 (source (origin
2461 ;; The Rubygems release does not contain tests.
2462 (method git-fetch)
2463 (uri (git-reference
2464 (url home-page)
2465 (commit (string-append "v" version))))
2466 (file-name (git-file-name name version))
2467 (sha256
2468 (base32
2469 "008dq9knyip2bfbl0mrk8b8r7bv0k3bf128wcfqsgy1rqal4mgwk"))))
2470 (build-system ruby-build-system)
2471 (arguments
2472 '(#:phases (modify-phases %standard-phases
2473 (replace 'replace-git-ls-files
2474 (lambda _
2475 (substitute* "fakefs.gemspec"
2476 (("`git ls-files lib README.md LICENSE`")
2477 "`find lib README.md LICENSE -type f | sort`"))
2478 #t))
2479 (add-before 'check 'remove-version-constraints
2480 (lambda _
2481 ;; Drop hard version requirements for test dependencies.
2482 (substitute* "fakefs.gemspec"
2483 (("(.*add_development_dependency .*), .*" _ dep)
2484 (string-append dep "\n")))
2485 #t)))))
2486 (native-inputs
2487 (list ruby-bump ruby-maxitest ruby-rubocop ruby-rspec))
2488 (synopsis "Fake file system for Ruby")
2489 (description
2490 "This package provides a fake file system for use in test suites. It
2491avoids the need for manually creating temporary directories, or dealing
2492with platform intricacies in @code{File} and @code{FileUtils}.")
2493 (license license:expat)))
2494
2495(define-public ruby-orderedhash
2496 (package
2497 (name "ruby-orderedhash")
2498 (version "0.0.6")
2499 (source (origin
2500 (method url-fetch)
2501 (uri (rubygems-uri "orderedhash" version))
2502 (sha256
2503 (base32
2504 "0fryy7f9jbpx33jq5m402yqj01zcg563k9fsxlqbhmq638p4bzd7"))))
2505 (build-system ruby-build-system)
2506 (arguments
2507 '(#:tests? #f)) ; no test suite
2508 (synopsis "Ruby library providing an order-preserving hash")
2509 (description "Orderedhash is a Ruby library providing a hash
2510implementation that preserves the order of items and features some array-like
2511extensions.")
2512 (home-page "http://codeforpeople.com/lib/ruby/orderedhash/")
2513 (license license:public-domain)))
2514
2515(define-public ruby-libxml
2516 (package
2517 (name "ruby-libxml")
2518 (version "3.0.0")
2519 (source
2520 (origin
2521 (method url-fetch)
2522 (uri (rubygems-uri "libxml-ruby" version))
2523 (sha256
2524 (base32
2525 "0xy8wmjwjcnv36zi042678ncjzpxvy351ccbv7mzkns2n3kxfp54"))))
2526 (build-system ruby-build-system)
2527 (inputs
2528 (list zlib libxml2))
2529 (arguments
2530 '(#:tests? #f ; test suite hangs for unknown reason
2531 #:gem-flags
2532 (list "--no-document" ; TODO: Re-enable when documentation
2533 ; generation works
2534 "--"
2535 (string-append "--with-xml2-include="
2536 (assoc-ref %build-inputs "libxml2")
2537 "/include/libxml2" ))))
2538 (synopsis "Ruby bindings for GNOME Libxml2")
2539 (description "The Libxml-Ruby project provides Ruby language bindings for
2540the GNOME Libxml2 XML toolkit.")
2541 (home-page "https://xml4r.github.com/libxml-ruby")
2542 (license license:expat)))
2543
2544(define-public ruby-lino
2545 (package
2546 (name "ruby-lino")
2547 (version "1.1.0")
2548 (source
2549 (origin
2550 (method url-fetch)
2551 (uri (rubygems-uri "lino" version))
2552 (sha256
2553 (base32
2554 "11d29g0fk372b9fcpyr0k6hxm2b4j4igpysmi542hgbbgqgp9cd3"))))
2555 (build-system ruby-build-system)
2556 (arguments
2557 '(#:tests? #f)) ; No included tests
2558 (propagated-inputs
2559 (list ruby-hamster ruby-open4))
2560 (synopsis "Build and execute commands in Ruby")
2561 (description
2562 "@code{Lino} provides an interface to run external commands. It provides
2563an interface to add options as well as managing the standard input, output and
2564error streams.")
2565 (home-page "https://github.com/tobyclemson/lino")
2566 (license license:expat)))
2567
2568(define-public ruby-xml-simple
2569 (package
2570 (name "ruby-xml-simple")
2571 (version "1.1.5")
2572 (source (origin
2573 (method url-fetch)
2574 (uri (rubygems-uri "xml-simple" version))
2575 (sha256
2576 (base32
2577 "0xlqplda3fix5pcykzsyzwgnbamb3qrqkgbrhhfz2a2fxhrkvhw8"))))
2578 (build-system ruby-build-system)
2579 (arguments
2580 '(#:tests? #f)) ; no test suite
2581 (synopsis "Simple Ruby library for XML processing")
2582 (description "This library provides a simple API for XML processing in
2583Ruby.")
2584 (home-page "https://github.com/maik/xml-simple")
2585 (license license:ruby)))
2586
2587(define-public ruby-thor
2588 (package
2589 (name "ruby-thor")
2590 (version "1.0.1")
2591 (source (origin
2592 ;; Pull from git because the gem has no tests.
2593 (method git-fetch)
2594 (uri (git-reference
2595 (url "https://github.com/erikhuda/thor")
2596 (commit (string-append "v" version))))
2597 (file-name (git-file-name name version))
2598 (sha256
2599 (base32
2600 "1anrx5vynk57hn5c8ig5pgkmcsbj9q5mvckd5rviw1jid7n89k57"))))
2601 (build-system ruby-build-system)
2602 (arguments
2603 '(#:phases (modify-phases %standard-phases
2604 (add-after 'unpack 'fix-readline-tests
2605 (lambda _
2606 ;; Ensure Readline is initialized before running the
2607 ;; test to avoid a type clash with the mock ::Readline.
2608 ;; See <https://github.com/erikhuda/thor/pull/717>.
2609 (substitute* "spec/line_editor/readline_spec.rb"
2610 (("unless defined\\? ::Readline" all)
2611 (string-append "Thor::LineEditor::Readline.available?\n"
2612 all)))
2613 #t))
2614 (add-after 'unpack 'remove-coveralls-dependency
2615 (lambda _
2616 ;; Do not hook the test suite into the online
2617 ;; coveralls service.
2618 (substitute* "Gemfile"
2619 ((".*coveralls.*") ""))
2620 (substitute* "spec/helper.rb"
2621 (("require \"coveralls\"") "")
2622 (("Coveralls::SimpleCov::Formatter") "")
2623 ;; Also drop the WebMock dependency which is only
2624 ;; present to allow a coveralls.io connection, and
2625 ;; would otherwise introduce a circular dependency.
2626 (("require \"webmock/rspec\"") "")
2627 (("WebMock\\.disable_net_connect.*") ""))
2628 #t))
2629 (add-after 'unpack 'disable-network-tests
2630 (lambda _
2631 ;; These tests attempt to look up example.com.
2632 (substitute* "spec/actions/file_manipulation_spec.rb"
2633 (("it \"accepts (https?) remote sources" _ proto)
2634 (string-append "xit \"accepts " proto " remote sources")))
2635 #t))
2636 (add-after 'unpack 'disable-quality-tests
2637 (lambda _
2638 ;; These tests attempt to check the git repository for
2639 ;; tabs vs spaces, double vs single quotes, etc, and
2640 ;; depend on the git checkout.
2641 (delete-file "spec/quality_spec.rb")
2642 #t))
2643 (add-before 'check 'make-files-writable
2644 (lambda _
2645 ;; The tests needs rw access to the test suite.
2646 (for-each make-file-writable (find-files "spec"))
2647 #t))
2648 (replace 'check
2649 (lambda _
2650 (invoke "rspec" "spec"))))))
2651 (native-inputs
2652 (list ruby-rspec ruby-simplecov))
2653 (synopsis "Ruby toolkit for building command-line interfaces")
2654 (description "Thor is a toolkit for building powerful command-line
2655interfaces.")
2656 (home-page "http://whatisthor.com/")
2657 (license license:expat)))
2658
2659(define-public ruby-lumberjack
2660 (package
2661 (name "ruby-lumberjack")
2662 (version "1.0.13")
2663 (source (origin
2664 (method url-fetch)
2665 (uri (rubygems-uri "lumberjack" version))
2666 (sha256
2667 (base32
2668 "06im7gcg42x77yhz2w5da2ly9xz0n0c36y5ks7xs53v0l9g0vf5n"))))
2669 (build-system ruby-build-system)
2670 (native-inputs
2671 (list ruby-rspec ruby-timecop))
2672 (synopsis "Logging utility library for Ruby")
2673 (description "Lumberjack is a simple logging utility that can be a drop in
2674replacement for Logger or ActiveSupport::BufferedLogger. It provides support
2675for automatically rolling log files even with multiple processes writing the
2676same log file.")
2677 (home-page "https://github.com/bdurand/lumberjack")
2678 (license license:expat)))
2679
2680(define-public ruby-rbnacl
2681 (package
2682 (name "ruby-rbnacl")
2683 (version "6.0.1")
2684 (source
2685 (origin
2686 (method url-fetch)
2687 (uri (rubygems-uri "rbnacl" version))
2688 (sha256
2689 (base32
2690 "0ajxy5kj2jw09wdsla3jmha8w07vj5l14288xr9djpl327g3lzhn"))))
2691 (build-system ruby-build-system)
2692 (arguments
2693 `(#:phases
2694 (modify-phases %standard-phases
2695 (add-after 'unpack 'remove-unnecessary-dependencies
2696 (lambda _
2697 ;; Coveralls relates to a network service, and Rubocop to code
2698 ;; linting and both are unnecessary to run the tests
2699 (substitute* "Gemfile"
2700 ((".*rubocop.*") "\n")
2701 ((".*guard-rspec.*") "\n")
2702 ((".*coveralls.*") "\n"))
2703 (substitute* "spec/spec_helper.rb"
2704 (("require \"coveralls\"") "")
2705 (("Coveralls.wear!") ""))
2706 #t))
2707 (add-after 'unpack 'use-libsodium-from-store
2708 (lambda* (#:key inputs #:allow-other-keys)
2709 (substitute* '("lib/rbnacl/init.rb"
2710 "lib/rbnacl/sodium.rb")
2711 (("ffi_lib \\[.+\\]")
2712 (string-append "ffi_lib [\""
2713 (assoc-ref inputs "libsodium") "/lib/libsodium.so"
2714 "\"]")))
2715 #t))
2716 ;; Run Rspec directly to avoid the Rubocop dependency in the Rakefile
2717 (replace 'check
2718 (lambda* (#:key tests? #:allow-other-keys)
2719 (when tests?
2720 (invoke "rspec"))
2721 #t)))))
2722 (propagated-inputs
2723 (list ruby-ffi))
2724 (inputs
2725 (list libsodium))
2726 (native-inputs
2727 (list bundler ruby-rspec))
2728 (synopsis "Ruby FFI binding to libsodium")
2729 (description
2730 "This package provides Ruby FFI bindings to the Networking and
2731Cryptography (NaCl) library, also known as libsodium. This provides a
2732high-level toolkit for building cryptographic systems and protocols.")
2733 (home-page "https://github.com/crypto-rb/rbnacl")
2734 (license license:expat)))
2735
2736(define-public ruby-hkdf
2737 (package
2738 (name "ruby-hkdf")
2739 (version "1.0.0")
2740 (source
2741 (origin
2742 (method git-fetch)
2743 (uri (git-reference
2744 (url "https://github.com/jtdowney/hkdf")
2745 (commit (string-append "v" version))))
2746 (file-name (git-file-name name version))
2747 (sha256
2748 (base32
2749 "1xqwdmxfnhagivwgb5v9ilwpb4jxlsqwj7pnj43d65zzg5m8p9r5"))))
2750 (build-system ruby-build-system)
2751 (arguments
2752 `(#:test-target "default"))
2753 (native-inputs
2754 (list ruby-rspec))
2755 (synopsis "HMAC-based Key Derivation Function")
2756 (description
2757 "This package provides a Ruby implementation of RFC5869: @acronym{HKDF,
2758HMAC-based Extract-and-Expand Key Derivation Function}. The goal of HKDF is to
2759take some source key material and generate suitable cryptographic keys from it.")
2760 (home-page "https://github.com/jtdowney/hkdf")
2761 (license license:expat)))
2762
2763(define-public ruby-nenv
2764 (package
2765 (name "ruby-nenv")
2766 (version "0.3.0")
2767 (source (origin
2768 (method url-fetch)
2769 (uri (rubygems-uri "nenv" version))
2770 (sha256
2771 (base32
2772 "0r97jzknll9bhd8yyg2bngnnkj8rjhal667n7d32h8h7ny7nvpnr"))))
2773 (build-system ruby-build-system)
2774 (arguments
2775 `(#:tests? #f)) ; no tests included
2776 (native-inputs
2777 (list ruby-rspec bundler))
2778 (synopsis "Ruby interface for modifying the environment")
2779 (description "Nenv provides a convenient wrapper for Ruby's ENV to modify
2780and inspect the environment.")
2781 (home-page "https://github.com/e2/nenv")
2782 (license license:expat)))
2783
2784(define-public ruby-ptools
2785 (package
2786 (name "ruby-ptools")
2787 (version "1.3.5")
2788 (source (origin
2789 (method url-fetch)
2790 (uri (rubygems-uri "ptools" version))
2791 (sha256
2792 (base32
2793 "1jb1h1nsk9zwykpniw8filbsk26kjsdlpk5wz6w0zyamcd41h87j"))))
2794 (build-system ruby-build-system)
2795 (arguments
2796 '(#:phases (modify-phases %standard-phases
2797 (add-after 'unpack 'patch-/bin/ls
2798 (lambda _
2799 (substitute* "test/test_binary.rb"
2800 (("/bin/ls")
2801 (which "ls")))
2802 #t))
2803 (add-before 'install 'create-gem
2804 (lambda _
2805 ;; Do not attempt to sign the gem.
2806 (substitute* "Rakefile"
2807 (("spec\\.signing_key = .*")
2808 ""))
2809 (invoke "rake" "gem:create"))))))
2810 (synopsis "Extra methods for Ruby's @code{File} class")
2811 (description
2812 "The @dfn{ptools} (power tools) library extends Ruby's core @code{File}
2813class with many additional methods modelled after common POSIX tools, such as
2814@code{File.which} for finding executables, @code{File.tail} to print the last
2815lines of a file, @code{File.wc} to count words, and so on.")
2816 (home-page "https://github.com/djberg96/ptools")
2817 (license license:artistic2.0)))
2818
2819(define-public ruby-permutation
2820 (package
2821 (name "ruby-permutation")
2822 (version "0.1.8")
2823 (source (origin
2824 (method url-fetch)
2825 (uri (rubygems-uri "permutation" version))
2826 (sha256
2827 (base32
2828 "13crwk2vfbzv99czva7881027dbcnidihmvx2jc58z2vm3bp9sl8"))))
2829 (build-system ruby-build-system)
2830 (arguments
2831 `(#:phases
2832 (modify-phases %standard-phases
2833 (add-after 'unpack 'fix-rakefile
2834 (lambda _
2835 (substitute* "Rakefile"
2836 (("require 'rake/gempackagetask'")
2837 "require 'rubygems/package_task'")
2838 (("include Config") ""))
2839 #t))
2840 (replace 'check
2841 (lambda _
2842 (invoke "ruby" "-Ilib" "test/test.rb"))))))
2843 (synopsis "Library to perform operations with sequence permutations")
2844 (description "This package provides a Ruby library to perform different
2845operations with permutations of sequences, such as strings and arrays.")
2846 (home-page "https://flori.github.io/permutation")
2847 (license license:gpl2))) ; GPL 2 only
2848
2849(define-public ruby-shellany
2850 (package
2851 (name "ruby-shellany")
2852 (version "0.0.1")
2853 (source (origin
2854 (method url-fetch)
2855 (uri (rubygems-uri "shellany" version))
2856 (sha256
2857 (base32
2858 "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf"))))
2859 (build-system ruby-build-system)
2860 (arguments
2861 `(#:test-target "default"
2862 #:phases
2863 (modify-phases %standard-phases
2864 (add-after 'unpack 'fix-version-test
2865 (lambda _
2866 (substitute* "spec/shellany_spec.rb"
2867 (("^RSpec") "require \"shellany\"\nRSpec"))
2868 #t)))))
2869 (native-inputs
2870 (list ruby-rspec ruby-nenv bundler))
2871 (synopsis "Capture command output")
2872 (description "Shellany is a Ruby library providing functions to capture
2873the output produced by running shell commands.")
2874 (home-page "https://rubygems.org/gems/shellany")
2875 (license license:expat)))
2876
2877(define-public ruby-notiffany
2878 (package
2879 (name "ruby-notiffany")
2880 (version "0.1.3")
2881 (source (origin
2882 (method url-fetch)
2883 (uri (rubygems-uri "notiffany" version))
2884 (sha256
2885 (base32
2886 "0f47h3bmg1apr4x51szqfv3rh2vq58z3grh4w02cp3bzbdh6jxnk"))))
2887 (build-system ruby-build-system)
2888 ;; Tests are not included in the gem.
2889 (arguments `(#:tests? #f))
2890 (propagated-inputs
2891 (list ruby-shellany ruby-nenv))
2892 (native-inputs
2893 (list bundler))
2894 (synopsis "Wrapper library for notification libraries")
2895 (description "Notiffany is a Ruby wrapper library for notification
2896libraries such as Libnotify.")
2897 (home-page "https://github.com/guard/notiffany")
2898 (license license:expat)))
2899
2900(define-public ruby-forking-test-runner
2901 (package
2902 (name "ruby-forking-test-runner")
2903 (version "1.6.0")
2904 (home-page "https://github.com/grosser/forking_test_runner")
2905 (source (origin
2906 (method git-fetch)
2907 (uri (git-reference (url home-page)
2908 (commit (string-append "v" version))))
2909 (file-name (git-file-name name version))
2910 (sha256
2911 (base32
2912 "1mrglzkj2nrgisccf2f30zbfmcs0awv1g3lw994b2az90fl39x8m"))))
2913 (build-system ruby-build-system)
2914 (arguments
2915 '(#:test-target "spec"
2916 ;; FIXME: ActiveRecord depends on sqlite3 1.3.6, but Guix has
2917 ;; 1.4.1, which in turn breaks the tests that use ActiveRecord.
2918 #:tests? #f
2919 #:phases (modify-phases %standard-phases
2920 (replace 'replace-git-ls-files
2921 (lambda _
2922 (substitute* "forking_test_runner.gemspec"
2923 (("`git ls-files lib/ bin/ MIT-LICENSE`")
2924 "`find lib/ bin/ MIT-LICENSE -type f | sort`"))
2925 #t))
2926 (add-before 'check 'remove-version-constraints
2927 (lambda _
2928 ;; Ignore hard coded version constraints for the tests.
2929 (delete-file "Gemfile.lock")
2930 #t))
2931 (add-before 'check 'set-HOME
2932 (lambda _
2933 ;; Many tests invoke Bundler, and fails when Bundler
2934 ;; warns that /homeless-shelter does not exist.
2935 (setenv "HOME" "/tmp")
2936 #t)))))
2937 (native-inputs
2938 (list ruby-activerecord ruby-bump ruby-rspec ruby-sqlite3 ruby-wwtd))
2939 (propagated-inputs
2940 (list ruby-parallel-tests))
2941 (synopsis "Run every test in a fork")
2942 (description
2943 "This package is a wrapper around @code{parallel_tests} that runs every
2944test in a fork to avoid pollution and get clean output per test.")
2945 (license license:expat)))
2946
2947(define-public ruby-formatador
2948 (package
2949 (name "ruby-formatador")
2950 (version "0.2.5")
2951 (source (origin
2952 (method url-fetch)
2953 (uri (rubygems-uri "formatador" version))
2954 (sha256
2955 (base32
2956 "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0"))))
2957 (build-system ruby-build-system)
2958 ;; Circular dependency: Tests require ruby-shindo, which requires
2959 ;; ruby-formatador at runtime.
2960 (arguments `(#:tests? #f))
2961 (synopsis "Ruby library to format text on stdout")
2962 (description "Formatador is a Ruby library to format text printed to the
2963standard output stream.")
2964 (home-page "https://github.com/geemus/formatador")
2965 (license license:expat)))
2966
2967(define-public ruby-fuubar
2968 (package
2969 (name "ruby-fuubar")
2970 (version "2.3.2")
2971 (source
2972 (origin
2973 ;; Fetch from the git repository, as the gem package doesn't include
2974 ;; the tests.
2975 (method git-fetch)
2976 (uri (git-reference
2977 (url "https://github.com/thekompanee/fuubar")
2978 (commit (string-append "releases/v" version))))
2979 (file-name (git-file-name name version))
2980 (sha256
2981 (base32
2982 "0jm1x2xp13csbnadixaikj7mlkp5yk4byx51npm56zi13izp7259"))))
2983 (build-system ruby-build-system)
2984 (arguments
2985 '(;; TODO: Some tests fail, unsure why.
2986 ;; 21 examples, 7 failures
2987 #:tests? #f
2988 #:phases
2989 (modify-phases %standard-phases
2990 (add-before 'build 'delete-certificate
2991 (lambda _
2992 ;; Remove 's.cert_chain' as we do not build with a private key
2993 (substitute* "fuubar.gemspec"
2994 ((".*cert_chain.*") "")
2995 ((".*signing_key.*") ""))
2996 #t))
2997 (replace 'check
2998 (lambda* (#:key tests? #:allow-other-keys)
2999 (when tests?
3000 (invoke "rspec"))
3001 #t)))))
3002 (native-inputs
3003 (list bundler))
3004 (propagated-inputs
3005 (list ruby-rspec-core ruby-progressbar))
3006 (synopsis "Fuubar is an RSpec formatter that uses a progress bar")
3007 (description
3008 "Fuubar is an RSpec formatter that uses a progress bar instead of a
3009string of letters and dots as feedback. It also stops on the first test
3010failure.")
3011 (home-page "https://github.com/thekompanee/fuubar")
3012 (license license:expat)))
3013
3014(define-public ruby-haml
3015 (package
3016 (name "ruby-haml")
3017 (version "5.0.4")
3018 (source
3019 (origin
3020 (method url-fetch)
3021 (uri (rubygems-uri "haml" version))
3022 (sha256
3023 (base32
3024 "1q0a9fvqh8kn6wm97fcks6qzbjd400bv8bx748w8v87m7p4klhac"))))
3025 (build-system ruby-build-system)
3026 (arguments
3027 '(#:tests? #f)) ; No included tests
3028 (propagated-inputs
3029 (list ruby-tilt ruby-temple))
3030 (synopsis "Haml is a Ruby library to generate HTML documents")
3031 (description
3032 "@acronym{Haml, HTML Abstraction Markup Language} is a layer on top of
3033HTML or XML that is designed to express the structure of documents using
3034indentation rather than closing tags. It was originally envisioned as a
3035plugin for Ruby on Rails, but it can function as a stand-alone templating
3036engine.")
3037 (home-page "https://haml.info/")
3038 (license license:expat)))
3039
3040(define-public ruby-hamster
3041 (package
3042 (name "ruby-hamster")
3043 (version "3.0.0")
3044 (source
3045 (origin
3046 (method url-fetch)
3047 (uri (rubygems-uri "hamster" version))
3048 (sha256
3049 (base32
3050 "1n1lsh96vnyc1pnzyd30f9prcsclmvmkdb3nm5aahnyizyiy6lar"))))
3051 (build-system ruby-build-system)
3052 (arguments
3053 '(#:phases
3054 (modify-phases %standard-phases
3055 (add-after 'unpack 'remove-unnecessary-dependencies
3056 (lambda _
3057 ;; pry is a debugging tool, and is unnecessary when running the
3058 ;; tests
3059 (substitute* "spec/lib/hamster/vector/insert_spec.rb"
3060 (("require 'pry'") ""))
3061 (substitute* "spec/spec_helper.rb"
3062 (("require \"pry\"") "")
3063 ;; CodeClimate is an online service, and is unnecessary for
3064 ;; running the tests
3065 (("require \"codeclimate-test-reporter\"") "")
3066 (("CodeClimate.*\n") ""))
3067 #t))
3068 ;; No Rakefile is included, so run rspec directly.
3069 (replace 'check
3070 (lambda* (#:key tests? #:allow-other-keys)
3071 (when tests?
3072 (invoke "rspec"))
3073 #t)))))
3074 (propagated-inputs
3075 (list ruby-concurrent))
3076 (native-inputs
3077 (list ruby-rspec))
3078 (synopsis "Efficient, immutable, thread-safe collection classes for Ruby")
3079 (description
3080 "Hamster provides 6 persistent data structures: @code{Hash}, @code{Vector},
3081@code{Set}, @code{SortedSet}, @code{List}, and @code{Deque} (which works as an
3082immutable queue or stack).")
3083 (home-page "https://github.com/hamstergem/hamster")
3084 (license license:expat)))
3085
3086(define-public ruby-hashdiff
3087 (package
3088 (name "ruby-hashdiff")
3089 (version "1.0.1")
3090 (source
3091 (origin
3092 (method url-fetch)
3093 (uri (rubygems-uri "hashdiff" version))
3094 (sha256
3095 (base32
3096 "1nynpl0xbj0nphqx1qlmyggq58ms1phf5i03hk64wcc0a17x1m1c"))))
3097 (build-system ruby-build-system)
3098 (arguments
3099 '(#:phases
3100 (modify-phases %standard-phases
3101 ;; Run tests directly via rspec to avoid depending on rubocop.
3102 (replace 'check
3103 (lambda* (#:key tests? #:allow-other-keys)
3104 (when tests?
3105 (invoke "rspec"))
3106 #t)))))
3107 (native-inputs
3108 (list bundler ruby-rspec-2))
3109 (synopsis "HashDiff computes the smallest difference between two hashes")
3110 (description
3111 "HashDiff is a Ruby library to compute the smallest difference between
3112two hashes.")
3113 (home-page "https://github.com/liufengyun/hashdiff")
3114 (license license:expat)))
3115
3116(define-public ruby-hydra-minimal
3117 ;; No releases yet.
3118 (let ((commit "5abfa378743756ae4d9306cc134bcc482f5c9525")
3119 (revision "0"))
3120 (package
3121 (name "ruby-hydra-minimal")
3122 (version (git-version "0.0" revision commit))
3123 (home-page "https://github.com/hyphenation/hydra")
3124 (source (origin
3125 (method git-fetch)
3126 (uri (git-reference (url home-page) (commit commit)))
3127 (file-name (git-file-name name version))
3128 ;; byebug is a non-essential debugging utility that brings in
3129 ;; many dependencies.
3130 (patches (search-patches "ruby-hydra-minimal-no-byebug.patch"))
3131 (sha256
3132 (base32
3133 "1cik398l2765y3d9sdhjzki3303hkry58ac6jlkiy7iy62nm529f"))))
3134 (build-system ruby-build-system)
3135 (arguments
3136 ;; Avoid rspec dependency.
3137 '(#:tests? #f))
3138 (synopsis "Ruby hyphenation patterns")
3139 (description
3140 "ruby-hydra-minimal is a Ruby library for working with hyphenation patterns.
3141It is a low-dependency variant of ruby-hydra.")
3142 (license license:expat))))
3143
3144(define-public ruby-hydra
3145 (package
3146 (inherit ruby-hydra-minimal)
3147 (name "ruby-hydra")
3148 (arguments
3149 '(#:phases (modify-phases %standard-phases
3150 (add-after 'unpack 'make-files-writable
3151 (lambda _
3152 (for-each make-file-writable (find-files "."))
3153 #t))
3154 (replace 'check
3155 (lambda _
3156 (invoke "rspec"))))))
3157 (native-inputs
3158 (list ruby-rspec))
3159 (propagated-inputs
3160 (list ruby-byebug))
3161 (description
3162 "ruby-hydra is a Ruby library for working with hyphenation patterns.")))
3163
3164(define-public ruby-shindo
3165 (package
3166 (name "ruby-shindo")
3167 (version "0.3.8")
3168 (source (origin
3169 (method url-fetch)
3170 (uri (rubygems-uri "shindo" version))
3171 (sha256
3172 (base32
3173 "0s8v1jbz8i0jh92f2fgxb3p51l1azrpkc8nv4mhrqy4vndpvd7wq"))))
3174 (build-system ruby-build-system)
3175 (arguments
3176 `(#:test-target "shindo_tests"
3177 #:phases
3178 (modify-phases %standard-phases
3179 (add-after 'unpack 'fix-tests
3180 (lambda _
3181 (substitute* "tests/tests_helper.rb"
3182 (("-rubygems") ""))
3183 (substitute* "Rakefile"
3184 (("system \"shindo") "system \"./bin/shindo")
3185 ;; This test doesn't work, so we disable it.
3186 (("fail \"The build_error test should fail") "#")
3187 ((" -rubygems") ""))
3188 #t)))))
3189 (propagated-inputs
3190 (list ruby-formatador))
3191 (synopsis "Simple depth first Ruby testing")
3192 (description "Shindo is a simple depth first testing library for Ruby.")
3193 (home-page "https://github.com/geemus/shindo")
3194 (license license:expat)))
3195
3196(define-public ruby-rubygems-tasks
3197 (package
3198 (name "ruby-rubygems-tasks")
3199 (version "0.2.5")
3200 (source (origin
3201 (method url-fetch)
3202 (uri (rubygems-uri "rubygems-tasks" version))
3203 (sha256
3204 (base32
3205 "1x3sz3n2dlknd3v7w1mrq6f0ag6pwzhjvg7z29p75w3p42ma1gbx"))))
3206 (build-system ruby-build-system)
3207 ;; Tests need Internet access.
3208 (arguments `(#:tests? #f))
3209 (native-inputs
3210 (list ruby-rspec ruby-yard))
3211 (synopsis "Rake tasks for managing and releasing Ruby Gems")
3212 (description "Rubygems-task provides Rake tasks for managing and releasing
3213Ruby Gems.")
3214 (home-page "https://github.com/postmodern/rubygems-tasks")
3215 (license license:expat)))
3216
3217(define-public ruby-rubyzip
3218 (package
3219 (name "ruby-rubyzip")
3220 (version "1.2.1")
3221 (source
3222 (origin
3223 (method url-fetch)
3224 (uri (rubygems-uri "rubyzip" version))
3225 (sha256
3226 (base32
3227 "06js4gznzgh8ac2ldvmjcmg9v1vg9llm357yckkpylaj6z456zqz"))))
3228 (build-system ruby-build-system)
3229 (arguments
3230 '(#:phases
3231 (modify-phases %standard-phases
3232 (add-before 'check 'patch-tests
3233 (lambda* (#:key inputs #:allow-other-keys)
3234 (substitute* "test/gentestfiles.rb"
3235 (("/usr/bin/zip")
3236 (string-append
3237 (assoc-ref inputs "zip") "/bin/zip")))
3238 (substitute* "test/input_stream_test.rb"
3239 (("/usr/bin/env ruby") (which "ruby")))
3240 #t)))))
3241 (native-inputs
3242 (list bundler ruby-simplecov zip unzip))
3243 (synopsis "Ruby module is for reading and writing zip files")
3244 (description
3245 "The rubyzip module provides ways to read from and create zip files.")
3246 (home-page "https://github.com/rubyzip/rubyzip")
3247 (license license:bsd-2)))
3248
3249(define-public ruby-simplecov-html
3250 (package
3251 (name "ruby-simplecov-html")
3252 (version "0.10.2")
3253 (source (origin
3254 (method url-fetch)
3255 (uri (rubygems-uri "simplecov-html" version))
3256 (sha256
3257 (base32
3258 "1lihraa4rgxk8wbfl77fy9sf0ypk31iivly8vl3w04srd7i0clzn"))))
3259 (build-system ruby-build-system)
3260 (arguments `(#:tests? #f)) ; there are no tests
3261 (native-inputs
3262 (list bundler))
3263 (synopsis "Default HTML formatter for SimpleCov code coverage tool")
3264 (description "This package provides the default HTML formatter for
3265the SimpleCov code coverage tool for Ruby version 1.9 and above.")
3266 (home-page "https://github.com/colszowka/simplecov-html")
3267 (license license:expat)))
3268
3269(define-public ruby-simplecov
3270 (package
3271 (name "ruby-simplecov")
3272 (version "0.17.1")
3273 (source (origin
3274 (method url-fetch)
3275 (uri (rubygems-uri "simplecov" version))
3276 (sha256
3277 (base32
3278 "1135k46nik05sdab30yxb8264lqiz01c8v000g16cl9pjc4mxrdw"))))
3279 (build-system ruby-build-system)
3280 ;; Simplecov depends on rubocop for code style checking at build time.
3281 ;; Rubocop needs simplecov at build time.
3282 (arguments `(#:tests? #f))
3283 (propagated-inputs
3284 (list ruby-json ruby-docile ruby-simplecov-html))
3285 (native-inputs
3286 (list bundler))
3287 (synopsis "Code coverage framework for Ruby")
3288 (description "SimpleCov is a code coverage framework for Ruby with a
3289powerful configuration library and automatic merging of coverage across test
3290suites.")
3291 (home-page "https://github.com/colszowka/simplecov")
3292 (license license:expat)))
3293
3294(define-public ruby-useragent
3295 (package
3296 (name "ruby-useragent")
3297 (version "0.16.10")
3298 (source (origin
3299 (method url-fetch)
3300 (uri (rubygems-uri "useragent" version))
3301 (sha256
3302 (base32
3303 "1fv5kvq494swy0p17h9qya9r50w15xsi9zmvhzb8gh55kq6ki50p"))))
3304 (build-system ruby-build-system)
3305 (arguments
3306 '(#:tests? #f)) ; no test suite
3307 (synopsis "HTTP user agent parser for Ruby")
3308 (description "UserAgent is a Ruby library that parses and compares HTTP
3309User Agents.")
3310 (home-page "https://github.com/gshutler/useragent")
3311 (license license:expat)))
3312
3313(define-public ruby-backports
3314 (package
3315 (name "ruby-backports")
3316 (version "3.11.4")
3317 (source
3318 (origin
3319 (method url-fetch)
3320 (uri (rubygems-uri "backports" version))
3321 (sha256
3322 (base32
3323 "1hshjxww2h7s0dk57njrygq4zpp0nlqrjfya7zwm27iq3rhc3y8g"))))
3324 (build-system ruby-build-system)
3325 (arguments
3326 '(;; TODO: This should be default, but there is one test failure
3327 #:test-target "all_spec"))
3328 (native-inputs
3329 (list ruby-mspec ruby-activesupport))
3330 (synopsis "Backports of the features in newer Ruby versions")
3331 (description
3332 "Backports enables more compatibility across Ruby versions by providing
3333backports of some features.")
3334 (home-page "https://github.com/marcandre/backports")
3335 (license license:expat)))
3336
3337(define-public ruby-bacon
3338 (package
3339 (name "ruby-bacon")
3340 (version "1.2.0")
3341 (source (origin
3342 (method url-fetch)
3343 (uri (rubygems-uri "bacon" version))
3344 (sha256
3345 (base32
3346 "1f06gdj77bmwzc1k5iragl1595hbn67yc7sqvs56ca8plrr2vmai"))))
3347 (build-system ruby-build-system)
3348 (synopsis "Small RSpec clone")
3349 (description "Bacon is a small RSpec clone providing all essential
3350features.")
3351 (home-page "https://github.com/chneukirchen/bacon")
3352 (license license:expat)))
3353
3354(define-public ruby-bacon-bits
3355 (package
3356 (name "ruby-bacon-bits")
3357 (version "0.1.0")
3358 (source
3359 (origin
3360 (method url-fetch)
3361 (uri (rubygems-uri "bacon-bits" version))
3362 (sha256
3363 (base32
3364 "1ghpj8ja94lhi8rgi872hqk4fd2amz2k7g9znd64z5dj7v6l0dmx"))))
3365 (build-system ruby-build-system)
3366 (arguments
3367 ;; No tests
3368 '(#:tests? #f))
3369 (propagated-inputs (list ruby-bacon))
3370 (synopsis "Extensions to Bacon, for disabling tests, before and after
3371blocks and more")
3372 (description
3373 "This extends the bacon testing framework with useful extensions to
3374disable tests, have before and after blocks that run once and more.")
3375 (home-page "https://github.com/cldwalker/bacon-bits")
3376 (license license:expat)))
3377
3378(define-public ruby-bacon-colored-output
3379 (package
3380 (name "ruby-bacon-colored-output")
3381 (version "1.1.1")
3382 (source
3383 (origin
3384 (method url-fetch)
3385 (uri (rubygems-uri "bacon-colored_output" version))
3386 (sha256
3387 (base32
3388 "1znyh3vkfdlmf19p3k4zip88ibym41dn5g4p4n5hmks2iznb7qpx"))))
3389 (build-system ruby-build-system)
3390 (arguments
3391 '(;; No included tests
3392 #:tests? #f))
3393 (propagated-inputs
3394 (list ruby-bacon))
3395 (synopsis "Colored output for Bacon test framework")
3396 (description
3397 "This package adds color through ANSI escape codes to Bacon test
3398output.")
3399 (home-page "https://github.com/whitequark/bacon-colored_output")
3400 (license license:expat)))
3401
3402(define-public ruby-connection-pool
3403 (package
3404 (name "ruby-connection-pool")
3405 (version "2.2.2")
3406 (source (origin
3407 (method url-fetch)
3408 (uri (rubygems-uri "connection_pool" version))
3409 (sha256
3410 (base32
3411 "0lflx29mlznf1hn0nihkgllzbj8xp5qasn8j7h838465pi399k68"))))
3412 (build-system ruby-build-system)
3413 (native-inputs
3414 (list bundler))
3415 (synopsis "Generic connection pool for Ruby")
3416 (description "Connection_pool provides a generic connection pooling
3417interface for Ruby programs.")
3418 (home-page "https://github.com/mperham/connection_pool")
3419 (license license:expat)))
3420
3421(define-public ruby-fast-gettext
3422 (package
3423 (name "ruby-fast-gettext")
3424 (version "2.0.3")
3425 (home-page "https://github.com/grosser/fast_gettext")
3426 (source (origin
3427 (method git-fetch)
3428 (uri (git-reference (url home-page)
3429 (commit (string-append "v" version))))
3430 (file-name (git-file-name name version))
3431 (sha256
3432 (base32
3433 "1dg14apq5sfjshhcq0idphhs7aq9ikzswhqmn689p1h76mxqr1v6"))))
3434 (build-system ruby-build-system)
3435 (arguments
3436 '(#:test-target "spec"
3437 #:phases (modify-phases %standard-phases
3438 (add-before 'check 'remove-version-constraints
3439 (lambda _
3440 (delete-file "Gemfile.lock")
3441 #t))
3442 (add-before 'check 'remove-activerecord-test
3443 (lambda _
3444 ;; FIXME: This test fails because ActiveRecord depends on
3445 ;; a different version of ruby-sqlite than the currently
3446 ;; available one.
3447 (delete-file
3448 "spec/fast_gettext/translation_repository/db_spec.rb")
3449 #t))
3450 (add-before 'check 'disable-i18n-test
3451 (lambda _
3452 ;; XXX: This test checks i18n intricasies with Rails 3 and
3453 ;; automatically disables itself for Rails 4.0, but does
3454 ;; not know about newer versions as it has not been updated
3455 ;; since 2014. Disable for later versions of Rails too.
3456 (substitute* "spec/fast_gettext/vendor/string_spec.rb"
3457 (((string-append "ActiveRecord::VERSION::MAJOR == 4 and "
3458 "ActiveRecord::VERSION::MINOR == 0"))
3459 "ActiveRecord::VERSION::MAJOR >= 4"))
3460 #t)))))
3461 (native-inputs
3462 (list ;; For tests.
3463 ruby-activerecord
3464 ruby-activesupport
3465 ruby-bump
3466 ruby-forking-test-runner
3467 ruby-i18n
3468 ruby-rubocop
3469 ruby-rspec
3470 ruby-single-cov
3471 ruby-sqlite3
3472 ruby-wwtd))
3473 (synopsis "Fast implementation of @code{GetText}")
3474 (description
3475 "This package provides an alternative implementation of the Ruby
3476@code{GetText} library that is approximately 12x faster yet thread safe.")
3477 ;; Some parts are covered by the Ruby license, see file headers.
3478 (license (list license:expat license:ruby))))
3479
3480(define-public ruby-net-http-persistent
3481 (package
3482 (name "ruby-net-http-persistent")
3483 (version "3.0.0")
3484 (source (origin
3485 (method url-fetch)
3486 (uri (rubygems-uri "net-http-persistent" version))
3487 (sha256
3488 (base32
3489 "156rv95bgxfz6qw5y1r7c7bswr77918hygl8dyl14qzbqc5vyp18"))))
3490 (build-system ruby-build-system)
3491 (native-inputs
3492 (list ruby-connection-pool ruby-hoe))
3493 (synopsis "Persistent HTTP connection manager")
3494 (description "Net::HTTP::Persistent manages persistent HTTP connections
3495using Net::HTTP, supporting reconnection and retry according to RFC 2616.")
3496 (home-page "https://github.com/drbrain/net-http-persistent")
3497 (license license:expat)))
3498
3499(define-public ruby-power-assert
3500 (package
3501 (name "ruby-power-assert")
3502 (version "1.1.5")
3503 (source (origin
3504 (method url-fetch)
3505 (uri (rubygems-uri "power_assert" version))
3506 (sha256
3507 (base32
3508 "1dii0wkfa0jm8sk9b20zl1z4980dmrjh0zqnii058485pp3ws10s"))))
3509 (build-system ruby-build-system)
3510 (arguments
3511 '(#:tests? #f)) ; No included tests
3512 (native-inputs
3513 (list bundler))
3514 (synopsis "Assert library with descriptive assertion messages")
3515 (description "Power-assert is an assertion library providing descriptive
3516assertion messages for tests.")
3517 (home-page "https://github.com/k-tsj/power_assert")
3518 (license (list license:bsd-2 license:ruby))))
3519
3520(define-public ruby-powerpack
3521 (package
3522 (name "ruby-powerpack")
3523 (version "0.1.2")
3524 (source
3525 (origin
3526 (method url-fetch)
3527 (uri (rubygems-uri "powerpack" version))
3528 (sha256
3529 (base32
3530 "1r51d67wd467rpdfl6x43y84vwm8f5ql9l9m85ak1s2sp3nc5hyv"))))
3531 (build-system ruby-build-system)
3532 (arguments
3533 '(#:test-target "spec"))
3534 (native-inputs
3535 (list bundler ruby-rspec ruby-yard))
3536 (synopsis "Useful extensions to core Ruby classes")
3537 (description
3538 "This package provides a few useful extensions to core Ruby classes,
3539including @code{Array}, @code{Enumerable}, @code{Hash}, @code{Numeric}, and
3540@code{String}.")
3541 (home-page "https://github.com/bbatsov/powerpack")
3542 (license license:expat)))
3543
3544(define-public ruby-locale
3545 (package
3546 (name "ruby-locale")
3547 (version "2.1.2")
3548 (source (origin
3549 (method url-fetch)
3550 (uri (rubygems-uri "locale" version))
3551 (sha256
3552 (base32
3553 "1sls9bq4krx0fmnzmlbn64dw23c4d6pz46ynjzrn9k8zyassdd0x"))))
3554 (build-system ruby-build-system)
3555 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
3556 ;; which needs ruby-gettext, which needs ruby-locale. To break the
3557 ;; dependency cycle we disable tests.
3558 (arguments `(#:tests? #f))
3559 (native-inputs
3560 (list bundler ruby-yard))
3561 (synopsis "Ruby library providing basic localization APIs")
3562 (description
3563 "Ruby-Locale is the pure ruby library which provides basic APIs for
3564localization.")
3565 (home-page "https://github.com/ruby-gettext/locale")
3566 (license (list license:lgpl3+ license:ruby))))
3567
3568(define-public ruby-temple
3569 (package
3570 (name "ruby-temple")
3571 (version "0.8.2")
3572 (source
3573 (origin
3574 (method url-fetch)
3575 (uri (rubygems-uri "temple" version))
3576 (sha256
3577 (base32
3578 "060zzj7c2kicdfk6cpnn40n9yjnhfrr13d0rsbdhdij68chp2861"))))
3579 (build-system ruby-build-system)
3580 (native-inputs
3581 (list ruby-tilt ruby-bacon ruby-erubis))
3582 (synopsis "Template compilation framework in Ruby")
3583 (description
3584 "Temple is an abstraction and framework for compiling templates to pure
3585Ruby.")
3586 (home-page "https://github.com/judofyr/temple")
3587 (license license:expat)))
3588
3589(define-public ruby-text
3590 (package
3591 (name "ruby-text")
3592 (version "1.3.1")
3593 (source (origin
3594 (method url-fetch)
3595 (uri (rubygems-uri "text" version))
3596 (sha256
3597 (base32
3598 "1x6kkmsr49y3rnrin91rv8mpc3dhrf3ql08kbccw8yffq61brfrg"))))
3599 (build-system ruby-build-system)
3600 (synopsis "Collection of text algorithms for Ruby")
3601 (description
3602 "This package provides a collection of text algorithms: Levenshtein,
3603Soundex, Metaphone, Double Metaphone, Porter Stemming.")
3604 (home-page "https://github.com/threedaymonk/text")
3605 (license license:expat)))
3606
3607(define-public ruby-gettext
3608 (package
3609 (name "ruby-gettext")
3610 (version "3.1.7")
3611 (source (origin
3612 (method url-fetch)
3613 (uri (rubygems-uri "gettext" version))
3614 (sha256
3615 (base32
3616 "1hg9islkm324mb4sd4za1fgafj1hqnm3bdvzj3k4fqpnzqnbcfiq"))))
3617 (build-system ruby-build-system)
3618 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
3619 ;; which needs ruby-gettext. To break the dependency cycle we disable
3620 ;; tests.
3621 (arguments `(#:tests? #f))
3622 (propagated-inputs
3623 (list ruby-locale ruby-text))
3624 (native-inputs
3625 (list bundler ruby-yard))
3626 (synopsis "GNU gettext-like program for Ruby")
3627 (description
3628 "Gettext is a GNU gettext-like program for Ruby. The catalog
3629file (po-file) used is the same as that used by GNU gettext, allowing you to
3630use GNU gettext tools for maintenance.")
3631 (home-page "https://ruby-gettext.github.com/")
3632 (license (list license:lgpl3+ license:ruby))))
3633
3634(define-public ruby-packnga
3635 (package
3636 (name "ruby-packnga")
3637 (version "1.0.4")
3638 (source (origin
3639 (method url-fetch)
3640 (uri (rubygems-uri "packnga" version))
3641 (sha256
3642 (base32
3643 "1vv2j0i43s4xid2km5hgrrxqlqpwgq8nlm8kaxfg2531c1vwfsd4"))))
3644 (build-system ruby-build-system)
3645 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga.
3646 ;; To break the dependency cycle we disable tests.
3647 (arguments `(#:tests? #f))
3648 (propagated-inputs
3649 (list ruby-gettext ruby-yard))
3650 (native-inputs
3651 (list bundler))
3652 (synopsis "Utility library to package internationalized libraries")
3653 (description
3654 "Packnga is a library to translate to many languages using YARD.")
3655 (home-page "http://ranguba.org/packnga/")
3656 (license license:lgpl2.0+)))
3657
3658(define-public ruby-test-construct
3659 (package
3660 (name "ruby-test-construct")
3661 (version "2.0.1")
3662 (source
3663 (origin
3664 (method url-fetch)
3665 (uri (rubygems-uri "test_construct" version))
3666 (sha256
3667 (base32
3668 "1a2ym3l068d0pxzzr95kvqx87zpdsarxslz9ygd4qfm9frrz0kgj"))))
3669 (build-system ruby-build-system)
3670 (native-inputs
3671 (list bundler ruby-mocha ruby-rspec))
3672 (synopsis "Creates temporary files and directories for testing")
3673 (description
3674 "TestConstruct is a @acronym{DSL, Domain Specific Language} for creating
3675temporary files and directories during tests.")
3676 (home-page "https://github.com/bhb/test_construct")
3677 (license license:expat)))
3678
3679(define-public ruby-test-unit
3680 (package
3681 (name "ruby-test-unit")
3682 (version "3.4.4")
3683 (source (origin
3684 (method url-fetch)
3685 (uri (rubygems-uri "test-unit" version))
3686 (sha256
3687 (base32
3688 "15isy7vhppbfd0032klirj9gxp65ygkzjdwrmm28xpirlcsk6qpd"))))
3689 (build-system ruby-build-system)
3690 (propagated-inputs
3691 (list ruby-power-assert))
3692 (native-inputs
3693 (list bundler ruby-packnga ruby-yard))
3694 (synopsis "Unit testing framework for Ruby")
3695 (description "@code{Test::Unit} is unit testing framework for Ruby, based
3696on xUnit principles. These were originally designed by Kent Beck, creator of
3697extreme programming software development methodology, for Smalltalk's SUnit.
3698It allows writing tests, checking results and automated testing in Ruby.")
3699 (home-page "https://test-unit.github.io/")
3700 (license (list license:psfl license:ruby))))
3701
3702(define-public ruby-markaby
3703 (package
3704 (name "ruby-markaby")
3705 (version "0.9.0")
3706 (source
3707 (origin
3708 (method url-fetch)
3709 (uri (rubygems-uri "markaby" version))
3710 (sha256
3711 (base32
3712 "1j4jc31ycydbkh5h3q6zwidzpavg3g5mbb5lqyaczd3jrq78rd7i"))))
3713 (build-system ruby-build-system)
3714 (arguments
3715 '(#:phases
3716 (modify-phases %standard-phases
3717 ;; Run rspec manually without using the Rakefile, as the versions of
3718 ;; Rake and RSpec 2 are incompatible:
3719 ;;
3720 ;; NoMethodError: undefined method `last_comment'
3721 (replace 'check
3722 (lambda* (#:key tests? #:allow-other-keys)
3723 (when tests?
3724 (invoke "rspec"))
3725 #t)))))
3726 (propagated-inputs
3727 (list ruby-builder))
3728 (native-inputs
3729 (list bundler ruby-rspec-2))
3730 (synopsis "Write HTML pages in pure Ruby")
3731 (description
3732 "Markaby allows writing HTML packages in pure Ruby. This is similar to
3733the functionality provided by @acronym{ERB, Embedded Ruby}, but without the
3734mixture of HTML and additional ERB syntax.")
3735 (home-page "https://markaby.github.io/")
3736 (license license:expat)))
3737
3738(define-public ruby-maruku
3739 (package
3740 (name "ruby-maruku")
3741 (version "0.7.3")
3742 (source
3743 (origin
3744 (method url-fetch)
3745 (uri (rubygems-uri "maruku" version))
3746 (sha256
3747 (base32
3748 "1r7bxpgnx2hp3g12bjrmdrpv663dfqxsdp0af69kjhxmaxpia56x"))))
3749 (build-system ruby-build-system)
3750 (arguments
3751 '(;; TODO: 3 tests seem to fail due to HTML encoding issues
3752 #:tests? #f
3753 #:phases
3754 (modify-phases %standard-phases
3755 (replace 'check
3756 (lambda* (#:key tests? #:allow-other-keys)
3757 (when tests?
3758 (invoke "rspec"))
3759 #t)))))
3760 (native-inputs
3761 (list ruby-rspec ruby-simplecov ruby-nokogiri-diff))
3762 (synopsis "Markdown interpreter in Ruby")
3763 (description
3764 "Maruku is a Markdown interpreter in Ruby. It can export Markdown to
3765HTML, and PDF through LaTeX.")
3766 (home-page "https://github.com/bhollis/maruku")
3767 (license license:expat)))
3768
3769(define-public ruby-metaclass
3770 (package
3771 (name "ruby-metaclass")
3772 (version "0.0.4")
3773 (source (origin
3774 (method url-fetch)
3775 (uri (rubygems-uri "metaclass" version))
3776 (sha256
3777 (base32
3778 "0hp99y2b1nh0nr8pc398n3f8lakgci6pkrg4bf2b2211j1f6hsc5"))))
3779 (build-system ruby-build-system)
3780 (arguments
3781 `(#:phases
3782 (modify-phases %standard-phases
3783 (add-after 'unpack 'add-test-unit-to-search-path
3784 (lambda* (#:key inputs #:allow-other-keys)
3785 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
3786 (substitute* "Rakefile"
3787 (("t\\.libs << \"test\"" line)
3788 (string-append line "; t.libs << \""
3789 test-unit "/lib/ruby/vendor_ruby"
3790 "/gems/test-unit-"
3791 ,(package-version ruby-test-unit)
3792 "/lib\""))))
3793 #t)))))
3794 (native-inputs
3795 (list bundler ruby-test-unit))
3796 (synopsis "Ruby library adding metaclass method to all objects")
3797 (description
3798 "Metaclass is a Ruby library adding a @code{metaclass} method to all Ruby
3799objects.")
3800 (home-page "https://github.com/floehopper/metaclass")
3801 (license license:expat)))
3802
3803(define-public ruby-mkmf-lite
3804 (package
3805 (name "ruby-mkmf-lite")
3806 (version "0.3.2")
3807 (source (origin
3808 (method url-fetch)
3809 (uri (rubygems-uri "mkmf-lite" version))
3810 (sha256
3811 (base32
3812 "0br9k6zijj1zc25n8p7f2j1mwl58nfgdknf3q13h9k156jvrir06"))))
3813 (build-system ruby-build-system)
3814 (propagated-inputs
3815 (list ruby-ptools))
3816 (synopsis "Lightweight alternative to @code{mkmf}")
3817 (description
3818 "@code{mkmf-lite} is a light version of Ruby's @code{mkmf.rb} designed
3819for use as a library. It does not create packages, builds, or log files of
3820any kind. Instead, it provides mixin methods that you can use in FFI or tests
3821to check for the presence of header files, constants, and so on.")
3822 (home-page "https://github.com/djberg96/mkmf-lite")
3823 (license license:asl2.0)))
3824
3825(define-public ruby-mspec
3826 (package
3827 (name "ruby-mspec")
3828 (version "1.9.1")
3829 (source
3830 (origin
3831 (method url-fetch)
3832 (uri (rubygems-uri "mspec" version))
3833 (sha256
3834 (base32
3835 "0wmyh2n40m4srwdx9z6h6g6p46k02pzyhcsja3hqcw5h5b0hfmhd"))))
3836 (build-system ruby-build-system)
3837 (arguments
3838 '(;; TODO: 3 test failures
3839 ;; ./spec/mocks/mock_spec.rb:82
3840 ;; ./spec/utils/name_map_spec.rb:151
3841 ;; ./spec/utils/name_map_spec.rb:155
3842 #:tests? #f
3843 #:phases
3844 (modify-phases %standard-phases
3845 (add-after 'extract-gemspec 'change-dependency-constraints
3846 (lambda _
3847 (substitute* "mspec.gemspec"
3848 (("rake.*") "rake>)\n")
3849 (("rspec.*") "rspec>)\n"))
3850 #t))
3851 (replace 'check
3852 (lambda* (#:key tests? #:allow-other-keys)
3853 (when tests?
3854 (invoke "rspec" "spec"))
3855 #t)))))
3856 (native-inputs
3857 (list bundler ruby-rake ruby-rspec))
3858 (synopsis "MSpec is a specialized framework for RubySpec")
3859 (description
3860 "MSpec is a specialized framework that is syntax-compatible with RSpec 2
3861for basic features. MSpec contains additional features that assist in writing
3862specs for Ruby implementations in ruby/spec.")
3863 (home-page "http://rubyspec.org")
3864 (license license:expat)))
3865
3866(define-public ruby-mysql2
3867 (package
3868 (name "ruby-mysql2")
3869 (version "0.5.2")
3870 (source
3871 (origin
3872 (method git-fetch)
3873 (uri (git-reference
3874 (url "https://github.com/brianmario/mysql2")
3875 (commit version)))
3876 (file-name (git-file-name name version))
3877 (sha256
3878 (base32
3879 "11lvfgc2rmvkm52jp0nbi6pvhk06klznghr7llldfw8basl9n5wv"))))
3880 (build-system ruby-build-system)
3881 (arguments
3882 '(;; TODO: Tests require a running MySQL/MariaDB service
3883 #:tests? #f
3884 #:phases
3885 (modify-phases %standard-phases
3886 (replace 'replace-git-ls-files
3887 (lambda _
3888 (substitute* "mysql2.gemspec"
3889 (("git ls-files .*`") "find . -type f |sort`"))
3890 #t))
3891 (add-before 'install 'set-MAKEFLAGS
3892 (lambda* (#:key outputs #:allow-other-keys)
3893 (setenv "MAKEFLAGS"
3894 (string-append
3895 "V=1 "
3896 "prefix=" (assoc-ref outputs "out")))
3897 #t))
3898 ;; Move the 'check phase to after 'install, as then you can test
3899 ;; using the installed mysql2 gem in the store.
3900 (delete 'check)
3901 (add-after 'install 'check
3902 (lambda* (#:key outputs tests? #:allow-other-keys)
3903 (setenv "GEM_PATH"
3904 (string-append
3905 (getenv "GEM_PATH")
3906 ":"
3907 (assoc-ref outputs "out") "/lib/ruby/vendor_ruby"))
3908 (when tests?
3909 (invoke "rspec"))
3910 #t)))))
3911 (inputs
3912 `(("mariadb-dev" ,mariadb "dev")
3913 ("zlib" ,zlib)))
3914 (native-inputs
3915 (list ruby-rspec ruby-rake-compiler))
3916 (synopsis "MySQL library for Ruby, binding to libmysql")
3917 (description
3918 "This package provides a simple, fast MySQL library for Ruby, binding to
3919libmysql.")
3920 (home-page "https://github.com/brianmario/mysql2")
3921 (license license:expat)))
3922
3923(define-public ruby-blankslate
3924 (package
3925 (name "ruby-blankslate")
3926 (version "3.1.3")
3927 (source (origin
3928 (method url-fetch)
3929 (uri (rubygems-uri "blankslate" version))
3930 (sha256
3931 (base32
3932 "0fwkb4d1j9gc7vdwn2nxvwgy2g5wlag4c4bp7bl85jvq0kgp6cyx"))))
3933 (build-system ruby-build-system)
3934 (arguments
3935 `(#:phases
3936 (modify-phases %standard-phases
3937 (replace 'check
3938 (lambda _ (invoke "rspec" "spec/"))))))
3939 (native-inputs
3940 (list bundler ruby-rspec))
3941 (synopsis "Abstract base class with no predefined methods")
3942 (description
3943 "BlankSlate provides an abstract base class with no predefined
3944methods (except for @code{__send__} and @code{__id__}). BlankSlate is useful
3945as a base class when writing classes that depend upon
3946@code{method_missing} (e.g. dynamic proxies).")
3947 (home-page "https://github.com/masover/blankslate")
3948 (license license:expat)))
3949
3950(define-public ruby-bond
3951 (package
3952 (name "ruby-bond")
3953 (version "0.5.1")
3954 (source
3955 (origin
3956 (method url-fetch)
3957 (uri (rubygems-uri "bond" version))
3958 (sha256
3959 (base32
3960 "1r19ifc4skyl2gxnifrxa5jvbbay9fb2in79ppgv02b6n4bhsw90"))))
3961 (build-system ruby-build-system)
3962 (arguments
3963 ;; The test suite fails (see:
3964 ;; https://github.com/cldwalker/bond/issues/46).
3965 `(#:tests? #f))
3966 (native-inputs
3967 (list ruby-bacon ruby-bacon-bits ruby-mocha-on-bacon))
3968 (synopsis "Bond can provide custom autocompletion for arguments, methods
3969and more")
3970 (description
3971 "Bond can autocomplete argument(s) to methods, uniquely completing per
3972module, per method and per argument. Bond provides a configuration system and
3973a DSL for creating custom completions and completion rules. Bond can also
3974load completions that ship with gems. Bond is able to offer more than irb's
3975completion since it uses the full line of input when completing as opposed to
3976irb's last-word approach.")
3977 (home-page "http://tagaholic.me/bond/")
3978 (license license:expat)))
3979
3980(define-public ruby-idn-ruby
3981 (package
3982 (name "ruby-idn-ruby")
3983 (version "0.1.0")
3984 (source
3985 (origin
3986 (method url-fetch)
3987 (uri (rubygems-uri "idn-ruby" version))
3988 (sha256
3989 (base32
3990 "07vblcyk3g72sbq12xz7xj28snpxnh3sbcnxy8bglqbfqqhvmawr"))))
3991 (build-system ruby-build-system)
3992 (arguments
3993 '(#:phases
3994 (modify-phases %standard-phases
3995 (delete 'check)
3996 (add-after 'install 'check
3997 (lambda* (#:key tests? outputs #:allow-other-keys)
3998 (when tests?
3999 (let* ((gem-file (cadr (find-files "." "\\.gem")))
4000 (name-and-version (basename gem-file ".gem")))
4001 (apply invoke
4002 "ruby" "--verbose"
4003 (string-append "-I"
4004 (assoc-ref outputs "out")
4005 "/lib/ruby/vendor_ruby/gems/"
4006 name-and-version
4007 "/lib")
4008 (find-files "./test" ".*\\.rb"))))
4009 #t)))))
4010 (inputs
4011 (list libidn))
4012 (synopsis "Ruby Bindings for the GNU LibIDN library")
4013 (description
4014 "Ruby Bindings for the GNU LibIDN library, an implementation of the
4015Stringprep, Punycode and IDNA specifications. These are used to encode and
4016decode internationalized domain + names according to the IDNA2003
4017specifications.
4018
4019Included are the most important parts of the Stringprep, Punycode and IDNA
4020APIs like performing Stringprep processings, encoding to and decoding from
4021Punycode strings and converting entire domain names to and from the ACE
4022encoded form.")
4023 (home-page "https://github.com/deepfryed/idn-ruby")
4024 (license license:asl2.0)))
4025
4026(define-public ruby-instantiator
4027 (package
4028 (name "ruby-instantiator")
4029 (version "0.0.7")
4030 (source (origin
4031 (method url-fetch)
4032 (uri (rubygems-uri "instantiator" version))
4033 (sha256
4034 (base32
4035 "0w07w3gkyqr7m0vz5h13vm8b411660qywjm2xxxgdjv4wb3fazbr"))))
4036 (build-system ruby-build-system)
4037 (arguments
4038 `(#:phases
4039 (modify-phases %standard-phases
4040 (add-after 'unpack 'add-test-unit-to-search-path
4041 (lambda* (#:key inputs #:allow-other-keys)
4042 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
4043 (substitute* "Rakefile"
4044 (("t\\.libs << \"test\"" line)
4045 (string-append line "; t.libs << \""
4046 test-unit "/lib/ruby/vendor_ruby"
4047 "/gems/test-unit-"
4048 ,(package-version ruby-test-unit)
4049 "/lib\""))))
4050 #t)))))
4051 (propagated-inputs
4052 (list ruby-blankslate))
4053 (native-inputs
4054 (list bundler ruby-test-unit))
4055 (synopsis "Instantiate an arbitrary Ruby class")
4056 (description
4057 "Instantiator lets you instantiate an arbitrary Ruby class without
4058knowing anything about the constructor.")
4059 (home-page "https://github.com/floehopper/instantiator")
4060 (license license:expat)))
4061
4062(define-public ruby-introspection
4063 (package
4064 (name "ruby-introspection")
4065 (version "0.0.4")
4066 (source (origin
4067 (method url-fetch)
4068 (uri (rubygems-uri "introspection" version))
4069 (sha256
4070 (base32
4071 "1y2nbijkc0zlfmn9ss6588ilarq2kbn2i7w7pwwsli66dj84zgca"))))
4072 (build-system ruby-build-system)
4073 (arguments
4074 `(#:phases
4075 (modify-phases %standard-phases
4076 (add-after 'unpack 'add-test-unit-to-search-path
4077 (lambda* (#:key inputs #:allow-other-keys)
4078 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
4079 (substitute* "Rakefile"
4080 (("t\\.libs << \"test\"" line)
4081 (string-append line "; t.libs << \""
4082 test-unit "/lib/ruby/vendor_ruby"
4083 "/gems/test-unit-"
4084 ,(package-version ruby-test-unit)
4085 "/lib\""))))
4086 #t)))))
4087 (propagated-inputs
4088 (list ruby-instantiator ruby-metaclass))
4089 (native-inputs
4090 (list bundler ruby-blankslate ruby-test-unit))
4091 (synopsis "Dynamic inspection of the method hierarchy on a Ruby object")
4092 (description
4093 "Introspection provides tools to inspect the hierarchy of method
4094definitions on a Ruby object.")
4095 (home-page "https://github.com/floehopper/introspection")
4096 (license license:expat)))
4097
4098(define-public ruby-redcarpet
4099 (package
4100 (name "ruby-redcarpet")
4101 (version "3.5.0")
4102 (source (origin
4103 (method url-fetch)
4104 (uri (rubygems-uri "redcarpet" version))
4105 (sha256
4106 (base32
4107 "0skcyx1h8b5ms0rp2zm3ql6g322b8c1adnkwkqyv7z3kypb4bm7k"))))
4108 (build-system ruby-build-system)
4109 (arguments
4110 `(#:phases
4111 (modify-phases %standard-phases
4112 ;; The gem archive does not include the conformance tests.
4113 (add-after 'unpack 'disable-conformance-tests
4114 (lambda _
4115 (substitute* "Rakefile"
4116 (("task :test => %w\\[test:unit test:conformance\\]")
4117 "task :test => %w[test:unit]"))
4118 #t)))))
4119 (native-inputs
4120 (list bundler ruby-test-unit ruby-rake-compiler))
4121 (synopsis "Extensible Markdown to (X)HTML converter")
4122 (description
4123 "Redcarpet is an extensible Ruby library for Markdown processing and
4124conversion to (X)HTML.")
4125 (home-page "https://github.com/vmg/redcarpet")
4126 (license license:expat)))
4127
4128(define-public ruby-rerun
4129 (package
4130 (name "ruby-rerun")
4131 (version "0.13.0")
4132 (source
4133 (origin
4134 (method url-fetch)
4135 (uri (rubygems-uri "rerun" version))
4136 (sha256
4137 (base32
4138 "1cskvxk8z8vmfail8na7hj91hs0qnvds9nydj04zi3dbddgnbmvz"))))
4139 (build-system ruby-build-system)
4140 (arguments
4141 '(#:tests? #f)) ; No included tests
4142 (propagated-inputs
4143 (list ruby-listen))
4144 (synopsis "Run a process, and restart when some monitored files change")
4145 (description
4146 "Rerun is a tool to launch programs, then monitor the file system, and
4147restart the program when any of the monitored files change. It's written in
4148Ruby, but can be used for all programs.")
4149 (home-page "https://github.com/alexch/rerun/")
4150 (license license:expat)))
4151
4152(define-public ruby-maxitest
4153 (package
4154 (name "ruby-maxitest")
4155 (version "3.6.0")
4156 (home-page "https://github.com/grosser/maxitest")
4157 (source (origin
4158 ;; Pull from git because the gem does not contain tests.
4159 (method git-fetch)
4160 (uri (git-reference
4161 (url home-page)
4162 (commit (string-append "v" version))))
4163 (file-name (git-file-name name version))
4164 (sha256
4165 (base32
4166 "07b3j0bv3dx5j42jlvpvl07aaxplyi6wq688y3jl8y528ww2hjz8"))))
4167 (build-system ruby-build-system)
4168 (arguments
4169 '(#:test-target "default"
4170 #:phases (modify-phases %standard-phases
4171 (replace 'replace-git-ls-files
4172 (lambda _
4173 (substitute* "maxitest.gemspec"
4174 (("`git ls-files lib/ bin/ MIT-LICENSE Readme.md`")
4175 "`find lib/ bin/ MIT-LICENSE Readme.md -type f | sort`"))
4176 #t))
4177 (add-before 'check 'remove-version-constraints
4178 (lambda _
4179 ;; Don't use specific versions of dependencies, instead
4180 ;; take whatever is available in Guix.
4181 (delete-file "Gemfile.lock")
4182 #t))
4183 (add-before 'check 'add-mtest-on-PATH
4184 (lambda _
4185 ;; Tests use 'mtest' which is not automatically added on
4186 ;; PATH.
4187 (setenv "PATH" (string-append (getcwd) "/bin:"
4188 (getenv "PATH")))
4189 #t)))))
4190 (native-inputs
4191 `(("ps" ,procps)
4192 ("ruby-bump" ,ruby-bump)
4193 ("ruby-byebug" ,ruby-byebug)
4194 ("ruby-rspec" ,ruby-rspec)
4195 ("ruby-wwtd" ,ruby-wwtd)))
4196 (propagated-inputs
4197 (list ruby-minitest))
4198 (synopsis "Minitest with extra features")
4199 (description
4200 "Maxitest is a wrapper around Minitest with extra functionality such
4201as timeouts, an @command{mtest} executable that can run tests by line
4202number, support for interrupted tests, better backtraces, and more.")
4203 (license license:expat)))
4204
4205(define-public ruby-mocha
4206 (package
4207 (name "ruby-mocha")
4208 (version "1.13.0")
4209 (source (origin
4210 (method url-fetch)
4211 (uri (rubygems-uri "mocha" version))
4212 (sha256
4213 (base32
4214 "15s53ggsykk69kxqvs4416s8yxdhz6caggva55n8sjgy4ixzwp10"))))
4215 (build-system ruby-build-system)
4216 (arguments
4217 `(#:phases
4218 (modify-phases %standard-phases
4219 (add-before 'check 'remove-rubocop-dependency
4220 (lambda _
4221 ;; Disable dependency on Rubocop, which is just a linter,
4222 ;; and would introduce a circular dependency.
4223 (substitute* "mocha.gemspec"
4224 ((".*rubocop.*")
4225 "true\n"))
4226 #t)))))
4227 (native-inputs
4228 (list ruby-introspection))
4229 (synopsis "Mocking and stubbing library for Ruby")
4230 (description
4231 "Mocha is a mocking and stubbing library with JMock/SchMock syntax, which
4232allows mocking and stubbing of methods on real (non-mock) classes.")
4233 (home-page "https://mocha.jamesmead.org/")
4234 ;; Mocha can be used with either license at the users choice.
4235 (license (list license:expat license:ruby))))
4236
4237(define-public ruby-mocha-on-bacon
4238 (package
4239 (name "ruby-mocha-on-bacon")
4240 (version "0.2.3")
4241 (source
4242 (origin
4243 (method url-fetch)
4244 (uri (rubygems-uri "mocha-on-bacon" version))
4245 (sha256
4246 (base32
4247 "1h49b33rq889hn8x3wp9byczl91va16jh1w4d2wyy4yj23icdrcp"))))
4248 (build-system ruby-build-system)
4249 (arguments
4250 ;; rubygems.org release missing tests
4251 '(#:tests? #f))
4252 (propagated-inputs (list ruby-mocha))
4253 (synopsis "Mocha adapter for Bacon")
4254 (description
4255 "This package provides a Mocha adapter for Bacon, allowing you to use the
4256Mocha stubbing and mocking library with Bacon, a small RSpec clone.")
4257 (home-page
4258 "https://github.com/alloy/mocha-on-bacon")
4259 (license license:expat)))
4260
4261(define-public ruby-net-ssh
4262 (package
4263 (name "ruby-net-ssh")
4264 (version "4.2.0")
4265 (source (origin
4266 (method url-fetch)
4267 (uri (rubygems-uri "net-ssh" version))
4268 (sha256
4269 (base32
4270 "07c4v97zl1daabmri9zlbzs6yvkl56z1q14bw74d53jdj0c17nhx"))))
4271 (build-system ruby-build-system)
4272 (native-inputs
4273 (list bundler ruby-mocha ruby-test-unit))
4274 (synopsis "Ruby implementation of the SSH2 client protocol")
4275 (description "@code{Net::SSH} is a pure-Ruby implementation of the SSH2
4276client protocol. It allows you to write programs that invoke and interact
4277with processes on remote servers, via SSH2.")
4278 (home-page "https://github.com/net-ssh/net-ssh")
4279 (license license:expat)))
4280
4281(define-public ruby-net-scp
4282 (package
4283 (name "ruby-net-scp")
4284 ;; The 1.2.1 release would be incompatible with ruby-net-ssh >= 4.
4285 (version "1.2.2.rc2")
4286 (source
4287 (origin
4288 (method git-fetch)
4289 (uri (git-reference
4290 (url "https://github.com/net-ssh/net-scp")
4291 (commit (string-append "v" version))))
4292 (file-name (git-file-name name version))
4293 (sha256
4294 (base32 "1nyn17sy71fn7zs3y6wbgcn35318c10flqgc0582409095x4h0sx"))))
4295 (build-system ruby-build-system)
4296 (native-inputs
4297 (list bundler ruby-test-unit ruby-mocha))
4298 (propagated-inputs
4299 (list ruby-net-ssh))
4300 (synopsis "Pure-Ruby SCP client library")
4301 (description "@code{Net::SCP} is a pure-Ruby implementation of the SCP
4302client protocol.")
4303 (home-page "https://github.com/net-ssh/net-scp")
4304 (license license:expat)))
4305
4306(define-public ruby-minitest
4307 (package
4308 (name "ruby-minitest")
4309 (version "5.14.4")
4310 (source (origin
4311 (method url-fetch)
4312 (uri (rubygems-uri "minitest" version))
4313 (sha256
4314 (base32
4315 "19z7wkhg59y8abginfrm2wzplz7py3va8fyngiigngqvsws6cwgl"))))
4316 (build-system ruby-build-system)
4317 (native-inputs
4318 (list ruby-hoe))
4319 (synopsis "Small test suite library for Ruby")
4320 (description "Minitest provides a complete suite of Ruby testing
4321facilities supporting TDD, BDD, mocking, and benchmarking.")
4322 (home-page "https://github.com/seattlerb/minitest")
4323 (license license:expat)))
4324
4325;; This is the last release of Minitest 4, which is used by some packages.
4326(define-public ruby-minitest-4
4327 (package (inherit ruby-minitest)
4328 (version "4.7.5")
4329 (source (origin
4330 (method url-fetch)
4331 (uri (rubygems-uri "minitest" version))
4332 (sha256
4333 (base32
4334 "03p6iban9gcpcflzp4z901s1hgj9369p6515h967ny6hlqhcf2iy"))))
4335 (arguments
4336 `(#:phases
4337 (modify-phases %standard-phases
4338 (add-after 'unpack 'remove-unsupported-method
4339 (lambda _
4340 (substitute* "Rakefile"
4341 (("self\\.rubyforge_name = .*") ""))
4342 #t))
4343 (add-after 'build 'exclude-failing-tests
4344 (lambda _
4345 ;; Some tests are failing on Ruby 2.4 due to the deprecation of
4346 ;; Fixnum.
4347 (delete-file "test/minitest/test_minitest_spec.rb")
4348 #t)))))))
4349
4350(define-public ruby-minitest-around
4351 (package
4352 (name "ruby-minitest-around")
4353 (version "0.5.0")
4354 (source
4355 (origin
4356 (method url-fetch)
4357 (uri (rubygems-uri "minitest-around" version))
4358 (sha256
4359 (base32
4360 "15ywnqx0719jl9c25yqfshmwcir57i5f4hr1ra9v9vay9ylcwndr"))))
4361 (build-system ruby-build-system)
4362 (arguments
4363 '(#:phases
4364 (modify-phases %standard-phases
4365 (add-after 'extract-gemspec 'remove-unnecessary-dependency-versions
4366 (lambda _
4367 (substitute* "minitest-around.gemspec"
4368 (("%q<cucumber>.*") "%q<cucumber>, [\">= 0\"])\n"))
4369 #t)))))
4370 (propagated-inputs
4371 (list ruby-minitest))
4372 (native-inputs
4373 (list bundler ruby-cucumber ruby-bump ruby-test-construct))
4374 (synopsis "Run code around tests in Minitest")
4375 (description
4376 "This library provides a way to run code around tests in Minitest,
4377written using either the unit test or spec style.")
4378 (home-page "https://github.com/splattael/minitest-around")
4379 (license license:expat)))
4380
4381(define-public ruby-minitest-sprint
4382 (package
4383 (name "ruby-minitest-sprint")
4384 (version "1.1.0")
4385 (source (origin
4386 (method url-fetch)
4387 (uri (rubygems-uri "minitest-sprint" version))
4388 (sha256
4389 (base32
4390 "179d6pj56l9xzm46fqsqj10mzjkr1f9fv4cxa8wvchs97hqz33w1"))))
4391 (build-system ruby-build-system)
4392 (native-inputs
4393 (list ruby-hoe ruby-minitest))
4394 (synopsis "Fast test suite runner for minitest")
4395 (description "Minitest-sprint is a test runner for minitest that makes it
4396easier to re-run individual failing tests.")
4397 (home-page "https://github.com/seattlerb/minitest-sprint")
4398 (license license:expat)))
4399
4400(define-public ruby-minitest-bacon
4401 (package
4402 (name "ruby-minitest-bacon")
4403 (version "1.0.3")
4404 (source (origin
4405 (method url-fetch)
4406 (uri (rubygems-uri "minitest-bacon" version))
4407 (sha256
4408 (base32
4409 "0zhdwcl6bgha61qiyfvr7zs7ywaxc33wmj9xhxl8jdmpdvifvfaj"))))
4410 (build-system ruby-build-system)
4411 (native-inputs
4412 (list ruby-hoe))
4413 (inputs
4414 (list ruby-minitest))
4415 (synopsis "Bacon compatibility library for minitest")
4416 (description "Minitest-bacon extends minitest with bacon-like
4417functionality, making it easier to migrate test suites from bacon to minitest.")
4418 (home-page "https://github.com/seattlerb/minitest-bacon")
4419 (license license:expat)))
4420
4421(define-public ruby-minitest-focus
4422 (package
4423 (name "ruby-minitest-focus")
4424 (version "1.1.2")
4425 (source
4426 (origin
4427 (method url-fetch)
4428 (uri (rubygems-uri "minitest-focus" version))
4429 (sha256
4430 (base32
4431 "1zgjslp6d7dzcn8smj595idymgd5j603p9g2jqkfgi28sqbhz6m0"))))
4432 (build-system ruby-build-system)
4433 (propagated-inputs
4434 (list ruby-minitest))
4435 (native-inputs
4436 (list ruby-hoe))
4437 (synopsis "Allows a few specific tests to be focused on")
4438 (description
4439 "@code{minitest-focus} gives the ability focus on a few tests with ease
4440without having to use command-line arguments. It introduces a @code{focus}
4441class method for use in testing classes, specifying that the next defined test
4442is to be run.")
4443 (home-page "https://github.com/seattlerb/minitest-focus")
4444 (license license:expat)))
4445
4446(define-public ruby-minitest-pretty-diff
4447 ;; Use git reference because gem is out of date and does not contain testing
4448 ;; script. There are no releases on GitHub.
4449 (let ((commit "11f32e930f574225432f42e5e1ef6e7471efe572"))
4450 (package
4451 (name "ruby-minitest-pretty-diff")
4452 (version (string-append "0.1-1." (string-take commit 8)))
4453 (source (origin
4454 (method git-fetch)
4455 (uri (git-reference
4456 (url "https://github.com/adammck/minitest-pretty_diff")
4457 (commit commit)))
4458 (file-name (string-append name "-" version "-checkout"))
4459 (sha256
4460 (base32
4461 "13y5dhmcckhzd83gj1nfwh41iykbjcm2w7y4pr6j6rpqa5as122r"))))
4462 (build-system ruby-build-system)
4463 (arguments
4464 `(#:phases
4465 (modify-phases %standard-phases
4466 (replace 'check
4467 (lambda _
4468 (invoke "script/test"))))))
4469 (native-inputs
4470 (list bundler ruby-turn))
4471 (synopsis "Pretty-print hashes and arrays in MiniTest")
4472 (description
4473 "@code{minitest-pretty_diff} monkey-patches
4474@code{MiniTest::Assertions#mu_pp} to pretty-print hashes and arrays before
4475diffing them. This makes it easier to spot differences between nested
4476structures when tests fail.")
4477 (home-page "https://github.com/adammck/minitest-pretty_diff")
4478 (license license:expat))))
4479
4480(define-public ruby-minitest-moar
4481 (package
4482 (name "ruby-minitest-moar")
4483 (version "0.0.4")
4484 (source
4485 (origin
4486 (method url-fetch)
4487 (uri (rubygems-uri "minitest-moar" version))
4488 (sha256
4489 (base32
4490 "0nb83blrsab92gcy6nfpw39njys7zisia8pw4igzzfzfl51cis0x"))))
4491 (build-system ruby-build-system)
4492 (arguments
4493 `(#:phases
4494 (modify-phases %standard-phases
4495 (add-before 'check 'clean-dependencies
4496 (lambda _
4497 ;; Remove all gems defined in the Gemfile because these are not
4498 ;; truly needed.
4499 (substitute* "Gemfile"
4500 (("gem .*") ""))
4501 ;; Remove byebug as not needed to run tests.
4502 (substitute* "test/test_helper.rb"
4503 (("require 'byebug'") ""))
4504 #t)))))
4505 (native-inputs
4506 (list bundler ruby-minitest))
4507 (synopsis "Extra features and changes to MiniTest")
4508 (description "@code{MiniTest Moar} add some additional features and
4509changes some default behaviours in MiniTest. For instance, Moar replaces the
4510MiniTest @code{Object#stub} with a global @code{stub} method.")
4511 (home-page "https://github.com/dockyard/minitest-moar")
4512 (license license:expat)))
4513
4514(define-public ruby-minitest-bonus-assertions
4515 (package
4516 (name "ruby-minitest-bonus-assertions")
4517 (version "3.0")
4518 (source
4519 (origin
4520 (method url-fetch)
4521 (uri (rubygems-uri "minitest-bonus-assertions" version))
4522 (sha256
4523 (base32
4524 "1hbq9jk904xkz868yha1bqcm6azm7kmjsll2k4pn2nrcib508h2a"))))
4525 (build-system ruby-build-system)
4526 (arguments
4527 `(#:tests? #f ; Test suite has bitrotted.
4528 #:phases
4529 (modify-phases %standard-phases
4530 (add-before 'check 'clean-dependencies
4531 (lambda _
4532 ;; Remove unneeded require statement that would entail another
4533 ;; dependency.
4534 (substitute* "test/minitest_config.rb"
4535 (("require 'minitest/bisect'") ""))
4536 #t)))))
4537 (native-inputs
4538 (list ruby-hoe ruby-minitest-pretty-diff ruby-minitest-focus
4539 ruby-minitest-moar))
4540 (synopsis "Bonus assertions for @code{Minitest}")
4541 (description
4542 "Minitest bonus assertions provides extra MiniTest assertions. For
4543instance, it provides @code{assert_true}, @code{assert_false} and
4544@code{assert_set_equal}.")
4545 (home-page "https://github.com/halostatue/minitest-bonus-assertions")
4546 (license license:expat)))
4547
4548(define-public ruby-minitest-reporters
4549 (package
4550 (name "ruby-minitest-reporters")
4551 (version "1.3.6")
4552 (source
4553 (origin
4554 (method url-fetch)
4555 (uri (rubygems-uri "minitest-reporters" version))
4556 (sha256
4557 (base32
4558 "1a3das80rwgys5rj48i5ly144nvszyqyi748bk9bss74jblcf5ay"))))
4559 (build-system ruby-build-system)
4560 (arguments
4561 '(#:phases
4562 (modify-phases %standard-phases
4563 ;; Remove the requirement on Rubocop, as it isn't useful to run, and
4564 ;; including it as an input can lead to circular dependencies.
4565 (add-after 'unpack 'remove-rubocop-from-Rakefile
4566 (lambda _
4567 (substitute* "Rakefile"
4568 (("require 'rubocop/rake\\_task'") "")
4569 (("RuboCop::RakeTask\\.new\\(:rubocop\\)") "[].each"))
4570 #t))
4571 (add-after 'extract-gemspec 'remove-rubocop-from-gemspec
4572 (lambda _
4573 (substitute* "minitest-reporters.gemspec"
4574 ((".*%q<rubocop>.*") "\n"))
4575 #t)))))
4576 (propagated-inputs
4577 (list ruby-ansi ruby-builder ruby-minitest ruby-progressbar))
4578 (native-inputs
4579 (list bundler ruby-maruku))
4580 (synopsis "Enhanced reporting for Minitest tests")
4581 (description
4582 "@code{minitest/reporters} provides a custom Minitest runner to improve
4583how the test state is reported. A number of different reporters are
4584available, including a spec reporter, progress bar reporter, a HTML
4585reporter.")
4586 (home-page "https://github.com/kern/minitest-reporters")
4587 (license license:expat)))
4588
4589(define-public ruby-minitest-rg
4590 (package
4591 (name "ruby-minitest-rg")
4592 (version "5.2.0")
4593 (source
4594 (origin
4595 (method url-fetch)
4596 (uri (rubygems-uri "minitest-rg" version))
4597 (sha256
4598 (base32
4599 "0sq509ax1x62rd0w10b0hcydcxyk5bxxr3fwrgxv02r8drq2r354"))))
4600 (build-system ruby-build-system)
4601 (arguments
4602 ;; Some tests fail even outside Guix, so disable tests.
4603 ;; https://github.com/blowmage/minitest-rg/issues/12
4604 ;; https://github.com/blowmage/minitest-rg/pull/13
4605 `(#:tests? #f))
4606 (propagated-inputs
4607 (list ruby-minitest))
4608 (synopsis "Coloured output for Minitest")
4609 (description
4610 "@code{minitest-rg} changes the colour of the output from Minitest.")
4611 (home-page "https://blowmage.com/minitest-rg/")
4612 (license license:expat)))
4613
4614(define-public ruby-minitest-global-expectations
4615 (package
4616 (name "ruby-minitest-global-expectations")
4617 (version "1.0.1")
4618 (source
4619 (origin
4620 (method url-fetch)
4621 (uri (rubygems-uri "minitest-global_expectations"
4622 version))
4623 (sha256
4624 (base32
4625 "1pp3k2608spj4kvqy2y16hs18an917g6vwgvphrfhjviac83090x"))))
4626 (build-system ruby-build-system)
4627 (propagated-inputs
4628 (list ruby-minitest))
4629 (synopsis "Adjust minitest behaviour for calling expectation methods")
4630 (description
4631 "Minitest-global_expectations allows continued use of expectation methods
4632on all objects. Calling expectation methods on all objects was deprecated in
4633minitest 5.12, and is planned to be removed from minitest 6.")
4634 (home-page "https://github.com/jeremyevans/minitest-global_expectations")
4635 (license license:expat)))
4636
4637(define-public ruby-minitest-hooks
4638 (package
4639 (name "ruby-minitest-hooks")
4640 (version "1.5.0")
4641 (source
4642 (origin
4643 (method url-fetch)
4644 (uri (rubygems-uri "minitest-hooks" version))
4645 (sha256
4646 (base32
4647 "05z8r6sw3fz4s44fs1150ndlcmcy82vlxmhps5nncg8vk59k3gmf"))))
4648 (build-system ruby-build-system)
4649 (arguments
4650 '(#:test-target "spec"
4651 ;; Test suite is incompatible with ruby-2.7.
4652 ;; https://github.com/jeremyevans/minitest-hooks/issues/19
4653 #:tests? #f))
4654 (native-inputs
4655 (list ruby-sequel ruby-sqlite3))
4656 (synopsis "Hooks for the minitest framework")
4657 (description
4658 "Minitest-hooks adds @code{around}, @code{before_all}, @code{after_all},
4659@code{around_all} hooks for Minitest. This allows, for instance, running each
4660suite of specs inside a database transaction, running each spec inside its own
4661savepoint inside that transaction. This can significantly speed up testing
4662for specs that share expensive database setup code.")
4663 (home-page "https://github.com/jeremyevans/minitest-hooks")
4664 (license license:expat)))
4665
4666(define-public ruby-daemons
4667 (package
4668 (name "ruby-daemons")
4669 (version "1.2.5")
4670 (source (origin
4671 (method url-fetch)
4672 (uri (rubygems-uri "daemons" version))
4673 (sha256
4674 (base32
4675 "15smbsg0gxb7nf0nrlnplc68y0cdy13dm6fviavpmw7c630sring"))))
4676 (build-system ruby-build-system)
4677 (arguments
4678 `(#:tests? #f)) ; no test suite
4679 (synopsis "Daemonize Ruby programs")
4680 (description "Daemons provides a way to wrap existing Ruby scripts to be
4681run as a daemon and to be controlled by simple start/stop/restart commands.")
4682 (home-page "https://github.com/thuehlinger/daemons")
4683 (license license:expat)))
4684
4685(define-public ruby-data_uri
4686 (package
4687 (name "ruby-data_uri")
4688 (version "0.1.0")
4689 (source
4690 (origin
4691 (method url-fetch)
4692 (uri (rubygems-uri "data_uri" version))
4693 (sha256
4694 (base32
4695 "0fzkxgdxrlbfl4537y3n9mjxbm28kir639gcw3x47ffchwsgdcky"))))
4696 (build-system ruby-build-system)
4697 (synopsis "URI class for parsing data URIs")
4698 (description
4699 "Data @acronym{URI, universal resource idenfitier}s allow resources to be
4700embedded inside a URI. The URI::Data class provides support for parsing these
4701URIs using the normal URI.parse method.")
4702 (home-page "https://github.com/dball/data_uri")
4703 (license license:expat)))
4704
4705(define-public ruby-deep-merge
4706 (package
4707 (name "ruby-deep-merge")
4708 (version "1.2.1")
4709 (home-page "https://github.com/danielsdeleo/deep_merge")
4710 ;; The Rubygem source does not contain the gemspec required for tests.
4711 (source (origin
4712 (method git-fetch)
4713 (uri (git-reference (url home-page) (commit version)))
4714 (file-name (git-file-name name version))
4715 (sha256
4716 (base32
4717 "0c9rk23ilhc0n4489y6lda2wzphpzh6ish6fahlbpjhxn82wb931"))))
4718 (build-system ruby-build-system)
4719 (native-inputs
4720 (list ruby-minitest))
4721 (synopsis "Recursively merge hashes")
4722 (description
4723 "Deep Merge is a set of utility functions for @code{Hash}. It permits
4724you to merge elements inside a hash together recursively.")
4725 (license license:expat)))
4726
4727(define-public ruby-git
4728 (package
4729 (name "ruby-git")
4730 (version "1.3.0")
4731 (source (origin
4732 (method url-fetch)
4733 (uri (rubygems-uri "git" version))
4734 (sha256
4735 (base32
4736 "1waikaggw7a1d24nw0sh8fd419gbf7awh000qhsf411valycj6q3"))))
4737 (build-system ruby-build-system)
4738 (arguments
4739 `(#:tests? #f ; no tests
4740 #:phases (modify-phases %standard-phases
4741 (add-after 'install 'patch-git-binary
4742 (lambda* (#:key inputs outputs #:allow-other-keys)
4743 ;; Make the default git binary an absolute path to the
4744 ;; store.
4745 (let ((git (search-input-file inputs "/bin/git"))
4746 (config (string-append
4747 (assoc-ref outputs "out")
4748 "/lib/ruby/vendor_ruby/gems/git-"
4749 ,version "/lib/git/config.rb")))
4750 (substitute* (list config)
4751 (("'git'")
4752 (string-append "'" git "'")))
4753 #t))))))
4754 (inputs
4755 (list git))
4756 (synopsis "Ruby wrappers for Git")
4757 (description "Ruby/Git is a Ruby library that can be used to create, read
4758and manipulate Git repositories by wrapping system calls to the git binary.")
4759 (home-page "https://github.com/schacon/ruby-git")
4760 (license license:expat)))
4761
4762(define-public ruby-hocon
4763 (package
4764 (name "ruby-hocon")
4765 (version "1.3.1")
4766 (home-page "https://github.com/puppetlabs/ruby-hocon")
4767 (source (origin
4768 (method git-fetch)
4769 (uri (git-reference (url home-page) (commit version)))
4770 (file-name (git-file-name name version))
4771 (sha256
4772 (base32
4773 "172hh2zr0n9nnszv0qvlgwszgkrq84yahrg053m68asy79zpmbqr"))))
4774 (build-system ruby-build-system)
4775 (arguments
4776 '(#:phases (modify-phases %standard-phases
4777 (replace 'check
4778 (lambda* (#:key tests? #:allow-other-keys)
4779 (if tests?
4780 (invoke "rspec")
4781 (format #t "test suite not run~%"))
4782 #t)))))
4783 (native-inputs
4784 (list bundler ruby-rspec))
4785 (synopsis "HOCON config library")
4786 (description
4787 "This package provides Ruby support for the @acronym{HOCON,
4788Human-Optimized Config Object Notation} configuration file format. It
4789supports parsing and modifying HOCON and JSON files, and rendering parsed
4790objects back to a @code{String}.")
4791 (license license:asl2.0)))
4792
4793(define-public ruby-slop
4794 (package
4795 (name "ruby-slop")
4796 (version "4.5.0")
4797 (source (origin
4798 (method url-fetch)
4799 (uri (rubygems-uri "slop" version))
4800 (sha256
4801 (base32
4802 "0bfm8535g0rkn9cbjndkckf0f7a3wj0rg4rqhrpsgxnbfdf2lm0p"))))
4803 (build-system ruby-build-system)
4804 (native-inputs
4805 (list ruby-minitest))
4806 (synopsis "Ruby command line option parser")
4807 (description "Slop provides a Ruby domain specific language for gathering
4808options and parsing command line flags.")
4809 (home-page "https://github.com/leejarvis/slop")
4810 (license license:expat)))
4811
4812(define-public ruby-slop-3
4813 (package (inherit ruby-slop)
4814 (version "3.6.0")
4815 (source (origin
4816 (method url-fetch)
4817 (uri (rubygems-uri "slop" version))
4818 (sha256
4819 (base32
4820 "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n"))))))
4821
4822(define-public ruby-multi-xml
4823 (package
4824 (name "ruby-multi-xml")
4825 (version "0.6.0")
4826 (source
4827 (origin
4828 (method url-fetch)
4829 (uri (rubygems-uri "multi_xml" version))
4830 (sha256
4831 (base32
4832 "0lmd4f401mvravi1i1yq7b2qjjli0yq7dfc4p1nj5nwajp7r6hyj"))))
4833 (build-system ruby-build-system)
4834 (arguments
4835 '(#:tests? #f)) ; No included tests
4836 (synopsis "Swappable XML backends for Ruby")
4837 (description
4838 "@code{MultiXml} provides swappable XML backends utilizing either LibXML,
4839Nokogiri, Ox, or REXML.")
4840 (home-page "https://github.com/sferik/multi_xml")
4841 (license license:expat)))
4842
4843(define-public ruby-multipart-post
4844 (package
4845 (name "ruby-multipart-post")
4846 (version "2.0.0")
4847 (source (origin
4848 (method url-fetch)
4849 (uri (rubygems-uri "multipart-post" version))
4850 (sha256
4851 (base32
4852 "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x"))))
4853 (build-system ruby-build-system)
4854 (native-inputs
4855 (list bundler))
4856 (synopsis "Multipart POST library for Ruby")
4857 (description "Multipart-Post Adds multipart POST capability to Ruby's
4858net/http library.")
4859 (home-page "https://github.com/nicksieger/multipart-post")
4860 (license license:expat)))
4861
4862(define-public ruby-multi-json
4863 (package
4864 (name "ruby-multi-json")
4865 (version "1.15.0")
4866 (source
4867 (origin
4868 (method git-fetch)
4869 ;; Tests are not distributed at rubygems.org so download from GitHub
4870 ;; instead.
4871 (uri (git-reference
4872 (url "https://github.com/intridea/multi_json")
4873 (commit (string-append "v" version))))
4874 (file-name (git-file-name name version))
4875 (sha256
4876 (base32
4877 "0mkdvy6i00yyksjvnv6znh7wf89j9506qzzjq6bsbmbkyqrszp4d"))))
4878 (build-system ruby-build-system)
4879 (arguments
4880 `(#:phases
4881 (modify-phases %standard-phases
4882 (add-before 'check 'pre-check
4883 (lambda _
4884 ;; As seen in the .travis.yml file.
4885 (setenv "SKIP_ADAPTERS" "gson,jr_jackson,nsjsonserialization"))))))
4886 (native-inputs
4887 (list ruby-rspec ruby-json-pure ruby-oj ruby-yajl-ruby))
4888 (synopsis "Common interface to multiple JSON libraries for Ruby")
4889 (description
4890 "This package provides a common interface to multiple JSON libraries,
4891including Oj, Yajl, the JSON gem (with C-extensions), the pure-Ruby JSON gem,
4892NSJSONSerialization, gson.rb, JrJackson, and OkJson.")
4893 (home-page "https://github.com/intridea/multi_json")
4894 (license license:expat)))
4895
4896(define-public ruby-multi-test
4897 (package
4898 (name "ruby-multi-test")
4899 (version "0.1.2")
4900 (source
4901 (origin
4902 (method url-fetch)
4903 (uri (rubygems-uri "multi_test" version))
4904 (sha256
4905 (base32
4906 "1sx356q81plr67hg16jfwz9hcqvnk03bd9n75pmdw8pfxjfy1yxd"))))
4907 (build-system ruby-build-system)
4908 (arguments
4909 '(;; Tests require different sets of specific gem versions to be available,
4910 ;; and there is no gemfile that specifies the newest versions of
4911 ;; dependencies to be tested.
4912 #:tests? #f))
4913 (synopsis
4914 "Interface to testing libraries loaded into a running Ruby process")
4915 (description
4916 "@code{multi_test} provides a uniform interface onto whatever testing
4917libraries that have been loaded into a running Ruby process to help control
4918rogue test/unit/autorun requires.")
4919 (home-page "https://github.com/cucumber/multi_test")
4920 (license license:expat)))
4921
4922(define-public ruby-arel
4923 (package
4924 (name "ruby-arel")
4925 (version "9.0.0")
4926 (source (origin
4927 (method url-fetch)
4928 (uri (rubygems-uri "arel" version))
4929 (sha256
4930 (base32
4931 "1jk7wlmkr61f6g36w9s2sn46nmdg6wn2jfssrhbhirv5x9n95nk0"))))
4932 (build-system ruby-build-system)
4933 (arguments '(#:tests? #f)) ; no tests
4934 (home-page "https://github.com/rails/arel")
4935 (synopsis "SQL AST manager for Ruby")
4936 (description "Arel is an SQL @dfn{Abstract Syntax Tree} (AST) manager for
4937Ruby. It simplifies the generation of complex SQL queries and adapts to
4938various relational database implementations.")
4939 (license license:expat)))
4940
4941(define-public ruby-marcel
4942 (package
4943 (name "ruby-marcel")
4944 (version "0.3.3")
4945 (source
4946 (origin
4947 (method url-fetch)
4948 (uri (rubygems-uri "marcel" version))
4949 (sha256
4950 (base32
4951 "1nxbjmcyg8vlw6zwagf17l9y2mwkagmmkg95xybpn4bmf3rfnksx"))))
4952 (build-system ruby-build-system)
4953 (arguments
4954 '(;; No included tests
4955 #:tests? #f))
4956 (propagated-inputs
4957 (list ruby-mimemagic))
4958 (synopsis "MIME type detection using magic numbers, filenames and extensions")
4959 (description
4960 "@code{marcel} provides @acronym{MIME, Multipurpose Internet Mail
4961Extensions} type detection using magic numbers, filenames, and extensions")
4962 (home-page "https://github.com/basecamp/marcel")
4963 (license license:expat)))
4964
4965(define-public ruby-minitar
4966 ;; We package from the GitHub source to fix the security issue reported at
4967 ;; https://github.com/halostatue/minitar/issues/16.
4968 (let ((commit "e25205ecbb6277ae8a3df1e6a306d7ed4458b6e4"))
4969 (package
4970 (name "ruby-minitar")
4971 (version (string-append "0.5.4-1." (string-take commit 8)))
4972 (source
4973 (origin
4974 (method git-fetch)
4975 (uri (git-reference
4976 (url "https://github.com/halostatue/minitar")
4977 (commit commit)))
4978 (file-name (string-append name "-" version "-checkout"))
4979 (sha256
4980 (base32
4981 "1iywfx07jgjqcmixzkxk9zdwfmij1fyg1z2jlwzj15cj7s99qlfv"))))
4982 (build-system ruby-build-system)
4983 (arguments
4984 '(#:tests? #f)) ; missing a gemspec
4985 (synopsis "Ruby library and utility for handling tar archives")
4986 (description
4987 "Archive::Tar::Minitar is a pure-Ruby library and command-line utility
4988that provides the ability to deal with POSIX tar archive files.")
4989 (home-page "http://www.github.com/atoulme/minitar")
4990 (license (list license:gpl2+ license:ruby)))))
4991
4992(define-public ruby-mini-portile
4993 (package
4994 (name "ruby-mini-portile")
4995 (version "0.6.2")
4996 (source
4997 (origin
4998 (method url-fetch)
4999 (uri (rubygems-uri "mini_portile" version))
5000 (sha256
5001 (base32
5002 "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w"))))
5003 (build-system ruby-build-system)
5004 (arguments
5005 '(#:tests? #f)) ; tests require network access
5006 (synopsis "Ports system for Ruby developers")
5007 (description "Mini-portile is a port/recipe system for Ruby developers.
5008It provides a standard way to compile against specific versions of libraries
5009to reproduce user environments.")
5010 (home-page "https://github.com/flavorjones/mini_portile")
5011 (license license:expat)))
5012
5013(define-public ruby-mini-portile-2
5014 (package (inherit ruby-mini-portile)
5015 (version "2.4.0")
5016 (source (origin
5017 (method url-fetch)
5018 (uri (rubygems-uri "mini_portile2" version))
5019 (sha256
5020 (base32
5021 "15zplpfw3knqifj9bpf604rb3wc1vhq6363pd6lvhayng8wql5vy"))))))
5022
5023(define-public ruby-nokogiri
5024 (package
5025 (name "ruby-nokogiri")
5026 (version "1.12.5")
5027 (source (origin
5028 (method url-fetch)
5029 (uri (rubygems-uri "nokogiri" version))
5030 (sha256
5031 (base32
5032 "1v02g7k7cxiwdcahvlxrmizn3avj2q6nsjccgilq1idc89cr081b"))))
5033 (build-system ruby-build-system)
5034 (arguments
5035 ;; Tests fail because Nokogiri can only test with an installed extension,
5036 ;; and also because many test framework dependencies are missing.
5037 `(#:tests? #f
5038 #:gem-flags (list "--" "--use-system-libraries"
5039 (string-append "--with-xml2-include="
5040 (assoc-ref %build-inputs "libxml2")
5041 "/include/libxml2" ))))
5042 (native-inputs
5043 (list ruby-hoe))
5044 (inputs
5045 (list zlib libxml2 libxslt))
5046 (propagated-inputs
5047 (list ruby-mini-portile-2.6.1 ruby-pkg-config))
5048 (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
5049 (description "Nokogiri (鋸) parses and searches XML/HTML, and features
5050both CSS3 selector and XPath 1.0 support.")
5051 (home-page "http://www.nokogiri.org/")
5052 (license license:expat)))
5053
5054;; nokogiri requires this version exactly.
5055(define-public ruby-mini-portile-2.6.1
5056 (package
5057 (inherit ruby-mini-portile)
5058 (version "2.6.1")
5059 (source (origin
5060 (method url-fetch)
5061 (uri (rubygems-uri "mini_portile2" version))
5062 (sha256
5063 (base32
5064 "1lvxm91hi0pabnkkg47wh1siv56s6slm2mdq1idfm86dyfidfprq"))))))
5065
5066(define-public ruby-method-source
5067 (package
5068 (name "ruby-method-source")
5069 (version "1.0.0")
5070 (source
5071 (origin
5072 (method url-fetch)
5073 (uri (rubygems-uri "method_source" version))
5074 (sha256
5075 (base32
5076 "1pnyh44qycnf9mzi1j6fywd5fkskv3x7nmsqrrws0rjn5dd4ayfp"))))
5077 (build-system ruby-build-system)
5078 (arguments
5079 `(#:test-target "spec"
5080 #:phases
5081 (modify-phases %standard-phases
5082 (add-after 'unpack 'remove-git-ls-files
5083 (lambda* (#:key outputs #:allow-other-keys)
5084 (substitute* "Rakefile"
5085 (("git ls-files") "find . -type f"))
5086 #t)))))
5087 (native-inputs
5088 (list ruby-rspec))
5089 (synopsis "Retrieve the source code for Ruby methods")
5090 (description "Method_source retrieves the source code for Ruby methods.
5091Additionally, it can extract source code from Proc and Lambda objects or just
5092extract comments.")
5093 (home-page "https://github.com/banister/method_source")
5094 (license license:expat)))
5095
5096(define-public ruby-coderay
5097 (package
5098 (name "ruby-coderay")
5099 (version "1.1.2")
5100 (source
5101 (origin
5102 (method url-fetch)
5103 (uri (rubygems-uri "coderay" version))
5104 (sha256
5105 (base32
5106 "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y"))))
5107 (build-system ruby-build-system)
5108 (arguments
5109 '(#:tests? #f)) ; missing test files
5110 (synopsis "Ruby syntax highlighting library")
5111 (description "Coderay is a Ruby library that provides syntax highlighting
5112for select languages.")
5113 (home-page "http://coderay.rubychan.de")
5114 (license license:expat)))
5115
5116(define-public ruby-cuke-modeler
5117 (package
5118 (name "ruby-cuke-modeler")
5119 (version "3.1.0")
5120 (source
5121 (origin
5122 (method url-fetch)
5123 (uri (rubygems-uri "cuke_modeler" version))
5124 (sha256
5125 (base32
5126 "19smj3g3wvz0203l549sadpcxgh0ir350a6k78gq0bmlv9cchmjb"))))
5127 (build-system ruby-build-system)
5128 (arguments `(#:tests? #f)) ;no test suite in gem
5129 (propagated-inputs
5130 (list ruby-gherkin))
5131 (synopsis "Gherkin test suite analysis tool")
5132 (description "CukeModeler facilitates modeling a test suite that is
5133written in Gherkin (e.g. Cucumber, SpecFlow, Lettuce, etc.). It does this by
5134providing an abstraction layer on top of the Abstract Syntax Tree (AST) that
5135the @code{cucumber-gherkin} generates when parsing features, as well as
5136providing models for feature files and directories in order to be able to have
5137a fully traversable model tree of a test suite's structure. These models can
5138then be analyzed or manipulated more easily than the underlying AST layer.")
5139 (home-page "https://github.com/enkessler/cuke_modeler")
5140 (license license:expat)))
5141
5142(define-public ruby-parallel-tests
5143 (package
5144 (name "ruby-parallel-tests")
5145 (version "3.0.0")
5146 (home-page "https://github.com/grosser/parallel_tests")
5147 (source (origin
5148 (method git-fetch)
5149 (uri (git-reference
5150 (url home-page)
5151 (commit (string-append "v" version))))
5152 (file-name (string-append name version))
5153 (sha256
5154 (base32
5155 "08a6ndqn2dqacmc7yg48k0dh2rfrynvhkd5hiay16dl9m1r9q8pz"))))
5156 (build-system ruby-build-system)
5157 (arguments
5158 '(#:test-target "default"
5159 #:phases (modify-phases %standard-phases
5160 (add-after 'patch-source-shebangs 'patch-shell-invokations
5161 (lambda _
5162 (substitute* '("lib/parallel_tests/tasks.rb"
5163 "spec/parallel_tests/tasks_spec.rb")
5164 (("/bin/sh") (which "sh"))
5165 (("/bin/bash") (which "bash")))
5166 #t))
5167 (add-before 'check 'remove-version-constraints
5168 (lambda _
5169 ;; Remove hard coded version constraints, instead just
5170 ;; use whatever versions are available in Guix.
5171 (delete-file "Gemfile.lock")
5172 (substitute* "Gemfile"
5173 (("'minitest',.*")
5174 "'minitest'\n")
5175 (("'cucumber',.*")
5176 "'cucumber'\n"))
5177 #t))
5178 (add-before 'check 'disable-rails-test
5179 (lambda _
5180 ;; XXX: This test attempts to download and run the test
5181 ;; suites of multiple Rails versions(!) directly.
5182 (delete-file "spec/rails_spec.rb")
5183 #t))
5184 (add-before 'check 'set-HOME
5185 (lambda _
5186 ;; Some tests check the output of Bundler, and fail when
5187 ;; Bundler warns that /homeless-shelter does not exist.
5188 (setenv "HOME" "/tmp")
5189 #t)))))
5190 (native-inputs
5191 (list ruby-bump
5192 ruby-cucumber
5193 ruby-cuke-modeler
5194 ruby-minitest
5195 ruby-rake
5196 ruby-rspec
5197 ruby-spinach))
5198 (propagated-inputs
5199 (list ruby-parallel))
5200 (synopsis "Run tests in parallel")
5201 (description
5202 "This package can speed up @code{Test::Unit}, @code{RSpec},
5203@code{Cucumber}, and @code{Spinach} tests by running them concurrently
5204across multiple CPU cores.")
5205 (license license:expat)))
5206
5207(define-public ruby-parser
5208 (package
5209 (name "ruby-parser")
5210 (version "3.0.0.0")
5211 (source
5212 (origin
5213 (method url-fetch)
5214 (uri (rubygems-uri "parser" version))
5215 (sha256
5216 (base32
5217 "1jixakyzmy0j5c1rb0fjrrdhgnyryvrr6vgcybs14jfw09akv5ml"))))
5218 (build-system ruby-build-system)
5219 (arguments
5220 '(#:tests? #f)) ; tests not included in gem
5221 (native-inputs
5222 (list bundler ruby-cliver ruby-simplecov ruby-racc))
5223 (inputs
5224 (list ragel))
5225 (propagated-inputs
5226 (list ruby-ast))
5227 (synopsis "Ruby parser written in pure Ruby")
5228 (description
5229 "This package provides a Ruby parser written in pure Ruby.")
5230 (home-page "https://github.com/whitequark/parser")
5231 (license license:expat)))
5232
5233(define-public ruby-sexp-processor
5234 (package
5235 (name "ruby-sexp-processor")
5236 (version "4.15.0")
5237 (source
5238 (origin
5239 (method url-fetch)
5240 (uri (rubygems-uri "sexp_processor" version))
5241 (sha256
5242 (base32
5243 "0d1vks77xnd0m3s94a58f9bkdwlaml5qdkmprx279m2s0pc2gv55"))))
5244 (build-system ruby-build-system)
5245 (native-inputs
5246 ;; TODO: Add ruby-minitest-proveit once available.
5247 (list ruby-hoe))
5248 (synopsis "ParseTree fork which includes generic S-exp processing tools")
5249 (description "The sexp_processor package is derived from ParseTree, but
5250contrary to ParseTree, it includes all the generic S-exp processing tools.
5251Amongst the included tools are @code{Sexp}, @code{SexpProcessor} and
5252@code{Environment}")
5253 (home-page "https://github.com/seattlerb/sexp_processor")
5254 (license license:expat)))
5255
5256(define-public ruby-ruby-parser
5257 (package
5258 (name "ruby-ruby-parser")
5259 (version "3.14.2")
5260 (source
5261 (origin
5262 (method url-fetch)
5263 (uri (rubygems-uri "ruby_parser" version))
5264 (sha256
5265 (base32
5266 "09qcdyjjw3p7g6cjm5m9swkms1xnv35ndiy7yw24cas16qrhha6c"))))
5267 (build-system ruby-build-system)
5268 (native-inputs
5269 (list ruby-hoe ruby-racc unifdef))
5270 (propagated-inputs
5271 (list ruby-sexp-processor))
5272 (home-page "https://github.com/seattlerb/ruby_parser/")
5273 (synopsis "Ruby parser written in pure Ruby")
5274 (description "The ruby_parser (RP) package provides a Ruby parser written
5275in pure Ruby. It outputs S-expressions which can be manipulated and converted
5276back to Ruby via the @code{ruby2ruby} library.")
5277 (license license:expat)))
5278
5279(define-public ruby-prawn-manual-builder
5280 (package
5281 (name "ruby-prawn-manual-builder")
5282 (version "0.3.1")
5283 (source
5284 (origin
5285 (method url-fetch)
5286 (uri (rubygems-uri "prawn-manual_builder" version))
5287 (sha256
5288 (base32 "1vlg5w7wq43g2hgpgra2nrcxj1kb4ayqliz4gmja2rhs037j2vzs"))))
5289 (build-system ruby-build-system)
5290 (arguments
5291 '(#:tests? #f ; no included tests
5292 #:phases
5293 (modify-phases %standard-phases
5294 (add-after 'extract-gemspec 'patch-gemspec
5295 (lambda _
5296 (substitute* ".gemspec"
5297 ;; Loosen the requirement for pdf-inspector
5298 (("~> 1\\.0\\.7") ">= 0")))))))
5299 (propagated-inputs
5300 (list ruby-coderay))
5301 (synopsis "Tool for writing manuals for Prawn and Prawn accessories")
5302 (description
5303 "This package provides a tool for writing manuals for Prawn and Prawn
5304accessories")
5305 (home-page "https://github.com/prawnpdf/prawn-manual_builder")
5306 (license %prawn-project-licenses)))
5307
5308(define-public ruby-progress_bar
5309 (package
5310 (name "ruby-progress_bar")
5311 (version "1.1.0")
5312 (source
5313 (origin
5314 (method url-fetch)
5315 (uri (rubygems-uri "progress_bar" version))
5316 (sha256
5317 (base32
5318 "1qc40mr6p1z9a3vlpnsg1zfgk1qswviql2a31y63wpv3vr6b5f48"))))
5319 (build-system ruby-build-system)
5320 (arguments
5321 '(#:test-target "spec"))
5322 (propagated-inputs
5323 (list ruby-highline ruby-options))
5324 (native-inputs
5325 (list bundler ruby-rspec ruby-timecop))
5326 (synopsis
5327 "Ruby library for displaying progress bars")
5328 (description
5329 "ProgressBar is a simple library for displaying progress bars. The
5330maximum value is configurable, and additional information can be displayed
5331like the percentage completion, estimated time remaining, elapsed time and
5332rate.")
5333 (home-page "https://github.com/paul/progress_bar")
5334 (license license:wtfpl2)))
5335
5336(define-public ruby-dep
5337 (package
5338 (name "ruby-dep")
5339 (version "1.5.0")
5340 (source
5341 (origin
5342 (method url-fetch)
5343 (uri (rubygems-uri "ruby_dep" version))
5344 (sha256
5345 (base32
5346 "1c1bkl97i9mkcvkn1jks346ksnvnnp84cs22gwl0vd7radybrgy5"))))
5347 (build-system ruby-build-system)
5348 (arguments
5349 '(#:tests? #f)) ; No included tests
5350 (synopsis "Creates a version constraint of supported Rubies")
5351 (description
5352 "This package helps create a version constraint of supported Rubies,
5353suitable for a gemspec file.")
5354 (home-page "https://github.com/e2/ruby_dep")
5355 (license license:expat)))
5356
5357(define-public ruby-progressbar
5358 (package
5359 (name "ruby-progressbar")
5360 (version "1.10.1")
5361 (source
5362 (origin
5363 (method url-fetch)
5364 (uri (rubygems-uri "ruby-progressbar" version))
5365 (sha256
5366 (base32 "1k77i0d4wsn23ggdd2msrcwfy0i376cglfqypkk2q77r2l3408zf"))))
5367 (build-system ruby-build-system)
5368 (arguments
5369 '(;; TODO: There looks to be a circular dependency with ruby-fuubar.
5370 #:tests? #f))
5371 (synopsis "Text progress bar library for Ruby")
5372 (description
5373 "Ruby/ProgressBar is an flexible text progress bar library for Ruby.
5374The output can be customized with a formatting system.")
5375 (home-page "https://github.com/jfelchner/ruby-progressbar")
5376 (license license:expat)))
5377
5378(define-public ruby-latest-ruby
5379 (package
5380 (name "ruby-latest-ruby")
5381 (version "3.1.0")
5382 (source (origin
5383 (method url-fetch)
5384 (uri (rubygems-uri "latest_ruby" version))
5385 (sha256
5386 (base32
5387 "15rqwgxzpnkzdiz8m02jra0zq5sx0fiz61vkfrj1ls6slqfhnzqg"))))
5388 (build-system ruby-build-system)
5389 (arguments
5390 '(#:tests? #f)) ; No Rakefile
5391 (synopsis "Answers the question of what the latest Ruby version is")
5392 (description "Knows about MRI, Rubinius, JRuby, MagLev and MacRuby.")
5393 (home-page "https://github.com/kyrylo/latest_ruby")
5394 (license license:zlib)))
5395
5396(define-public ruby-pry
5397 (package
5398 (name "ruby-pry")
5399 (version "0.13.1")
5400 (source
5401 (origin
5402 (method url-fetch)
5403 (uri (rubygems-uri "pry" version))
5404 (sha256
5405 (base32
5406 "0iyw4q4an2wmk8v5rn2ghfy2jaz9vmw2nk8415nnpx2s866934qk"))))
5407 (build-system ruby-build-system)
5408 (arguments
5409 '(#:tests? #f)) ; no tests
5410 (propagated-inputs
5411 (list ruby-coderay ruby-method-source))
5412 (synopsis "Ruby REPL")
5413 (description "Pry is an IRB alternative and runtime developer console for
5414Ruby. It features syntax highlighting, a plugin architecture, runtime
5415invocation, and source and documentation browsing.")
5416 (home-page "https://cobaltbluemedia.com/pryrepl/")
5417 (license license:expat)))
5418
5419(define-public ruby-pry-doc
5420 (package
5421 (name "ruby-pry-doc")
5422 (version "1.3.0")
5423 (source (origin
5424 (method url-fetch)
5425 (uri (rubygems-uri "pry-doc" version))
5426 (sha256
5427 (base32
5428 "0wyvql6pb6m8jl8bsamabxhxhd86bnqblspaxzz05sl0fm2ynj0r"))))
5429 (build-system ruby-build-system)
5430 (propagated-inputs (list ruby-pry ruby-yard))
5431 (native-inputs (list ruby-latest-ruby ruby-rspec ruby-rake)) ;for tests
5432 (synopsis "Provides YARD and extended documentation support for Pry")
5433 (description
5434 "Pry Doc is a Pry REPL plugin. It provides extended documentation
5435support for the REPL by means of improving the @code{show-doc} and
5436@code{show-source} commands. With help of the plugin the commands are
5437be able to display the source code and the docs of Ruby methods and
5438classes implemented in C.")
5439 (home-page "https://github.com/pry/pry-doc")
5440 (license license:expat)))
5441
5442(define-public ruby-single-cov
5443 (package
5444 (name "ruby-single-cov")
5445 (version "1.3.2")
5446 (home-page "https://github.com/grosser/single_cov")
5447 (source (origin
5448 (method git-fetch)
5449 (uri (git-reference (url home-page)
5450 (commit (string-append "v" version))))
5451 (file-name (git-file-name name version))
5452 (sha256
5453 (base32
5454 "05qdzpcai1p23a120gb9bxkfl4y73k9hicx34ch2lsk31lgi9bl7"))))
5455 (build-system ruby-build-system)
5456 (arguments
5457 '(#:test-target "default"
5458 #:phases (modify-phases %standard-phases
5459 (replace 'replace-git-ls-files
5460 (lambda _
5461 (substitute* "single_cov.gemspec"
5462 (("`git ls-files lib/ bin/ MIT-LICENSE`")
5463 "`find lib/ bin/ MIT-LICENSE -type f | sort`"))
5464 #t))
5465 (add-before 'check 'remove-version-constraints
5466 (lambda _
5467 (delete-file "Gemfile.lock")
5468 #t))
5469 (add-before 'check 'make-files-writable
5470 (lambda _
5471 ;; Tests need to create local directories and open files
5472 ;; with write permissions.
5473 (for-each make-file-writable
5474 (find-files "specs" #:directories? #t))
5475 #t))
5476 (add-before 'check 'disable-failing-test
5477 (lambda _
5478 ;; XXX: This test copies assets from minitest, but can
5479 ;; not cope with the files being read-only. Just skip
5480 ;; it for now.
5481 (substitute* "specs/single_cov_spec.rb"
5482 (("it \"complains when coverage is bad\"")
5483 "xit \"complains when coverage is bad\""))
5484 #t)))))
5485 (native-inputs
5486 (list ruby-bump ruby-minitest ruby-rspec ruby-simplecov))
5487 (synopsis "Code coverage reporting tool")
5488 (description
5489 "This package provides actionable code coverage reports for Ruby
5490projects. It has very little overhead and can be easily integrated with
5491development tools to catch coverage problems early.")
5492 (license license:expat)))
5493
5494(define-public ruby-oedipus-lex
5495 (package
5496 (name "ruby-oedipus-lex")
5497 (version "2.5.2")
5498 (source
5499 (origin
5500 (method url-fetch)
5501 (uri (rubygems-uri "oedipus_lex" version))
5502 (sha256
5503 (base32
5504 "1v1rk78khwq87ar300lwll570zxpkq9rjnpgc9mgsyd6mm9qjz4w"))))
5505 (build-system ruby-build-system)
5506 (native-inputs
5507 (list ruby-hoe))
5508 (synopsis "Ruby lexer")
5509 (description
5510 "Oedipus Lex is a lexer generator in the same family as Rexical and Rex.
5511It is based primarily on generating code much like you would a hand-written
5512lexer. It uses StrScanner within a multi-level case statement. As such,
5513Oedipus matches on the first match, not the longest.")
5514 (home-page "https://github.com/seattlerb/oedipus_lex")
5515 (license license:expat)))
5516
5517(define-public ruby-guard
5518 (package
5519 (name "ruby-guard")
5520 (version "2.13.0")
5521 (source (origin
5522 (method git-fetch)
5523 ;; The gem does not include a Rakefile, nor does it contain a
5524 ;; gemspec file, nor does it come with the tests. This is why
5525 ;; we fetch the tarball from Github.
5526 (uri (git-reference
5527 (url "https://github.com/guard/guard")
5528 (commit (string-append "v" version))))
5529 (file-name (git-file-name name version))
5530 (sha256
5531 (base32
5532 "16pxcszr0g2jnl3090didxh1d8z5m2mly14m3w4rspb8fmclsnjs"))))
5533 (build-system ruby-build-system)
5534 (arguments
5535 `(#:tests? #f ; tests require cucumber
5536 #:phases
5537 (modify-phases %standard-phases
5538 (add-after 'unpack 'remove-git-ls-files
5539 (lambda* (#:key outputs #:allow-other-keys)
5540 (substitute* "guard.gemspec"
5541 (("git ls-files -z") "find . -type f -print0"))
5542 #t))
5543 (replace 'build
5544 (lambda _
5545 (invoke "gem" "build" "guard.gemspec"))))))
5546 (propagated-inputs
5547 (list ruby-formatador
5548 ruby-listen
5549 ruby-lumberjack
5550 ruby-nenv
5551 ruby-notiffany
5552 ruby-pry
5553 ruby-shellany
5554 ruby-thor))
5555 (native-inputs
5556 (list bundler ruby-rspec))
5557 (synopsis "Tool to handle events on file system modifications")
5558 (description
5559 "Guard is a command line tool to easily handle events on file system
5560modifications. Guard automates various tasks by running custom rules whenever
5561file or directories are modified.")
5562 (home-page "https://guardgem.org/")
5563 (license license:expat)))
5564
5565(define-public ruby-spinach
5566 (package
5567 (name "ruby-spinach")
5568 (version "0.11.0")
5569 (home-page "https://github.com/codegram/spinach")
5570 (source (origin
5571 (method url-fetch)
5572 (uri (rubygems-uri "spinach" version))
5573 (sha256
5574 (base32
5575 "1mv053mqz9c8ngqa6wp1ymk2fax6j0yqzax6918akrdr7c3fx3c6"))))
5576 (build-system ruby-build-system)
5577 (arguments
5578 ;; FIXME: Disable tests altogether because they depend on 'capybara'
5579 ;; which in turn depends on many other unpackaged gems. Enable once
5580 ;; capybara is available.
5581 '(#:tests? #f))
5582 (propagated-inputs
5583 (list ruby-colorize ruby-gherkin-ruby ruby-json))
5584 (synopsis "Gherkin-based BDD framework")
5585 (description
5586 "Spinach is a high-level @acronym{BDD, Behavior-driven development}
5587framework that leverages the expressive @code{Gherkin} language to help you
5588define executable specifications of your code.")
5589 (license license:expat)))
5590
5591(define-public ruby-tilt
5592 (package
5593 (name "ruby-tilt")
5594 (version "2.0.10")
5595 (source
5596 (origin
5597 (method git-fetch) ;the distributed gem lacks tests
5598 (uri (git-reference
5599 (url "https://github.com/rtomayko/tilt")
5600 (commit (string-append "v" version))))
5601 (file-name (git-file-name name version))
5602 (sha256
5603 (base32
5604 "0adb7fg7925n2rd9a8kkqz3mgylw2skp9hkh9qc1rnph72mqsm6r"))))
5605 (build-system ruby-build-system)
5606 (arguments
5607 '(#:phases
5608 (modify-phases %standard-phases
5609 (add-after 'unpack 'remove-some-dependencies
5610 (lambda _
5611 (substitute* "Gemfile"
5612 ;; TODO ronn is used for generating the manual
5613 (("gem 'ronn'.*") "\n")
5614 ;; ruby-haml has a runtime dependency on ruby-tilt, so don't
5615 ;; pass it in as a native-input
5616 (("gem 'haml'.*") "\n")
5617 ;; TODO Not all of these gems are packaged for Guix yet:
5618 ;; less, coffee-script, livescript, babel-transpiler,
5619 ;; typescript-node
5620 (("if can_execjs") "if false")
5621 ;; Disable the secondary group to reduce the number of
5622 ;; dependencies. None of the normal approaches work, so patch
5623 ;; the Gemfile instead.
5624 (("group :secondary") "[].each"))
5625 #t)))))
5626 (propagated-inputs
5627 (list ruby-pandoc-ruby ruby-sassc))
5628 (native-inputs
5629 (list bundler ruby-yard ruby-builder ruby-erubis ruby-markaby))
5630 (synopsis "Generic interface to multiple Ruby template engines")
5631 (description
5632 "Tilt is a thin interface over a number of different Ruby template
5633engines in an attempt to make their usage as generic as possible.")
5634 (home-page "https://github.com/rtomayko/tilt/")
5635 (license license:expat)))
5636
5637(define-public ruby-thread-safe
5638 (package
5639 (name "ruby-thread-safe")
5640 (version "0.3.6")
5641 (source
5642 (origin
5643 (method url-fetch)
5644 (uri (rubygems-uri "thread_safe" version))
5645 (sha256
5646 (base32
5647 "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy"))))
5648 (build-system ruby-build-system)
5649 (arguments
5650 '(#:tests? #f)) ; needs simplecov, among others
5651 (synopsis "Thread-safe utilities for Ruby")
5652 (description "The thread_safe library provides thread-safe collections and
5653utilities for Ruby.")
5654 (home-page "https://github.com/ruby-concurrency/thread_safe")
5655 (license license:asl2.0)))
5656
5657(define-public ruby-tzinfo
5658 (package
5659 (name "ruby-tzinfo")
5660 (version "2.0.4")
5661 (source
5662 (origin
5663 (method git-fetch)
5664 (uri (git-reference
5665 ;; Pull from git because the gem has no tests.
5666 (url "https://github.com/tzinfo/tzinfo")
5667 (commit (string-append "v" version))))
5668 (file-name (git-file-name name version))
5669 (sha256
5670 (base32
5671 "0jaq1givdaz5jxz47xngyj3j315n872rk97mnpm5njwm48wy45yh"))))
5672 (build-system ruby-build-system)
5673 (arguments
5674 '(#:phases
5675 (modify-phases %standard-phases
5676 (add-after 'unpack 'skip-safe-tests
5677 (lambda _
5678 (substitute* "test/test_utils.rb"
5679 (("def safe_test\\(options = \\{\\}\\)")
5680 "def safe_test(options = {})
5681 skip('The Guix build environment has an unsafe load path')"))
5682 #t))
5683 (add-before 'check 'pre-check
5684 (lambda _
5685 (setenv "HOME" (getcwd))
5686 (substitute* "Gemfile"
5687 (("simplecov.*") "simplecov'\n"))
5688 #t))
5689 (replace 'check
5690 (lambda* (#:key tests? test-target #:allow-other-keys)
5691 (when tests?
5692 (invoke "bundler" "exec" "rake" test-target))
5693 #t)))))
5694 (propagated-inputs
5695 `(("ruby-concurrent-ruby" ,ruby-concurrent)))
5696 (native-inputs
5697 (list ruby-simplecov))
5698 (synopsis "Time zone library for Ruby")
5699 (description "TZInfo is a Ruby library that provides daylight savings
5700aware transformations between times in different time zones.")
5701 (home-page "https://tzinfo.github.io")
5702 (license license:expat)))
5703
5704(define-public ruby-tzinfo-data
5705 (package
5706 (name "ruby-tzinfo-data")
5707 (version "1.2021.1")
5708 (source
5709 (origin
5710 (method git-fetch)
5711 ;; Download from GitHub because the rubygems version does not contain
5712 ;; Rakefile or tests.
5713 (uri (git-reference
5714 (url "https://github.com/tzinfo/tzinfo-data")
5715 (commit (string-append "v" version))))
5716 (file-name (git-file-name name version))
5717 (sha256
5718 (base32
5719 "0yzyr3rf8qaw6kxfc0gwpxsb7gl3rhfpx9g1c2z15vapyminhi60"))))
5720 (build-system ruby-build-system)
5721 (arguments
5722 `(#:phases
5723 (modify-phases %standard-phases
5724 (add-after 'unpack 'patch-source
5725 (lambda* (#:key inputs #:allow-other-keys)
5726 (substitute* "Rakefile"
5727 (("https://data.iana.org/time-zones/releases")
5728 (assoc-ref inputs "tzdata")))
5729 #t))
5730 (add-before 'check 'pre-check
5731 (lambda _
5732 (setenv "HOME" (getcwd))
5733 (substitute* "Rakefile"
5734 ;; Don't need gpg, and it may break after a time.
5735 (("gpg ") "echo ")
5736 ((" sh\\(\\\"make -C" text)
5737 (string-append " sh(\"sed -i 's@/bin/sh@sh@' #{tzdb_combined_path}/Makefile \")\n"
5738 " sh(\"sed -i 's@cc=@cc?=@' #{tzdb_combined_path}/Makefile \")\n" text)))
5739 (setenv "cc" ,(cc-for-target))
5740 #t)))))
5741 (propagated-inputs
5742 (list ruby-tzinfo))
5743 (native-inputs
5744 `(("tzdata"
5745 ,(file-union "tzdata-for-ruby-tzdata-info"
5746 `(("tzdata2021a.tar.gz"
5747 ,(origin
5748 (method url-fetch)
5749 (uri "https://data.iana.org/time-zones/releases/tzdata2021a.tar.gz")
5750 (sha256
5751 (base32
5752 "022fn6gkmp7pamlgab04x0dm5hnyn2m2fcnyr3pvm36612xd5rrr"))))
5753 ("tzdata2021a.tar.gz.asc"
5754 ,(origin
5755 (method url-fetch)
5756 (uri "https://data.iana.org/time-zones/releases/tzdata2021a.tar.gz.asc")
5757 (sha256
5758 (base32
5759 "0n7h2w8ji1lrxpk0d44wyfshlhr7c9jmwj6lqbxlyvqnfi3gbicx"))))
5760 ("tzcode2021a.tar.gz"
5761 ,(origin
5762 (method url-fetch)
5763 (uri "https://data.iana.org/time-zones/releases/tzcode2021a.tar.gz")
5764 (sha256
5765 (base32
5766 "1l02b0jiwp3fl0xd6227i69d26rmx3yrnq0ssq9vvdmm4jhvyipb"))))
5767 ("tzcode2021a.tar.gz.asc"
5768 ,(origin
5769 (method url-fetch)
5770 (uri "https://data.iana.org/time-zones/releases/tzcode2021a.tar.gz.asc")
5771 (sha256
5772 (base32
5773 "1qhlj4lr810s47s1lwcvv1sgvg2sflf98w4sbg1lc8wzv5qxxv7g")))))
5774
5775 ;; XXX: Explicitly depend on 'guile-final', which was previously
5776 ;; implied via the '%guile-for-build' fluid but not explicit.
5777 ;; TODO: Remove this argument on the next rebuild cycle.
5778 #:guile (module-ref (resolve-interface
5779 '(gnu packages commencement))
5780 'guile-final)))))
5781 (synopsis "Data from the IANA Time Zone database")
5782 (description
5783 "This library provides @code{TZInfo::Data}, which contains data from the
5784IANA Time Zone database packaged as Ruby modules for use with @code{TZInfo}.")
5785 (home-page "https://tzinfo.github.io")
5786 (license license:expat)))
5787
5788(define-public ruby-rb-inotify
5789 (package
5790 (name "ruby-rb-inotify")
5791 (version "0.9.10")
5792 (source
5793 (origin
5794 (method url-fetch)
5795 (uri (rubygems-uri "rb-inotify" version))
5796 (sha256
5797 (base32
5798 "0yfsgw5n7pkpyky6a9wkf1g9jafxb0ja7gz0qw0y14fd2jnzfh71"))))
5799 (build-system ruby-build-system)
5800 (arguments
5801 '(#:tests? #f ; there are no tests
5802 #:phases
5803 (modify-phases %standard-phases
5804 ;; Building the gemspec with rake is not working here since it is
5805 ;; generated with Jeweler. It is also unnecessary because the
5806 ;; existing gemspec does not use any development tools to generate a
5807 ;; list of files.
5808 (replace 'build
5809 (lambda _
5810 (invoke "gem" "build" "rb-inotify.gemspec"))))))
5811 (propagated-inputs
5812 (list ruby-ffi))
5813 (native-inputs
5814 (list ruby-yard))
5815 (synopsis "Ruby wrapper for Linux's inotify")
5816 (description "rb-inotify is a simple wrapper over the @code{inotify} Linux
5817kernel subsystem for monitoring changes to files and directories.")
5818 (home-page "https://github.com/nex3/rb-inotify")
5819 (license license:expat)))
5820
5821(define-public ruby-pry-editline
5822 (package
5823 (name "ruby-pry-editline")
5824 (version "1.1.2")
5825 (source (origin
5826 (method url-fetch)
5827 (uri (rubygems-uri "pry-editline" version))
5828 (sha256
5829 (base32
5830 "1pjxyvdxvw41xw3yyl18pwzix8hbvn6lgics7qcfhjfsf1zs8x1z"))))
5831 (build-system ruby-build-system)
5832 (arguments `(#:tests? #f)) ; no tests included
5833 (native-inputs
5834 (list bundler))
5835 (synopsis "Open the current REPL line in an editor")
5836 (description
5837 "This gem provides a plugin for the Ruby REPL to enable opening the
5838current line in an external editor.")
5839 (home-page "https://github.com/tpope/pry-editline")
5840 (license license:expat)))
5841
5842(define-public ruby-sdoc
5843 (package
5844 (name "ruby-sdoc")
5845 (version "1.1.0")
5846 (source (origin
5847 (method url-fetch)
5848 (uri (rubygems-uri "sdoc" version))
5849 (sha256
5850 (base32
5851 "1am73dldx1fqlw2xny5vyk00pgkisg6bvs0pa8jjd7c19drjczrd"))))
5852 (build-system ruby-build-system)
5853 (arguments
5854 `(#:phases
5855 (modify-phases %standard-phases
5856 (add-before 'check 'set-rubylib-and-patch-gemfile
5857 (lambda _
5858 (setenv "RUBYLIB" "lib")
5859 (substitute* "sdoc.gemspec"
5860 (("s.add_runtime_dependency.*") "\n")
5861 (("s.add_dependency.*") "\n"))
5862 (substitute* "Gemfile"
5863 (("gem \"rake\".*")
5864 "gem 'rake'\ngem 'rdoc'\ngem 'json'\n"))
5865 #t)))))
5866 (propagated-inputs
5867 (list ruby-json))
5868 (native-inputs
5869 (list bundler ruby-minitest ruby-hoe))
5870 (synopsis "Generate searchable RDoc documentation")
5871 (description
5872 "SDoc is an RDoc documentation generator to build searchable HTML
5873documentation for Ruby code.")
5874 (home-page "https://github.com/voloko/sdoc")
5875 (license license:expat)))
5876
5877(define-public ruby-tins
5878 (package
5879 (name "ruby-tins")
5880 (version "1.29.1")
5881 (source (origin
5882 (method url-fetch)
5883 (uri (rubygems-uri "tins" version))
5884 (sha256
5885 (base32
5886 "0nzp88y19rqlcizp1nw8m44fvfxs9g3bhjpscz44dwfawfrmr0cb"))))
5887 (build-system ruby-build-system)
5888 ;; This gem needs gem-hadar at development time, but gem-hadar needs tins
5889 ;; at runtime. To avoid the dependency on gem-hadar we disable rebuilding
5890 ;; the gemspec.
5891 (arguments
5892 `(#:tests? #f ; there are no tests
5893 #:phases
5894 (modify-phases %standard-phases
5895 (replace 'build
5896 (lambda _
5897 ;; "lib/spruz" is a symlink. Leaving it in the gemspec file
5898 ;; causes an error.
5899 (substitute* "tins.gemspec"
5900 (("\"lib/spruz\", ") ""))
5901 (invoke "gem" "build" "tins.gemspec"))))))
5902 (propagated-inputs
5903 (list ruby-sync))
5904 (synopsis "Assorted tools for Ruby")
5905 (description "Tins is a Ruby library providing assorted tools.")
5906 (home-page "https://github.com/flori/tins")
5907 (license license:expat)))
5908
5909(define-public ruby-gem-hadar
5910 (package
5911 (name "ruby-gem-hadar")
5912 (version "1.11.0")
5913 (source (origin
5914 (method url-fetch)
5915 (uri (rubygems-uri "gem_hadar" version))
5916 (sha256
5917 (base32
5918 "160abb3l4n3gkhd86f22n981bhqxkbf5ym6fhsk796pix6696pd5"))))
5919 (build-system ruby-build-system)
5920 ;; This gem needs itself at development time. We disable rebuilding of the
5921 ;; gemspec to avoid this loop.
5922 (arguments
5923 `(#:tests? #f ; there are no tests
5924 #:phases
5925 (modify-phases %standard-phases
5926 (replace 'build
5927 (lambda _
5928 (invoke "gem" "build" "gem_hadar.gemspec"))))))
5929 (propagated-inputs
5930 (list git ruby-tins ruby-yard))
5931 (synopsis "Library for the development of Ruby gems")
5932 (description
5933 "This library contains some useful functionality to support the
5934development of Ruby gems.")
5935 (home-page "https://github.com/flori/gem_hadar")
5936 (license license:expat)))
5937
5938(define-public ruby-minitest-tu-shim
5939 (package
5940 (name "ruby-minitest-tu-shim")
5941 (version "1.3.3")
5942 (source (origin
5943 (method url-fetch)
5944 (uri (rubygems-uri "minitest_tu_shim" version))
5945 (sha256
5946 (base32
5947 "0xlyh94iirvssix157ng2akr9nqhdygdd0c6094hhv7dqcfrn9fn"))))
5948 (build-system ruby-build-system)
5949 (arguments
5950 `(#:phases
5951 (modify-phases %standard-phases
5952 (add-after 'unpack 'fix-test-include-path
5953 (lambda* (#:key inputs #:allow-other-keys)
5954 (let* ((minitest (assoc-ref inputs "ruby-minitest-4")))
5955 (substitute* "Rakefile"
5956 (("Hoe\\.add_include_dirs .*")
5957 (string-append "Hoe.add_include_dirs \""
5958 minitest "/lib/ruby/vendor_ruby"
5959 "/gems/minitest-"
5960 ,(package-version ruby-minitest-4)
5961 "/lib" "\""))))
5962 #t))
5963 (add-before 'check 'fix-test-assumptions
5964 (lambda _
5965 ;; The test output includes the file name, so a couple of tests
5966 ;; fail. Changing the regular expressions slightly fixes this
5967 ;; problem.
5968 (substitute* "test/test_mini_test.rb"
5969 (("output.sub!\\(.*, 'FILE:LINE'\\)")
5970 "output.sub!(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')")
5971 (("gsub\\(/.*, 'FILE:LINE'\\)")
5972 "gsub(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')"))
5973 #t)))))
5974 (propagated-inputs
5975 `(("ruby-minitest-4" ,ruby-minitest-4)))
5976 (native-inputs
5977 (list ruby-hoe))
5978 (synopsis "Adapter library between minitest and test/unit")
5979 (description
5980 "This library bridges the gap between the small and fast minitest and
5981Ruby's large and slower test/unit.")
5982 (home-page "https://rubygems.org/gems/minitest_tu_shim")
5983 (license license:expat)))
5984
5985(define-public ruby-term-ansicolor
5986 (package
5987 (name "ruby-term-ansicolor")
5988 (version "1.7.1")
5989 (source (origin
5990 (method url-fetch)
5991 (uri (rubygems-uri "term-ansicolor" version))
5992 (sha256
5993 (base32
5994 "1xq5kci9215skdh27npyd3y55p812v4qb4x2hv3xsjvwqzz9ycwj"))))
5995 (build-system ruby-build-system)
5996 ;; Rebuilding the gemspec seems to require git, even though this is not a
5997 ;; git repository, so we just build the gem from the existing gemspec.
5998 (arguments
5999 `(#:phases
6000 (modify-phases %standard-phases
6001 (add-after 'unpack 'fix-test
6002 (lambda -
6003 (substitute* "tests/hsl_triple_test.rb"
6004 (("0\\\\\\.0%")
6005 "0\\.?0?%"))))
6006 (replace 'build
6007 (lambda _
6008 (invoke "gem" "build" "term-ansicolor.gemspec"))))))
6009 (propagated-inputs
6010 (list ruby-tins))
6011 (native-inputs
6012 (list ruby-gem-hadar ruby-minitest-tu-shim))
6013 (synopsis "Ruby library to control the attributes of terminal output")
6014 (description
6015 "This Ruby library uses ANSI escape sequences to control the attributes
6016of terminal output.")
6017 (home-page "https://flori.github.io/term-ansicolor/")
6018 ;; There is no mention of the "or later" clause.
6019 (license license:gpl2)))
6020
6021(define-public ruby-terraform
6022 (package
6023 (name "ruby-terraform")
6024 (version "0.22.0")
6025 (source
6026 (origin
6027 (method url-fetch)
6028 (uri (rubygems-uri "ruby-terraform" version))
6029 (sha256
6030 (base32
6031 "13zjkp71cd19j2ds2h9rqwcfr1zdg5nsh63p89l6qcsc9z39z324"))))
6032 (build-system ruby-build-system)
6033 (arguments
6034 '(#:tests? #f)) ; No included tests
6035 (propagated-inputs
6036 (list ruby-lino))
6037 (synopsis "Ruby wrapper around the Terraform command line interface")
6038 (description
6039 "This package provides a Ruby wrapper around the Terraform command line
6040interface so that Terraform can be more easily invoked from Ruby code.")
6041 (home-page "https://github.com/infrablocks/ruby_terraform")
6042 (license license:expat)))
6043
6044(define-public ruby-pstree
6045 (package
6046 (name "ruby-pstree")
6047 (version "0.3.0")
6048 (source (origin
6049 (method url-fetch)
6050 (uri (rubygems-uri "pstree" version))
6051 (sha256
6052 (base32
6053 "0ld3ng37y92kv9vqnachw1l3n07hsc8hrnjs9d840liw0mysf1vp"))))
6054 (build-system ruby-build-system)
6055 (native-inputs
6056 (list ruby-gem-hadar bundler))
6057 (synopsis "Create a process tree data structure")
6058 (description
6059 "This library uses the output of the @code{ps} command to create a
6060process tree data structure for the current host.")
6061 (home-page "https://github.com/flori/pstree")
6062 ;; There is no mention of the "or later" clause.
6063 (license license:gpl2)))
6064
6065(define-public ruby-utils
6066 (package
6067 (name "ruby-utils")
6068 (version "0.9.0")
6069 (source (origin
6070 (method url-fetch)
6071 (uri (rubygems-uri "utils" version))
6072 (sha256
6073 (base32
6074 "196zhgcygrnx09bb9mh22qas03rl9avzx8qs0wnxznpin4pffwcl"))))
6075 (build-system ruby-build-system)
6076 (propagated-inputs
6077 (list ruby-tins ruby-term-ansicolor ruby-pstree ruby-pry-editline))
6078 (native-inputs
6079 (list ruby-gem-hadar bundler))
6080 (synopsis "Command line tools for working with Ruby")
6081 (description
6082 "This package provides assorted command line tools that may be useful
6083when working with Ruby code.")
6084 (home-page "https://github.com/flori/utils")
6085 ;; There is no mention of the "or later" clause.
6086 (license license:gpl2)))
6087
6088(define-public ruby-jaro-winkler
6089 (package
6090 (name "ruby-jaro-winkler")
6091 (version "1.5.4")
6092 (source
6093 (origin
6094 (method url-fetch)
6095 (uri (rubygems-uri "jaro_winkler" version))
6096 (sha256
6097 (base32 "1y8l6k34svmdyqxya3iahpwbpvmn3fswhwsvrz0nk1wyb8yfihsh"))))
6098 (build-system ruby-build-system)
6099 (arguments
6100 '(#:tests? #f)) ; no included tests
6101 (synopsis "Ruby implementation of Jaro-Winkler distance algorithm")
6102 (description
6103 "@code{jaro_winkler} is an implementation of Jaro-Winkler distance
6104algorithm. It is written as a C extension and will fallback to a pure Ruby
6105implementation on platforms where this is unsupported.")
6106 (home-page "https://github.com/tonytonyjan/jaro_winkler")
6107 (license license:expat)))
6108
6109(define-public ruby-json
6110 (package
6111 (name "ruby-json")
6112 (version "2.1.0")
6113 (source
6114 (origin
6115 (method url-fetch)
6116 (uri (rubygems-uri "json" version))
6117 (sha256
6118 (base32
6119 "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp"))))
6120 (build-system ruby-build-system)
6121 (arguments '(#:tests? #f)) ; dependency cycle with sdoc
6122 (synopsis "JSON library for Ruby")
6123 (description "This Ruby library provides a JSON implementation written as
6124a native C extension.")
6125 (home-page "http://json-jruby.rubyforge.org/")
6126 (license (list license:ruby license:gpl2)))) ; GPL2 only
6127
6128(define-public ruby-json-pure
6129 (package
6130 (name "ruby-json-pure")
6131 (version "2.3.1")
6132 (source (origin
6133 (method url-fetch)
6134 (uri (rubygems-uri "json_pure" version))
6135 (sha256
6136 (base32
6137 "00pziwkfqwk8vj19s65sdki31q1wvmf5v9b3sfglxm94qfvas1lx"))))
6138 (build-system ruby-build-system)
6139 (arguments
6140 `(#:phases
6141 (modify-phases %standard-phases
6142 (add-after 'unpack 'fix-rakefile
6143 (lambda _
6144 (substitute* "Rakefile"
6145 ;; Since this is not a git repository, do not call 'git'.
6146 (("`git ls-files`") "`find . -type f |sort`")))))))
6147 (native-inputs
6148 (list bundler ragel ruby-simplecov ruby-test-unit which))
6149 (synopsis "JSON implementation in pure Ruby")
6150 (description
6151 "This package provides a JSON implementation written in pure Ruby.")
6152 (home-page "https://flori.github.com/json/")
6153 (license license:ruby)))
6154
6155(define-public ruby-jwt
6156 (package
6157 (name "ruby-jwt")
6158 (version "2.1.0")
6159 (source
6160 (origin
6161 (method url-fetch)
6162 (uri (rubygems-uri "jwt" version))
6163 (sha256
6164 (base32
6165 "1w0kaqrbl71cq9sbnixc20x5lqah3hs2i93xmhlfdg2y3by7yzky"))))
6166 (build-system ruby-build-system)
6167 (arguments
6168 '(#:test-target "test"
6169 #:phases
6170 (modify-phases %standard-phases
6171 (add-after 'unpack 'remove-unnecessary-dependencies
6172 (lambda _
6173 (substitute* "spec/spec_helper.rb"
6174 (("require 'simplecov.*") "\n")
6175 ;; Use [].each to disable running the SimpleCov configuration
6176 ;; block
6177 (("SimpleCov\\.configure") "[].each")
6178 (("require 'codeclimate-test-reporter'") "")
6179 (("require 'codacy-coverage'") "")
6180 (("Codacy::Reporter\\.start") ""))
6181 #t)))))
6182 (native-inputs
6183 (list bundler ruby-rspec ruby-rbnacl))
6184 (synopsis "Ruby implementation of the JSON Web Token standard")
6185 (description
6186 "This package provides a pure Ruby implementation of the RFC 7519 OAuth
6187@acronym{JWT, JSON Web Token} standard.")
6188 (home-page "https://github.com/jwt/ruby-jwt")
6189 (license license:expat)))
6190
6191;; Even though this package only provides bindings for a Mac OSX API it is
6192;; required by "ruby-listen" at runtime.
6193(define-public ruby-rb-fsevent
6194 (package
6195 (name "ruby-rb-fsevent")
6196 (version "0.10.3")
6197 (source (origin
6198 (method url-fetch)
6199 (uri (rubygems-uri "rb-fsevent" version))
6200 (sha256
6201 (base32
6202 "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8"))))
6203 (build-system ruby-build-system)
6204 ;; Tests need "guard-rspec", which needs "guard". However, "guard" needs
6205 ;; "listen", which needs "rb-fsevent" at runtime.
6206 (arguments `(#:tests? #f))
6207 (synopsis "FSEvents API with signals catching")
6208 (description
6209 "This library provides Ruby bindings for the Mac OSX FSEvents API.")
6210 (home-page "https://rubygems.org/gems/rb-fsevent")
6211 (license license:expat)))
6212
6213(define-public ruby-listen
6214 (package
6215 (name "ruby-listen")
6216 (version "3.2.0")
6217 (source
6218 (origin
6219 ;; The gem does not include a Rakefile, so fetch from the Git
6220 ;; repository.
6221 (method git-fetch)
6222 (uri (git-reference
6223 (url "https://github.com/guard/listen")
6224 (commit (string-append "v" version))))
6225 (file-name (git-file-name name version))
6226 (sha256
6227 (base32
6228 "1hkp1g6hk5clsmbd001gkc12ma6s459x820piajyasv61m87if24"))))
6229 (build-system ruby-build-system)
6230 (arguments
6231 `(#:test-target "spec"
6232 #:phases
6233 (modify-phases %standard-phases
6234 (add-after 'unpack 'fix-files-in-gemspec
6235 (lambda _
6236 (substitute* "listen.gemspec"
6237 (("`git ls-files -z`") "`find . -type f -printf '%P\\\\0' |sort -z`"))
6238 #t))
6239 (add-before 'check 'remove-unnecessary-dependencies'
6240 (lambda _
6241 (substitute* "Rakefile"
6242 ;; Rubocop is for code linting, and is unnecessary for running
6243 ;; the tests.
6244 ((".*rubocop.*") ""))
6245 #t)))))
6246 (native-inputs
6247 (list bundler ruby-rspec))
6248 (inputs
6249 (list ;; ruby-thor is used for the command line interface, and is referenced
6250 ;; in the wrapper, and therefore just needs to be an input.
6251 ruby-thor))
6252 (propagated-inputs
6253 (list ruby-rb-fsevent ruby-rb-inotify ruby-dep))
6254 (synopsis "Listen to file modifications")
6255 (description "The Listen gem listens to file modifications and notifies
6256you about the changes.")
6257 (home-page "https://github.com/guard/listen")
6258 (license license:expat)))
6259
6260(define-public ruby-loofah
6261 (package
6262 (name "ruby-loofah")
6263 (version "2.13.0")
6264 (home-page "https://github.com/flavorjones/loofah")
6265 (source
6266 (origin
6267 ;; Build from git because the gem lacks tests.
6268 (method git-fetch)
6269 (uri (git-reference (url home-page)
6270 (commit (string-append "v" version))))
6271 (file-name (git-file-name name version))
6272 (sha256
6273 (base32
6274 "0rmsm7mckiq0gslfqdl02yvn500n42v84gq28qjqn4yq9jwfs9ga"))))
6275 (build-system ruby-build-system)
6276 (native-inputs
6277 (list ruby-hoe ruby-hoe-markdown ruby-rr))
6278 (propagated-inputs
6279 (list ruby-nokogiri ruby-crass))
6280 (synopsis "Ruby library for manipulating and transforming HTML/XML")
6281 (description
6282 "Loofah is a general library for manipulating and transforming HTML/XML
6283documents and fragments. It's built on top of Nokogiri and libxml2.")
6284 (license license:expat)))
6285
6286(define-public ruby-activesupport
6287 (package
6288 (name "ruby-activesupport")
6289 (version "6.1.3")
6290 (source
6291 (origin
6292 (method url-fetch)
6293 (uri (rubygems-uri "activesupport" version))
6294 (sha256
6295 (base32
6296 "00a4db64g8w5yyk6hzak2nqrmdfvyh5zc9cvnm9gglwbi87ss28h"))))
6297 (build-system ruby-build-system)
6298 (arguments
6299 `(#:phases
6300 (modify-phases %standard-phases
6301 (replace 'check
6302 (lambda _
6303 ;; There are no tests, instead attempt to load the library.
6304 (invoke "ruby" "-Ilib" "-r" "active_support"))))))
6305 (propagated-inputs
6306 (list ruby-concurrent
6307 ruby-i18n
6308 ruby-minitest
6309 ruby-tzinfo
6310 ruby-tzinfo-data
6311 ruby-zeitwerk))
6312 (synopsis "Ruby on Rails utility library")
6313 (description "ActiveSupport is a toolkit of support libraries and Ruby
6314core extensions extracted from the Rails framework. It includes support for
6315multibyte strings, internationalization, time zones, and testing.")
6316 (home-page "https://www.rubyonrails.org")
6317 (license license:expat)))
6318
6319(define-public ruby-crass
6320 (package
6321 (name "ruby-crass")
6322 (version "1.0.6")
6323 (home-page "https://github.com/rgrove/crass")
6324 (source (origin
6325 ;; The gem does not contain tests, so pull from git.
6326 (method git-fetch)
6327 (uri (git-reference
6328 (url home-page)
6329 (commit (string-append "v" version))))
6330 (file-name (git-file-name name version))
6331 (sha256
6332 (base32
6333 "1gbsb81psgb6xhnwpx4s409jc0mk0gijh039sy5xyi8jpaaadp40"))))
6334 (build-system ruby-build-system)
6335 (synopsis "Pure Ruby CSS parser")
6336 (description
6337 "Crass is a pure Ruby CSS parser based on the CSS Syntax Level 3 spec.")
6338 (license license:expat)))
6339
6340(define-public ruby-nokogumbo
6341 (package
6342 (name "ruby-nokogumbo")
6343 (version "2.0.2")
6344 (source (origin
6345 ;; We use the git reference, because there's no Rakefile in the
6346 ;; published gem and the tarball on Github is outdated.
6347 (method git-fetch)
6348 (uri (git-reference
6349 (url "https://github.com/rubys/nokogumbo")
6350 (commit (string-append "v" version))))
6351 (file-name (string-append name "-" version "-checkout"))
6352 (sha256
6353 (base32
6354 "1qg0iyw450lw6d0j1ghzg79a6l60nm1m4qmrzwzybi585861jxcx"))))
6355 (build-system ruby-build-system)
6356 (native-inputs
6357 (list ruby-rake-compiler))
6358 (inputs
6359 (list gumbo-parser))
6360 (propagated-inputs
6361 (list ruby-nokogiri))
6362 (synopsis "Ruby bindings to the Gumbo HTML5 parser")
6363 (description
6364 "Nokogumbo allows a Ruby program to invoke the Gumbo HTML5 parser and
6365access the result as a Nokogiri parsed document.")
6366 (home-page "https://github.com/rubys/nokogumbo/")
6367 (license license:asl2.0)))
6368
6369(define-public ruby-sanitize
6370 (package
6371 (name "ruby-sanitize")
6372 (version "5.1.0")
6373 (home-page "https://github.com/rgrove/sanitize")
6374 (source (origin
6375 (method git-fetch)
6376 ;; The gem does not include the Rakefile, so we download the
6377 ;; source from Github.
6378 (uri (git-reference
6379 (url home-page)
6380 (commit (string-append "v" version))))
6381 (file-name (git-file-name name version))
6382 (patches (search-patches "ruby-sanitize-system-libxml.patch"))
6383 (sha256
6384 (base32
6385 "0lj0q9yhjp0q0in5majkshnki07mw8m2vxgndx4m5na6232aszl0"))))
6386 (build-system ruby-build-system)
6387 (propagated-inputs
6388 (list ruby-crass ruby-nokogiri ruby-nokogumbo))
6389 (native-inputs
6390 (list ruby-minitest))
6391 (synopsis "Whitelist-based HTML and CSS sanitizer")
6392 (description
6393 "Sanitize is a whitelist-based HTML and CSS sanitizer. Given a list of
6394acceptable elements, attributes, and CSS properties, Sanitize will remove all
6395unacceptable HTML and/or CSS from a string.")
6396 (license license:expat)))
6397
6398(define-public ruby-sync
6399 (package
6400 (name "ruby-sync")
6401 (version "0.5.0")
6402 (source
6403 (origin
6404 (method url-fetch)
6405 (uri (rubygems-uri "sync" version))
6406 (sha256
6407 (base32
6408 "1z9qlq4icyiv3hz1znvsq1wz2ccqjb1zwd6gkvnwg6n50z65d0v6"))))
6409 (build-system ruby-build-system)
6410 (synopsis "Ruby module with a two-phase lock and counter")
6411 (description "This package provides a Ruby module that provides a two-phase
6412lock with a counter.")
6413 (home-page "https://github.com/ruby/sync")
6414 (license license:bsd-2)))
6415
6416(define-public ruby-oj
6417 (package
6418 (name "ruby-oj")
6419 (version "3.13.9")
6420 (source
6421 (origin
6422 (method git-fetch)
6423 ;; Version on rubygems.org does not contain Rakefile, so download from
6424 ;; GitHub instead.
6425 (uri (git-reference
6426 (url "https://github.com/ohler55/oj")
6427 (commit (string-append "v" version))))
6428 (file-name (git-file-name name version))
6429 (sha256
6430 (base32
6431 "0a24zd28y58nyhjxgrpn2k9p72vzj3zbmdrcsbhwbdycj7nn9fpd"))))
6432 (build-system ruby-build-system)
6433 (arguments
6434 '(#:test-target "test_all"
6435 #:phases
6436 (modify-phases %standard-phases
6437 (add-before 'check 'disable-bundler
6438 (lambda _
6439 (substitute* "Rakefile"
6440 (("Bundler\\.with_clean_env") "1.times")
6441 (("bundle exec ") "")))))))
6442 (native-inputs
6443 (list bundler ruby-rspec ruby-rake-compiler))
6444 (synopsis "JSON parser for Ruby optimized for speed")
6445 (description
6446 "Oj is a JSON parser and generator for Ruby, where the encoding and
6447decoding of JSON is implemented as a C extension to Ruby.")
6448 (home-page "http://www.ohler.com/oj/")
6449 (license (list license:expat ; Ruby code
6450 license:bsd-3)))) ; extension code
6451
6452(define-public ruby-ox
6453 (package
6454 (name "ruby-ox")
6455 (version "2.6.0")
6456 (source
6457 (origin
6458 (method url-fetch)
6459 (uri (rubygems-uri "ox" version))
6460 (sha256
6461 (base32
6462 "0fmk62b1h2i79dfzjj8wmf8qid1rv5nhwfc17l489ywnga91xl83"))))
6463 (build-system ruby-build-system)
6464 (arguments
6465 '(#:tests? #f)) ; no tests
6466 (synopsis "Optimized XML library for Ruby")
6467 (description
6468 "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
6469written as a native C extension. It was designed to be an alternative to
6470Nokogiri and other Ruby XML parsers for generic XML parsing and as an
6471alternative to Marshal for Object serialization.")
6472 (home-page "http://www.ohler.com/ox")
6473 (license license:expat)))
6474
6475(define-public ruby-redcloth
6476 (package
6477 (name "ruby-redcloth")
6478 (version "4.3.2")
6479 (source (origin
6480 (method url-fetch)
6481 (uri (rubygems-uri "RedCloth" version))
6482 (sha256
6483 (base32
6484 "0m9dv7ya9q93r8x1pg2gi15rxlbck8m178j1fz7r5v6wr1avrrqy"))))
6485 (build-system ruby-build-system)
6486 (arguments
6487 `(#:tests? #f ; no tests
6488 #:phases
6489 (modify-phases %standard-phases
6490 ;; Redcloth has complicated rake tasks to build various versions for
6491 ;; multiple targets using RVM. We don't want this so we just use the
6492 ;; existing gemspec.
6493 (replace 'build
6494 (lambda _
6495 (invoke "gem" "build" "redcloth.gemspec"))))))
6496 (native-inputs
6497 `(("bundler" ,bundler)
6498 ("ruby-diff-lcs" ,ruby-diff-lcs)
6499 ("ruby-rspec-2" ,ruby-rspec-2)))
6500 (synopsis "Textile markup language parser for Ruby")
6501 (description
6502 "RedCloth is a Ruby parser for the Textile markup language.")
6503 (home-page "http://redcloth.org")
6504 (license license:expat)))
6505
6506(define-public ruby-pg
6507 (package
6508 (name "ruby-pg")
6509 (version "1.3.5")
6510 (home-page "https://github.com/ged/ruby-pg")
6511 (source
6512 (origin
6513 (method git-fetch)
6514 (uri (git-reference
6515 (url home-page)
6516 (commit (string-append "v" version))))
6517 (file-name (git-file-name name version))
6518 (sha256
6519 (base32
6520 "0c2k2cibd5wwdhva68j5hhfpybm3wmvn2ym4ppn5mqmddwkjkvnk"))))
6521 (build-system ruby-build-system)
6522 (arguments
6523 (list
6524 #:test-target "spec"
6525 #:phases
6526 #~(modify-phases %standard-phases
6527 (add-after 'unpack 'disable-failing-tests
6528 (lambda _
6529 ;; These tests fail because DNS is unavailable, giving an
6530 ;; unexpected fallback executable in the connection string.
6531 (substitute* "spec/pg/connection_spec.rb"
6532 (("it (\"accepts an URI and adds( proper)? hostaddr\")" test)
6533 (string-append "xit " test))
6534 (("it \"can create a connection option string from an option\
6535 string and a hash\"" test)
6536 (string-append "xit " test)))))
6537 (add-before 'build 'compile
6538 (lambda _
6539 (invoke "rake" "compile")))
6540 ;; Some tests rely on postgresql_lib_path.rb, but it is not
6541 ;; available until the gem is installed. Run tests after
6542 ;; installing to work around it.
6543 (delete 'check)
6544 (add-after 'install 'check
6545 (lambda* (#:key tests? #:allow-other-keys)
6546 (let ((new-gem (string-append #$output
6547 "/lib/ruby/vendor_ruby")))
6548 (setenv "GEM_PATH"
6549 (string-append (getenv "GEM_PATH") ":" new-gem))
6550 (when tests?
6551 (invoke "rspec"))))))))
6552 (native-inputs
6553 (list ruby-rake-compiler ruby-hoe ruby-rspec))
6554 (inputs
6555 (list postgresql))
6556 (synopsis "Ruby interface to PostgreSQL")
6557 (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
6558with PostgreSQL 9.0 and later.")
6559 (license license:ruby)))
6560
6561(define-public ruby-byebug
6562 (package
6563 (name "ruby-byebug")
6564 (version "11.1.3")
6565 (source
6566 (origin
6567 (method git-fetch)
6568 (uri (git-reference
6569 (url "https://github.com/deivid-rodriguez/byebug")
6570 (commit (string-append "v" version))))
6571 (file-name (git-file-name name version))
6572 (sha256
6573 (base32
6574 "0vyy3k2s7dcndngj6m8kxhs1vxc2c93dw8b3yyand3srsg9ffpij"))
6575 (modules '((guix build utils)))
6576 (snippet
6577 '(begin
6578 ;; Remove wrappers that try to setup a bundle environment.
6579 (with-directory-excursion "bin"
6580 (for-each delete-file '("bundle" "rake" "rubocop"))
6581 ;; ruby-minitest doesn't come with a launcher, so fix the one
6582 ;; provided.
6583 (substitute* "minitest"
6584 (("load File\\.expand_path\\(\"bundle\".*") "")
6585 (("require \"bundler/setup\".*") "")))
6586 #t))))
6587 (build-system ruby-build-system)
6588 (arguments
6589 `(#:phases
6590 (modify-phases %standard-phases
6591 (add-after 'unpack 'skip-tmp-path-sensitive-test
6592 (lambda _
6593 (substitute* "test/commands/where_test.rb"
6594 (("unless /cygwin\\|mswin\\|mingw\\|darwin/.*")
6595 "unless true\n"))
6596 #t))
6597 (add-before 'build 'compile
6598 (lambda _
6599 (invoke "rake" "compile")))
6600 (add-before 'check 'disable-misbehaving-test
6601 ;; Expects 5, gets 162. From a file containing ~10 lines.
6602 (lambda _
6603 (substitute* "test/commands/finish_test.rb"
6604 (("test_finish_inside_autoloaded_files")
6605 "finish_inside_autoloaded_files"))))
6606 (add-before 'check 'set-home
6607 (lambda _
6608 (setenv "HOME" (getcwd))
6609 #t)))))
6610 (native-inputs
6611 (list bundler
6612 ruby-chandler
6613 ruby-minitest
6614 ruby-pry
6615 ruby-rake-compiler
6616 ruby-rubocop
6617 ruby-yard))
6618 (synopsis "Debugger for Ruby 2")
6619 (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
6620TracePoint C API for execution control and the Debug Inspector C API for call
6621stack navigation. The core component provides support that front-ends can
6622build on. It provides breakpoint handling and bindings for stack frames among
6623other things and it comes with a command line interface.")
6624 (home-page "https://github.com/deivid-rodriguez/byebug")
6625 (license license:bsd-2)))
6626
6627(define-public ruby-netrc
6628 (package
6629 (name "ruby-netrc")
6630 (version "0.11.0")
6631 (source (origin
6632 (method url-fetch)
6633 (uri (rubygems-uri "netrc" version))
6634 (sha256
6635 (base32
6636 "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y"))))
6637 (build-system ruby-build-system)
6638 (arguments
6639 `(#:phases
6640 (modify-phases %standard-phases
6641 (replace 'check
6642 ;; There is no Rakefile and minitest can only run one file at once,
6643 ;; so we have to iterate over all test files.
6644 (lambda _
6645 (for-each (lambda (file)
6646 (invoke "ruby" "-Itest" file))
6647 (find-files "./test" "test_.*\\.rb"))))
6648 (add-before 'check 'patch-tests-for-newer-ruby
6649 (lambda _
6650 (substitute* "test/test_netrc.rb"
6651 (("Dir.pwd, '.netrc'") "Netrc.home_path, '.netrc'")))))))
6652 (native-inputs
6653 (list ruby-minitest))
6654 (synopsis "Library to read and update netrc files")
6655 (description
6656 "This library can read and update netrc files, preserving formatting
6657including comments and whitespace.")
6658 (home-page "https://github.com/geemus/netrc")
6659 (license license:expat)))
6660
6661(define-public ruby-unf-ext
6662 (package
6663 (name "ruby-unf-ext")
6664 (version "0.0.7.6")
6665 (source (origin
6666 (method url-fetch)
6667 (uri (rubygems-uri "unf_ext" version))
6668 (sha256
6669 (base32
6670 "1ll6w64ibh81qwvjx19h8nj7mngxgffg7aigjx11klvf5k2g4nxf"))))
6671 (build-system ruby-build-system)
6672 (arguments
6673 `(#:phases
6674 (modify-phases %standard-phases
6675 (add-after 'build 'build-ext
6676 (lambda _ (invoke "rake" "compile:unf_ext")))
6677 (add-before 'check 'lose-rake-compiler-dock-dependency
6678 (lambda _
6679 ;; rake-compiler-dock is listed in the gemspec, but only
6680 ;; required when cross-compiling.
6681 (substitute* "unf_ext.gemspec"
6682 ((".*rake-compiler-dock.*") ""))
6683 #t)))))
6684 (native-inputs
6685 (list bundler ruby-rake-compiler ruby-test-unit))
6686 (synopsis "Unicode normalization form support library")
6687 (description
6688 "This package provides unicode normalization form support for Ruby.")
6689 (home-page "https://github.com/knu/ruby-unf_ext")
6690 (license license:expat)))
6691
6692(define-public ruby-tdiff
6693 ;; Use a newer than released snapshot so that rspec-2 is not required.
6694 (let ((commit "b662a6048f08abc45c1a834e5f34dd1c662935e2"))
6695 (package
6696 (name "ruby-tdiff")
6697 (version (string-append "0.3.3-1." (string-take commit 8)))
6698 (source (origin
6699 (method git-fetch)
6700 (uri (git-reference
6701 (url "https://github.com/postmodern/tdiff")
6702 (commit commit)))
6703 (file-name (string-append name "-" version "-checkout"))
6704 (sha256
6705 (base32
6706 "0n3gq8rx49f7ln6zqlshqfg2mgqyy30rsdjlnki5mv307ykc7ad4"))))
6707 (build-system ruby-build-system)
6708 (native-inputs
6709 (list ruby-rspec ruby-yard ruby-rubygems-tasks))
6710 (synopsis "Calculate the differences between two tree-like structures")
6711 (description
6712 "This library provides functions to calculate the differences between two
6713tree-like structures. It is similar to Ruby's built-in @code{TSort} module.")
6714 (home-page "https://github.com/postmodern/tdiff")
6715 (license license:expat))))
6716
6717(define-public ruby-nokogiri-diff
6718 ;; Use a newer than released snapshot so that rspec-2 is not required.
6719 (let ((commit "a38491e4d8709b7406f2cae11a50226d927d06f5"))
6720 (package
6721 (name "ruby-nokogiri-diff")
6722 (version (string-append "0.2.0-1." (string-take commit 8)))
6723 (source (origin
6724 (method git-fetch)
6725 (uri (git-reference
6726 (url "https://github.com/postmodern/nokogiri-diff")
6727 (commit commit)))
6728 (file-name (string-append name "-" version "-checkout"))
6729 (sha256
6730 (base32
6731 "1ah2sfjh9n1p0ln2wkqzfl448ml7j4zfy6dhp1qgzq2m41php6rf"))))
6732 (build-system ruby-build-system)
6733 (propagated-inputs
6734 (list ruby-tdiff
6735 ruby-nokogiri))
6736 (native-inputs
6737 (list ruby-rspec ruby-yard ruby-rubygems-tasks))
6738 (synopsis "Calculate the differences between two XML/HTML documents")
6739 (description
6740 "@code{Nokogiri::Diff} adds the ability to calculate the
6741differences (added or removed nodes) between two XML/HTML documents.")
6742 (home-page "https://github.com/postmodern/nokogiri-diff")
6743 (license license:expat))))
6744
6745(define-public ruby-racc
6746 (package
6747 (name "ruby-racc")
6748 (version "1.5.2")
6749 (source
6750 (origin
6751 (method url-fetch)
6752 (uri (rubygems-uri "racc" version))
6753 (sha256
6754 (base32
6755 "178k7r0xn689spviqzhvazzvxfq6fyjldxb3ywjbgipbfi4s8j1g"))))
6756 (build-system ruby-build-system)
6757 (arguments
6758 `(#:tests? #f)) ; Fails while parsing test instructions.
6759 (native-inputs
6760 (list ruby-hoe ruby-rake-compiler))
6761 (synopsis "LALR(1) parser generator for Ruby")
6762 (description
6763 "Racc is a LALR(1) parser generator. It is written in Ruby itself, and
6764generates Ruby program.")
6765 (home-page "https://i.loveruby.net/en/projects/racc/")
6766 (license (list
6767 ;; Generally licensed under the LGPL2.1, and some files also
6768 ;; available under the same license as Ruby.
6769 license:lgpl2.1
6770 license:ruby))))
6771
6772(define-public ruby-rack
6773 (package
6774 (name "ruby-rack")
6775 (version "2.2.3")
6776 (source
6777 (origin
6778 (method git-fetch)
6779 ;; Download from GitHub so that the snippet can be applied and tests run.
6780 (uri (git-reference
6781 (url "https://github.com/rack/rack")
6782 (commit version)))
6783 (file-name (git-file-name name version))
6784 (sha256
6785 (base32
6786 "1qrm5z5v586738bnkr9188dvz0s25nryw6sgvx18jjlkizayw1g4"))
6787 ;; Ignore test which fails inside the build environment but works
6788 ;; outside.
6789 (modules '((guix build utils)))
6790 (snippet
6791 '(begin (substitute* "test/spec_files.rb"
6792 (("res.body.must_equal expected_body") ""))
6793 #t))))
6794 (build-system ruby-build-system)
6795 (arguments
6796 '(#:phases
6797 (modify-phases %standard-phases
6798 (add-before 'check 'fix-tests
6799 (lambda _
6800 ;; A few of the tests use the length of a file on disk for
6801 ;; Content-Length and Content-Range headers. However, this file
6802 ;; has a shebang in it which an earlier phase patches, growing
6803 ;; the file size from 193 to 239 bytes when the store prefix is
6804 ;; "/gnu/store".
6805 (let ((size-diff (- (string-length (which "ruby"))
6806 (string-length "/usr/bin/env ruby"))))
6807 (substitute* '("test/spec_files.rb")
6808 (("208" bytes)
6809 (number->string (+ (string->number bytes) size-diff)))
6810 (("bytes(.)22-33" all delimiter)
6811 (string-append "bytes"
6812 delimiter
6813 (number->string (+ 22 size-diff))
6814 "-"
6815 (number->string (+ 33 size-diff))))))
6816 #t)))))
6817 (native-inputs
6818 (list ruby-minitest ruby-minitest-global-expectations))
6819 (synopsis "Unified web application interface for Ruby")
6820 (description "Rack provides a minimal, modular and adaptable interface for
6821developing web applications in Ruby. By wrapping HTTP requests and responses,
6822it unifies the API for web servers, web frameworks, and software in between
6823into a single method call.")
6824 (home-page "https://rack.github.io/")
6825 (license license:expat)))
6826
6827(define-public ruby-rack-test
6828 (package
6829 (name "ruby-rack-test")
6830 (version "0.8.3")
6831 (source
6832 (origin
6833 (method url-fetch)
6834 (uri (rubygems-uri "rack-test" version))
6835 (sha256
6836 (base32
6837 "14ij39zywvr1i9f6jsixfg4zxi2q1m1n1nydvf47f0b6sfc9mv1g"))))
6838 (build-system ruby-build-system)
6839 (arguments
6840 ;; Disable tests because of circular dependencies: requires sinatra,
6841 ;; which requires rack-protection, which requires rack-test. Instead
6842 ;; simply require the library.
6843 `(#:phases
6844 (modify-phases %standard-phases
6845 (replace 'check
6846 (lambda _
6847 (invoke "ruby" "-Ilib" "-r" "rack/test"))))))
6848 (propagated-inputs
6849 (list ruby-rack))
6850 (synopsis "Testing API for Rack applications")
6851 (description
6852 "Rack::Test is a small, simple testing API for Rack applications. It can
6853be used on its own or as a reusable starting point for Web frameworks and
6854testing libraries to build on.")
6855 (home-page "https://github.com/rack-test/rack-test")
6856 (license license:expat)))
6857
6858(define-public ruby-rack-protection
6859 (package
6860 (name "ruby-rack-protection")
6861 (version "2.0.8.1")
6862 (source
6863 (origin
6864 (method url-fetch)
6865 (uri (rubygems-uri "rack-protection" version))
6866 (sha256
6867 (base32
6868 "1zyj97bfr1shfgwk4ddmdbw0mdkm4qdyh9s1hl0k7accf3kxx1yi"))))
6869 (build-system ruby-build-system)
6870 (arguments
6871 '(;; Tests missing from the gem.
6872 #:tests? #f))
6873 (propagated-inputs
6874 (list ruby-rack))
6875 (native-inputs
6876 (list bundler ruby-rspec-2 ruby-rack-test))
6877 (synopsis "Rack middleware that protects against typical web attacks")
6878 (description "Rack middleware that can be used to protect against typical
6879web attacks. It can protect all Rack apps, including Rails. For instance, it
6880protects against cross site request forgery, cross site scripting,
6881clickjacking, directory traversal, session hijacking and IP spoofing.")
6882 (home-page "https://github.com/sinatra/sinatra/tree/master/rack-protection")
6883 (license license:expat)))
6884
6885(define-public ruby-rainbow
6886 (package
6887 (name "ruby-rainbow")
6888 (version "3.0.0")
6889 (source
6890 (origin
6891 (method url-fetch)
6892 (uri (rubygems-uri "rainbow" version))
6893 (sha256
6894 (base32
6895 "0bb2fpjspydr6x0s8pn1pqkzmxszvkfapv0p4627mywl7ky4zkhk"))))
6896 (build-system ruby-build-system)
6897 (arguments
6898 '(#:phases
6899 (modify-phases %standard-phases
6900 ;; Run rspec directly, to avoid requiring Rubocop which is used from
6901 ;; the Rakefile.
6902 (replace 'check
6903 (lambda* (#:key tests? #:allow-other-keys)
6904 (when tests?
6905 (invoke "rspec"))
6906 #t)))))
6907 (native-inputs
6908 (list bundler ruby-rspec))
6909 (synopsis "Colorize printed text on ANSI terminals")
6910 (description
6911 "@code{rainbow} provides a string presenter object to colorize strings by
6912wrapping them in ANSI escape codes.")
6913 (home-page "https://github.com/sickill/rainbow")
6914 (license license:expat)))
6915
6916(define-public ruby-rr
6917 (package
6918 (name "ruby-rr")
6919 (version "1.2.1")
6920 (source
6921 (origin
6922 (method url-fetch)
6923 (uri (rubygems-uri "rr" version))
6924 (sha256
6925 (base32
6926 "1n9g78ba4c2zzmz8cdb97c38h1xm0clircag00vbcxwqs4dq0ymp"))))
6927 (build-system ruby-build-system)
6928 (arguments
6929 '(#:tests? #f)) ; test files not included
6930 (native-inputs
6931 (list bundler ruby-rspec))
6932 (synopsis "Ruby test double framework")
6933 (description
6934 "RR is a test double framework that features a rich selection of double
6935techniques and a terse syntax.")
6936 (home-page "https://rr.github.io/rr/")
6937 (license license:expat)))
6938
6939(define-public ruby-rest-client
6940 (package
6941 (name "ruby-rest-client")
6942 (version "2.0.2")
6943 (source
6944 (origin
6945 (method url-fetch)
6946 (uri (rubygems-uri "rest-client" version))
6947 (sha256
6948 (base32
6949 "1hzcs2r7b5bjkf2x2z3n8z6082maz0j8vqjiciwgg3hzb63f958j"))))
6950 (build-system ruby-build-system)
6951 (arguments
6952 '(#:phases
6953 (modify-phases %standard-phases
6954 (add-before 'check 'remove-unnecessary-development-dependencies
6955 (lambda _
6956 (substitute* "rest-client.gemspec"
6957 ;; Remove rubocop as it's unused. Rubocop also indirectly
6958 ;; depends on this package through ruby-parser and ruby-ast so
6959 ;; this avoids a dependency loop.
6960 ((".*rubocop.*") "\n")
6961 ;; Remove pry as it's unused, it's a debugging tool
6962 ((".*pry.*") "\n")
6963 ;; Remove an unnecessarily strict rdoc dependency
6964 ((".*rdoc.*") "\n"))
6965 #t))
6966 (add-before 'check 'delete-network-dependent-tests
6967 (lambda _
6968 (delete-file "spec/integration/request_spec.rb")
6969 (delete-file "spec/integration/httpbin_spec.rb")
6970 #t)))))
6971 (propagated-inputs
6972 (list ruby-http-cookie ruby-mime-types ruby-netrc))
6973 (native-inputs
6974 (list bundler ruby-webmock-2 ruby-rspec))
6975 (synopsis "Simple HTTP and REST client for Ruby")
6976 (description
6977 "@code{rest-client} provides a simple HTTP and REST client for Ruby,
6978inspired by the Sinatra microframework style of specifying actions:
6979@code{get}, @code{put}, @code{post}, @code{delete}.")
6980 (home-page "https://github.com/rest-client/rest-client")
6981 (license license:expat)))
6982
6983(define-public ruby-rubocop-ast
6984 (package
6985 (name "ruby-rubocop-ast")
6986 (version "1.4.1")
6987 (source
6988 (origin
6989 (method git-fetch) ;no test suite in distributed gem
6990 (uri (git-reference
6991 (url "https://github.com/rubocop-hq/rubocop-ast")
6992 (commit (string-append "v" version))))
6993 (file-name (git-file-name name version))
6994 (sha256
6995 (base32
6996 "1x2m7k4bn4zvvwmj7imzmv0dav6xnrbcvssad1m5lkprx7h5lzkq"))))
6997 (build-system ruby-build-system)
6998 (arguments
6999 `(#:test-target "spec"
7000 #:phases (modify-phases %standard-phases
7001 (add-before 'build 'generate-lexer
7002 (lambda _
7003 (setenv "RUBOCOP_VERSION" "none")
7004 (invoke "rake" "generate")))
7005 (replace 'replace-git-ls-files
7006 (lambda _
7007 (substitute* "rubocop-ast.gemspec"
7008 (("`git ls-files(.*)`" _ files)
7009 (format #f "`find ~a -type f| sort`" files)))
7010 #t)))))
7011 (native-inputs
7012 (list ruby-bump
7013 ruby-oedipus-lex
7014 ruby-pry
7015 ruby-racc
7016 ruby-rake
7017 ruby-rspec
7018 ruby-simplecov))
7019 (propagated-inputs
7020 (list ruby-parser))
7021 (synopsis "RuboCop's AST extensions and NodePattern functionality")
7022 (description "Rubocop::AST extends @code{ruby-parser} with classes used
7023by RuboCop to deal with Ruby's Abstract Syntax Tree (AST), in particular:
7024@itemize
7025@item @code{RuboCop::AST::Node}
7026@item @code{RuboCop::AST::NodePattern}
7027@end itemize")
7028 (home-page "https://rubocop.org/")
7029 (license license:expat)))
7030
7031(define-public ruby-rexml
7032 (package
7033 (name "ruby-rexml")
7034 (version "3.2.5")
7035 (source
7036 (origin
7037 (method git-fetch) ;no tests in distributed gem
7038 (uri (git-reference
7039 (url "https://github.com/ruby/rexml")
7040 (commit (string-append "v" version))))
7041 (file-name (git-file-name name version))
7042 (sha256
7043 (base32 "13n6vaa80drqic2wri4q6k22qzvsn683vp5s8c9dllil6x04kn0x"))))
7044 (build-system ruby-build-system)
7045 (synopsis "XML toolkit for Ruby")
7046 (description "Inspired by Electric XML library for Java, REXML aims to be
7047easy-to-use API, small and fast. It supports both tree and stream document
7048parsing.")
7049 (home-page "https://github.com/ruby/rexml")
7050 (license license:bsd-2)))
7051
7052(define-public ruby-character-set
7053 (package
7054 (name "ruby-character-set")
7055 (version "1.4.0")
7056 (source
7057 (origin
7058 (method url-fetch)
7059 (uri (rubygems-uri "character_set" version))
7060 (sha256
7061 (base32
7062 "0affq9n77vwy897ri2zhmfinfagf37hcwwimrccy1bcxan9mj3h3"))))
7063 (build-system ruby-build-system)
7064 (arguments '(#:tests? #f)) ;avoid a cycle with ruby-regexp-parser
7065 (synopsis "Ruby library to manipulate Unicode")
7066 (description "CharacterSet is a C-extended Ruby library to work with sets
7067of Unicode code points. It can read and write these sets in various formats
7068and implements the @code{stdlib} @code{Set} interface for them. It also
7069offers an alternate paradigm of @code{String} processing which grants much
7070better performance than @code{Regexp} and @code{String} methods from the
7071@code{stdlib} where applicable. Many parts can be used independently, e.g.:
7072@itemize
7073@item @code{CharacterSet::Character}
7074@item @code{CharacterSet::Parser}
7075@item @code{CharacterSet::Writer}
7076@item @code{RangeCompressor}
7077@end itemize")
7078 (home-page "https://github.com/jaynetics/character_set")
7079 (license license:expat)))
7080
7081(define-public ruby-range-compressor
7082 (package
7083 (name "ruby-range-compressor")
7084 (version "1.0.0")
7085 (source
7086 (origin
7087 (method git-fetch)
7088 (uri (git-reference
7089 (url "https://github.com/janosch-x/range_compressor")
7090 (commit (string-append "v" version))))
7091 (file-name (git-file-name name version))
7092 (sha256
7093 (base32
7094 "0y8slri2msyyg2szgwgriqd6qw9hkxycssdrcl5lk2dbcq5zvn54"))))
7095 (build-system ruby-build-system)
7096 (arguments
7097 `(#:test-target "spec"
7098 #:phases (modify-phases %standard-phases
7099 (add-after 'extract-gemspec 'strip-version-requirements
7100 (lambda _
7101 (substitute* "range_compressor.gemspec"
7102 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
7103 (string-append stripped "\n")))
7104 #t)))))
7105 (native-inputs
7106 (list ruby-rspec))
7107 (synopsis "Simple arrays of objects to arrays of ranges compressor")
7108 (description "RangeCompresses is a tiny library that allows compressing
7109arrays of objects into arrays of ranges. For example, it can turn the
7110following: @code{[1, 2, 3, 4, 6, 8, 9, 10]} into @code{[1..4, 6..6, 8..10]}.")
7111 (home-page "https://github.com/janosch-x/range_compressor")
7112 (license license:expat)))
7113
7114(define-public ruby-regexp-property-values
7115 (let ((commit "03007a66c912949a7130b973cc0eca109c20811f")
7116 (revision "1"))
7117 (package
7118 (name "ruby-regexp-property-values")
7119 (version (git-version "1.0.0" revision commit))
7120 (source
7121 (origin
7122 (method git-fetch)
7123 (uri (git-reference ;no test suite in distributed gem
7124 (url "https://github.com/jaynetics/regexp_property_values")
7125 (commit commit)))
7126 (file-name (git-file-name name version))
7127 (sha256
7128 (base32
7129 "1zsax784p16zdkf60lyq9z924zvsafhx9ckxx9srsgkyiqrifi1s"))))
7130 (build-system ruby-build-system)
7131 (arguments
7132 '(#:test-target "default"))
7133 (native-inputs
7134 (list ruby-character-set ruby-rake ruby-rake-compiler
7135 ruby-range-compressor ruby-rspec))
7136 (synopsis "Inspect Ruby's regex engine property values")
7137 (description "This small library lets you see which property values are
7138supported by the regular expression engine of the Ruby version you are running
7139and can directly read out their code point ranges. In other words, it
7140determines all supported values for @code{\\p{value}} expressions and what
7141they match.")
7142 (home-page "https://github.com/jaynetics/regexp_property_values")
7143 (license license:expat))))
7144
7145(define-public ruby-regexp-parser
7146 (package
7147 (name "ruby-regexp-parser")
7148 (version "2.0.0")
7149 (source
7150 (origin
7151 (method git-fetch) ;bin/test missing from gem
7152 (uri (git-reference
7153 (url "https://github.com/ammar/regexp_parser")
7154 (commit (string-append "v" version))))
7155 (file-name (git-file-name name version))
7156 (sha256
7157 (base32
7158 "09ddxdwlml30q6j4rqf06bbjj1mwx00rs0bksnyblhv85anrqz3k"))))
7159 (build-system ruby-build-system)
7160 (arguments
7161 '(#:test-target "default"
7162 #:phases (modify-phases %standard-phases
7163 (add-before 'build 'compile-scanner.rb
7164 (lambda _
7165 (invoke "rake" "build")
7166 ;; XXX: This is needed otherwise the install
7167 ;; phase fails to delete the installed cached
7168 ;; gem file.
7169 (delete-file-recursively "pkg")
7170 #t)))))
7171 (native-inputs
7172 (list ragel ruby-regexp-property-values ruby-rspec))
7173 (synopsis "Regular expression parser library for Ruby")
7174 (description "A Ruby gem for tokenizing, parsing, and transforming regular
7175expressions. It comprises the following components:
7176@itemize
7177@item A scanner/tokenizer based on Ragel,
7178@item A lexer that produces a stream of token objects,
7179@item A parser that produces a tree of Expression objects.
7180@end itemize")
7181 (home-page "https://github.com/ammar/regexp_parser")
7182 (license license:expat)))
7183
7184(define-public ruby-test-queue
7185 (package
7186 (name "ruby-test-queue")
7187 (version "0.4.2")
7188 (source
7189 (origin
7190 (method url-fetch)
7191 (uri (rubygems-uri "test-queue" version))
7192 (sha256
7193 (base32
7194 "0hvm3n1qrqxqilhqk4rjivw3gcrd08zz1i6am9qzg1ppjxv6f36f"))))
7195 (build-system ruby-build-system)
7196 (arguments
7197 '(#:phases
7198 (modify-phases %standard-phases
7199 (replace 'check
7200 (lambda* (#:key tests? #:allow-other-keys)
7201 (when tests?
7202 (invoke "rspec"))
7203 #t)))))
7204 (native-inputs
7205 (list ruby-rspec))
7206 (synopsis "Minitest/RSpec parallel test runner for CI environments")
7207 (description "The test-queue module is a parallel test runner,
7208built using a centralized queue to ensure optimal distribution of
7209tests between workers. It is specifically optimized for Continuous
7210Integration (CI) environments: build statistics from each run are
7211stored locally and used to sort the queue at the beginning of the next
7212run.")
7213 (home-page "https://github.com/tmm1/test-queue")
7214 (license license:expat)))
7215
7216(define-public ruby-rubocop
7217 (package
7218 (name "ruby-rubocop")
7219 (version "1.10.0")
7220 (source
7221 (origin
7222 (method git-fetch) ;no tests in distributed gem
7223 (uri (git-reference
7224 (url "https://github.com/rubocop-hq/rubocop")
7225 (commit (string-append "v" version))))
7226 (file-name (git-file-name name version))
7227 (sha256
7228 (base32
7229 "0wjw9vpzr4f3nf1zf010bag71w4hdi0haybdn7r5rlmw45pmim29"))))
7230 (build-system ruby-build-system)
7231 (arguments
7232 `(#:test-target "default"
7233 ;; TODO: Figure out why test hangs.
7234 #:tests? ,(not (or (%current-target-system)
7235 (target-riscv64?)))
7236 #:phases
7237 (modify-phases %standard-phases
7238 (add-before 'check 'set-home
7239 (lambda _
7240 (setenv "HOME" (getcwd))
7241 #t))
7242 ;; Rubocop depends on itself for tests, directly and indirectly. By
7243 ;; regenerating the TODO list we test rubocop against itself and
7244 ;; forgo adjusting the test suite to our environment each release.
7245 (replace 'check
7246 (lambda* (#:key tests? #:allow-other-keys)
7247 (when tests?
7248 (make-file-writable ".rubocop_todo.yml")
7249 (invoke "./exe/rubocop" "--auto-gen-config"))
7250 #t))
7251 (add-before 'check 'make-adoc-files-writable
7252 (lambda _
7253 (let ((adoc-files (find-files "docs/modules/ROOT/pages"
7254 "\\.adoc$")))
7255 (for-each make-file-writable adoc-files))
7256 #t)))))
7257 (native-inputs
7258 `(("ruby-bump" ,ruby-bump)
7259 ("ruby-pry" ,ruby-pry)
7260 ("ruby-rake" ,ruby-rake)
7261 ("ruby-rspec" ,ruby-rspec)
7262 ("ruby-rubocop-minimal" ,ruby-rubocop-minimal)
7263 ("ruby-rubocop-performance-minimal" ,ruby-rubocop-performance-minimal)
7264 ("ruby-rubocop-rspec-minimal" ,ruby-rubocop-rspec-minimal)
7265 ("ruby-simplecov" ,ruby-simplecov)
7266 ("ruby-stackprof" ,ruby-stackprof)
7267 ("ruby-test-queue" ,ruby-test-queue)
7268 ("ruby-webmock" ,ruby-webmock)
7269 ("ruby-yard" ,ruby-yard)))
7270 (propagated-inputs
7271 (list ruby-parallel
7272 ruby-parser
7273 ruby-rainbow
7274 ruby-regexp-parser
7275 ruby-rubocop-ast
7276 ruby-progressbar
7277 ruby-unicode-display-width))
7278 (synopsis "Ruby code style checking tool")
7279 (description
7280 "@code{rubocop} is a Ruby code style checking tool. It aims to enforce
7281the community-driven Ruby Style Guide.")
7282 (home-page "https://github.com/rubocop-hq/rubocop")
7283 (license license:expat)))
7284
7285(define-public ruby-rubocop-minimal
7286 (hidden-package
7287 (package
7288 (inherit ruby-rubocop)
7289 (arguments
7290 (substitute-keyword-arguments (package-arguments ruby-rubocop)
7291 ((#:tests? _ #f) #f)))
7292 (propagated-inputs '())
7293 (native-inputs '()))))
7294
7295(define-public ruby-contest
7296 (package
7297 (name "ruby-contest")
7298 (version "0.1.3")
7299 (source
7300 (origin
7301 (method url-fetch)
7302 (uri (rubygems-uri "contest" version))
7303 (sha256
7304 (base32
7305 "1p9f2292b7b0fbrcjswvj9v01z7ig5ig52328wyqcabgb553qsdf"))))
7306 (build-system ruby-build-system)
7307 (synopsis "Write declarative tests using nested contexts")
7308 (description
7309 "Contest allows writing declarative @code{Test::Unit} tests using nested
7310contexts without performance penalties.")
7311 (home-page "https://github.com/citrusbyte/contest")
7312 (license license:expat)))
7313
7314(define-public ruby-creole
7315 (package
7316 (name "ruby-creole")
7317 (version "0.5.0")
7318 (source
7319 (origin
7320 (method url-fetch)
7321 (uri (rubygems-uri "creole" version))
7322 (sha256
7323 (base32
7324 "00rcscz16idp6dx0dk5yi5i0fz593i3r6anbn5bg2q07v3i025wm"))))
7325 (build-system ruby-build-system)
7326 (native-inputs
7327 (list ruby-bacon))
7328 (synopsis "Creole markup language converter")
7329 (description
7330 "Creole is a lightweight markup language and this library for converting
7331creole to @code{HTML}.")
7332 (home-page "https://github.com/minad/creole")
7333 (license license:ruby)))
7334
7335(define-public ruby-docile
7336 (package
7337 (name "ruby-docile")
7338 (version "1.1.5")
7339 (source
7340 (origin
7341 (method url-fetch)
7342 (uri (rubygems-uri "docile" version))
7343 (sha256
7344 (base32
7345 "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx"))))
7346 (build-system ruby-build-system)
7347 (arguments
7348 '(#:tests? #f)) ; needs github-markup, among others
7349 (synopsis "Ruby EDSL helper library")
7350 (description "Docile is a Ruby library that provides an interface for
7351creating embedded domain specific languages (EDSLs) that manipulate existing
7352Ruby classes.")
7353 (home-page "https://ms-ati.github.io/docile/")
7354 (license license:expat)))
7355
7356(define-public ruby-middleware
7357 (package
7358 (name "ruby-middleware")
7359 (version "0.1.0")
7360 (source
7361 (origin
7362 (method url-fetch)
7363 (uri (rubygems-uri "middleware" version))
7364 (sha256
7365 (base32
7366 "0703nkf2v371wqr41c04x5qid7ww45cxqv3hnlg07if3b3xrm9xl"))))
7367 (build-system ruby-build-system)
7368 (arguments '(#:tests? #f)) ;no test suite
7369 (synopsis "Implementation of a middleware abstraction for Ruby")
7370 (description "Middleware is a generalized implementation of a middleware
7371abstraction for Ruby.")
7372 (home-page "https://github.com/mitchellh/middleware")
7373 (license license:expat)))
7374
7375(define-public ruby-benchmark-ips
7376 (package
7377 (name "ruby-benchmark-ips")
7378 (version "2.8.2")
7379 (source
7380 (origin
7381 (method url-fetch)
7382 (uri (rubygems-uri "benchmark-ips" version))
7383 (sha256
7384 (base32
7385 "1n9397j7kh4vvikfann1467qgksc679imlr50hax3lk1q3af8kdw"))))
7386 (build-system ruby-build-system)
7387 (native-inputs
7388 (list ruby-hoe))
7389 (synopsis "Iterations per second enhancement for the Ruby Benchmark module")
7390 (description "Benchmark-ips enhances the Ruby Benchmark module with the
7391iterations per second count. For short snippets of code, it can automatically
7392figure out how many times to run the code to get interesting data.")
7393 (home-page "https://github.com/evanphx/benchmark-ips")
7394 (license license:expat)))
7395
7396(define-public ruby-ffi-rzmq-core
7397 (package
7398 (name "ruby-ffi-rzmq-core")
7399 (version "1.0.7")
7400 (source
7401 (origin
7402 (method url-fetch)
7403 (uri (rubygems-uri "ffi-rzmq-core" version))
7404 (sha256
7405 (base32
7406 "0amkbvljpjfnv0jpdmz71p1i3mqbhyrnhamjn566w0c01xd64hb5"))))
7407 (build-system ruby-build-system)
7408 (arguments
7409 `(#:phases
7410 (modify-phases %standard-phases
7411 (add-after 'unpack 'patch-libzmq-search-path
7412 (lambda* (#:key inputs #:allow-other-keys)
7413 (let ((zeromq (assoc-ref inputs "zeromq")))
7414 (substitute* "lib/ffi-rzmq-core/libzmq.rb"
7415 (("/usr/local/lib")
7416 (string-append zeromq "/lib")))
7417 #t)))
7418 (replace 'check
7419 (lambda _
7420 (invoke "rspec"))))))
7421 (native-inputs
7422 (list ruby-rspec))
7423 (inputs
7424 (list zeromq))
7425 (propagated-inputs (list ruby-ffi))
7426 (synopsis "Low-level Ruby FFI wrapper for the ZeroMQ networking library")
7427 (description "This library only provides the FFI wrapper for the ZeroMQ
7428networking library. It can be used to implement a Ruby API for the ZeroMQ
7429library.")
7430 (home-page "https://github.com/chuckremes/ffi-rzmq-core")
7431 (license license:expat)))
7432
7433(define-public ruby-ffi-rzmq
7434 (package
7435 (name "ruby-ffi-rzmq")
7436 (version "2.0.7")
7437 (source
7438 (origin
7439 (method url-fetch)
7440 (uri (rubygems-uri "ffi-rzmq" version))
7441 (sha256
7442 (base32
7443 "14a5kxfnf8l3ngyk8hgmk30z07aj1324ll8i48z67ps6pz2kpsrg"))))
7444 (build-system ruby-build-system)
7445 (arguments '(#:phases (modify-phases %standard-phases
7446 (replace 'check
7447 (lambda* (#:key tests? #:allow-other-keys)
7448 (when tests?
7449 (invoke "rspec")))))))
7450 (native-inputs
7451 (list ruby-rspec))
7452 (propagated-inputs
7453 (list ruby-ffi-rzmq-core))
7454 (synopsis "High-level Ruby wrapper for the ZeroMQ networking library")
7455 (description "This library provides a high-level API that wraps the ZeroMQ
7456networking library using the Ruby foreign function interface (FFI). It is a
7457pure Ruby wrapper, hence is compatible with any Ruby runtime that has support
7458for FFI.")
7459 (home-page "https://github.com/chuckremes/ffi-rzmq")
7460 (license license:expat)))
7461
7462(define-public ruby-sawyer
7463 (package
7464 (name "ruby-sawyer")
7465 (version "0.8.2")
7466 (source
7467 (origin
7468 (method url-fetch)
7469 (uri (rubygems-uri "sawyer" version))
7470 (sha256
7471 (base32
7472 "0yrdchs3psh583rjapkv33mljdivggqn99wkydkjdckcjn43j3cz"))))
7473 (build-system ruby-build-system)
7474 (propagated-inputs
7475 (list ruby-addressable ruby-faraday))
7476 (synopsis "Experimental hypermedia agent for Ruby")
7477 (description "Sawyer is an experimental hypermedia agent for Ruby built on
7478top of Faraday.")
7479 (home-page "https://github.com/lostisland/sawyer")
7480 (license license:expat)))
7481
7482(define-public ruby-octokit
7483 (package
7484 (name "ruby-octokit")
7485 (version "4.18.0")
7486 (source
7487 (origin
7488 (method url-fetch)
7489 (uri (rubygems-uri "octokit" version))
7490 (sha256
7491 (base32
7492 "0zvfr9njmj5svi39fcsi2b0g7pcxb0vamw9dlyas8bg814jlzhi6"))))
7493 (build-system ruby-build-system)
7494 (arguments '(#:tests? #f)) ;no test suite in the gem release
7495 (propagated-inputs
7496 (list ruby-faraday ruby-sawyer))
7497 (synopsis "Ruby toolkit for the GitHub API")
7498 (description "Octokit wraps the GitHub API in a flat API client that
7499follows Ruby conventions and requires little knowledge of REST.")
7500 (home-page "https://github.com/octokit/octokit.rb")
7501 (license license:expat)))
7502
7503(define-public ruby-chandler
7504 (package
7505 (name "ruby-chandler")
7506 (version "0.9.0")
7507 (source
7508 (origin
7509 (method url-fetch)
7510 (uri (rubygems-uri "chandler" version))
7511 (sha256
7512 (base32
7513 "1n8a4mr2jkcz5vaaps45g2rxa2pzy1wb7cylgw85xmmyyp14lnrr"))))
7514 (build-system ruby-build-system)
7515 (native-inputs
7516 (list ruby-rubocop))
7517 (propagated-inputs
7518 (list ruby-netrc ruby-octokit))
7519 (synopsis "Sync CHANGELOG entries to GitHub's release notes")
7520 (description "Chandler syncs a project's CHANGELOG file entries to
7521GitHub's release notes to remove the need of manually entering release
7522notes.")
7523 (home-page "https://github.com/mattbrictson/chandler")
7524 (license license:expat)))
7525
7526(define-public ruby-pry-byebug
7527 (package
7528 (name "ruby-pry-byebug")
7529 (version "3.9.0")
7530 (source
7531 (origin
7532 (method git-fetch)
7533 (uri (git-reference
7534 (url "https://github.com/deivid-rodriguez/pry-byebug")
7535 (commit (string-append "v" version))))
7536 (file-name (git-file-name name version))
7537 (sha256
7538 (base32
7539 "1kchrwccai92068p50zyd6mh524ywqnm0jw5g3lks7iwmf0xkmgc"))))
7540 (build-system ruby-build-system)
7541 (arguments
7542 `(#:phases (modify-phases %standard-phases
7543 (add-before 'check 'set-home
7544 (lambda _
7545 (setenv "HOME" (getcwd))
7546 #t)))))
7547 (native-inputs
7548 (list ruby-chandler ruby-rubocop ruby-simplecov))
7549 (propagated-inputs
7550 (list ruby-byebug ruby-pry))
7551 (synopsis "Step-by-step debugging and stack navigation in Pry")
7552 (description "This package adds step-by-step debugging and stack
7553navigation capabilities to @code{pry}, using @code{byebug}.")
7554 (home-page "https://github.com/deivid-rodriguez/pry-byebug")
7555 (license license:expat)))
7556
7557(define-public ruby-stackprof
7558 (package
7559 (name "ruby-stackprof")
7560 (version "0.2.17")
7561 (source
7562 (origin
7563 (method url-fetch)
7564 (uri (rubygems-uri "stackprof" version))
7565 (sha256
7566 (base32 "06lz70k8c0r7fyxk1nc3idh14x7nvsr21ydm1bsmbj00jyhmfzsn"))))
7567 (build-system ruby-build-system)
7568 (arguments
7569 `(#:phases
7570 (modify-phases %standard-phases
7571 (add-before 'check 'skip-dubious-test
7572 (lambda _
7573 ,@(if (or (target-riscv64?)
7574 (target-ppc32?))
7575 ;; This unreliable test can fail with "Expected 32 to be <= 25."
7576 '((substitute* "test/test_stackprof.rb"
7577 ((".*assert_operator profile\\[:missed_samples.*") "")))
7578 ;; This unreliable test can fail with "Expected 0 to be >= 1."
7579 '((substitute* "test/test_stackprof.rb"
7580 (("def test_(cputime)" _ name)
7581 (string-append "def skip_" name)))))))
7582 (add-before 'check 'build-tests
7583 (lambda _
7584 (invoke "rake" "compile"))))))
7585 (native-inputs
7586 (list ruby-mocha ruby-rake-compiler))
7587 (synopsis "Sampling profiler for Ruby code")
7588 (description
7589 "@code{stackprof} is a fast sampling profiler for Ruby code, with cpu,
7590wallclock and object allocation samplers.")
7591 (home-page "https://github.com/tmm1/stackprof")
7592 (license license:expat)))
7593
7594(define-public ruby-binding-of-caller
7595 (package
7596 (name "ruby-binding-of-caller")
7597 (version "0.8.0")
7598 (source
7599 (origin
7600 (method url-fetch)
7601 (uri (rubygems-uri "binding_of_caller" version))
7602 (sha256
7603 (base32
7604 "05syqlks7463zsy1jdfbbdravdhj9hpj5pv2m74blqpv8bq4vv5g"))))
7605 (build-system ruby-build-system)
7606 ;; Attempting to run the test suite fails with a rake deprecation error
7607 ;; (see: https://github.com/banister/binding_of_caller/issues/76).
7608 (arguments '(#:tests? #f))
7609 (propagated-inputs
7610 (list ruby-debug-inspector))
7611 (synopsis "Retrieve the binding of a method's caller")
7612 (description "The @code{binding_of_caller} module provides the
7613@code{Binding#of_caller} method. It allows accessing bindings from upper
7614frames in the call stack and can evaluate code in that context.")
7615 (home-page "https://github.com/banister/binding_of_caller")
7616 (license license:expat)))
7617
7618(define-public ruby-pry-stack-explorer
7619 (package
7620 (name "ruby-pry-stack-explorer")
7621 (version "0.5.1")
7622 (source
7623 (origin
7624 (method url-fetch)
7625 (uri (rubygems-uri "pry-stack_explorer" version))
7626 (sha256
7627 (base32
7628 "157rd2n9pfvcmmicm0xkq8z4p6famaj13syrpra6b4032qpb1wn0"))))
7629 (build-system ruby-build-system)
7630 (arguments '(#:tests? #f)) ;no test suite in gem release
7631 (propagated-inputs
7632 (list ruby-binding-of-caller ruby-pry))
7633 (synopsis "Call-stack navigation plugin for the Pry REPL")
7634 (description "@code{pry-stack_explorer} is a plugin for the Pry REPL that
7635add support to navigate the call-stack.")
7636 (home-page "https://github.com/pry/pry-stack_explorer")
7637 (license license:expat)))
7638
7639(define-public ruby-varint
7640 (package
7641 (name "ruby-varint")
7642 (version "0.1.1")
7643 (source
7644 (origin
7645 (method url-fetch)
7646 (uri (rubygems-uri "varint" version))
7647 (sha256
7648 (base32
7649 "1y0l2qc64cwsyv76ygg9bbjnk86riz2kq73kmn87gdrlmpiyrdac"))))
7650 (build-system ruby-build-system)
7651 (arguments '(#:tests? #f)) ;no test suite
7652 (synopsis "Variable length integers (varint) C extension for Ruby")
7653 (description "This package provides a small C extension to speed up
7654variable length integers (varint) in Ruby Protocol Buffers.")
7655 (home-page "https://github.com/liquidm/varint")
7656 (license license:bsd-3)))
7657
7658(define-public ruby-ruby-prof
7659 (package
7660 (name "ruby-ruby-prof")
7661 (version "1.4.3")
7662 (source
7663 (origin
7664 (method url-fetch)
7665 (uri (rubygems-uri "ruby-prof" version))
7666 (sha256
7667 (base32
7668 "1r3xalp91l07m0cwllcxjzg6nkviiqnxkcbgg5qnzsdji6rgy65m"))))
7669 (build-system ruby-build-system)
7670 (arguments
7671 ;; It is unclear why the tests fail on i686-linux
7672 `(#:tests? ,(not (or (%current-target-system)
7673 (target-x86-32?)))
7674 #:phases
7675 (modify-phases %standard-phases
7676 (add-after 'unpack 'patch-rakefile
7677 ;; This fixes the following error: "NameError: uninitialized
7678 ;; constant Bundler::GemHelper" (see:
7679 ;; https://github.com/ruby-prof/ruby-prof/issues/274).
7680 (lambda _
7681 (substitute* "Rakefile"
7682 ((".*require \"bundler/setup\".*" all)
7683 (string-append all " require 'bundler/gem_tasks'\n")))
7684 #t))
7685 ;; The LineNumbersTest test fails non-deterministically (see:
7686 ;; https://github.com/ruby-prof/ruby-prof/issues/276).
7687 (add-after 'extract-gemspec 'delete-flaky-test
7688 (lambda _
7689 (delete-file "test/line_number_test.rb")
7690 (substitute* "ruby-prof.gemspec"
7691 (("\"test/line_number_test\\.rb\"\\.freeze, ") ""))
7692 #t))
7693 (add-before 'check 'compile
7694 (lambda _
7695 (invoke "rake" "compile"))))))
7696 (native-inputs
7697 (list bundler ruby-minitest ruby-rake-compiler ruby-rdoc))
7698 (synopsis "Fast code profiler for Ruby")
7699 (description "RubyProf is a fast code profiler for Ruby. Its features
7700include:
7701@table @asis
7702@item Speed
7703Being a C extension, it is many times faster than the standard Ruby profiler.
7704@item Measurement Modes
7705It can measure program wall time, process time, object allocations and memory
7706usage.
7707@item Reports
7708A variety of text and cross-referenced HTML reports can be generated.
7709@item Threads
7710Profiling multiple threads simultaneously is supported.
7711@end table")
7712 (home-page "https://github.com/ruby-prof/ruby-prof")
7713 (license license:bsd-2)))
7714
7715(define-public ruby-memory-profiler
7716 (package
7717 (name "ruby-memory-profiler")
7718 (version "1.0.0")
7719 (source
7720 (origin
7721 (method git-fetch)
7722 (uri (git-reference
7723 (url "https://github.com/SamSaffron/memory_profiler")
7724 (commit (string-append "v" version))))
7725 (file-name (git-file-name name version))
7726 (sha256
7727 (base32
7728 "07yqv11q68xg2fqkrhs6ysngryk8b9zq6qzh24rgx9xqv6qfnj0w"))))
7729 (build-system ruby-build-system)
7730 (synopsis "Memory profiling routines for Ruby")
7731 (description
7732 "This package provides memory profiling routines for Ruby.")
7733 (home-page "https://github.com/SamSaffron/memory_profiler")
7734 (license license:expat)))
7735
7736(define-public ruby-cucumber-messages
7737 (package
7738 (name "ruby-cucumber-messages")
7739 (version "12.2.0")
7740 (source (origin
7741 (method git-fetch)
7742 (uri (git-reference
7743 (url "https://github.com/cucumber/messages-ruby")
7744 (commit "12cd07eac87bce7843fd1bb0bf64bc4da09f097c")))
7745 (file-name (git-file-name name version))
7746 (sha256
7747 (base32
7748 "16wwqfpsq7crvxc3q08lphgyh12cl2d83p1c79p312q4jmy9cn5a"))))
7749 (build-system ruby-build-system)
7750 (arguments
7751 `(#:phases (modify-phases %standard-phases
7752 (add-after 'unpack 'patch-protobuf.rb
7753 (lambda _
7754 (substitute* "rake/protobuf.rb"
7755 (("load 'protobuf/tasks/compile.rake'")
7756 "require 'protobuf/tasks'"))
7757 #t))
7758 (add-before 'build 'compile
7759 (lambda _
7760 (substitute* "Makefile"
7761 (("bundle exec ") "")
7762 (("include default.mk.*" all)
7763 (string-append "#" all)))
7764 (invoke "make")))
7765 (replace 'check
7766 (lambda _
7767 (invoke "rspec"))))))
7768 (propagated-inputs
7769 `(("ruby-protobuf" ,ruby-protobuf-cucumber)))
7770 (native-inputs
7771 (list ruby-rspec))
7772 (home-page "https://github.com/cucumber/messages-ruby")
7773 (synopsis "Cucumber Messages for Ruby (Protocol Buffers)")
7774 (description "Cucumber Messages for Ruby is a library which allows
7775serialization and deserialization of the protocol buffer messages used in
7776Cucumber.")
7777 (license license:expat)))
7778
7779(define-public ruby-gherkin
7780 (package
7781 (name "ruby-gherkin")
7782 (version "14.0.1")
7783 (source (origin
7784 (method git-fetch)
7785 (uri (git-reference
7786 (url "https://github.com/cucumber/gherkin-ruby")
7787 (commit (string-append "v" version))))
7788 (file-name (git-file-name name version))
7789 (sha256
7790 (base32
7791 "1dwa8632nc6kijv8p257jl64rsjmc0fimlaqvxlkdi2h9n1nympb"))))
7792 (build-system ruby-build-system)
7793 (native-inputs
7794 (list ruby-cucumber-messages ruby-rspec))
7795 (arguments
7796 `(#:test-target "spec"))
7797 (synopsis "Gherkin parser for Ruby")
7798 (description "Gherkin is a parser and compiler for the Gherkin language.
7799It is intended be used by all Cucumber implementations to parse
7800@file{.feature} files.")
7801 (home-page "https://github.com/cucumber/gherkin-ruby")
7802 (license license:expat)))
7803
7804(define-public ruby-gherkin-ruby
7805 (package
7806 (name "ruby-gherkin-ruby")
7807 (version "0.3.2")
7808 (home-page "https://github.com/codegram/gherkin-ruby")
7809 (source (origin
7810 (method url-fetch)
7811 (uri (rubygems-uri "gherkin-ruby" version))
7812 (sha256
7813 (base32
7814 "18ay7yiibf4sl9n94k7mbi4k5zj2igl4j71qcmkswv69znyx0sn1"))))
7815 (build-system ruby-build-system)
7816 (synopsis "Pure Ruby Gherkin parser")
7817 (description
7818 "Gherkin-ruby is a Gherkin parser written in pure Ruby and less than
7819200 lines of code.")
7820 ;; XXX: No license information anywhere but Readme.md.
7821 (license license:expat)))
7822
7823(define-public ruby-aruba
7824 (package
7825 (name "ruby-aruba")
7826 (version "0.14.14")
7827 (source
7828 (origin
7829 (method url-fetch)
7830 (uri (rubygems-uri "aruba" version))
7831 (sha256
7832 (base32
7833 "0l2mfpdxc03gdrbwc2hv4vdhjhqhfcdp6d02j05j64ncpi9srlqn"))))
7834 (build-system ruby-build-system)
7835 (arguments
7836 '(#:test-target "spec"
7837 #:phases
7838 (modify-phases %standard-phases
7839 (add-after 'unpack 'patch
7840 (lambda _
7841 (substitute* "spec/aruba/api_spec.rb"
7842 ;; This resolves some errors in the specs
7843 ;;
7844 ;; undefined method `parse' for Time:Class
7845 (("require 'spec_helper'")
7846 "require 'spec_helper'\nrequire 'time'"))
7847 ;; Avoid shebang issues in this spec file
7848 (substitute* "spec/aruba/matchers/command_spec.rb"
7849 (("/usr/bin/env bash")
7850 (which "bash")))
7851 #t))
7852 (add-before 'check 'remove-unnecessary-dependencies
7853 (lambda _
7854 (substitute* "Gemfile"
7855 ((".*byebug.*") "\n")
7856 ((".*pry.*") "\n")
7857 ((".*yaml.*") "\n")
7858 ((".*bcat.*") "\n")
7859 ((".*kramdown.*") "\n")
7860 ((".*rubocop.*") "\n")
7861 ((".*cucumber-pro.*") "\n")
7862 ((".*cucumber.*") "\n")
7863 ((".*license_finder.*") "\n")
7864 ((".*rake.*") "gem 'rake'\n")
7865 ((".*relish.*") "\n"))
7866 (substitute* "aruba.gemspec"
7867 (("spec\\.add\\_runtime\\_dependency 'cucumber'.*")
7868 "spec.add_runtime_dependency 'cucumber'"))
7869 #t))
7870 (add-before 'check 'set-home
7871 (lambda _ (setenv "HOME" "/tmp") #t)))))
7872 (native-inputs
7873 (list bundler ruby-rspec ruby-fuubar ruby-simplecov))
7874 (propagated-inputs
7875 (list ruby-childprocess
7876 ruby-contracts
7877 ruby-cucumber
7878 ruby-ffi
7879 ruby-rspec-expectations
7880 ruby-thor
7881 ruby-yard))
7882 (synopsis "Test command-line applications with Cucumber, RSpec or Minitest")
7883 (description
7884 "Aruba is an extension for Cucumber, RSpec and Minitest for testing
7885command-line applications. It supports applications written in any
7886language.")
7887 (home-page "https://github.com/cucumber/aruba")
7888 (license license:expat)))
7889
7890;; A version of ruby-aruba without tests run so that circular dependencies can
7891;; be avoided.
7892(define ruby-aruba-without-tests
7893 (package
7894 (inherit ruby-aruba)
7895 (arguments '(#:tests? #f))
7896 (propagated-inputs
7897 `(("ruby-cucumber" ,ruby-cucumber-without-tests)
7898 ,@(alist-delete "ruby-cucumber"
7899 (package-propagated-inputs ruby-aruba))))
7900 (native-inputs '())))
7901
7902(define-public ruby-sys-uname
7903 (package
7904 (name "ruby-sys-uname")
7905 (version "1.2.1")
7906 (source
7907 (origin
7908 (method url-fetch)
7909 (uri (rubygems-uri "sys-uname" version))
7910 (sha256
7911 (base32
7912 "00p3wwvkdbg6pl38bchaagncv3i4fq4y0ks470imwykjanpy2ic0"))))
7913 (build-system ruby-build-system)
7914 (arguments
7915 `(#:test-target "spec"))
7916 (propagated-inputs (list ruby-ffi))
7917 (native-inputs (list ruby-rspec))
7918 (synopsis "Ruby interface for gathering system information")
7919 (description "The sys-uname library provides an interface for gathering
7920information about your current platform. It allows retrieving information
7921such as the OS name, OS version, system name, etc.")
7922 (home-page "https://github.com/djberg96/sys-uname")
7923 (license license:asl2.0)))
7924
7925(define-public ruby-cucumber-create-meta
7926 (package
7927 (name "ruby-cucumber-create-meta")
7928 (version "1.0.0")
7929 (source
7930 (origin
7931 (method url-fetch)
7932 (uri (rubygems-uri "cucumber-create-meta" version))
7933 (sha256
7934 (base32
7935 "0i0i3arymjrnjk72mg79w1a11607x4d0lrqafm9sz2gq9l52zasw"))))
7936 (build-system ruby-build-system)
7937 (arguments
7938 `(#:phases (modify-phases %standard-phases
7939 (add-after 'extract-gemspec 'relax-version-requirements
7940 (lambda _
7941 (substitute* ".gemspec"
7942 ((" 12\\.2")
7943 " 12.1"))
7944 #t))
7945 (replace 'check
7946 (lambda _
7947 (invoke "rspec"))))))
7948 (native-inputs
7949 (list ruby-rspec))
7950 (propagated-inputs
7951 (list ruby-cucumber-messages ruby-sys-uname))
7952 (synopsis "Function to create @code{Meta} messages for Cucumber Ruby")
7953 (description "The @code{createMeta} utility function allows generating
7954system-specific @code{Meta} messages for Cucumber Ruby.")
7955 (home-page "https://github.com/cucumber/cucumber/tree/master/create-meta/ruby")
7956 (license license:expat)))
7957
7958(define-public ruby-cucumber-html-formatter
7959 (package
7960 (name "ruby-cucumber-html-formatter")
7961 (version "7.0.0")
7962 (source
7963 (origin
7964 (method url-fetch)
7965 (uri (rubygems-uri "cucumber-html-formatter" version))
7966 (sha256
7967 (base32
7968 "0lshj4sw9jw7687wrhknyb9kffblai3l843zgrznyqij3ga0bc62"))))
7969 (build-system ruby-build-system)
7970 (arguments
7971 `(#:phases (modify-phases %standard-phases
7972 (replace 'check
7973 (lambda _
7974 (invoke "rspec"))))))
7975 (native-inputs
7976 (list ruby-rspec))
7977 (propagated-inputs
7978 (list ruby-cucumber-messages))
7979 (synopsis "HTML formatter for Cucumber")
7980 (description "Cucumber HTML Formatter produces a HTML report for Cucumber
7981runs. It is built on top of cucumber-react and works with any Cucumber
7982implementation with a protocol buffer formatter that outputs Cucumber
7983messages.")
7984 (home-page "https://github.com/cucumber/cucumber/tree/\
7985master/html-formatter/ruby")
7986 (license license:expat)))
7987
7988(define-public ruby-cucumber
7989 (package
7990 (name "ruby-cucumber")
7991 (version "4.1.0")
7992 (source
7993 (origin
7994 (method git-fetch)
7995 (uri (git-reference
7996 (url "https://github.com/cucumber/cucumber-ruby")
7997 (commit (string-append "v" version))))
7998 (file-name (git-file-name name version))
7999 (sha256
8000 (base32
8001 "0g9rqfslbzkkrq2kvl14fgknrhfbji3bjjpjxff5nc9wzd3hd549"))))
8002 (build-system ruby-build-system)
8003 (arguments
8004 '(#:test-target "default"
8005 #:phases
8006 (modify-phases %standard-phases
8007 (add-after 'unpack 'disable-rubocop
8008 ;; Rubocop lint check fails with our more recent version.
8009 (lambda _
8010 (substitute* "Rakefile"
8011 (("spec cucumber rubocop")
8012 "spec cucumber"))
8013 #t))
8014 (add-after 'extract-gemspec 'strip-version-requirements
8015 (lambda _
8016 (delete-file "Gemfile") ;do not use Bundler
8017 (substitute* "cucumber.gemspec"
8018 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
8019 (string-append stripped "\n")))
8020 #t))
8021 (add-before 'check 'set-home
8022 (lambda _
8023 (setenv "HOME" (getcwd))
8024 #t)))))
8025 (propagated-inputs
8026 (list ruby-builder
8027 ruby-cucumber-core
8028 ruby-cucumber-create-meta
8029 ruby-cucumber-html-formatter
8030 ruby-cucumber-messages
8031 ruby-cucumber-wire
8032 ruby-diff-lcs
8033 ruby-gherkin
8034 ruby-multi-json
8035 ruby-multi-test))
8036 (native-inputs
8037 (list ;; Use a untested version of aruba, to avoid a circular dependency, as
8038 ;; ruby-aruba depends on ruby-cucumber.
8039 ruby-aruba-without-tests
8040 ruby-rspec
8041 ruby-pry
8042 ruby-nokogiri
8043 ruby-rubocop))
8044 (synopsis "Describe automated tests in plain language")
8045 (description "Cucumber is a tool for running automated tests written in
8046plain language. It's designed to support a Behaviour Driven Development (BDD)
8047software development workflow.")
8048 (home-page "https://cucumber.io/")
8049 (license license:expat)))
8050
8051(define ruby-cucumber-without-tests
8052 (package (inherit ruby-cucumber)
8053 (arguments
8054 '(#:tests? #f))
8055 (native-inputs
8056 '())))
8057
8058(define-public ruby-coveralls
8059 (package
8060 (name "ruby-coveralls")
8061 (version "0.8.23")
8062 (source
8063 (origin
8064 (method url-fetch)
8065 (uri (rubygems-uri "coveralls" version))
8066 (sha256
8067 (base32
8068 "1mv4fn5lfxhy7bc2f1lpnc5yp9mvv97az77j4r7jgrxcqwn8fqxc"))))
8069 (build-system ruby-build-system)
8070 ;; The test suite depends on ruby-vcr, which cannot be included in Guix
8071 ;; because of its nonfree, Hippocratic-derived license.
8072 (arguments
8073 `(#:tests? #f
8074 #:phases (modify-phases %standard-phases
8075 (add-after 'extract-gemspec 'strip-version-requirements
8076 ;; Keeping strict version requirements can cause problems
8077 ;; to users of the library, such as: Gem::ConflictError:
8078 ;; Unable to activate coveralls-0.8.23, because
8079 ;; simplecov-0.17.1 conflicts with simplecov (~> 0.16.1).
8080 (lambda _
8081 (substitute* "coveralls-ruby.gemspec"
8082 (("(.*add_.*dependency\\([^,]+), .*" _ stripped)
8083 (string-append stripped ")\n")))
8084 #t)))))
8085 (propagated-inputs
8086 (list ruby-json ruby-term-ansicolor ruby-thor ruby-tins))
8087 (synopsis "Ruby implementation of the Coveralls API")
8088 (description "This package provides a Ruby implementation of the Coveralls
8089API.")
8090 (home-page "https://coveralls.io")
8091 (license license:expat)))
8092
8093(define-public ruby-unindent
8094 (package
8095 (name "ruby-unindent")
8096 (version "1.0")
8097 (source
8098 (origin
8099 (method url-fetch)
8100 (uri (rubygems-uri "unindent" version))
8101 (sha256
8102 (base32
8103 "1wqh3rzv8589yzibigminxx3qpmj2nqj28f90xy1sczk1pijmcrd"))))
8104 (build-system ruby-build-system)
8105 (synopsis "Ruby method to unindent strings")
8106 (description "This module provides a @code{String#unindent} Ruby method to
8107unindent strings, which can be useful to unindent multiline strings embedded
8108in already-indented code.")
8109 (home-page "https://github.com/mynyml/unindent")
8110 (license license:expat)))
8111
8112(define-public ruby-cucumber-core
8113 (package
8114 (name "ruby-cucumber-core")
8115 (version "7.1.0")
8116 (source
8117 (origin
8118 (method git-fetch)
8119 (uri (git-reference
8120 (url "https://github.com/cucumber/cucumber-ruby-core")
8121 (commit (string-append "v" version))))
8122 (file-name (git-file-name name version))
8123 (sha256
8124 (base32
8125 "1p5wb6wbggbw37ariyag4kxpiczznvgm3c8cnz1744dmbj79q1rn"))))
8126 (build-system ruby-build-system)
8127 (arguments
8128 `(#:test-target "spec"
8129 #:phases
8130 (modify-phases %standard-phases
8131 (add-after 'extract-gemspec 'relax-version-requirements
8132 (lambda _
8133 (substitute* "cucumber-core.gemspec"
8134 (("'cucumber-tag-expressions',.*")
8135 "'cucumber-tag-expressions', '>=2.0.0'\n"))
8136 #t)))))
8137 (native-inputs
8138 (list ruby-rspec ruby-coveralls ruby-rubocop ruby-simplecov
8139 ruby-unindent))
8140 (propagated-inputs
8141 (list ruby-cucumber-messages ruby-gherkin
8142 ruby-cucumber-tag-expressions))
8143 (synopsis "Core library for the Cucumber BDD app")
8144 (description "Cucumber is a tool for running automated tests
8145written in plain language. Because they're written in plain language,
8146they can be read by anyone on your team. Because they can be read by
8147anyone, you can use them to help improve communication, collaboration
8148and trust on your team.")
8149 (home-page "https://cucumber.io/")
8150 (license license:expat)))
8151
8152(define-public ruby-cucumber-expressions
8153 (package
8154 (name "ruby-cucumber-expressions")
8155 (version "10.2.0")
8156 (source
8157 (origin
8158 (method git-fetch)
8159 (uri (git-reference
8160 (url "https://github.com/cucumber/cucumber-expressions-ruby")
8161 (commit (string-append "v" version))))
8162 (file-name (git-file-name name version))
8163 (sha256
8164 (base32
8165 "1aivhcpjrmbvp9bg0y7g6zxh2swfvylvg0sapq5jc4i1y74k8npd"))))
8166 (build-system ruby-build-system)
8167 (arguments
8168 '(#:test-target "spec"))
8169 (native-inputs
8170 (list ruby-rspec ruby-simplecov))
8171 (synopsis "Simpler alternative to Regular Expressions")
8172 (description "Cucumber Expressions offer similar functionality to Regular
8173Expressions, with a syntax that is easier to read and write. Cucumber
8174Expressions are extensible with parameter types.")
8175 (home-page "https://github.com/cucumber/cucumber-expressions-ruby")
8176 (license license:expat)))
8177
8178(define-public ruby-cucumber-wire
8179 (package
8180 (name "ruby-cucumber-wire")
8181 (version "3.1.0")
8182 (source
8183 (origin
8184 (method url-fetch)
8185 (uri (rubygems-uri "cucumber-wire" version))
8186 (sha256
8187 (base32
8188 "0z1n13lqv70zb2lcrvs2263lm0gsb3gz8gbv890kxzwp8cvd433k"))))
8189 (build-system ruby-build-system)
8190 (arguments
8191 '(#:tests? #f ;tests use cucumber, causing a cycle
8192 #:phases
8193 (modify-phases %standard-phases
8194 (add-after 'extract-gemspec 'relax-version-requirements
8195 (lambda _
8196 (substitute* ".gemspec"
8197 ((" 10\\.1") " 10.2"))
8198 #t)))))
8199 (propagated-inputs
8200 (list ruby-cucumber-core ruby-cucumber-expressions
8201 ruby-cucumber-messages))
8202 (synopsis "Cucumber wire protocol plugin")
8203 (description "Cucumber's wire protocol allows step definitions to be
8204implemented and invoked on any platform.")
8205 (home-page "https://github.com/cucumber/cucumber-ruby-wire")
8206 (license license:expat)))
8207
8208(define-public ruby-cucumber-tag-expressions
8209 (package
8210 (name "ruby-cucumber-tag-expressions")
8211 (version "3.0.0")
8212 (source
8213 (origin
8214 (method git-fetch)
8215 (uri (git-reference
8216 (url "https://github.com/cucumber/tag-expressions-ruby")
8217 (commit (string-append "v" version))))
8218 (file-name (git-file-name name version))
8219 (sha256
8220 (base32
8221 "15dw4w0npd4m6aw7zhqkjxxzngp42kswrkwfygxkxcxnhy5zl1vx"))))
8222 (build-system ruby-build-system)
8223 (arguments
8224 `(#:test-target "spec"))
8225 (native-inputs
8226 (list ruby-rspec))
8227 (synopsis "Cucumber tag expressions for Ruby")
8228 (description "Cucumber tag expression parser for Ruby. A tag expression
8229is an infix boolean expression used by Cucumber.")
8230 (home-page "https://github.com/cucumber/tag-expressions-ruby")
8231 (license license:expat)))
8232
8233(define-public ruby-bindex
8234 (package
8235 (name "ruby-bindex")
8236 (version "0.5.0")
8237 (source
8238 (origin
8239 (method url-fetch)
8240 (uri (rubygems-uri "bindex" version))
8241 (sha256
8242 (base32
8243 "1wvhf4v8sk5x8li03pcc0v0wglmyv7ikvvg05bnms83dfy7s4k8i"))))
8244 (build-system ruby-build-system)
8245 (arguments
8246 '(#:test-target "default"))
8247 (native-inputs
8248 (list bundler ruby-rake-compiler))
8249 (synopsis "Provides access for bindings relating to Ruby exceptions")
8250 (description
8251 "@code{bindex} provides a way to access the bindings that relate to
8252exceptions in Ruby, providing more information about the context in which the
8253exception occurred.")
8254 (home-page "https://github.com/gsamokovarov/bindex")
8255 (license license:expat)))
8256
8257(define-public ruby-bio-logger
8258 (package
8259 (name "ruby-bio-logger")
8260 (version "1.0.1")
8261 (source
8262 (origin
8263 (method url-fetch)
8264 (uri (rubygems-uri "bio-logger" version))
8265 (sha256
8266 (base32
8267 "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
8268 (build-system ruby-build-system)
8269 (arguments
8270 `(#:tests? #f)) ; rake errors, missing shoulda
8271 (propagated-inputs
8272 (list ruby-log4r))
8273 (synopsis "Log4r wrapper for Ruby")
8274 (description "Bio-logger is a wrapper around Log4r adding extra logging
8275features such as filtering and fine grained logging.")
8276 (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
8277 (license license:expat)))
8278
8279(define-public ruby-yajl-ruby
8280 (package
8281 (name "ruby-yajl-ruby")
8282 (version "1.4.1")
8283 (source
8284 (origin
8285 (method url-fetch)
8286 (uri (rubygems-uri "yajl-ruby" version))
8287 (sha256
8288 (base32
8289 "16v0w5749qjp13xhjgr2gcsvjv6mf35br7iqwycix1n2h7kfcckf"))))
8290 (build-system ruby-build-system)
8291 (arguments
8292 '(#:test-target "spec"
8293 #:phases
8294 (modify-phases %standard-phases
8295 (add-before 'check 'patch-test-to-update-load-path
8296 (lambda _
8297 (substitute* "spec/parsing/large_number_spec.rb"
8298 (("require \"yajl\"")
8299 "$LOAD_PATH << 'lib'; require 'yajl'"))
8300 #t)))))
8301 (native-inputs
8302 (list ruby-rake-compiler ruby-rspec))
8303 (synopsis "Streaming JSON parsing and encoding library for Ruby")
8304 (description
8305 "Ruby C bindings to the Yajl JSON stream-based parser library. The API
8306is compatible with the JSON gem, so yajl-ruby can act as a drop in
8307replacement.
8308
8309A modified copy of yajl is used, and included in the package.")
8310 (home-page "https://github.com/brianmario/yajl-ruby")
8311 (license (list license:expat ; Ruby code, yajl_ext.c and yajl_ext.h
8312 license:bsd-3)))) ; Included, modified copy of yajl
8313
8314(define-public ruby-yard
8315 (package
8316 (name "ruby-yard")
8317 (version "0.9.25")
8318 (source
8319 (origin
8320 (method git-fetch)
8321 ;; Tests do not pass if we build from the distributed gem.
8322 (uri (git-reference
8323 (url "https://github.com/lsegal/yard")
8324 (commit (string-append "v" version))))
8325 (file-name (git-file-name name version))
8326 (sha256
8327 (base32
8328 "1x7y4s557hrnq439lih7nqg1y7ximardw75jx9i92x3yzpviqqwa"))))
8329 (build-system ruby-build-system)
8330 (arguments
8331 ;; Note: Tests are willfully disabled to alleviate dependency cycle
8332 ;; problems.
8333 `(#:tests? #f
8334 #:phases (modify-phases %standard-phases
8335 (add-after 'unpack 'do-not-set-date-in-gemspec
8336 ;; Fix a reproducibility issue (see:
8337 ;; https://github.com/lsegal/yard/issues/1343).
8338 (lambda _
8339 (substitute* "yard.gemspec"
8340 ((".*s\\.date.*") ""))
8341 #t)))))
8342 (synopsis "Documentation generation tool for Ruby")
8343 (description "YARD is a documentation generation tool for the Ruby
8344programming language. It enables the user to generate consistent, usable
8345documentation that can be exported to a number of formats very easily, and
8346also supports extending for custom Ruby constructs such as custom class level
8347definitions.")
8348 (home-page "https://yardoc.org")
8349 (license license:expat)))
8350
8351(define-public ruby-yard-with-tests
8352 (package
8353 (inherit ruby-yard)
8354 (name "ruby-yard-with-tests")
8355 (arguments
8356 (substitute-keyword-arguments
8357 (strip-keyword-arguments '(#:tests?) (package-arguments ruby-yard))
8358 ((#:test-target _ "default") "default")
8359 ((#:phases phases '%standard-phases)
8360 `(modify-phases ,phases
8361 (add-before 'check 'prepare-for-tests
8362 (lambda* (#:key tests? #:allow-other-keys)
8363 (when tests?
8364 (substitute* "Rakefile"
8365 ((".*[Ss]amus.*") ""))
8366 ;; Delete the Gemfile to avoid errors relating to it.
8367 (delete-file "Gemfile")
8368 ;; $HOME needs to be set to somewhere writeable for tests to
8369 ;; run.
8370 (setenv "HOME" "/tmp"))))))))
8371 (native-inputs (list ruby-rspec ruby-rack ruby-redcloth ruby-asciidoctor))))
8372
8373(define-public ruby-spectroscope
8374 (package
8375 (name "ruby-spectroscope")
8376 (version "0.1.0")
8377 (source
8378 (origin
8379 (method url-fetch)
8380 (uri (rubygems-uri "spectroscope" version))
8381 (sha256
8382 (base32
8383 "0iiid9sm110qhx0i1zkds710cvsnmhd308wbqa7slkzbq2akrb3y"))))
8384 (build-system ruby-build-system)
8385 (arguments
8386 `(#:phases
8387 (modify-phases %standard-phases
8388 (replace 'check
8389 (lambda _
8390 (with-output-to-file ".test"
8391 (lambda _
8392 (display
8393 "\
8394require 'ae/should'
8395require 'rspec'
8396
8397include RSpec
8398
8399Test.run :default do |run|
8400 run.files << 'spec/*_spec.rb'
8401end")))
8402 (invoke "ruby" "-Ilib" "-rrubytest" ".test"))))))
8403 (native-inputs
8404 (list ruby-ae ruby-rspec))
8405 (propagated-inputs
8406 (list ruby-rubytest))
8407 (synopsis "Behavior-Driven Development (BDD) framework built on RubyTest")
8408 (description "Spectroscope is a Behavior-Driven Development (BDD)
8409framework built on RubyTest, designed to emulate RSpec in most respects. It
8410is assertion framework independent so any number of assertion systems can be
8411used, such as Assay or AE.")
8412 (home-page "http://rubyworks.github.com/spectroscope/")
8413 (license license:bsd-2)))
8414
8415(define-public ruby-tomparse
8416 (package
8417 (name "ruby-tomparse")
8418 (version "0.4.2")
8419 (source
8420 (origin
8421 (method url-fetch)
8422 (uri (rubygems-uri "tomparse" version))
8423 (sha256
8424 (base32
8425 "06xakk41f1kgj6j1ahkwn4r6cvidixvm4phhlrvmwb7c3pr8ygc8"))))
8426 (build-system ruby-build-system)
8427 ;; TODO: Tests require citron and rulebow, not yet packaged.
8428 (arguments '(#:tests? #f))
8429 (synopsis "TomDoc parser for Ruby")
8430 (description "TomParse is a TomDoc parser for Ruby. It takes a code
8431comment as input and parses it into a convenient object-oriented structure in
8432accordance with the TomDoc standard. See
8433@url{https://github.com/mojombo/tomdoc, TomDoc} for more information about the
8434TomDoc format.")
8435 (home-page "http://rubyworks.github.com/tomparse/")
8436 (license license:bsd-2)))
8437
8438(define-public ruby-yard-tomdoc
8439 (package
8440 (name "ruby-yard-tomdoc")
8441 (version "0.7.1")
8442 (source
8443 (origin
8444 (method url-fetch)
8445 (uri (rubygems-uri "yard-tomdoc" version))
8446 (sha256
8447 (base32
8448 "1725gs8b8klpwhrvnf2wwp7dw3zxs9vz2la983l2d8c4r4fn1j2z"))))
8449 (build-system ruby-build-system)
8450 (arguments
8451 `(#:phases (modify-phases %standard-phases
8452 (replace 'check
8453 (lambda _
8454 (invoke "rubytest" "-Ilib" "-Itest" "test/"))))))
8455 (native-inputs
8456 (list ruby-rubytest-cli ruby-spectroscope ruby-ae))
8457 (propagated-inputs
8458 (list ruby-tomparse ruby-yard))
8459 (synopsis "TomDoc syntax for YARD")
8460 (description "This module adds support for the TomDoc documentation format
8461to YARD, a documentation generation tool for Ruby.")
8462 (home-page "http://rubyworks.github.com/yard-tomdoc/")
8463 (license license:expat)))
8464
8465(define-public ruby-clap
8466 (package
8467 (name "ruby-clap")
8468 (version "1.0.0")
8469 (source (origin
8470 (method url-fetch)
8471 (uri (rubygems-uri "clap" version))
8472 (sha256
8473 (base32
8474 "190m05k3pca72c1h8k0fnvby15m303zi0lpb9c478ad19wqawa5q"))))
8475 (build-system ruby-build-system)
8476 ;; Clap needs cutest for running tests, but cutest needs clap.
8477 (arguments `(#:tests? #f))
8478 (synopsis "Command line argument parsing for simple applications")
8479 (description
8480 "Clap provides command line argument parsing features. It covers the
8481simple case of executing code based on the flags or parameters passed.")
8482 (home-page "https://github.com/djanowski/cutest")
8483 (license license:expat)))
8484
8485(define-public ruby-cutest
8486 (package
8487 (name "ruby-cutest")
8488 (version "1.2.2")
8489 (source (origin
8490 (method url-fetch)
8491 (uri (rubygems-uri "cutest" version))
8492 (sha256
8493 (base32
8494 "1mldhjn62g53vx4gq2qdqg2lgjvyrqxa8d0khf8347bbfgi16d32"))))
8495 (build-system ruby-build-system)
8496 (propagated-inputs
8497 (list ruby-clap))
8498 (synopsis "Run tests in separate processes")
8499 (description
8500 "Cutest runs tests in separate processes to avoid shared state.")
8501 (home-page "https://github.com/djanowski/cutest")
8502 (license license:expat)))
8503
8504(define-public ruby-pygmentize
8505 (package
8506 (name "ruby-pygmentize")
8507 (version "0.0.3")
8508 (source (origin
8509 (method url-fetch)
8510 (uri (rubygems-uri "pygmentize" version))
8511 (sha256
8512 (base32
8513 "1pxryhkiwvsz6xzda3bvqwz5z8ggzl1cdglf8qbcf4bb7akirdpb"))))
8514 (build-system ruby-build-system)
8515 (arguments
8516 `(#:phases
8517 (modify-phases %standard-phases
8518 (add-after 'unpack 'fix-pygmentize-path
8519 (lambda _
8520 (substitute* "lib/pygmentize.rb"
8521 (("\"/usr/bin/env python.*")
8522 (string-append "\"" (which "pygmentize") "\"\n")))
8523 #t))
8524 (add-after 'build 'do-not-use-vendor-directory
8525 (lambda _
8526 ;; Remove bundled pygments sources
8527 ;; FIXME: ruby-build-system does not support snippets.
8528 (delete-file-recursively "vendor")
8529 (substitute* "pygmentize.gemspec"
8530 (("\"vendor/\\*\\*/\\*\",") ""))
8531 #t)))))
8532 (inputs
8533 `(("pygments" ,python-pygments)))
8534 (native-inputs
8535 (list ruby-cutest ruby-nokogiri))
8536 (synopsis "Thin Ruby wrapper around pygmentize")
8537 (description
8538 "Pygmentize provides a simple way to call pygmentize from within a Ruby
8539application.")
8540 (home-page "https://github.com/djanowski/pygmentize")
8541 (license license:expat)))
8542
8543(define-public ruby-eventmachine
8544 (package
8545 (name "ruby-eventmachine")
8546 (version "1.2.7")
8547 (source
8548 (origin
8549 (method url-fetch)
8550 (uri (rubygems-uri "eventmachine" version))
8551 (sha256
8552 (base32
8553 "0wh9aqb0skz80fhfn66lbpr4f86ya2z5rx6gm5xlfhd05bj1ch4r"))))
8554 (build-system ruby-build-system)
8555 (arguments
8556 '(#:tests? #f)) ; test suite tries to connect to google.com
8557 (inputs
8558 (list openssl))
8559 (native-inputs
8560 (list ruby-rake-compiler))
8561 (synopsis "Single-threaded network event framework for Ruby")
8562 (description
8563 "EventMachine implements a single-threaded engine for arbitrary network
8564communications. EventMachine wraps all interactions with sockets, allowing
8565programs to concentrate on the implementation of network protocols. It can be
8566used to create both network servers and clients.")
8567 ;; The ‘official’ rubyeventmachine.com domain is now registrar-squatted.
8568 (home-page "https://github.com/eventmachine/eventmachine")
8569 (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT
8570
8571(define-public ruby-ruby-engine
8572 (package
8573 (name "ruby-ruby-engine")
8574 (version "2.0.0")
8575 (source
8576 (origin
8577 (method url-fetch)
8578 (uri (rubygems-uri "ruby_engine" version))
8579 (sha256
8580 (base32
8581 "0wqdcv8gxybp1y7kjhh18g3r9dczacs62d4ahcvyhz32bih8c9fm"))))
8582 (build-system ruby-build-system)
8583 (arguments
8584 `(#:phases
8585 (modify-phases %standard-phases
8586 (add-after 'extract-gemspec 'clean-up
8587 (lambda _
8588 (delete-file "Gemfile.lock")
8589 (substitute* "ruby_engine.gemspec"
8590 ;; Remove unnecessary imports that would entail further
8591 ;; dependencies.
8592 ((".*<rdoc.*") "")
8593 ((".*<rubygems-tasks.*") "")
8594 ;; Remove extraneous .gem file
8595 (("\"pkg/ruby_engine-[0-9.]+\\.gem\".freeze, ") "")
8596 (("\"Gemfile.lock\".freeze, ") "")
8597 ;; Soften rake dependency
8598 (("%q<rake>.freeze, \\[\"~> 10.0\"\\]")
8599 "%q<rake>.freeze, [\">= 10.0\"]")
8600 ;; Soften the rspec dependency
8601 (("%q<rspec>.freeze, \\[\"~> 2.4\"\\]")
8602 "%q<rspec>.freeze, [\">= 2.4\"]"))
8603 (substitute* "Rakefile"
8604 (("require 'rubygems/tasks'") "")
8605 (("Gem::Tasks.new") ""))
8606 ;; Remove extraneous .gem file that otherwise gets installed.
8607 (delete-file-recursively "pkg")
8608 #t)))))
8609 (native-inputs
8610 (list bundler ruby-rake ruby-rspec))
8611 (synopsis "Simplifies checking for Ruby implementation")
8612 (description
8613 "@code{ruby_engine} provides an RubyEngine class that can be used to
8614check which implementation of Ruby is in use. It can provide the interpreter
8615name and provides query methods such as @{RubyEngine.mri?}.")
8616 (home-page "https://github.com/janlelis/ruby_engine")
8617 (license license:expat)))
8618
8619(define-public ruby-turn
8620 (package
8621 (name "ruby-turn")
8622 (version "0.9.7")
8623 (source
8624 (origin
8625 (method url-fetch)
8626 (uri (rubygems-uri "turn" version))
8627 (sha256
8628 (base32
8629 "1691rc2sq04cw8mxxh340k2j04ll90kwgcy8ddrp6rligmfrf8fw"))))
8630 (build-system ruby-build-system)
8631 (arguments
8632 `(#:phases
8633 (modify-phases %standard-phases
8634 ;; Tests fail because turn changes its environment so can no longer
8635 ;; find test/unit. Instead simply test if the executable runs
8636 ;; without issue.
8637 (replace 'check
8638 (lambda _
8639 (invoke "ruby" "-Ilib" "bin/turn" "-h"))))))
8640 (propagated-inputs
8641 (list ruby-ansi ruby-minitest-4))
8642 (synopsis "Alternate set of alternative runners for MiniTest")
8643 (description
8644 "TURN provides a set of alternative runners for MiniTest which are both
8645colorful and informative. TURN displays each test on a separate line with
8646failures being displayed immediately instead of at the end of the tests. Note
8647that TURN is no longer being maintained.")
8648 (home-page "https://rubygems.org/gems/turn")
8649 (license license:expat)))
8650
8651(define-public ruby-mimemagic
8652 (package
8653 (name "ruby-mimemagic")
8654 (version "0.3.3")
8655 (source
8656 (origin
8657 (method url-fetch)
8658 (uri (rubygems-uri "mimemagic" version))
8659 (sha256
8660 (base32 "04cp5sfbh1qx82yqxn0q75c7hlcx8y1dr5g3kyzwm4mx6wi2gifw"))))
8661 (build-system ruby-build-system)
8662 (arguments
8663 '(#:phases
8664 (modify-phases %standard-phases
8665 ;; This phase breaks the tests, as it patches some of the test data.
8666 (delete 'patch-source-shebangs))))
8667 (native-inputs
8668 (list ruby-bacon))
8669 (synopsis "Ruby library for MIME detection by extension or content")
8670 (description
8671 "@acronym{MIME, Multipurpose Internet Mail Extensions} detection by
8672extension or content, using the freedesktop.org.xml shared-mime-info
8673database.")
8674 (home-page "https://github.com/minad/mimemagic")
8675 (license license:expat)))
8676
8677(define-public ruby-mime-types-data
8678 (package
8679 (name "ruby-mime-types-data")
8680 (version "3.2016.0521")
8681 (source
8682 (origin
8683 (method url-fetch)
8684 (uri (rubygems-uri "mime-types-data" version))
8685 (sha256
8686 (base32
8687 "04my3746hwa4yvbx1ranhfaqkgf6vavi1kyijjnw8w3dy37vqhkm"))))
8688 (build-system ruby-build-system)
8689 (native-inputs
8690 (list ruby-hoe))
8691 (synopsis "Registry for information about MIME media type definitions")
8692 (description
8693 "@code{mime-types-data} provides a registry for information about
8694Multipurpose Internet Mail Extensions (MIME) media type definitions. It can
8695be used with the Ruby mime-types library or other software to determine
8696defined filename extensions for MIME types, or to use filename extensions to
8697look up the likely MIME type definitions.")
8698 (home-page "https://github.com/mime-types/mime-types-data/")
8699 (license license:expat)))
8700
8701(define-public ruby-mime-types
8702 (package
8703 (name "ruby-mime-types")
8704 (version "3.1")
8705 (source
8706 (origin
8707 (method url-fetch)
8708 (uri (rubygems-uri "mime-types" version))
8709 (sha256
8710 (base32
8711 "0087z9kbnlqhci7fxh9f6il63hj1k02icq2rs0c6cppmqchr753m"))))
8712 (build-system ruby-build-system)
8713 (propagated-inputs
8714 (list ruby-mime-types-data))
8715 (native-inputs
8716 (list ruby-hoe
8717 ruby-fivemat
8718 ruby-minitest-focus
8719 ruby-minitest-rg
8720 ruby-minitest-bonus-assertions
8721 ruby-minitest-hooks))
8722 (synopsis "Library and registry for MIME content type definitions")
8723 (description "The mime-types library provides a library and registry for
8724information about Multipurpose Internet Mail Extensions (MIME) content type
8725definitions. It can be used to determine defined filename extensions for MIME
8726types, or to use filename extensions to look up the likely MIME type
8727definitions.")
8728 (home-page "https://github.com/mime-types/ruby-mime-types")
8729 (license license:expat)))
8730
8731(define-public ruby-mini-mime
8732 (package
8733 (name "ruby-mini-mime")
8734 (version "1.0.2")
8735 (source
8736 (origin
8737 (method url-fetch)
8738 (uri (rubygems-uri "mini_mime" version))
8739 (sha256
8740 (base32
8741 "1axm0rxyx3ss93wbmfkm78a6x03l8y4qy60rhkkiq0aza0vwq3ha"))))
8742 (build-system ruby-build-system)
8743 (synopsis "Lightweight mime type lookup toy")
8744 (description "This package provides a lightweight mime type lookup toy.")
8745 (home-page "https://github.com/discourse/mini_mime")
8746 (license license:expat)))
8747
8748(define-public ruby-fivemat
8749 (package
8750 (name "ruby-fivemat")
8751 (version "1.3.7")
8752 (source
8753 (origin
8754 (method url-fetch)
8755 (uri (rubygems-uri "fivemat" version))
8756 (sha256
8757 (base32
8758 "0pzlycasvwmg4bbx7plllpqnhd9zlmmff8l2w3yii86nrm2nvf9n"))))
8759 (build-system ruby-build-system)
8760 (arguments
8761 `(#:tests? #f)) ; no tests
8762 (synopsis "Each test file given its own line of dots")
8763 (description
8764 "Fivemat is a MiniTest/RSpec/Cucumber formatter that gives each test file
8765its own line of dots during testing. It aims to provide test output that is
8766neither too verbose nor too minimal.")
8767 (home-page "https://github.com/tpope/fivemat")
8768 (license license:expat)))
8769
8770(define-public ruby-sqlite3
8771 (package
8772 (name "ruby-sqlite3")
8773 (version "1.4.2")
8774 (source
8775 (origin
8776 (method url-fetch)
8777 (uri (rubygems-uri "sqlite3" version))
8778 (sha256
8779 (base32
8780 "0lja01cp9xd5m6vmx99zwn4r7s97r1w5cb76gqd8xhbm1wxyzf78"))))
8781 (build-system ruby-build-system)
8782 (arguments
8783 `(#:phases
8784 (modify-phases %standard-phases
8785 (add-before 'check 'add-gemtest-file
8786 ;; This file exists in the repository but is not distributed.
8787 (lambda _ (invoke "touch" ".gemtest"))))))
8788 (inputs
8789 (list sqlite))
8790 (native-inputs
8791 (list ruby-hoe ruby-rake-compiler ruby-mini-portile))
8792 (synopsis "Interface with SQLite3 databases")
8793 (description
8794 "This module allows Ruby programs to interface with the SQLite3 database
8795engine.")
8796 (home-page
8797 "https://github.com/sparklemotion/sqlite3-ruby")
8798 (license license:bsd-3)))
8799
8800(define-public ruby-shoulda-context
8801 (package
8802 (name "ruby-shoulda-context")
8803 (version "1.2.2")
8804 (source
8805 (origin
8806 (method url-fetch)
8807 (uri (rubygems-uri "shoulda-context" version))
8808 (sha256
8809 (base32
8810 "1l0ncsxycb4s8n47dml97kdnixw4mizljbkwqc3rh05r70csq9bc"))))
8811 (build-system ruby-build-system)
8812 (arguments
8813 `(#:phases
8814 (modify-phases %standard-phases
8815 (replace 'check
8816 (lambda _
8817 ;; Do not run tests to avoid circular dependence with rails.
8818 ;; Instead just import the library to test.
8819 (invoke "ruby" "-Ilib" "-r" "shoulda-context"))))))
8820 (synopsis "Test::Unit context framework extracted from Shoulda")
8821 (description
8822 "@code{shoulda-context} is the context framework extracted from Shoulda.
8823Instead of writing Ruby methods with lots_of_underscores, shoulda-context adds
8824context, setup, and should blocks combine to produce natural test method
8825names.")
8826 (home-page "https://github.com/thoughtbot/shoulda-context")
8827 (license license:expat)))
8828
8829(define-public ruby-shoulda-matchers
8830 (package
8831 (name "ruby-shoulda-matchers")
8832 (version "3.1.2")
8833 (source
8834 (origin
8835 (method url-fetch)
8836 (uri (rubygems-uri "shoulda-matchers" version))
8837 (sha256
8838 (base32
8839 "1zvv94pqk5b5my3w1shdz7h34xf2ldhg5k4qfdpbwi2iy0j9zw2a"))))
8840 (build-system ruby-build-system)
8841 (arguments
8842 `(#:phases
8843 (modify-phases %standard-phases
8844 (replace 'check
8845 (lambda _
8846 ;; Do not run tests to avoid circular dependence with rails. Instead
8847 ;; just import the library to test.
8848 (invoke "ruby" "-Ilib" "-r" "shoulda-matchers"))))))
8849 (propagated-inputs
8850 (list ruby-activesupport))
8851 (synopsis "Collection of testing matchers extracted from Shoulda")
8852 (description
8853 "Shoulda Matchers provides RSpec- and Minitest-compatible one-liners that
8854test common Rails functionality. These tests would otherwise be much longer,
8855more complex, and error-prone.")
8856 (home-page "https://github.com/thoughtbot/shoulda-matchers")
8857 (license license:expat)))
8858
8859(define-public ruby-shoulda-matchers-2
8860 (package
8861 (inherit ruby-shoulda-matchers)
8862 (version "2.8.0")
8863 (source (origin
8864 (method url-fetch)
8865 (uri (rubygems-uri "shoulda-matchers" version))
8866 (sha256
8867 (base32
8868 "0d3ryqcsk1n9y35bx5wxnqbgw4m8b3c79isazdjnnbg8crdp72d0"))))))
8869
8870(define-public ruby-shoulda
8871 (package
8872 (name "ruby-shoulda")
8873 (version "3.5.0")
8874 (source
8875 (origin
8876 (method url-fetch)
8877 (uri (rubygems-uri "shoulda" version))
8878 (sha256
8879 (base32
8880 "0csmf15a7mcinfq54lfa4arp0f4b2jmwva55m0p94hdf3pxnjymy"))))
8881 (build-system ruby-build-system)
8882 (arguments
8883 `(#:phases
8884 (modify-phases %standard-phases
8885 (replace 'check
8886 ;; Don't run tests to avoid circular dependence with rails. Instead
8887 ;; just import the library to test.
8888 (lambda _ (invoke "ruby" "-Ilib" "-r" "shoulda"))))))
8889 (propagated-inputs
8890 (list ruby-shoulda-context ruby-shoulda-matchers-2))
8891 (synopsis "Context framework and matchers for testing")
8892 (description
8893 "@code{shoulda} is a meta-package combining @code{shoulda-context} and
8894@code{shoulda-matchers} providing tools for writing tests.")
8895 (home-page "https://github.com/thoughtbot/shoulda")
8896 (license license:expat)))
8897
8898(define-public ruby-unf
8899 (package
8900 (name "ruby-unf")
8901 (version "0.1.4")
8902 (source
8903 (origin
8904 (method url-fetch)
8905 (uri (rubygems-uri "unf" version))
8906 (sha256
8907 (base32
8908 "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9"))))
8909 (build-system ruby-build-system)
8910 (arguments
8911 `(#:phases
8912 (modify-phases %standard-phases
8913 (add-before 'check 'add-dependency-to-bundler
8914 (lambda _
8915 ;; test-unit is required but not provided by the bundler
8916 ;; environment. This is fixed in the upstream repository but fix
8917 ;; has not been released.
8918 (substitute* "Gemfile"
8919 (("^gemspec") "gem 'test-unit'\ngemspec"))
8920 #t)))))
8921 (propagated-inputs
8922 (list ruby-unf-ext))
8923 (native-inputs
8924 (list ruby-shoulda bundler ruby-test-unit))
8925 (synopsis "Unicode Normalization Form support to Ruby and JRuby")
8926 (description
8927 "@code{ruby-unf} is a wrapper library to bring Unicode Normalization Form
8928support to both Ruby and JRuby. It uses @code{unf_ext} on CRuby and
8929@code{java.text.Normalizer} on JRuby.")
8930 (home-page "https://github.com/knu/ruby-unf")
8931 (license license:bsd-2)))
8932
8933(define-public ruby-warden
8934 (package
8935 (name "ruby-warden")
8936 (version "1.2.8")
8937 (source
8938 (origin
8939 (method url-fetch)
8940 (uri (rubygems-uri "warden" version))
8941 (sha256
8942 (base32
8943 "1fr9n9i9r82xb6i61fdw4xgc7zjv7fsdrr4k0njchy87iw9fl454"))))
8944 (build-system ruby-build-system)
8945 (arguments
8946 '(#:tests? #f)) ; No included tests
8947 (propagated-inputs
8948 (list ruby-rack))
8949 (synopsis "Rack middleware providing authentication")
8950 (description
8951 "Warden is a Rack-based middleware that provides a mechanism for
8952authentication in Ruby web applications.")
8953 (home-page "https://github.com/wardencommunity/warden")
8954 (license license:expat)))
8955
8956(define-public ruby-warden-oauth2
8957 (package
8958 (name "ruby-warden-oauth2")
8959 (version "0.0.1")
8960 (source
8961 (origin
8962 (method url-fetch)
8963 (uri (rubygems-uri "warden-oauth2" version))
8964 (sha256
8965 (base32
8966 "1z9154lvzrnnfjbjkmirh4n811nygp6pm2fa6ikr7y1ysa4zv3cz"))))
8967 (build-system ruby-build-system)
8968 (arguments
8969 '(#:test-target "spec"
8970 #:phases
8971 (modify-phases %standard-phases
8972 (add-after 'unpack 'remove-unnecessary-dependencies
8973 (lambda _
8974 (substitute* "Gemfile"
8975 ;; All of these gems relate to development, and are unnecessary
8976 ;; when running the tests
8977 (("gem 'guard-bundler'") "")
8978 (("gem 'guard'") "")
8979 (("gem 'guard-rspec'") "")
8980 (("gem 'rb-fsevent'") "")
8981 (("gem 'pry'") "")
8982 (("gem 'growl'") ""))
8983 #t))
8984 ;; The test suite doesn't work with rspec@2, and this is incompatible
8985 ;; with the current version of Rake, so invoke Rspec directly
8986 (replace 'check
8987 (lambda* (#:key tests? #:allow-other-keys)
8988 (when tests?
8989 (invoke "bundle" "exec" "rspec"))
8990 #t)))))
8991 (propagated-inputs
8992 (list ruby-warden))
8993 (native-inputs
8994 (list bundler ruby-rspec-2 ruby-rack-test))
8995 (synopsis "OAuth 2.0 strategies for Warden")
8996 (description
8997 "This library extends Warden to support OAuth 2.0 authorized API
8998requests.")
8999 (home-page "https://github.com/opperator/warden-oauth2")
9000 (license license:expat)))
9001
9002(define-public ruby-webmock
9003 (package
9004 (name "ruby-webmock")
9005 (version "3.11.2")
9006 (source
9007 (origin
9008 (method url-fetch)
9009 (uri (rubygems-uri "webmock" version))
9010 (sha256
9011 (base32
9012 "1hdlbvfw316lkz251qnfk79drmaay7l51kidvicz41nhvw12xz8v"))))
9013 (build-system ruby-build-system)
9014 (native-inputs
9015 (list bundler ruby-rspec))
9016 (propagated-inputs
9017 (list ruby-addressable ruby-crack ruby-hashdiff))
9018 (synopsis "Allows stubbing and setting expectations on HTTP requests")
9019 (description
9020 "WebMock allows stubbing HTTP requests and setting expectations on HTTP
9021requests. This is useful when testing software.")
9022 (home-page "https://github.com/bblimke/webmock")
9023 (license license:expat)))
9024
9025(define-public ruby-webmock-2
9026 (package
9027 (inherit ruby-webmock)
9028 (name "ruby-webmock")
9029 (version "2.3.2")
9030 (source
9031 (origin
9032 (method url-fetch)
9033 (uri (rubygems-uri "webmock" version))
9034 (sha256
9035 (base32
9036 "04hkcqsmbfnp8g237pisnc834vpgildklicbjbyikqg0bg1rwcy5"))))))
9037
9038(define-public ruby-unicode-display-width
9039 (package
9040 (name "ruby-unicode-display-width")
9041 (version "1.6.0")
9042 (source
9043 (origin
9044 (method url-fetch)
9045 (uri (rubygems-uri "unicode-display_width" version))
9046 (sha256
9047 (base32
9048 "08kfiniak1pvg3gn5k6snpigzvhvhyg7slmm0s2qx5zkj62c1z2w"))))
9049 (build-system ruby-build-system)
9050 (arguments
9051 '(;; Test data not included.
9052 #:tests? #f))
9053 (synopsis "Determine the monospace display width of Ruby strings")
9054 (description
9055 "@code{Unicode::DisplayWidth} is a Ruby library which can determine the
9056display width of strings in Ruby.")
9057 (home-page "https://github.com/janlelis/unicode-display_width")
9058 (license license:expat)))
9059
9060;; There is another gem called 'ruby-version' so we use an underscore in this
9061;; name
9062(define-public ruby_version
9063 (package
9064 (name "ruby_version")
9065 (version "1.0.2")
9066 (source
9067 (origin
9068 (method url-fetch)
9069 (uri (rubygems-uri "ruby_version" version))
9070 (sha256
9071 (base32
9072 "0lvc7bd5ps3w2vq2wb02i0pi3vfcx2rnckx2ix4rjym1qf52kb2j"))))
9073 (build-system ruby-build-system)
9074 (arguments
9075 `(#:phases
9076 (modify-phases %standard-phases
9077 (add-before 'check 'fix-dependencies
9078 (lambda _
9079 ;; Remove the Gemfile.lock, as we want to use Guix packages at
9080 ;; whatever versions.
9081 (delete-file "Gemfile.lock")
9082 ;; Remove the included gem files as they unnecessary.
9083 (delete-file-recursively "pkg/")
9084 ;; Accept any version of rake, rdoc and rspec
9085 (substitute* "ruby_version.gemspec"
9086 (("%q<rake.*") "%q<rake>)\n")
9087 (("%q<rdoc.*") "%q<rdoc>)\n")
9088 (("%q<rspec.*") "%q<rspec>)\n"))
9089 ;; Do not use bundler.
9090 (substitute* "Rakefile"
9091 (("Bundler\\.setup.*") "nil\n"))
9092 #t)))))
9093 (native-inputs
9094 (list ruby-rdoc ruby-rspec ruby-rubygems-tasks))
9095 (synopsis "Ruby library to help check the Ruby version")
9096 (description "@code{ruby_version} provides a @code{RubyVersion} module to simplify
9097checking for the right Ruby version in software.")
9098 (home-page "https://github.com/janlelis/ruby_version")
9099 (license license:expat)))
9100
9101(define-public ruby-websocket-driver
9102 (package
9103 (name "ruby-websocket-driver")
9104 (version "0.7.1")
9105 (source
9106 (origin
9107 (method url-fetch)
9108 (uri (rubygems-uri "websocket-driver" version))
9109 (sha256
9110 (base32 "1bxamwqldmy98hxs5pqby3andws14hl36ch78g0s81gaz9b91nj2"))))
9111 (build-system ruby-build-system)
9112 (arguments
9113 '(#:tests? #f)) ; no included tests
9114 (propagated-inputs
9115 (list ruby-websocket-extensions))
9116 (synopsis "WebSocket protocol handler with pluggable I/O")
9117 (description
9118 "@code{websocket-driver} provides a complete implementation of the
9119WebSocket protocols that can be hooked up to any TCP library")
9120 (home-page "https://github.com/faye/websocket-driver-ruby")
9121 (license license:expat)))
9122
9123(define-public ruby-websocket-extensions
9124 (package
9125 (name "ruby-websocket-extensions")
9126 (version "0.1.3")
9127 (source
9128 (origin
9129 (method url-fetch)
9130 (uri (rubygems-uri "websocket-extensions" version))
9131 (sha256
9132 (base32
9133 "034sdr7fd34yag5l6y156rkbhiqgmy395m231dwhlpcswhs6d270"))))
9134 (build-system ruby-build-system)
9135 (arguments
9136 '(;; No included tests
9137 #:tests? #f))
9138 (synopsis "Generic extension manager for WebSocket connections")
9139 (description
9140 "@code{websocket-extensions} provides a container for registering
9141extension plugins.")
9142 (home-page "https://github.com/faye/websocket-extensions-ruby")
9143 (license license:expat)))
9144
9145(define-public ruby-domain-name
9146 (package
9147 (name "ruby-domain-name")
9148 (version "0.5.20190701")
9149 (source
9150 (origin
9151 (method url-fetch)
9152 (uri (rubygems-uri "domain_name" version))
9153 (sha256
9154 (base32 "0lcqjsmixjp52bnlgzh4lg9ppsk52x9hpwdjd53k8jnbah2602h0"))))
9155 (build-system ruby-build-system)
9156 (arguments
9157 `(#:phases
9158 (modify-phases %standard-phases
9159 (add-before 'check 'fix-versions
9160 (lambda _
9161 ;; Fix NameError that appears to already be fixed upstream.
9162 (substitute* "Rakefile"
9163 (("DomainName::VERSION")
9164 "Bundler::GemHelper.gemspec.version"))
9165 ;; Loosen unnecessarily strict test-unit version specification.
9166 (substitute* "domain_name.gemspec"
9167 (("<test-unit>.freeze, \\[\\\"~> 2.5.5") "<test-unit>, [\">0"))
9168 #t)))))
9169 (propagated-inputs
9170 (list ruby-unf))
9171 (native-inputs
9172 (list ruby-shoulda bundler ruby-test-unit))
9173 (synopsis "Domain name manipulation library")
9174 (description
9175 "@code{domain_name} is a Domain name manipulation library. It parses a
9176domain name ready for extracting the registered domain and TLD (Top Level
9177Domain). It can also be used for cookie domain validation based on the Public
9178Suffix List.")
9179 (home-page "https://github.com/knu/ruby-domain_name")
9180 (license license:bsd-2)))
9181
9182(define-public ruby-http-cookie
9183 (package
9184 (name "ruby-http-cookie")
9185 (version "1.0.3")
9186 (source
9187 (origin
9188 (method url-fetch)
9189 (uri (rubygems-uri "http-cookie" version))
9190 (sha256
9191 (base32
9192 "004cgs4xg5n6byjs7qld0xhsjq3n6ydfh897myr2mibvh6fjc49g"))))
9193 (build-system ruby-build-system)
9194 (arguments
9195 `(#:phases
9196 (modify-phases %standard-phases
9197 (add-before 'check 'add-dependency-to-bundler
9198 (lambda _
9199 ;; Fix NameError
9200 (substitute* "Rakefile"
9201 (("HTTP::Cookie::VERSION")
9202 "Bundler::GemHelper.gemspec.version"))
9203 #t)))))
9204 (propagated-inputs
9205 (list ruby-domain-name))
9206 (native-inputs
9207 `(("rubysimplecov" ,ruby-simplecov)
9208 ("bundler" ,bundler)
9209 ("ruby-sqlite3" ,ruby-sqlite3)
9210 ("ruby-test-unit" ,ruby-test-unit)))
9211 (synopsis "Handle HTTP Cookies based on RFC 6265")
9212 (description
9213 "@code{HTTP::Cookie} is a Ruby library to handle HTTP Cookies based on
9214RFC 6265. It has been designed with security, standards compliance and
9215compatibility in mind, to behave just the same as today's major web browsers.
9216It has built-in support for the legacy @code{cookies.txt} and
9217@code{cookies.sqlite} formats of Mozilla Firefox.")
9218 (home-page "https://github.com/sparklemotion/http-cookie")
9219 (license license:expat)))
9220
9221(define-public ruby-httpclient
9222 (package
9223 (name "ruby-httpclient")
9224 (version "2.8.3")
9225 (source
9226 (origin
9227 (method url-fetch)
9228 (uri (rubygems-uri "httpclient" version))
9229 (sha256
9230 (base32
9231 "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99"))))
9232 (build-system ruby-build-system)
9233 (arguments
9234 '(;; TODO: Some tests currently fail
9235 ;; ------
9236 ;; 211 tests, 729 assertions, 13 failures, 4 errors, 0 pendings,
9237 ;; 2 omissions, 0 notifications
9238 ;; 91.866% passed
9239 ;; ------
9240 ;; 6.49 tests/s, 22.41 assertions/s
9241 #:tests? #f
9242 #:phases
9243 (modify-phases %standard-phases
9244 (replace 'check
9245 (lambda* (#:key tests? #:allow-other-keys)
9246 (if tests?
9247 (invoke "ruby"
9248 "-Ilib"
9249 "test/runner.rb")
9250 #t))))))
9251 (native-inputs
9252 (list ruby-rack))
9253 (synopsis
9254 "Make HTTP requests with support for HTTPS, Cookies, authentication and more")
9255 (description
9256 "The @code{httpclient} ruby library provides functionality related to
9257HTTP. Compared to the @code{net/http} library, @{httpclient} also provides
9258Cookie, multithreading and authentication (digest, NTLM) support.
9259
9260Also provided is a @command{httpclient} command, which can perform HTTP
9261requests either using arguments or with an interactive prompt.")
9262 (home-page "https://github.com/nahi/httpclient")
9263 (license license:ruby)))
9264
9265(define-public ruby-ansi
9266 (package
9267 (name "ruby-ansi")
9268 (version "1.5.0")
9269 (source
9270 (origin
9271 (method git-fetch)
9272 ;; Fetch from GitHub as the gem does not contain testing code.
9273 (uri (git-reference
9274 (url "https://github.com/rubyworks/ansi")
9275 (commit version)))
9276 (file-name (git-file-name name version))
9277 (sha256
9278 (base32
9279 "1wsz7xxwl3vkh277jb7fd7akqnqqgbvalxzpjwniiqk8ghfprbi5"))))
9280 (build-system ruby-build-system)
9281 (arguments
9282 `(#:phases
9283 (modify-phases %standard-phases
9284 ;; Disable testing to break the cycle ansi, ae, ansi, as well as the
9285 ;; cycle ansi, qed, ansi. Instead simply test that the library can
9286 ;; be require'd.
9287 (replace 'check
9288 (lambda _
9289 (invoke "ruby" "-Ilib" "-r" "ansi")))
9290 (add-before 'validate-runpath 'replace-broken-symlink
9291 (lambda* (#:key outputs #:allow-other-keys)
9292 (let* ((out (assoc-ref outputs "out"))
9293 (file (string-append
9294 out "/lib/ruby/vendor_ruby/gems/ansi-"
9295 ,version "/lib/ansi.yml")))
9296 ;; XXX: This symlink is broken since ruby 2.4.
9297 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
9298 (delete-file file)
9299 (symlink "../.index" file)
9300 #t))))))
9301 (synopsis "ANSI escape code related libraries")
9302 (description
9303 "This package is a collection of ANSI escape code related libraries
9304enabling ANSI colorization and stylization of console output. Included in the
9305library are the @code{Code} module, which defines ANSI codes as constants and
9306methods, a @code{Mixin} module for including color methods, a @code{Logger}, a
9307@code{ProgressBar}, and a @code{String} subclass. The library also includes a
9308@code{Terminal} module which provides information about the current output
9309device.")
9310 (home-page "https://rubyworks.github.io/ansi/")
9311 (license license:bsd-2)))
9312
9313(define-public ruby-systemu
9314 (package
9315 (name "ruby-systemu")
9316 (version "2.6.5")
9317 (source
9318 (origin
9319 (method url-fetch)
9320 (uri (rubygems-uri "systemu" version))
9321 (sha256
9322 (base32
9323 "0gmkbakhfci5wnmbfx5i54f25j9zsvbw858yg3jjhfs5n4ad1xq1"))))
9324 (build-system ruby-build-system)
9325 (arguments
9326 `(#:phases
9327 (modify-phases %standard-phases
9328 (add-before 'check 'set-version
9329 (lambda _
9330 (setenv "VERSION" ,version)
9331 #t)))))
9332 (synopsis "Capture of stdout/stderr and handling of child processes")
9333 (description
9334 "Systemu can be used on any platform to return status, stdout, and stderr
9335of any command. Unlike other methods like @code{open3} and @code{popen4}
9336there is no danger of full pipes or threading issues hanging your process or
9337subprocess.")
9338 (home-page "https://github.com/ahoward/systemu")
9339 (license license:ruby)))
9340
9341(define-public ruby-bio-commandeer
9342 (package
9343 (name "ruby-bio-commandeer")
9344 (version "0.4.0")
9345 (source
9346 (origin
9347 (method url-fetch)
9348 (uri (rubygems-uri "bio-commandeer" version))
9349 (sha256
9350 (base32
9351 "0khpfw1yl5l3d2m8nxpkk32ybc4c3pa5hic3agd160jdfjjjnlni"))))
9352 (build-system ruby-build-system)
9353 (arguments
9354 `(#:phases
9355 (modify-phases %standard-phases
9356 (replace 'check
9357 ;; Run test without calling 'rake' so that jeweler is
9358 ;; not required as an input.
9359 (lambda _
9360 (invoke "rspec" "spec/bio-commandeer_spec.rb"))))))
9361 (propagated-inputs
9362 (list ruby-bio-logger ruby-systemu))
9363 (native-inputs
9364 (list bundler ruby-rspec))
9365 (synopsis "Simplified running of shell commands from within Ruby")
9366 (description
9367 "Bio-commandeer provides an opinionated method of running shell commands
9368from within Ruby. The advantage of bio-commandeer over other methods of
9369running external commands is that when something goes wrong, messages printed
9370to the @code{STDOUT} and @code{STDERR} streams are reported, giving extra
9371detail to ease debugging.")
9372 (home-page "https://github.com/wwood/bioruby-commandeer")
9373 (license license:expat)))
9374
9375(define-public ruby-rubytest
9376 (package
9377 (name "ruby-rubytest")
9378 (version "0.8.1")
9379 (source
9380 (origin
9381 (method url-fetch)
9382 (uri (rubygems-uri "rubytest" version))
9383 (sha256
9384 (base32
9385 "19jydsdnkl81i9dhdcr4dc34j0ilm68ff2ngnka1hi38xiw4p5qz"))))
9386 (build-system ruby-build-system)
9387 (arguments
9388 ;; Disable regular testing to break the cycle rubytest, qed, brass,
9389 ;; rubytest, as well as the cycle rubytest, qed, ansi, rubytest. Instead
9390 ;; simply test that the library can be require'd.
9391 `(#:phases
9392 (modify-phases %standard-phases
9393 (replace 'check
9394 (lambda _
9395 (invoke "ruby" "-Ilib" "-r" "rubytest"))))))
9396 (propagated-inputs
9397 (list ruby-ansi))
9398 (synopsis "Universal test harness for Ruby")
9399 (description
9400 "Rubytest is a testing meta-framework for Ruby. It can handle any
9401compliant test framework and can run tests from multiple frameworks in a
9402single pass.")
9403 (home-page "https://rubyworks.github.io/rubytest")
9404 (license license:bsd-2)))
9405
9406(define-public ruby-brass
9407 (package
9408 (name "ruby-brass")
9409 (version "1.2.1")
9410 (source
9411 (origin
9412 (method url-fetch)
9413 (uri (rubygems-uri "brass" version))
9414 (sha256
9415 (base32
9416 "154lp8rp1vmg60ri1j4cb8hqlw37z7bn575h899v8hzxwi11sxka"))))
9417 (build-system ruby-build-system)
9418 (arguments
9419 ;; Disable tests to break the cycle brass, lemon, ae, qed, brass.
9420 ;; Instead simply test that the library can be require'd.
9421 `(#:phases
9422 (modify-phases %standard-phases
9423 (replace 'check
9424 (lambda _
9425 (invoke "ruby" "-Ilib" "-r" "brass"))))))
9426 (synopsis "Basic foundational assertions framework")
9427 (description
9428 "BRASS (Bare-Metal Ruby Assertion System Standard) is a basic
9429foundational assertions framework for other assertion and test frameworks to
9430make use of.")
9431 (home-page "https://rubyworks.github.io/brass")
9432 (license license:bsd-2)))
9433
9434(define-public ruby-qed
9435 (package
9436 (name "ruby-qed")
9437 (version "2.9.2")
9438 (source
9439 (origin
9440 (method url-fetch)
9441 (uri (rubygems-uri "qed" version))
9442 (sha256
9443 (base32
9444 "03h4lmlxpcya8j7s2cnyscqlx8v3xl1xgsw5y1wk1scxcgz2vbmr"))))
9445 (build-system ruby-build-system)
9446 (arguments
9447 ;; Disable testing to break the cycle qed, ansi, qed, among others.
9448 ;; Instead simply test that the executable runs using --copyright.
9449 `(#:phases
9450 (modify-phases %standard-phases
9451 (replace 'check
9452 (lambda _
9453 (invoke "ruby" "-Ilib" "bin/qed" "--copyright"))))))
9454 (propagated-inputs
9455 (list ruby-ansi ruby-brass))
9456 (synopsis "Test framework utilizing literate programming techniques")
9457 (description
9458 "@dfn{Quality Ensured Demonstrations} (QED) is a test framework for
9459@dfn{Test Driven Development} (TDD) and @dfn{Behaviour Driven
9460Development} (BDD) utilizing Literate Programming techniques. QED sits
9461somewhere between lower-level testing tools like @code{Test::Unit} and
9462requirement specifications systems like Cucumber.")
9463 (home-page "https://rubyworks.github.io/qed")
9464 (license license:bsd-2)))
9465
9466(define-public ruby-que
9467 (package
9468 (name "ruby-que")
9469 (version "1.0.0.beta3")
9470 (source
9471 (origin
9472 (method url-fetch)
9473 (uri (rubygems-uri "que" version))
9474 (sha256
9475 (base32
9476 "0gr9pb814d4qj3ds98g6cjrdk7wv0yg8aqbm7c1lmgl87jkg8q04"))))
9477 (build-system ruby-build-system)
9478 (arguments
9479 '(#:tests? #f)) ; No included tests
9480 (synopsis "Job queue using PostgreSQL written in Ruby")
9481 (description
9482 "This package provides a job queue that uses PostgreSQL for storing jobs
9483and locking between worker processes.")
9484 (home-page "https://github.com/chanks/que")
9485 (license license:expat)))
9486
9487(define-public ruby-ae
9488 (package
9489 (name "ruby-ae")
9490 (version "1.8.2")
9491 (source
9492 (origin
9493 (method git-fetch)
9494 ;; Fetch from github so tests are included.
9495 (uri (git-reference
9496 (url "https://github.com/rubyworks/ae")
9497 (commit version)))
9498 (file-name (git-file-name name version))
9499 (sha256
9500 (base32
9501 "11299jj5ma8mi7b4majkyjy70y6zlqpgl8aql1c5lvfjavlpwmlp"))))
9502 (build-system ruby-build-system)
9503 (arguments
9504 `(#:phases
9505 (modify-phases %standard-phases
9506 (replace 'check
9507 (lambda _ (invoke "qed")))
9508 (add-before 'validate-runpath 'replace-broken-symlink
9509 (lambda* (#:key outputs #:allow-other-keys)
9510 (let* ((out (assoc-ref outputs "out"))
9511 (file (string-append
9512 out "/lib/ruby/vendor_ruby/gems/ae-"
9513 ,version "/lib/ae.yml")))
9514 ;; XXX: This symlink is broken since ruby 2.4.
9515 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
9516 (delete-file file)
9517 (symlink "../.index" file)
9518 #t))))))
9519 (propagated-inputs
9520 (list ruby-ansi))
9521 (native-inputs
9522 (list ruby-qed))
9523 (synopsis "Assertions library")
9524 (description
9525 "Assertive Expressive (AE) is an assertions library specifically designed
9526for reuse by other test frameworks.")
9527 (home-page "https://rubyworks.github.io/ae/")
9528 (license license:bsd-2)))
9529
9530(define-public ruby-lemon
9531 (package
9532 (name "ruby-lemon")
9533 (version "0.9.1")
9534 (source
9535 (origin
9536 (method url-fetch)
9537 (uri (rubygems-uri "lemon" version))
9538 (sha256
9539 (base32
9540 "0gqhpgjavgpvx23rqpfqcv3d5bs8gc7lr9yvj8kxgp7mfbdc2jcm"))))
9541 (build-system ruby-build-system)
9542 (arguments
9543 `(#:phases
9544 (modify-phases %standard-phases
9545 (replace 'check (lambda _ (invoke "qed"))))))
9546 (propagated-inputs
9547 (list ruby-ae ruby-ansi ruby-rubytest))
9548 (native-inputs
9549 (list ruby-qed))
9550 (synopsis "Test framework correlating code structure and test unit")
9551 (description
9552 "Lemon is a unit testing framework that enforces highly formal
9553case-to-class and unit-to-method test construction. This enforcement can help
9554focus concern on individual units of behavior.")
9555 (home-page "https://rubyworks.github.io/lemon")
9556 (license license:bsd-2)))
9557
9558(define-public ruby-rubytest-cli
9559 (package
9560 (name "ruby-rubytest-cli")
9561 (version "0.2.0")
9562 (source
9563 (origin
9564 (method url-fetch)
9565 (uri (rubygems-uri "rubytest-cli" version))
9566 (sha256
9567 (base32
9568 "0n7hv4k1ba4fm3i98c6ydbsqhkxgbp52mhi70ba1x3mqzfvk438p"))))
9569 (build-system ruby-build-system)
9570 (arguments
9571 `(#:tests? #f)) ; no tests
9572 (propagated-inputs
9573 (list ruby-ansi ruby-rubytest))
9574 (synopsis "Command-line interface for rubytest")
9575 (description
9576 "Rubytest CLI is a command-line interface for running tests for
9577Rubytest-based test frameworks. It provides the @code{rubytest} executable.")
9578 (home-page "https://rubyworks.github.io/rubytest-cli")
9579 (license license:bsd-2)))
9580
9581(define-public ruby-hashery
9582 (package
9583 (name "ruby-hashery")
9584 (version "2.1.2")
9585 (source
9586 (origin
9587 (method url-fetch)
9588 (uri (rubygems-uri "hashery" version))
9589 (sha256
9590 (base32
9591 "0qj8815bf7q6q7llm5rzdz279gzmpqmqqicxnzv066a020iwqffj"))))
9592 (build-system ruby-build-system)
9593 (arguments
9594 `(#:phases
9595 (modify-phases %standard-phases
9596 (replace 'check
9597 (lambda _
9598 (invoke "qed")
9599 (invoke "rubytest" "-Ilib" "-Itest" "test/"))))))
9600 (native-inputs
9601 (list ruby-rubytest-cli ruby-qed ruby-lemon))
9602 (synopsis "Hash-like classes with extra features")
9603 (description
9604 "The Hashery is a tight collection of @code{Hash}-like classes.
9605Included are the auto-sorting @code{Dictionary} class, the efficient
9606@code{LRUHash}, the flexible @code{OpenHash} and the convenient
9607@code{KeyHash}. Nearly every class is a subclass of the @code{CRUDHash} which
9608defines a CRUD (Create, Read, Update and Delete) model on top of Ruby's
9609standard @code{Hash} making it possible to subclass and augment to fit any
9610specific use case.")
9611 (home-page "https://rubyworks.github.io/hashery")
9612 (license license:bsd-2)))
9613
9614(define-public ruby-rc4
9615 (package
9616 (name "ruby-rc4")
9617 (version "0.1.5")
9618 (source
9619 (origin
9620 (method url-fetch)
9621 (uri (rubygems-uri "ruby-rc4" version))
9622 (sha256
9623 (base32
9624 "00vci475258mmbvsdqkmqadlwn6gj9m01sp7b5a3zd90knil1k00"))))
9625 (build-system ruby-build-system)
9626 (arguments
9627 `(#:phases
9628 (modify-phases %standard-phases
9629 (replace 'check
9630 (lambda _
9631 (invoke "rspec" "spec/rc4_spec.rb"))))))
9632 (native-inputs
9633 (list ruby-rspec-2))
9634 (synopsis "Implementation of the RC4 algorithm")
9635 (description
9636 "RubyRC4 is a pure Ruby implementation of the RC4 algorithm.")
9637 (home-page "https://github.com/caiges/Ruby-RC4")
9638 (license license:expat)))
9639
9640(define-public ruby-afm
9641 (package
9642 (name "ruby-afm")
9643 (version "0.2.2")
9644 (source
9645 (origin
9646 (method url-fetch)
9647 (uri (rubygems-uri "afm" version))
9648 (sha256
9649 (base32
9650 "06kj9hgd0z8pj27bxp2diwqh6fv7qhwwm17z64rhdc4sfn76jgn8"))))
9651 (build-system ruby-build-system)
9652 (native-inputs
9653 (list bundler))
9654 (synopsis "Read Adobe Font Metrics (afm) files")
9655 (description
9656 "This library provides methods to read @dfn{Adobe Font Metrics} (afm)
9657files and use the data therein.")
9658 (home-page "https://github.com/halfbyte/afm")
9659 (license license:expat)))
9660
9661(define-public ruby-ascii85
9662 (package
9663 (name "ruby-ascii85")
9664 (version "1.0.3")
9665 (source
9666 (origin
9667 (method url-fetch)
9668 (uri (rubygems-uri "Ascii85" version))
9669 (sha256
9670 (base32
9671 "0658m37jjjn6drzqg1gk4p6c205mgp7g1jh2d00n4ngghgmz5qvs"))))
9672 (build-system ruby-build-system)
9673 (native-inputs
9674 (list bundler))
9675 (synopsis "Encode and decode Ascii85 binary-to-text encoding")
9676 (description
9677 "This library provides methods to encode and decode Ascii85
9678binary-to-text encoding. The main modern use of Ascii85 is in PostScript and
9679@dfn{Portable Document Format} (PDF) file formats.")
9680 (home-page "https://github.com/datawraith/ascii85gem")
9681 (license license:expat)))
9682
9683(define-public ruby-ttfunk
9684 (package
9685 (name "ruby-ttfunk")
9686 (version "1.6.2.1")
9687 (source
9688 (origin
9689 (method git-fetch)
9690 ;; fetch from github as the gem does not contain testing code
9691 (uri (git-reference
9692 (url "https://github.com/prawnpdf/ttfunk")
9693 (commit version)))
9694 (file-name (git-file-name name version))
9695 (sha256
9696 (base32
9697 "0rsf4j6s97wbcnjbvmmh6xrc7imw4g9lrlcvn945wh400lc8r53z"))))
9698 (build-system ruby-build-system)
9699 (arguments
9700 `(#:test-target "spec"
9701 #:phases
9702 (modify-phases %standard-phases
9703 (add-before 'build 'remove-ssh
9704 (lambda _
9705 ;; remove dependency on an ssh key pair that doesn't exist
9706 (substitute* "ttfunk.gemspec"
9707 (("spec.signing_key.*") ""))
9708 #t))
9709 (add-before 'check 'remove-rubocop
9710 (lambda _
9711 ;; remove rubocop as a dependency as not needed for testing
9712 (substitute* "ttfunk.gemspec"
9713 (("spec.add_development_dependency\\('rubocop'.*") ""))
9714 (substitute* "Rakefile"
9715 (("require 'rubocop/rake_task'") "")
9716 (("RuboCop::RakeTask.new") ""))
9717 #t)))))
9718 (native-inputs
9719 (list ruby-rspec ruby-yard bundler))
9720 (synopsis "Font metrics parser for the Prawn PDF generator")
9721 (description
9722 "TTFunk is a TrueType font parser written in pure Ruby. It is used as
9723part of the Prawn PDF generator.")
9724 (home-page "https://github.com/prawnpdf/ttfunk")
9725 ;; From the README: "Matz's terms for Ruby, GPLv2, or GPLv3. See LICENSE
9726 ;; for details."
9727 (license %prawn-project-licenses)))
9728
9729(define-public ruby-puma
9730 (package
9731 (name "ruby-puma")
9732 (version "3.9.1")
9733 (source
9734 (origin
9735 (method git-fetch)
9736 ;; Fetch from GitHub because distributed gem does not contain tests.
9737 (uri (git-reference
9738 (url "https://github.com/puma/puma")
9739 (commit (string-append "v" version))))
9740 (file-name (git-file-name name version))
9741 (sha256
9742 (base32
9743 "1kj75k81iik3aj73pkc9ixj9rwf95ipkyma65n28m64dgw02qi1f"))))
9744 (build-system ruby-build-system)
9745 (arguments
9746 `(#:tests? #f ; Tests require an out-dated version of minitest.
9747 #:phases
9748 (modify-phases %standard-phases
9749 (add-before 'build 'fix-gemspec
9750 (lambda _
9751 (substitute* "puma.gemspec"
9752 (("git ls-files") "find * |sort"))
9753 #t)))))
9754 (synopsis "Simple, concurrent HTTP server for Ruby/Rack")
9755 (description
9756 "Puma is a simple, fast, threaded, and highly concurrent HTTP 1.1 server
9757for Ruby/Rack applications. Puma is intended for use in both development and
9758production environments. In order to get the best throughput, it is highly
9759recommended that you use a Ruby implementation with real threads like Rubinius
9760or JRuby.")
9761 (home-page "https://puma.io/")
9762 (license license:expat)))
9763
9764(define-public ruby-hoe-git
9765 (package
9766 (name "ruby-hoe-git")
9767 (version "1.6.0")
9768 (source
9769 (origin
9770 (method url-fetch)
9771 (uri (rubygems-uri "hoe-git" version))
9772 (sha256
9773 (base32
9774 "10jmmbjm0lkglwxbn4rpqghgg1ipjxrswm117n50adhmy8yij650"))))
9775 (build-system ruby-build-system)
9776 (propagated-inputs
9777 (list ruby-hoe))
9778 (synopsis "Hoe plugins for tighter Git integration")
9779 (description
9780 "This package provides a set of Hoe plugins for tighter Git integration.
9781It provides tasks to automate release tagging and pushing and changelog
9782generation.")
9783 (home-page "https://github.com/jbarnette/hoe-git")
9784 (license license:expat)))
9785
9786(define-public ruby-hoe-markdown
9787 (package
9788 (name "ruby-hoe-markdown")
9789 (version "1.4.0")
9790 (home-page "https://github.com/flavorjones/hoe-markdown")
9791 (source
9792 (origin
9793 (method git-fetch)
9794 (uri (git-reference
9795 (url home-page)
9796 (commit (string-append "v" version))))
9797 (file-name (git-file-name name version))
9798 (sha256
9799 (base32 "0wb0yjdx9gx9r0cahpx42pblvglgh1i9pdfxjavq7f40nan2g076"))))
9800 (build-system ruby-build-system)
9801 (arguments
9802 '(#:test-target "spec"
9803 #:phases (modify-phases %standard-phases
9804 (add-before 'check 'disable-bundler-dependency
9805 (lambda _
9806 (substitute* "spec/spec_helper.rb"
9807 (("require.*bundler/setup.*")
9808 "")))))))
9809 (native-inputs
9810 (list ruby-rspec))
9811 (propagated-inputs
9812 (list ruby-rake))
9813 (synopsis "Hoe plugin with Markdown helpers")
9814 (description
9815 "This package provides a Hoe plugin with various Markdown helpers, which
9816can be used to e.g. hyperlink Markdown documentation between project files.")
9817 (license license:expat)))
9818
9819(define-public ruby-sequel
9820 (package
9821 (name "ruby-sequel")
9822 (version "5.47.0")
9823 (source
9824 (origin
9825 (method url-fetch)
9826 (uri (rubygems-uri "sequel" version))
9827 (sha256
9828 (base32
9829 "03pmhj4kc3ga75wy397l57bvd18jxxmrk3qsznjw93b993qgvj3z"))))
9830 (build-system ruby-build-system)
9831 (arguments
9832 '(#:tests? #f)) ; Avoid dependency loop with ruby-minitest-hooks.
9833 (synopsis "Database toolkit for Ruby")
9834 (description "Sequel provides thread safety, connection pooling and a
9835concise DSL for constructing SQL queries and table schemas. It includes a
9836comprehensive ORM layer for mapping records to Ruby objects and handling
9837associated records.")
9838 (home-page "https://sequel.jeremyevans.net")
9839 (license license:expat)))
9840
9841(define-public ruby-timecop
9842 (package
9843 (name "ruby-timecop")
9844 (version "0.9.1")
9845 (source
9846 (origin
9847 (method url-fetch)
9848 (uri (rubygems-uri "timecop" version))
9849 (sha256
9850 (base32
9851 "0d7mm786180v4kzvn1f77rhfppsg5n0sq2bdx63x9nv114zm8jrp"))))
9852 (build-system ruby-build-system)
9853 (arguments
9854 `(#:phases
9855 (modify-phases %standard-phases
9856 (add-before 'check 'set-check-rubylib
9857 (lambda _
9858 ;; Set RUBYLIB so timecop tests finds its own lib.
9859 (setenv "RUBYLIB" "lib")
9860 #t)))))
9861 (native-inputs
9862 (list bundler ruby-minitest-rg ruby-mocha ruby-activesupport))
9863 (synopsis "Test mocks for time-dependent functions")
9864 (description
9865 "Timecop provides \"time travel\" and \"time freezing\" capabilities,
9866making it easier to test time-dependent code. It provides a unified method to
9867mock @code{Time.now}, @code{Date.today}, and @code{DateTime.now} in a single
9868call.")
9869 (home-page "https://github.com/travisjeffery/timecop")
9870 (license license:expat)))
9871
9872(define-public ruby-concurrent
9873 (package
9874 (name "ruby-concurrent")
9875 (version "1.1.5")
9876 (source
9877 (origin
9878 (method git-fetch)
9879 ;; Download from GitHub because the rubygems version does not contain
9880 ;; Rakefile.
9881 (uri (git-reference
9882 (url "https://github.com/ruby-concurrency/concurrent-ruby")
9883 (commit (string-append "v" version))))
9884 (file-name (git-file-name name version))
9885 (sha256
9886 (base32
9887 "193q2k47vk7qdvv9hlhmmdxgy91xl4imapyk1ijdg9vgf46knyzj"))))
9888 (build-system ruby-build-system)
9889 (arguments
9890 `(#:test-target "ci"
9891 #:phases
9892 (modify-phases %standard-phases
9893 (add-before 'replace-git-ls-files 'remove-extra-gemspecs
9894 (lambda _
9895 ;; Delete extra gemspec files so 'first-gemspec' chooses the
9896 ;; correct one.
9897 (delete-file "concurrent-ruby-edge.gemspec")
9898 (delete-file "concurrent-ruby-ext.gemspec")
9899 #t))
9900 (replace 'replace-git-ls-files
9901 (lambda _
9902 ;; XXX: The default substitution made by this phase is not fully
9903 ;; compatible with "git ls-files". The latter produces file names
9904 ;; such as "lib/foo", whereas ruby-build-system uses "find . [...]"
9905 ;; which gives "./lib/foo". That difference in turn breaks the
9906 ;; comparison against a glob pattern in this script.
9907 (substitute* "concurrent-ruby.gemspec"
9908 (("git ls-files") "find * -type f | sort"))
9909 #t))
9910 (add-before 'build 'remove-jar-from-gemspec
9911 (lambda _
9912 ;; The gemspec wants to include a JAR file that we do not build
9913 ;; nor need.
9914 (substitute* "concurrent-ruby.gemspec"
9915 (("'lib/concurrent/concurrent_ruby.jar'")
9916 ""))
9917 #t))
9918 (add-before 'build 'remove-rake_compiler_dock-dependency
9919 (lambda _
9920 ;; This library is only used when building for non-MRI targets.
9921 (substitute* "Rakefile"
9922 (("require 'rake_compiler_dock'")
9923 ""))
9924 #t))
9925 (add-before 'check 'remove-timecop-dependency
9926 ;; Remove timecop-dependent tests as having timecop as a depedency
9927 ;; causes circular depedencies.
9928 (lambda _
9929 (delete-file "spec/concurrent/executor/timer_set_spec.rb")
9930 (delete-file "spec/concurrent/scheduled_task_spec.rb")
9931 #t)))))
9932 (native-inputs
9933 (list ruby-rake-compiler ruby-rspec))
9934 (synopsis "Concurrency tools for Ruby")
9935 (description
9936 "This library provides modern concurrency tools including agents,
9937futures, promises, thread pools, actors, supervisors, and more. It is
9938inspired by Erlang, Clojure, Go, JavaScript, actors and classic concurrency
9939patterns.")
9940 (home-page "http://www.concurrent-ruby.com")
9941 (license license:expat)))
9942
9943(define-public ruby-pkg-config
9944 (package
9945 (name "ruby-pkg-config")
9946 (version "1.2.5")
9947 (source
9948 (origin
9949 (method url-fetch)
9950 (uri (rubygems-uri "pkg-config" version))
9951 (sha256
9952 (base32
9953 "056mzqdh4yjznsg36fi0xiq76f24vxlhzh2n4az919l3x5k318ar"))))
9954 (build-system ruby-build-system)
9955 (arguments
9956 ;; Tests require extra files not included in the gem.
9957 `(#:tests? #f))
9958 (synopsis "Detect libraries for compiling Ruby native extensions")
9959 (description
9960 "@code{pkg-config} can be used in your extconf.rb to properly detect need
9961libraries for compiling Ruby native extensions.")
9962 (home-page "https://github.com/ruby-gnome2/pkg-config")
9963 (license license:lgpl2.0+)))
9964
9965(define-public ruby-net-http-digest-auth
9966 (package
9967 (name "ruby-net-http-digest-auth")
9968 (version "1.4.1")
9969 (source
9970 (origin
9971 (method url-fetch)
9972 (uri (rubygems-uri "net-http-digest_auth" version))
9973 (sha256
9974 (base32
9975 "1nq859b0gh2vjhvl1qh1zrk09pc7p54r9i6nnn6sb06iv07db2jb"))))
9976 (build-system ruby-build-system)
9977 (native-inputs
9978 (list ruby-hoe))
9979 (synopsis "RFC 2617 HTTP digest authentication library")
9980 (description
9981 "This library implements HTTP's digest authentication scheme based on
9982RFC 2617. This enables the use of the digest authentication scheme instead
9983of the more insecure basic authentication scheme.")
9984 (home-page "https://github.com/drbrain/net-http-digest_auth")
9985 (license license:expat)))
9986
9987(define-public ruby-mail
9988 (package
9989 (name "ruby-mail")
9990 (version "2.7.1")
9991 (source
9992 (origin
9993 (method url-fetch)
9994 (uri (rubygems-uri "mail" version))
9995 (sha256
9996 (base32
9997 "00wwz6ys0502dpk8xprwcqfwyf3hmnx6lgxaiq6vj43mkx43sapc"))))
9998 (build-system ruby-build-system)
9999 (propagated-inputs
10000 (list ruby-mini-mime))
10001 (arguments
10002 '(#:tests? #f)) ; no rakefile
10003 (synopsis "Mail library for Ruby")
10004 (description
10005 "Mail is an internet library for Ruby that is designed to handle email
10006generation, parsing and sending. The purpose of this library is to provide
10007a single point of access to handle all email functions, including sending
10008and receiving emails. All network type actions are done through proxy
10009methods to @code{Net::SMTP}, @code{Net::POP3} etc.
10010
10011Mail has been designed with a very simple object oriented system that
10012really opens up the email messages you are parsing, if you know what you
10013are doing, you can fiddle with every last bit of your email directly.")
10014 (home-page "https://github.com/mikel/mail")
10015 (license license:expat)))
10016
10017(define-public ruby-email-reply-trimmer
10018 (package
10019 (name "ruby-email-reply-trimmer")
10020 (version "0.1.13")
10021 (source
10022 (origin
10023 (method url-fetch)
10024 (uri (rubygems-uri "email_reply_trimmer" version))
10025 (sha256
10026 (base32
10027 "1jgcxifm48xq5dz9k47q43pqm5bfnf14l62l3bqhmv8f6z8dw4ki"))))
10028 (build-system ruby-build-system)
10029 (synopsis "Trim replies from plain text email")
10030 (description "EmailReplyTrimmer is a Ruby small library to trim replies
10031from plain text email.")
10032 (home-page "https://github.com/discourse/email_reply_trimmer")
10033 (license license:expat)))
10034
10035(define-public ruby-mathn
10036 (package
10037 (name "ruby-mathn")
10038 (version "0.1.0")
10039 (source
10040 (origin
10041 (method url-fetch)
10042 (uri (rubygems-uri "mathn" version))
10043 (sha256
10044 (base32
10045 "1wn812llln9jzgybz2d7536q39z3gi99i6fi0j1dapcpzvhgrr0p"))))
10046 (build-system ruby-build-system)
10047 (native-inputs
10048 (list bundler ruby-rake-compiler))
10049 (synopsis "Extends math operations for increased precision")
10050 (description
10051 "This gem makes mathematical operations more precise in Ruby and
10052integrates other mathematical standard libraries. Prior to Ruby 2.5,
10053@code{mathn} was part of the Ruby standard library.")
10054 (home-page "https://github.com/ruby/mathn")
10055 (license license:bsd-2)))
10056
10057(define-public ruby-code-statistics
10058 (package
10059 (name "ruby-code-statistics")
10060 (version "0.2.13")
10061 (source
10062 (origin
10063 (method url-fetch)
10064 (uri (rubygems-uri "code_statistics" version))
10065 (sha256
10066 (base32
10067 "07rdpsbwbmh4vp8nxyh308cj7am2pbrfhv9v5xr2d5gq8hnnsm93"))))
10068 (build-system ruby-build-system)
10069 (arguments
10070 `(#:tests? #f)) ; Not all test code is included in gem.
10071 (synopsis "Port of the rails 'rake stats' method")
10072 (description
10073 "This gem is a port of the rails 'rake stats' method so it can be made
10074more robust and work for non rails projects.")
10075 (home-page "https://github.com/danmayer/code_statistics")
10076 (license license:expat)))
10077
10078(define-public ruby-rubypants
10079 (package
10080 (name "ruby-rubypants")
10081 (version "0.6.0")
10082 (source (origin
10083 (method url-fetch)
10084 (uri (rubygems-uri "rubypants" version))
10085 (sha256
10086 (base32
10087 "0xpqkslan2wkyal2h9qhplkr5d4sdn7q6csigrhnljjpp8j4qfsh"))))
10088 (build-system ruby-build-system)
10089 (arguments
10090 '(#:tests? #f)) ; need Codecov
10091 (synopsis "Port of the smart-quotes library SmartyPants")
10092 (description
10093 "RubyPants is a Ruby port of the smart-quotes library SmartyPants. The
10094original SmartyPants is a web publishing plug-in for Movable Type, Blosxom,
10095and BBEdit that easily translates plain ASCII punctuation characters into
10096smart typographic punctuation HTML entities.")
10097 (home-page "https://github.com/jmcnevin/rubypants")
10098 (license license:bsd-2)))
10099
10100(define-public ruby-org-ruby
10101 (package
10102 (name "ruby-org-ruby")
10103 (version "0.9.12")
10104 (source (origin
10105 (method url-fetch)
10106 (uri (rubygems-uri "org-ruby" version))
10107 (sha256
10108 (base32
10109 "0x69s7aysfiwlcpd9hkvksfyld34d8kxr62adb59vjvh8hxfrjwk"))))
10110 (build-system ruby-build-system)
10111 (arguments
10112 '(#:tests? #f)) ; no rakefile
10113 (propagated-inputs
10114 (list ruby-rubypants))
10115 (synopsis "Org-mode parser written in Ruby")
10116 (description
10117 "Org-ruby is an org-mode parser written in Ruby. The most significant
10118thing this library does today is convert org-mode files to HTML or Textile or
10119Markdown.")
10120 (home-page "https://github.com/wallyqs/org-ruby")
10121 (license license:expat)))
10122
10123(define-public ruby-rake
10124 (package
10125 (name "ruby-rake")
10126 (version "13.0.1")
10127 (source
10128 (origin
10129 (method url-fetch)
10130 (uri (rubygems-uri "rake" version))
10131 (sha256
10132 (base32
10133 "0w6qza25bq1s825faaglkx1k6d59aiyjjk3yw3ip5sb463mhhai9"))))
10134 (build-system ruby-build-system)
10135 (native-inputs
10136 (list bundler))
10137 (synopsis "Rake is a Make-like program implemented in Ruby")
10138 (description
10139 "Rake is a Make-like program where tasks and dependencies are specified
10140in standard Ruby syntax.")
10141 (home-page "https://github.com/ruby/rake")
10142 (license license:expat)))
10143
10144(define-public ruby-childprocess
10145 (package
10146 (name "ruby-childprocess")
10147 (version "3.0.0")
10148 (source
10149 (origin
10150 (method url-fetch)
10151 (uri (rubygems-uri "childprocess" version))
10152 (sha256
10153 (base32
10154 "1ic028k8xgm2dds9mqnvwwx3ibaz32j8455zxr9f4bcnviyahya5"))))
10155 (build-system ruby-build-system)
10156 (arguments
10157 `(#:tests? #f))
10158 (native-inputs
10159 (list bundler ruby-rspec))
10160 (propagated-inputs
10161 (list ruby-ffi))
10162 (synopsis "Control external programs running in the background, in Ruby")
10163 (description "@code{childprocess} provides a gem to control external
10164programs running in the background, in Ruby.")
10165 (home-page "https://github.com/enkessler/childprocess")
10166 (license license:expat)))
10167
10168(define-public ruby-public-suffix
10169 (package
10170 (name "ruby-public-suffix")
10171 (version "4.0.5")
10172 (source (origin
10173 (method url-fetch)
10174 (uri (rubygems-uri "public_suffix" version))
10175 (sha256
10176 (base32
10177 "0vywld400fzi17cszwrchrzcqys4qm6sshbv73wy5mwcixmrgg7g"))))
10178 (build-system ruby-build-system)
10179 (arguments
10180 '(#:phases
10181 (modify-phases %standard-phases
10182 ;; Remove the requirement on Rubocop, as it isn't useful to run, and
10183 ;; including it as an input can lead to circular dependencies.
10184 (add-after 'unpack 'remove-rubocop-from-Rakefile
10185 (lambda _
10186 (substitute* "Rakefile"
10187 (("require \"rubocop/rake\\_task\"") "")
10188 (("RuboCop::RakeTask\\.new") ""))
10189 #t)))))
10190 (native-inputs
10191 (list bundler ruby-yard ruby-mocha ruby-minitest-reporters))
10192 (home-page "https://simonecarletti.com/code/publicsuffix-ruby/")
10193 (synopsis "Domain name parser")
10194 (description "The gem @code{public_suffix} is a domain name parser,
10195written in Ruby, and based on the @dfn{Public Suffix List}. A public suffix
10196is one under which Internet users can (or historically could) directly
10197register names. Some examples of public suffixes are @code{.com},
10198@code{.co.uk} and @code{pvt.k12.ma.us}. The Public Suffix List is a list of
10199all known public suffixes.")
10200 (license license:expat)))
10201
10202(define-public ruby-addressable
10203 (package
10204 (name "ruby-addressable")
10205 (version "2.7.0")
10206 (source (origin
10207 (method url-fetch)
10208 (uri (rubygems-uri "addressable" version))
10209 (sha256
10210 (base32
10211 "1fvchp2rhp2rmigx7qglf69xvjqvzq7x0g49naliw29r2bz656sy"))))
10212 (build-system ruby-build-system)
10213 (arguments
10214 '(#:test-target "spec"
10215 #:phases
10216 (modify-phases %standard-phases
10217 (add-after 'unpack 'remove-unnecessary-dependencies-from-Gemfile
10218 (lambda _
10219 (substitute* "Gemfile"
10220 (("git: 'https://github.com/sporkmonger/rack-mount.git',") "")
10221 ((".*launchy.*") "")
10222 ((".*rake.*") "gem 'rake'\n")
10223 ((".*redcarpet.*") ""))
10224 #t))
10225 (add-before 'check 'delete-network-dependent-test
10226 (lambda _
10227 (delete-file "spec/addressable/net_http_compat_spec.rb")
10228 #t)))))
10229 (native-inputs
10230 (list ruby-rspec
10231 bundler
10232 ruby-idn-ruby
10233 ruby-sporkmonger-rack-mount
10234 ruby-rspec-its-minimal
10235 ruby-yard
10236 ruby-simplecov))
10237 (propagated-inputs
10238 (list ruby-public-suffix))
10239 (home-page "https://github.com/sporkmonger/addressable")
10240 (synopsis "Alternative URI implementation")
10241 (description "Addressable is a replacement for the URI implementation that
10242is part of Ruby's standard library. It more closely conforms to RFC 3986,
10243RFC 3987, and RFC 6570 (level 4), providing support for IRIs and URI templates.")
10244 (license license:asl2.0)))
10245
10246(define-public ruby-colorize
10247 (package
10248 (name "ruby-colorize")
10249 (version "0.8.1")
10250 (source (origin
10251 (method url-fetch)
10252 (uri (rubygems-uri "colorize" version))
10253 (sha256
10254 (base32
10255 "133rqj85n400qk6g3dhf2bmfws34mak1wqihvh3bgy9jhajw580b"))))
10256 (build-system ruby-build-system)
10257 (arguments
10258 '(#:phases (modify-phases %standard-phases
10259 (add-before 'check 'remove-codeclimate-dependency
10260 (lambda _
10261 (substitute* "test/test_colorize.rb"
10262 ;; Do not hook the tests into the online CodeClimate
10263 ;; service which is unnecessary for these tests.
10264 (("require 'codeclimate-test-reporter'")
10265 "")
10266 (("CodeClimate.*") ""))
10267 #t)))))
10268 (synopsis "Add color effects to the @code{String} class")
10269 (description
10270 "This package extends the @code{String} class and adds a
10271@code{ColorizedString} with methods to set text color, background color,
10272and text effects.")
10273 (home-page "https://github.com/fazibear/colorize")
10274 (license license:gpl2+)))
10275
10276(define-public ruby-colorator
10277 (package
10278 (name "ruby-colorator")
10279 (version "1.1.0")
10280 (source (origin
10281 (method url-fetch)
10282 (uri (rubygems-uri "colorator" version))
10283 (sha256
10284 (base32
10285 "0f7wvpam948cglrciyqd798gdc6z3cfijciavd0dfixgaypmvy72"))))
10286 (build-system ruby-build-system)
10287 (arguments
10288 ;; No test target
10289 `(#:tests? #f))
10290 (home-page "http://octopress.org/colorator/")
10291 (synopsis "Terminal color library")
10292 (description "Colorator is a Ruby gem that helps you colorize your text
10293for the terminal.")
10294 (license license:expat)))
10295
10296(define-public ruby-command-line-reporter
10297 (package
10298 (name "ruby-command-line-reporter")
10299 (version "4.0.1")
10300 (source (origin
10301 (method url-fetch)
10302 (uri (rubygems-uri "command_line_reporter" version))
10303 (sha256
10304 (base32
10305 "1l0zxkh5n9dxfw46lpkg416ljpldlq1bgdhqh0d118dk338nz4ll"))))
10306 (build-system ruby-build-system)
10307 (arguments
10308 ;; No Rakefile
10309 `(#:tests? #f
10310 #:phases
10311 (modify-phases %standard-phases
10312 (add-before 'build 'fix-dependencies
10313 (lambda _
10314 (substitute* ".gemspec"
10315 ;; colored is unmaintained
10316 (("colored") "colorator")
10317 ;; colorator version
10318 (("= 1.2") "= 1.1"))
10319 #t)))))
10320 (propagated-inputs (list ruby-colorator))
10321 (home-page "https://github.com/wbailey/command_line_reporter")
10322 (synopsis "Report production while executing Ruby scripts")
10323 (description "This gem provides a DSL that makes it easy to write reports
10324of various types in ruby. It eliminates the need to litter your source with
10325puts statements, instead providing a more readable, expressive interface to
10326your application.")
10327 (license license:asl2.0)))
10328
10329(define-public ruby-command-line-reporter-3
10330 (package
10331 (inherit ruby-command-line-reporter)
10332 (version "3.3.6")
10333 (source (origin
10334 (method url-fetch)
10335 (uri (rubygems-uri "command_line_reporter" version))
10336 (sha256
10337 (base32
10338 "1h39zqqxp3k4qk49ajpx0jps1vmvxgkh43mqkb6znk583bl0fv71"))))))
10339
10340(define-public ruby-kpeg
10341 (package
10342 (name "ruby-kpeg")
10343 (version "1.1.0")
10344 (source
10345 (origin
10346 (method url-fetch)
10347 (uri (rubygems-uri "kpeg" version))
10348 (sha256
10349 (base32
10350 "0x2kpfrcagj931masm5y1kwbnc6nxl60cqdcd3lyd1d2hz7kzlia"))))
10351 (build-system ruby-build-system)
10352 (native-inputs
10353 (list ruby-hoe))
10354 (synopsis "PEG library for Ruby")
10355 (description "KPeg is a simple PEG library for Ruby. It provides an API as
10356well as native grammar to build the grammar. KPeg supports direct left
10357recursion of rules via the
10358@uref{http://www.vpri.org/pdf/tr2008003_experimenting.pdf,OMeta memoization}
10359technique.")
10360 (home-page "https://github.com/evanphx/kpeg")
10361 (license license:expat)))
10362
10363(define-public ruby-rdoc
10364 (package
10365 (name "ruby-rdoc")
10366 (version "6.2.0")
10367 (source
10368 (origin
10369 (method git-fetch)
10370 (uri (git-reference
10371 (url "https://github.com/ruby/rdoc")
10372 (commit (string-append "v" version))))
10373 (file-name (git-file-name name version))
10374 (sha256
10375 (base32
10376 "0dhk29nidv93b5vnjvlm9gcixgn4i0jcyzrgxdk6pdg019bw4cj6"))))
10377 (build-system ruby-build-system)
10378 (arguments
10379 `(#:phases
10380 (modify-phases %standard-phases
10381 (add-after 'unpack 'patch-gemspec
10382 ;; TODO: Remove after next release is tagged.
10383 (lambda _
10384 (substitute* "rdoc.gemspec"
10385 (("\"lib/rdoc/generator/template/darkfish/js/\
10386jquery\\.js\", ") ""))
10387 #t))
10388 (add-before 'build 'generate
10389 ;; 'gem build' doesn't honor Rakefile dependencies (see:
10390 ;; https://github.com/ruby/rdoc/issues/432#issuecomment-650808977).
10391 (lambda _
10392 (invoke "rake" "generate"))))))
10393 (native-inputs
10394 (list bundler ruby-kpeg ruby-racc ruby-rubocop))
10395 (home-page "https://ruby.github.io/rdoc/")
10396 (synopsis "HTML and command-line documentation utility")
10397 (description "RDoc produces HTML and command-line documentation for Ruby
10398projects. RDoc includes the +rdoc+ and +ri+ tools for generating and displaying
10399documentation from the command-line.")
10400 (license license:gpl2+)))
10401
10402(define-public ruby-sass-listen
10403 (package
10404 (name "ruby-sass-listen")
10405 (version "4.0.0")
10406 (source (origin
10407 (method url-fetch)
10408 (uri (rubygems-uri "sass-listen" version))
10409 (sha256
10410 (base32
10411 "0xw3q46cmahkgyldid5hwyiwacp590zj2vmswlll68ryvmvcp7df"))))
10412 (build-system ruby-build-system)
10413 (arguments
10414 ;; No test target
10415 `(#:tests? #f))
10416 (propagated-inputs
10417 (list ruby-rb-fsevent ruby-rb-inotify))
10418 (home-page "https://github.com/sass/listen")
10419 (synopsis "File modification notification library")
10420 (description "The Listen gem listens to file modifications and notifies you
10421about the changes.")
10422 (license license:expat)))
10423
10424(define-public ruby-terminfo
10425 (package
10426 (name "ruby-terminfo")
10427 (version "0.1.1")
10428 (source
10429 (origin
10430 (method url-fetch)
10431 (uri (rubygems-uri "ruby-terminfo" version))
10432 (sha256
10433 (base32
10434 "0rl4ic5pzvrpgd42z0c1s2n3j39c9znksblxxvmhkzrc0ckyg2cm"))))
10435 (build-system ruby-build-system)
10436 (arguments
10437 `(#:test-target "test"
10438 ;; Rakefile requires old packages and would need modification to
10439 ;; work with current software.
10440 #:tests? #f))
10441 (inputs
10442 (list ncurses))
10443 (native-inputs
10444 (list ruby-rubygems-tasks ruby-rdoc))
10445 (home-page "http://www.a-k-r.org/ruby-terminfo/")
10446 (synopsis "Terminfo binding for Ruby")
10447 (description "Ruby-terminfo provides terminfo binding for Ruby.")
10448 (license license:bsd-3)))
10449
10450(define-public ruby-diffy
10451 (package
10452 (name "ruby-diffy")
10453 (version "3.2.1")
10454 (source
10455 (origin
10456 (method url-fetch)
10457 (uri (rubygems-uri "diffy" version))
10458 (sha256
10459 (base32
10460 "119imrkn01agwhx5raxhknsi331y5i4yda7r0ws0an6905ximzjg"))))
10461 (build-system ruby-build-system)
10462 (arguments
10463 ;; No tests
10464 `(#:tests? #f))
10465 (native-inputs
10466 (list ruby-rspec))
10467 (home-page "https://github.com/samg/diffy")
10468 (synopsis "Convenient diffing in ruby")
10469 (description "Diffy provides a convenient way to generate a diff from two
10470strings or files.")
10471 (license license:expat)))
10472
10473(define-public ruby-sass-spec
10474 (package
10475 (name "ruby-sass-spec")
10476 (version "3.5.4")
10477 (source
10478 (origin
10479 (method git-fetch)
10480 (uri (git-reference
10481 (url "https://github.com/sass/sass-spec")
10482 (commit (string-append "v" version))))
10483 (file-name (git-file-name name version))
10484 (sha256
10485 (base32 "1zsw66830w0xlc7kxz6fm4b5nyb44vdsdgm9mgy06s5aixx83pwr"))))
10486 (build-system ruby-build-system)
10487 (propagated-inputs
10488 `(("ruby-command-line-reporter-3" ,ruby-command-line-reporter-3)
10489 ("ruby-diffy" ,ruby-diffy)
10490 ("ruby-terminfo" ,ruby-terminfo)))
10491 (arguments
10492 `(;; This package contains tests for a sass implementation, and the to
10493 ;; avoid any circular dependencies, the tests are not run here
10494 #:tests? #f
10495 #:phases
10496 (modify-phases %standard-phases
10497 (add-after 'unpack 'patch-test
10498 (lambda _
10499 (delete-file "spec/values/colors/alpha_hex-3.5/error")
10500 (substitute* "spec/values/colors/alpha_hex-3.5/expected_output.css"
10501 (("string") "color")))))))
10502 (home-page "https://github.com/sass/sass-spec")
10503 (synopsis "Test suite for Sass")
10504 (description "Sass Spec is a test suite for Sass. Test cases are all in
10505the @file{spec} directory.")
10506 (license license:expat)))
10507
10508(define-public ruby-sass
10509 (package
10510 (name "ruby-sass")
10511 (version "3.6.0")
10512 (source (origin
10513 (method url-fetch)
10514 (uri (rubygems-uri "sass" version))
10515 (sha256
10516 (base32
10517 "18c6prbw9wl8bqhb2435pd9s0lzarl3g7xf8pmyla28zblvwxmyh"))))
10518 (build-system ruby-build-system)
10519 (propagated-inputs
10520 (list ruby-sass-listen))
10521 (native-inputs
10522 (list ruby-sass-spec ruby-mathn ruby-cmath))
10523 (home-page "https://sass-lang.com/")
10524 (synopsis "CSS extension language")
10525 (description "Sass is a CSS extension language. It extends CSS with
10526features that don't exist yet like variables, nesting, mixins and inheritance.")
10527 (license license:expat)))
10528
10529(define-public ruby-sassc
10530 (package
10531 (name "ruby-sassc")
10532 (version "2.4.0")
10533 (source
10534 (origin
10535 (method url-fetch)
10536 (uri (rubygems-uri "sassc" version))
10537 (sha256
10538 (base32
10539 "0gpqv48xhl8mb8qqhcifcp0pixn206a7imc07g48armklfqa4q2c"))))
10540 (build-system ruby-build-system)
10541 (arguments
10542 '(#:modules ((guix build ruby-build-system)
10543 (guix build utils)
10544 (ice-9 textual-ports))
10545 #:phases
10546 (modify-phases %standard-phases
10547 ;; TODO: This would be better as a snippet, but the ruby-build-system
10548 ;; doesn't seem to support that
10549 (add-after 'unpack 'remove-libsass
10550 (lambda _
10551 (delete-file-recursively "ext")
10552 (with-atomic-file-replacement "sassc.gemspec"
10553 (lambda (in out)
10554 (let* ((gemspec (get-string-all in))
10555 (index (string-contains gemspec "libsass_dir")))
10556 (display (string-append
10557 (string-take gemspec index)
10558 "\nend\n")
10559 out))))
10560 #t))
10561 (add-after 'unpack 'dont-check-the-libsass-version
10562 (lambda _
10563 (substitute* "test/native_test.rb"
10564 (("assert_equal.*Native\\.version") ""))
10565 #t))
10566 (add-after 'unpack 'remove-git-from-gemspec
10567 (lambda _
10568 (substitute* "sassc.gemspec"
10569 (("`git ls-files -z`") "`find . -type f -print0 |sort -z`"))
10570 #t))
10571 (add-after 'unpack 'remove-extensions-from-gemspec
10572 (lambda _
10573 (substitute* "sassc.gemspec"
10574 (("\\[\"ext/extconf.rb\"\\]") "[]"))
10575 #t))
10576 (add-after 'unpack 'fix-Rakefile
10577 (lambda _
10578 (substitute* "Rakefile"
10579 (("test: 'compile:libsass'") ":test"))
10580 #t))
10581 (add-after 'unpack 'remove-unnecessary-dependencies
10582 (lambda _
10583 (substitute* "test/test_helper.rb"
10584 (("require \"pry\"") ""))
10585 #t))
10586 (add-before 'build 'patch-native.rb
10587 (lambda* (#:key inputs #:allow-other-keys)
10588 (substitute* "lib/sassc/native.rb"
10589 ((".*gem_root = spec.gem_dir") "")
10590 (("ffi_lib .*\n")
10591 (string-append
10592 "ffi_lib '" (assoc-ref inputs "libsass") "/lib/libsass.so'")))
10593 #t))
10594 ;; The gemspec still references the libsass files, so just keep the
10595 ;; one in the gem.
10596 (delete 'extract-gemspec))))
10597 (propagated-inputs
10598 (list ruby-ffi ruby-rake))
10599 (inputs
10600 (list libsass))
10601 (native-inputs
10602 (list bundler ruby-rake-compiler ruby-minitest-around
10603 ruby-test-construct))
10604 (synopsis "Use libsss from Ruby")
10605 (description
10606 "This library provides Ruby q@acronym{FFI, Foreign Function Interface}
10607bindings to the libsass library. This enables rendering
10608@acronym{SASS,Syntactically awesome style sheets} from Ruby code.")
10609 (home-page "https://github.com/sass/sassc-ruby")
10610 (license license:expat)))
10611
10612(define-public ruby-jekyll-sass-converter
10613 (package
10614 (name "ruby-jekyll-sass-converter")
10615 (version "2.1.0")
10616 (source (origin
10617 (method url-fetch)
10618 (uri (rubygems-uri "jekyll-sass-converter" version))
10619 (sha256
10620 (base32
10621 "04ncr44wrilz26ayqwlg7379yjnkb29mvx4j04i62b7czmdrc9dv"))))
10622 (build-system ruby-build-system)
10623 (propagated-inputs
10624 (list ruby-sass))
10625 (arguments
10626 ;; No rakefile
10627 `(#:tests? #f))
10628 (home-page "https://github.com/jekyll/jekyll-sass-converter")
10629 (synopsis "Sass converter for Jekyll")
10630 (description "This gem provide built-in support for the Sass converter
10631in Jekyll.")
10632 (license license:expat)))
10633
10634(define-public ruby-jekyll-watch
10635 (package
10636 (name "ruby-jekyll-watch")
10637 (version "2.1.2")
10638 (source (origin
10639 (method url-fetch)
10640 (uri (rubygems-uri "jekyll-watch" version))
10641 (sha256
10642 (base32
10643 "1s9ly83sp8albvgdff12xy2h4xd8lm6z2fah4lzmk2yvp85jzdzv"))))
10644 (build-system ruby-build-system)
10645 (propagated-inputs
10646 (list ruby-listen))
10647 (arguments
10648 ;; No rakefile
10649 `(#:tests? #f))
10650 (home-page "https://github.com/jekyll/jekyll-watch")
10651 (synopsis "Jekyll auto-rebuild support")
10652 (description "This gems add the @code{--watch} switch to the jekyll CLI
10653interface. It allows Jekyll to rebuild your site when a file changes.")
10654 (license license:expat)))
10655
10656(define-public ruby-parallel
10657 (package
10658 (name "ruby-parallel")
10659 (version "1.21.0")
10660 (source
10661 (origin
10662 (method git-fetch)
10663 (uri (git-reference
10664 (url "https://github.com/grosser/parallel")
10665 (commit (string-append "v" version))))
10666 (file-name (git-file-name name version))
10667 (sha256
10668 (base32
10669 "1xqjcvl3gq3shvrqp8wc3fbqibzh4mf1yczq6np9gd79558dwj3w"))))
10670 (build-system ruby-build-system)
10671 (arguments
10672 `(;; TODO 3 test failures
10673 ;; rspec ./spec/parallel_spec.rb:190 # Parallel.in_processes does not
10674 ;; open unnecessary pipes
10675 ;; rspec './spec/parallel_spec.rb[1:9:7]' # Parallel.each works with
10676 ;; SQLite in processes
10677 ;; rspec './spec/parallel_spec.rb[1:9:16]' # Parallel.each works with
10678 ;; SQLite in threads
10679 #:tests? #f
10680 #:test-target "rspec-rerun:spec"
10681 #:phases
10682 (modify-phases %standard-phases
10683 (add-after 'unpack 'patch-Gemfile
10684 (lambda _
10685 (substitute* "Gemfile"
10686 (("gem 'rspec-legacy_formatters'") "")
10687 (("gem 'activerecord.*$") "gem 'activerecord'\n"))))
10688 (add-before 'check 'delete-Gemfile.lock
10689 (lambda _
10690 ;; Bundler isn't being used for fetching dependendencies, so
10691 ;; delete the Gemfile.lock
10692 (delete-file "Gemfile.lock")
10693 #t))
10694 (add-before 'build 'patch-gemspec
10695 (lambda _
10696 (substitute* "parallel.gemspec"
10697 (("git ls-files") "find"))
10698 #t)))))
10699 (native-inputs
10700 (list ruby-rspec
10701 ruby-rspec-rerun
10702 bundler
10703 ruby-activerecord
10704 ruby-progressbar
10705 ruby-bump
10706 procps
10707 lsof
10708 ruby-mysql2
10709 ruby-sqlite3
10710 ruby-i18n))
10711 (home-page "https://github.com/grosser/parallel")
10712 (synopsis "Parallel processing in Ruby")
10713 (description "Parallel allows you to run any code in parallel Processes
10714(to use all CPUs) or Threads(to speedup blocking operations). It is best
10715suited for map-reduce or e.g. parallel downloads/uploads.")
10716 (license license:expat)))
10717
10718(define-public ruby-cane
10719 (package
10720 (name "ruby-cane")
10721 (version "3.0.0")
10722 (source (origin
10723 (method url-fetch)
10724 (uri (rubygems-uri "cane" version))
10725 (sha256
10726 (base32
10727 "0yf5za3l7lhrqa3g56sah73wh33lbxy5y3cb7ij0a2bp1b4kwhih"))))
10728 (build-system ruby-build-system)
10729 (arguments `(#:tests? #f)); No rakefile
10730 (home-page "https://github.com/square/cane")
10731 (propagated-inputs
10732 (list ruby-parallel))
10733 (synopsis "Code quality threshold checking")
10734 (description "Cane fails your build if code quality thresholds are not met.")
10735 (license license:asl2.0)))
10736
10737(define-public ruby-morecane
10738 (package
10739 (name "ruby-morecane")
10740 (version "0.2.0")
10741 (source (origin
10742 (method url-fetch)
10743 (uri (rubygems-uri "morecane" version))
10744 (sha256
10745 (base32
10746 "0w70vb8z5bdhvr21h660aa43m5948pv0bd27z7ngai2iwdvqd771"))))
10747 (build-system ruby-build-system)
10748 (home-page "https://github.com/yob/morecane")
10749 (arguments `(#:tests? #f)); No rakefile
10750 (propagated-inputs
10751 (list ruby-parallel))
10752 (synopsis "Extra checks for cane")
10753 (description "The cane gem provides a great framework for running quality
10754checks over your ruby project as part of continuous integration build. It
10755comes with a few checks out of the box, but also provides an API for loading
10756custom checks. This gem provides a set of additional checks.")
10757 (license license:expat)))
10758
10759(define-public ruby-pdf-reader
10760 (package
10761 (name "ruby-pdf-reader")
10762 (version "2.4.0")
10763 (source (origin
10764 (method git-fetch) ;no test in distributed gem archive
10765 (uri (git-reference
10766 (url "https://github.com/yob/pdf-reader")
10767 (commit (string-append "v" version))))
10768 (file-name (git-file-name name version))
10769 (sha256
10770 (base32
10771 "1yh8yrlssf5ppnkvk4m78vmh5r5vqwdcd0gm3lqipw162llz0rai"))))
10772 (build-system ruby-build-system)
10773 (arguments `(#:test-target "spec"
10774 #:phases (modify-phases %standard-phases
10775 (add-after 'unpack 'do-not-use-bundler
10776 (lambda _
10777 (substitute* "spec/spec_helper.rb"
10778 ((".*[Bb]undler.*") ""))
10779 #t)))))
10780 (native-inputs
10781 (list ruby-rspec ruby-cane ruby-morecane))
10782 (propagated-inputs
10783 (list ruby-afm ruby-ascii85 ruby-hashery ruby-rc4 ruby-ttfunk))
10784 (home-page "https://github.com/yob/pdf-reader")
10785 (synopsis "PDF parser in Ruby")
10786 (description "The PDF::Reader library implements a PDF parser conforming as
10787much as possible to the PDF specification from Adobe. It provides programmatic
10788access to the contents of a PDF file with a high degree of flexibility.")
10789 (license license:gpl3+)))
10790
10791(define-public ruby-pdf-inspector
10792 (let ((revision "1")
10793 (commit "00ee4c92ff917118785ebec188e81effc968abeb"))
10794 (package
10795 (name "ruby-pdf-inspector")
10796 (version (git-version "1.3.0" revision commit))
10797 (source (origin
10798 (method git-fetch)
10799 (uri (git-reference
10800 (url "https://github.com/prawnpdf/pdf-inspector")
10801 (commit commit)))
10802 (file-name (git-file-name name version))
10803 (sha256
10804 (base32
10805 "0h9w81ddd0gvkh5n2cvny9ddb5qiac1si0dhinkk0xxh5382qs0m"))))
10806 (build-system ruby-build-system)
10807 (arguments
10808 `(#:test-target "spec"
10809 #:phases (modify-phases %standard-phases
10810 (add-before 'build 'drop-signing-key-requirement
10811 (lambda _
10812 (substitute* "pdf-inspector.gemspec"
10813 (("spec.signing_key =.*")
10814 "spec.signing_key = nil"))
10815 #t))
10816 (replace 'check
10817 (lambda _
10818 (substitute* "pdf-inspector.gemspec"
10819 ((".*rubocop.*") "")
10820 ((".*yard.*") ""))
10821 (invoke "rspec"))))))
10822 (native-inputs
10823 (list ruby-rspec))
10824 (propagated-inputs
10825 (list ruby-pdf-reader))
10826 (home-page "https://github.com/prawnpdf/pdf-inspector")
10827 (synopsis "Analysis classes for inspecting PDF output")
10828 (description "This library provides a number of PDF::Reader based tools for
10829use in testing PDF output. Presently, the primary purpose of this tool is to
10830support the tests found in Prawn, a pure Ruby PDF generation library.")
10831 (license %prawn-project-licenses))))
10832
10833(define-public ruby-pdf-core
10834 (package
10835 (name "ruby-pdf-core")
10836 (version "0.8.1")
10837 (source (origin
10838 (method url-fetch)
10839 (uri (rubygems-uri "pdf-core" version))
10840 (sha256
10841 (base32
10842 "15d6m99bc8bbzlkcg13qfpjjzphfg5x905pjbfygvpcxsm8gnsvg"))))
10843 (build-system ruby-build-system)
10844 (arguments
10845 ; No test target
10846 `(#:tests? #f))
10847 (home-page "https://github.com/prawnpdf/pdf-core")
10848 (synopsis "Low level PDF features for Prawn")
10849 (description "This is an experimental gem that extracts low-level PDF
10850functionality from Prawn.")
10851 (license license:gpl3+)))
10852
10853(define-public ruby-prawn
10854 ;; There hasn't been a new release since 2017/03/17.
10855 (let ((revision "1")
10856 (commit "d980247be8a00e7c59cd4e5785e3aa98f9856db1"))
10857 (package
10858 (name "ruby-prawn")
10859 (version (git-version "2.2.2" revision commit))
10860 (source (origin
10861 (method git-fetch)
10862 (uri (git-reference
10863 (url "https://github.com/prawnpdf/prawn")
10864 (commit commit)))
10865 (file-name (git-file-name name version))
10866 (sha256
10867 (base32
10868 "0mcmvf22h8il93yq48v9f31qpy27pvjxgv9172p0f4x9lqy0imwr"))))
10869 (build-system ruby-build-system)
10870 (arguments
10871 `(#:phases
10872 (modify-phases %standard-phases
10873 (add-before 'build 'drop-signing-key-requirement
10874 (lambda _
10875 (substitute* "prawn.gemspec"
10876 (("spec.signing_key =.*")
10877 "spec.signing_key = nil"))
10878 #t))
10879 (replace 'check
10880 (lambda* (#:key tests? #:allow-other-keys)
10881 (when tests?
10882 ;; The Prawn manual test fails (see:
10883 ;; https://github.com/prawnpdf/prawn/issues/1163), so exclude
10884 ;; it.
10885 (invoke "rspec" "--exclude-pattern" "prawn_manual_spec.rb"))
10886 #t)))))
10887 (propagated-inputs
10888 (list ruby-pdf-core ruby-ttfunk))
10889 (native-inputs
10890 (list ruby-pdf-inspector ruby-prawn-manual-builder ruby-rspec
10891 ruby-simplecov ruby-yard))
10892 (home-page "https://prawnpdf.org/api-docs/2.0/")
10893 (synopsis "PDF generation for Ruby")
10894 (description "Prawn is a pure Ruby PDF generation library.")
10895 (license %prawn-project-licenses))))
10896
10897(define-public ruby-prawn-table
10898 (package
10899 (name "ruby-prawn-table")
10900 (version "0.2.2")
10901 (source (origin
10902 (method url-fetch)
10903 (uri (rubygems-uri "prawn-table" version))
10904 (sha256
10905 (base32
10906 "1nxd6qmxqwl850icp18wjh5k0s3amxcajdrkjyzpfgq0kvilcv9k"))))
10907 (build-system ruby-build-system)
10908 (propagated-inputs
10909 (list ruby-prawn ruby-pdf-inspector))
10910 (native-inputs
10911 `(("bundler" ,bundler)
10912 ("ruby-yard" ,ruby-yard)
10913 ("ruby-mocha" ,ruby-mocha)
10914 ("ruby-coderay" ,ruby-coderay)
10915 ("ruby-prawn-manual-builder" ,ruby-prawn-manual-builder)
10916 ("ruby-simplecov" ,ruby-simplecov)
10917 ("ruby-rspec-2" ,ruby-rspec-2)))
10918 (arguments
10919 '(;; TODO: 1 test fails
10920 ;; Failure/Error: pdf.page_count.should == 1
10921 ;; expected: 1
10922 ;; got: 2 (using ==)
10923 ;; # ./spec/table_spec.rb:1308
10924 ;;
10925 ;; 225 examples, 1 failure
10926 #:tests? #f
10927 #:phases
10928 (modify-phases %standard-phases
10929 (add-before 'check 'patch-gemspec
10930 (lambda _
10931 (substitute* "prawn-table.gemspec"
10932 ;; Loosen the requirement for pdf-inspector
10933 (("~> 1\\.1\\.0") ">= 0")
10934 ;; Loosen the requirement for pdf-reader
10935 (("~> 1\\.2") ">= 0"))))
10936 (replace 'check
10937 (lambda* (#:key tests? #:allow-other-keys)
10938 (when tests?
10939 (invoke "rspec"))
10940 #t)))))
10941 (home-page "https://github.com/prawnpdf/prawn-table")
10942 (synopsis "Tables support for Prawn")
10943 (description "This gem provides tables support for Prawn.")
10944 (license license:gpl3+)))
10945
10946(define-public ruby-kramdown
10947 (package
10948 (name "ruby-kramdown")
10949 (version "2.3.1")
10950 (source (origin
10951 (method url-fetch)
10952 (uri (rubygems-uri "kramdown" version))
10953 (sha256
10954 (base32
10955 "0jdbcjv4v7sj888bv3vc6d1dg4ackkh7ywlmn9ln2g9alk7kisar"))))
10956 (build-system ruby-build-system)
10957 (arguments `(#:tests? #f)); FIXME: some test failures
10958 (native-inputs
10959 (list ruby-prawn ruby-prawn-table))
10960 (home-page "https://kramdown.gettalong.org/")
10961 (synopsis "Markdown parsing and converting library")
10962 (description "Kramdown is a library for parsing and converting a superset
10963of Markdown. It is completely written in Ruby, supports standard Markdown
10964(with some minor modifications) and various extensions that have been made
10965popular by the PHP @code{Markdown Extra} package and @code{Maruku}.")
10966 (license license:expat)))
10967
10968(define-public ruby-kramdown-parser-gfm
10969 (package
10970 (name "ruby-kramdown-parser-gfm")
10971 (version "1.1.0")
10972 (source
10973 (origin
10974 (method url-fetch)
10975 (uri (rubygems-uri "kramdown-parser-gfm" version))
10976 (sha256
10977 (base32 "0a8pb3v951f4x7h968rqfsa19c8arz21zw1vaj42jza22rap8fgv"))))
10978 (build-system ruby-build-system)
10979 (arguments
10980 `(#:tests? #f)) ;no rakefile
10981 (propagated-inputs
10982 (list ruby-kramdown))
10983 (synopsis "Kramdown parser for the GFM dialect of Markdown")
10984 (description
10985 "This is a parser for kramdown that converts Markdown documents in the
10986GFM dialect to HTML.")
10987 (home-page "https://github.com/kramdown/parser-gfm")
10988 (license license:expat)))
10989
10990(define-public ruby-http-parser.rb
10991 (package
10992 (name "ruby-http-parser.rb")
10993 (version "0.6.0")
10994 (source
10995 (origin
10996 (method url-fetch)
10997 (uri (rubygems-uri "http_parser.rb" version))
10998 (sha256
10999 (base32
11000 "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi"))))
11001 (build-system ruby-build-system)
11002 (arguments
11003 ;; No tests
11004 `(#:tests? #f))
11005 (native-inputs
11006 (list ruby-rake-compiler ruby-rspec))
11007 (home-page "https://github.com/tmm1/http_parser.rb")
11008 (synopsis "HTTP parser un Ruby")
11009 (description "This gem is a simple callback-based HTTP request/response
11010parser for writing http servers, clients and proxies.")
11011 (license license:expat)))
11012
11013(define-public ruby-em-websocket
11014 (package
11015 (name "ruby-em-websocket")
11016 (version "0.5.1")
11017 (source
11018 (origin
11019 (method url-fetch)
11020 (uri (rubygems-uri "em-websocket" version))
11021 (sha256
11022 (base32
11023 "1bsw8vjz0z267j40nhbmrvfz7dvacq4p0pagvyp17jif6mj6v7n3"))))
11024 (build-system ruby-build-system)
11025 (arguments
11026 ;; No tests
11027 `(#:tests? #f))
11028 (propagated-inputs
11029 (list ruby-eventmachine ruby-http-parser.rb))
11030 (native-inputs
11031 (list bundler ruby-rspec))
11032 (home-page "https://github.com/igrigorik/em-websocket")
11033 (synopsis "EventMachine based WebSocket server")
11034 (description "Em-websocket is an EventMachine based WebSocket server
11035implementation.")
11036 (license license:expat)))
11037
11038(define-public ruby-rouge
11039 (package
11040 (name "ruby-rouge")
11041 (version "3.26.1")
11042 (source (origin
11043 (method url-fetch)
11044 (uri (rubygems-uri "rouge" version))
11045 (sha256
11046 (base32
11047 "197k0vskf72wxx0gzwld2jzg27bb7982xlvnzy9adlvkzp7nh8vf"))))
11048 (build-system ruby-build-system)
11049 (arguments `(#:tests? #f)); No rakefile
11050 (home-page "http://rouge.jneen.net/")
11051 (synopsis "Code highlighter")
11052 (description "Rouge is a code highlighter written in Ruby. It supports more
11053than 100 languages and outputs HTML or ANSI 256-color text. Its HTML output
11054is compatible with stylesheets designed for pygments.")
11055 (license (list
11056 ;; rouge is licensed under expat
11057 license:expat
11058 ;; pygments is licensed under bsd-2
11059 license:bsd-2))))
11060
11061(define-public ruby-hashie
11062 (package
11063 (name "ruby-hashie")
11064 (version "3.6.0")
11065 (source (origin
11066 (method url-fetch)
11067 (uri (rubygems-uri "hashie" version))
11068 (sha256
11069 (base32
11070 "13bdzfp25c8k51ayzxqkbzag3wj5gc1jd8h7d985nsq6pn57g5xh"))))
11071 (build-system ruby-build-system)
11072 (native-inputs
11073 (list bundler))
11074 (arguments `(#:tests? #f)); FIXME: Could not locate Gemfile or .bundle/ directory
11075 (home-page "https://github.com/intridea/hashie")
11076 (synopsis "Extensions to Ruby Hashes")
11077 (description "Hashie is a collection of classes and mixins that make Ruby
11078hashes more powerful.")
11079 (license license:expat)))
11080
11081(define-public ruby-heredoc-unindent
11082 (package
11083 (name "ruby-heredoc-unindent")
11084 (version "1.2.0")
11085 (source (origin
11086 (method url-fetch)
11087 (uri (rubygems-uri "heredoc_unindent" version))
11088 (sha256
11089 (base32
11090 "14ijr2fsjwhrkjkcaz81d5xnfa4vvgvcflrff83avqw9klm011yw"))))
11091 (build-system ruby-build-system)
11092 (native-inputs
11093 (list ruby-hoe))
11094 (home-page "https://github.com/adrianomitre/heredoc_unindent")
11095 (synopsis "Heredoc indentation cleaner")
11096 (description "This gem removes common margin from indented strings, such
11097as the ones produced by indented heredocs. In other words, it strips out
11098leading whitespace chars at the beginning of each line, but only as much as
11099the line with the smallest margin.
11100
11101It is acknowledged that many strings defined by heredocs are just code and
11102fact is that most parsers are insensitive to indentation. If, however, the
11103strings are to be used otherwise, be it for printing or testing, the extra
11104indentation will probably be an issue and hence this gem.")
11105 (license license:expat)))
11106
11107(define-public ruby-safe-yaml
11108 (package
11109 (name "ruby-safe-yaml")
11110 (version "1.0.5")
11111 (source
11112 (origin
11113 (method git-fetch)
11114 (uri (git-reference
11115 (url "https://github.com/dtao/safe_yaml")
11116 (commit version)))
11117 (file-name (git-file-name name version))
11118 (sha256
11119 (base32
11120 "1a0wh7y3va2m7bjza95na2snw0vrdh9syz40mpjvjphbc4ph3pzg"))))
11121 (build-system ruby-build-system)
11122 (native-inputs
11123 (list ruby-rspec ruby-hashie ruby-heredoc-unindent))
11124 (arguments
11125 '(#:test-target "spec"
11126 #:phases
11127 (modify-phases %standard-phases
11128 (add-before 'check 'set-TZ
11129 (lambda _
11130 ;; This test is dependent on the timezone
11131 ;; spec/transform/to_date_spec.rb:35
11132 ;; # SafeYAML::Transform::ToDate converts times to the local
11133 ;; timezone
11134 (setenv "TZ" "UTC-11")
11135 #t)))))
11136 (home-page "https://github.com/dtao/safe_yaml")
11137 (synopsis "YAML parser")
11138 (description "The SafeYAML gem provides an alternative implementation of
11139YAML.load suitable for accepting user input in Ruby applications.")
11140 (license license:expat)))
11141
11142(define-public ruby-yaml-lint
11143 (package
11144 (name "ruby-yaml-lint")
11145 (version "0.0.10")
11146 (source
11147 (origin
11148 (method git-fetch)
11149 (uri (git-reference
11150 (url "https://github.com/Pryz/yaml-lint")
11151 (commit version)))
11152 (file-name (git-file-name name version))
11153 (sha256
11154 (base32
11155 "1jz26mxjkdyjbgqp7f9isnzd1i6vkizsswyj1v639nmq31hwfh0d"))))
11156 (build-system ruby-build-system)
11157 (arguments
11158 `(#:phases
11159 (modify-phases %standard-phases
11160 (replace 'check
11161 (lambda* (#:key tests? #:allow-other-keys)
11162 (when tests?
11163 (invoke "rspec"))
11164 #t)))))
11165 (native-inputs
11166 (list ruby-coveralls ruby-rspec ruby-simplecov))
11167 (synopsis "Simple YAML check tool")
11168 (description
11169 "@code{yaml-lint} will simply try to load the YAML file with the built-in
11170Ruby yaml library.")
11171 (home-page "https://github.com/Pryz/yaml-lint")
11172 (license license:expat)))
11173
11174(define-public ruby-mercenary
11175 (package
11176 (name "ruby-mercenary")
11177 (version "0.4.0")
11178 (source (origin
11179 (method url-fetch)
11180 (uri (rubygems-uri "mercenary" version))
11181 (sha256
11182 (base32
11183 "0f2i827w4lmsizrxixsrv2ssa3gk1b7lmqh8brk8ijmdb551wnmj"))))
11184 (build-system ruby-build-system)
11185 (arguments `(#:test-target "spec"))
11186 (native-inputs
11187 (list bundler))
11188 (home-page "https://github.com/jekyll/mercenary")
11189 (synopsis "Command-line apps library in Ruby")
11190 (description "Mercenary is a lightweight and flexible library for writing
11191command-line apps in Ruby.")
11192 (license license:expat)))
11193
11194(define-public ruby-liquid
11195 (package
11196 (name "ruby-liquid")
11197 (version "4.0.0")
11198 (source (origin
11199 (method url-fetch)
11200 (uri (rubygems-uri "liquid" version))
11201 (sha256
11202 (base32
11203 "17fa0jgwm9a935fyvzy8bysz7j5n1vf1x2wzqkdfd5k08dbw3x2y"))))
11204 (build-system ruby-build-system)
11205 (arguments `(#:tests? #f)); No rakefile
11206 (home-page "https://shopify.github.io/liquid/")
11207 (synopsis "Template language")
11208 (description "Liquid is a template language written in Ruby. It is used
11209to load dynamic content on storefronts.")
11210 (license license:expat)))
11211
11212(define-public ruby-forwardable-extended
11213 (package
11214 (name "ruby-forwardable-extended")
11215 (version "2.6.0")
11216 (source (origin
11217 (method url-fetch)
11218 (uri (rubygems-uri "forwardable-extended" version))
11219 (sha256
11220 (base32
11221 "15zcqfxfvsnprwm8agia85x64vjzr2w0xn9vxfnxzgcv8s699v0v"))))
11222 (build-system ruby-build-system)
11223 (arguments `(#:tests? #f)); Cyclic dependency on luna-rspec-formatters
11224 (home-page "https://github.com/envygeeks/forwardable-extended")
11225 (synopsis "Delegation to hashes and instance variables in Forwardable")
11226 (description "Forwardable Extended provides more @code{Forwardable}
11227methods for your source as @code{Forwardable::Extended}.")
11228 (license license:expat)))
11229
11230(define-public ruby-pathutil
11231 (package
11232 (name "ruby-pathutil")
11233 (version "0.16.2")
11234 (source (origin
11235 (method url-fetch)
11236 (uri (rubygems-uri "pathutil" version))
11237 (sha256
11238 (base32
11239 "12fm93ljw9fbxmv2krki5k5wkvr7560qy8p4spvb9jiiaqv78fz4"))))
11240 (build-system ruby-build-system)
11241 (propagated-inputs
11242 (list ruby-forwardable-extended))
11243 (native-inputs
11244 (list bundler ruby-rspec))
11245 ;; Fails with: cannot load such file --
11246 ;; /tmp/guix-build-ruby-pathutil-0.16.0.drv-0/gem/benchmark/support/task
11247 (arguments `(#:tests? #f))
11248 (home-page "https://github.com/envygeeks/pathutil")
11249 (synopsis "Extended implementation of Pathname")
11250 (description "Pathutil tries to be a faster pure Ruby implementation of
11251Pathname.")
11252 (license license:expat)))
11253
11254(define-public ruby-terminal-table
11255 (package
11256 (name "ruby-terminal-table")
11257 (version "2.0.0")
11258 (source
11259 (origin
11260 (method url-fetch)
11261 (uri (rubygems-uri "terminal-table" version))
11262 (sha256
11263 (base32
11264 "18rbrh464ysqbdv53iwj0r8frshn65566kyj044cp3x9c2754jwh"))))
11265 (arguments
11266 '(#:phases
11267 (modify-phases %standard-phases
11268 (add-before 'check 'remove-gemfile-lock
11269 (lambda _
11270 (delete-file "Gemfile.lock")))
11271 (add-before 'check 'remove-unnecessary-dependencies
11272 (lambda _
11273 (substitute* "terminal-table.gemspec"
11274 (("s.add_runtime_dependency.*") "\n")
11275 (("s.add_development_dependency.*") "\n"))
11276 (substitute* "Gemfile"
11277 ((".*tins.*") "\n"))))
11278 (replace 'check
11279 (lambda* (#:key tests? #:allow-other-keys)
11280 (when tests?
11281 (invoke "rspec")))))))
11282 (build-system ruby-build-system)
11283 (propagated-inputs
11284 (list ruby-unicode-display-width))
11285 (native-inputs
11286 (list ruby-rspec))
11287 (home-page "https://github.com/tj/terminal-table")
11288 (synopsis "Simple, feature rich ASCII table generation library")
11289 (description
11290 "Terminal Table is a fast and simple, yet feature rich
11291table generator written in Ruby. It supports ASCII and
11292Unicode formatted tables.")
11293 (license license:expat)))
11294
11295(define-public jekyll
11296 (package
11297 (name "jekyll")
11298 (version "4.2.0")
11299 (source (origin
11300 (method url-fetch)
11301 (uri (rubygems-uri "jekyll" version))
11302 (sha256
11303 (base32
11304 "0cqkh78jw8scrajyx5nla0vwm9fvp2qql3kdcvvplcq9mazy8snq"))))
11305 (build-system ruby-build-system)
11306 (arguments
11307 ;; No rakefile, but a test subdirectory.
11308 `(#:tests? #f
11309 #:phases
11310 (modify-phases %standard-phases
11311 (add-before 'build 'fix-i18n
11312 (lambda _
11313 (substitute* ".gemspec"
11314 (("~> 0.7") ">= 0.7")
11315 (("~> 1.14") ">= 1.14"))
11316 #t)))))
11317 (propagated-inputs
11318 `(("ruby-addressable" ,ruby-addressable)
11319 ("ruby-colorator" ,ruby-colorator)
11320 ("ruby-em-websocket" ,ruby-em-websocket)
11321 ("ruby-i18n" ,ruby-i18n)
11322 ("ruby-jekyll-sass-converter" ,ruby-jekyll-sass-converter)
11323 ("ruby-jekyll-watch" ,ruby-jekyll-watch)
11324 ("ruby-kramdown" ,ruby-kramdown-parser-gfm)
11325 ("ruby-liquid" ,ruby-liquid)
11326 ("ruby-mercenary" ,ruby-mercenary)
11327 ("ruby-pathutil" ,ruby-pathutil)
11328 ("ruby-rouge" ,ruby-rouge)
11329 ("ruby-safe-yaml" ,ruby-safe-yaml)
11330 ("ruby-sassc" ,ruby-sassc)
11331 ("ruby-terminal-table" ,ruby-terminal-table)))
11332 (home-page "https://jekyllrb.com/")
11333 (synopsis "Static site generator")
11334 (description "Jekyll is a simple, blog aware, static site generator.")
11335 (license license:expat)))
11336
11337(define-public ruby-jekyll-paginate-v2
11338 (package
11339 (name "ruby-jekyll-paginate-v2")
11340 (version "3.0.0")
11341 (source (origin
11342 (method url-fetch)
11343 (uri (rubygems-uri "jekyll-paginate-v2" version))
11344 (sha256
11345 (base32
11346 "1qzlqhpiqz28624fp0ak76hfy7908w6kpx62v7z43aiwjv0yc6q0"))))
11347 (build-system ruby-build-system)
11348 (propagated-inputs
11349 (list jekyll))
11350 (home-page "https://github.com/sverrirs/jekyll-paginate-v2")
11351 (synopsis "Pagination Generator for Jekyll 3")
11352 (description "The Pagination Generator forms the core of the pagination
11353logic in Jekyll. It calculates and generates the pagination pages.")
11354 (license license:expat)))
11355
11356(define-public ruby-faraday
11357 (package
11358 (name "ruby-faraday")
11359 (version "0.15.4")
11360 (source
11361 (origin
11362 (method url-fetch)
11363 (uri (rubygems-uri "faraday" version))
11364 (sha256
11365 (base32
11366 "0s72m05jvzc1pd6cw1i289chas399q0a14xrwg4rvkdwy7bgzrh0"))))
11367 (build-system ruby-build-system)
11368 (arguments
11369 '(#:tests? #f))
11370 (propagated-inputs
11371 (list ruby-multipart-post))
11372 (synopsis "Ruby HTTP/REST API client library")
11373 (description
11374 "Faraday is a HTTP/REST API client library which provides a common
11375interface over different adapters.")
11376 (home-page "https://github.com/lostisland/faraday")
11377 (license license:expat)))
11378
11379(define-public ruby-nio4r
11380 (package
11381 (name "ruby-nio4r")
11382 (version "2.5.2")
11383 (source
11384 (origin
11385 (method url-fetch)
11386 (uri (rubygems-uri "nio4r" version))
11387 (sha256
11388 (base32
11389 "0gnmvbryr521r135yz5bv8354m7xn6miiapfgpg1bnwsvxz8xj6c"))))
11390 (build-system ruby-build-system)
11391 (arguments
11392 '(#:phases
11393 (modify-phases %standard-phases
11394 (add-after 'unpack 'remove-unnecessary-dependencies
11395 (lambda _
11396 (substitute* "spec/spec_helper.rb"
11397 ;; Coveralls is for uploading test coverage information to an
11398 ;; online service, and thus unnecessary for building the Guix
11399 ;; package
11400 (("require \"coveralls\"") "")
11401 (("Coveralls\\.wear!") "")
11402 ;; Remove rspec/retry as we are not retrying the tests
11403 (("require \"rspec/retry\"") "")
11404 (("config\\.display_try_failure_messages = true") "")
11405 (("config\\.verbose_retry = true") ""))
11406 #t))
11407 (add-before 'check 'compile
11408 (lambda _
11409 (invoke "rake" "compile")
11410 #t))
11411 (replace 'check
11412 (lambda* (#:key tests? #:allow-other-keys)
11413 (when tests?
11414 (invoke "rspec"))
11415 #t)))))
11416 (native-inputs
11417 (list bundler ruby-rake-compiler ruby-rspec ruby-rubocop))
11418 (synopsis "New I/O for Ruby")
11419 (description
11420 "@code{nio} provides cross-platform asynchronous I/O primitives in Ruby
11421for scalable network clients and servers.")
11422 (home-page "https://github.com/socketry/nio4r")
11423 (license license:expat)))
11424
11425(define-public ruby-globalid
11426 (package
11427 (name "ruby-globalid")
11428 (version "0.4.2")
11429 (source
11430 (origin
11431 (method url-fetch)
11432 (uri (rubygems-uri "globalid" version))
11433 (sha256
11434 (base32
11435 "1zkxndvck72bfw235bd9nl2ii0lvs5z88q14706cmn702ww2mxv1"))))
11436 (build-system ruby-build-system)
11437 (arguments
11438 '(;; No included tests
11439 #:tests? #f))
11440 (propagated-inputs
11441 (list ruby-activesupport))
11442 (synopsis "Generate URIs idenfitying model instances in Ruby")
11443 (description
11444 "@code{GlobalID} provides a way to generate URIs from a model in Ruby that
11445uniquely identify it.")
11446 (home-page "https://rubyonrails.org/")
11447 (license license:expat)))
11448
11449(define-public ruby-sprockets
11450 (package
11451 (name "ruby-sprockets")
11452 (version "3.7.2")
11453 (source
11454 (origin
11455 (method url-fetch)
11456 (uri (rubygems-uri "sprockets" version))
11457 (sha256
11458 (base32
11459 "182jw5a0fbqah5w9jancvfmjbk88h8bxdbwnl4d3q809rpxdg8ay"))))
11460 (build-system ruby-build-system)
11461 (arguments
11462 '(;; No included tests
11463 #:tests? #f))
11464 (propagated-inputs
11465 (list ruby-concurrent ruby-rack))
11466 (synopsis "Sprockets is a Rack-based asset packaging system")
11467 (description
11468 "Sprockets is a Rack-based asset packaging system that concatenates and
11469serves JavaScript, CoffeeScript, CSS, LESS, Sass, and SCSS.")
11470 (home-page "https://github.com/rails/sprockets")
11471 (license license:expat)))
11472
11473(define-public ruby-mustache
11474 (package
11475 (name "ruby-mustache")
11476 (version "1.1.1")
11477 (source
11478 (origin
11479 (method url-fetch)
11480 (uri (rubygems-uri "mustache" version))
11481 (sha256
11482 (base32 "1l0p4wx15mi3wnamfv92ipkia4nsx8qi132c6g51jfdma3fiz2ch"))))
11483 (build-system ruby-build-system)
11484 (native-inputs
11485 `(("ruby-simplecov" ,ruby-simplecov)
11486 ("test-patch"
11487 ,(search-patch "ruby-mustache-1.1.1-fix-race-condition-tests.patch"))))
11488 (arguments
11489 `(#:phases
11490 (modify-phases %standard-phases
11491 (add-after 'unpack 'patch-tests
11492 (lambda* (#:key inputs #:allow-other-keys)
11493 (invoke "patch" "-p1" "--batch" "-i"
11494 (assoc-ref inputs "test-patch")))))))
11495 (synopsis "Framework-agnostic way to render logic-free views")
11496 (description
11497 "Mustache is a framework-agnostic way to render logic-free views.
11498Think of Mustache as a replacement for your views. Instead of views
11499consisting of ERB or HAML with random helpers and arbitrary logic,
11500your views are broken into two parts: a Ruby class and an HTML
11501template.")
11502 (home-page "https://github.com/mustache/mustache")
11503 (license license:expat)))
11504
11505(define-public ruby-mustermann
11506 (package
11507 (name "ruby-mustermann")
11508 (version "1.0.3")
11509 (source
11510 (origin
11511 (method url-fetch)
11512 (uri (rubygems-uri "mustermann" version))
11513 (sha256
11514 (base32
11515 "0lycgkmnyy0bf29nnd2zql5a6pcf8sp69g9v4xw0gcfcxgpwp7i1"))))
11516 (build-system ruby-build-system)
11517 (arguments
11518 ;; No tests.
11519 '(#:tests? #f))
11520 (synopsis "Library implementing patterns that behave like regular expressions")
11521 (description "Given a string pattern, Mustermann will turn it into an
11522object that behaves like a regular expression and has comparable performance
11523characteristics.")
11524 (home-page "https://github.com/sinatra/mustermann")
11525 (license license:expat)))
11526
11527(define-public ruby-html-proofer
11528 (package
11529 (name "ruby-html-proofer")
11530 (version "3.18.5")
11531 (source
11532 (origin
11533 (method git-fetch)
11534 (uri (git-reference
11535 (url "https://github.com/gjtorikian/html-proofer")
11536 (commit (string-append "v" version))))
11537 (file-name (git-file-name name version))
11538 (sha256
11539 (base32
11540 "1pxb0fajb3l3lm7sqj548qwl7vx6sx3jy7n4cns9d4lqx7s9r9xb"))))
11541 (build-system ruby-build-system)
11542 (arguments
11543 `(;; FIXME: Tests depend on rubocop-standard.
11544 #:tests? #f))
11545 (native-inputs
11546 (list ruby-awesome-print
11547 ruby-redcarpet
11548 ruby-rspec
11549 ruby-rubocop
11550 ruby-rubocop-performance
11551 ruby-pry-byebug))
11552 (propagated-inputs
11553 (list ruby-addressable
11554 ruby-mercenary
11555 ruby-nokogumbo
11556 ruby-parallel
11557 ruby-rainbow
11558 ruby-typhoeus
11559 ruby-yell))
11560 (synopsis "Test your rendered HTML files to make sure they're accurate")
11561 (description
11562 "HTMLProofer is a set of tests to validate your HTML output. These
11563tests check if your image references are legitimate, if they have alt tags,
11564if your internal links are working, and so on. It's intended to be an
11565all-in-one checker for your output.")
11566 (home-page "https://github.com/gjtorikian/html-proofer")
11567 (license license:expat)))
11568
11569(define-public ruby-htmlentities
11570 (package
11571 (name "ruby-htmlentities")
11572 (version "4.3.4")
11573 (source
11574 (origin
11575 (method url-fetch)
11576 (uri (rubygems-uri "htmlentities" version))
11577 (sha256
11578 (base32
11579 "1nkklqsn8ir8wizzlakncfv42i32wc0w9hxp00hvdlgjr7376nhj"))))
11580 (build-system ruby-build-system)
11581 (arguments
11582 `(#:phases
11583 (modify-phases %standard-phases
11584 (replace 'check
11585 (lambda _
11586 (map (lambda (file)
11587 (invoke "ruby" "-Itest" file))
11588 (find-files "./test" ".*_test\\.rb")))))))
11589 (synopsis "Encode and decode (X)HTML entities")
11590 (description
11591 "This package provides a module for encoding and decoding (X)HTML
11592entities.")
11593 (home-page "https://github.com/threedaymonk/htmlentities")
11594 (license license:expat)))
11595
11596(define-public ruby-sinatra
11597 (package
11598 (name "ruby-sinatra")
11599 (version "2.0.8.1")
11600 (source
11601 (origin
11602 (method url-fetch)
11603 (uri (rubygems-uri "sinatra" version))
11604 (sha256
11605 (base32
11606 "0riy3hwjab1mr73jcqx3brmbmwspnw3d193j06a5f0fy1w35z15q"))))
11607 (build-system ruby-build-system)
11608 (arguments
11609 `(#:phases
11610 (modify-phases %standard-phases
11611 ;; See: https://github.com/sinatra/sinatra/issues/1578.
11612 (add-after 'extract-gemspec 'fix-slow-doc-generation
11613 (lambda _
11614 (substitute* "sinatra.gemspec"
11615 (("\"README.rdoc\"\\.freeze," all)
11616 (string-append all " \"--exclude=.*\\.md\".freeze,")))
11617 #t)))))
11618 (propagated-inputs
11619 (list ruby-mustermann ruby-rack ruby-rack-protection ruby-tilt))
11620 (synopsis "DSL for quick web applications creation in Ruby")
11621 (description
11622 "Sinatra is a DSL for quickly creating web applications in Ruby with
11623minimal effort.")
11624 (home-page "http://sinatrarb.com/")
11625 (license license:expat)))
11626
11627(define-public ruby-thin
11628 (package
11629 (name "ruby-thin")
11630 (version "1.7.2")
11631 (source
11632 (origin
11633 (method url-fetch)
11634 (uri (rubygems-uri "thin" version))
11635 (sha256
11636 (base32
11637 "0nagbf9pwy1vg09k6j4xqhbjjzrg5dwzvkn4ffvlj76fsn6vv61f"))))
11638 (build-system ruby-build-system)
11639 (arguments
11640 ;; No tests.
11641 '(#:tests? #f))
11642 (propagated-inputs
11643 (list ruby-daemons ruby-eventmachine ruby-rack))
11644 (synopsis "Thin and fast web server for Ruby")
11645 (description "Thin is a Ruby web server that glues together 3 Ruby libraries:
11646@itemize
11647@item the Mongrel parser,
11648@item Event Machine, a network I/O library with high scalability, performance
11649and stability,
11650@item Rack, a minimal interface between webservers and Ruby frameworks.
11651@end itemize\n")
11652 (home-page "https://github.com/macournoyer/thin")
11653 (license license:ruby)))
11654
11655(define-public ruby-skinny
11656 (package
11657 (name "ruby-skinny")
11658 (version "0.2.4")
11659 (source
11660 (origin
11661 (method url-fetch)
11662 (uri (rubygems-uri "skinny" version))
11663 (sha256
11664 (base32
11665 "1y3yvx88ylgz4d2s1wskjk5rkmrcr15q3ibzp1q88qwzr5y493a9"))))
11666 (build-system ruby-build-system)
11667 (arguments
11668 '(#:tests? #f ; No included tests
11669 #:phases
11670 (modify-phases %standard-phases
11671 (add-before 'build 'patch-gemspec
11672 (lambda _
11673 (substitute* ".gemspec"
11674 (("<eventmachine>.freeze, \\[\\\"~> 1.0.0\"")
11675 "<eventmachine>, [\">= 1.0.0\"")
11676 (("<thin>.freeze, \\[\\\"< 1.7\", ") "<thin>, ["))
11677 #t)))))
11678 (propagated-inputs
11679 (list ruby-eventmachine ruby-thin))
11680 (synopsis "Simple, upgradable WebSockets for Ruby Thin")
11681 (description "Skinny is a simple, upgradable WebSockets for Ruby, using
11682the Thin library.")
11683 (home-page "https://github.com/sj26/skinny")
11684 (license license:expat)))
11685
11686(define-public ruby-sys-filesystem
11687 (package
11688 (name "ruby-sys-filesystem")
11689 (version "1.3.4")
11690 (source (origin
11691 (method url-fetch)
11692 (uri (rubygems-uri "sys-filesystem" version))
11693 (sha256
11694 (base32
11695 "0mizqnsiagagmracadr16s5na2ks2j3ih1w0f3gp4ssrda6szl01"))))
11696 (build-system ruby-build-system)
11697 (arguments
11698 '(#:phases (modify-phases %standard-phases
11699 (add-before 'check 'set-HOME
11700 (lambda _
11701 ;; Some tests attempt to stat $HOME. Let them.
11702 (setenv "HOME" "/tmp")
11703 #t)))))
11704 (propagated-inputs
11705 (list ruby-ffi))
11706 (native-inputs
11707 (list ruby-mkmf-lite))
11708 (synopsis "Gather file system information")
11709 (description
11710 "The @code{sys-filesystem} library provides a cross-platform interface
11711for gathering file system information, such as disk space and mount points.")
11712 (home-page "https://github.com/djberg96/sys-filesystem")
11713 (license license:asl2.0)))
11714
11715(define-public mailcatcher
11716 (package
11717 (name "mailcatcher")
11718 (version "0.7.1")
11719 (source
11720 (origin
11721 (method url-fetch)
11722 (uri (rubygems-uri "mailcatcher" version))
11723 (sha256
11724 (base32
11725 "02w1ycyfv7x0sh9799lz7xa65p5qvl5z4pa8a7prb68h2zwkfq0n"))))
11726 (build-system ruby-build-system)
11727 (arguments
11728 ;; Tests require web/assets which is not included in the output. We
11729 ;; might be able to fix this by adding the Git repository to the GEM_PATH
11730 ;; of the tests. See ruby-mysql2.
11731 '(#:tests? #f
11732 #:phases
11733 (modify-phases %standard-phases
11734 (add-before 'build 'patch-gemspec
11735 (lambda _
11736 (substitute* ".gemspec"
11737 (("<eventmachine>.freeze, \\[\\\"= 1.0.9.1")
11738 "<eventmachine>, [\">= 1.0.9.1")
11739 (("<rack>.freeze, \\[\\\"~> 1.5") "<rack>, [\">= 1.5")
11740 (("<thin>.freeze, \\[\\\"~> 1.5.0") "<thin>, [\">= 1.5.0")
11741 (("<sinatra>.freeze, \\[\\\"~> 1.2") "<sinatra>, [\">= 1.2"))
11742 #t))
11743 (add-before 'build 'loosen-dependency-contraint
11744 (lambda _
11745 (substitute* "lib/mail_catcher.rb"
11746 (("\"eventmachine\", \"1.0.9.1\"") "\"eventmachine\", \">= 1.0.9.1\"")
11747 (("\"rack\", \"~> 1.5\"") "\"rack\", \">= 1.5\"")
11748 (("\"thin\", \"~> 1.5.0\"") "\"thin\", \">= 1.5.0\"")
11749 (("\"sinatra\", \"~> 1.2\"") "\"sinatra\", \">= 1.2\""))
11750 #t)))))
11751 (inputs
11752 (list ruby-eventmachine
11753 ruby-mail
11754 ruby-rack
11755 ruby-sinatra
11756 ruby-skinny
11757 ruby-sqlite3
11758 ruby-thin))
11759 (synopsis "SMTP server which catches messages to display them a browser")
11760 (description
11761 "MailCatcher runs a super simple SMTP server which catches any message
11762sent to it to display in a web interface. Run mailcatcher, set your favourite
11763app to deliver to smtp://127.0.0.1:1025 instead of your default SMTP server,
11764then check out http://127.0.0.1:1080 to see the mail.")
11765 (home-page "https://mailcatcher.me")
11766 (license license:expat)))
11767
11768(define-public ruby-backport
11769 (package
11770 (name "ruby-backport")
11771 (version "1.1.2")
11772 (source
11773 (origin
11774 ;; The gem does not include test code, so fetch from the Git repository.
11775 (method git-fetch)
11776 (uri (git-reference
11777 (url "https://github.com/castwide/backport")
11778 (commit (string-append "v" version))))
11779 (file-name (git-file-name name version))
11780 (sha256
11781 (base32 "18fpg1n7n2z02ykz9v1x1q0cqa2lvivf8ygka768s01q1r9wfwv2"))))
11782 (build-system ruby-build-system)
11783 (arguments
11784 `(#:test-target "spec"))
11785 (native-inputs
11786 (list bundler ruby-rspec))
11787 (inputs
11788 (list ruby-simplecov))
11789 (synopsis "Pure Ruby library for event-driven IO")
11790 (description
11791 "This package provides a pure Ruby library for event-driven IO.")
11792 (home-page "https://github.com/castwide/backport")
11793 (license license:expat)))
11794
11795(define-public ruby-json-schema
11796 (package
11797 (name "ruby-json-schema")
11798 (version "2.8.1")
11799 (source
11800 (origin
11801 (method url-fetch)
11802 (uri (rubygems-uri "json-schema" version))
11803 (sha256
11804 (base32
11805 "1yv5lfmr2nzd14af498xqd5p89f3g080q8wk0klr3vxgypsikkb5"))))
11806 (build-system ruby-build-system)
11807 (arguments
11808 `(#:tests? #f ; no tests
11809 #:phases
11810 (modify-phases %standard-phases
11811 (replace 'build
11812 (lambda _
11813 (invoke "gem" "build" ".gemspec"))))))
11814 (propagated-inputs
11815 (list ruby-addressable))
11816 (synopsis "Ruby JSON Schema Validator")
11817 (description "This library provides Ruby with an interface for validating
11818JSON objects against a JSON schema conforming to JSON Schema Draft 4. Legacy
11819support for JSON Schema Draft 3, JSON Schema Draft 2, and JSON Schema Draft 1
11820is also included.")
11821 (home-page "https://github.com/ruby-json-schema/json-schema")
11822 (license license:expat)))
11823
11824(define-public swagger-diff
11825 (package
11826 (name "swagger-diff")
11827 (version "1.1.2")
11828 (source
11829 (origin
11830 (method url-fetch)
11831 (uri (rubygems-uri "swagger-diff" version))
11832 (sha256
11833 (base32
11834 "1hxx50nga1bqn254iqjcdwkc9c72364ks9lyjyw10ajz0l0ly7sn"))))
11835 (build-system ruby-build-system)
11836 (arguments
11837 `(#:test-target "spec"
11838 #:phases
11839 (modify-phases %standard-phases
11840 ;; Don't run or require rubocop, the code linting tool, as this is a
11841 ;; bit unnecessary.
11842 (add-after 'unpack 'dont-run-rubocop
11843 (lambda _
11844 (substitute* "Rakefile"
11845 ((".*rubocop.*") "")
11846 ((".*RuboCop.*") ""))
11847 #t)))))
11848 (propagated-inputs
11849 (list ruby-json-schema))
11850 (native-inputs
11851 (list bundler ruby-rspec-core ruby-rspec-expectations))
11852 (synopsis
11853 "Compare Open API Initiative specification files")
11854 (description
11855 "Swagger::Diff is a utility for comparing two different Open API
11856Initiative (OAI) specifications (formerly known as Swagger specifications).
11857It is intended to determine whether a newer API specification is
11858backwards-compatible with an older API specification.")
11859 (home-page "https://github.com/civisanalytics/swagger-diff")
11860 (license license:bsd-3)))
11861
11862(define-public ruby-reverse-markdown
11863 (package
11864 (name "ruby-reverse-markdown")
11865 (version "1.1.0")
11866 (source
11867 (origin
11868 (method url-fetch)
11869 (uri (rubygems-uri "reverse_markdown" version))
11870 (sha256
11871 (base32
11872 "0w7y5n74daajvl9gixr91nh8670d7mkgspkk3ql71m8azq3nffbg"))))
11873 (build-system ruby-build-system)
11874 (propagated-inputs
11875 (list ruby-nokogiri))
11876 (native-inputs
11877 (list bundler ruby-rspec ruby-kramdown ruby-simplecov))
11878 (arguments
11879 `(#:phases
11880 (modify-phases %standard-phases
11881 (replace 'check
11882 (lambda* (#:key tests? #:allow-other-keys)
11883 (when tests?
11884 (invoke "rspec"))
11885 #t)))))
11886 (synopsis "Convert HTML into Markdown")
11887 (description
11888 "This Ruby module allows you to map simple HTML back into
11889Markdown---e.g., if you want to import existing HTML data in your
11890application.")
11891 (home-page "https://github.com/xijo/reverse_markdown")
11892 (license license:wtfpl2)))
11893
11894(define-public ruby-solargraph
11895 (package
11896 (name "ruby-solargraph")
11897 (version "0.40.3")
11898 (source
11899 (origin
11900 (method url-fetch)
11901 (uri (rubygems-uri "solargraph" version))
11902 (sha256
11903 (base32
11904 "1gf049rm0yvw4r8r5yyi890idbfg8qh0dikqx5prvkh11srl73bz"))))
11905 (build-system ruby-build-system)
11906 (propagated-inputs
11907 (list ruby-backport
11908 bundler
11909 ruby-benchmark
11910 ruby-e2mmap
11911 ruby-jaro-winkler
11912 ruby-kramdown
11913 ruby-kramdown-parser-gfm
11914 ruby-maruku
11915 ruby-nokogiri
11916 ruby-parser
11917 ruby-reverse-markdown
11918 ruby-rubocop
11919 ruby-thor
11920 ruby-tilt
11921 ruby-yard))
11922 (native-inputs
11923 (list ruby-rspec ruby-pry ruby-simplecov ruby-webmock))
11924 ;; FIXME: can't figure out how to run the tests properly:
11925
11926 ;; An error occurred while loading spec_helper.
11927 ;; Failure/Error: return gem_original_require(path)
11928 ;; LoadError:
11929 ;; cannot load such file -- spec_helper
11930 (arguments
11931 '(#:tests? #f
11932 #:phases
11933 (modify-phases %standard-phases
11934 (replace 'check
11935 (lambda* (#:key tests? #:allow-other-keys)
11936 (when tests?
11937 (invoke "rspec"))
11938 #t)))))
11939 (synopsis
11940 "IDE tools for code completion, inline documentation, and static analysis")
11941 (description
11942 "Solargraph provides a comprehensive suite of tools for Ruby
11943programming: intellisense, diagnostics, inline documentation, and type
11944checking.")
11945 (home-page "https://solargraph.org/")
11946 (license license:expat)))
11947
11948(define-public ruby-wayback-machine-downloader
11949 (package
11950 (name "ruby-wayback-machine-downloader")
11951 (version "2.2.1")
11952 (source
11953 (origin
11954 (method url-fetch)
11955 (uri (rubygems-uri
11956 "wayback_machine_downloader"
11957 version))
11958 (sha256
11959 (base32
11960 "12kb1qmvmmsaihqab1prn6cmynkn6cgb4vf41mgv22wkcgv5wgk2"))))
11961 (build-system ruby-build-system)
11962 (arguments
11963 '(#:tests? #f)) ; no tests
11964 (synopsis "Download archived websites from the Wayback Machine")
11965 (description
11966 "Wayback Machine Downloader is a command line tool for downloading
11967websites from the Internet Archive's Wayback Machine (archive.org).
11968It allows fine grained control over what to download by specifying
11969which snapshots to consider and what files to include.")
11970 (home-page
11971 "https://github.com/hartator/wayback-machine-downloader")
11972 (license license:expat)))
11973
11974(define-public ruby-zeitwerk
11975 (package
11976 (name "ruby-zeitwerk")
11977 (version "2.4.2")
11978 (source
11979 (origin
11980 (method git-fetch)
11981 (uri (git-reference
11982 ;; No tests in the released gem.
11983 (url "https://github.com/fxn/zeitwerk")
11984 (commit (string-append "v" version))))
11985 (file-name (git-file-name name version))
11986 (sha256
11987 (base32
11988 "119fgdyb57gmss2yvfwfr47wcy8nny38sai72446krpihyavpizw"))))
11989 (build-system ruby-build-system)
11990 (native-inputs
11991 (list ruby-minitest ruby-minitest-focus ruby-minitest-reporters))
11992 (synopsis "Efficient and thread-safe code loader for Ruby")
11993 (description
11994 "Zeitwerk implements constant autoloading with Ruby semantics. Each gem
11995and application may have their own independent autoloader, with its own
11996configuration, inflector, and logger. Supports autoloading, reloading, and
11997eager loading.")
11998 (home-page "https://github.com/fxn/zeitwerk")
11999 (license license:expat)))
12000
12001(define-public ruby-wwtd
12002 (package
12003 (name "ruby-wwtd")
12004 (version "1.4.1")
12005 (home-page "https://github.com/grosser/wwtd")
12006 (source (origin
12007 (method git-fetch)
12008 (uri (git-reference
12009 (url home-page)
12010 (commit (string-append "v" version))))
12011 (file-name (git-file-name name version))
12012 (sha256
12013 (base32
12014 "0gw7vfnbb41cy67yw82zji3jkhfsgmzcgzaszm99ax77y18wclf2"))
12015 (modules '((guix build utils)))
12016 (snippet
12017 '(begin
12018 ;; Remove bundled library.
12019 (delete-file "spec/rake-12.3.0.gem")
12020 #t))))
12021 (build-system ruby-build-system)
12022 (arguments
12023 '(;; XXX: Tests need multiple versions of ruby, wants to run
12024 ;; `bundle install`, etc.
12025 #:tests? #f
12026 #:phases (modify-phases %standard-phases
12027 (replace 'replace-git-ls-files
12028 (lambda _
12029 (substitute* "wwtd.gemspec"
12030 (("git ls-files lib/ bin/`")
12031 "find lib/ bin/ -type f |sort`"))
12032 #t))
12033 (add-before 'check 'remove-version-constraints
12034 (lambda _
12035 (delete-file "Gemfile.lock")
12036 #t))
12037 (replace 'check
12038 (lambda* (#:key tests? #:allow-other-keys)
12039 (if tests?
12040 (invoke "rspec" "spec/")
12041 (format #t "test suite not run~%"))
12042 #t)))))
12043 (native-inputs
12044 (list ruby-bump ruby-rspec))
12045 (synopsis "Run @file{.travis.yml} files locally")
12046 (description
12047 "WWTD is a @dfn{Travis Simulator} that lets you run test matrices
12048defined in @file{.travis.yml} on your local machine, using @code{rvm},
12049@code{rbenv}, or @code{chruby} to test different versions of Ruby.")
12050 (license license:expat)))
12051
12052(define-public ruby-rugged
12053 (package
12054 (name "ruby-rugged")
12055 (version "1.1.0")
12056 (home-page "https://www.rubydoc.info/gems/rugged")
12057 (source
12058 (origin
12059 (method url-fetch)
12060 (uri (rubygems-uri "rugged" version))
12061 (sha256
12062 (base32 "04aq913plcxjw71l5r62qgz3bx3466p0wvgyfqahg5n3nybmcwqy"))))
12063 (build-system ruby-build-system)
12064 (arguments
12065 `(#:tests? #f
12066 #:gem-flags (list "--" "--use-system-libraries")))
12067 (inputs
12068 (list libgit2))
12069 (native-inputs
12070 (list ruby-minitest ruby-pry ruby-rake-compiler))
12071 (synopsis "Ruby bindings to the libgit2 linkable C Git library")
12072 (description "Rugged is a library for accessing libgit2 in Ruby. It gives
12073you the speed and portability of libgit2 with the beauty of the Ruby
12074language.")
12075 (license license:expat)))
12076
12077(define-public ruby-yell
12078 (package
12079 (name "ruby-yell")
12080 (version "2.2.2")
12081 (source
12082 (origin
12083 (method url-fetch)
12084 (uri (rubygems-uri "yell" version))
12085 (sha256
12086 (base32
12087 "1g16kcdhdfvczn7x81jiq6afg3bdxmb73skqjyjlkp5nqcy6y5hx"))))
12088 (build-system ruby-build-system)
12089 (arguments
12090 `(#:phases
12091 (modify-phases %standard-phases
12092 (replace 'check
12093 (lambda _
12094 (invoke "rake" "examples")))))) ; there is no test target.
12095 (synopsis
12096 "Extensible logging library for Ruby")
12097 (description
12098 "Yell is a comprehensive logging replacement for Ruby. It defines
12099multiple adapters, various log level combinations and message formatting
12100options.")
12101 (home-page "https://github.com/rudionrails/yell")
12102 (license license:expat)))
12103
12104(define-public ruby-e2mmap
12105 (package
12106 (name "ruby-e2mmap")
12107 (version "0.1.0")
12108 (source
12109 (origin
12110 (method url-fetch)
12111 (uri (rubygems-uri "e2mmap" version))
12112 (sha256
12113 (base32
12114 "0n8gxjb63dck3vrmsdcqqll7xs7f3wk78mw8w0gdk9wp5nx6pvj5"))))
12115 (build-system ruby-build-system)
12116 (arguments
12117 `(#:tests? #f)) ;; There is a rakefile but no tests
12118 (synopsis
12119 "Module for defining custom exceptions with specific messages")
12120 (description
12121 "Exception2MessageMapper (e2mmap) is a helper module for easily defining
12122exceptions with predefined messages.")
12123 (home-page "https://github.com/ruby/e2mmap")
12124 (license license:bsd-2)))
12125
12126(define-public ruby-benchmark
12127 (package
12128 (name "ruby-benchmark")
12129 (version "0.1.1")
12130 (source
12131 (origin
12132 (method url-fetch)
12133 (uri (rubygems-uri "benchmark" version))
12134 (sha256
12135 (base32
12136 "1jvrl7400fv7v2jjri1r7ilj3sri36hzipwwgpn5psib4c9c59c6"))))
12137 (build-system ruby-build-system)
12138 (synopsis "Performance benchmarking library")
12139 (description "This package provides methods for benchmarking Ruby code,
12140giving detailed reports on the time taken for each task.")
12141 (home-page "https://github.com/ruby/benchmark")
12142 (license license:bsd-2)))
12143
12144(define-public ruby-jekyll-feed
12145 (package
12146 (name "ruby-jekyll-feed")
12147 (version "0.15.1")
12148 (source
12149 (origin
12150 (method url-fetch)
12151 (uri (rubygems-uri "jekyll-feed" version))
12152 (sha256
12153 (base32
12154 "1zxqkrnix0xiw98531h5ga6h69jhzlx2jh9qhvcl67p8nq3sgza9"))))
12155 (build-system ruby-build-system)
12156 (arguments
12157 `(#:tests? #false)) ;there are none
12158 (propagated-inputs
12159 (list jekyll))
12160 (synopsis
12161 "Jekyll plugin to generate an Atom feed of your Jekyll posts")
12162 (description
12163 "This package provides a Jekyll plugin to generate an Atom feed
12164of your Jekyll posts.")
12165 (home-page
12166 "https://github.com/jekyll/jekyll-feed")
12167 (license license:expat)))
12168
12169(define-public ruby-jekyll-sitemap
12170 (package
12171 (name "ruby-jekyll-sitemap")
12172 (version "1.4.0")
12173 (source
12174 (origin
12175 (method url-fetch)
12176 (uri (rubygems-uri "jekyll-sitemap" version))
12177 (sha256
12178 (base32
12179 "0622rwsn5i0m5xcyzdn86l68wgydqwji03lqixdfm1f1xdfqrq0d"))))
12180 (build-system ruby-build-system)
12181 (arguments
12182 `(#:tests? #false)) ;there are none
12183 (propagated-inputs
12184 (list jekyll))
12185 (synopsis
12186 "Automatically generate a sitemap.xml for your Jekyll site")
12187 (description
12188 "This package provides a Jekyll plugin to silently generate
12189a sitemaps.org compliant sitemap for your Jekyll site.")
12190 (home-page
12191 "https://github.com/jekyll/jekyll-sitemap")
12192 (license license:expat)))
12193
12194(define-public ruby-jekyll-seo-tag
12195 (package
12196 (name "ruby-jekyll-seo-tag")
12197 (version "2.7.1")
12198 (source
12199 (origin
12200 (method url-fetch)
12201 (uri (rubygems-uri "jekyll-seo-tag" version))
12202 (sha256
12203 (base32
12204 "0fsi75hymk2wswy216fs224p5ycrzjw1kshw1bsl5czhv42wr2w3"))))
12205 (build-system ruby-build-system)
12206 (arguments
12207 `(#:tests? #false))
12208 (propagated-inputs
12209 (list jekyll))
12210 (synopsis
12211 "Jekyll plugin to add metadata tags for search engines and social networks")
12212 (description
12213 "This package provides a Jekyll plugin to add metadata tags for search engines
12214and social networks to better index and display your site's content.")
12215 (home-page
12216 "https://github.com/jekyll/jekyll-seo-tag")
12217 (license license:expat)))
12218
12219(define-public ruby-taskjuggler
12220 (package
12221 (name "ruby-taskjuggler")
12222 (version "3.7.1")
12223 (source
12224 (origin
12225 (method url-fetch)
12226 (uri (rubygems-uri "taskjuggler" version))
12227 (sha256
12228 (base32
12229 "1jrsajzhzpnfa8hj6lbf7adn8hls56dz3yw1gvzgz9y4zkka3k9v"))))
12230 (build-system ruby-build-system)
12231 (native-inputs (list tzdata-for-tests))
12232 (propagated-inputs
12233 (list ruby-mail ruby-term-ansicolor))
12234 (arguments
12235 '(#:phases (modify-phases %standard-phases
12236 (replace 'replace-git-ls-files
12237 (lambda _
12238 (substitute* "tasks/rdoc.rake"
12239 (("`git ls-files -- lib`")
12240 "`find lib/ -type f |sort`"))
12241 #t))
12242 (add-before 'check 'tzdir-setup
12243 (lambda* (#:key inputs #:allow-other-keys)
12244 (setenv "TZDIR"
12245 (string-append (assoc-ref inputs "tzdata")
12246 "/share/zoneinfo"))
12247 #t))
12248 (add-before 'check 'delete-test-BatchProcessor
12249 ;; test_BatchProcessor fails with exeption:
12250 ;; run> terminated with exception (report_on_exception is true)
12251 (lambda _
12252 (delete-file "test/test_BatchProcessor.rb")
12253 #t)))))
12254 (synopsis
12255 "Project management command line tool with a domain specific language")
12256 (description
12257 "TaskJuggler (tj3) is a project management tool for project planning and
12258tracking using a domain specific language; projects are plain text files
12259written using your favourite text editor. It includes reporting in HTML, CSV
12260or iCalendar format and an email based status tracking system to send and
12261receive time sheets from collaborators.
12262
12263It covers the complete spectrum of project management tasks from the first
12264idea to the completion of the project. It assists you during project scoping,
12265resource assignment, cost and revenue planning, risk and communication
12266management, status tracking and reporting.")
12267 (home-page "https://taskjuggler.org")
12268 (license license:gpl2)))
12269
12270(define-public ruby-cmath
12271 (package
12272 (name "ruby-cmath")
12273 (version "1.0.0")
12274 (source
12275 (origin
12276 (method url-fetch)
12277 (uri (rubygems-uri "cmath" version))
12278 (sha256
12279 (base32
12280 "1xkz6xyhpkjbdvpdib8450w62rls1mjryz0gzbbnadxkxn82nb8m"))))
12281 (build-system ruby-build-system)
12282 (arguments
12283 `(#:tests? #false))
12284 (native-inputs
12285 (list bundler ruby-rake-compiler))
12286 (synopsis "Trigonometric functions for complex numbers")
12287 (description
12288 "This gem is a library that provides trigonometric and transcendental
12289functions for complex numbers. The functions in this module accept integers,
12290floating-point numbers or complex numbers as arguments.")
12291 (home-page "https://github.com/ruby/cmath")
12292 (license license:bsd-2)))
12293
12294(define-public ruby-sucker-punch
12295 (package
12296 (name "ruby-sucker-punch")
12297 (version "3.0.1")
12298 (source
12299 (origin
12300 (method url-fetch)
12301 (uri (rubygems-uri "sucker_punch" version))
12302 (sha256
12303 (base32 "0yams24wndpj7dzdysvm4z1w6ggg4xvj4snxba66prahhxvik4xl"))))
12304 (build-system ruby-build-system)
12305 (arguments
12306 `(#:phases
12307 (modify-phases %standard-phases
12308 (add-after 'extract-gemspec 'less-strict-dependencies
12309 (lambda _
12310 (substitute* "sucker_punch.gemspec"
12311 (("1.0.0") "1.0")))))))
12312 (native-inputs
12313 (list
12314 ruby-pry))
12315 (propagated-inputs
12316 (list
12317 ruby-concurrent))
12318 (home-page "https://github.com/brandonhilkert/sucker_punch")
12319 (synopsis "Asynchronous processing library for Ruby")
12320 (description "Sucker Punch is a single-process Ruby asynchronous processing
12321library. It is perfect for asynchronous processes like emailing, data crunching
12322or social platform manipulation; and generally recommended for jobs that are
12323fast and non-mission critical like logs, emails, etc.")
12324 (license license:expat)))
12325
12326(define-public ruby-countdownlatch
12327 (package
12328 (name "ruby-countdownlatch")
12329 (version "1.0.0")
12330 (source
12331 (origin
12332 (method url-fetch)
12333 (uri (rubygems-uri "countdownlatch" version))
12334 (sha256
12335 (base32 "1v6pbay6z07fp7yvnba1hmyacbicvmjndd8rn2h1b5rmpcb5s0j3"))))
12336 (build-system ruby-build-system)
12337 (home-page "https://github.com/benlangfeld/countdownlatch")
12338 (synopsis "Thread synchronization aid Ruby")
12339 (description "CountDownLatch is a synchronization aid that allows one or
12340more threads to wait until a set of operations being performed in other threads
12341completes.")
12342 (license license:expat)))
12343
12344(define-public ruby-value-semantics
12345 (package
12346 (name "ruby-value-semantics")
12347 (version "3.6.1")
12348 (source
12349 (origin
12350 (method url-fetch)
12351 (uri (rubygems-uri "value_semantics" version))
12352 (sha256
12353 (base32 "1vdwai8wf6r1fkvdpyz1vzxm89q7ghjvb3pqpg2kvwibwzd99dnx"))))
12354 (build-system ruby-build-system)
12355 (arguments
12356 `(#:phases
12357 (modify-phases %standard-phases
12358 (replace 'check
12359 (lambda* (#:key tests? #:allow-other-keys)
12360 (when tests?
12361 (invoke "rspec")))))))
12362 (native-inputs
12363 (list
12364 ruby-rspec))
12365 (home-page "https://github.com/tomdalling/value_semantics")
12366 (synopsis "Ruby gem for making value classes")
12367 (description "ValueSemantics generates modules that provide conventional
12368value semantics for a given set of attributes. The behaviour is similar to an
12369immutable Struct class, plus extensible, lightweight validation and coercion.")
12370 (license license:expat)))
12371
12372(define-public ruby-promise
12373 (package
12374 (name "ruby-promise")
12375 (version "0.7.4")
12376 (source
12377 (origin
12378 (method url-fetch)
12379 (uri (rubygems-uri "promise.rb" version))
12380 (sha256
12381 (base32 "0a819sikcqvhi8hck1y10d1nv2qkjvmmm553626fmrh51h2i089d"))))
12382 (build-system ruby-build-system)
12383 (arguments
12384 `(#:test-target "spec"
12385 #:phases
12386 (modify-phases %standard-phases
12387 (add-after 'extract-gemspec 'less-strict-dependencies
12388 (lambda _
12389 (substitute* "Rakefile"
12390 (("if Gem.ruby_version.*") "if false\n"))
12391 (substitute* "spec/spec_helper.rb"
12392 ((".*devtools/spec_helper.*") "\n")))))))
12393 (native-inputs
12394 (list
12395 ruby-rspec
12396 ruby-rspec-its
12397 ruby-awesome-print
12398 ruby-fuubar))
12399 (home-page "https://github.com/lgierth/promise.rb")
12400 (synopsis "Asynchronous operation library for Ruby")
12401 (description "Promise is a Ruby implementation of the Promises/A+
12402specification. It provides 100% mutation coverage, tested on MRI 1.9, 2.0, 2.1,
124032.2, Rubinius, and JRuby.")
12404 (license license:unlicense)))
12405
12406(define-public ruby-multicodecs
12407 (package
12408 (name "ruby-multicodecs")
12409 (version "0.2.1")
12410 (source
12411 (origin
12412 (method url-fetch)
12413 (uri (rubygems-uri "multicodecs" version))
12414 (sha256
12415 (base32 "0drq267di57l9zqw6zvqqimilz42rbc8z7392dwkk8wslq30s7v8"))))
12416 (build-system ruby-build-system)
12417 (home-page "https://github.com/SleeplessByte/ruby-multicodec")
12418 (synopsis "Ruby implementation of multiformats/multicodec")
12419 (description "Multicodecs is the ruby implementation of
12420multiformats/multicodec, a canonical table of of codecs used by various
12421multiformats.")
12422 (license license:expat)))
12423
12424(define-public ruby-multihashes
12425 (package
12426 (name "ruby-multihashes")
12427 (version "0.2.0")
12428 (source
12429 (origin
12430 (method url-fetch)
12431 (uri (rubygems-uri "multihashes" version))
12432 (sha256
12433 (base32 "17wiyy3fiv8rpgdv9ca01yncsmaaf8yg15bg18wc7m9frss1vgqg"))))
12434 (build-system ruby-build-system)
12435 (propagated-inputs
12436 (list
12437 ruby-multicodecs))
12438 (home-page "https://github.com/multiformats/ruby-multihash")
12439 (synopsis "Multihash implementation for Ruby")
12440 (description "Multihashes provides a simple, low-level multihash
12441implementation for Ruby. A multihash is a digest with an embedded hash function
12442code")
12443 (license license:expat)))
12444
12445(define-public ruby-lazy-object
12446 (package
12447 (name "ruby-lazy-object")
12448 (version "0.0.3")
12449 (source
12450 (origin
12451 (method url-fetch)
12452 (uri (rubygems-uri "lazy_object" version))
12453 (sha256
12454 (base32 "08px15lahc28ik9smvw1hgamf792gd6gq0s4k94yq1h7jq25wjn8"))))
12455 (build-system ruby-build-system)
12456 (arguments
12457 `(#:test-target "spec"))
12458 (home-page "https://github.com/HornsAndHooves/lazy_object")
12459 (synopsis "Object wrapper that forwards all calls to the reference object")
12460 (description "LazyObject is an object wrapper that forwards all calls to the
12461reference object. This object is not created until the first method dispatch.")
12462 (license license:expat)))
12463
12464(define-public ruby-citrus
12465 (package
12466 (name "ruby-citrus")
12467 (version "3.0.2")
12468 (source
12469 (origin
12470 (method git-fetch)
12471 ;; Download from GitHub because the rubygems version does not contain
12472 ;; files needed for tests.
12473 (uri (git-reference
12474 (url "https://github.com/mjackson/citrus")
12475 (commit (string-append "v" version))))
12476 (file-name (git-file-name name version))
12477 (sha256
12478 (base32 "197wrgqrddgm1xs3yvjvd8vkvil4h4mdrcp16jmd4b57rxrrr769"))))
12479 (build-system ruby-build-system)
12480 (home-page "http://mjackson.github.io/citrus/")
12481 (synopsis "Parsing Expressions for Ruby")
12482 (description "Citrus is a parsing library for Ruby that combines the
12483expressiveness of the language with the parsing expressions.")
12484 (license license:expat)))
12485
12486(define-public ruby-cbor
12487 (package
12488 (name "ruby-cbor")
12489 (version "0.5.9.6")
12490 (source
12491 (origin
12492 (method url-fetch)
12493 (uri (rubygems-uri "cbor" version))
12494 (sha256
12495 (base32 "0511idr8xps9625nh3kxr68sdy6l3xy2kcz7r57g47fxb1v18jj3"))))
12496 (build-system ruby-build-system)
12497 (arguments
12498 `(#:test-target "spec"))
12499 (native-inputs
12500 (list
12501 ruby-rspec
12502 ruby-rake-compiler
12503 ruby-yard))
12504 (home-page "http://cbor.io/")
12505 (synopsis "Concise Binary Object Representation")
12506 (description "CBOR is a library for the
12507@acronym{CBOR, Concise Binary Object Representation} format, based on
12508Sadayuki Furuhashi's MessagePack library.")
12509 (license license:asl2.0)))
12510
12511(define-public ruby-gem-release
12512 (package
12513 (name "ruby-gem-release")
12514 (version "2.2.2")
12515 (source
12516 (origin
12517 (method url-fetch)
12518 (uri (rubygems-uri "gem-release" version))
12519 (sha256
12520 (base32 "108rrfaiayi14zrqbb6z0cbwcxh8n15am5ry2a86v7c8c3niysq9"))))
12521 (build-system ruby-build-system)
12522 (arguments
12523 ;; No rakefile
12524 `(#:tests? #f))
12525 (home-page "https://github.com/svenfuchs/gem-release")
12526 (synopsis "Ruby gem plugin for release management")
12527 (description "GemRelease is a gem plugin that aims at making gem development
12528easier by automating repetitive work based on conventions, configuration, and
12529templates.")
12530 (license license:expat)))
12531
12532(define-public ruby-base32
12533 (package
12534 (name "ruby-base32")
12535 (version "0.3.4")
12536 (source
12537 (origin
12538 (method url-fetch)
12539 (uri (rubygems-uri "base32" version))
12540 (sha256
12541 (base32 "1fjs0l3c5g9qxwp43kcnhc45slx29yjb6m6jxbb2x1krgjmi166b"))))
12542 (build-system ruby-build-system)
12543 (native-inputs
12544 (list
12545 ruby-gem-release))
12546 (home-page "https://github.com/stesla/base32")
12547 (synopsis "Ruby extension for base32 encoding and decoding")
12548 (description "Base32 is a library which provides base32 decoding and
12549encoding.")
12550 (license license:expat)))
12551
12552(define-public ruby-dhall
12553 (package
12554 (name "ruby-dhall")
12555 (version "0.5.2")
12556 (source
12557 (origin
12558 (method url-fetch)
12559 (uri (rubygems-uri "dhall" version))
12560 (sha256
12561 (base32 "09wcq8xc1ynld04r2f332bx8cn7rjc4afaq8hm1dr2fc35jlpn6m"))))
12562 (build-system ruby-build-system)
12563 (arguments
12564 ;; No test in gem archive
12565 `(#:tests? #f))
12566 (propagated-inputs
12567 (list
12568 ruby-base32
12569 ruby-cbor
12570 ruby-citrus
12571 ruby-lazy-object
12572 ruby-multihashes
12573 ruby-promise
12574 ruby-value-semantics))
12575 (home-page "https://git.sr.ht/~singpolyma/dhall-ruby")
12576 (synopsis "Ruby implementation of the Dhall configuration language")
12577 (description "Dhall.rb is a Ruby implementation of the Dhall configuration
12578language. Dhall is a memory safe and non-Turing-complete configuration
12579language.")
12580 (license license:gpl3+)))
12581
12582(define-public ruby-money
12583 (package
12584 (name "ruby-money")
12585 (version "6.16.0")
12586 (source
12587 (origin
12588 (method url-fetch)
12589 (uri (rubygems-uri "money" version))
12590 (sha256
12591 (base32 "0jkmsj5ymadik7bvl670bqwmvhsdyv7hjr8gq9z293hq35gnyiyg"))))
12592 (build-system ruby-build-system)
12593 (arguments
12594 ;; No rakefile.
12595 `(#:tests? #f))
12596 (propagated-inputs
12597 (list
12598 ruby-i18n))
12599 (home-page "https://rubymoney.github.io/money/")
12600 (synopsis "Currency conversion library for Ruby")
12601 (description "RubyMoney provides a library for dealing with money and
12602currency conversion. Its features are:
12603@itemize
12604@item
12605Provides a Money class which encapsulates all information about a certain
12606amount of money, such as its value and its currency.
12607@item
12608Provides a Money::Currency class which encapsulates all information about a
12609monetary unit.
12610@item
12611Represents monetary values as integers, in cents; so avoids floating point
12612rounding errors.
12613@item
12614Represents currency as Money::Currency instances providing a high level of
12615flexibility.
12616@item Provides APIs for exchanging money from one currency to another.
12617@end itemize")
12618 (license license:expat)))
12619
12620(define-public ruby-monetize
12621 (package
12622 (name "ruby-monetize")
12623 (version "1.11.0")
12624 (source
12625 (origin
12626 (method url-fetch)
12627 (uri (rubygems-uri "monetize" version))
12628 (sha256
12629 (base32 "0cna2myxdbwfq0gn6k2hgrh368dq7wld3jklm96443ysykd0difn"))))
12630 (build-system ruby-build-system)
12631 (arguments
12632 `(#:test-target "spec"))
12633 (native-inputs
12634 (list
12635 ruby-rspec))
12636 (propagated-inputs
12637 (list
12638 ruby-money))
12639 (home-page "https://github.com/RubyMoney/monetize")
12640 (synopsis "Convert various objects into Money objects")
12641 (description "Monetize provides a library for converting various objects
12642into Money objects.")
12643 (license license:expat)))
12644
12645(define-public ruby-money-open-exchange-rates
12646 (package
12647 (name "ruby-money-open-exchange-rates")
12648 (version "1.4.0")
12649 (source
12650 (origin
12651 (method git-fetch)
12652 ;; Download from GitHub because the rubygems version does not contain
12653 ;; Rakefile.
12654 (uri (git-reference
12655 (url "https://github.com/spk/money-open-exchange-rates")
12656 (commit (string-append "v" version))))
12657 (file-name (git-file-name name version))
12658 (sha256
12659 (base32 "11xwqli8snr19k48yh8h77sal5vxd4snzq9gxg08v61f0574m3gw"))))
12660 (build-system ruby-build-system)
12661 (native-inputs
12662 (list
12663 ruby-minitest
12664 ruby-mocha
12665 ruby-monetize
12666 ruby-rake
12667 ruby-rubocop
12668 ruby-timecop
12669 ruby-webmock))
12670 (propagated-inputs
12671 (list
12672 ruby-money))
12673 (home-page "https://spk.github.io/money-open-exchange-rates/")
12674 (synopsis "Money open exchange rates for Ruby")
12675 (description "This package provides a gem that calculates the exchange rate
12676using published rates from open-exchange-rates. Compatible with the money gem.")
12677 (license license:expat)))
12678
12679(define-public ruby-roda
12680 (package
12681 (name "ruby-roda")
12682 (version "3.57.0")
12683 (source
12684 (origin
12685 (method url-fetch)
12686 (uri (rubygems-uri "roda" version))
12687 (sha256
12688 (base32 "0nkfxnbcfnriywvx9kpamp850cwjmqv8ssajc95d0aiyjr4kdrfy"))))
12689 (build-system ruby-build-system)
12690 (arguments
12691 ;; No rakefile
12692 `(#:tests? #f))
12693 (propagated-inputs (list ruby-rack))
12694 (home-page "http://roda.jeremyevans.net")
12695 (synopsis "Routing Tree Web Toolkit")
12696 (description "Roda is a routing tree web toolkit, designed for building fast
12697and maintainable web applications in ruby.")
12698 (license license:expat)))
12699
12700(define-public ruby-nori
12701 (package
12702 (name "ruby-nori")
12703 (version "2.6.0")
12704 (source
12705 (origin
12706 (method url-fetch)
12707 (uri (rubygems-uri "nori" version))
12708 (sha256
12709 (base32 "066wc774a2zp4vrq3k7k8p0fhv30ymqmxma1jj7yg5735zls8agn"))))
12710 (build-system ruby-build-system)
12711 (arguments
12712 ;; Tests require too old version of rspec
12713 `(#:tests? #f))
12714 (native-inputs
12715 (list ruby-nokogiri
12716 ruby-rake
12717 ruby-rspec))
12718 (home-page "https://github.com/savonrb/nori")
12719 (synopsis "XML to Hash translator")
12720 (description "Nori is a simple XML parsing ripped from Crack which in-turn
12721ripped from Merb. It supports pluggable parsers and ships with both REXML and
12722Nokogiri implementations.")
12723 (license license:expat)))
12724
12725(define-public ruby-faraday-middleware
12726 (package
12727 (name "ruby-faraday-middleware")
12728 (version "1.2.0")
12729 (source
12730 (origin
12731 (method url-fetch)
12732 (uri (rubygems-uri "faraday_middleware" version))
12733 (sha256
12734 (base32 "1bw8mfh4yin2xk7138rg3fhb2p5g2dlmdma88k82psah9mbmvlfy"))))
12735 (build-system ruby-build-system)
12736 (arguments
12737 ;; No rakefile
12738 `(#:tests? #f))
12739 (propagated-inputs
12740 (list ruby-faraday))
12741 (home-page "https://github.com/lostisland/faraday_middleware")
12742 (synopsis "Various middleware for Faraday")
12743 (description "Faraday_Middleware is a collection of middleware for the
12744Faraday-based API wrappers.")
12745 (license license:expat)))
12746
12747(define-public ruby-bandwidth-iris
12748 (package
12749 (name "ruby-bandwidth-iris")
12750 (version "5.1.0")
12751 (source
12752 (origin
12753 (method url-fetch)
12754 (uri (rubygems-uri "ruby-bandwidth-iris" version))
12755 (sha256
12756 (base32 "1hmrxs0dif6fw5npyzcshk4nq9qr2kbmnx7mdjr5v1nhzlfr0678"))))
12757 (build-system ruby-build-system)
12758 (arguments
12759 ;; XXX: Tests don't require helper for some reason, so all fail.
12760 `(#:tests? #f))
12761 (native-inputs
12762 (list ruby-rspec
12763 ruby-yard))
12764 (propagated-inputs
12765 (list ruby-activesupport
12766 ruby-builder
12767 ruby-faraday
12768 ruby-faraday-middleware
12769 ruby-nori))
12770 (home-page "https://github.com/Bandwidth/ruby-bandwidth-iris")
12771 (synopsis "Gem for integrating to Bandwidth's Iris API")
12772 (description "Bandwidth IRIS is a Ruby SDK for Bandwidth Phone Number
12773Dashboard. It is a Ruby Client library for IRIS / BBS API.")
12774 (license license:expat)))
12775
12776(define-public ruby-sentry-core
12777 (package
12778 (name "ruby-sentry-core")
12779 (version "5.3.1")
12780 (source
12781 (origin
12782 (method url-fetch)
12783 (uri (rubygems-uri "sentry-ruby-core" version))
12784 (sha256
12785 (base32 "141mrw8wghhsjvln9m6ld3hap3xc5v901jjiz007xywy25725hyd"))))
12786 (build-system ruby-build-system)
12787 (arguments
12788 ;; No rakefile in gem.
12789 `(#:tests? #f))
12790 (propagated-inputs
12791 (list ruby-concurrent
12792 ruby-faraday))
12793 (home-page "https://sentry.io/for/ruby/")
12794 (synopsis "Client interface for the Sentry error logger")
12795 (description "Sentry-Core provides a gem that provides a client
12796interface for the Sentry error logger.")
12797 (license license:expat)))
12798
12799(define-public ruby-sentry
12800 (package
12801 (name "ruby-sentry")
12802 (version "5.3.1")
12803 (source
12804 (origin
12805 (method url-fetch)
12806 (uri (rubygems-uri "sentry-ruby" version))
12807 (sha256
12808 (base32 "0by9mvw8rklzpyx59vfija8h3ssfvxvf5nbqxfmygfy6lm1vdngz"))))
12809 (build-system ruby-build-system)
12810 (arguments
12811 ;; No rakefile in gem
12812 `(#:tests? #f))
12813 (propagated-inputs
12814 (list ruby-concurrent
12815 ruby-faraday
12816 ruby-sentry-core))
12817 (home-page "https://sentry.io/for/ruby/")
12818 (synopsis "Client interface for the Sentry error logger")
12819 (description "Sentry provides a gem that provides a client
12820interface for the Sentry error logger.")
12821 (license license:expat)))
12822
12823(define-public ruby-webrick
12824 (package
12825 (name "ruby-webrick")
12826 (version "1.7.0")
12827 (source
12828 (origin
12829 (method url-fetch)
12830 (uri (rubygems-uri "webrick" version))
12831 (sha256
12832 (base32 "1d4cvgmxhfczxiq5fr534lmizkhigd15bsx5719r5ds7k7ivisc7"))))
12833 (build-system ruby-build-system)
12834 (home-page "https://github.com/ruby/webrick")
12835 (synopsis "HTTP server toolkit")
12836 (description "WEBrick is an HTTP server toolkit that can be configured as an
12837HTTPS server, a proxy server, and a virtual-host server.")
12838 (license license:bsd-2)))
12839
12840(define-public ruby-interception
12841 (package
12842 (name "ruby-interception")
12843 (version "0.5")
12844 (source
12845 (origin
12846 (method url-fetch)
12847 (uri (rubygems-uri "interception" version))
12848 (sha256
12849 (base32 "01vrkn28psdx1ysh5js3hn17nfp1nvvv46wc1pwqsakm6vb1hf55"))))
12850 (build-system ruby-build-system)
12851 (native-inputs (list ruby-rspec))
12852 (home-page "https://github.com/ConradIrwin/interception")
12853 (synopsis "Listen to raise in Ruby")
12854 (description "Interception provides a cross-platform ability to intercept all
12855exceptions as they are raised.")
12856 (license license:expat)))
12857
12858(define-public ruby-pry-rescue
12859 (package
12860 (name "ruby-pry-rescue")
12861 (version "1.5.2")
12862 (source
12863 (origin
12864 (method url-fetch)
12865 (uri (rubygems-uri "pry-rescue" version))
12866 (sha256
12867 (base32 "1wn72y8y3d3g0ng350ld92nyjln012432q2z2iy9lhwzjc4dwi65"))))
12868 (build-system ruby-build-system)
12869 (arguments
12870 `(#:phases
12871 (modify-phases %standard-phases
12872 (add-after 'unpack 'nuke-bad-test
12873 (lambda _
12874 (substitute* "spec/source_location_spec.rb"
12875 (("time = Time.now") "skip")))))))
12876 (native-inputs
12877 (list ruby-rspec
12878 ruby-pry-stack-explorer))
12879 (propagated-inputs
12880 (list ruby-interception
12881 ruby-pry))
12882 (home-page
12883 "https://github.com/ConradIrwin/pry-rescue")
12884 (synopsis "Start Pry session for rescue")
12885 (description "Pry-Rescue allows you to wrap code, to open a pry session at
12886any unhandled exceptions.")
12887 (license license:expat)))
12888
12889(define-public ruby-braintree
12890 (package
12891 (name "ruby-braintree")
12892 (version "4.7.0")
12893 (source
12894 (origin
12895 (method git-fetch)
12896 ;; Download from GitHub because the rubygems version does not contain
12897 ;; Rakefile.
12898 (uri (git-reference
12899 (url "https://github.com/braintree/braintree_ruby")
12900 (commit version)))
12901 (file-name (git-file-name name version))
12902 (sha256
12903 (base32 "1gixqf9vsjsyrk45lf9xcz0ggdydpgsk8ahknd27bbigz1j4pdf6"))))
12904 (build-system ruby-build-system)
12905 (arguments
12906 `(#:test-target "test:unit"
12907 #:phases
12908 (modify-phases %standard-phases
12909 (add-after 'unpack 'less-strict-dependencies
12910 (lambda _
12911 (substitute* "Gemfile"
12912 (("gem \"libxml-ruby\", \"3.2.0\"")
12913 "gem \"libxml-ruby\", \"~> 3.0.0\"")
12914 (("gem \"rspec\", \"3.9.0\"")
12915 "gem \"rspec\", \"~> 3.8.0\"")
12916 (("gem \"rubocop\", \"~>1.12.0\"")
12917 "gem \"rubocop\", \"~> 1.10.0\"")))))))
12918 (native-inputs
12919 (list ruby-libxml
12920 ruby-pry
12921 ruby-rake
12922 ruby-rspec
12923 ruby-rubocop
12924 ruby-webrick))
12925 (propagated-inputs
12926 (list ruby-builder
12927 ruby-rexml))
12928 (home-page "https://www.braintreepayments.com/")
12929 (synopsis "Integration access to the Braintree Gateway")
12930 (description "Braintree provides resources and tools for developers to
12931integrate Braintree's global payments platform.")
12932 (license license:expat)))
12933
12934(define-public ruby-niceogiri
12935 (package
12936 (name "ruby-niceogiri")
12937 (version "1.1.2")
12938 (source
12939 (origin
12940 (method url-fetch)
12941 (uri (rubygems-uri "niceogiri" version))
12942 (sha256
12943 (base32 "1ha93211bc9cvh23s9w89zz7rq8irpf64ccd9arvg8v1sxg2798a"))))
12944 (build-system ruby-build-system)
12945 (arguments
12946 `(#:test-target "spec"
12947 #:phases
12948 (modify-phases %standard-phases
12949 (add-after 'extract-gemspec 'less-strict-dependencies
12950 (lambda _
12951 (substitute* "niceogiri.gemspec"
12952 (("2\\.7") "3.8") ;rspec
12953 ((".*dependency.*bundler.*") "\n")
12954 ((".*dependency.*guard-rspec.*") "\n")))))))
12955 (native-inputs
12956 (list ruby-rspec
12957 ruby-yard))
12958 (propagated-inputs (list ruby-nokogiri))
12959 (home-page "https://github.com/benlangfeld/Niceogiri")
12960 (synopsis "Supplement for Nokogiri")
12961 (description "Niceogiri provides wrappers and helpers for XML manipulation
12962using Nokogiri.")
12963 (license license:expat)))
12964
12965(define-public ruby-blather
12966 (package
12967 (name "ruby-blather")
12968 (version "2.0.0")
12969 (source
12970 (origin
12971 (method url-fetch)
12972 (uri (rubygems-uri "blather" version))
12973 (sha256
12974 (base32 "05ry2x835fj4pzk61282pcz86n018cr39zbgwbi213md74i90s7c"))))
12975 (build-system ruby-build-system)
12976 (arguments
12977 ;; XXX: Tests require too old version of rspec.
12978 `(#:tests? #f))
12979 (native-inputs
12980 (list ruby-countdownlatch
12981 ruby-mocha
12982 ruby-rb-fsevent
12983 ruby-rspec
12984 ruby-yard))
12985 (propagated-inputs
12986 (list ruby-activesupport
12987 ruby-eventmachine
12988 ruby-niceogiri
12989 ruby-nokogiri
12990 ruby-sucker-punch))
12991 (home-page "https://github.com/adhearsion/blather")
12992 (synopsis "XMPP Domain Specific Language for Ruby")
12993 (description "Blather is a XMPP DSL for Ruby written on top of EventMachine
12994and Nokogiri.")
12995 (license license:expat)))
12996
12997(define-public ruby-wapiti
12998 (package
12999 (name "ruby-wapiti")
13000 (version "2.0.0")
13001 ;; the gem archive lacks tests
13002 (source (origin
13003 (method git-fetch)
13004 (uri (git-reference
13005 (url "https://github.com/inukshuk/wapiti-ruby")
13006 (commit version)))
13007 (file-name (git-file-name name version))
13008 (sha256
13009 (base32
13010 "1kawqw45j7mqk5zmwbn67x1vxiapdgm2ypqqz2bs9l5s7nglzr5b"))))
13011 (build-system ruby-build-system)
13012 (propagated-inputs
13013 (list ruby-builder
13014 ruby-rexml))
13015 (native-inputs
13016 (list ruby-byebug
13017 ruby-pry
13018 ruby-rake-compiler
13019 ruby-rspec
13020 ruby-simplecov))
13021 (arguments
13022 (list
13023 #:test-target "spec"
13024 #:phases
13025 #~(modify-phases %standard-phases
13026 (add-after 'replace-git-ls-files 'replace-another-git-ls-files
13027 (lambda args
13028 (substitute* "wapiti.gemspec"
13029 (("`git ls-files spec`")
13030 "`find spec -type f | sort`"))))
13031 (add-before 'build 'compile
13032 (lambda args
13033 (invoke "rake" "compile"))))))
13034 (home-page "https://github.com/inukshuk/wapiti-ruby")
13035 (synopsis "Wicked fast Conditional Random Fields for Ruby")
13036 (description
13037 "The Wapiti-Ruby gem provides a wicked fast linear-chain @acronym{CRF,
13038Conditional Random Fields} API for sequence segmentation and labelling. It is
13039based on the codebase of @url{https://wapiti.limsi.fr, Wapiti}.")
13040 (license license:bsd-2)))
13041
13042(define-public ruby-namae
13043 (package
13044 (name "ruby-namae")
13045 (version "1.1.1")
13046 (source (origin
13047 (method url-fetch)
13048 (uri (rubygems-uri "namae" version))
13049 (sha256
13050 (base32
13051 "1j3nl1klkx3gymrdxfc1hlq4a8qlvhhl9aj5v1v08b9fz27sky0l"))))
13052 (build-system ruby-build-system)
13053 (native-inputs
13054 (list ruby-cucumber
13055 ruby-rspec
13056 ruby-simplecov))
13057 (arguments
13058 (list
13059 #:phases
13060 #~(modify-phases %standard-phases
13061 (add-after 'extract-gemspec 'allow-newer-cucumber
13062 (lambda args
13063 (substitute* "Gemfile"
13064 (("'cucumber', '[^']*'")
13065 "'cucumber'"))))
13066 (replace 'check
13067 ;; Avoid 'rake' so we don't need jeweler.
13068 (lambda* (#:key tests? #:allow-other-keys)
13069 (when tests?
13070 (apply invoke
13071 "rspec"
13072 (find-files "spec" "_spec\\.rb$"))))))))
13073 (home-page "https://github.com/berkmancenter/namae")
13074 (synopsis "Parser for human names")
13075 (description
13076 "Namae (名前) is a parser for human names. It recognizes personal names
13077of various cultural backgrounds and tries to split them into their component
13078parts (e.g., given and family names, honorifics etc.).")
13079 (license (list license:bsd-2 license:agpl3+))))
13080
13081(define-public ruby-ritex
13082 (package
13083 (name "ruby-ritex")
13084 (version "1.0.1")
13085 (source (origin
13086 (method url-fetch)
13087 (uri (rubygems-uri "ritex" version))
13088 (sha256
13089 (base32
13090 "07rlm3nyz9sxzy1srxs6a31hw81r6w7swrb85fiwi393z8npwc3a"))))
13091 (build-system ruby-build-system)
13092 (native-inputs
13093 (list itex2mml))
13094 (arguments
13095 ;; thanks to the Gentoo packagers for figuring this out
13096 (list
13097 #:phases
13098 #~(modify-phases %standard-phases
13099 (add-after 'extract-gemspec 'fix-tests
13100 (lambda* (#:key native-inputs inputs #:allow-other-keys)
13101 (substitute* "test/mathml.rb"
13102 (("\\./itex2MML")
13103 ;; don't use the absolute path to avoid keeping a reference
13104 "itex2MML")
13105 (("cmp ',\\\\,\\\\,,,\\\\,'" orig)
13106 (string-append "# " orig " # patched for Guix")))
13107 (substitute* "test/answer-key.yaml"
13108 (("- ,\\\\,\\\\,,,\\\\," orig)
13109 (string-append "# " orig " # patched for Guix")))))
13110 (replace 'check
13111 (lambda* (#:key tests? #:allow-other-keys)
13112 (when tests?
13113 (invoke "ruby" "-Ilib:." "test/all.rb")))))))
13114 (home-page "https://rubygems.org/gems/ritex")
13115 (synopsis "Convert expressions from WebTeX into MathML")
13116 (description
13117 "Ritex converts expressions from WebTeX into MathML. WebTeX is an
13118adaptation of TeX math syntax for web display. Ritex makes inserting math
13119into HTML pages easy. It supports most TeX math syntax as well as macros.")
13120 ;; doesn't clearly state -only vs -or-later
13121 (license license:gpl2)))
13122
13123(define-public ruby-latex-decode
13124 (package
13125 (name "ruby-latex-decode")
13126 (version "0.4.0")
13127 (source (origin
13128 (method git-fetch)
13129 (uri (git-reference
13130 (url "https://github.com/inukshuk/latex-decode")
13131 (commit (string-append "v" version))))
13132 (sha256
13133 (base32
13134 "1f5j67ayd04pjkmzvn0hk7cr8yqvn0gyg9ns6a0vhzj2gwna9ihy"))
13135 (file-name (git-file-name name version))))
13136 (build-system ruby-build-system)
13137 (native-inputs
13138 (list ruby-cucumber
13139 ruby-ritex
13140 ruby-rspec))
13141 (arguments
13142 (list
13143 #:test-target "cucumber"
13144 #:phases
13145 #~(modify-phases %standard-phases
13146 (add-after 'extract-gemspec 'avoid-bundler
13147 (lambda args
13148 (substitute* "Rakefile"
13149 (("require 'bundler" orig)
13150 (string-append "# " orig " # patched for Guix"))
13151 (("Cucumber::Rake::Task\\.new[(]:cucumber[)]" orig)
13152 (string-append orig " do |c|\n"
13153 " c.bundler = false # patched for Guix\n"
13154 "end"))
13155 (("Bundler\\.setup" orig)
13156 (string-append "true # " orig " # patched for Guix")))
13157 (substitute* "cucumber.yml"
13158 ;; thanks to avoiding bundler, we can't use this option
13159 ((" --publish-quiet")
13160 ""))))
13161 (add-after 'replace-git-ls-files 'replace-another-git-ls-files
13162 (lambda args
13163 (substitute* "latex-decode.gemspec"
13164 (("`git ls-files -- [{]test,spec,features[}]/\\*`")
13165 "`find {test,spec,features} -type f | sort`")))))))
13166 (home-page "https://github.com/inukshuk/latex-decode")
13167 (synopsis "Convert LaTeX to Unicode")
13168 (description
13169 "This package provides a gem to convert LaTeX input to Unicode. Its
13170original use was as an input filter for BibTeX-Ruby, but it can be used
13171independently to decode LaTeX. Many of the patterns used by this Ruby gem are
13172based on François Charette's equivalent Perl module @code{LaTeX::Decode}.")
13173 (license license:gpl3+)))
13174
13175(define-public ruby-link-header
13176 (package
13177 (name "ruby-link-header")
13178 (version "0.0.8")
13179 (source (origin
13180 (method url-fetch)
13181 (uri (rubygems-uri "link_header" version))
13182 (sha256
13183 (base32
13184 "1yamrdq4rywmnpdhbygnkkl9fdy249fg5r851nrkkxr97gj5rihm"))))
13185 (build-system ruby-build-system)
13186 (home-page "https://github.com/asplake/link_header")
13187 (synopsis "Parse and format HTTP @code{Link} headers")
13188 (description
13189 "This gem provides the classes @code{LinkHeader} and
13190@code{LinkHeader::Link}, which represent HTTP @code{Link} headers conforming
13191to RFC 5988. Objects can be constructed from and converted to text or a
13192JSON-friendly @code{Array} representation. They can also be used to generate
13193corresponding HTML @code{link} elements.")
13194 (license license:expat)))
13195
13196(define-public ruby-rdf
13197 (package
13198 (name "ruby-rdf")
13199 (version "3.2.8")
13200 (source (origin
13201 (method url-fetch)
13202 (uri (rubygems-uri "rdf" version))
13203 (sha256
13204 (base32
13205 "1cj0k8ryd8hgbkgqb5swvy6fiygxny3y5bln0my5gv6dbfv3gm20"))))
13206 (build-system ruby-build-system)
13207 (propagated-inputs (list ruby-link-header))
13208 (arguments
13209 (list #:tests? #f)) ;; tests have many cyclic dependencies
13210 (home-page "https://ruby-rdf.github.io/")
13211 (synopsis "Linked Data for Ruby")
13212 (description
13213 "This gem contains the core algorithms and classes used for doing basic
13214programming with @acronym{RDF, Resource Description Framework} data,
13215implemented in pure Ruby.")
13216 (license license:unlicense)))
13217
13218(define-public ruby-rdf-vocab
13219 (package
13220 (name "ruby-rdf-vocab")
13221 (version "3.2.1")
13222 (source (origin
13223 (method url-fetch)
13224 (uri (rubygems-uri "rdf-vocab" version))
13225 (sha256
13226 (base32
13227 "1bqmp9rfjvd56ajjz68ij6jla1wjf1fqg7bi4dpnjrsmn4pwaq7l"))))
13228 (build-system ruby-build-system)
13229 (propagated-inputs
13230 (list ruby-rdf))
13231 (arguments
13232 (list #:tests? #f)) ;; tests have many cyclic dependencies
13233 (home-page "https://github.com/ruby-rdf/rdf-vocab")
13234 (synopsis "Common RDF vocabularies")
13235 (description
13236 "This gem extends @code{ruby-rdf} with several common @acronym{RDF,
13237Resource Description Framework} vocabularies.")
13238 (license license:unlicense)))
13239
13240(define-public ruby-bibtex-ruby
13241 (package
13242 (name "ruby-bibtex-ruby")
13243 (version "6.0.0")
13244 (source (origin
13245 (method url-fetch)
13246 (uri (rubygems-uri "bibtex-ruby" version))
13247 (sha256
13248 (base32
13249 "0vynqa8q9hwghw6sdljr304b5gh11nqzy5nwqqwxmgy7pqyf7qw5"))))
13250 (build-system ruby-build-system)
13251 (propagated-inputs
13252 (list ruby-latex-decode
13253 ruby-rdf
13254 ruby-rdf-vocab))
13255 (native-inputs
13256 (list ruby-byebug
13257 ruby-cucumber
13258 ruby-minitest
13259 ruby-yard))
13260 (arguments
13261 (list
13262 #:phases
13263 #~(modify-phases %standard-phases
13264 (add-after 'extract-gemspec 'avoid-bundler
13265 (lambda args
13266 (substitute* "Rakefile"
13267 (("require 'bundler" orig)
13268 (string-append "# " orig " # patched for Guix"))
13269 (("Bundler\\.setup" orig)
13270 (string-append "true # " orig " # patched for Guix"))))))))
13271 (home-page "https://github.com/inukshuk/bibtex-ruby")
13272 (synopsis "Rubyist's Swiss Army knife for all things BibTeX")
13273 (description
13274 "BibTeX-Ruby is the Rubyist's Swiss Army knife for all things BibTeX.
13275It includes a parser for all common BibTeX objects and a sophisticated name
13276parser that tokenizes correctly formatted names. BibTeX-Ruby recognizes
13277BibTeX string replacements, joins values containing multiple strings or
13278variables, supports cross-references, and decodes common LaTeX formatting
13279instructions to unicode. If you are in a hurry, it also allows for easy
13280export/conversion to formats such as YAML, JSON, CSL, and XML (BibTeXML).")
13281 (license license:gpl3+)))
13282
13283(define-public ruby-unicode-scripts
13284 (package
13285 (name "ruby-unicode-scripts")
13286 (version "1.7.0")
13287 (source (origin
13288 (method url-fetch)
13289 (uri (rubygems-uri "unicode-scripts" version))
13290 (sha256
13291 (base32
13292 "1k7kbfk806zam129bp7pdiqkfb5hn51x149irzvjhs4xf22m4yvi"))))
13293 (build-system ruby-build-system)
13294 (native-inputs
13295 (list ruby-minitest))
13296 (arguments
13297 (list #:test-target "spec"))
13298 (home-page "https://github.com/janlelis/unicode-scripts")
13299 (synopsis "Unicode script classification library")
13300 (description
13301 "This gem provides a simple interface for classifying Ruby strings using
13302the Unicode @code{Script} and @code{Script_Extensions} properties.")
13303 (license license:expat)))
13304
13305(define-public ruby-citeproc
13306 (package
13307 (name "ruby-citeproc")
13308 (version "1.0.10")
13309 (source (origin
13310 (method url-fetch)
13311 (uri (rubygems-uri "citeproc" version))
13312 (sha256
13313 (base32
13314 "13vl5sjmksk5a8kjcqnjxh7kn9gn1n4f9p1rvqfgsfhs54p0m6l2"))))
13315 (build-system ruby-build-system)
13316 (propagated-inputs
13317 (list ruby-namae))
13318 (arguments
13319 (list #:tests? #f)) ;; tests have a cyclic dependency
13320 (home-page "https://github.com/inukshuk/citeproc")
13321 (synopsis "Interface for Ruby citation processors")
13322 (description
13323 "CiteProc is a citation processor interface and citation data API based
13324on the @acronym{CSL, Citation Style Language} specifications. To actually
13325process citations, a dedicated processor engine is required: a pure Ruby
13326engine is available in the @code{citeproc-ruby} gem.")
13327 (license (list license:agpl3+ license:bsd-2))))
13328
13329(define-public ruby-edtf
13330 (package
13331 (name "ruby-edtf")
13332 (version "3.1.0")
13333 (source (origin
13334 (method git-fetch)
13335 (uri (git-reference
13336 (url "https://github.com/inukshuk/edtf-ruby")
13337 (commit (string-append "v" version))))
13338 (sha256
13339 (base32
13340 "18j8xq8zmrn41cs2gpd1i87agi9905asvnjqndky2cqb5zg3q14g"))
13341 (snippet
13342 ;; remove generated file
13343 #~(delete-file "lib/edtf/parser.rb"))
13344 (file-name (git-file-name name version))))
13345 (build-system ruby-build-system)
13346 (propagated-inputs
13347 (list ruby-activesupport))
13348 (native-inputs
13349 (list ruby-cucumber
13350 ruby-rspec))
13351 (arguments
13352 (list
13353 #:phases
13354 #~(modify-phases %standard-phases
13355 (add-after 'extract-gemspec 'avoid-bundler
13356 (lambda args
13357 (substitute* "Rakefile"
13358 (("require 'bundler" orig)
13359 (string-append "# " orig " # patched for Guix"))
13360 (("bundle exec racc")
13361 "racc")
13362 (("Cucumber::Rake::Task\\.new[(]:cucumber[)]" orig)
13363 (string-append orig " do |c|\n"
13364 " c.bundler = false # patched for Guix\n"
13365 "end"))
13366 (("Bundler\\.setup" orig)
13367 (string-append "true # " orig " # patched for Guix")))))
13368 (add-after 'avoid-bundler 'patch-cucumber-options
13369 (lambda args
13370 (substitute* "cucumber.yml"
13371 ;; this option is not supported, at least in our configuration
13372 ((" --publish-quiet")
13373 ""))))
13374 (add-before 'build 'compile
13375 (lambda args
13376 (invoke "rake" "racc")))
13377 (replace 'check
13378 (lambda* (#:key tests? #:allow-other-keys)
13379 (when tests?
13380 (invoke "rake")))))))
13381 (home-page "https://github.com/inukshuk/edtf-ruby")
13382 (synopsis "Ruby implementation of Extended Date/Time Format")
13383 (description
13384 "EDTF-Ruby provides a parser and an API for the @acronym{EDTF, Extended
13385Date/Time Format} standard, implemented as an extension to Ruby's @code{Date}
13386class.")
13387 (license license:bsd-2)))
13388
13389(define-public ruby-gli
13390 (package
13391 (name "ruby-gli")
13392 (version "2.21.0")
13393 (source (origin
13394 (method git-fetch)
13395 (uri (git-reference
13396 (url "https://github.com/davetron5000/gli")
13397 (commit (string-append "v" version))))
13398 (sha256
13399 (base32
13400 "09b1r9hlx4dy2yq036nk7hc2nbswhia6q3na9v11z94yibc8mgja"))
13401 (file-name (git-file-name name version))))
13402 (build-system ruby-build-system)
13403 (native-inputs
13404 (list ruby-minitest
13405 ruby-rainbow
13406 ruby-rdoc
13407 ruby-sdoc))
13408 (arguments
13409 (list
13410 #:phases
13411 #~(modify-phases %standard-phases
13412 (add-after 'extract-gemspec 'patch-gemspec-version
13413 (lambda args
13414 (substitute* "gli.gemspec"
13415 ;; this trick fails in our build environment
13416 (("require File\\.join[(]\\[" orig)
13417 (string-append "# patched for Guix # " orig))
13418 (("s\\.version = GLI::VERSION")
13419 #$(string-append "s.version = '"
13420 (package-version this-package)
13421 "' # patched for Guix")))))
13422 (add-after 'replace-git-ls-files 'replace-another-git-ls-files
13423 (lambda args
13424 (substitute* "gli.gemspec"
13425 (("`git ls-files -- [{]test,spec,features[}]/\\*`")
13426 "`find {test,spec,features} -type f | sort`"))))
13427 (add-after 'replace-another-git-ls-files 'fix-rubyopt
13428 (lambda args
13429 (substitute* "Rakefile"
13430 (("ENV\\[\"RUBYOPT\"]")
13431 "(ENV['RUBYOPT'] || '')")))))))
13432 (home-page "https://davetron5000.github.io/gli/")
13433 (synopsis "Git-Like Interface command-line parser")
13434 (description
13435 "GLI allows you to create command-line applications in Ruby with Git-Like
13436Interfaces: that is, they take subcommands in the style of @command{git} and
13437@command{gem}. GLI uses a simple domain-specific language, but retains all
13438the power of the built-in @code{OptionParser}.")
13439 (license license:asl2.0)))
13440
13441(define-public ruby-anystyle-data
13442 (package
13443 (name "ruby-anystyle-data")
13444 (version "1.2.0")
13445 (source (origin
13446 (method git-fetch)
13447 (uri (git-reference
13448 (url "https://github.com/inukshuk/anystyle-data")
13449 (commit version)))
13450 (sha256
13451 (base32
13452 "025mxa7r9d7izqn6bc1wr40ijp64da0jh211prlpjl6svilgd6rm"))
13453 (snippet
13454 ;; remove pre-built file
13455 #~(delete-file "lib/anystyle/data/dict.txt.gz"))
13456 (patches
13457 (search-patches "ruby-anystyle-data-immutable-install.patch"))
13458 (file-name (git-file-name name version))))
13459 (build-system ruby-build-system)
13460 (arguments
13461 (list
13462 #:tests? #f ;; there are none
13463 #:modules
13464 `((guix build ruby-build-system)
13465 (guix build utils)
13466 (srfi srfi-26))
13467 #:phases
13468 #~(modify-phases %standard-phases
13469 (add-after 'replace-git-ls-files 'replace-another-git-ls-files
13470 (lambda args
13471 (substitute* "anystyle-data.gemspec"
13472 (("`git ls-files lib README\\.md LICENSE`\\.split[(][^)]*[)]")
13473 (string-append
13474 "["
13475 (string-join
13476 (map (cut string-append "\"" <> "\"")
13477 `("README.md"
13478 "LICENSE"
13479 "lib/anystyle/data.rb"
13480 "lib/anystyle/data/dict.txt.gz"
13481 "lib/anystyle/data/setup.rb"
13482 "lib/anystyle/data/version.rb"))
13483 ", ")
13484 "]")))))
13485 (add-before 'build 'compile-dict
13486 (lambda args
13487 (invoke "rake" "compile"))))))
13488 (home-page "https://anystyle.io")
13489 (synopsis "AnyStyle parser dictionary data")
13490 (description
13491 "This gem provides parser dictionary data for AnyStyle.")
13492 (license license:bsd-2)))
13493
13494(define-public ruby-anystyle
13495 (let ((commit "50f1dd547d28ab4b830e45d70e840cb1898a37b0")
13496 (revision "1"))
13497 ;; Releases point to specific commits, but recent releases haven't been
13498 ;; tagged in Git. Meanwhile, the rubygems archive lacks tests.
13499 (package
13500 (name "ruby-anystyle")
13501 (version (git-version "1.3.14" revision commit))
13502 (source (origin
13503 (method git-fetch)
13504 (uri (git-reference
13505 (url "https://github.com/inukshuk/anystyle")
13506 (commit commit)))
13507 (sha256
13508 (base32
13509 "0f4qcrywl1kl6qysn24lj3yp85ln4i7za7b7ld2fglyzwcggxwb0"))
13510 (snippet
13511 ;; There is an optional dependency on
13512 ;; <https://github.com/feedbackmine/language_detector>, which
13513 ;; seems like it was intended to be free software, but
13514 ;; doesn't have a clear license statement. Maybe someone can
13515 ;; do more sleuthing, or else find a replacement? See also
13516 ;; <https://github.com/inukshuk/anystyle/issues/186>. For
13517 ;; now, patch it out, but leave a pointer to follow up.
13518 #~(begin
13519 (use-modules (guix build utils))
13520 (substitute* "Gemfile"
13521 (("gem 'language_detector', github: '[^']*'" orig)
13522 (string-append "# " orig " # unclear license")))
13523 (substitute* "spec/anystyle/parser_spec.rb"
13524 (("language: 'en'," orig)
13525 (string-append "# " orig " # no lanugage_detector")))))
13526 (patches
13527 (search-patches
13528 "ruby-anystyle-fix-dictionary-populate.patch"))
13529 (file-name (git-file-name name version))))
13530 (build-system ruby-build-system)
13531 (propagated-inputs
13532 (list ruby-anystyle-data
13533 ruby-bibtex-ruby
13534 ruby-namae
13535 ruby-wapiti))
13536 (native-inputs
13537 (list ruby-byebug
13538 ruby-citeproc
13539 ruby-edtf
13540 ruby-rspec
13541 ruby-unicode-scripts))
13542 (arguments
13543 (list
13544 #:test-target "spec"
13545 #:phases
13546 #~(modify-phases %standard-phases
13547 (add-after 'extract-gemspec 'avoid-bundler
13548 (lambda args
13549 (substitute* "Rakefile"
13550 (("require 'bundler" orig)
13551 (string-append "# " orig " # patched for Guix"))
13552 (("Bundler\\.setup" orig)
13553 (string-append "true # " orig " # patched for Guix")))))
13554 (add-after 'replace-git-ls-files 'replace-another-git-ls-files
13555 (lambda args
13556 (substitute* "anystyle.gemspec"
13557 (("`git ls-files spec`")
13558 "`find spec -type f | sort`"))))
13559 (add-after 'wrap 'populate-dictionaries
13560 (lambda args
13561 ;; We must initiallize these files here, or they will never be
13562 ;; usable with the default settings. A more flexible approach
13563 ;; might use something like `Gem.find_files()` or
13564 ;; XDG_DATA_DIRS.
13565 (with-output-to-file "initialize-dictionaries.rb"
13566 (lambda ()
13567 (display "
13568require 'anystyle/dictionary' # must come before 'anystyle/data'
13569require 'anystyle/data'
13570[:marshal, :gdbm].each do |adapter|
13571 AnyStyle::Dictionary.create({adapter: adapter}).open().close()
13572end
13573")))
13574 (let* ((old-gems (getenv "GEM_PATH"))
13575 (new-gems (string-append #$output
13576 "/lib/ruby/vendor_ruby:"
13577 old-gems)))
13578 (dynamic-wind
13579 (lambda ()
13580 (setenv "GEM_PATH" new-gems))
13581 (lambda ()
13582 (invoke "ruby" "initialize-dictionaries.rb"))
13583 (lambda ()
13584 (setenv "GEM_PATH" old-gems)))))))))
13585 (home-page "https://anystyle.io")
13586 (synopsis "Fast and smart citation reference parsing (Ruby library)")
13587 (description
13588 "AnyStyle is a very fast and smart parser for academic reference lists
13589and bibliographies. AnyStyle uses powerful machine learning heuristics based
13590on Conditional Random Fields and aims to make it easy to train the model with
13591data that is relevant to your parsing needs.
13592
13593This package provides the Ruby module @code{AnyStyle}. AnyStyle can also be
13594used via the @command{anystyle} command-line utility or a web application,
13595though the later has not yet been packaged for Guix.")
13596 (license license:bsd-2))))
13597
13598(define-public anystyle
13599 (package
13600 (name "anystyle")
13601 (version "1.3.1")
13602 (source (origin
13603 (method git-fetch)
13604 (uri (git-reference
13605 (url "https://github.com/inukshuk/anystyle-cli")
13606 (commit version)))
13607 (sha256
13608 (base32
13609 "1bazzms04cra8516q7vydmcm31yd0a7si1pxk4waffqy7lh0pksg"))
13610 (file-name (git-file-name name version))))
13611 (build-system ruby-build-system)
13612 (propagated-inputs
13613 (list ruby-anystyle
13614 ruby-bibtex-ruby
13615 ruby-gli))
13616 (native-inputs
13617 (list txt2man))
13618 (arguments
13619 (list
13620 #:modules
13621 `((guix build ruby-build-system)
13622 (ice-9 popen)
13623 (srfi srfi-1)
13624 (guix build utils))
13625 #:phases
13626 #~(modify-phases %standard-phases
13627 (add-after 'extract-gemspec 'less-strict-dependencies
13628 (lambda args
13629 (substitute* "anystyle-cli.gemspec"
13630 (("'bibtex-ruby', '[^']*'")
13631 "'bibtex-ruby'"))))
13632 (add-before 'build 'change-default-dictionary-adapter
13633 (lambda args
13634 ;; Since we always have gdbm available, using it will give a
13635 ;; faster startup time, which is particularly worth-while for
13636 ;; a command-line tool.
13637 (substitute* "bin/anystyle"
13638 (("default_value: 'ruby',")
13639 "default_value: 'gdbm', # patched for Guix"))))
13640 (replace 'check
13641 (lambda* (#:key tests? #:allow-other-keys)
13642 ;; There are no tests, but let's use this opportunity to do a
13643 ;; basic test of our own that things run ok. It works especially
13644 ;; well to test this here since we know the 'ruby-anystile'
13645 ;; package is in its final, immutable installed form.
13646 (when tests?
13647 (let ((common
13648 `("require 'anystyle'"
13649 ,(string-append
13650 "pp AnyStyle.parse 'Derrida, J. (1967). L’écriture"
13651 " et la différence (1 éd.). Paris: Éditions du"
13652 " Seuil.'"))))
13653 (for-each
13654 (lambda (lines)
13655 (apply invoke "ruby"
13656 (fold-right (lambda (line lst)
13657 (cons* "-e" line lst))
13658 '()
13659 lines)))
13660 `(,common
13661 ("require 'anystyle/dictionary'"
13662 "AnyStyle::Dictionary.defaults[:adapter] = :gdbm"
13663 ,@common)))))))
13664 (add-after 'wrap 'check-cli
13665 (lambda* (#:key tests? outputs #:allow-other-keys)
13666 (when tests?
13667 (with-output-to-file "check-cli.in"
13668 (lambda ()
13669 (for-each
13670 display
13671 '("Derrida, J. (1967). L’écriture et la différence "
13672 "(1 éd.). Paris: Éditions du Seuil.\n"))))
13673 (invoke (search-input-file outputs "/bin/anystyle")
13674 "parse"
13675 "check-cli.in"))))
13676 (add-after 'wrap 'generate-man-page
13677 ;; generating a man page also tests that the command actually runs
13678 (lambda args
13679 (define (run-with-output-file file command . args)
13680 (format (current-output-port)
13681 "running: ~s\nwith output to: ~s\n"
13682 (cons command args)
13683 file)
13684 (unless (zero?
13685 (with-output-to-file file
13686 (lambda ()
13687 (status:exit-val
13688 (close-pipe
13689 (apply open-pipe* OPEN_WRITE command args))))))
13690 (error "command failed")))
13691 (let ((anystyle (string-append #$output "/bin/anystyle")))
13692 (run-with-output-file "intro.txt"
13693 anystyle "--help")
13694 (for-each (lambda (cmd)
13695 (let ((file (string-append cmd ".txt")))
13696 (run-with-output-file file
13697 anystyle cmd "--help")
13698 ;; indent headings to create subsections
13699 (substitute* file
13700 (("^[A-Z]" orig)
13701 (string-append " " orig)))
13702 ;; generate a section heading
13703 (call-with-output-file
13704 (string-append "section-" file)
13705 (lambda (out)
13706 (format out "\n\n~a COMMAND\n\n"
13707 (string-upcase cmd))))))
13708 '("check" "find" "parse" "train"))
13709 (substitute* `("intro.txt"
13710 "check.txt" "find.txt" "parse.txt" "train.txt")
13711 ;; format "tag list" for txt2man"
13712 ((" - ")
13713 " ")
13714 ;; restore formatting of the "name" sections
13715 (("(anystyle|check|find|parse|train) ([A-Z])" _ cmd post)
13716 (string-append cmd " - " post)))
13717 (run-with-output-file "anystyle.txt"
13718 "cat"
13719 "intro.txt"
13720 "section-check.txt" "check.txt"
13721 "section-find.txt" "find.txt"
13722 "section-parse.txt" "parse.txt"
13723 "section-train.txt" "train.txt")
13724 (run-with-output-file
13725 "anystyle.1"
13726 "txt2man"
13727 "-v" "General Commands Manual" "-t" "anystyle" "-s" "1"
13728 "-r" #$(string-append "anystyle-cli "
13729 (package-version this-package))
13730 "-B" "check" "-B" "find" "-B" "parse" "-B" "train"
13731 "anystyle.txt")
13732 (install-file "anystyle.1"
13733 (string-append #$output "/share/man/man1"))))))))
13734 (home-page "https://anystyle.io")
13735 (synopsis "Fast and smart citation reference parsing")
13736 (description
13737 "AnyStyle is a very fast and smart parser for academic reference lists
13738and bibliographies. AnyStyle uses powerful machine learning heuristics based
13739on Conditional Random Fields and aims to make it easy to train the model with
13740data that is relevant to your parsing needs.
13741
13742This package provides the @command{anystyle} command-line utility. AnyStyle
13743can also be used as a Ruby library or as a web application, though the later
13744has not yet been packaged for Guix.")
13745 (license license:bsd-2)
13746 (properties `((upstream-name . "anystyle-cli")))))
13747
13748;;;
13749;;; Avoid adding new packages to the end of this file. To reduce the chances
13750;;; of a merge conflict, place them above by existing packages with similar
13751;;; functionality or similar names.
13752;;;