gnu: ruby-childprocess-0.6: Remove version 0.6.3.
[jackhill/guix/guix.git] / gnu / packages / ruby.scm
CommitLineData
6ef8c59a 1;;; GNU Guix --- Functional package management for GNU
37ab3aba 2;;; Copyright © 2014, 2015 Pjotr Prins <pjotr.guix@thebird.nl>
402b03e6 3;;; Copyright © 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
f586c877 4;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
37ab3aba 5;;; Copyright © 2014, 2015 David Thompson <davet@gnu.org>
6742c6f6 6;;; Copyright © 2015, 2019 Ricardo Wurmus <rekado@elephly.net>
cba53c60 7;;; Copyright © 2015, 2016, 2017 Ben Woodcroft <donttrustben@gmail.com>
47956fa0 8;;; Copyright © 2017 ng0 <ng0@n0.is>
3cc8e029 9;;; Copyright © 2017, 2019, 2020 Marius Bakke <mbakke@fastmail.com>
b872b47b 10;;; Copyright © 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
81a22171 11;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
6a9d2266 12;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
433e3154 13;;; Copyright © 2017, 2018, 2019 Christopher Baines <mail@cbaines.net>
4db80f8b 14;;; Copyright © 2018 Vasile Dumitrascu <va511e@yahoo.com>
8ef06557 15;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
3355e49c 16;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
fc4f7c45 17;;; Copyright © 2019 Mikhail Kirillov <w96k.ru@gmail.com>
369faa59 18;;; Copyright © 2019 Jelle Licht <jlicht@fsfe.org>
9e065a8a 19;;; Copyright © 2019 Brian Leung <bkleung89@gmail.com>
9c4cb1ef 20;;; Copyright © 2019 Collin J. Doering <collin@rekahsoft.ca>
0c558aa9 21;;; Copyright © 2019 Diego N. Barbato <dnbarbato@posteo.de>
fd248cb8 22;;; Copyright © 2019 Brett Gilio <brettg@posteo.de>
6ef8c59a
PP
23;;;
24;;; This file is part of GNU Guix.
25;;;
26;;; GNU Guix is free software; you can redistribute it and/or modify it
27;;; under the terms of the GNU General Public License as published by
28;;; the Free Software Foundation; either version 3 of the License, or (at
29;;; your option) any later version.
30;;;
31;;; GNU Guix is distributed in the hope that it will be useful, but
32;;; WITHOUT ANY WARRANTY; without even the implied warranty of
33;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
34;;; GNU General Public License for more details.
35;;;
36;;; You should have received a copy of the GNU General Public License
37;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
38
39(define-module (gnu packages ruby)
40 #:use-module ((guix licenses) #:prefix license:)
41 #:use-module (gnu packages)
1db791d5 42 #:use-module (gnu packages base)
933dad91 43 #:use-module (gnu packages bison)
15b16c2c 44 #:use-module (gnu packages check)
6ef8c59a 45 #:use-module (gnu packages compression)
2a9ce5cb 46 #:use-module (gnu packages crypto)
4a9e0585 47 #:use-module (gnu packages databases)
255d1bbe 48 #:use-module (gnu packages dbm)
c41fba01 49 #:use-module (gnu packages rails)
6ef8c59a 50 #:use-module (gnu packages readline)
6ef8c59a 51 #:use-module (gnu packages autotools)
ad79eb55 52 #:use-module (gnu packages java)
6ef8c59a 53 #:use-module (gnu packages libffi)
f3d7bb93 54 #:use-module (gnu packages libidn)
c41fba01
CB
55 #:use-module (gnu packages linux)
56 #:use-module (gnu packages lsof)
34138e42 57 #:use-module (gnu packages maths)
0c8eedc1 58 #:use-module (gnu packages ncurses)
fe5dd5f4 59 #:use-module (gnu packages networking)
3ca43524 60 #:use-module (gnu packages node)
ac09beba 61 #:use-module (gnu packages python)
44d10b1f 62 #:use-module (gnu packages python-xyz)
763624f5 63 #:use-module (gnu packages ragel)
30f08487 64 #:use-module (gnu packages rsync)
cd0322a3 65 #:use-module (gnu packages sqlite)
cc2b77df 66 #:use-module (gnu packages tls)
66e20863 67 #:use-module (gnu packages version-control)
6ef8c59a
PP
68 #:use-module (guix packages)
69 #:use-module (guix download)
bda0c139 70 #:use-module (guix git-download)
6ef8c59a 71 #:use-module (guix utils)
acf735f2 72 #:use-module (guix build-system gnu)
e920bfca 73 #:use-module (gnu packages xml)
c2c4e5b2 74 #:use-module (gnu packages web)
15b16c2c
CB
75 #:use-module (guix build-system ruby)
76 #:use-module ((srfi srfi-1) #:select (alist-delete)))
6ef8c59a
PP
77
78(define-public ruby
79 (package
80 (name "ruby")
35db2ba7 81 (version "2.5.3")
6ef8c59a
PP
82 (source
83 (origin
84 (method url-fetch)
6becfdff
MW
85 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
86 (version-major+minor version)
12d39eb5 87 "/ruby-" version ".tar.xz"))
6ef8c59a
PP
88 (sha256
89 (base32
35db2ba7 90 "0vrhrw7kcz9mg0jkqnihkcxqy5k05v8k1j0y2735z8wfk8sx1j8w"))
65e84e31
BW
91 (modules '((guix build utils)))
92 (snippet `(begin
93 ;; Remove bundled libffi
c033c195 94 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
65e84e31 95 #t))))
6ef8c59a
PP
96 (build-system gnu-build-system)
97 (arguments
98 `(#:test-target "test"
fd248cb8 99 #:configure-flags '("--enable-shared") ; dynamic linking
6ef8c59a 100 #:phases
9656b8be 101 (modify-phases %standard-phases
65e84e31 102 (add-before 'configure 'replace-bin-sh-and-remove-libffi
9656b8be
BW
103 (lambda _
104 (substitute* '("Makefile.in"
105 "ext/pty/pty.c"
106 "io.c"
107 "lib/mkmf.rb"
108 "process.c"
109 "test/rubygems/test_gem_ext_configure_builder.rb"
110 "test/rdoc/test_rdoc_parser.rb"
111 "test/ruby/test_rubyoptions.rb"
112 "test/ruby/test_process.rb"
113 "test/ruby/test_system.rb"
114 "tool/rbinstall.rb")
115 (("/bin/sh") (which "sh")))
116 #t)))))
6ef8c59a
PP
117 (inputs
118 `(("readline" ,readline)
6ef8c59a
PP
119 ("openssl" ,openssl)
120 ("libffi" ,libffi)
121 ("gdbm" ,gdbm)
122 ("zlib" ,zlib)))
123 (native-search-paths
124 (list (search-path-specification
125 (variable "GEM_PATH")
3cb3fa67 126 (files (list (string-append "lib/ruby/vendor_ruby"))))))
6becfdff 127 (synopsis "Programming language interpreter")
6ef8c59a
PP
128 (description "Ruby is a dynamic object-oriented programming language with
129a focus on simplicity and productivity.")
bf3be6a5 130 (home-page "https://www.ruby-lang.org")
6ef8c59a
PP
131 (license license:ruby)))
132
93cae02f
CB
133(define-public ruby-2.4
134 (package
135 (inherit ruby)
136 (version "2.4.3")
137 (source
138 (origin
139 (method url-fetch)
140 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
141 (version-major+minor version)
142 "/ruby-" version ".tar.xz"))
143 (sha256
144 (base32
145 "0l9bv67dgsphk42lmiskhrnh47hbyj6rfg2rcjx22xivpx07srr3"))
146 (patches (search-patches "ruby-rubygems-276-for-ruby24.patch"))
147 (modules '((guix build utils)))
148 (snippet `(begin
149 ;; Remove bundled libffi
150 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
151 #t))))))
152
98bb983c 153(define-public ruby-2.3
800a7dd5
BW
154 (package
155 (inherit ruby)
2e77bbed 156 (version "2.3.8")
800a7dd5
BW
157 (source
158 (origin
159 (method url-fetch)
160 (uri (string-append "http://cache.ruby-lang.org/pub/ruby/"
161 (version-major+minor version)
162 "/ruby-" version ".tar.xz"))
163 (sha256
164 (base32
2e77bbed 165 "1zhxbjff08pvbnxvn58krns6q0p6g4977q6ykfn823gxhifn63wi"))
800a7dd5
BW
166 (modules '((guix build utils)))
167 (snippet `(begin
168 ;; Remove bundled libffi
169 (delete-file-recursively "ext/fiddle/libffi-3.2.1")
170 #t))))))
171
933dad91
RW
172(define-public mruby
173 (package
174 (name "mruby")
175 (version "2.0.0")
176 (source
177 (origin
178 (method git-fetch)
179 (uri (git-reference
180 (url "https://github.com/mruby/mruby.git")
181 (commit version)))
182 (file-name (git-file-name name version))
183 (sha256
184 (base32
185 "1r6w1asjshff43ymdwa6xmrkggza99mi2kw88k7ic6ag2j81hcj5"))))
186 (build-system gnu-build-system)
187 (arguments
188 `(#:test-target "test"
189 #:phases
190 (modify-phases %standard-phases
191 (delete 'configure)
192 (add-after 'unpack 'enable-verbose-tests
193 (lambda _
194 (substitute* "Makefile"
195 (("ruby ./minirake" m)
196 (string-append m " --verbose")))
197 #t))
198 (add-after 'unpack 'disable-broken-tests
199 (lambda _
200 (substitute* "mrbgems/mruby-io/test/io.rb"
201 (("assert\\('IO.popen.+$" m)
202 (string-append m "skip \"Hangs in the Guix build environment\"\n"))
203 (("assert\\('IO#isatty.+$" m)
204 (string-append m "skip \"Disable for Guix; there is no /dev/tty\"\n"))
205 ;; This one is really weird. The *expected* output is all wrong.
206 (("assert\\('`cmd`.*" m)
207 (string-append m "skip \"Disable for Guix\"\n"))
208 (("echo foo")
209 (string-append (which "echo") " foo")))
210 #t))
211 ;; There is no install target
212 (replace 'install
213 (lambda* (#:key outputs #:allow-other-keys)
214 (let* ((out (assoc-ref outputs "out"))
215 (bin (string-append out "/bin"))
216 (lib (string-append out "/lib")))
217 (mkdir-p bin)
218 (copy-recursively "build/host/bin" bin)
219 (mkdir-p lib)
220 (copy-recursively "build/host/lib" lib))
221 #t)))))
222 (native-inputs
223 `(("ruby" ,ruby)
224 ("bison" ,bison)))
225 (home-page "https://github.com/mruby/mruby")
226 (synopsis "Lightweight Ruby")
227 (description "mruby is the lightweight implementation of the Ruby
228language. Its syntax is Ruby 1.9 compatible. mruby can be linked and
229embedded within your application.")
230 (license license:expat)))
231
34372d39
RW
232(define-public ruby-commander
233 (package
234 (name "ruby-commander")
235 (version "4.4.7")
236 (source
237 (origin
238 (method url-fetch)
239 (uri (rubygems-uri "commander" version))
240 (sha256
241 (base32
242 "1pxakz596fjqak3cdbha6iva1dlqis86i3kjrgg6lf3sp8i5vhwg"))))
243 (build-system ruby-build-system)
244 (arguments
245 `(#:test-target "spec"
246 #:phases
247 (modify-phases %standard-phases
248 ;; Don't run or require rubocop, the code linting tool, as this is a
249 ;; bit unnecessary.
250 (add-after 'unpack 'dont-run-rubocop
251 (lambda _
252 (substitute* "Rakefile"
253 ((".*rubocop.*") "")
254 ((".*RuboCop.*") ""))
255 #t)))))
256 (propagated-inputs
257 `(("ruby-highline" ,ruby-highline)))
258 (native-inputs
259 `(("bundler" ,bundler)
260 ("ruby-rspec-core" ,ruby-rspec-core)
261 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
262 ("ruby-rspec-mocks" ,ruby-rspec-mocks)
263 ("ruby-simplecov" ,ruby-simplecov)))
264 (home-page "https://github.com/commander-rb/commander")
265 (synopsis "Library for building Ruby command-line executables")
266 (description
267 "Commander aims to be a complete solution for Ruby command-line
268executables. Commander bridges the gap between other terminal related
269libraries (OptionParser, HighLine), while providing many new features, and an
270elegant API.")
271 (license license:expat)))
272
823ed097
CB
273(define-public ruby-highline
274 (package
275 (name "ruby-highline")
6742c6f6 276 (version "2.0.1")
823ed097
CB
277 (source
278 (origin
279 (method url-fetch)
280 (uri (rubygems-uri "highline" version))
281 (sha256
282 (base32
6742c6f6 283 "0gr6pckj2jayxw1gdgh9193j5jag5zrrqqlrnl4jvcwpyd3sn2zc"))))
823ed097
CB
284 (build-system ruby-build-system)
285 (arguments
286 `(#:tests? #f)) ;; TODO: NameError: uninitialized constant SPEC
287 (native-inputs
288 `(("bundler" ,bundler)
289 ("ruby-code-statistics" ,ruby-code-statistics)))
290 (synopsis
291 "HighLine helps you build command-line interfaces")
292 (description
293 "HighLine provides a high-level IO library that provides validation,
294type conversion, and more for command-line interfaces. HighLine also includes
295a menu system for providing multiple options to the user.")
296 (home-page "https://github.com/JEG2/highline")
297 (license (list license:gpl2 license:ruby))))
298
bda0c139
DT
299(define-public ruby-hoe
300 (package
301 (name "ruby-hoe")
05f2f8bc 302 (version "3.16.2")
bda0c139 303 (source (origin
e83c6d00
DT
304 (method url-fetch)
305 (uri (rubygems-uri "hoe" version))
bda0c139
DT
306 (sha256
307 (base32
05f2f8bc 308 "12q6dn2irsfamdbjpqvs0dwl4i1vl7wflxrcg972h9jw0ds38f3a"))))
bda0c139 309 (build-system ruby-build-system)
bda0c139
DT
310 (synopsis "Ruby project management helper")
311 (description
312 "Hoe is a rake/rubygems helper for project Rakefiles. It helps manage,
313maintain, and release projects and includes a dynamic plug-in system allowing
314for easy extensibility. Hoe ships with plug-ins for all the usual project
315tasks including rdoc generation, testing, packaging, deployment, and
316announcement.")
2f3800e5 317 (home-page "https://www.zenspider.com/projects/hoe.html")
bda0c139
DT
318 (license license:expat)))
319
022170dc
PP
320(define-public ruby-rake-compiler
321 (package
322 (name "ruby-rake-compiler")
0cd7b816 323 (version "1.0.4")
022170dc
PP
324 (source (origin
325 (method url-fetch)
e83c6d00 326 (uri (rubygems-uri "rake-compiler" version))
022170dc
PP
327 (sha256
328 (base32
0cd7b816 329 "1xpdi4w8zaklk1i9ps8g3k0icw3v5fcks092l84w28rgrpx82qip"))))
022170dc
PP
330 (build-system ruby-build-system)
331 (arguments
e83c6d00 332 '(#:tests? #f)) ; needs cucumber
022170dc 333 (synopsis "Building and packaging helper for Ruby native extensions")
e881752c 334 (description "Rake-compiler provides a framework for building and
022170dc
PP
335packaging native C and Java extensions in Ruby.")
336 (home-page "https://github.com/rake-compiler/rake-compiler")
337 (license license:expat)))
338
30f08487
RW
339(define-public ruby-rsync
340 (package
341 (name "ruby-rsync")
342 (version "1.0.9")
343 (source
344 (origin
345 (method url-fetch)
346 (uri (rubygems-uri "rsync" version))
347 (sha256
348 (base32
349 "0p8b27q1gvxilqfq2528xpwglzcm2myikkjxpqk7mwbwg9r6knxv"))))
350 (build-system ruby-build-system)
351 (arguments
352 '(#:test-target "spec"
353 #:phases
354 (modify-phases %standard-phases
355 (add-after 'unpack 'remove-coveralls-requirement
356 (lambda _
357 (substitute* "spec/spec_helper.rb"
358 (("require 'coveralls'") "")
359 (("Coveralls.wear!") ""))
360 #t)))))
361 (native-inputs
362 `(("bundler" ,bundler)
363 ("rsync" ,rsync)
364 ("ruby-rspec-core" ,ruby-rspec-core)
365 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
366 ("ruby-rspec-mocks" ,ruby-rspec-mocks)))
367 (home-page "https://github.com/jbussdieker/ruby-rsync")
368 (synopsis "Ruby wrapper around rsync")
369 (description
370 "Ruby Rsync is a Ruby library that can synchronize files between remote
371hosts by wrapping the @file{rsync} binary.")
372 (license license:expat)))
373
acf735f2
DT
374(define-public ruby-i18n
375 (package
376 (name "ruby-i18n")
92dddf6b 377 (version "1.7.0")
acf735f2
DT
378 (source (origin
379 (method url-fetch)
e83c6d00 380 (uri (rubygems-uri "i18n" version))
acf735f2
DT
381 (sha256
382 (base32
92dddf6b 383 "0hmypvx9iyc0b4hski7aic2xzm09cg1c7q1qlpnk3k8s5acxzyhl"))))
acf735f2
DT
384 (build-system ruby-build-system)
385 (arguments
0bfdfd37 386 '(#:tests? #f)) ; no tests
cbb50182 387 (propagated-inputs `(("concurrent-ruby" ,ruby-concurrent)))
acf735f2
DT
388 (synopsis "Internationalization library for Ruby")
389 (description "Ruby i18n is an internationalization and localization
390solution for Ruby programs. It features translation and localization,
391interpolation of values to translations, pluralization, customizable
392transliteration to ASCII, flexible defaults, bulk lookup, lambdas as
393translation data, custom key/scope separator, custom exception handlers, and
394an extensible architecture with a swappable backend.")
92dddf6b 395 (home-page "https://github.com/ruby-i18n/i18n")
acf735f2 396 (license license:expat)))
eb0c2dd6 397
62b138ca
CB
398(define-public ruby-iruby
399 (package
400 (name "ruby-iruby")
401 (version "0.3")
402 (source
403 (origin
404 (method url-fetch)
405 (uri (rubygems-uri "iruby" version))
406 (sha256
407 (base32
408 "1wdf2c0x8y6cya0n3y0p3p7b1sxkb2fdavdn2k58rf4rs37s7rzn"))))
409 (build-system ruby-build-system)
410 (arguments
411 ;; TODO: Tests currently fail.
412 ;;
413 ;; Finished in 1.764405s, 1.1335 runs/s, 5.1009 assertions/s.
414 ;;
415 ;; 1) Failure:
416 ;; IntegrationTest#test_interaction [/tmp/guix-build-ruby-iruby-0.3.drv-0/gem/test/integration_test.rb:25]:
417 ;; In [ expected
418 ;;
419 ;; 2 runs, 9 assertions, 1 failures, 0 errors, 0 skips
420 '(#:tests? #f
421 #:phases
422 (modify-phases %standard-phases
423 (add-after 'unpack 'patch-ipython
424 (lambda* (#:key inputs #:allow-other-keys)
425 (substitute* "lib/iruby/command.rb"
426 (("version = `")
427 (string-append
428 "version = `"
429 (assoc-ref inputs "python-ipython")
430 "/bin/"))
431 (("Kernel\\.exec\\('")
432 (string-append
433 "Kernel.exec('"
434 (assoc-ref inputs "python-ipython")
435 "/bin/")))
436 #t)))))
437 (inputs
438 `(("python-ipython" ,python-ipython)))
439 (propagated-inputs
440 `(("ruby-bond" ,ruby-bond)
441 ("ruby-data_uri" ,ruby-data_uri)
442 ("ruby-mimemagic" ,ruby-mimemagic)
443 ("ruby-multi-json" ,ruby-multi-json)
444 ("ruby-cztop" ,ruby-cztop)
445 ;; Optional inputs
446 ("ruby-pry" ,ruby-pry)))
447 (synopsis "Ruby kernel for Jupyter/IPython")
448 (description
449 "This package provides a Ruby kernel for Jupyter/IPython frontends (e.g.
450notebook).")
451 (home-page "https://github.com/SciRuby/iruby")
452 (license license:expat)))
453
eb0c2dd6
DT
454;; RSpec is the dominant testing library for Ruby projects. Even RSpec's
455;; dependencies use RSpec for their test suites! To avoid these circular
456;; dependencies, we disable tests for all of the RSpec-related packages.
87688ff3 457(define-public ruby-rspec-support
eb0c2dd6
DT
458 (package
459 (name "ruby-rspec-support")
bee67d18 460 (version "3.8.0")
eb0c2dd6
DT
461 (source (origin
462 (method url-fetch)
e83c6d00 463 (uri (rubygems-uri "rspec-support" version))
eb0c2dd6
DT
464 (sha256
465 (base32
bee67d18 466 "0p3m7drixrlhvj2zpc38b11x145bvm311x6f33jjcxmvcm0wq609"))))
eb0c2dd6
DT
467 (build-system ruby-build-system)
468 (arguments
469 '(#:tests? #f)) ; avoid dependency cycles
470 (synopsis "RSpec support library")
471 (description "Support utilities for RSpec gems.")
472 (home-page "https://github.com/rspec/rspec-support")
473 (license license:expat)))
474
475(define-public ruby-rspec-core
476 (package
477 (name "ruby-rspec-core")
bee67d18 478 (version "3.8.0")
eb0c2dd6
DT
479 (source (origin
480 (method url-fetch)
e83c6d00 481 (uri (rubygems-uri "rspec-core" version))
eb0c2dd6
DT
482 (sha256
483 (base32
bee67d18 484 "1p1s5bnbqp3sxk67y0fh0x884jjym527r0vgmhbm81w7aq6b7l4p"))))
eb0c2dd6
DT
485 (build-system ruby-build-system)
486 (arguments
487 '(#:tests? #f)) ; avoid dependency cycles
488 (propagated-inputs
489 `(("ruby-rspec-support" ,ruby-rspec-support)))
490 (synopsis "RSpec core library")
491 (description "Rspec-core provides the RSpec test runner and example
492groups.")
493 (home-page "https://github.com/rspec/rspec-core")
494 (license license:expat)))
e6962009 495
64c318f2
BW
496(define-public ruby-rspec-core-2
497 (package (inherit ruby-rspec-core)
498 (version "2.14.8")
499 (source (origin
500 (method url-fetch)
501 (uri (rubygems-uri "rspec-core" version))
502 (sha256
503 (base32
504 "0psjy5kdlz3ph39br0m01w65i1ikagnqlg39f8p65jh5q7dz8hwc"))))
505 (propagated-inputs `())))
506
20c05ea9 507(define-public ruby-diff-lcs
e6962009
DT
508 (package
509 (name "ruby-diff-lcs")
e2fcef39 510 (version "1.3")
e6962009
DT
511 (source (origin
512 (method url-fetch)
e83c6d00 513 (uri (rubygems-uri "diff-lcs" version))
e6962009
DT
514 (sha256
515 (base32
e2fcef39 516 "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza"))))
e6962009
DT
517 (build-system ruby-build-system)
518 (arguments
519 '(#:tests? #f)) ; avoid dependency cycles
520 (synopsis "Compute the difference between two Enumerable sequences")
521 (description "Diff::LCS computes the difference between two Enumerable
522sequences using the McIlroy-Hunt longest common subsequence (LCS) algorithm.
523It includes utilities to create a simple HTML diff output format and a
524standard diff-like tool.")
525 (home-page "https://github.com/halostatue/diff-lcs")
526 (license license:expat)))
527
528(define-public ruby-rspec-expectations
529 (package
530 (name "ruby-rspec-expectations")
bee67d18 531 (version "3.8.2")
e6962009
DT
532 (source (origin
533 (method url-fetch)
e83c6d00 534 (uri (rubygems-uri "rspec-expectations" version))
e6962009
DT
535 (sha256
536 (base32
bee67d18 537 "18l21hy1zdc2pgc2yb17k3n2al1khpfr0z6pijlm852iz6vj0dkm"))))
e6962009
DT
538 (build-system ruby-build-system)
539 (arguments
540 '(#:tests? #f)) ; avoid dependency cycles
541 (propagated-inputs
542 `(("ruby-rspec-support" ,ruby-rspec-support)
20c05ea9 543 ("ruby-diff-lcs" ,ruby-diff-lcs)))
e881752c 544 (synopsis "RSpec expectations library")
e6962009
DT
545 (description "Rspec-expectations provides a simple API to express expected
546outcomes of a code example.")
547 (home-page "https://github.com/rspec/rspec-expectations")
548 (license license:expat)))
4f2a0cac 549
fb157f25
BW
550(define-public ruby-rspec-expectations-2
551 (package (inherit ruby-rspec-expectations)
552 (version "2.14.5")
553 (source (origin
554 (method url-fetch)
555 (uri (rubygems-uri "rspec-expectations" version))
556 (sha256
557 (base32
558 "1ni8kw8kjv76jvwjzi4jba00k3qzj9f8wd94vm6inz0jz3gwjqf9"))))
559 (propagated-inputs
560 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
561
999ffb26
DM
562(define-public ruby-rspec-its
563 (package
564 (name "ruby-rspec-its")
b2244c68 565 (version "1.3.0")
999ffb26
DM
566 (source
567 (origin
3306f02a
CB
568 (method git-fetch)
569 (uri (git-reference
570 (url "https://github.com/rspec/rspec-its.git")
571 (commit (string-append "v" version))))
572 (file-name (git-file-name name version))
999ffb26
DM
573 (sha256
574 (base32
b2244c68 575 "02mlsc9d4d1cjj5vahi8v3q8hyn9fyiv8nnlidhgfh186qp20g1p"))))
999ffb26
DM
576 (build-system ruby-build-system)
577 (arguments
3306f02a
CB
578 `(#:test-target "spec"
579 #:phases
580 (modify-phases %standard-phases
581 (add-after 'unpack 'dont-install-gems-from-gemfile
582 (lambda _
583 (substitute* "Gemfile"
584 (("rspec rspec-core rspec-expectations rspec-mocks rspec-support")
585 ""))
586 #t))
b2244c68
BH
587 (add-before 'build 'update-ffi-in-gemfile
588 (lambda _
589 (substitute* "Gemfile"
590 ((" gem 'ffi', '~> 1.9.25'") " gem 'ffi', '~> 1.10.0'"))
591 #t))
3306f02a
CB
592 (add-before 'build 'remove-unnecessary-dependency-versions-from-gemfile
593 (lambda _
594 (substitute* "rspec-its.gemspec"
595 (("rake.*") "rake'\n")
b2244c68
BH
596 (("spec.add_development_dependency 'cucumber'.*")
597 "spec.add_development_dependency 'cucumber'\n")
3306f02a 598 (("bundler.*") "bundler'\n")
b2244c68 599 (("\"aruba.*") "'aruba'\n"))
3306f02a 600 #t)))))
999ffb26
DM
601 (propagated-inputs
602 `(("ruby-rspec-core" ,ruby-rspec-core)
603 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
3306f02a
CB
604 (native-inputs
605 `(("bundler" ,bundler)
606 ("ruby-cucumber" ,ruby-cucumber)
b2244c68 607 ("ruby-ffi" ,ruby-ffi)
3306f02a
CB
608 ("ruby-aruba" ,ruby-aruba)))
609 (synopsis "RSpec extension that provides the @code{its} method")
610 (description
611 "RSpec::Its provides the its method as a short-hand to specify the expected
612value of an attribute. For example, one can use @code{its(:size)\\{should
613eq(1)\\}}.")
999ffb26
DM
614 (home-page "https://github.com/rspec/rspec-its")
615 (license license:expat)))
616
4f2a0cac
DT
617(define-public ruby-rspec-mocks
618 (package
619 (name "ruby-rspec-mocks")
bee67d18 620 (version "3.8.0")
4f2a0cac
DT
621 (source (origin
622 (method url-fetch)
e83c6d00 623 (uri (rubygems-uri "rspec-mocks" version))
4f2a0cac
DT
624 (sha256
625 (base32
bee67d18 626 "06y508cjqycb4yfhxmb3nxn0v9xqf17qbd46l1dh4xhncinr4fyp"))))
4f2a0cac
DT
627 (build-system ruby-build-system)
628 (arguments
629 '(#:tests? #f)) ; avoid dependency cycles
630 (propagated-inputs
631 `(("ruby-rspec-support" ,ruby-rspec-support)
20c05ea9 632 ("ruby-diff-lcs" ,ruby-diff-lcs)))
4f2a0cac
DT
633 (synopsis "RSpec stubbing and mocking library")
634 (description "Rspec-mocks provides RSpec's \"test double\" framework, with
635support for stubbing and mocking.")
636 (home-page "https://github.com/rspec/rspec-mocks")
637 (license license:expat)))
d4fde1f2 638
6da9adeb
BW
639(define-public ruby-rspec-mocks-2
640 (package (inherit ruby-rspec-mocks)
641 (version "2.14.6")
642 (source (origin
643 (method url-fetch)
644 (uri (rubygems-uri "rspec-mocks" version))
645 (sha256
646 (base32
647 "1fwsmijd6w6cmqyh4ky2nq89jrpzh56hzmndx9wgkmdgfhfakv30"))))
648 (propagated-inputs
649 `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
650
198bc648
CB
651(define-public ruby-rspec-rerun
652 (package
653 (name "ruby-rspec-rerun")
654 (version "1.1.0")
655 (source
656 (origin
657 (method url-fetch)
658 (uri (rubygems-uri "rspec-rerun" version))
659 (sha256
660 (base32
661 "1gy7znkcaqhpccfnk2nvaqbsvgxy3q57cmjwkl9fi1zabaq5lbkj"))))
662 (build-system ruby-build-system)
663 (arguments
664 '(;; No included tests
665 #:tests? #f))
666 (propagated-inputs `(("ruby-rspec" ,ruby-rspec)))
667 (synopsis "Track failed RSpec tests to re-run them")
668 (description
669 "This package provides an automated way to track, and then re-run failed
670RSpec tests.")
671 (home-page "https://github.com/dblock/rspec-rerun")
672 (license license:expat)))
673
9c4cb1ef
CD
674(define-public ruby-rspec-wait
675 (package
676 (name "ruby-rspec-wait")
677 (version "0.0.9")
678 (source
679 (origin
680 (method url-fetch)
681 (uri (rubygems-uri "rspec-wait" version))
682 (sha256
683 (base32
684 "0gvj1bp5ccx001dyvcgk2j49s5sl6vs9fdaqqb08z3bd1554hsww"))))
685 (build-system ruby-build-system)
686 (arguments
687 '(#:phases
688 (modify-phases %standard-phases
689 (replace 'check
690 (lambda _
691 (invoke "rake" "spec"))))))
692 (native-inputs
693 `(("bundler" ,bundler)))
694 (propagated-inputs
695 `(("ruby-rspec" ,ruby-rspec)))
696 (home-page "https://github.com/laserlemon/rspec-wait")
697 (synopsis "Wait for conditions in RSpec")
698 (description
699 "RSpec::Wait strives to make it easier to test asynchronous or slow
700interactions.")
701 (license license:expat)))
702
d4fde1f2
DT
703(define-public ruby-rspec
704 (package
705 (name "ruby-rspec")
bee67d18 706 (version "3.8.0")
d4fde1f2
DT
707 (source (origin
708 (method url-fetch)
e83c6d00 709 (uri (rubygems-uri "rspec" version))
d4fde1f2
DT
710 (sha256
711 (base32
bee67d18 712 "15ppasvb9qrscwlyjz67ppw1lnxiqnkzx5vkx1bd8x5n3dhikxc3"))))
d4fde1f2
DT
713 (build-system ruby-build-system)
714 (arguments
715 '(#:tests? #f)) ; avoid dependency cycles
716 (propagated-inputs
717 `(("ruby-rspec-core" ,ruby-rspec-core)
718 ("ruby-rspec-mocks" ,ruby-rspec-mocks)
719 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
720 (synopsis "Behavior-driven development framework for Ruby")
721 (description "RSpec is a behavior-driven development (BDD) framework for
722Ruby. This meta-package includes the RSpec test runner, along with the
723expectations and mocks frameworks.")
724 (home-page "http://rspec.info/")
725 (license license:expat)))
2cbc105b 726
5ac984b3
BW
727(define-public ruby-rspec-2
728 (package (inherit ruby-rspec)
729 (version "2.14.1")
730 (source (origin
731 (method url-fetch)
732 (uri (rubygems-uri "rspec" version))
733 (sha256
734 (base32
735 "134y4wzk1prninb5a0bhxgm30kqfzl8dg06af4js5ylnhv2wd7sg"))))
736 (propagated-inputs
737 `(("ruby-rspec-core" ,ruby-rspec-core-2)
738 ("ruby-rspec-mocks" ,ruby-rspec-mocks-2)
739 ("ruby-rspec-expectations" ,ruby-rspec-expectations-2)))))
740
2cbc105b
DT
741;; Bundler is yet another source of circular dependencies, so we must disable
742;; its test suite as well.
743(define-public bundler
744 (package
745 (name "bundler")
4fdd4d33 746 (version "1.17.3")
2cbc105b
DT
747 (source (origin
748 (method url-fetch)
e83c6d00 749 (uri (rubygems-uri "bundler" version))
2cbc105b
DT
750 (sha256
751 (base32
4fdd4d33 752 "0ln3gnk7cls81gwsbxvrmlidsfd78s6b2hzlm4d4a9wbaidzfjxw"))))
2cbc105b
DT
753 (build-system ruby-build-system)
754 (arguments
755 '(#:tests? #f)) ; avoid dependency cycles
756 (synopsis "Ruby gem bundler")
757 (description "Bundler automatically downloads and installs a list of gems
758specified in a \"Gemfile\", as well as their dependencies.")
2f3800e5 759 (home-page "https://bundler.io/")
2cbc105b 760 (license license:expat)))
98b87b82 761
cf36174f
RW
762(define-public ruby-builder
763 (package
764 (name "ruby-builder")
42b48db2 765 (version "3.2.3")
cf36174f
RW
766 (source (origin
767 (method url-fetch)
768 (uri (rubygems-uri "builder" version))
769 (sha256
770 (base32
42b48db2 771 "0qibi5s67lpdv1wgcj66wcymcr04q6j4mzws6a479n0mlrmh5wr1"))))
cf36174f
RW
772 (build-system ruby-build-system)
773 (arguments
774 `(#:phases
775 (modify-phases %standard-phases
776 (add-after 'unpack 'do-not-use-rvm
777 (lambda _
778 (substitute* "rakelib/tags.rake"
779 (("RVM_GEMDIR = .*") "RVM_GEMDIR = 'no-rvm-please'\n"))
780 #t)))))
781 (synopsis "Ruby library to create structured data")
782 (description "Builder provides a number of builder objects that make it
783easy to create structured data. Currently the following builder objects are
784supported: XML Markup and XML Events.")
785 (home-page "https://github.com/jimweirich/builder")
786 (license license:expat)))
787
566f71f8
CB
788(define-public ruby-bump
789 (package
790 (name "ruby-bump")
791 (version "0.7.0")
792 (source
793 (origin
794 (method url-fetch)
795 (uri (rubygems-uri "bump" version))
796 (sha256
797 (base32
798 "1xinbr9rzh6cj75x24niwgqcnbhdxc68a8bc41lk8xv6fd906fym"))))
799 (build-system ruby-build-system)
800 (arguments
801 '(;; No included tests
802 #:tests? #f))
803 (synopsis "Tool for working with Rubygems")
804 (description
805 "Bump provides commands to manage Rubygem versioning, updating to the
806next patch version for example.")
807 (home-page "https://github.com/gregorym/bump")
808 (license license:expat)))
809
ad79eb55
RW
810(define-public ruby-rjb
811 (package
812 (name "ruby-rjb")
aeb4e61e 813 (version "1.5.5")
ad79eb55
RW
814 (source (origin
815 (method url-fetch)
816 (uri (rubygems-uri "rjb" version))
817 (sha256
818 (base32
aeb4e61e 819 "1ppj8rbicj3w0nhh7f73mflq19yd7pzdzkh2a91hcvphriy5b0ca"))))
ad79eb55
RW
820 (build-system ruby-build-system)
821 (arguments
822 `(#:tests? #f ; no rakefile
823 #:phases
824 (modify-phases %standard-phases
825 (add-before 'build 'set-java-home
826 (lambda* (#:key inputs #:allow-other-keys)
827 (setenv "JAVA_HOME" (assoc-ref inputs "jdk"))
828 #t)))))
829 (native-inputs
d2540f80 830 `(("jdk" ,icedtea "jdk")))
ad79eb55
RW
831 (synopsis "Ruby-to-Java bridge using the Java Native Interface")
832 (description "RJB is a bridge program that connects Ruby and Java via the
833Java Native Interface.")
2f3800e5 834 (home-page "https://www.artonx.org/collabo/backyard/?RubyJavaBridge")
ad79eb55
RW
835 (license license:lgpl2.1+)))
836
f9ae2c06
PP
837(define-public ruby-log4r
838 (package
839 (name "ruby-log4r")
840 (version "1.1.10")
841 (source
842 (origin
843 (method url-fetch)
844 (uri (rubygems-uri "log4r" version))
845 (sha256
846 (base32
847 "0ri90q0frfmigkirqv5ihyrj59xm8pq5zcmf156cbdv4r4l2jicv"))))
848 (build-system ruby-build-system)
849 (arguments
850 '(#:tests? #f)) ; no Rakefile in gem
851 (synopsis "Flexible logging library for Ruby")
852 (description "Comprehensive and flexible logging library written
853in Ruby for use in Ruby programs. It features a hierarchical logging
854system of any number of levels, custom level names, logger
855inheritance, multiple output destinations per log event, execution
856tracing, custom formatting, thread safteyness, XML and YAML
857configuration, and more.")
858 (home-page "http://log4r.rubyforge.org/")
859 (license license:bsd-3)))
860
71a03c29
RW
861(define-public ruby-atoulme-antwrap
862 (package
863 (name "ruby-atoulme-antwrap")
864 (version "0.7.5")
865 (source (origin
866 (method url-fetch)
867 (uri (rubygems-uri "atoulme-Antwrap" version))
868 (sha256
869 (base32
870 "05s3iw44lqa81f8nfy5f0xjj808600h82zb9bsh46b9kcq2w2kmz"))))
871 (build-system ruby-build-system)
872 ;; Test data required for most of the tests are not included.
873 (arguments `(#:tests? #f))
874 (native-inputs
875 `(("ruby-hoe" ,ruby-hoe)))
876 (inputs
877 `(("ruby-rjb" ,ruby-rjb)))
878 (synopsis "Ruby wrapper for the Ant build tool")
879 (description "Antwrap is a Ruby module that wraps the Apache Ant build
880tool. Antwrap can be used to invoke Ant tasks from a Ruby or a JRuby
881script.")
882 (home-page "http://rubyforge.org/projects/antwrap/")
883 (license license:expat)))
884
fe1ddad5
RW
885(define-public ruby-atoulme-saikuro
886 (package
887 (name "ruby-atoulme-saikuro")
888 (version "1.2.1")
889 (source (origin
890 (method url-fetch)
891 (uri (rubygems-uri "atoulme-Saikuro" version))
892 (sha256
893 (base32
894 "0kvd2nsxffbza61d3q4j94wrbnbv50r1zy3a7q26f6k706fw1f19"))))
895 (build-system ruby-build-system)
896 ;; FIXME: There are no unit tests. The tests are demonstrations of the
897 ;; "saikuro" tool.
898 (arguments `(#:tests? #f))
899 (synopsis "Cyclomatic complexity analyzer")
900 (description "Saikuro is a Ruby cyclomatic complexity analyzer. When
901given Ruby source code Saikuro will generate a report listing the cyclomatic
902complexity of each method found. In addition, Saikuro counts the number of
903lines per method and can generate a listing of the number of tokens on each
904line of code.")
905 (home-page "http://www.github.com/atoulme/Saikuro")
906 ;; File headers contain the BSD-3 license and the README.rdoc says that
907 ;; "Saikuro uses the BSD license", but the LICENSE file contains the text
908 ;; of the Expat license.
909 (license license:bsd-3)))
910
34138e42
BW
911(define-public ruby-asciidoctor
912 (package
913 (name "ruby-asciidoctor")
9933a8e7 914 (version "1.5.7.1")
34138e42
BW
915 (source
916 (origin
917 (method url-fetch)
918 (uri (rubygems-uri "asciidoctor" version))
919 (sha256
920 (base32
9933a8e7 921 "0v52bzc72cvg7zfgq27pa4mgyf29dx9m20fghrw1xmvwgd519n1w"))))
34138e42
BW
922 (build-system ruby-build-system)
923 (arguments
924 `(#:test-target "test:all"
925 #:phases
926 (modify-phases %standard-phases
927 (add-before 'check 'remove-circular-tests
928 (lambda _
929 ;; Remove tests that require circular dependencies to load or pass.
930 (delete-file "test/invoker_test.rb")
931 (delete-file "test/converter_test.rb")
932 (delete-file "test/options_test.rb")
933 #t)))))
934 (native-inputs
935 `(("ruby-minitest" ,ruby-minitest)
936 ("ruby-nokogiri" ,ruby-nokogiri)
937 ("ruby-asciimath" ,ruby-asciimath)
938 ("ruby-coderay" ,ruby-coderay)))
939 (synopsis "Converter from AsciiDoc content to other formats")
940 (description
941 "Asciidoctor is a text processor and publishing toolchain for converting
20860819 942AsciiDoc content to HTML5, DocBook 5 (or 4.5), PDF, and other formats.")
bba082a1 943 (home-page "https://asciidoctor.org")
34138e42
BW
944 (license license:expat)))
945
d5840f77
CB
946(define-public ruby-ast
947 (package
948 (name "ruby-ast")
949 (version "2.4.0")
950 (source
951 (origin
952 (method url-fetch)
953 (uri (rubygems-uri "ast" version))
954 (sha256
955 (base32
956 "184ssy3w93nkajlz2c70ifm79jp3j737294kbc5fjw69v1w0n9x7"))))
957 (build-system ruby-build-system)
958 (arguments
959 '(#:phases
960 (modify-phases %standard-phases
961 (add-after 'unpack 'remove-coveralls-requirement
962 (lambda _
963 (substitute* "test/helper.rb"
964 (("require 'coveralls'") "")
965 (("Coveralls::SimpleCov::Formatter") ""))
966 #t))
967 (add-after 'extract-gemspec 'remove-unnecessary-requirements
968 (lambda _
969 (substitute* "ast.gemspec"
970 ((".*coveralls.*") "\n")
971 (("%q<rest-client>.*") "%q<rest-client>.freeze, [\">= 0\"])\n")
972 (("%q<mime-types>.*") "%q<mime-types>.freeze, [\">= 0\"])\n")
973 (("%q<rake>.*") "%q<rake>.freeze, [\">= 0\"])\n"))
974 #t)))))
975 (native-inputs
976 `(("bundler" ,bundler)
977 ("ruby-simplecov" ,ruby-simplecov)
978 ("ruby-json-pure" ,ruby-json-pure)
979 ("ruby-mime-times" ,ruby-mime-types)
980 ("ruby-yard" ,ruby-yard)
981 ("ruby-kramdown" ,ruby-kramdown)
982 ("ruby-rest-client" ,ruby-rest-client)
983 ("ruby-bacon" ,ruby-bacon)
984 ("ruby-bacon-colored-output" ,ruby-bacon-colored-output)
985 ("ruby-racc" ,ruby-racc)))
986 (synopsis "Library for working with Abstract Syntax Trees")
987 (description
988 "@code{ast} is a Ruby library for working with Abstract Syntax Trees.
989It does this through immutable data structures.")
990 (home-page "https://whitequark.github.io/ast/")
991 (license license:expat)))
992
b88502c9
BW
993(define-public ruby-sporkmonger-rack-mount
994 ;; Testing the addressable gem requires a newer commit than that released, so
995 ;; use an up to date version.
996 (let ((revision "1")
997 (commit "076aa2c47d9a4c081f1e9bcb56a826a9e72bd5c3"))
998 (package
999 (name "ruby-sporkmonger-rack-mount")
1000 (version (git-version "0.8.3" revision commit))
1001 (source (origin
1002 (method git-fetch)
1003 (uri (git-reference
1004 (url "https://github.com/sporkmonger/rack-mount.git")
1005 (commit commit)))
1006 (file-name (git-file-name name version))
1007 (sha256
1008 (base32
1009 "1scx273g3xd93424x9lxc4zyvcp2niknbw5mkz6wkivpf7xsyxdq"))))
1010 (build-system ruby-build-system)
1011 (arguments
1012 ;; Tests currently fail so disable them.
1013 ;; https://github.com/sporkmonger/rack-mount/pull/1
1014 `(#:tests? #f))
1015 (propagated-inputs `(("ruby-rack" ,ruby-rack)))
1016 (synopsis "Stackable dynamic tree based Rack router")
1017 (description
1018 "@code{Rack::Mount} supports Rack's @code{X-Cascade} convention to
1019continue trying routes if the response returns pass. This allows multiple
1020routes to be nested or stacked on top of each other.")
1021 (home-page "https://github.com/sporkmonger/rack-mount")
1022 (license license:expat))))
1023
2f9e0b68
RW
1024(define-public ruby-ci-reporter
1025 (package
1026 (name "ruby-ci-reporter")
1027 (version "2.0.0")
1028 (source (origin
1029 (method url-fetch)
1030 (uri (rubygems-uri "ci_reporter" version))
1031 (sha256
1032 (base32
1033 "17fm20jmw3ajdryhkkxpjahcfx7bgswqzxrskivlkns2718ayyyg"))))
1034 (build-system ruby-build-system)
1035 (arguments
1036 `(#:test-target "rspec"))
1037 (propagated-inputs
1038 `(("ruby-builder" ,ruby-builder)))
1039 (native-inputs
1040 `(("bundler" ,bundler)
1041 ("ruby-rspec" ,ruby-rspec)))
1042 (synopsis "Generate XML reports of runs test")
1043 (description
1044 "@code{CI::Reporter} is an add-on to Ruby testing frameworks that allows
1045you to generate XML reports of your test runs. The resulting files can be
1046read by a continuous integration system that understands Ant's JUnit report
1047format.")
1048 (home-page "https://github.com/nicksieger/ci_reporter")
1049 (license license:expat)))
1050
2ed201c1
CB
1051(define-public ruby-contracts
1052 (package
1053 (name "ruby-contracts")
1054 (version "0.16.0")
1055 (source
1056 (origin
1057 (method url-fetch)
1058 (uri (rubygems-uri "contracts" version))
1059 (sha256
1060 (base32
1061 "119f5p1n6r5svbx8h09za6a4vrsnj5i1pzr9cqdn9hj3wrxvyl3a"))))
1062 (build-system ruby-build-system)
1063 (arguments
1064 '(#:test-target "spec"
1065 #:phases
1066 (modify-phases %standard-phases
1067 ;; Don't run or require rubocop, the code linting tool, as this is a
1068 ;; bit unnecessary.
1069 (add-after 'unpack 'dont-run-rubocop
1070 (lambda _
1071 (substitute* "Rakefile"
1072 ((".*rubocop.*") "")
1073 ((".*RuboCop.*") ""))
1074 #t)))))
1075 (native-inputs
1076 `(("ruby-rspec" ,ruby-rspec)))
1077 (synopsis "Method contracts for Ruby")
1078 (description
1079 "This library provides contracts for Ruby. A contract describes the
1080correct inputs and output for a method, and will raise an error if a incorrect
1081value is found.")
1082 (home-page "https://github.com/egonSchiele/contracts.ruby")
1083 (license license:bsd-2)))
1084
6f8bf0eb
CB
1085(define-public ruby-crack
1086 (package
1087 (name "ruby-crack")
1088 (version "0.4.3")
1089 (source
1090 (origin
1091 (method url-fetch)
1092 (uri (rubygems-uri "crack" version))
1093 (sha256
1094 (base32
1095 "0abb0fvgw00akyik1zxnq7yv391va148151qxdghnzngv66bl62k"))))
1096 (build-system ruby-build-system)
1097 (arguments
1098 `(#:phases
1099 (modify-phases %standard-phases
1100 (replace 'check
1101 (lambda* (#:key tests? #:allow-other-keys)
1102 (when tests?
1103 (for-each (lambda (file)
1104 (display file)(display "\n")
1105 (invoke "ruby" "-Ilib" "-Itest" "-rrubygems" file))
1106 (find-files "test" ".*rb$")))
1107 #t)))))
1108 (propagated-inputs
1109 `(("ruby-safe-yaml" ,ruby-safe-yaml)))
1110 (synopsis "Simple JSON and XML parsing for Ruby")
1111 (description
1112 "@code{crack} provides really simple JSON and XML parsing, extracted from
1113code in Merb and Rails.")
1114 (home-page "https://github.com/jnunemaker/crack")
1115 (license license:expat)))
1116
bef3506e
CB
1117(define-public ruby-cliver
1118 (package
1119 (name "ruby-cliver")
1120 (version "0.3.2")
1121 (source
1122 (origin
1123 (method url-fetch)
1124 (uri (rubygems-uri "cliver" version))
1125 (sha256
1126 (base32
1127 "096f4rj7virwvqxhkavy0v55rax10r4jqf8cymbvn4n631948xc7"))))
1128 (build-system ruby-build-system)
1129 (arguments
1130 '(#:phases
1131 (modify-phases %standard-phases
1132 ;; Avoid a incompatibility between rspec@2 and rake. Using rspec@3
1133 ;; would be nice, but the tests look to be incompatible:
1134 ;;
1135 ;; NoMethodError: undefined method `last_comment'
1136 (replace 'check
1137 (lambda* (#:key tests? #:allow-other-keys)
1138 (when tests?
1139 (invoke "rspec"))
1140 #t)))))
1141 (native-inputs
1142 `(("bundler" ,bundler)
1143 ("ruby-rspec" ,ruby-rspec-2)))
1144 (synopsis "Assertions for command-line dependencies in Ruby")
1145 (description
1146 "@code{cliver} provides a way to detect missing command-line
1147dependencies, including versions.")
1148 (home-page "https://github.com/yaauie/cliver")
1149 (license license:expat)))
1150
fe5dd5f4
CB
1151(define-public ruby-czmq-ffi-gen
1152 (package
1153 (name "ruby-czmq-ffi-gen")
1154 (version "0.13.0")
1155 (source
1156 (origin
1157 (method url-fetch)
1158 (uri (rubygems-uri "czmq-ffi-gen" version))
1159 (sha256
1160 (base32
1161 "1yf719dmf4mwks1hqdsy6i5kzfvlsha69sfnhb2fr2cgk2snbys3"))))
1162 (build-system ruby-build-system)
1163 (arguments
1164 '(#:tests? #f ;; Tests are not included in the release on rubygems.org
1165 #:phases
1166 (modify-phases %standard-phases
1167 (add-after 'unpack 'patch-lib_dirs
1168 (lambda* (#:key inputs #:allow-other-keys)
1169 (substitute* "lib/czmq-ffi-gen/czmq/ffi.rb"
1170 (("lib\\_dirs = \\[.*\\]")
1171 (string-append "lib_dirs = ['"
1172 (assoc-ref inputs "czmq") "/lib"
1173 "']")))
1174 (substitute* "lib/czmq-ffi-gen/libzmq.rb"
1175 (("lib\\_dirs = \\[.*\\]")
1176 (string-append "lib_dirs = ['"
1177 (assoc-ref inputs "zeromq") "/lib"
1178 "']"))))))))
1179 (inputs
1180 `(("zeromq" ,zeromq)
1181 ("czmq" ,czmq)))
1182 (propagated-inputs `(("ruby-ffi" ,ruby-ffi)))
1183 (synopsis "Low-level Ruby bindings for CZMQ (generated using zproject)")
1184 (description
1185 "These Ruby bindings are not intended to be directly used, but rather
1186used by higher level bindings like those provided by CZTop.")
1187 (home-page
1188 "https://github.com/paddor/czmq-ffi-gen")
1189 (license license:isc)))
1190
d0afff26
CB
1191(define-public ruby-cztop
1192 (package
1193 (name "ruby-cztop")
1194 (version "0.12.2")
1195 (source
1196 (origin
1197 (method url-fetch)
1198 (uri (rubygems-uri "cztop" version))
1199 (sha256
1200 (base32
1201 "0yqbpaiw5d7f271d73lyrsh8xpx6n4zi6xqwfgi00dacxrq3s3fa"))))
1202 (build-system ruby-build-system)
1203 (arguments
1204 '(#:test-target "spec"
1205 #:phases
1206 (modify-phases %standard-phases
1207 (add-after 'unpack 'patch-lib_paths
1208 (lambda* (#:key inputs #:allow-other-keys)
1209 (substitute* "lib/cztop/poller/zmq.rb"
1210 (("lib\\_paths = \\[.*\\]")
1211 (string-append "lib_paths = ['"
1212 (assoc-ref inputs "zeromq") "/lib"
1213 "']"))))))))
1214 (native-inputs
1215 `(("bundler" ,bundler)
1216 ("ruby-rspec" ,ruby-rspec)))
1217 (inputs
1218 `(("zeromq" ,zeromq)))
1219 (propagated-inputs
1220 `(("ruby-czmq-ffi-gen" ,ruby-czmq-ffi-gen)))
1221 (synopsis "CZMQ Ruby bindings")
1222 (description
1223 "CZMQ Ruby bindings, based on the generated low-level FFI bindings of
1224CZMQ. The focus of of CZTop is on being easy to use and providing first class
1225support for security mechanisms.")
1226 (home-page "https://github.com/paddor/cztop")
1227 (license license:isc)))
1228
b004fb6a
RW
1229(define-public ruby-saikuro-treemap
1230 (package
1231 (name "ruby-saikuro-treemap")
1232 (version "0.2.0")
1233 (source (origin
1234 (method url-fetch)
1235 (uri (rubygems-uri "saikuro_treemap" version))
1236 (sha256
1237 (base32
1238 "0w70nmh43mwfbpq20iindl61siqqr8acmf7p3m7n5ipd61c24950"))))
1239 (build-system ruby-build-system)
1240 ;; Some of the tests fail because the generated JSON has keys in a
1241 ;; different order. This is a problem with the test suite rather than any
1242 ;; of the involved libraries.
1243 (arguments `(#:tests? #f))
1244 (propagated-inputs
1245 `(("ruby-json-pure" ,ruby-json-pure)
1246 ("ruby-atoulme-saikuro" ,ruby-atoulme-saikuro)))
1247 (synopsis "Generate complexity treemap based on saikuro analysis")
1248 (description
1249 "This gem generates a treemap showing the complexity of Ruby code on
1250which it is run. It uses Saikuro under the covers to analyze Ruby code
1251complexity.")
7bf837fd 1252 (home-page "https://github.com/ThoughtWorksStudios/saikuro_treemap")
b004fb6a
RW
1253 (license license:expat)))
1254
92b37500
CB
1255(define-public ruby-oauth2
1256 (package
1257 (name "ruby-oauth2")
5dd10be5 1258 (version "1.4.2")
92b37500
CB
1259 (source
1260 (origin
1261 (method url-fetch)
1262 (uri (rubygems-uri "oauth2" version))
1263 (sha256
5dd10be5 1264 (base32 "15i9z4j5pcjkr30lkcd79xzbr4kpmy0bqgwa436fqyqk646fv036"))))
92b37500
CB
1265 (build-system ruby-build-system)
1266 (arguments
5dd10be5 1267 '(#:tests? #f)) ; no included tests
92b37500
CB
1268 (propagated-inputs
1269 `(("ruby-faraday" ,ruby-faraday)
1270 ("ruby-jwt" ,ruby-jwt)
1271 ("ruby-multi-json" ,ruby-multi-json)
1272 ("ruby-multi-xml" ,ruby-multi-xml)
1273 ("ruby-rack" ,ruby-rack)))
1274 (synopsis "Ruby wrapper for the OAuth 2.0")
1275 (description
1276 "This package provides a Ruby wrapper for the OAuth 2.0 protocol built
1277with a similar style to the original OAuth spec.")
1278 (home-page "https://github.com/oauth-xx/oauth2")
1279 (license license:expat)))
1280
29dc4823
CB
1281(define-public ruby-omniauth
1282 (package
1283 (name "ruby-omniauth")
1284 (version "1.9.0")
1285 (source
1286 (origin
1287 (method url-fetch)
1288 (uri (rubygems-uri "omniauth" version))
1289 (sha256
1290 (base32
1291 "1p16h1rp8by05k8gfw17xjhgwp60dk8qmj1xalv1n23kmxfsxb1x"))))
1292 (build-system ruby-build-system)
1293 (arguments
1294 '(#:tests? #f)) ; No included tests
1295 (propagated-inputs
1296 `(("ruby-hashie" ,ruby-hashie)
1297 ("ruby-rack" ,ruby-rack)))
1298 (synopsis "Generalized Rack framework for multiple-provider authentication")
1299 (description
1300 "This package provides a generalized Rack framework for multiple-provider
1301authentication.")
1302 (home-page "https://github.com/omniauth/omniauth")
1303 (license license:expat)))
1304
d6084cdb
CB
1305(define-public ruby-omniauth-oauth2
1306 (package
1307 (name "ruby-omniauth-oauth2")
1308 (version "1.6.0")
1309 (source
1310 (origin
1311 (method url-fetch)
1312 (uri (rubygems-uri "omniauth-oauth2" version))
1313 (sha256
1314 (base32
1315 "11mi36l9d97r77q99jnafdc1yaa0a9wahhpp7dj7ank8q52g7g79"))))
1316 (build-system ruby-build-system)
1317 (arguments
1318 '(#:phases
1319 (modify-phases %standard-phases
1320 (add-after 'unpack 'remove-unnecessary-dependencies
1321 (lambda _
1322 ;; The coveralls gem submits coverage information to an online
1323 ;; service, and is unnecessary when running the tests
1324 (substitute* "Gemfile"
1325 ((".*coveralls\"") ""))
1326 (substitute* "spec/helper.rb"
1327 (("require \"coveralls\"") "")
1328 (("Coveralls::SimpleCov::Formatter") ""))
1329 #t)))))
1330 (propagated-inputs
1331 `(("ruby-oauth2" ,ruby-oauth2)
1332 ("ruby-omniauth" ,ruby-omniauth)))
1333 (native-inputs
1334 `(("bundler" ,bundler)
1335 ("ruby-rspec" ,ruby-rspec)
1336 ("ruby-simplecov" ,ruby-simplecov)
1337 ("ruby-rack-test" ,ruby-rack-test)
1338 ("ruby-webmock" ,ruby-webmock-2)))
1339 (synopsis "Abstract OAuth2 strategy for OmniAuth")
1340 (description
1341 "This library provides a generic OAuth2 strategy for OmniAuth. It
1342doesn't provide a way to gather user information, so should be used as a
1343building block for authentication strategies.")
1344 (home-page "https://github.com/omniauth/omniauth-oauth2")
1345 (license license:expat)))
1346
433e3154
CB
1347(define-public ruby-open4
1348 (package
1349 (name "ruby-open4")
1350 (version "1.3.4")
1351 (source
1352 (origin
1353 (method url-fetch)
1354 (uri (rubygems-uri "open4" version))
1355 (sha256
1356 (base32
1357 "1cgls3f9dlrpil846q0w7h66vsc33jqn84nql4gcqkk221rh7px1"))))
1358 (build-system ruby-build-system)
1359 (arguments
1360 '(#:phases
1361 (modify-phases %standard-phases
1362 (add-after 'unpack 'patch
1363 (lambda _
1364 (substitute* "rakefile"
1365 ;; Update the Rakefile so it works
1366 (("-rubygems") "-rrubygems")
1367 (("Config") "RbConfig"))
1368 #t))
1369 (add-before 'check 'set-LIB
1370 (lambda _
1371 ;; This is used in the rakefile when running the tests
1372 (setenv "LIB" "open4")
1373 #t)))))
1374 (synopsis "Open child processes from Ruby and manage them easily")
1375 (description
1376 "@code{Open4} is a Ruby library to run child processes and manage their
1377input and output.")
1378 (home-page "https://github.com/ahoward/open4")
1379 (license license:ruby)))
1380
cef87ed6
CB
1381(define-public ruby-options
1382 (package
1383 (name "ruby-options")
1384 (version "2.3.2")
1385 (source
1386 (origin
1387 (method url-fetch)
1388 (uri (rubygems-uri "options" version))
1389 (sha256
1390 (base32
1391 "1s650nwnabx66w584m1cyw82icyym6hv5kzfsbp38cinkr5klh9j"))))
1392 (build-system ruby-build-system)
1393 (arguments
1394 '(#:tests? #f ;; TODO: NameError: uninitialized constant Config
1395 #:phases
1396 (modify-phases %standard-phases
1397 (add-before 'check 'set-LIB
1398 (lambda _
1399 ;; This is used in the Rakefile, and setting it avoids an issue
1400 ;; with running the tests.
fe27238c
CB
1401 (setenv "LIB" "options")
1402 #t)))))
cef87ed6
CB
1403 (synopsis "Ruby library to parse options from *args cleanly")
1404 (description
1405 "The @code{options} library helps with parsing keyword options in Ruby
1406functions.")
1407 (home-page "https://github.com/ahoward/options")
1408 (license license:ruby)))
1409
d15dbe83
CB
1410(define-public ruby-erubi
1411 (package
1412 (name "ruby-erubi")
1413 (version "1.8.0")
1414 (source
1415 (origin
1416 (method url-fetch)
1417 (uri (rubygems-uri "erubi" version))
1418 (sha256
1419 (base32
1420 "1kagnf6ziahj0d781s6ryy6fwqwa3ad4xbzzj84p9m4nv4c2jir1"))))
1421 (build-system ruby-build-system)
1422 (synopsis "ERB template engine for Ruby")
1423 (description
1424 "Erubi is a ERB template engine for Ruby. It is a simplified fork of
1425Erubis")
1426 (home-page "https://github.com/jeremyevans/erubi")
1427 (license license:expat)))
1428
d64ebebd
BW
1429(define-public ruby-erubis
1430 (package
1431 (name "ruby-erubis")
1432 (version "2.7.0")
1433 (source
1434 (origin
1435 (method url-fetch)
1436 (uri (rubygems-uri "erubis" version))
1437 (sha256
1438 (base32
1439 "1fj827xqjs91yqsydf0zmfyw9p4l2jz5yikg3mppz6d7fi8kyrb3"))))
1440 (build-system ruby-build-system)
1441 (arguments
1442 '(#:tests? #f)) ; tests do not run properly with Ruby 2.0
1443 (synopsis "Implementation of embedded Ruby (eRuby)")
1444 (description
1445 "Erubis is a fast implementation of embedded Ruby (eRuby) with several
1446features such as multi-language support, auto escaping, auto trimming spaces
1447around @code{<% %>}, a changeable embedded pattern, and Ruby on Rails
1448support.")
1449 (home-page "http://www.kuwata-lab.com/erubis/")
1450 (license license:expat)))
1451
3ca43524
CB
1452(define-public ruby-execjs
1453 (package
1454 (name "ruby-execjs")
1455 (version "2.7.0")
1456 (source
1457 (origin
1458 ;; fetch from github as the gem does not contain testing code
1459 (method git-fetch)
1460 (uri (git-reference
1461 (url "https://github.com/rails/execjs.git")
1462 (commit (string-append "v" version))))
1463 (file-name (git-file-name name version))
1464 (sha256
1465 (base32
1466 "0c0vd2mmqq3ar4plbwi2wsbr31vn4h45i19r5km66skydnnbp1y6"))))
1467 (build-system ruby-build-system)
1468 (native-inputs
1469 `(("bundler" ,bundler)
1470 ;; The test suite tests all the available backends. Currenly, this just
1471 ;; means the node backend.
1472 ;;
1473 ;; PASSED: test:node
1474 ;; SKIPPED: test:duktape, ;; test:javascriptcore, test:jscript,
1475 ;; test:miniracer, test:rubyracer, ;; test:rubyrhino, test:v8
1476 ("node" ,node)))
1477 (synopsis "Run JavaScript code from Ruby")
1478 (description
1479 "ExecJS lets you run JavaScript code from Ruby. It automatically picks a
1480runtime to evaluate your JavaScript program, then returns the result to you as
1481a Ruby object.")
1482 (home-page "https://github.com/rails/execjs")
1483 (license license:expat)))
1484
cc53e630
RW
1485(define-public ruby-orderedhash
1486 (package
1487 (name "ruby-orderedhash")
1488 (version "0.0.6")
1489 (source (origin
1490 (method url-fetch)
1491 (uri (rubygems-uri "orderedhash" version))
1492 (sha256
1493 (base32
1494 "0fryy7f9jbpx33jq5m402yqj01zcg563k9fsxlqbhmq638p4bzd7"))))
1495 (build-system ruby-build-system)
1496 (arguments
1497 '(#:tests? #f)) ; no test suite
1498 (synopsis "Ruby library providing an order-preserving hash")
1499 (description "Orderedhash is a Ruby library providing a hash
1500implementation that preserves the order of items and features some array-like
1501extensions.")
1502 (home-page "http://codeforpeople.com/lib/ruby/orderedhash/")
1503 (license license:public-domain)))
1504
28c5d42d
PP
1505(define-public ruby-libxml
1506 (package
1507 (name "ruby-libxml")
acbc5062 1508 (version "3.0.0")
28c5d42d
PP
1509 (source
1510 (origin
1511 (method url-fetch)
1512 (uri (rubygems-uri "libxml-ruby" version))
1513 (sha256
1514 (base32
acbc5062 1515 "0xy8wmjwjcnv36zi042678ncjzpxvy351ccbv7mzkns2n3kxfp54"))))
28c5d42d
PP
1516 (build-system ruby-build-system)
1517 (inputs
1518 `(("zlib" ,zlib)
1519 ("libxml2" ,libxml2)))
1520 (arguments
1521 '(#:tests? #f ; test suite hangs for unknown reason
1522 #:gem-flags
1523 (list "--"
1524 (string-append "--with-xml2-include="
1525 (assoc-ref %build-inputs "libxml2")
1526 "/include/libxml2" ))))
1527 (synopsis "Ruby bindings for GNOME Libxml2")
1528 (description "The Libxml-Ruby project provides Ruby language bindings for
1529the GNOME Libxml2 XML toolkit.")
2f3800e5 1530 (home-page "https://xml4r.github.com/libxml-ruby")
28c5d42d
PP
1531 (license license:expat)))
1532
b3222518
CB
1533(define-public ruby-lino
1534 (package
1535 (name "ruby-lino")
1536 (version "1.1.0")
1537 (source
1538 (origin
1539 (method url-fetch)
1540 (uri (rubygems-uri "lino" version))
1541 (sha256
1542 (base32
1543 "11d29g0fk372b9fcpyr0k6hxm2b4j4igpysmi542hgbbgqgp9cd3"))))
1544 (build-system ruby-build-system)
1545 (arguments
1546 '(#:tests? #f)) ; No included tests
1547 (propagated-inputs
1548 `(("ruby-hamster" ,ruby-hamster)
1549 ("ruby-open4" ,ruby-open4)))
1550 (synopsis "Build and execute commands in Ruby")
1551 (description
1552 "@code{Lino} provides an interface to run external commands. It provides
1553an interface to add options as well as managing the standard input, output and
1554error streams.")
1555 (home-page "https://github.com/tobyclemson/lino")
1556 (license license:expat)))
1557
8b9bde07
RW
1558(define-public ruby-xml-simple
1559 (package
1560 (name "ruby-xml-simple")
1561 (version "1.1.5")
1562 (source (origin
1563 (method url-fetch)
1564 (uri (rubygems-uri "xml-simple" version))
1565 (sha256
1566 (base32
1567 "0xlqplda3fix5pcykzsyzwgnbamb3qrqkgbrhhfz2a2fxhrkvhw8"))))
1568 (build-system ruby-build-system)
1569 (arguments
1570 '(#:tests? #f)) ; no test suite
1571 (synopsis "Simple Ruby library for XML processing")
1572 (description "This library provides a simple API for XML processing in
1573Ruby.")
1574 (home-page "https://github.com/maik/xml-simple")
1575 (license license:ruby)))
1576
2cb3ab48
RW
1577(define-public ruby-thor
1578 (package
1579 (name "ruby-thor")
2e8cd862 1580 (version "0.19.4")
2cb3ab48
RW
1581 (source (origin
1582 (method url-fetch)
1583 (uri (rubygems-uri "thor" version))
1584 (sha256
1585 (base32
2e8cd862 1586 "01n5dv9kql60m6a00zc0r66jvaxx98qhdny3klyj0p3w34pad2ns"))))
2cb3ab48
RW
1587 (build-system ruby-build-system)
1588 (arguments
1589 '(#:tests? #f)) ; no test suite
1590 (native-inputs
1591 `(("bundler" ,bundler)))
1592 (synopsis "Ruby toolkit for building command-line interfaces")
1593 (description "Thor is a toolkit for building powerful command-line
1594interfaces.")
1595 (home-page "http://whatisthor.com/")
1596 (license license:expat)))
1597
ec79018e
RW
1598(define-public ruby-lumberjack
1599 (package
1600 (name "ruby-lumberjack")
41700efa 1601 (version "1.0.13")
ec79018e
RW
1602 (source (origin
1603 (method url-fetch)
1604 (uri (rubygems-uri "lumberjack" version))
1605 (sha256
1606 (base32
41700efa 1607 "06im7gcg42x77yhz2w5da2ly9xz0n0c36y5ks7xs53v0l9g0vf5n"))))
ec79018e
RW
1608 (build-system ruby-build-system)
1609 (native-inputs
8be62d3f
BW
1610 `(("ruby-rspec" ,ruby-rspec)
1611 ("ruby-timecop" ,ruby-timecop)))
ec79018e
RW
1612 (synopsis "Logging utility library for Ruby")
1613 (description "Lumberjack is a simple logging utility that can be a drop in
1614replacement for Logger or ActiveSupport::BufferedLogger. It provides support
1615for automatically rolling log files even with multiple processes writing the
1616same log file.")
7bf837fd 1617 (home-page "https://github.com/bdurand/lumberjack")
ec79018e
RW
1618 (license license:expat)))
1619
2a9ce5cb
CB
1620(define-public ruby-rbnacl
1621 (package
1622 (name "ruby-rbnacl")
1623 (version "6.0.1")
1624 (source
1625 (origin
1626 (method url-fetch)
1627 (uri (rubygems-uri "rbnacl" version))
1628 (sha256
1629 (base32
1630 "0ajxy5kj2jw09wdsla3jmha8w07vj5l14288xr9djpl327g3lzhn"))))
1631 (build-system ruby-build-system)
1632 (arguments
1633 `(#:phases
1634 (modify-phases %standard-phases
1635 (add-after 'unpack 'remove-unnecessary-dependencies
1636 (lambda _
1637 ;; Coveralls relates to a network service, and Rubocop to code
1638 ;; linting and both are unnecessary to run the tests
1639 (substitute* "Gemfile"
1640 ((".*rubocop.*") "\n")
1641 ((".*guard-rspec.*") "\n")
1642 ((".*coveralls.*") "\n"))
1643 (substitute* "spec/spec_helper.rb"
1644 (("require \"coveralls\"") "")
1645 (("Coveralls.wear!") ""))
1646 #t))
1647 (add-after 'unpack 'use-libsodium-from-store
1648 (lambda* (#:key inputs #:allow-other-keys)
1649 (substitute* '("lib/rbnacl/init.rb"
1650 "lib/rbnacl/sodium.rb")
1651 (("ffi_lib \\[.+\\]")
1652 (string-append "ffi_lib [\""
1653 (assoc-ref inputs "libsodium") "/lib/libsodium.so"
1654 "\"]")))
1655 #t))
1656 ;; Run Rspec directly to avoid the Rubocop dependency in the Rakefile
1657 (replace 'check
1658 (lambda* (#:key tests? #:allow-other-keys)
1659 (when tests?
1660 (invoke "rspec"))
1661 #t)))))
1662 (propagated-inputs
1663 `(("ruby-ffi" ,ruby-ffi)))
1664 (inputs
1665 `(("libsodium" ,libsodium)))
1666 (native-inputs
1667 `(("bundler" ,bundler)
1668 ("ruby-rspec" ,ruby-rspec)))
1669 (synopsis "Ruby FFI binding to libsodium")
1670 (description
1671 "This package provides Ruby FFI bindings to the Networking and
1672Cryptography (NaCl) library, also known as libsodium. This provides a
1673high-level toolkit for building cryptographic systems and protocols.")
1674 (home-page "https://github.com/crypto-rb/rbnacl")
1675 (license license:expat)))
1676
70b4cf38
RW
1677(define-public ruby-nenv
1678 (package
1679 (name "ruby-nenv")
12313cd0 1680 (version "0.3.0")
70b4cf38
RW
1681 (source (origin
1682 (method url-fetch)
1683 (uri (rubygems-uri "nenv" version))
1684 (sha256
1685 (base32
12313cd0 1686 "0r97jzknll9bhd8yyg2bngnnkj8rjhal667n7d32h8h7ny7nvpnr"))))
70b4cf38
RW
1687 (build-system ruby-build-system)
1688 (arguments
1689 `(#:tests? #f)) ; no tests included
1690 (native-inputs
1691 `(("ruby-rspec" ,ruby-rspec)
1692 ("bundler" ,bundler)))
1693 (synopsis "Ruby interface for modifying the environment")
1694 (description "Nenv provides a convenient wrapper for Ruby's ENV to modify
1695and inspect the environment.")
1696 (home-page "https://github.com/e2/nenv")
1697 (license license:expat)))
1698
8d9e9f28
RW
1699(define-public ruby-permutation
1700 (package
1701 (name "ruby-permutation")
1702 (version "0.1.8")
1703 (source (origin
1704 (method url-fetch)
1705 (uri (rubygems-uri "permutation" version))
1706 (sha256
1707 (base32
1708 "13crwk2vfbzv99czva7881027dbcnidihmvx2jc58z2vm3bp9sl8"))))
1709 (build-system ruby-build-system)
1710 (arguments
1711 `(#:phases
1712 (modify-phases %standard-phases
1713 (add-after 'unpack 'fix-rakefile
1714 (lambda _
1715 (substitute* "Rakefile"
1716 (("require 'rake/gempackagetask'")
1717 "require 'rubygems/package_task'")
1718 (("include Config") ""))
1719 #t))
1720 (replace 'check
1721 (lambda _
9923d5a4 1722 (invoke "ruby" "-Ilib" "test/test.rb"))))))
8d9e9f28
RW
1723 (synopsis "Library to perform operations with sequence permutations")
1724 (description "This package provides a Ruby library to perform different
1725operations with permutations of sequences, such as strings and arrays.")
2f3800e5 1726 (home-page "https://flori.github.io/permutation")
8d9e9f28
RW
1727 (license license:gpl2))) ; GPL 2 only
1728
c5d14d42
RW
1729(define-public ruby-shellany
1730 (package
1731 (name "ruby-shellany")
1732 (version "0.0.1")
1733 (source (origin
1734 (method url-fetch)
1735 (uri (rubygems-uri "shellany" version))
1736 (sha256
1737 (base32
1738 "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf"))))
1739 (build-system ruby-build-system)
1740 (arguments
1741 `(#:test-target "default"
1742 #:phases
1743 (modify-phases %standard-phases
1744 (add-after 'unpack 'fix-version-test
1745 (lambda _
1746 (substitute* "spec/shellany_spec.rb"
1747 (("^RSpec") "require \"shellany\"\nRSpec"))
1748 #t)))))
1749 (native-inputs
1750 `(("ruby-rspec" ,ruby-rspec)
1751 ("ruby-nenv" ,ruby-nenv)
1752 ("bundler" ,bundler)))
1753 (synopsis "Capture command output")
1754 (description "Shellany is a Ruby library providing functions to capture
1755the output produced by running shell commands.")
1756 (home-page "https://rubygems.org/gems/shellany")
1757 (license license:expat)))
1758
d152162f
RW
1759(define-public ruby-notiffany
1760 (package
1761 (name "ruby-notiffany")
8c1e4a4f 1762 (version "0.1.3")
d152162f
RW
1763 (source (origin
1764 (method url-fetch)
1765 (uri (rubygems-uri "notiffany" version))
1766 (sha256
1767 (base32
8c1e4a4f 1768 "0f47h3bmg1apr4x51szqfv3rh2vq58z3grh4w02cp3bzbdh6jxnk"))))
d152162f
RW
1769 (build-system ruby-build-system)
1770 ;; Tests are not included in the gem.
1771 (arguments `(#:tests? #f))
1772 (propagated-inputs
1773 `(("ruby-shellany" ,ruby-shellany)
1774 ("ruby-nenv" ,ruby-nenv)))
1775 (native-inputs
1776 `(("bundler" ,bundler)))
1777 (synopsis "Wrapper libray for notification libraries")
1778 (description "Notiffany is a Ruby wrapper libray for notification
1779libraries such as Libnotify.")
1780 (home-page "https://github.com/guard/notiffany")
1781 (license license:expat)))
1782
8528365b
RW
1783(define-public ruby-formatador
1784 (package
1785 (name "ruby-formatador")
1786 (version "0.2.5")
1787 (source (origin
1788 (method url-fetch)
1789 (uri (rubygems-uri "formatador" version))
1790 (sha256
1791 (base32
1792 "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0"))))
1793 (build-system ruby-build-system)
1794 ;; Circular dependency: Tests require ruby-shindo, which requires
1795 ;; ruby-formatador at runtime.
1796 (arguments `(#:tests? #f))
1797 (synopsis "Ruby library to format text on stdout")
1798 (description "Formatador is a Ruby library to format text printed to the
1799standard output stream.")
7bf837fd 1800 (home-page "https://github.com/geemus/formatador")
8528365b
RW
1801 (license license:expat)))
1802
5437c741
CB
1803(define-public ruby-fuubar
1804 (package
1805 (name "ruby-fuubar")
1806 (version "2.3.2")
1807 (source
1808 (origin
1809 ;; Fetch from the git repository, as the gem package doesn't include
1810 ;; the tests.
1811 (method git-fetch)
1812 (uri (git-reference
1813 (url "https://github.com/thekompanee/fuubar.git")
1814 (commit (string-append "releases/v" version))))
1815 (file-name (git-file-name name version))
1816 (sha256
1817 (base32
1818 "0jm1x2xp13csbnadixaikj7mlkp5yk4byx51npm56zi13izp7259"))))
1819 (build-system ruby-build-system)
1820 (arguments
1821 '(;; TODO: Some tests fail, unsure why.
1822 ;; 21 examples, 7 failures
1823 #:tests? #f
1824 #:phases
1825 (modify-phases %standard-phases
1826 (add-before 'build 'delete-certificate
1827 (lambda _
1828 ;; Remove 's.cert_chain' as we do not build with a private key
1829 (substitute* "fuubar.gemspec"
1830 ((".*cert_chain.*") "")
1831 ((".*signing_key.*") ""))
1832 #t))
1833 (replace 'check
1834 (lambda* (#:key tests? #:allow-other-keys)
1835 (when tests?
1836 (invoke "rspec"))
1837 #t)))))
1838 (native-inputs
1839 `(("bundler" ,bundler)))
1840 (propagated-inputs
1841 `(("ruby-rspec-core" ,ruby-rspec-core)
1842 ("ruby-progressbar" ,ruby-progressbar)))
1843 (synopsis "Fuubar is an RSpec formatter that uses a progress bar")
1844 (description
1845 "Fuubar is an RSpec formatter that uses a progress bar instead of a
1846string of letters and dots as feedback. It also stops on the first test
1847failure.")
1848 (home-page "https://github.com/thekompanee/fuubar")
1849 (license license:expat)))
1850
8ea991e3
CB
1851(define-public ruby-haml
1852 (package
1853 (name "ruby-haml")
1854 (version "5.0.4")
1855 (source
1856 (origin
1857 (method url-fetch)
1858 (uri (rubygems-uri "haml" version))
1859 (sha256
1860 (base32
1861 "1q0a9fvqh8kn6wm97fcks6qzbjd400bv8bx748w8v87m7p4klhac"))))
1862 (build-system ruby-build-system)
1863 (arguments
1864 '(#:tests? #f)) ; No included tests
1865 (propagated-inputs
1866 `(("ruby-tilt" ,ruby-tilt)
1867 ("ruby-temple" ,ruby-temple)))
1868 (synopsis "Haml is a Ruby library to generate HTML documents")
1869 (description
1870 "@acronym{Haml, HTML Abstraction Markup Language} is a layer on top of
1871HTML or XML that is designed to express the structure of documents using
1872indentation rather than closing tags. It was originally envisioned as a
1873plugin for Ruby on Rails, but it can function as a stand-alone templating
1874engine.")
1875 (home-page "http://haml.info/")
1876 (license license:expat)))
1877
353b7eb8
CB
1878(define-public ruby-hamster
1879 (package
1880 (name "ruby-hamster")
1881 (version "3.0.0")
1882 (source
1883 (origin
1884 (method url-fetch)
1885 (uri (rubygems-uri "hamster" version))
1886 (sha256
1887 (base32
1888 "1n1lsh96vnyc1pnzyd30f9prcsclmvmkdb3nm5aahnyizyiy6lar"))))
1889 (build-system ruby-build-system)
1890 (arguments
1891 '(#:phases
1892 (modify-phases %standard-phases
1893 (add-after 'unpack 'remove-unnecessary-dependencies
1894 (lambda _
1895 ;; pry is a debugging tool, and is unnecessary when running the
1896 ;; tests
1897 (substitute* "spec/lib/hamster/vector/insert_spec.rb"
1898 (("require 'pry'") ""))
1899 (substitute* "spec/spec_helper.rb"
1900 (("require \"pry\"") "")
1901 ;; CodeClimate is an online service, and is unnecessary for
1902 ;; running the tests
1903 (("require \"codeclimate-test-reporter\"") "")
1904 (("CodeClimate.*\n") ""))
1905 #t))
1906 ;; No Rakefile is included, so run rspec directly.
1907 (replace 'check
1908 (lambda* (#:key tests? #:allow-other-keys)
1909 (when tests?
1910 (invoke "rspec"))
1911 #t)))))
1912 (propagated-inputs
1913 `(("ruby-concurrent" ,ruby-concurrent)))
1914 (native-inputs
1915 `(("ruby-rspec" ,ruby-rspec)))
1916 (synopsis "Efficient, immutable, thread-safe collection classes for Ruby")
1917 (description
1918 "Hamster provides 6 persistent data structures: @code{Hash}, @code{Vector},
1919@code{Set}, @code{SortedSet}, @code{List}, and @code{Deque} (which works as an
1920immutable queue or stack).")
1921 (home-page "https://github.com/hamstergem/hamster")
1922 (license license:expat)))
1923
21781436
CB
1924(define-public ruby-hashdiff
1925 (package
1926 (name "ruby-hashdiff")
1927 (version "0.3.8")
1928 (source
1929 (origin
1930 (method url-fetch)
1931 (uri (rubygems-uri "hashdiff" version))
1932 (sha256
1933 (base32
1934 "19ykg5pax8798nh1yv71adkx0zzs7gn2rxjj86v7nsw0jba5lask"))))
1935 (build-system ruby-build-system)
1936 (arguments
1937 '(#:phases
1938 (modify-phases %standard-phases
1939 ;; Run tests directly via rspec to avoid Rake issue:
1940 ;; NoMethodError: undefined method `last_comment'
1941 (replace 'check
1942 (lambda* (#:key tests? #:allow-other-keys)
1943 (when tests?
1944 (invoke "rspec"))
1945 #t)))))
1946 (native-inputs
1947 `(("bundler" ,bundler)
1948 ("ruby-rspec" ,ruby-rspec-2)))
1949 (synopsis "HashDiff computes the smallest difference between two hashes")
1950 (description
1951 "HashDiff is a Ruby library to compute the smallest difference between
1952two hashes.")
1953 (home-page "https://github.com/liufengyun/hashdiff")
1954 (license license:expat)))
1955
3cc8e029
MB
1956(define-public ruby-hydra
1957 ;; No releases yet.
1958 (let ((commit "5abfa378743756ae4d9306cc134bcc482f5c9525")
1959 (revision "0"))
1960 (package
1961 (name "ruby-hydra")
1962 (version (git-version "0.0" revision commit))
1963 (home-page "https://github.com/hyphenation/hydra")
1964 (source (origin
1965 (method git-fetch)
1966 (uri (git-reference (url home-page) (commit commit)))
1967 (file-name (git-file-name name version))
1968 (sha256
1969 (base32
1970 "1cik398l2765y3d9sdhjzki3303hkry58ac6jlkiy7iy62nm529f"))))
1971 (build-system ruby-build-system)
1972 (arguments
1973 '(#:phases (modify-phases %standard-phases
1974 (add-after 'unpack 'make-files-writable
1975 (lambda _
1976 (for-each make-file-writable (find-files "."))
1977 #t))
1978 (replace 'check
1979 (lambda _
1980 (invoke "rspec"))))))
1981 (native-inputs
1982 `(("ruby-rspec" ,ruby-rspec)))
1983 (propagated-inputs
1984 `(("ruby-byebug" ,ruby-byebug)))
1985 (synopsis "Ruby hyphenation patterns")
1986 (description
1987 "ruby-hydra is a Ruby library for working with hyphenation patterns.")
1988 (license license:expat))))
1989
7ac4610f
RW
1990(define-public ruby-shindo
1991 (package
1992 (name "ruby-shindo")
1993 (version "0.3.8")
1994 (source (origin
1995 (method url-fetch)
1996 (uri (rubygems-uri "shindo" version))
1997 (sha256
1998 (base32
1999 "0s8v1jbz8i0jh92f2fgxb3p51l1azrpkc8nv4mhrqy4vndpvd7wq"))))
2000 (build-system ruby-build-system)
2001 (arguments
2002 `(#:test-target "shindo_tests"
2003 #:phases
2004 (modify-phases %standard-phases
2005 (add-after 'unpack 'fix-tests
0b060e34
CB
2006 (lambda _
2007 (substitute* "tests/tests_helper.rb"
2008 (("-rubygems") ""))
2009 (substitute* "Rakefile"
2010 (("system \"shindo") "system \"./bin/shindo")
2011 ;; This test doesn't work, so we disable it.
2012 (("fail \"The build_error test should fail") "#")
2013 ((" -rubygems") ""))
2014 #t)))))
7ac4610f
RW
2015 (propagated-inputs
2016 `(("ruby-formatador" ,ruby-formatador)))
2017 (synopsis "Simple depth first Ruby testing")
2018 (description "Shindo is a simple depth first testing library for Ruby.")
2019 (home-page "https://github.com/geemus/shindo")
2020 (license license:expat)))
2021
f13636f2
RW
2022(define-public ruby-rubygems-tasks
2023 (package
2024 (name "ruby-rubygems-tasks")
2025 (version "0.2.4")
2026 (source (origin
2027 (method url-fetch)
2028 (uri (rubygems-uri "rubygems-tasks" version))
2029 (sha256
2030 (base32
2031 "16cp45qlbcglnqdm4f1vj3diywdz4v024saqpgrz6palf0wmgz2j"))))
2032 (build-system ruby-build-system)
2033 ;; Tests need Internet access.
2034 (arguments `(#:tests? #f))
2035 (native-inputs
2036 `(("ruby-rspec" ,ruby-rspec)
2037 ("ruby-yard" ,ruby-yard)))
2038 (synopsis "Rake tasks for managing and releasing Ruby Gems")
2039 (description "Rubygems-task provides Rake tasks for managing and releasing
2040Ruby Gems.")
2041 (home-page "https://github.com/postmodern/rubygems-tasks")
2042 (license license:expat)))
2043
cb6bc5df
CB
2044(define-public ruby-rubyzip
2045 (package
2046 (name "ruby-rubyzip")
2047 (version "1.2.1")
2048 (source
2049 (origin
2050 (method url-fetch)
2051 (uri (rubygems-uri "rubyzip" version))
2052 (sha256
2053 (base32
2054 "06js4gznzgh8ac2ldvmjcmg9v1vg9llm357yckkpylaj6z456zqz"))))
2055 (build-system ruby-build-system)
2056 (arguments
2057 '(#:phases
2058 (modify-phases %standard-phases
2059 (add-before 'check 'patch-tests
2060 (lambda* (#:key inputs #:allow-other-keys)
2061 (substitute* "test/gentestfiles.rb"
2062 (("/usr/bin/zip")
2063 (string-append
2064 (assoc-ref inputs "zip") "/bin/zip")))
2065 (substitute* "test/input_stream_test.rb"
2066 (("/usr/bin/env ruby") (which "ruby")))
2067 #t)))))
2068 (native-inputs
2069 `(("bundler" ,bundler)
2070 ("ruby-simplecov" ,ruby-simplecov)
2071 ("zip" ,zip)
2072 ("unzip" ,unzip)))
2073 (synopsis "Ruby module is for reading and writing zip files")
2074 (description
2075 "The rubyzip module provides ways to read from and create zip files.")
2076 (home-page "http://github.com/rubyzip/rubyzip")
2077 (license license:bsd-2)))
2078
58b59742
RW
2079(define-public ruby-simplecov-html
2080 (package
2081 (name "ruby-simplecov-html")
53fd476f 2082 (version "0.10.2")
58b59742
RW
2083 (source (origin
2084 (method url-fetch)
2085 (uri (rubygems-uri "simplecov-html" version))
2086 (sha256
2087 (base32
53fd476f 2088 "1lihraa4rgxk8wbfl77fy9sf0ypk31iivly8vl3w04srd7i0clzn"))))
58b59742 2089 (build-system ruby-build-system)
8b749cf3 2090 (arguments `(#:tests? #f)) ; there are no tests
58b59742
RW
2091 (native-inputs
2092 `(("bundler" ,bundler)))
2093 (synopsis "Default HTML formatter for SimpleCov code coverage tool")
2094 (description "This package provides the default HTML formatter for
2095the SimpleCov code coverage tool for Ruby version 1.9 and above.")
2096 (home-page "https://github.com/colszowka/simplecov-html")
2097 (license license:expat)))
2098
a84fa2ad
RW
2099(define-public ruby-simplecov
2100 (package
2101 (name "ruby-simplecov")
d432682b 2102 (version "0.17.1")
a84fa2ad
RW
2103 (source (origin
2104 (method url-fetch)
2105 (uri (rubygems-uri "simplecov" version))
2106 (sha256
2107 (base32
d432682b 2108 "1135k46nik05sdab30yxb8264lqiz01c8v000g16cl9pjc4mxrdw"))))
a84fa2ad
RW
2109 (build-system ruby-build-system)
2110 ;; Simplecov depends on rubocop for code style checking at build time.
2111 ;; Rubocop needs simplecov at build time.
2112 (arguments `(#:tests? #f))
2113 (propagated-inputs
2114 `(("ruby-json" ,ruby-json)
2115 ("ruby-docile" ,ruby-docile)
2116 ("ruby-simplecov-html" ,ruby-simplecov-html)))
2117 (native-inputs
2118 `(("bundler" ,bundler)))
2119 (synopsis "Code coverage framework for Ruby")
2120 (description "SimpleCov is a code coverage framework for Ruby with a
2121powerful configuration library and automatic merging of coverage across test
2122suites.")
7bf837fd 2123 (home-page "https://github.com/colszowka/simplecov")
a84fa2ad
RW
2124 (license license:expat)))
2125
98b87b82
DT
2126(define-public ruby-useragent
2127 (package
2128 (name "ruby-useragent")
959d908d 2129 (version "0.16.10")
98b87b82
DT
2130 (source (origin
2131 (method url-fetch)
e83c6d00 2132 (uri (rubygems-uri "useragent" version))
98b87b82
DT
2133 (sha256
2134 (base32
959d908d 2135 "1fv5kvq494swy0p17h9qya9r50w15xsi9zmvhzb8gh55kq6ki50p"))))
98b87b82
DT
2136 (build-system ruby-build-system)
2137 (arguments
e83c6d00 2138 '(#:tests? #f)) ; no test suite
98b87b82
DT
2139 (synopsis "HTTP user agent parser for Ruby")
2140 (description "UserAgent is a Ruby library that parses and compares HTTP
2141User Agents.")
2142 (home-page "https://github.com/gshutler/useragent")
2143 (license license:expat)))
96086cc5 2144
f7e9b2f3
CB
2145(define-public ruby-backports
2146 (package
2147 (name "ruby-backports")
2148 (version "3.11.4")
2149 (source
2150 (origin
2151 (method url-fetch)
2152 (uri (rubygems-uri "backports" version))
2153 (sha256
2154 (base32
2155 "1hshjxww2h7s0dk57njrygq4zpp0nlqrjfya7zwm27iq3rhc3y8g"))))
2156 (build-system ruby-build-system)
2157 (arguments
2158 '(;; TODO: This should be default, but there is one test failure
2159 #:test-target "all_spec"))
2160 (native-inputs
2161 `(("ruby-mspec" ,ruby-mspec)
2162 ("ruby-activesupport" ,ruby-activesupport)))
2163 (synopsis "Backports of the features in newer Ruby versions")
2164 (description
2165 "Backports enables more compatibility across Ruby versions by providing
2166backports of some features.")
2167 (home-page "https://github.com/marcandre/backports")
2168 (license license:expat)))
2169
96086cc5
DT
2170(define-public ruby-bacon
2171 (package
2172 (name "ruby-bacon")
e83c6d00 2173 (version "1.2.0")
96086cc5
DT
2174 (source (origin
2175 (method url-fetch)
e83c6d00 2176 (uri (rubygems-uri "bacon" version))
96086cc5
DT
2177 (sha256
2178 (base32
e83c6d00 2179 "1f06gdj77bmwzc1k5iragl1595hbn67yc7sqvs56ca8plrr2vmai"))))
96086cc5 2180 (build-system ruby-build-system)
96086cc5
DT
2181 (synopsis "Small RSpec clone")
2182 (description "Bacon is a small RSpec clone providing all essential
2183features.")
2184 (home-page "https://github.com/chneukirchen/bacon")
2185 (license license:expat)))
de59d316 2186
a8d2bf3c
CB
2187(define-public ruby-bacon-bits
2188 (package
2189 (name "ruby-bacon-bits")
2190 (version "0.1.0")
2191 (source
2192 (origin
2193 (method url-fetch)
2194 (uri (rubygems-uri "bacon-bits" version))
2195 (sha256
2196 (base32
2197 "1ghpj8ja94lhi8rgi872hqk4fd2amz2k7g9znd64z5dj7v6l0dmx"))))
2198 (build-system ruby-build-system)
2199 (arguments
2200 ;; No tests
2201 '(#:tests? #f))
2202 (propagated-inputs `(("ruby-bacon" ,ruby-bacon)))
2203 (synopsis "Extensions to Bacon, for disabling tests, before and after
2204blocks and more")
2205 (description
2206 "This extends the bacon testing framework with useful extensions to
2207disable tests, have before and after blocks that run once and more.")
2208 (home-page "https://github.com/cldwalker/bacon-bits")
2209 (license license:expat)))
2210
65f65889
CB
2211(define-public ruby-bacon-colored-output
2212 (package
2213 (name "ruby-bacon-colored-output")
2214 (version "1.1.1")
2215 (source
2216 (origin
2217 (method url-fetch)
2218 (uri (rubygems-uri "bacon-colored_output" version))
2219 (sha256
2220 (base32
2221 "1znyh3vkfdlmf19p3k4zip88ibym41dn5g4p4n5hmks2iznb7qpx"))))
2222 (build-system ruby-build-system)
2223 (arguments
2224 '(;; No included tests
2225 #:tests? #f))
2226 (propagated-inputs
2227 `(("ruby-bacon" ,ruby-bacon)))
2228 (synopsis "Colored output for Bacon test framework")
2229 (description
2230 "This package adds color through ANSI escape codes to Bacon test
2231output.")
2232 (home-page "https://github.com/whitequark/bacon-colored_output")
2233 (license license:expat)))
2234
e259bdf0
DT
2235(define-public ruby-connection-pool
2236 (package
2237 (name "ruby-connection-pool")
58021db4 2238 (version "2.2.2")
e259bdf0
DT
2239 (source (origin
2240 (method url-fetch)
e83c6d00 2241 (uri (rubygems-uri "connection_pool" version))
e259bdf0
DT
2242 (sha256
2243 (base32
58021db4 2244 "0lflx29mlznf1hn0nihkgllzbj8xp5qasn8j7h838465pi399k68"))))
e259bdf0
DT
2245 (build-system ruby-build-system)
2246 (native-inputs
2247 `(("bundler" ,bundler)))
2248 (synopsis "Generic connection pool for Ruby")
2249 (description "Connection_pool provides a generic connection pooling
2250interface for Ruby programs.")
2251 (home-page "https://github.com/mperham/connection_pool")
2252 (license license:expat)))
4c0aeb44
DT
2253
2254(define-public ruby-net-http-persistent
2255 (package
2256 (name "ruby-net-http-persistent")
185ea446 2257 (version "3.0.0")
4c0aeb44
DT
2258 (source (origin
2259 (method url-fetch)
e83c6d00 2260 (uri (rubygems-uri "net-http-persistent" version))
4c0aeb44
DT
2261 (sha256
2262 (base32
185ea446 2263 "156rv95bgxfz6qw5y1r7c7bswr77918hygl8dyl14qzbqc5vyp18"))))
4c0aeb44 2264 (build-system ruby-build-system)
4c0aeb44
DT
2265 (native-inputs
2266 `(("ruby-connection-pool" ,ruby-connection-pool)
2267 ("ruby-hoe" ,ruby-hoe)))
2268 (synopsis "Persistent HTTP connection manager")
2269 (description "Net::HTTP::Persistent manages persistent HTTP connections
2270using Net::HTTP, supporting reconnection and retry according to RFC 2616.")
2271 (home-page "https://github.com/drbrain/net-http-persistent")
2272 (license license:expat)))
afbbdf77 2273
f88bacaf
RW
2274(define-public ruby-power-assert
2275 (package
2276 (name "ruby-power-assert")
3918146b 2277 (version "0.2.7")
f88bacaf
RW
2278 (source (origin
2279 (method url-fetch)
2280 (uri (rubygems-uri "power_assert" version))
2281 (sha256
2282 (base32
3918146b 2283 "0ka6w71lcan4wgf111xi3pcn9ma9lhakv31jg8w007nwzi0xfjbi"))))
f88bacaf
RW
2284 (build-system ruby-build-system)
2285 (native-inputs
2286 `(("bundler" ,bundler)))
2287 (synopsis "Assert library with descriptive assertion messages")
2288 (description "Power-assert is an assertion library providing descriptive
2289assertion messages for tests.")
2290 (home-page "https://github.com/k-tsj/power_assert")
2291 (license (list license:bsd-2 license:ruby))))
2292
e42e3bfa
CB
2293(define-public ruby-powerpack
2294 (package
2295 (name "ruby-powerpack")
2296 (version "0.1.2")
2297 (source
2298 (origin
2299 (method url-fetch)
2300 (uri (rubygems-uri "powerpack" version))
2301 (sha256
2302 (base32
2303 "1r51d67wd467rpdfl6x43y84vwm8f5ql9l9m85ak1s2sp3nc5hyv"))))
2304 (build-system ruby-build-system)
2305 (arguments
2306 '(#:test-target "spec"))
2307 (native-inputs
2308 `(("bundler" ,bundler)
2309 ("ruby-rspec" ,ruby-rspec)
2310 ("ruby-yard" ,ruby-yard)))
2311 (synopsis "Useful extensions to core Ruby classes")
2312 (description
2313 "This package provides a few useful extensions to core Ruby classes,
2314including @code{Array}, @code{Enumerable}, @code{Hash}, @code{Numeric}, and
2315@code{String}.")
2316 (home-page "https://github.com/bbatsov/powerpack")
2317 (license license:expat)))
2318
347eb21e
RW
2319(define-public ruby-locale
2320 (package
2321 (name "ruby-locale")
2322 (version "2.1.2")
2323 (source (origin
2324 (method url-fetch)
2325 (uri (rubygems-uri "locale" version))
2326 (sha256
2327 (base32
2328 "1sls9bq4krx0fmnzmlbn64dw23c4d6pz46ynjzrn9k8zyassdd0x"))))
2329 (build-system ruby-build-system)
2330 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
2331 ;; which needs ruby-gettext, which needs ruby-locale. To break the
2332 ;; dependency cycle we disable tests.
2333 (arguments `(#:tests? #f))
2334 (native-inputs
2335 `(("bundler" ,bundler)
2336 ("ruby-yard" ,ruby-yard)))
2337 (synopsis "Ruby library providing basic localization APIs")
2338 (description
2339 "Ruby-Locale is the pure ruby library which provides basic APIs for
2340localization.")
2341 (home-page "https://github.com/ruby-gettext/locale")
2342 (license (list license:lgpl3+ license:ruby))))
2343
09e2b0af
CB
2344(define-public ruby-temple
2345 (package
2346 (name "ruby-temple")
2347 (version "0.8.1")
2348 (source
2349 (origin
2350 (method url-fetch)
2351 (uri (rubygems-uri "temple" version))
2352 (sha256
2353 (base32
2354 "158d7ygbwcifqnvrph219p7m78yjdjazhykv5darbkms7bxm5y09"))))
2355 (build-system ruby-build-system)
2356 (native-inputs
2357 `(("ruby-tilt" ,ruby-tilt)
2358 ("ruby-bacon" ,ruby-bacon)
2359 ("ruby-erubis" ,ruby-erubis)))
2360 (synopsis "Template compilation framework in Ruby")
2361 (description
2362 "Temple is an abstraction and framework for compiling templates to pure
2363Ruby.")
2364 (home-page "https://github.com/judofyr/temple")
2365 (license license:expat)))
2366
e2333ea3
RW
2367(define-public ruby-text
2368 (package
2369 (name "ruby-text")
2370 (version "1.3.1")
2371 (source (origin
2372 (method url-fetch)
2373 (uri (rubygems-uri "text" version))
2374 (sha256
2375 (base32
2376 "1x6kkmsr49y3rnrin91rv8mpc3dhrf3ql08kbccw8yffq61brfrg"))))
2377 (build-system ruby-build-system)
2378 (synopsis "Collection of text algorithms for Ruby")
2379 (description
2380 "This package provides a collection of text algorithms: Levenshtein,
2381Soundex, Metaphone, Double Metaphone, Porter Stemming.")
7bf837fd 2382 (home-page "https://github.com/threedaymonk/text")
e2333ea3
RW
2383 (license license:expat)))
2384
c1f52261
RW
2385(define-public ruby-gettext
2386 (package
2387 (name "ruby-gettext")
2388 (version "3.1.7")
2389 (source (origin
2390 (method url-fetch)
2391 (uri (rubygems-uri "gettext" version))
2392 (sha256
2393 (base32
2394 "1hg9islkm324mb4sd4za1fgafj1hqnm3bdvzj3k4fqpnzqnbcfiq"))))
2395 (build-system ruby-build-system)
2396 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
2397 ;; which needs ruby-gettext. To break the dependency cycle we disable
2398 ;; tests.
2399 (arguments `(#:tests? #f))
2400 (propagated-inputs
2401 `(("ruby-locale" ,ruby-locale)
2402 ("ruby-text" ,ruby-text)))
2403 (native-inputs
2404 `(("bundler" ,bundler)
2405 ("ruby-yard" ,ruby-yard)))
2406 (synopsis "GNU gettext-like program for Ruby")
2407 (description
2408 "Gettext is a GNU gettext-like program for Ruby. The catalog
2409file (po-file) used is the same as that used by GNU gettext, allowing you to
2410use GNU gettext tools for maintenance.")
2f3800e5 2411 (home-page "https://ruby-gettext.github.com/")
c1f52261
RW
2412 (license (list license:lgpl3+ license:ruby))))
2413
cc5aeb8c
RW
2414(define-public ruby-packnga
2415 (package
2416 (name "ruby-packnga")
1d60c436 2417 (version "1.0.4")
cc5aeb8c
RW
2418 (source (origin
2419 (method url-fetch)
2420 (uri (rubygems-uri "packnga" version))
2421 (sha256
2422 (base32
1d60c436 2423 "1vv2j0i43s4xid2km5hgrrxqlqpwgq8nlm8kaxfg2531c1vwfsd4"))))
cc5aeb8c
RW
2424 (build-system ruby-build-system)
2425 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga.
2426 ;; To break the dependency cycle we disable tests.
2427 (arguments `(#:tests? #f))
2428 (propagated-inputs
2429 `(("ruby-gettext" ,ruby-gettext)
2430 ("ruby-yard" ,ruby-yard)))
2431 (native-inputs
2432 `(("bundler" ,bundler)))
2433 (synopsis "Utility library to package internationalized libraries")
2434 (description
2435 "Packnga is a library to translate to many languages using YARD.")
2436 (home-page "http://ranguba.org/packnga/")
2437 (license license:lgpl2.0+)))
2438
93dc8684
CB
2439(define-public ruby-test-construct
2440 (package
2441 (name "ruby-test-construct")
2442 (version "2.0.1")
2443 (source
2444 (origin
2445 (method url-fetch)
2446 (uri (rubygems-uri "test_construct" version))
2447 (sha256
2448 (base32
2449 "1a2ym3l068d0pxzzr95kvqx87zpdsarxslz9ygd4qfm9frrz0kgj"))))
2450 (build-system ruby-build-system)
2451 (native-inputs
2452 `(("bundler" ,bundler)
2453 ("ruby-mocha" ,ruby-mocha)
2454 ("ruby-rspec" ,ruby-rspec)))
2455 (synopsis "Creates temporary files and directories for testing")
2456 (description
2457 "TestConstruct is a @acronym{DSL, Domain Specific Language} for creating
2458temporary files and directories during tests.")
2459 (home-page "https://github.com/bhb/test_construct")
2460 (license license:expat)))
2461
3383f5bd
RW
2462(define-public ruby-test-unit
2463 (package
2464 (name "ruby-test-unit")
d74d96e4 2465 (version "3.2.5")
3383f5bd
RW
2466 (source (origin
2467 (method url-fetch)
2468 (uri (rubygems-uri "test-unit" version))
2469 (sha256
2470 (base32
d74d96e4 2471 "05bx36fw01iqz0xqhvjfrwjgnj1zx3b2vn6w1fzp19rchd7zqc52"))))
3383f5bd
RW
2472 (build-system ruby-build-system)
2473 (propagated-inputs
2474 `(("ruby-power-assert" ,ruby-power-assert)))
2475 (native-inputs
2476 `(("bundler" ,bundler)
2477 ("ruby-packnga" ,ruby-packnga)
2478 ("ruby-yard" ,ruby-yard)))
2479 (synopsis "Unit testing framework for Ruby")
2480 (description "@code{Test::Unit} is unit testing framework for Ruby, based
2481on xUnit principles. These were originally designed by Kent Beck, creator of
2482extreme programming software development methodology, for Smalltalk's SUnit.
2483It allows writing tests, checking results and automated testing in Ruby.")
2f3800e5 2484 (home-page "https://test-unit.github.io/")
3383f5bd
RW
2485 (license (list license:psfl license:ruby))))
2486
76b732fb
CB
2487(define-public ruby-markaby
2488 (package
2489 (name "ruby-markaby")
2490 (version "0.9.0")
2491 (source
2492 (origin
2493 (method url-fetch)
2494 (uri (rubygems-uri "markaby" version))
2495 (sha256
2496 (base32
2497 "1j4jc31ycydbkh5h3q6zwidzpavg3g5mbb5lqyaczd3jrq78rd7i"))))
2498 (build-system ruby-build-system)
2499 (arguments
2500 '(#:phases
2501 (modify-phases %standard-phases
2502 ;; Run rspec manually without using the Rakefile, as the versions of
2503 ;; Rake and RSpec 2 are incompatible:
2504 ;;
2505 ;; NoMethodError: undefined method `last_comment'
2506 (replace 'check
2507 (lambda* (#:key tests? #:allow-other-keys)
2508 (when tests?
2509 (invoke "rspec"))
2510 #t)))))
2511 (propagated-inputs
2512 `(("ruby-builder" ,ruby-builder)))
2513 (native-inputs
2514 `(("bundler" ,bundler)
2515 ("ruby-rspec" ,ruby-rspec-2)))
2516 (synopsis "Write HTML pages in pure Ruby")
2517 (description
2518 "Markaby allows writing HTML packages in pure Ruby. This is similar to
e54af322 2519the functionality provided by @acronym{ERB, Embedded Ruby}, but without the
76b732fb
CB
2520mixture of HTML and additional ERB syntax.")
2521 (home-page "http://markaby.github.io/")
2522 (license license:expat)))
2523
b9511aa9
CB
2524(define-public ruby-maruku
2525 (package
2526 (name "ruby-maruku")
2527 (version "0.7.3")
2528 (source
2529 (origin
2530 (method url-fetch)
2531 (uri (rubygems-uri "maruku" version))
2532 (sha256
2533 (base32
2534 "1r7bxpgnx2hp3g12bjrmdrpv663dfqxsdp0af69kjhxmaxpia56x"))))
2535 (build-system ruby-build-system)
2536 (arguments
2537 '(;; TODO: 3 tests seem to fail due to HTML encoding issues
2538 #:tests? #f
2539 #:phases
2540 (modify-phases %standard-phases
2541 (replace 'check
2542 (lambda* (#:key tests? #:allow-other-keys)
2543 (when tests?
2544 (invoke "rspec"))
2545 #t)))))
2546 (native-inputs
2547 `(("ruby-rspec" ,ruby-rspec)
2548 ("ruby-simplecov" ,ruby-simplecov)
2549 ("ruby-nokogiri-diff" ,ruby-nokogiri-diff)))
2550 (synopsis "Markdown interpreter in Ruby")
2551 (description
2552 "Maruku is a Markdown interpreter in Ruby. It can export Markdown to
2553HTML, and PDF through LaTeX.")
2554 (home-page "https://github.com/bhollis/maruku")
2555 (license license:expat)))
2556
25d6d49b
RW
2557(define-public ruby-metaclass
2558 (package
2559 (name "ruby-metaclass")
2560 (version "0.0.4")
2561 (source (origin
2562 (method url-fetch)
2563 (uri (rubygems-uri "metaclass" version))
2564 (sha256
2565 (base32
2566 "0hp99y2b1nh0nr8pc398n3f8lakgci6pkrg4bf2b2211j1f6hsc5"))))
2567 (build-system ruby-build-system)
2568 (arguments
2569 `(#:phases
2570 (modify-phases %standard-phases
2571 (add-after 'unpack 'add-test-unit-to-search-path
761e7042 2572 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 2573 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
761e7042
BW
2574 (substitute* "Rakefile"
2575 (("t\\.libs << \"test\"" line)
2576 (string-append line "; t.libs << \""
3cb3fa67 2577 test-unit "/lib/ruby/vendor_ruby"
761e7042
BW
2578 "/gems/test-unit-"
2579 ,(package-version ruby-test-unit)
2580 "/lib\""))))
2581 #t)))))
25d6d49b
RW
2582 (native-inputs
2583 `(("bundler" ,bundler)
2584 ("ruby-test-unit" ,ruby-test-unit)))
2585 (synopsis "Ruby library adding metaclass method to all objects")
2586 (description
2587 "Metaclass is a Ruby library adding a @code{metaclass} method to all Ruby
2588objects.")
7bf837fd 2589 (home-page "https://github.com/floehopper/metaclass")
25d6d49b
RW
2590 (license license:expat)))
2591
1d1d20b0
CB
2592(define-public ruby-mspec
2593 (package
2594 (name "ruby-mspec")
2595 (version "1.9.1")
2596 (source
2597 (origin
2598 (method url-fetch)
2599 (uri (rubygems-uri "mspec" version))
2600 (sha256
2601 (base32
2602 "0wmyh2n40m4srwdx9z6h6g6p46k02pzyhcsja3hqcw5h5b0hfmhd"))))
2603 (build-system ruby-build-system)
2604 (arguments
2605 '(;; TODO: 3 test failures
2606 ;; ./spec/mocks/mock_spec.rb:82
2607 ;; ./spec/utils/name_map_spec.rb:151
2608 ;; ./spec/utils/name_map_spec.rb:155
2609 #:tests? #f
2610 #:phases
2611 (modify-phases %standard-phases
2612 (add-after 'extract-gemspec 'change-dependency-constraints
2613 (lambda _
2614 (substitute* "mspec.gemspec"
2615 (("rake.*") "rake>)\n")
2616 (("rspec.*") "rspec>)\n"))
2617 #t))
2618 (replace 'check
2619 (lambda* (#:key tests? #:allow-other-keys)
2620 (when tests?
2621 (invoke "rspec" "spec"))
2622 #t)))))
2623 (native-inputs
2624 `(("bundler" ,bundler)
2625 ("ruby-rake" ,ruby-rake)
2626 ("ruby-rspec" ,ruby-rspec)))
2627 (synopsis "MSpec is a specialized framework for RubySpec")
2628 (description
2629 "MSpec is a specialized framework that is syntax-compatible with RSpec 2
2630for basic features. MSpec contains additional features that assist in writing
2631specs for Ruby implementations in ruby/spec.")
2632 (home-page "http://rubyspec.org")
2633 (license license:expat)))
2634
b8aecc31
CB
2635(define-public ruby-mysql2
2636 (package
2637 (name "ruby-mysql2")
2638 (version "0.5.2")
2639 (source
2640 (origin
2641 (method git-fetch)
2642 (uri (git-reference
2643 (url "https://github.com/brianmario/mysql2.git")
2644 (commit version)))
2645 (file-name (git-file-name name version))
2646 (sha256
2647 (base32
2648 "11lvfgc2rmvkm52jp0nbi6pvhk06klznghr7llldfw8basl9n5wv"))))
2649 (build-system ruby-build-system)
2650 (arguments
2651 '(;; TODO: Tests require a running MySQL/MariaDB service
2652 #:tests? #f
2653 #:phases
2654 (modify-phases %standard-phases
2655 (replace 'replace-git-ls-files
2656 (lambda _
2657 (substitute* "mysql2.gemspec"
2658 (("git ls-files .*`") "find . -type f |sort`"))
2659 #t))
2660 (add-before 'install 'set-MAKEFLAGS
2661 (lambda* (#:key outputs #:allow-other-keys)
2662 (setenv "MAKEFLAGS"
2663 (string-append
2664 "V=1 "
2665 "prefix=" (assoc-ref outputs "out")))
2666 #t))
2667 ;; Move the 'check phase to after 'install, as then you can test
2668 ;; using the installed mysql2 gem in the store.
2669 (delete 'check)
2670 (add-after 'install 'check
2671 (lambda* (#:key outputs tests? #:allow-other-keys)
2672 (setenv "GEM_PATH"
2673 (string-append
2674 (getenv "GEM_PATH")
2675 ":"
2676 (assoc-ref outputs "out") "/lib/ruby/vendor_ruby"))
2677 (when tests?
2678 (invoke "rspec"))
2679 #t)))))
2680 (inputs
2b8491fb
JL
2681 `(("mariadb" ,mariadb "lib")
2682 ("mariadb-dev" ,mariadb "dev")
b8aecc31
CB
2683 ("zlib" ,zlib)))
2684 (native-inputs
2685 `(("ruby-rspec" ,ruby-rspec)
2686 ("ruby-rake-compiler" ,ruby-rake-compiler)))
2687 (synopsis "MySQL library for Ruby, binding to libmysql")
2688 (description
2689 "This package provides a simple, fast MySQL library for Ruby, binding to
2690libmysql.")
2691 (home-page "https://github.com/brianmario/mysql2")
2692 (license license:expat)))
2693
21f7b7bd
RW
2694(define-public ruby-blankslate
2695 (package
2696 (name "ruby-blankslate")
2697 (version "3.1.3")
2698 (source (origin
2699 (method url-fetch)
2700 (uri (rubygems-uri "blankslate" version))
2701 (sha256
2702 (base32
2703 "0fwkb4d1j9gc7vdwn2nxvwgy2g5wlag4c4bp7bl85jvq0kgp6cyx"))))
2704 (build-system ruby-build-system)
2705 (arguments
2706 `(#:phases
2707 (modify-phases %standard-phases
2708 (replace 'check
9923d5a4 2709 (lambda _ (invoke "rspec" "spec/"))))))
21f7b7bd
RW
2710 (native-inputs
2711 `(("bundler" ,bundler)
2712 ("ruby-rspec" ,ruby-rspec)))
2713 (synopsis "Abstract base class with no predefined methods")
2714 (description
2715 "BlankSlate provides an abstract base class with no predefined
2716methods (except for @code{__send__} and @code{__id__}). BlankSlate is useful
2717as a base class when writing classes that depend upon
2718@code{method_missing} (e.g. dynamic proxies).")
7bf837fd 2719 (home-page "https://github.com/masover/blankslate")
21f7b7bd
RW
2720 (license license:expat)))
2721
afdb437c
CB
2722(define-public ruby-bond
2723 (package
2724 (name "ruby-bond")
2725 (version "0.5.1")
2726 (source
2727 (origin
2728 (method url-fetch)
2729 (uri (rubygems-uri "bond" version))
2730 (sha256
2731 (base32
2732 "1r19ifc4skyl2gxnifrxa5jvbbay9fb2in79ppgv02b6n4bhsw90"))))
2733 (build-system ruby-build-system)
2734 (native-inputs
2735 `(("ruby-bacon" ,ruby-bacon)
2736 ("ruby-bacon-bits" ,ruby-bacon-bits)
2737 ("ruby-mocha-on-bacon" ,ruby-mocha-on-bacon)))
2738 (synopsis "Bond can provide custom autocompletion for arguments, methods
2739and more")
2740 (description
2741 "Bond can autocomplete argument(s) to methods, uniquely completing per
2742module, per method and per argument. Bond provides a configuration system and
2743a DSL for creating custom completions and completion rules. Bond can also
2744load completions that ship with gems. Bond is able to offer more than irb's
2745completion since it uses the full line of input when completing as opposed to
2746irb's last-word approach.")
2747 (home-page "http://tagaholic.me/bond/")
2748 (license license:expat)))
2749
f3d7bb93
CB
2750(define-public ruby-idn-ruby
2751 (package
2752 (name "ruby-idn-ruby")
2753 (version "0.1.0")
2754 (source
2755 (origin
2756 (method url-fetch)
2757 (uri (rubygems-uri "idn-ruby" version))
2758 (sha256
2759 (base32
2760 "07vblcyk3g72sbq12xz7xj28snpxnh3sbcnxy8bglqbfqqhvmawr"))))
2761 (build-system ruby-build-system)
2762 (arguments
2763 '(#:phases
2764 (modify-phases %standard-phases
2765 (delete 'check)
2766 (add-after 'install 'check
2767 (lambda* (#:key tests? outputs #:allow-other-keys)
2768 (when tests?
2769 (let* ((gem-file (cadr (find-files "." "\\.gem")))
2770 (name-and-version (basename gem-file ".gem")))
2771 (apply invoke
2772 "ruby" "--verbose"
2773 (string-append "-I"
2774 (assoc-ref outputs "out")
2775 "/lib/ruby/vendor_ruby/gems/"
2776 name-and-version
2777 "/lib")
2778 (find-files "./test" ".*\\.rb"))))
2779 #t)))))
2780 (inputs
2781 `(("libidn" ,libidn)))
2782 (synopsis "Ruby Bindings for the GNU LibIDN library")
2783 (description
2784 "Ruby Bindings for the GNU LibIDN library, an implementation of the
2785Stringprep, Punycode and IDNA specifications. These are used to encode and
2786decode internationalized domain + names according to the IDNA2003
2787specifications.
2788
2789Included are the most important parts of the Stringprep, Punycode and IDNA
2790APIs like performing Stringprep processings, encoding to and decoding from
2791Punycode strings and converting entire domain names to and from the ACE
2792encoded form.")
2793 (home-page "https://github.com/deepfryed/idn-ruby")
2794 (license license:asl2.0)))
2795
4016ba3f
RW
2796(define-public ruby-instantiator
2797 (package
2798 (name "ruby-instantiator")
688c9076 2799 (version "0.0.7")
4016ba3f
RW
2800 (source (origin
2801 (method url-fetch)
2802 (uri (rubygems-uri "instantiator" version))
2803 (sha256
2804 (base32
688c9076 2805 "0w07w3gkyqr7m0vz5h13vm8b411660qywjm2xxxgdjv4wb3fazbr"))))
4016ba3f
RW
2806 (build-system ruby-build-system)
2807 (arguments
2808 `(#:phases
2809 (modify-phases %standard-phases
2810 (add-after 'unpack 'add-test-unit-to-search-path
761e7042 2811 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 2812 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
761e7042
BW
2813 (substitute* "Rakefile"
2814 (("t\\.libs << \"test\"" line)
2815 (string-append line "; t.libs << \""
3cb3fa67 2816 test-unit "/lib/ruby/vendor_ruby"
761e7042
BW
2817 "/gems/test-unit-"
2818 ,(package-version ruby-test-unit)
2819 "/lib\""))))
2820 #t)))))
4016ba3f
RW
2821 (propagated-inputs
2822 `(("ruby-blankslate" ,ruby-blankslate)))
2823 (native-inputs
2824 `(("bundler" ,bundler)
2825 ("ruby-test-unit" ,ruby-test-unit)))
2826 (synopsis "Instantiate an arbitrary Ruby class")
2827 (description
2828 "Instantiator lets you instantiate an arbitrary Ruby class without
2829knowing anything about the constructor.")
2830 (home-page "https://github.com/floehopper/instantiator")
2831 (license license:expat)))
2832
97aee8d3
RW
2833(define-public ruby-introspection
2834 (package
2835 (name "ruby-introspection")
98ff58a5 2836 (version "0.0.4")
97aee8d3
RW
2837 (source (origin
2838 (method url-fetch)
2839 (uri (rubygems-uri "introspection" version))
2840 (sha256
2841 (base32
98ff58a5 2842 "1y2nbijkc0zlfmn9ss6588ilarq2kbn2i7w7pwwsli66dj84zgca"))))
97aee8d3
RW
2843 (build-system ruby-build-system)
2844 (arguments
2845 `(#:phases
2846 (modify-phases %standard-phases
2847 (add-after 'unpack 'add-test-unit-to-search-path
2848 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 2849 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
761e7042
BW
2850 (substitute* "Rakefile"
2851 (("t\\.libs << \"test\"" line)
2852 (string-append line "; t.libs << \""
3cb3fa67 2853 test-unit "/lib/ruby/vendor_ruby"
761e7042
BW
2854 "/gems/test-unit-"
2855 ,(package-version ruby-test-unit)
2856 "/lib\""))))
97aee8d3
RW
2857 #t)))))
2858 (propagated-inputs
2859 `(("ruby-instantiator" ,ruby-instantiator)
2860 ("ruby-metaclass" ,ruby-metaclass)))
2861 (native-inputs
2862 `(("bundler" ,bundler)
2863 ("ruby-blankslate" ,ruby-blankslate)
2864 ("ruby-test-unit" ,ruby-test-unit)))
2865 (synopsis "Dynamic inspection of the method hierarchy on a Ruby object")
2866 (description
2867 "Introspection provides tools to inspect the hierarchy of method
2868definitions on a Ruby object.")
2869 (home-page "https://github.com/floehopper/introspection")
2870 (license license:expat)))
2871
d93062fd
RW
2872(define-public ruby-redcarpet
2873 (package
2874 (name "ruby-redcarpet")
5ca48923 2875 (version "3.4.0")
d93062fd
RW
2876 (source (origin
2877 (method url-fetch)
2878 (uri (rubygems-uri "redcarpet" version))
2879 (sha256
2880 (base32
5ca48923 2881 "0h9qz2hik4s9knpmbwrzb3jcp3vc5vygp9ya8lcpl7f1l9khmcd7"))))
d93062fd
RW
2882 (build-system ruby-build-system)
2883 (arguments
2884 `(#:phases
2885 (modify-phases %standard-phases
2886 ;; The gem archive does not include the conformance tests.
2887 (add-after 'unpack 'disable-conformance-tests
2888 (lambda _
2889 (substitute* "Rakefile"
2890 (("task :test => %w\\[test:unit test:conformance\\]")
2891 "task :test => %w[test:unit]"))
2892 #t)))))
2893 (native-inputs
2894 `(("bundler" ,bundler)
2895 ("ruby-test-unit" ,ruby-test-unit)
2896 ("ruby-rake-compiler" ,ruby-rake-compiler)))
2897 (synopsis "Extensible Markdown to (X)HTML converter")
2898 (description
2899 "Redcarpet is an extensible Ruby library for Markdown processing and
2900conversion to (X)HTML.")
7bf837fd 2901 (home-page "https://github.com/vmg/redcarpet")
d93062fd
RW
2902 (license license:expat)))
2903
09924294
CB
2904(define-public ruby-rerun
2905 (package
2906 (name "ruby-rerun")
2907 (version "0.13.0")
2908 (source
2909 (origin
2910 (method url-fetch)
2911 (uri (rubygems-uri "rerun" version))
2912 (sha256
2913 (base32
2914 "1cskvxk8z8vmfail8na7hj91hs0qnvds9nydj04zi3dbddgnbmvz"))))
2915 (build-system ruby-build-system)
2916 (arguments
2917 '(#:tests? #f)) ; No included tests
2918 (propagated-inputs
2919 `(("ruby-listen" ,ruby-listen)))
2920 (synopsis "Run a process, and restart when some monitored files change")
2921 (description
52beae7b 2922 "Rerun is a tool to launch programs, then monitor the file system, and
09924294
CB
2923restart the program when any of the monitored files change. It's written in
2924Ruby, but can be used for all programs.")
2925 (home-page "https://github.com/alexch/rerun/")
2926 (license license:expat)))
2927
4f2a52ae
RW
2928(define-public ruby-mocha
2929 (package
2930 (name "ruby-mocha")
2931 (version "1.1.0")
2932 (source (origin
2933 (method url-fetch)
2934 (uri (rubygems-uri "mocha" version))
2935 (sha256
2936 (base32
2937 "107nmnngbv8lq2g7hbjpn5kplb4v2c8gs9lxrg6vs8gdbddkilzi"))))
2938 (build-system ruby-build-system)
2939 (arguments
2940 `(#:phases
2941 (modify-phases %standard-phases
2942 (add-after 'unpack 'add-test-unit-to-search-path
2943 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 2944 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
761e7042
BW
2945 (substitute* "Rakefile"
2946 (("t\\.libs << 'test'" line)
2947 (string-append line "; t.libs << \""
3cb3fa67 2948 test-unit "/lib/ruby/vendor_ruby"
761e7042
BW
2949 "/gems/test-unit-"
2950 ,(package-version ruby-test-unit)
2951 "/lib\""))))
4f2a52ae
RW
2952 #t))
2953 (add-before 'check 'use-latest-redcarpet
2954 (lambda _
2955 (substitute* "mocha.gemspec"
71596c3c
BW
2956 (("<redcarpet>.freeze, \\[\"~> 1\"\\]")
2957 "<redcarpet>.freeze, [\">= 3\"]"))
4f2a52ae
RW
2958 #t))
2959 (add-before 'check 'hardcode-version
2960 (lambda _
2961 ;; Mocha is undefined at build time
2962 (substitute* "Rakefile"
2963 (("#\\{Mocha::VERSION\\}") ,version))
2964 #t))
2965 (add-before 'check 'remove-failing-test
2966 ;; FIXME: This test fails for reasons unrelated to Guix packaging.
2967 (lambda _
2968 (delete-file "test/acceptance/stubbing_nil_test.rb")
2969 #t)))))
2970 (propagated-inputs
2971 `(("ruby-metaclass" ,ruby-metaclass)))
2972 (native-inputs
2973 `(("bundler" ,bundler)
2974 ("ruby-yard" ,ruby-yard)
2975 ("ruby-introspection" ,ruby-introspection)
2976 ("ruby-test-unit" ,ruby-test-unit)
2977 ("ruby-redcarpet" ,ruby-redcarpet)))
2978 (synopsis "Mocking and stubbing library for Ruby")
2979 (description
2980 "Mocha is a mocking and stubbing library with JMock/SchMock syntax, which
2981allows mocking and stubbing of methods on real (non-mock) classes.")
2982 (home-page "http://gofreerange.com/mocha/docs")
2983 (license license:expat)))
2984
cf646acf
CB
2985(define-public ruby-mocha-on-bacon
2986 (package
2987 (name "ruby-mocha-on-bacon")
2988 (version "0.2.3")
2989 (source
2990 (origin
2991 (method url-fetch)
2992 (uri (rubygems-uri "mocha-on-bacon" version))
2993 (sha256
2994 (base32
2995 "1h49b33rq889hn8x3wp9byczl91va16jh1w4d2wyy4yj23icdrcp"))))
2996 (build-system ruby-build-system)
2997 (arguments
2998 ;; rubygems.org release missing tests
2999 '(#:tests? #f))
3000 (propagated-inputs `(("ruby-mocha" ,ruby-mocha)))
3001 (synopsis "Mocha adapter for Bacon")
3002 (description
3003 "This package provides a Mocha adapter for Bacon, allowing you to use the
3004Mocha stubbing and mocking library with Bacon, a small RSpec clone.")
3005 (home-page
3006 "https://github.com/alloy/mocha-on-bacon")
3007 (license license:expat)))
3008
2c84ba7e
RW
3009(define-public ruby-net-ssh
3010 (package
3011 (name "ruby-net-ssh")
5803f872 3012 (version "4.2.0")
2c84ba7e
RW
3013 (source (origin
3014 (method url-fetch)
3015 (uri (rubygems-uri "net-ssh" version))
3016 (sha256
3017 (base32
5803f872 3018 "07c4v97zl1daabmri9zlbzs6yvkl56z1q14bw74d53jdj0c17nhx"))))
2c84ba7e
RW
3019 (build-system ruby-build-system)
3020 (native-inputs
a7938625
MB
3021 `(("bundler" ,bundler)
3022 ("ruby-mocha" ,ruby-mocha)
2c84ba7e
RW
3023 ("ruby-test-unit" ,ruby-test-unit)))
3024 (synopsis "Ruby implementation of the SSH2 client protocol")
3025 (description "@code{Net::SSH} is a pure-Ruby implementation of the SSH2
3026client protocol. It allows you to write programs that invoke and interact
3027with processes on remote servers, via SSH2.")
3028 (home-page "https://github.com/net-ssh/net-ssh")
3029 (license license:expat)))
3030
d38755cb
DM
3031(define-public ruby-net-scp
3032 (package
3033 (name "ruby-net-scp")
3034 ;; The 1.2.1 release would be incompatible with ruby-net-ssh >= 4.
3035 (version "1.2.2.rc2")
3036 (source
3037 (origin
e405f996
TGR
3038 (method git-fetch)
3039 (uri (git-reference
3040 (url "https://github.com/net-ssh/net-scp.git")
3041 (commit (string-append "v" version))))
3042 (file-name (git-file-name name version))
d38755cb 3043 (sha256
e405f996 3044 (base32 "1nyn17sy71fn7zs3y6wbgcn35318c10flqgc0582409095x4h0sx"))))
d38755cb
DM
3045 (build-system ruby-build-system)
3046 (native-inputs
3047 `(("bundler" ,bundler)
3048 ("ruby-test-unit" ,ruby-test-unit)
3049 ("ruby-mocha" ,ruby-mocha)))
3050 (propagated-inputs
3051 `(("ruby-net-ssh" ,ruby-net-ssh)))
3052 (synopsis "Pure-Ruby SCP client library")
3053 (description "@code{Net::SCP} is a pure-Ruby implementation of the SCP
3054client protocol.")
3055 (home-page "https://github.com/net-ssh/net-scp")
3056 (license license:expat)))
3057
2206e948
DT
3058(define-public ruby-minitest
3059 (package
3060 (name "ruby-minitest")
88a105c1 3061 (version "5.11.3")
2206e948 3062 (source (origin
e83c6d00
DT
3063 (method url-fetch)
3064 (uri (rubygems-uri "minitest" version))
2206e948
DT
3065 (sha256
3066 (base32
88a105c1 3067 "0icglrhghgwdlnzzp4jf76b0mbc71s80njn5afyfjn4wqji8mqbq"))))
2206e948 3068 (build-system ruby-build-system)
2206e948
DT
3069 (native-inputs
3070 `(("ruby-hoe" ,ruby-hoe)))
3071 (synopsis "Small test suite library for Ruby")
3072 (description "Minitest provides a complete suite of Ruby testing
3073facilities supporting TDD, BDD, mocking, and benchmarking.")
3074 (home-page "https://github.com/seattlerb/minitest")
3075 (license license:expat)))
3076
1db6e09f
RW
3077;; This is the last release of Minitest 4, which is used by some packages.
3078(define-public ruby-minitest-4
3079 (package (inherit ruby-minitest)
3080 (version "4.7.5")
3081 (source (origin
3082 (method url-fetch)
3083 (uri (rubygems-uri "minitest" version))
3084 (sha256
3085 (base32
3086 "03p6iban9gcpcflzp4z901s1hgj9369p6515h967ny6hlqhcf2iy"))))
3087 (arguments
3088 `(#:phases
3089 (modify-phases %standard-phases
3090 (add-after 'unpack 'remove-unsupported-method
3091 (lambda _
3092 (substitute* "Rakefile"
3093 (("self\\.rubyforge_name = .*") ""))
9a7017eb
BW
3094 #t))
3095 (add-after 'build 'exclude-failing-tests
3096 (lambda _
3097 ;; Some tests are failing on Ruby 2.4 due to the deprecation of
3098 ;; Fixnum.
3099 (delete-file "test/minitest/test_minitest_spec.rb")
3100 #t)))))))
1db6e09f 3101
450a3f7f
CB
3102(define-public ruby-minitest-around
3103 (package
3104 (name "ruby-minitest-around")
3105 (version "0.5.0")
3106 (source
3107 (origin
3108 (method url-fetch)
3109 (uri (rubygems-uri "minitest-around" version))
3110 (sha256
3111 (base32
3112 "15ywnqx0719jl9c25yqfshmwcir57i5f4hr1ra9v9vay9ylcwndr"))))
3113 (build-system ruby-build-system)
3114 (arguments
3115 '(#:phases
3116 (modify-phases %standard-phases
3117 (add-after 'extract-gemspec 'remove-unnecessary-dependency-versions
3118 (lambda _
3119 (substitute* "minitest-around.gemspec"
3120 (("%q<cucumber>.*") "%q<cucumber>, [\">= 0\"])\n"))
3121 #t)))))
3122 (propagated-inputs
3123 `(("ruby-minitest" ,ruby-minitest)))
3124 (native-inputs
3125 `(("bundler" ,bundler)
3126 ("ruby-cucumber" ,ruby-cucumber)
3127 ("ruby-bump" ,ruby-bump)
3128 ("ruby-test-construct" ,ruby-test-construct)))
3129 (synopsis "Run code around tests in Minitest")
3130 (description
3131 "This library provides a way to run code around tests in Minitest,
3132written using either the unit test or spec style.")
3133 (home-page "https://github.com/splattael/minitest-around")
3134 (license license:expat)))
3135
35130835
DT
3136(define-public ruby-minitest-sprint
3137 (package
3138 (name "ruby-minitest-sprint")
3139 (version "1.1.0")
3140 (source (origin
e83c6d00
DT
3141 (method url-fetch)
3142 (uri (rubygems-uri "minitest-sprint" version))
35130835
DT
3143 (sha256
3144 (base32
e83c6d00 3145 "179d6pj56l9xzm46fqsqj10mzjkr1f9fv4cxa8wvchs97hqz33w1"))))
35130835 3146 (build-system ruby-build-system)
35130835
DT
3147 (native-inputs
3148 `(("ruby-hoe" ,ruby-hoe)
3149 ("ruby-minitest" ,ruby-minitest)))
3150 (synopsis "Fast test suite runner for minitest")
3151 (description "Minitest-sprint is a test runner for minitest that makes it
3152easier to re-run individual failing tests.")
3153 (home-page "https://github.com/seattlerb/minitest-sprint")
3154 (license license:expat)))
3155
0808e361
DT
3156(define-public ruby-minitest-bacon
3157 (package
3158 (name "ruby-minitest-bacon")
6f9652b0 3159 (version "1.0.3")
0808e361 3160 (source (origin
e83c6d00
DT
3161 (method url-fetch)
3162 (uri (rubygems-uri "minitest-bacon" version))
0808e361
DT
3163 (sha256
3164 (base32
6f9652b0 3165 "0zhdwcl6bgha61qiyfvr7zs7ywaxc33wmj9xhxl8jdmpdvifvfaj"))))
0808e361 3166 (build-system ruby-build-system)
0808e361
DT
3167 (native-inputs
3168 `(("ruby-hoe" ,ruby-hoe)))
3169 (inputs
3170 `(("ruby-minitest" ,ruby-minitest)))
3171 (synopsis "Bacon compatibility library for minitest")
3172 (description "Minitest-bacon extends minitest with bacon-like
3173functionality, making it easier to migrate test suites from bacon to minitest.")
3174 (home-page "https://github.com/seattlerb/minitest-bacon")
3175 (license license:expat)))
3176
39dc0eb5
BW
3177(define-public ruby-minitest-focus
3178 (package
3179 (name "ruby-minitest-focus")
3180 (version "1.1.2")
3181 (source
3182 (origin
3183 (method url-fetch)
3184 (uri (rubygems-uri "minitest-focus" version))
3185 (sha256
3186 (base32
3187 "1zgjslp6d7dzcn8smj595idymgd5j603p9g2jqkfgi28sqbhz6m0"))))
3188 (build-system ruby-build-system)
3189 (propagated-inputs
3190 `(("ruby-minitest" ,ruby-minitest)))
3191 (native-inputs
3192 `(("ruby-hoe" ,ruby-hoe)))
3193 (synopsis "Allows a few specific tests to be focused on")
3194 (description
3195 "@code{minitest-focus} gives the ability focus on a few tests with ease
3196without having to use command-line arguments. It introduces a @code{focus}
3197class method for use in testing classes, specifying that the next defined test
3198is to be run.")
3199 (home-page "https://github.com/seattlerb/minitest-focus")
3200 (license license:expat)))
3201
99fc5cd5
BW
3202(define-public ruby-minitest-pretty-diff
3203 ;; Use git reference because gem is out of date and does not contain testing
3204 ;; script. There are no releases on GitHub.
3205 (let ((commit "11f32e930f574225432f42e5e1ef6e7471efe572"))
3206 (package
3207 (name "ruby-minitest-pretty-diff")
3208 (version (string-append "0.1-1." (string-take commit 8)))
3209 (source (origin
3210 (method git-fetch)
3211 (uri (git-reference
3212 (url "https://github.com/adammck/minitest-pretty_diff.git")
3213 (commit commit)))
3214 (file-name (string-append name "-" version "-checkout"))
3215 (sha256
3216 (base32
3217 "13y5dhmcckhzd83gj1nfwh41iykbjcm2w7y4pr6j6rpqa5as122r"))))
3218 (build-system ruby-build-system)
3219 (arguments
3220 `(#:phases
3221 (modify-phases %standard-phases
3222 (replace 'check
3223 (lambda _
9923d5a4 3224 (invoke "script/test"))))))
99fc5cd5
BW
3225 (native-inputs
3226 `(("bundler" ,bundler)
3227 ("ruby-turn" ,ruby-turn)))
3228 (synopsis "Pretty-print hashes and arrays in MiniTest")
3229 (description
3230 "@code{minitest-pretty_diff} monkey-patches
3231@code{MiniTest::Assertions#mu_pp} to pretty-print hashes and arrays before
3232diffing them. This makes it easier to spot differences between nested
3233structures when tests fail.")
3234 (home-page "https://github.com/adammck/minitest-pretty_diff")
3235 (license license:expat))))
3236
685d0d2f
BW
3237(define-public ruby-minitest-moar
3238 (package
3239 (name "ruby-minitest-moar")
3240 (version "0.0.4")
3241 (source
3242 (origin
3243 (method url-fetch)
3244 (uri (rubygems-uri "minitest-moar" version))
3245 (sha256
3246 (base32
3247 "0nb83blrsab92gcy6nfpw39njys7zisia8pw4igzzfzfl51cis0x"))))
3248 (build-system ruby-build-system)
3249 (arguments
3250 `(#:phases
3251 (modify-phases %standard-phases
3252 (add-before 'check 'clean-dependencies
3253 (lambda _
3254 ;; Remove all gems defined in the Gemfile because these are not
3255 ;; truly needed.
3256 (substitute* "Gemfile"
3257 (("gem .*") ""))
3258 ;; Remove byebug as not needed to run tests.
3259 (substitute* "test/test_helper.rb"
3260 (("require 'byebug'") ""))
3261 #t)))))
3262 (native-inputs
3263 `(("bundler" ,bundler)
3264 ("ruby-minitest" ,ruby-minitest)))
3265 (synopsis "Extra features and changes to MiniTest")
3266 (description "@code{MiniTest Moar} add some additional features and
3267changes some default behaviours in MiniTest. For instance, Moar replaces the
3268MiniTest @code{Object#stub} with a global @code{stub} method.")
3269 (home-page "https://github.com/dockyard/minitest-moar")
3270 (license license:expat)))
3271
e07ef1d6
BW
3272(define-public ruby-minitest-bonus-assertions
3273 (package
3274 (name "ruby-minitest-bonus-assertions")
c9e261b7 3275 (version "3.0")
e07ef1d6
BW
3276 (source
3277 (origin
3278 (method url-fetch)
3279 (uri (rubygems-uri "minitest-bonus-assertions" version))
3280 (sha256
3281 (base32
c9e261b7 3282 "1hbq9jk904xkz868yha1bqcm6azm7kmjsll2k4pn2nrcib508h2a"))))
e07ef1d6
BW
3283 (build-system ruby-build-system)
3284 (arguments
3285 `(#:phases
3286 (modify-phases %standard-phases
3287 (add-before 'check 'clean-dependencies
3288 (lambda _
3289 ;; Remove unneeded require statement that would entail another
3290 ;; dependency.
3291 (substitute* "test/minitest_config.rb"
3292 (("require 'minitest/bisect'") ""))
3293 #t)))))
3294 (native-inputs
3295 `(("ruby-hoe" ,ruby-hoe)
3296 ("ruby-minitest-pretty-diff" ,ruby-minitest-pretty-diff)
3297 ("ruby-minitest-focus" ,ruby-minitest-focus)
3298 ("ruby-minitest-moar" ,ruby-minitest-moar)))
3299 (synopsis "Bonus assertions for @code{Minitest}")
3300 (description
3301 "Minitest bonus assertions provides extra MiniTest assertions. For
3302instance, it provides @code{assert_true}, @code{assert_false} and
3303@code{assert_set_equal}.")
3304 (home-page "https://github.com/halostatue/minitest-bonus-assertions")
3305 (license license:expat)))
3306
e2c9a9cc
CB
3307(define-public ruby-minitest-reporters
3308 (package
3309 (name "ruby-minitest-reporters")
3310 (version "1.3.6")
3311 (source
3312 (origin
3313 (method url-fetch)
3314 (uri (rubygems-uri "minitest-reporters" version))
3315 (sha256
3316 (base32
3317 "1a3das80rwgys5rj48i5ly144nvszyqyi748bk9bss74jblcf5ay"))))
3318 (build-system ruby-build-system)
3319 (arguments
3320 '(#:phases
3321 (modify-phases %standard-phases
3322 ;; Remove the requirement on Rubocop, as it isn't useful to run, and
3323 ;; including it as an input can lead to circular dependencies.
3324 (add-after 'unpack 'remove-rubocop-from-Rakefile
3325 (lambda _
3326 (substitute* "Rakefile"
3327 (("require 'rubocop/rake\\_task'") "")
3328 (("RuboCop::RakeTask\\.new\\(:rubocop\\)") "[].each"))
3329 #t))
3330 (add-after 'extract-gemspec 'remove-rubocop-from-gemspec
3331 (lambda _
3332 (substitute* "minitest-reporters.gemspec"
3333 ((".*%q<rubocop>.*") "\n"))
3334 #t)))))
3335 (propagated-inputs
3336 `(("ruby-ansi" ,ruby-ansi)
3337 ("ruby-builder" ,ruby-builder)
3338 ("ruby-minitest" ,ruby-minitest)
3339 ("ruby-progressbar" ,ruby-progressbar)))
3340 (native-inputs
3341 `(("bundler" ,bundler)
3342 ("ruby-maruku" ,ruby-maruku)))
3343 (synopsis "Enhanced reporting for Minitest tests")
3344 (description
3345 "@code{minitest/reporters} provides a custom Minitest runner to improve
3346how the test state is reported. A number of different reporters are
3347available, including a spec reporter, progress bar reporter, a HTML
3348reporter.")
3349 (home-page "https://github.com/kern/minitest-reporters")
3350 (license license:expat)))
3351
e582fa93
BW
3352(define-public ruby-minitest-rg
3353 (package
3354 (name "ruby-minitest-rg")
3355 (version "5.2.0")
3356 (source
3357 (origin
3358 (method url-fetch)
3359 (uri (rubygems-uri "minitest-rg" version))
3360 (sha256
3361 (base32
3362 "0sq509ax1x62rd0w10b0hcydcxyk5bxxr3fwrgxv02r8drq2r354"))))
3363 (build-system ruby-build-system)
3364 (arguments
3365 ;; Some tests fail even outside Guix, so disable tests.
3366 ;; https://github.com/blowmage/minitest-rg/issues/12
3367 ;; https://github.com/blowmage/minitest-rg/pull/13
3368 `(#:tests? #f))
3369 (propagated-inputs
3370 `(("ruby-minitest" ,ruby-minitest)))
3371 (synopsis "Coloured output for Minitest")
3372 (description
3373 "@code{minitest-rg} changes the colour of the output from Minitest.")
3374 (home-page "http://blowmage.com/minitest-rg")
3375 (license license:expat)))
3376
2a96dbe6
BW
3377(define-public ruby-minitest-hooks
3378 (package
3379 (name "ruby-minitest-hooks")
eaaf8b12 3380 (version "1.4.2")
2a96dbe6
BW
3381 (source
3382 (origin
3383 (method url-fetch)
3384 (uri (rubygems-uri "minitest-hooks" version))
3385 (sha256
3386 (base32
eaaf8b12 3387 "0lnpvzijbjrvxjc43d155jnbk2mkfshrz22an711wh004scavlzc"))))
2a96dbe6
BW
3388 (build-system ruby-build-system)
3389 (arguments
3390 '(#:test-target "spec"))
3391 (native-inputs
3392 `(("ruby-sequel" ,ruby-sequel)
3393 ("ruby-sqlite3" ,ruby-sqlite3)))
3394 (synopsis "Hooks for the minitest framework")
3395 (description
3396 "Minitest-hooks adds @code{around}, @code{before_all}, @code{after_all},
3397@code{around_all} hooks for Minitest. This allows, for instance, running each
3398suite of specs inside a database transaction, running each spec inside its own
3399savepoint inside that transaction. This can significantly speed up testing
3400for specs that share expensive database setup code.")
7bf837fd 3401 (home-page "https://github.com/jeremyevans/minitest-hooks")
2a96dbe6
BW
3402 (license license:expat)))
3403
afbbdf77
DT
3404(define-public ruby-daemons
3405 (package
3406 (name "ruby-daemons")
f03153db 3407 (version "1.2.5")
afbbdf77
DT
3408 (source (origin
3409 (method url-fetch)
e83c6d00 3410 (uri (rubygems-uri "daemons" version))
afbbdf77
DT
3411 (sha256
3412 (base32
f03153db 3413 "15smbsg0gxb7nf0nrlnplc68y0cdy13dm6fviavpmw7c630sring"))))
afbbdf77
DT
3414 (build-system ruby-build-system)
3415 (arguments
3416 `(#:tests? #f)) ; no test suite
3417 (synopsis "Daemonize Ruby programs")
3418 (description "Daemons provides a way to wrap existing Ruby scripts to be
3419run as a daemon and to be controlled by simple start/stop/restart commands.")
3420 (home-page "https://github.com/thuehlinger/daemons")
3421 (license license:expat)))
b03eb6ac
CB
3422
3423(define-public ruby-data_uri
3424 (package
3425 (name "ruby-data_uri")
3426 (version "0.1.0")
3427 (source
3428 (origin
3429 (method url-fetch)
3430 (uri (rubygems-uri "data_uri" version))
3431 (sha256
3432 (base32
3433 "0fzkxgdxrlbfl4537y3n9mjxbm28kir639gcw3x47ffchwsgdcky"))))
3434 (build-system ruby-build-system)
3435 (synopsis "URI class for parsing data URIs")
3436 (description
3437 "Data @acronym{URI, universal resource idenfitier}s allow resources to be
3438embedded inside a URI. The URI::Data class provides support for parsing these
3439URIs using the normal URI.parse method.")
3440 (home-page "https://github.com/dball/data_uri")
3441 (license license:expat)))
66e20863
DT
3442
3443(define-public ruby-git
3444 (package
3445 (name "ruby-git")
ceaff59e 3446 (version "1.3.0")
66e20863
DT
3447 (source (origin
3448 (method url-fetch)
e83c6d00 3449 (uri (rubygems-uri "git" version))
66e20863
DT
3450 (sha256
3451 (base32
ceaff59e 3452 "1waikaggw7a1d24nw0sh8fd419gbf7awh000qhsf411valycj6q3"))))
66e20863
DT
3453 (build-system ruby-build-system)
3454 (arguments
e83c6d00
DT
3455 `(#:tests? #f ; no tests
3456 #:phases (modify-phases %standard-phases
3457 (add-after 'install 'patch-git-binary
3458 (lambda* (#:key inputs outputs #:allow-other-keys)
66e20863
DT
3459 ;; Make the default git binary an absolute path to the
3460 ;; store.
e83c6d00
DT
3461 (let ((git (string-append (assoc-ref inputs "git")
3462 "/bin/git"))
3cb3fa67
CB
3463 (config (string-append
3464 (assoc-ref outputs "out")
3465 "/lib/ruby/vendor_ruby/gems/git-"
3466 ,version "/lib/git/config.rb")))
e83c6d00 3467 (substitute* (list config)
66e20863
DT
3468 (("'git'")
3469 (string-append "'" git "'")))
e83c6d00 3470 #t))))))
66e20863
DT
3471 (inputs
3472 `(("git" ,git)))
3473 (synopsis "Ruby wrappers for Git")
3474 (description "Ruby/Git is a Ruby library that can be used to create, read
3475and manipulate Git repositories by wrapping system calls to the git binary.")
3476 (home-page "https://github.com/schacon/ruby-git")
3477 (license license:expat)))
71d3e2c2
DT
3478
3479(define-public ruby-slop
3480 (package
3481 (name "ruby-slop")
d14e5eaa 3482 (version "4.5.0")
71d3e2c2
DT
3483 (source (origin
3484 (method url-fetch)
e83c6d00 3485 (uri (rubygems-uri "slop" version))
71d3e2c2
DT
3486 (sha256
3487 (base32
d14e5eaa 3488 "0bfm8535g0rkn9cbjndkckf0f7a3wj0rg4rqhrpsgxnbfdf2lm0p"))))
71d3e2c2
DT
3489 (build-system ruby-build-system)
3490 (native-inputs
3491 `(("ruby-minitest" ,ruby-minitest)))
3492 (synopsis "Ruby command line option parser")
3493 (description "Slop provides a Ruby domain specific language for gathering
3494options and parsing command line flags.")
3495 (home-page "https://github.com/leejarvis/slop")
3496 (license license:expat)))
e778a549 3497
5337f8b9
DT
3498(define-public ruby-slop-3
3499 (package (inherit ruby-slop)
3500 (version "3.6.0")
3501 (source (origin
3502 (method url-fetch)
3503 (uri (rubygems-uri "slop" version))
3504 (sha256
3505 (base32
3506 "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n"))))))
3507
ca914b5b
CB
3508(define-public ruby-multi-xml
3509 (package
3510 (name "ruby-multi-xml")
3511 (version "0.6.0")
3512 (source
3513 (origin
3514 (method url-fetch)
3515 (uri (rubygems-uri "multi_xml" version))
3516 (sha256
3517 (base32
3518 "0lmd4f401mvravi1i1yq7b2qjjli0yq7dfc4p1nj5nwajp7r6hyj"))))
3519 (build-system ruby-build-system)
3520 (arguments
3521 '(#:tests? #f)) ; No included tests
3522 (synopsis "Swappable XML backends for Ruby")
3523 (description
3524 "@code{MultiXml} provides swappable XML backends utilizing either LibXML,
3525Nokogiri, Ox, or REXML.")
3526 (home-page "https://github.com/sferik/multi_xml")
3527 (license license:expat)))
3528
e778a549
DT
3529(define-public ruby-multipart-post
3530 (package
3531 (name "ruby-multipart-post")
3532 (version "2.0.0")
3533 (source (origin
3534 (method url-fetch)
e83c6d00 3535 (uri (rubygems-uri "multipart-post" version))
e778a549
DT
3536 (sha256
3537 (base32
e83c6d00 3538 "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x"))))
e778a549
DT
3539 (build-system ruby-build-system)
3540 (native-inputs
3541 `(("bundler" ,bundler)))
3542 (synopsis "Multipart POST library for Ruby")
3543 (description "Multipart-Post Adds multipart POST capability to Ruby's
3544net/http library.")
3545 (home-page "https://github.com/nicksieger/multipart-post")
3546 (license license:expat)))
f8da3af0 3547
9a97e7ce
CB
3548(define-public ruby-multi-json
3549 (package
3550 (name "ruby-multi-json")
1b6f5475 3551 (version "1.13.1")
9a97e7ce
CB
3552 (source
3553 (origin
b872b47b 3554 (method git-fetch)
1b6f5475
BW
3555 ;; Tests are not distributed at rubygems.org so download from GitHub
3556 ;; instead.
b872b47b
EF
3557 (uri (git-reference
3558 (url "https://github.com/intridea/multi_json")
3559 (commit (string-append "v" version))))
3560 (file-name (git-file-name name version))
9a97e7ce
CB
3561 (sha256
3562 (base32
b872b47b 3563 "18wpb6p01rrkl4v33byh70vxj2a5jxkfxzv3pz8z6pssy4ymwkm4"))))
9a97e7ce
CB
3564 (build-system ruby-build-system)
3565 (arguments
1b6f5475
BW
3566 `(#:phases
3567 (modify-phases %standard-phases
3568 (add-after 'unpack 'remove-signing-key-reference
3569 (lambda _
3570 (substitute* "multi_json.gemspec"
3571 ((".*spec.signing_key.*") ""))
3572 #t)))))
3573 (native-inputs
3574 `(("bundler" ,bundler)
3575 ("ruby-rspec" ,ruby-rspec)
3576 ("ruby-yard" ,ruby-yard)
3577 ("ruby-json-pure" ,ruby-json-pure)
3578 ("ruby-oj" ,ruby-oj)
3579 ("ruby-yajl-ruby" ,ruby-yajl-ruby)))
9a97e7ce
CB
3580 (synopsis "Common interface to multiple JSON libraries for Ruby")
3581 (description
3582 "This package provides a common interface to multiple JSON libraries,
3583including Oj, Yajl, the JSON gem (with C-extensions), the pure-Ruby JSON gem,
3584NSJSONSerialization, gson.rb, JrJackson, and OkJson.")
1b6f5475 3585 (home-page "https://github.com/intridea/multi_json")
9a97e7ce
CB
3586 (license license:expat)))
3587
5edef88b
BW
3588(define-public ruby-multi-test
3589 (package
3590 (name "ruby-multi-test")
3591 (version "0.1.2")
3592 (source
3593 (origin
3594 (method url-fetch)
3595 (uri (rubygems-uri "multi_test" version))
3596 (sha256
3597 (base32
3598 "1sx356q81plr67hg16jfwz9hcqvnk03bd9n75pmdw8pfxjfy1yxd"))))
3599 (build-system ruby-build-system)
3600 (arguments
3601 '(;; Tests require different sets of specific gem versions to be available,
3602 ;; and there is no gemfile that specifies the newest versions of
3603 ;; dependencies to be tested.
3604 #:tests? #f))
3605 (synopsis
3606 "Interface to testing libraries loaded into a running Ruby process")
3607 (description
3608 "@code{multi_test} provides a uniform interface onto whatever testing
3609libraries that have been loaded into a running Ruby process to help control
3610rogue test/unit/autorun requires.")
3611 (home-page "https://github.com/cucumber/multi_test")
9a97e7ce
CB
3612 (license license:expat)))
3613
f8da3af0
DT
3614(define-public ruby-arel
3615 (package
3616 (name "ruby-arel")
aecd533d 3617 (version "9.0.0")
f8da3af0
DT
3618 (source (origin
3619 (method url-fetch)
3620 (uri (rubygems-uri "arel" version))
3621 (sha256
3622 (base32
aecd533d 3623 "1jk7wlmkr61f6g36w9s2sn46nmdg6wn2jfssrhbhirv5x9n95nk0"))))
f8da3af0
DT
3624 (build-system ruby-build-system)
3625 (arguments '(#:tests? #f)) ; no tests
3626 (home-page "https://github.com/rails/arel")
3627 (synopsis "SQL AST manager for Ruby")
6f23e2fb
TGR
3628 (description "Arel is an SQL @dfn{Abstract Syntax Tree} (AST) manager for
3629Ruby. It simplifies the generation of complex SQL queries and adapts to
3630various relational database implementations.")
f8da3af0 3631 (license license:expat)))
616eaead 3632
554bf4f6
CB
3633(define-public ruby-marcel
3634 (package
3635 (name "ruby-marcel")
3636 (version "0.3.3")
3637 (source
3638 (origin
3639 (method url-fetch)
3640 (uri (rubygems-uri "marcel" version))
3641 (sha256
3642 (base32
3643 "1nxbjmcyg8vlw6zwagf17l9y2mwkagmmkg95xybpn4bmf3rfnksx"))))
3644 (build-system ruby-build-system)
3645 (arguments
3646 '(;; No included tests
3647 #:tests? #f))
3648 (propagated-inputs
3649 `(("ruby-mimemagic" ,ruby-mimemagic)))
3650 (synopsis "MIME type detection using magic numbers, filenames and extensions")
3651 (description
3652 "@code{marcel} provides @acronym{MIME, Multipurpose Internet Mail
3653Extensions} type detection using magic numbers, filenames, and extensions")
3654 (home-page "https://github.com/basecamp/marcel")
3655 (license license:expat)))
3656
616eaead 3657(define-public ruby-minitar
bfaf8efd
BW
3658 ;; We package from the GitHub source to fix the security issue reported at
3659 ;; https://github.com/halostatue/minitar/issues/16.
3660 (let ((commit "e25205ecbb6277ae8a3df1e6a306d7ed4458b6e4"))
3661 (package
3662 (name "ruby-minitar")
3663 (version (string-append "0.5.4-1." (string-take commit 8)))
3664 (source
3665 (origin
3666 (method git-fetch)
3667 (uri (git-reference
3668 (url "https://github.com/halostatue/minitar.git")
3669 (commit commit)))
3670 (file-name (string-append name "-" version "-checkout"))
3671 (sha256
3672 (base32
3673 "1iywfx07jgjqcmixzkxk9zdwfmij1fyg1z2jlwzj15cj7s99qlfv"))))
3674 (build-system ruby-build-system)
3675 (arguments
3676 '(#:tests? #f)) ; missing a gemspec
3677 (synopsis "Ruby library and utility for handling tar archives")
3678 (description
3679 "Archive::Tar::Minitar is a pure-Ruby library and command-line utility
616eaead 3680that provides the ability to deal with POSIX tar archive files.")
bfaf8efd
BW
3681 (home-page "http://www.github.com/atoulme/minitar")
3682 (license (list license:gpl2+ license:ruby)))))
bea1c0e2
DT
3683
3684(define-public ruby-mini-portile
3685 (package
3686 (name "ruby-mini-portile")
3687 (version "0.6.2")
3688 (source
3689 (origin
3690 (method url-fetch)
3691 (uri (rubygems-uri "mini_portile" version))
3692 (sha256
3693 (base32
3694 "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w"))))
3695 (build-system ruby-build-system)
3696 (arguments
3697 '(#:tests? #f)) ; tests require network access
3698 (synopsis "Ports system for Ruby developers")
3699 (description "Mini-portile is a port/recipe system for Ruby developers.
3700It provides a standard way to compile against specific versions of libraries
3701to reproduce user environments.")
7bf837fd 3702 (home-page "https://github.com/flavorjones/mini_portile")
bea1c0e2 3703 (license license:expat)))
e920bfca 3704
d000fc92
BW
3705(define-public ruby-mini-portile-2
3706 (package (inherit ruby-mini-portile)
a88ac044 3707 (version "2.4.0")
d000fc92
BW
3708 (source (origin
3709 (method url-fetch)
3710 (uri (rubygems-uri "mini_portile2" version))
3711 (sha256
3712 (base32
a88ac044 3713 "15zplpfw3knqifj9bpf604rb3wc1vhq6363pd6lvhayng8wql5vy"))))))
d000fc92 3714
e920bfca
DT
3715(define-public ruby-nokogiri
3716 (package
3717 (name "ruby-nokogiri")
36ccf59e 3718 (version "1.10.5")
e920bfca
DT
3719 (source (origin
3720 (method url-fetch)
3721 (uri (rubygems-uri "nokogiri" version))
3722 (sha256
3723 (base32
36ccf59e 3724 "185g3dwba73jqxjr94bd2zk6fil6n9hmcfnfyzh3p1w47vm296r7"))))
e920bfca
DT
3725 (build-system ruby-build-system)
3726 (arguments
3727 ;; Tests fail because Nokogiri can only test with an installed extension,
3728 ;; and also because many test framework dependencies are missing.
7b01f250 3729 `(#:tests? #f
e920bfca
DT
3730 #:gem-flags (list "--" "--use-system-libraries"
3731 (string-append "--with-xml2-include="
3732 (assoc-ref %build-inputs "libxml2")
5e7f1b0b
BW
3733 "/include/libxml2" ))
3734 #:phases
3735 (modify-phases %standard-phases
7b01f250
BW
3736 (add-before 'build 'patch-extconf
3737 ;; 'pkg-config' is not included in the GEM_PATH during
3738 ;; installation, so we add it directly to the load path.
3739 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 3740 (let* ((pkg-config (assoc-ref inputs "ruby-pkg-config")))
7b01f250
BW
3741 (substitute* "ext/nokogiri/extconf.rb"
3742 (("gem 'pkg-config'.*")
3743 (string-append "$:.unshift '"
3cb3fa67 3744 pkg-config "/lib/ruby/vendor_ruby"
7b01f250
BW
3745 "/gems/pkg-config-"
3746 ,(package-version ruby-pkg-config)
3747 "/lib'\n"))))
5e7f1b0b 3748 #t)))))
e920bfca 3749 (native-inputs
7b01f250 3750 `(("ruby-hoe" ,ruby-hoe)))
e920bfca
DT
3751 (inputs
3752 `(("zlib" ,zlib)
3753 ("libxml2" ,libxml2)
3754 ("libxslt" ,libxslt)))
3755 (propagated-inputs
7b01f250
BW
3756 `(("ruby-mini-portile" ,ruby-mini-portile-2)
3757 ("ruby-pkg-config" ,ruby-pkg-config)))
e920bfca
DT
3758 (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
3759 (description "Nokogiri (鋸) parses and searches XML/HTML, and features
3760both CSS3 selector and XPath 1.0 support.")
3761 (home-page "http://www.nokogiri.org/")
3762 (license license:expat)))
30b0b725
DT
3763
3764(define-public ruby-method-source
3765 (package
3766 (name "ruby-method-source")
c8355037 3767 (version "0.9.0")
30b0b725
DT
3768 (source
3769 (origin
3770 (method url-fetch)
3771 (uri (rubygems-uri "method_source" version))
3772 (sha256
3773 (base32
c8355037 3774 "0xqj21j3vfq4ldia6i2akhn2qd84m0iqcnsl49kfpq3xk6x0dzgn"))))
30b0b725 3775 (build-system ruby-build-system)
c8355037
BW
3776 (arguments
3777 `(#:test-target "spec"))
30b0b725 3778 (native-inputs
c8355037 3779 `(("ruby-rspec" ,ruby-rspec)
30b0b725
DT
3780 ("git" ,git)))
3781 (synopsis "Retrieve the source code for Ruby methods")
3782 (description "Method_source retrieves the source code for Ruby methods.
3783Additionally, it can extract source code from Proc and Lambda objects or just
3784extract comments.")
3785 (home-page "https://github.com/banister/method_source")
3786 (license license:expat)))
2e3fdea4
DT
3787
3788(define-public ruby-coderay
3789 (package
3790 (name "ruby-coderay")
5cf0997a 3791 (version "1.1.2")
2e3fdea4
DT
3792 (source
3793 (origin
3794 (method url-fetch)
3795 (uri (rubygems-uri "coderay" version))
3796 (sha256
3797 (base32
5cf0997a 3798 "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y"))))
2e3fdea4
DT
3799 (build-system ruby-build-system)
3800 (arguments
3801 '(#:tests? #f)) ; missing test files
3802 (synopsis "Ruby syntax highlighting library")
3803 (description "Coderay is a Ruby library that provides syntax highlighting
3804for select languages.")
3805 (home-page "http://coderay.rubychan.de")
3806 (license license:expat)))
96e76083 3807
54993457
CB
3808(define-public ruby-parser
3809 (package
3810 (name "ruby-parser")
3811 (version "2.6.0.0")
3812 (source
3813 (origin
3814 (method url-fetch)
3815 (uri (rubygems-uri "parser" version))
3816 (sha256
3817 (base32
3818 "1hhz2k5417vr2k1llwqgjdnmyrhlpqicy0y2arr6r1gp04fg9wlm"))))
3819 (build-system ruby-build-system)
3820 (native-inputs
3821 `(("bundler" ,bundler)
3822 ("ruby-cliver" ,ruby-cliver)
3823 ("ruby-simplecov" ,ruby-simplecov)
3824 ("ruby-racc" ,ruby-racc)))
3825 (inputs
3826 `(("ragel" ,ragel)))
3827 (propagated-inputs
3828 `(("ruby-ast" ,ruby-ast)))
3829 (synopsis "Ruby parser written in pure Ruby")
3830 (description
3831 "This package provides a Ruby parser written in pure Ruby.")
3832 (home-page "https://github.com/whitequark/parser")
3833 (license license:expat)))
3834
16f423cb
CB
3835(define-public ruby-prawn-manual-builder
3836 (package
3837 (name "ruby-prawn-manual-builder")
1d4f0019 3838 (version "0.3.1")
16f423cb
CB
3839 (source
3840 (origin
3841 (method url-fetch)
3842 (uri (rubygems-uri "prawn-manual_builder" version))
3843 (sha256
1d4f0019 3844 (base32 "1vlg5w7wq43g2hgpgra2nrcxj1kb4ayqliz4gmja2rhs037j2vzs"))))
16f423cb
CB
3845 (build-system ruby-build-system)
3846 (arguments
1d4f0019 3847 '(#:tests? #f ; no included tests
16f423cb
CB
3848 #:phases
3849 (modify-phases %standard-phases
3850 (add-after 'extract-gemspec 'patch-gemspec
3851 (lambda _
3852 (substitute* ".gemspec"
3853 ;; Loosen the requirement for pdf-inspector
3854 (("~> 1\\.0\\.7") ">= 0")))))))
3855 (propagated-inputs
3856 `(("ruby-coderay" ,ruby-coderay)))
3857 (synopsis "Tool for writing manuals for Prawn and Prawn accessories")
3858 (description
3859 "This package provides a tool for writing manuals for Prawn and Prawn
3860accessories")
3861 (home-page "https://github.com/prawnpdf/prawn-manual_builder")
3862 (license (list
3863 ;; GPLv2 or GPLv3 or custom license described in LICENSE file
3864 license:gpl2
3865 license:gpl3))))
3866
268643b9
CB
3867(define-public ruby-progress_bar
3868 (package
3869 (name "ruby-progress_bar")
3870 (version "1.1.0")
3871 (source
3872 (origin
3873 (method url-fetch)
3874 (uri (rubygems-uri "progress_bar" version))
3875 (sha256
3876 (base32
3877 "1qc40mr6p1z9a3vlpnsg1zfgk1qswviql2a31y63wpv3vr6b5f48"))))
3878 (build-system ruby-build-system)
3879 (arguments
3880 '(#:test-target "spec"))
3881 (propagated-inputs
3882 `(("ruby-highline" ,ruby-highline)
3883 ("ruby-options" ,ruby-options)))
3884 (native-inputs
3885 `(("bundler" ,bundler)
3886 ("ruby-rspec" ,ruby-rspec)
3887 ("ruby-timecop" ,ruby-timecop)))
3888 (synopsis
3889 "Ruby library for displaying progress bars")
3890 (description
3891 "ProgressBar is a simple library for displaying progress bars. The
3892maximum value is configurable, and additional information can be displayed
3893like the percentage completion, estimated time remaining, elapsed time and
3894rate.")
3895 (home-page "https://github.com/paul/progress_bar")
3896 (license license:wtfpl2)))
3897
95f85d44
CB
3898(define-public ruby-dep
3899 (package
3900 (name "ruby-dep")
3901 (version "1.5.0")
3902 (source
3903 (origin
3904 (method url-fetch)
3905 (uri (rubygems-uri "ruby_dep" version))
3906 (sha256
3907 (base32
3908 "1c1bkl97i9mkcvkn1jks346ksnvnnp84cs22gwl0vd7radybrgy5"))))
3909 (build-system ruby-build-system)
3910 (arguments
3911 '(#:tests? #f)) ; No included tests
3912 (synopsis "Creates a version constraint of supported Rubies")
3913 (description
3914 "This package helps create a version constraint of supported Rubies,
3915suitable for a gemspec file.")
3916 (home-page "https://github.com/e2/ruby_dep")
3917 (license license:expat)))
3918
158a9253
CB
3919(define-public ruby-progressbar
3920 (package
3921 (name "ruby-progressbar")
2d2a2363 3922 (version "1.10.1")
158a9253
CB
3923 (source
3924 (origin
3925 (method url-fetch)
3926 (uri (rubygems-uri "ruby-progressbar" version))
3927 (sha256
2d2a2363 3928 (base32 "1k77i0d4wsn23ggdd2msrcwfy0i376cglfqypkk2q77r2l3408zf"))))
158a9253
CB
3929 (build-system ruby-build-system)
3930 (arguments
3931 '(;; TODO: There looks to be a circular dependency with ruby-fuubar.
3932 #:tests? #f))
3933 (synopsis "Text progress bar library for Ruby")
3934 (description
3935 "Ruby/ProgressBar is an flexible text progress bar library for Ruby.
3936The output can be customized with a formatting system.")
3937 (home-page "https://github.com/jfelchner/ruby-progressbar")
3938 (license license:expat)))
3939
96e76083
DT
3940(define-public ruby-pry
3941 (package
3942 (name "ruby-pry")
1bf02b20 3943 (version "0.11.3")
96e76083
DT
3944 (source
3945 (origin
3946 (method url-fetch)
3947 (uri (rubygems-uri "pry" version))
3948 (sha256
3949 (base32
1bf02b20 3950 "1mh312k3y94sj0pi160wpia0ps8f4kmzvm505i6bvwynfdh7v30g"))))
96e76083
DT
3951 (build-system ruby-build-system)
3952 (arguments
3953 '(#:tests? #f)) ; no tests
3954 (propagated-inputs
3955 `(("ruby-coderay" ,ruby-coderay)
1960d4fd 3956 ("ruby-method-source" ,ruby-method-source)))
96e76083
DT
3957 (synopsis "Ruby REPL")
3958 (description "Pry is an IRB alternative and runtime developer console for
3959Ruby. It features syntax highlighting, a plugin architecture, runtime
3960invocation, and source and documentation browsing.")
2f3800e5 3961 (home-page "https://pryrepl.org")
96e76083 3962 (license license:expat)))
1415792a 3963
051deeb7
RW
3964(define-public ruby-guard
3965 (package
3966 (name "ruby-guard")
3967 (version "2.13.0")
3968 (source (origin
3c6128f6 3969 (method git-fetch)
051deeb7
RW
3970 ;; The gem does not include a Rakefile, nor does it contain a
3971 ;; gemspec file, nor does it come with the tests. This is why
3972 ;; we fetch the tarball from Github.
3c6128f6
EF
3973 (uri (git-reference
3974 (url "https://github.com/guard/guard")
3975 (commit (string-append "v" version))))
3976 (file-name (git-file-name name version))
051deeb7
RW
3977 (sha256
3978 (base32
3c6128f6 3979 "16pxcszr0g2jnl3090didxh1d8z5m2mly14m3w4rspb8fmclsnjs"))))
051deeb7
RW
3980 (build-system ruby-build-system)
3981 (arguments
3982 `(#:tests? #f ; tests require cucumber
3983 #:phases
3984 (modify-phases %standard-phases
3985 (add-after 'unpack 'remove-git-ls-files
3986 (lambda* (#:key outputs #:allow-other-keys)
3987 (substitute* "guard.gemspec"
3988 (("git ls-files -z") "find . -type f -print0"))
3989 #t))
3990 (replace 'build
3991 (lambda _
9923d5a4 3992 (invoke "gem" "build" "guard.gemspec"))))))
051deeb7
RW
3993 (propagated-inputs
3994 `(("ruby-formatador" ,ruby-formatador)
3995 ("ruby-listen" ,ruby-listen)
3996 ("ruby-lumberjack" ,ruby-lumberjack)
3997 ("ruby-nenv" ,ruby-nenv)
3998 ("ruby-notiffany" ,ruby-notiffany)
3999 ("ruby-pry" ,ruby-pry)
4000 ("ruby-shellany" ,ruby-shellany)
4001 ("ruby-thor" ,ruby-thor)))
4002 (native-inputs
4003 `(("bundler" ,bundler)
4004 ("ruby-rspec" ,ruby-rspec)))
4005 (synopsis "Tool to handle events on file system modifications")
4006 (description
4007 "Guard is a command line tool to easily handle events on file system
4008modifications. Guard automates various tasks by running custom rules whenever
4009file or directories are modified.")
3c6128f6 4010 (home-page "https://guardgem.org/")
051deeb7
RW
4011 (license license:expat)))
4012
bcbb3cc9
CB
4013(define-public ruby-tilt
4014 (package
4015 (name "ruby-tilt")
4016 (version "2.0.9")
4017 (source
4018 (origin
4019 (method url-fetch)
4020 (uri (rubygems-uri "tilt" version))
4021 (sha256
4022 (base32
4023 "0ca4k0clwf0rkvy7726x4nxpjxkpv67w043i39saxgldxd97zmwz"))))
4024 (build-system ruby-build-system)
4025 (arguments
4026 '(#:phases
4027 (modify-phases %standard-phases
4028 (add-after 'unpack 'remove-some-dependencies
4029 (lambda _
4030 (substitute* "Gemfile"
4031 ;; TODO ronn is used for generating the manual
4032 (("gem 'ronn'.*") "\n")
4033 ;; ruby-haml has a runtime dependency on ruby-tilt, so don't
4034 ;; pass it in as a native-input
4035 (("gem 'haml'.*") "\n")
4036 ;; TODO Not all of these gems are packaged for Guix yet:
4037 ;; less, coffee-script, livescript, babel-transpiler,
4038 ;; typescript-node
4039 (("if can_execjs") "if false")
4040 ;; Disable the secondary group to reduce the number of
4041 ;; dependencies. None of the normal approaches work, so patch
4042 ;; the Gemfile instead.
4043 (("group :secondary") "[].each"))
4044 #t)))))
4045 (native-inputs
4046 `(("bundler" ,bundler)
4047 ("ruby-yard" ,ruby-yard)
4048 ("ruby-builder" ,ruby-builder)
4049 ("ruby-erubis" ,ruby-erubis)
4050 ("ruby-markaby" ,ruby-markaby)
4051 ("ruby-sassc" ,ruby-sassc)))
4052 (synopsis "Generic interface to multiple Ruby template engines")
4053 (description
4054 "Tilt is a thin interface over a number of different Ruby template
4055engines in an attempt to make their usage as generic as possible.")
4056 (home-page "https://github.com/rtomayko/tilt/")
4057 (license license:expat)))
4058
1415792a
DT
4059(define-public ruby-thread-safe
4060 (package
4061 (name "ruby-thread-safe")
313dd5dd 4062 (version "0.3.6")
1415792a
DT
4063 (source
4064 (origin
4065 (method url-fetch)
4066 (uri (rubygems-uri "thread_safe" version))
4067 (sha256
4068 (base32
313dd5dd 4069 "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy"))))
1415792a
DT
4070 (build-system ruby-build-system)
4071 (arguments
4072 '(#:tests? #f)) ; needs simplecov, among others
4073 (synopsis "Thread-safe utilities for Ruby")
4074 (description "The thread_safe library provides thread-safe collections and
4075utilities for Ruby.")
4076 (home-page "https://github.com/ruby-concurrency/thread_safe")
4077 (license license:asl2.0)))
08a1b701
DT
4078
4079(define-public ruby-tzinfo
4080 (package
4081 (name "ruby-tzinfo")
4237af85 4082 (version "1.2.4")
08a1b701
DT
4083 (source
4084 (origin
4085 (method url-fetch)
4086 (uri (rubygems-uri "tzinfo" version))
4087 (sha256
4088 (base32
4237af85 4089 "09dpbrih054mn42flbbcdpzk2727mzfvjrgqb12zdafhx7p9rrzp"))))
08a1b701
DT
4090 (build-system ruby-build-system)
4091 (propagated-inputs
4092 `(("ruby-thread-safe" ,ruby-thread-safe)))
4093 (synopsis "Time zone library for Ruby")
4094 (description "TZInfo is a Ruby library that provides daylight savings
4095aware transformations between times in different time zones.")
2f3800e5 4096 (home-page "https://tzinfo.github.io")
1e12924a
BW
4097 (license license:expat)))
4098
4099(define-public ruby-tzinfo-data
4100 (package
4101 (name "ruby-tzinfo-data")
92513191 4102 (version "1.2017.3")
1e12924a
BW
4103 (source
4104 (origin
bb1e7ed0 4105 (method git-fetch)
1e12924a
BW
4106 ;; Download from GitHub because the rubygems version does not contain
4107 ;; Rakefile or tests.
bb1e7ed0
EF
4108 (uri (git-reference
4109 (url "https://github.com/tzinfo/tzinfo-data")
4110 (commit (string-append "v" version))))
4111 (file-name (git-file-name name version))
1e12924a
BW
4112 (sha256
4113 (base32
bb1e7ed0 4114 "0v3phl5l3jrm6waxcszqmj2dkjhqawxfsxb6mss7vkp1hlckqcdp"))
1e12924a
BW
4115 ;; Remove the known test failure.
4116 ;; https://github.com/tzinfo/tzinfo-data/issues/10
4117 ;; https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1587128
4118 (patches (search-patches
4119 "ruby-tzinfo-data-ignore-broken-test.patch"))))
4120 (build-system ruby-build-system)
4121 (propagated-inputs
4122 `(("ruby-tzinfo" ,ruby-tzinfo)))
4123 (synopsis "Data from the IANA Time Zone database")
4124 (description
4125 "This library provides @code{TZInfo::Data}, which contains data from the
4126IANA Time Zone database packaged as Ruby modules for use with @code{TZInfo}.")
2f3800e5 4127 (home-page "https://tzinfo.github.io")
08a1b701 4128 (license license:expat)))
c99e2247 4129
48e6851f
RW
4130(define-public ruby-rb-inotify
4131 (package
4132 (name "ruby-rb-inotify")
32bbfea8 4133 (version "0.9.10")
48e6851f
RW
4134 (source
4135 (origin
4136 (method url-fetch)
4137 (uri (rubygems-uri "rb-inotify" version))
4138 (sha256
4139 (base32
32bbfea8 4140 "0yfsgw5n7pkpyky6a9wkf1g9jafxb0ja7gz0qw0y14fd2jnzfh71"))))
48e6851f
RW
4141 (build-system ruby-build-system)
4142 (arguments
4143 '(#:tests? #f ; there are no tests
4144 #:phases
4145 (modify-phases %standard-phases
4146 ;; Building the gemspec with rake is not working here since it is
4147 ;; generated with Jeweler. It is also unnecessary because the
4148 ;; existing gemspec does not use any development tools to generate a
4149 ;; list of files.
4150 (replace 'build
4151 (lambda _
9923d5a4 4152 (invoke "gem" "build" "rb-inotify.gemspec"))))))
48e6851f
RW
4153 (propagated-inputs
4154 `(("ruby-ffi" ,ruby-ffi)))
4155 (native-inputs
4156 `(("ruby-yard" ,ruby-yard)))
4157 (synopsis "Ruby wrapper for Linux's inotify")
4158 (description "rb-inotify is a simple wrapper over the @code{inotify} Linux
4159kernel subsystem for monitoring changes to files and directories.")
4160 (home-page "https://github.com/nex3/rb-inotify")
4161 (license license:expat)))
4162
a75bdfce
RW
4163(define-public ruby-pry-editline
4164 (package
4165 (name "ruby-pry-editline")
4166 (version "1.1.2")
4167 (source (origin
4168 (method url-fetch)
4169 (uri (rubygems-uri "pry-editline" version))
4170 (sha256
4171 (base32
4172 "1pjxyvdxvw41xw3yyl18pwzix8hbvn6lgics7qcfhjfsf1zs8x1z"))))
4173 (build-system ruby-build-system)
4174 (arguments `(#:tests? #f)) ; no tests included
4175 (native-inputs
4176 `(("bundler" ,bundler)))
4177 (synopsis "Open the current REPL line in an editor")
4178 (description
4179 "This gem provides a plugin for the Ruby REPL to enable opening the
4180current line in an external editor.")
4181 (home-page "https://github.com/tpope/pry-editline")
4182 (license license:expat)))
4183
d3b20a02
RW
4184(define-public ruby-sdoc
4185 (package
4186 (name "ruby-sdoc")
fdf3a68d 4187 (version "0.4.2")
d3b20a02
RW
4188 (source (origin
4189 (method url-fetch)
4190 (uri (rubygems-uri "sdoc" version))
4191 (sha256
4192 (base32
fdf3a68d 4193 "0qhvy10vnmrqcgh8494m13kd5ag9c3sczzhfasv8j0294ylk679n"))))
d3b20a02
RW
4194 (build-system ruby-build-system)
4195 (arguments
4196 `(#:phases
4197 (modify-phases %standard-phases
fc29d5e6 4198 (add-before 'check 'set-rubylib-and-patch-gemfile
d3b20a02 4199 (lambda _
fdf3a68d 4200 (setenv "RUBYLIB" "lib")
fc29d5e6
BW
4201 (substitute* "sdoc.gemspec"
4202 (("s.add_runtime_dependency.*") "\n")
4203 (("s.add_dependency.*") "\n"))
4204 (substitute* "Gemfile"
4205 (("gem \"rake\".*")
4206 "gem 'rake'\ngem 'rdoc'\ngem 'json'\n"))
d3b20a02
RW
4207 #t)))))
4208 (propagated-inputs
4209 `(("ruby-json" ,ruby-json)))
4210 (native-inputs
4211 `(("bundler" ,bundler)
fdf3a68d
BW
4212 ("ruby-minitest" ,ruby-minitest)
4213 ("ruby-hoe" ,ruby-hoe)))
d3b20a02
RW
4214 (synopsis "Generate searchable RDoc documentation")
4215 (description
4216 "SDoc is an RDoc documentation generator to build searchable HTML
4217documentation for Ruby code.")
7bf837fd 4218 (home-page "https://github.com/voloko/sdoc")
d3b20a02
RW
4219 (license license:expat)))
4220
70b002aa
RW
4221(define-public ruby-tins
4222 (package
4223 (name "ruby-tins")
fbefd6ff 4224 (version "1.15.0")
70b002aa
RW
4225 (source (origin
4226 (method url-fetch)
4227 (uri (rubygems-uri "tins" version))
4228 (sha256
4229 (base32
fbefd6ff 4230 "09whix5a7ics6787zrkwjmp16kqyh6560p9f317syks785805f7s"))))
70b002aa
RW
4231 (build-system ruby-build-system)
4232 ;; This gem needs gem-hadar at development time, but gem-hadar needs tins
4233 ;; at runtime. To avoid the dependency on gem-hadar we disable rebuilding
4234 ;; the gemspec.
4235 (arguments
4236 `(#:tests? #f ; there are no tests
4237 #:phases
4238 (modify-phases %standard-phases
4239 (replace 'build
4240 (lambda _
4241 ;; "lib/spruz" is a symlink. Leaving it in the gemspec file
4242 ;; causes an error.
4243 (substitute* "tins.gemspec"
4244 (("\"lib/spruz\", ") ""))
9923d5a4 4245 (invoke "gem" "build" "tins.gemspec"))))))
70b002aa
RW
4246 (synopsis "Assorted tools for Ruby")
4247 (description "Tins is a Ruby library providing assorted tools.")
4248 (home-page "https://github.com/flori/tins")
4249 (license license:expat)))
4250
bc8277e4
RW
4251(define-public ruby-gem-hadar
4252 (package
4253 (name "ruby-gem-hadar")
3fd577e3 4254 (version "1.9.1")
bc8277e4
RW
4255 (source (origin
4256 (method url-fetch)
4257 (uri (rubygems-uri "gem_hadar" version))
4258 (sha256
4259 (base32
3fd577e3 4260 "1zxvd9l95rbks7x3cxn396w0sn7nha5542bf97v8akkn4vm7nby9"))))
bc8277e4
RW
4261 (build-system ruby-build-system)
4262 ;; This gem needs itself at development time. We disable rebuilding of the
4263 ;; gemspec to avoid this loop.
4264 (arguments
4265 `(#:tests? #f ; there are no tests
4266 #:phases
4267 (modify-phases %standard-phases
4268 (replace 'build
4269 (lambda _
9923d5a4 4270 (invoke "gem" "build" "gem_hadar.gemspec"))))))
bc8277e4
RW
4271 (propagated-inputs
4272 `(("git" ,git)
4273 ("ruby-tins" ,ruby-tins)
3fd577e3 4274 ("ruby-yard" ,ruby-yard)))
bc8277e4
RW
4275 (synopsis "Library for the development of Ruby gems")
4276 (description
4277 "This library contains some useful functionality to support the
4278development of Ruby gems.")
4279 (home-page "https://github.com/flori/gem_hadar")
4280 (license license:expat)))
4281
d8cafe29
RW
4282(define-public ruby-minitest-tu-shim
4283 (package
4284 (name "ruby-minitest-tu-shim")
4285 (version "1.3.3")
4286 (source (origin
4287 (method url-fetch)
4288 (uri (rubygems-uri "minitest_tu_shim" version))
4289 (sha256
4290 (base32
4291 "0xlyh94iirvssix157ng2akr9nqhdygdd0c6094hhv7dqcfrn9fn"))))
4292 (build-system ruby-build-system)
4293 (arguments
4294 `(#:phases
4295 (modify-phases %standard-phases
4296 (add-after 'unpack 'fix-test-include-path
4297 (lambda* (#:key inputs #:allow-other-keys)
3cb3fa67 4298 (let* ((minitest (assoc-ref inputs "ruby-minitest-4")))
761e7042
BW
4299 (substitute* "Rakefile"
4300 (("Hoe\\.add_include_dirs .*")
4301 (string-append "Hoe.add_include_dirs \""
3cb3fa67 4302 minitest "/lib/ruby/vendor_ruby"
761e7042
BW
4303 "/gems/minitest-"
4304 ,(package-version ruby-minitest-4)
4305 "/lib" "\""))))
4306 #t))
d8cafe29
RW
4307 (add-before 'check 'fix-test-assumptions
4308 (lambda _
4309 ;; The test output includes the file name, so a couple of tests
4310 ;; fail. Changing the regular expressions slightly fixes this
4311 ;; problem.
4312 (substitute* "test/test_mini_test.rb"
4313 (("output.sub!\\(.*, 'FILE:LINE'\\)")
4314 "output.sub!(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')")
4315 (("gsub\\(/.*, 'FILE:LINE'\\)")
4316 "gsub(/\\/.+-[\\w\\/\\.]+:\\d+/, 'FILE:LINE')"))
4317 #t)))))
4318 (propagated-inputs
4319 `(("ruby-minitest-4" ,ruby-minitest-4)))
4320 (native-inputs
4321 `(("ruby-hoe" ,ruby-hoe)))
4322 (synopsis "Adapter library between minitest and test/unit")
4323 (description
4324 "This library bridges the gap between the small and fast minitest and
4325Ruby's large and slower test/unit.")
4326 (home-page "https://rubygems.org/gems/minitest_tu_shim")
4327 (license license:expat)))
4328
fd83a212
RW
4329(define-public ruby-term-ansicolor
4330 (package
4331 (name "ruby-term-ansicolor")
f3a6311a 4332 (version "1.6.0")
fd83a212
RW
4333 (source (origin
4334 (method url-fetch)
4335 (uri (rubygems-uri "term-ansicolor" version))
4336 (sha256
4337 (base32
f3a6311a 4338 "1b1wq9ljh7v3qyxkk8vik2fqx2qzwh5lval5f92llmldkw7r7k7b"))))
fd83a212
RW
4339 (build-system ruby-build-system)
4340 ;; Rebuilding the gemspec seems to require git, even though this is not a
4341 ;; git repository, so we just build the gem from the existing gemspec.
4342 (arguments
4343 `(#:phases
4344 (modify-phases %standard-phases
39ecb977
CB
4345 (add-after 'unpack 'fix-test
4346 (lambda -
4347 (substitute* "tests/hsl_triple_test.rb"
4348 (("0\\\\\\.0%")
4349 "0\\.?0?%"))))
fd83a212
RW
4350 (replace 'build
4351 (lambda _
9923d5a4 4352 (invoke "gem" "build" "term-ansicolor.gemspec"))))))
fd83a212
RW
4353 (propagated-inputs
4354 `(("ruby-tins" ,ruby-tins)))
4355 (native-inputs
4356 `(("ruby-gem-hadar" ,ruby-gem-hadar)
4357 ("ruby-minitest-tu-shim" ,ruby-minitest-tu-shim)))
4358 (synopsis "Ruby library to control the attributes of terminal output")
4359 (description
4360 "This Ruby library uses ANSI escape sequences to control the attributes
4361of terminal output.")
2f3800e5 4362 (home-page "https://flori.github.io/term-ansicolor/")
fd83a212
RW
4363 ;; There is no mention of the "or later" clause.
4364 (license license:gpl2)))
4365
a714c30f
CB
4366(define-public ruby-terraform
4367 (package
4368 (name "ruby-terraform")
4369 (version "0.22.0")
4370 (source
4371 (origin
4372 (method url-fetch)
4373 (uri (rubygems-uri "ruby-terraform" version))
4374 (sha256
4375 (base32
4376 "13zjkp71cd19j2ds2h9rqwcfr1zdg5nsh63p89l6qcsc9z39z324"))))
4377 (build-system ruby-build-system)
4378 (arguments
4379 '(#:tests? #f)) ; No included tests
4380 (propagated-inputs
4381 `(("ruby-lino" ,ruby-lino)))
4382 (synopsis "Ruby wrapper around the Terraform command line interface")
4383 (description
4384 "This package provides a Ruby wrapper around the Terraform command line
4385interface so that Terraform can be more easily invoked from Ruby code.")
4386 (home-page "https://github.com/infrablocks/ruby_terraform")
4387 (license license:expat)))
4388
6e376ca4
RW
4389(define-public ruby-pstree
4390 (package
4391 (name "ruby-pstree")
4392 (version "0.1.0")
4393 (source (origin
4394 (method url-fetch)
4395 (uri (rubygems-uri "pstree" version))
4396 (sha256
4397 (base32
4398 "1mig1sv5qx1cdyhjaipy8jlh9j8pnja04vprrzihyfr54x0215p1"))))
4399 (build-system ruby-build-system)
4400 (native-inputs
4401 `(("ruby-gem-hadar" ,ruby-gem-hadar)
4402 ("bundler" ,bundler)))
4403 (synopsis "Create a process tree data structure")
4404 (description
4405 "This library uses the output of the @code{ps} command to create a
4406process tree data structure for the current host.")
2f3800e5 4407 (home-page "https://github.com/flori/pstree")
6e376ca4
RW
4408 ;; There is no mention of the "or later" clause.
4409 (license license:gpl2)))
4410
53239b5f
RW
4411(define-public ruby-utils
4412 (package
4413 (name "ruby-utils")
cd698b6e 4414 (version "0.9.0")
53239b5f
RW
4415 (source (origin
4416 (method url-fetch)
4417 (uri (rubygems-uri "utils" version))
4418 (sha256
4419 (base32
cd698b6e 4420 "196zhgcygrnx09bb9mh22qas03rl9avzx8qs0wnxznpin4pffwcl"))))
53239b5f
RW
4421 (build-system ruby-build-system)
4422 (propagated-inputs
4423 `(("ruby-tins" ,ruby-tins)
4424 ("ruby-term-ansicolor" ,ruby-term-ansicolor)
4425 ("ruby-pstree" ,ruby-pstree)
4426 ("ruby-pry-editline" ,ruby-pry-editline)))
4427 (native-inputs
4428 `(("ruby-gem-hadar" ,ruby-gem-hadar)
4429 ("bundler" ,bundler)))
4430 (synopsis "Command line tools for working with Ruby")
4431 (description
4432 "This package provides assorted command line tools that may be useful
4433when working with Ruby code.")
4434 (home-page "https://github.com/flori/utils")
4435 ;; There is no mention of the "or later" clause.
4436 (license license:gpl2)))
4437
433f10b5
CB
4438(define-public ruby-jaro-winkler
4439 (package
4440 (name "ruby-jaro-winkler")
37b23e44 4441 (version "1.5.4")
433f10b5
CB
4442 (source
4443 (origin
4444 (method url-fetch)
4445 (uri (rubygems-uri "jaro_winkler" version))
4446 (sha256
37b23e44 4447 (base32 "1y8l6k34svmdyqxya3iahpwbpvmn3fswhwsvrz0nk1wyb8yfihsh"))))
433f10b5
CB
4448 (build-system ruby-build-system)
4449 (arguments
37b23e44 4450 '(#:tests? #f)) ; no included tests
433f10b5
CB
4451 (synopsis "Ruby implementation of Jaro-Winkler distance algorithm")
4452 (description
4453 "@code{jaro_winkler} is an implementation of Jaro-Winkler distance
4454algorithm. It is written as a C extension and will fallback to a pure Ruby
4455implementation on platforms where this is unsupported.")
4456 (home-page "https://github.com/tonytonyjan/jaro_winkler")
4457 (license license:expat)))
4458
c99e2247
DT
4459(define-public ruby-json
4460 (package
4461 (name "ruby-json")
a281acce 4462 (version "2.1.0")
c99e2247
DT
4463 (source
4464 (origin
4465 (method url-fetch)
4466 (uri (rubygems-uri "json" version))
4467 (sha256
4468 (base32
a281acce 4469 "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp"))))
c99e2247
DT
4470 (build-system ruby-build-system)
4471 (arguments '(#:tests? #f)) ; dependency cycle with sdoc
4472 (synopsis "JSON library for Ruby")
4473 (description "This Ruby library provides a JSON implementation written as
4474a native C extension.")
4475 (home-page "http://json-jruby.rubyforge.org/")
4476 (license (list license:ruby license:gpl2)))) ; GPL2 only
5ff89a1b 4477
763624f5
RW
4478(define-public ruby-json-pure
4479 (package
4480 (name "ruby-json-pure")
ac01cb07 4481 (version "2.1.0")
763624f5
RW
4482 (source (origin
4483 (method url-fetch)
4484 (uri (rubygems-uri "json_pure" version))
4485 (sha256
4486 (base32
ac01cb07 4487 "12yf9fmhr4c2jm3xl20vf1qyz5i63vc8a6ngz9j0f86nqwhmi2as"))))
763624f5
RW
4488 (build-system ruby-build-system)
4489 (arguments
ac01cb07 4490 `(#:phases
763624f5 4491 (modify-phases %standard-phases
ac01cb07 4492 (add-after 'unpack 'fix-rakefile
763624f5 4493 (lambda _
ac01cb07
BW
4494 (substitute* "Rakefile"
4495 ;; Since this is not a git repository, do not call 'git'.
4496 (("`git ls-files`") "`find . -type f |sort`")
4497 ;; Loosen dependency constraint.
4498 (("'test-unit', '~> 2.0'") "'test-unit', '>= 2.0'"))
4499 #t))
4500 (add-after 'replace-git-ls-files 'regenerate-gemspec
4501 (lambda _
4502 ;; Regenerate gemspec so loosened dependency constraints are
4503 ;; propagated.
17cfb7ae
CB
4504 (invoke "rake" "gemspec")))
4505 (add-after 'regenerate-gemspec 'fix-json-java.gemspec
4506 (lambda _
4507 ;; This gemspec doesn't look to be generated by the above
4508 ;; command, so patch it separately.
4509 (substitute* "json-java.gemspec"
4510 (("%q<test-unit>\\.freeze, \\[\"~> 2\\.0\"\\]")
4511 "%q<test-unit>.freeze, [\">= 2.0\"]"))
4512 #t)))))
763624f5 4513 (native-inputs
ac01cb07 4514 `(("bundler" ,bundler)
0c9f73cd
TGR
4515 ("ragel" ,ragel)
4516 ("ruby-simplecov" ,ruby-simplecov)
4517 ("ruby-test-unit" ,ruby-test-unit)))
763624f5
RW
4518 (synopsis "JSON implementation in pure Ruby")
4519 (description
4520 "This package provides a JSON implementation written in pure Ruby.")
2f3800e5 4521 (home-page "https://flori.github.com/json")
763624f5
RW
4522 (license license:ruby)))
4523
2a8581ac
CB
4524(define-public ruby-jwt
4525 (package
4526 (name "ruby-jwt")
4527 (version "2.1.0")
4528 (source
4529 (origin
4530 (method url-fetch)
4531 (uri (rubygems-uri "jwt" version))
4532 (sha256
4533 (base32
4534 "1w0kaqrbl71cq9sbnixc20x5lqah3hs2i93xmhlfdg2y3by7yzky"))))
4535 (build-system ruby-build-system)
4536 (arguments
4537 '(#:test-target "test"
4538 #:phases
4539 (modify-phases %standard-phases
4540 (add-after 'unpack 'remove-unnecessary-dependencies
4541 (lambda _
4542 (substitute* "spec/spec_helper.rb"
4543 (("require 'simplecov.*") "\n")
4544 ;; Use [].each to disable running the SimpleCov configuration
4545 ;; block
4546 (("SimpleCov\\.configure") "[].each")
4547 (("require 'codeclimate-test-reporter'") "")
4548 (("require 'codacy-coverage'") "")
4549 (("Codacy::Reporter\\.start") ""))
4550 #t)))))
4551 (native-inputs
4552 `(("bundler" ,bundler)
4553 ("ruby-rspec" ,ruby-rspec)
4554 ("ruby-rbnacl" ,ruby-rbnacl)))
4555 (synopsis "Ruby implementation of the JSON Web Token standard")
4556 (description
4557 "This package provides a pure Ruby implementation of the RFC 7519 OAuth
4558@acronym{JWT, JSON Web Token} standard.")
4559 (home-page "https://github.com/jwt/ruby-jwt")
4560 (license license:expat)))
4561
16b324cd
RW
4562;; Even though this package only provides bindings for a Mac OSX API it is
4563;; required by "ruby-listen" at runtime.
4564(define-public ruby-rb-fsevent
4565 (package
4566 (name "ruby-rb-fsevent")
b0ef15ed 4567 (version "0.10.3")
16b324cd
RW
4568 (source (origin
4569 (method url-fetch)
4570 (uri (rubygems-uri "rb-fsevent" version))
4571 (sha256
4572 (base32
b0ef15ed 4573 "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8"))))
16b324cd
RW
4574 (build-system ruby-build-system)
4575 ;; Tests need "guard-rspec", which needs "guard". However, "guard" needs
4576 ;; "listen", which needs "rb-fsevent" at runtime.
4577 (arguments `(#:tests? #f))
4578 (synopsis "FSEvents API with signals catching")
4579 (description
4580 "This library provides Ruby bindings for the Mac OSX FSEvents API.")
4581 (home-page "https://rubygems.org/gems/rb-fsevent")
4582 (license license:expat)))
4583
b86be2ad
RW
4584(define-public ruby-listen
4585 (package
4586 (name "ruby-listen")
12341d34 4587 (version "3.2.0")
b86be2ad
RW
4588 (source
4589 (origin
35602819
CB
4590 ;; The gem does not include a Rakefile, so fetch from the Git
4591 ;; repository.
4592 (method git-fetch)
4593 (uri (git-reference
4594 (url "https://github.com/guard/listen.git")
4595 (commit (string-append "v" version))))
4596 (file-name (git-file-name name version))
b86be2ad
RW
4597 (sha256
4598 (base32
12341d34 4599 "1hkp1g6hk5clsmbd001gkc12ma6s459x820piajyasv61m87if24"))))
b86be2ad 4600 (build-system ruby-build-system)
35602819
CB
4601 (arguments
4602 `(#:test-target "spec"
4603 #:phases
4604 (modify-phases %standard-phases
4605 (add-after 'unpack 'fix-files-in-gemspec
4606 (lambda _
4607 (substitute* "listen.gemspec"
4608 (("`git ls-files -z`") "`find . -type f -printf '%P\\\\0' |sort -z`"))
4609 #t))
4610 (add-before 'check 'remove-unnecessary-dependencies'
4611 (lambda _
4612 (substitute* "Rakefile"
4613 ;; Rubocop is for code linting, and is unnecessary for running
4614 ;; the tests.
4615 ((".*rubocop.*") ""))
4616 #t)))))
4617 (native-inputs
4618 `(("bundler" ,bundler)
4619 ("ruby-rspec" ,ruby-rspec)))
4620 (inputs
4621 `(;; ruby-thor is used for the command line interface, and is referenced
4622 ;; in the wrapper, and therefore just needs to be an input.
4623 ("ruby-thor" ,ruby-thor)))
b86be2ad 4624 (propagated-inputs
35602819
CB
4625 `(("ruby-rb-fsevent" ,ruby-rb-fsevent)
4626 ("ruby-rb-inotify" ,ruby-rb-inotify)
4627 ("ruby-dep" ,ruby-dep)))
b86be2ad
RW
4628 (synopsis "Listen to file modifications")
4629 (description "The Listen gem listens to file modifications and notifies
4630you about the changes.")
4631 (home-page "https://github.com/guard/listen")
4632 (license license:expat)))
4633
8d3c5ff6
CB
4634(define-public ruby-loofah
4635 (package
4636 (name "ruby-loofah")
4637 (version "2.2.3")
4638 (source
4639 (origin
4640 (method url-fetch)
4641 (uri (rubygems-uri "loofah" version))
4642 (sha256
4643 (base32
4644 "1ccsid33xjajd0im2xv941aywi58z7ihwkvaf1w2bv89vn5bhsjg"))))
4645 (build-system ruby-build-system)
4646 (arguments
4647 '(#:phases
4648 (modify-phases %standard-phases
4649 (add-after 'unpack 'remove-unnecessary-dependencies
4650 (lambda _
4651 ;; concourse is a development tool which is unused, so remove it
4652 ;; so it's not required.
4653 (substitute* "Gemfile"
4654 ((".*\"concourse\".*") "\n"))
4655 (substitute* "Rakefile"
4656 (("require 'concourse'") "")
4657 (("Concourse\\.new.*") "\n"))
4658 #t)))))
4659 (native-inputs
4660 `(("ruby-hoe" ,ruby-hoe)
4661 ("ruby-rr" ,ruby-rr)))
4662 (propagated-inputs
4663 `(("ruby-nokogiri" ,ruby-nokogiri)
4664 ("ruby-crass" ,ruby-crass)))
4665 (synopsis "Ruby library for manipulating and transforming HTML/XML")
4666 (description
4667 "Loofah is a general library for manipulating and transforming HTML/XML
4668documents and fragments. It's built on top of Nokogiri and libxml2.")
4669 (home-page "https://github.com/flavorjones/loofah")
4670 (license license:expat)))
4671
5ff89a1b
DT
4672(define-public ruby-activesupport
4673 (package
4674 (name "ruby-activesupport")
bcf1fe5b 4675 (version "5.2.2.1")
5ff89a1b
DT
4676 (source
4677 (origin
4678 (method url-fetch)
4679 (uri (rubygems-uri "activesupport" version))
4680 (sha256
4681 (base32
bcf1fe5b 4682 "161bp4p01v1a1lvszrhd1a02zf9x1p1l1yhw79a3rix1kvzkkdqb"))))
5ff89a1b
DT
4683 (build-system ruby-build-system)
4684 (arguments
2af45e50
BW
4685 `(#:phases
4686 (modify-phases %standard-phases
4687 (replace 'check
4688 (lambda _
9923d5a4
TGR
4689 ;; There are no tests, instead attempt to load the library.
4690 (invoke "ruby" "-Ilib" "-r" "active_support"))))))
5ff89a1b 4691 (propagated-inputs
2af45e50
BW
4692 `(("ruby-concurrent" ,ruby-concurrent)
4693 ("ruby-i18n" ,ruby-i18n)
5ff89a1b 4694 ("ruby-minitest" ,ruby-minitest)
606ee9a1
BW
4695 ("ruby-tzinfo" ,ruby-tzinfo)
4696 ("ruby-tzinfo-data" ,ruby-tzinfo-data)))
5ff89a1b
DT
4697 (synopsis "Ruby on Rails utility library")
4698 (description "ActiveSupport is a toolkit of support libraries and Ruby
4699core extensions extracted from the Rails framework. It includes support for
4700multibyte strings, internationalization, time zones, and testing.")
4701 (home-page "http://www.rubyonrails.org")
4702 (license license:expat)))
f847ad7b 4703
3996f0aa
RW
4704(define-public ruby-crass
4705 (package
4706 (name "ruby-crass")
a0e0f9d7 4707 (version "1.0.4")
3996f0aa
RW
4708 (source (origin
4709 (method url-fetch)
4710 (uri (rubygems-uri "crass" version))
4711 (sha256
4712 (base32
a0e0f9d7 4713 "0bpxzy6gjw9ggjynlxschbfsgmx8lv3zw1azkjvnb8b9i895dqfi"))))
3996f0aa
RW
4714 (build-system ruby-build-system)
4715 (native-inputs
4716 `(("bundler" ,bundler)
4717 ("ruby-minitest" ,ruby-minitest)))
4718 (synopsis "Pure Ruby CSS parser")
4719 (description
4720 "Crass is a pure Ruby CSS parser based on the CSS Syntax Level 3 spec.")
4721 (home-page "https://github.com/rgrove/crass/")
4722 (license license:expat)))
4723
c2c4e5b2 4724(define-public ruby-nokogumbo
f1ae7c62
BW
4725 (let ((commit "fb51ff299a1c34346837580b6d1d9a60fadf5dbd"))
4726 (package
4727 (name "ruby-nokogumbo")
4728 (version (string-append "1.4.7-1." (string-take commit 8)))
4729 (source (origin
4730 ;; We use the git reference, because there's no Rakefile in the
4731 ;; published gem and the tarball on Github is outdated.
4732 (method git-fetch)
4733 (uri (git-reference
4734 (url "https://github.com/rubys/nokogumbo.git")
4735 (commit "d56f954d20a")))
4736 (file-name (string-append name "-" version "-checkout"))
4737 (sha256
4738 (base32
4739 "0bnppjy96xiadrsrc9dp8y6wvdwnkfa930n7acrp0mqm4qywl2wl"))))
4740 (build-system ruby-build-system)
4741 (arguments
4742 `(#:modules ((guix build ruby-build-system)
4743 (guix build utils)
4744 (ice-9 rdelim))
4745 #:phases
4746 (modify-phases %standard-phases
5c31e981 4747 (add-after 'unpack 'build-gemspec
f1ae7c62
BW
4748 (lambda _
4749 (substitute* "Rakefile"
4750 ;; Build Makefile even without a copy of gumbo-parser sources
4751 (("'gumbo-parser/src',") "")
4752 ;; We don't bundle gumbo-parser sources
4753 (("'gumbo-parser/src/\\*',") "")
4754 (("'gumbo-parser/visualc/include/\\*',") "")
4755 ;; The definition of SOURCES will be cut in gemspec, and
4756 ;; "FileList" will be undefined.
4757 (("SOURCES \\+ FileList\\[")
4758 "['ext/nokogumboc/extconf.rb', 'ext/nokogumboc/nokogumbo.c', "))
4759
4760 ;; Copy the Rakefile and cut out the gemspec.
4761 (copy-file "Rakefile" ".gemspec")
4762 (with-atomic-file-replacement ".gemspec"
4763 (lambda (in out)
4764 (let loop ((line (read-line in 'concat))
4765 (skipping? #t))
4766 (if (eof-object? line)
4767 #t
4768 (let ((skip-next? (if skipping?
4769 (not (string-prefix? "SPEC =" line))
4770 (string-prefix? "end" line))))
4771 (when (or (not skipping?)
4772 (and skipping? (not skip-next?)))
4773 (format #t "~a" line)
4774 (display line out))
4775 (loop (read-line in 'concat) skip-next?))))))
4776 #t)))))
4777 (inputs
4778 `(("gumbo-parser" ,gumbo-parser)))
4779 (propagated-inputs
4780 `(("ruby-nokogiri" ,ruby-nokogiri)))
4781 (synopsis "Ruby bindings to the Gumbo HTML5 parser")
4782 (description
4783 "Nokogumbo allows a Ruby program to invoke the Gumbo HTML5 parser and
c2c4e5b2 4784access the result as a Nokogiri parsed document.")
f1ae7c62
BW
4785 (home-page "https://github.com/rubys/nokogumbo/")
4786 (license license:asl2.0))))
c2c4e5b2 4787
d56ff88b
RW
4788(define-public ruby-sanitize
4789 (package
4790 (name "ruby-sanitize")
f812145e 4791 (version "4.6.3")
d56ff88b
RW
4792 (source (origin
4793 (method url-fetch)
4794 ;; The gem does not include the Rakefile, so we download the
4795 ;; release tarball from Github.
4796 (uri (string-append "https://github.com/rgrove/"
4797 "sanitize/archive/v" version ".tar.gz"))
4798 (file-name (string-append name "-" version ".tar.gz"))
4799 (sha256
4800 (base32
f812145e 4801 "1fmqppwif3cm8h79006jfzkdnlxxzlry9kzk03psk0d5xpg55ycc"))))
d56ff88b
RW
4802 (build-system ruby-build-system)
4803 (propagated-inputs
4804 `(("ruby-crass" ,ruby-crass)
4805 ("ruby-nokogiri" ,ruby-nokogiri)
4806 ("ruby-nokogumbo" ,ruby-nokogumbo)))
4807 (native-inputs
4808 `(("bundler" ,bundler)
4809 ("ruby-minitest" ,ruby-minitest)
4810 ("ruby-redcarpet" ,ruby-redcarpet)
4811 ("ruby-yard" ,ruby-yard)))
4812 (synopsis "Whitelist-based HTML and CSS sanitizer")
4813 (description
4814 "Sanitize is a whitelist-based HTML and CSS sanitizer. Given a list of
4815acceptable elements, attributes, and CSS properties, Sanitize will remove all
4816unacceptable HTML and/or CSS from a string.")
4817 (home-page "https://github.com/rgrove/sanitize/")
4818 (license license:expat)))
4819
ed4b6b18
BW
4820(define-public ruby-oj
4821 (package
4822 (name "ruby-oj")
4823 (version "3.6.7")
4824 (source
4825 (origin
b09ef660 4826 (method git-fetch)
ed4b6b18
BW
4827 ;; Version on rubygems.org does not contain Rakefile, so download from
4828 ;; GitHub instead.
b09ef660
EF
4829 (uri (git-reference
4830 (url "https://github.com/ohler55/oj")
4831 (commit (string-append "v" version))))
4832 (file-name (git-file-name name version))
ed4b6b18
BW
4833 (sha256
4834 (base32
b09ef660 4835 "1fqx58pwjiln7053lw2jy6ns4agcpxq2ac4f2fkd2ca3fxwpmh03"))))
ed4b6b18
BW
4836 (build-system ruby-build-system)
4837 (arguments
4838 '(#:test-target "test_all"
4839 #:phases
4840 (modify-phases %standard-phases
4841 (add-before 'check 'disable-bundler
4842 (lambda _
4843 (substitute* "Rakefile"
4844 (("Bundler\\.with_clean_env") "1.times")
4845 (("bundle exec ") "")))))))
4846 (native-inputs
4847 `(("bundler" ,bundler)
4848 ("ruby-rspec" ,ruby-rspec)
4849 ("ruby-rake-compiler" ,ruby-rake-compiler)))
4850 (synopsis "JSON parser for Ruby optimized for speed")
4851 (description
4852 "Oj is a JSON parser and generator for Ruby, where the encoding and
4853decoding of JSON is implemented as a C extension to Ruby.")
b09ef660 4854 (home-page "http://www.ohler.com/oj/")
ed4b6b18
BW
4855 (license (list license:expat ; Ruby code
4856 license:bsd-3)))) ; extension code
4857
f847ad7b
DT
4858(define-public ruby-ox
4859 (package
4860 (name "ruby-ox")
263c0dbf 4861 (version "2.6.0")
f847ad7b
DT
4862 (source
4863 (origin
4864 (method url-fetch)
4865 (uri (rubygems-uri "ox" version))
4866 (sha256
4867 (base32
263c0dbf 4868 "0fmk62b1h2i79dfzjj8wmf8qid1rv5nhwfc17l489ywnga91xl83"))))
f847ad7b
DT
4869 (build-system ruby-build-system)
4870 (arguments
4871 '(#:tests? #f)) ; no tests
4872 (synopsis "Optimized XML library for Ruby")
4873 (description
4874 "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
4875written as a native C extension. It was designed to be an alternative to
4876Nokogiri and other Ruby XML parsers for generic XML parsing and as an
4877alternative to Marshal for Object serialization. ")
4878 (home-page "http://www.ohler.com/ox")
4879 (license license:expat)))
4a9e0585 4880
0c4e7625
RW
4881(define-public ruby-redcloth
4882 (package
4883 (name "ruby-redcloth")
2a91494e 4884 (version "4.3.2")
0c4e7625
RW
4885 (source (origin
4886 (method url-fetch)
4887 (uri (rubygems-uri "RedCloth" version))
4888 (sha256
4889 (base32
2a91494e 4890 "0m9dv7ya9q93r8x1pg2gi15rxlbck8m178j1fz7r5v6wr1avrrqy"))))
0c4e7625
RW
4891 (build-system ruby-build-system)
4892 (arguments
4893 `(#:tests? #f ; no tests
4894 #:phases
4895 (modify-phases %standard-phases
4896 ;; Redcloth has complicated rake tasks to build various versions for
4897 ;; multiple targets using RVM. We don't want this so we just use the
4898 ;; existing gemspec.
4899 (replace 'build
4900 (lambda _
9923d5a4 4901 (invoke "gem" "build" "redcloth.gemspec"))))))
0c4e7625
RW
4902 (native-inputs
4903 `(("bundler" ,bundler)
4904 ("ruby-diff-lcs" ,ruby-diff-lcs)
4905 ("ruby-rspec-2" ,ruby-rspec-2)))
4906 (synopsis "Textile markup language parser for Ruby")
4907 (description
4908 "RedCloth is a Ruby parser for the Textile markup language.")
4909 (home-page "http://redcloth.org")
4910 (license license:expat)))
4911
4a9e0585
DT
4912(define-public ruby-pg
4913 (package
4914 (name "ruby-pg")
ffc4869e 4915 (version "1.1.4")
4a9e0585
DT
4916 (source
4917 (origin
4918 (method url-fetch)
4919 (uri (rubygems-uri "pg" version))
4920 (sha256
4921 (base32
ffc4869e 4922 "0fmnyxcyrvgdbgq7m09whgn9i8rwfybk0w8aii1nc4g5kqw0k2jy"))))
4a9e0585
DT
4923 (build-system ruby-build-system)
4924 (arguments
4925 '(#:test-target "spec"))
4926 (native-inputs
4927 `(("ruby-rake-compiler" ,ruby-rake-compiler)
4928 ("ruby-hoe" ,ruby-hoe)
4929 ("ruby-rspec" ,ruby-rspec)))
4930 (inputs
ffc4869e 4931 `(("postgresql" ,postgresql)))
4a9e0585
DT
4932 (synopsis "Ruby interface to PostgreSQL")
4933 (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
4db80f8b 4934with PostgreSQL 9.0 and later.")
4a9e0585
DT
4935 (home-page "https://bitbucket.org/ged/ruby-pg")
4936 (license license:ruby)))
468e5657
DT
4937
4938(define-public ruby-byebug
4939 (package
4940 (name "ruby-byebug")
d5489a61 4941 (version "9.0.6")
468e5657
DT
4942 (source
4943 (origin
4944 (method url-fetch)
4945 (uri (rubygems-uri "byebug" version))
4946 (sha256
4947 (base32
d5489a61 4948 "1kbfcn65rgdhi72n8x9l393b89rvi5z542459k7d1ggchpb0idb0"))))
468e5657
DT
4949 (build-system ruby-build-system)
4950 (arguments
4951 '(#:tests? #f)) ; no tests
4952 (synopsis "Debugger for Ruby 2")
4953 (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
4954TracePoint C API for execution control and the Debug Inspector C API for call
4955stack navigation. The core component provides support that front-ends can
4956build on. It provides breakpoint handling and bindings for stack frames among
4957other things and it comes with a command line interface.")
7bf837fd 4958 (home-page "https://github.com/deivid-rodriguez/byebug")
468e5657 4959 (license license:bsd-2)))
64b6ccc3 4960
5799bc2b
RW
4961(define-public ruby-netrc
4962 (package
4963 (name "ruby-netrc")
4964 (version "0.11.0")
4965 (source (origin
4966 (method url-fetch)
4967 (uri (rubygems-uri "netrc" version))
4968 (sha256
4969 (base32
4970 "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y"))))
4971 (build-system ruby-build-system)
4972 (arguments
4973 `(#:phases
4974 (modify-phases %standard-phases
4975 (replace 'check
4976 ;; There is no Rakefile and minitest can only run one file at once,
4977 ;; so we have to iterate over all test files.
4978 (lambda _
9923d5a4
TGR
4979 (map (lambda (file)
4980 (invoke "ruby" "-Itest" file))
4981 (find-files "./test" "test_.*\\.rb")))))))
5799bc2b
RW
4982 (native-inputs
4983 `(("ruby-minitest" ,ruby-minitest)))
4984 (synopsis "Library to read and update netrc files")
4985 (description
4986 "This library can read and update netrc files, preserving formatting
4987including comments and whitespace.")
4988 (home-page "https://github.com/geemus/netrc")
4989 (license license:expat)))
4990
3a6989ce
RW
4991(define-public ruby-unf-ext
4992 (package
4993 (name "ruby-unf-ext")
4994 (version "0.0.7.1")
4995 (source (origin
4996 (method url-fetch)
4997 (uri (rubygems-uri "unf_ext" version))
4998 (sha256
4999 (base32
5000 "0ly2ms6c3irmbr1575ldyh52bz2v0lzzr2gagf0p526k12ld2n5b"))))
5001 (build-system ruby-build-system)
b809cc9a
RW
5002 (arguments
5003 `(#:phases
5004 (modify-phases %standard-phases
5005 (add-after 'build 'build-ext
9923d5a4 5006 (lambda _ (invoke "rake" "compile:unf_ext"))))))
3a6989ce
RW
5007 (native-inputs
5008 `(("bundler" ,bundler)
5009 ("ruby-rake-compiler" ,ruby-rake-compiler)
5010 ("ruby-test-unit" ,ruby-test-unit)))
5011 (synopsis "Unicode normalization form support library")
5012 (description
5013 "This package provides unicode normalization form support for Ruby.")
5014 (home-page "https://github.com/knu/ruby-unf_ext")
5015 (license license:expat)))
5016
2632a067 5017(define-public ruby-tdiff
5071f17b
BW
5018 ;; Use a newer than released snapshot so that rspec-2 is not required.
5019 (let ((commit "b662a6048f08abc45c1a834e5f34dd1c662935e2"))
5020 (package
5021 (name "ruby-tdiff")
5022 (version (string-append "0.3.3-1." (string-take commit 8)))
5023 (source (origin
5024 (method git-fetch)
5025 (uri (git-reference
5026 (url "https://github.com/postmodern/tdiff.git")
5027 (commit commit)))
5028 (file-name (string-append name "-" version "-checkout"))
5029 (sha256
5030 (base32
5031 "0n3gq8rx49f7ln6zqlshqfg2mgqyy30rsdjlnki5mv307ykc7ad4"))))
5032 (build-system ruby-build-system)
5033 (native-inputs
5034 `(("ruby-rspec" ,ruby-rspec)
5035 ("ruby-yard" ,ruby-yard)
5036 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
5037 (synopsis "Calculate the differences between two tree-like structures")
5038 (description
5039 "This library provides functions to calculate the differences between two
2632a067 5040tree-like structures. It is similar to Ruby's built-in @code{TSort} module.")
5071f17b
BW
5041 (home-page "https://github.com/postmodern/tdiff")
5042 (license license:expat))))
2632a067 5043
f60f5002 5044(define-public ruby-nokogiri-diff
5b0c223a
BW
5045 ;; Use a newer than released snapshot so that rspec-2 is not required.
5046 (let ((commit "a38491e4d8709b7406f2cae11a50226d927d06f5"))
5047 (package
5048 (name "ruby-nokogiri-diff")
5049 (version (string-append "0.2.0-1." (string-take commit 8)))
5050 (source (origin
5051 (method git-fetch)
5052 (uri (git-reference
5053 (url "https://github.com/postmodern/nokogiri-diff.git")
5054 (commit commit)))
5055 (file-name (string-append name "-" version "-checkout"))
5056 (sha256
5057 (base32
5058 "1ah2sfjh9n1p0ln2wkqzfl448ml7j4zfy6dhp1qgzq2m41php6rf"))))
5059 (build-system ruby-build-system)
5060 (propagated-inputs
5061 `(("ruby-tdiff" ,ruby-tdiff)
5062 ("ruby-nokogiri" ,ruby-nokogiri)))
5063 (native-inputs
5064 `(("ruby-rspec" ,ruby-rspec)
5065 ("ruby-yard" ,ruby-yard)
5066 ("ruby-rubygems-tasks" ,ruby-rubygems-tasks)))
5067 (synopsis "Calculate the differences between two XML/HTML documents")
5068 (description
5069 "@code{Nokogiri::Diff} adds the ability to calculate the
f60f5002 5070differences (added or removed nodes) between two XML/HTML documents.")
5b0c223a
BW
5071 (home-page "https://github.com/postmodern/nokogiri-diff")
5072 (license license:expat))))
f60f5002 5073
6dc21310
CB
5074(define-public ruby-racc
5075 (package
5076 (name "ruby-racc")
5077 (version "1.4.14")
5078 (source
5079 (origin
5080 (method url-fetch)
5081 (uri (rubygems-uri "racc" version))
5082 (sha256
5083 (base32
5084 "00yhs2ag7yy5v83mqvkbnhk9bvsh6mx3808k53n61ddzx446v1zl"))))
5085 (build-system ruby-build-system)
5086 (native-inputs
5087 `(("ruby-hoe" ,ruby-hoe)
5088 ("ruby-rake-compiler" ,ruby-rake-compiler)))
5089 (synopsis "LALR(1) parser generator for Ruby")
5090 (description
5091 "Racc is a LALR(1) parser generator. It is written in Ruby itself, and
5092generates Ruby program.")
5093 (home-page "http://i.loveruby.net/en/projects/racc/")
5094 (license (list
5095 ;; Generally licensed under the LGPL2.1, and some files also
5096 ;; available under the same license as Ruby.
5097 license:lgpl2.1
5098 license:ruby))))
5099
64b6ccc3
DT
5100(define-public ruby-rack
5101 (package
5102 (name "ruby-rack")
288d2480 5103 (version "2.0.6")
64b6ccc3
DT
5104 (source
5105 (origin
83870c32 5106 (method git-fetch)
1db791d5 5107 ;; Download from GitHub so that the patch can be applied.
83870c32
EF
5108 (uri (git-reference
5109 (url "https://github.com/rack/rack")
5110 (commit version)))
5111 (file-name (git-file-name name version))
64b6ccc3
DT
5112 (sha256
5113 (base32
83870c32 5114 "1n7z4g1x6yxip096cdc04wq7yk7ywpinq28g2xjb46r4nlv5h0j6"))
1db791d5
BW
5115 ;; Ignore test which fails inside the build environment but works
5116 ;; outside.
5117 (patches (search-patches "ruby-rack-ignore-failing-test.patch"))))
64b6ccc3
DT
5118 (build-system ruby-build-system)
5119 (arguments
5120 '(#:phases
5121 (modify-phases %standard-phases
5122 (add-before 'check 'fix-tests
5123 (lambda _
5124 ;; A few of the tests use the length of a file on disk for
5125 ;; Content-Length and Content-Range headers. However, this file
5126 ;; has a shebang in it which an earlier phase patches, growing
5127 ;; the file size from 193 to 239 bytes when the store prefix is
5128 ;; "/gnu/store".
5129 (let ((size-diff (- (string-length (which "ruby"))
5130 (string-length "/usr/bin/env ruby"))))
5131 (substitute* '("test/spec_file.rb")
5132 (("193")
5133 (number->string (+ 193 size-diff)))
5134 (("bytes(.)22-33" all delimiter)
5135 (string-append "bytes"
5136 delimiter
5137 (number->string (+ 22 size-diff))
5138 "-"
5139 (number->string (+ 33 size-diff))))))
83870c32
EF
5140 #t))
5141 (add-before 'reset-gzip-timestamps 'make-files-writable
5142 (lambda* (#:key outputs #:allow-other-keys)
5143 ;; Make sure .gz files are writable so that the
5144 ;; 'reset-gzip-timestamps' phase can do its work.
5145 (let ((out (assoc-ref outputs "out")))
5146 (for-each make-file-writable
5147 (find-files out "\\.gz$"))
5148 #t))))))
64b6ccc3 5149 (native-inputs
1db791d5
BW
5150 `(("ruby-minitest" ,ruby-minitest)
5151 ("ruby-minitest-sprint" ,ruby-minitest-sprint)
5152 ("which" ,which)))
5153 (propagated-inputs
5154 `(("ruby-concurrent" ,ruby-concurrent)))
64b6ccc3
DT
5155 (synopsis "Unified web application interface for Ruby")
5156 (description "Rack provides a minimal, modular and adaptable interface for
5157developing web applications in Ruby. By wrapping HTTP requests and responses,
5158it unifies the API for web servers, web frameworks, and software in between
5159into a single method call.")
2f3800e5 5160 (home-page "https://rack.github.io/")
64b6ccc3 5161 (license license:expat)))
62e4cc5a 5162
20a0f804
BW
5163(define-public ruby-rack-test
5164 (package
5165 (name "ruby-rack-test")
5166 (version "0.8.3")
5167 (source
5168 (origin
5169 (method url-fetch)
5170 (uri (rubygems-uri "rack-test" version))
5171 (sha256
5172 (base32
5173 "14ij39zywvr1i9f6jsixfg4zxi2q1m1n1nydvf47f0b6sfc9mv1g"))))
5174 (build-system ruby-build-system)
5175 (arguments
5176 ;; Disable tests because of circular dependencies: requires sinatra,
5177 ;; which requires rack-protection, which requires rack-test. Instead
5178 ;; simply require the library.
5179 `(#:phases
5180 (modify-phases %standard-phases
5181 (replace 'check
5182 (lambda _
5183 (invoke "ruby" "-Ilib" "-r" "rack/test"))))))
5184 (propagated-inputs
5185 `(("ruby-rack" ,ruby-rack)))
5186 (synopsis "Testing API for Rack applications")
5187 (description
5188 "Rack::Test is a small, simple testing API for Rack applications. It can
5189be used on its own or as a reusable starting point for Web frameworks and
5190testing libraries to build on.")
5191 (home-page "https://github.com/rack-test/rack-test")
5192 (license license:expat)))
5193
a0a7e690
BW
5194(define-public ruby-rack-protection
5195 (package
5196 (name "ruby-rack-protection")
3355e49c 5197 (version "2.0.5")
a0a7e690
BW
5198 (source
5199 (origin
5200 (method url-fetch)
5201 (uri (rubygems-uri "rack-protection" version))
5202 (sha256
5203 (base32
3355e49c 5204 "15167q25rmxipqwi6hjqj3i1byi9iwl3xq9b7mdar7qiz39pmjsk"))))
a0a7e690
BW
5205 (build-system ruby-build-system)
5206 (arguments
fafeeaa2 5207 '(;; Tests missing from the gem.
a0a7e690
BW
5208 #:tests? #f))
5209 (propagated-inputs
5210 `(("ruby-rack" ,ruby-rack)))
5211 (native-inputs
5212 `(("bundler" ,bundler)
5213 ("ruby-rspec" ,ruby-rspec-2)
5214 ("ruby-rack-test" ,ruby-rack-test)))
5215 (synopsis "Rack middleware that protects against typical web attacks")
5216 (description "Rack middleware that can be used to protect against typical
5217web attacks. It can protect all Rack apps, including Rails. For instance, it
5218protects against cross site request forgery, cross site scripting,
5219clickjacking, directory traversal, session hijacking and IP spoofing.")
5220 (home-page "https://github.com/sinatra/sinatra/tree/master/rack-protection")
5221 (license license:expat)))
5222
6edabcb2
CB
5223(define-public ruby-rainbow
5224 (package
5225 (name "ruby-rainbow")
5226 (version "3.0.0")
5227 (source
5228 (origin
5229 (method url-fetch)
5230 (uri (rubygems-uri "rainbow" version))
5231 (sha256
5232 (base32
5233 "0bb2fpjspydr6x0s8pn1pqkzmxszvkfapv0p4627mywl7ky4zkhk"))))
5234 (build-system ruby-build-system)
5235 (arguments
5236 '(#:phases
5237 (modify-phases %standard-phases
5238 ;; Run rspec directly, to avoid requiring Rubocop which is used from
5239 ;; the Rakefile.
5240 (replace 'check
5241 (lambda* (#:key tests? #:allow-other-keys)
5242 (when tests?
5243 (invoke "rspec"))
5244 #t)))))
5245 (native-inputs
5246 `(("bundler" ,bundler)
5247 ("ruby-rspec" ,ruby-rspec)))
5248 (synopsis "Colorize printed text on ANSI terminals")
5249 (description
5250 "@code{rainbow} provides a string presenter object to colorize strings by
5251wrapping them in ANSI escape codes.")
5252 (home-page "https://github.com/sickill/rainbow")
79193b20
CB
5253 (license license:expat)))
5254
6188d643
CB
5255(define-public ruby-rr
5256 (package
5257 (name "ruby-rr")
5258 (version "1.2.1")
5259 (source
5260 (origin
5261 (method url-fetch)
5262 (uri (rubygems-uri "rr" version))
5263 (sha256
5264 (base32
5265 "1n9g78ba4c2zzmz8cdb97c38h1xm0clircag00vbcxwqs4dq0ymp"))))
5266 (build-system ruby-build-system)
5267 (arguments
5268 '(#:tests? #f)) ; test files not included
5269 (native-inputs
5270 `(("bundler" ,bundler)
5271 ("ruby-rspec" ,ruby-rspec)))
5272 (synopsis "Ruby test double framework")
5273 (description
5274 "RR is a test double framework that features a rich selection of double
5275techniques and a terse syntax.")
5276 (home-page "https://rr.github.io/rr/")
5277 (license license:expat)))
5278
79193b20
CB
5279(define-public ruby-rest-client
5280 (package
5281 (name "ruby-rest-client")
5282 (version "2.0.2")
5283 (source
5284 (origin
5285 (method url-fetch)
5286 (uri (rubygems-uri "rest-client" version))
5287 (sha256
5288 (base32
5289 "1hzcs2r7b5bjkf2x2z3n8z6082maz0j8vqjiciwgg3hzb63f958j"))))
5290 (build-system ruby-build-system)
5291 (arguments
5292 '(#:phases
5293 (modify-phases %standard-phases
5294 (add-before 'check 'remove-unnecessary-development-dependencies
5295 (lambda _
5296 (substitute* "rest-client.gemspec"
5297 ;; Remove rubocop as it's unused. Rubocop also indirectly
5298 ;; depends on this package through ruby-parser and ruby-ast so
5299 ;; this avoids a dependency loop.
5300 ((".*rubocop.*") "\n")
5301 ;; Remove pry as it's unused, it's a debugging tool
5302 ((".*pry.*") "\n")
5303 ;; Remove an unnecessarily strict rdoc dependency
5304 ((".*rdoc.*") "\n"))
5305 #t))
5306 (add-before 'check 'delete-network-dependent-tests
5307 (lambda _
5308 (delete-file "spec/integration/request_spec.rb")
5309 (delete-file "spec/integration/httpbin_spec.rb")
5310 #t)))))
5311 (propagated-inputs
5312 `(("ruby-http-cookie" ,ruby-http-cookie)
5313 ("ruby-mime-types" ,ruby-mime-types)
5314 ("ruby-netrc" ,ruby-netrc)))
5315 (native-inputs
5316 `(("bundler" ,bundler)
eea094cc
TGR
5317 ("ruby-webmock" ,ruby-webmock-2)
5318 ("ruby-rspec" ,ruby-rspec)))
79193b20
CB
5319 (synopsis "Simple HTTP and REST client for Ruby")
5320 (description
5321 "@code{rest-client} provides a simple HTTP and REST client for Ruby,
5322inspired by the Sinatra microframework style of specifying actions:
5323@code{get}, @code{put}, @code{post}, @code{delete}.")
5324 (home-page "https://github.com/rest-client/rest-client")
6edabcb2
CB
5325 (license license:expat)))
5326
5d8fe6de
CB
5327(define-public ruby-rubocop
5328 (package
5329 (name "ruby-rubocop")
865ba3f4 5330 (version "0.77.0")
5d8fe6de
CB
5331 (source
5332 (origin
5333 (method url-fetch)
5334 (uri (rubygems-uri "rubocop" version))
5335 (sha256
5336 (base32
865ba3f4 5337 "0m88b1bgbhmmbdnz2xv6n0il0j4q5qm9jbc0vf1zsaxmxqp06nx9"))))
5d8fe6de
CB
5338 (build-system ruby-build-system)
5339 (arguments
5340 '(;; No included tests
5341 #:tests? #f))
5342 (propagated-inputs
5343 `(("ruby-parser" ,ruby-parser)
5344 ("ruby-powerpack" ,ruby-powerpack)
5345 ("ruby-rainbow" ,ruby-rainbow)
5346 ("ruby-progressbar" ,ruby-progressbar)
5347 ("ruby-parallel" ,ruby-parallel)
5348 ("ruby-jaro-winkler" ,ruby-jaro-winkler)
5349 ("ruby-unicode-display-width" ,ruby-unicode-display-width)))
5350 (synopsis "Ruby code style checking tool")
5351 (description
5352 "@code{rubocop} is a Ruby code style checking tool. It aims to enforce
5353the community-driven Ruby Style Guide.")
5354 (home-page "https://github.com/rubocop-hq/rubocop")
5355 (license license:expat)))
5356
6ef85256
BW
5357(define-public ruby-contest
5358 (package
5359 (name "ruby-contest")
5360 (version "0.1.3")
5361 (source
5362 (origin
5363 (method url-fetch)
5364 (uri (rubygems-uri "contest" version))
5365 (sha256
5366 (base32
5367 "1p9f2292b7b0fbrcjswvj9v01z7ig5ig52328wyqcabgb553qsdf"))))
5368 (build-system ruby-build-system)
5369 (synopsis "Write declarative tests using nested contexts")
5370 (description
5371 "Contest allows writing declarative @code{Test::Unit} tests using nested
5372contexts without performance penalties.")
5373 (home-page "https://github.com/citrusbyte/contest")
5374 (license license:expat)))
5375
c4550f75
BW
5376(define-public ruby-creole
5377 (package
5378 (name "ruby-creole")
5379 (version "0.5.0")
5380 (source
5381 (origin
5382 (method url-fetch)
5383 (uri (rubygems-uri "creole" version))
5384 (sha256
5385 (base32
5386 "00rcscz16idp6dx0dk5yi5i0fz593i3r6anbn5bg2q07v3i025wm"))))
5387 (build-system ruby-build-system)
5388 (native-inputs
5389 `(("ruby-bacon" ,ruby-bacon)))
5390 (synopsis "Creole markup language converter")
5391 (description
5392 "Creole is a lightweight markup language and this library for converting
5393creole to @code{HTML}.")
5394 (home-page "https://github.com/minad/creole")
5395 (license license:ruby)))
5396
6aaa815e
PP
5397(define-public ruby-docile
5398 (package
5399 (name "ruby-docile")
5400 (version "1.1.5")
5401 (source
5402 (origin
5403 (method url-fetch)
5404 (uri (rubygems-uri "docile" version))
5405 (sha256
5406 (base32
5407 "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx"))))
5408 (build-system ruby-build-system)
5409 (arguments
5410 '(#:tests? #f)) ; needs github-markup, among others
5411 (synopsis "Ruby EDSL helper library")
5412 (description "Docile is a Ruby library that provides an interface for
5413creating embedded domain specific languages (EDSLs) that manipulate existing
5414Ruby classes.")
5415 (home-page "https://ms-ati.github.io/docile/")
5416 (license license:expat)))
5417
44514637 5418(define-public ruby-gherkin
62e4cc5a 5419 (package
44514637 5420 (name "ruby-gherkin")
aada5f6f 5421 (version "5.1.0")
62e4cc5a
PP
5422 (source
5423 (origin
5424 (method url-fetch)
44514637 5425 (uri (rubygems-uri "gherkin" version))
62e4cc5a
PP
5426 (sha256
5427 (base32
aada5f6f 5428 "1cgcdchwwdm10rsk44frjwqd4ihprhxjbm799nscqy2q1raqfj5s"))))
62e4cc5a
PP
5429 (build-system ruby-build-system)
5430 (native-inputs
5431 `(("bundler" ,bundler)))
5432 (arguments
5433 '(#:tests? #f)) ; needs simplecov, among others
5434 (synopsis "Gherkin parser for Ruby")
44514637 5435 (description "Gherkin is a parser and compiler for the Gherkin language.
aada5f6f
CB
5436It is intended be used by all Cucumber implementations to parse
5437@file{.feature} files.")
5438 (home-page "https://github.com/cucumber-attic/gherkin")
62e4cc5a 5439 (license license:expat)))
cd89fecb 5440
15b16c2c
CB
5441(define-public ruby-aruba
5442 (package
5443 (name "ruby-aruba")
cf7201c4 5444 (version "0.14.14")
15b16c2c
CB
5445 (source
5446 (origin
5447 (method url-fetch)
5448 (uri (rubygems-uri "aruba" version))
5449 (sha256
5450 (base32
cf7201c4 5451 "0l2mfpdxc03gdrbwc2hv4vdhjhqhfcdp6d02j05j64ncpi9srlqn"))))
15b16c2c
CB
5452 (build-system ruby-build-system)
5453 (arguments
5454 '(#:test-target "spec"
5455 #:phases
5456 (modify-phases %standard-phases
5457 (add-after 'unpack 'patch
5458 (lambda _
5459 (substitute* "spec/aruba/api_spec.rb"
5460 ;; This resolves some errors in the specs
5461 ;;
5462 ;; undefined method `parse' for Time:Class
5463 (("require 'spec_helper'")
5464 "require 'spec_helper'\nrequire 'time'"))
5465 ;; Avoid shebang issues in this spec file
5466 (substitute* "spec/aruba/matchers/command_spec.rb"
5467 (("/usr/bin/env bash")
5468 (which "bash")))
5469 #t))
5470 (add-before 'check 'remove-unnecessary-dependencies
5471 (lambda _
5472 (substitute* "Gemfile"
5473 ((".*byebug.*") "\n")
5474 ((".*pry.*") "\n")
5475 ((".*yaml.*") "\n")
5476 ((".*bcat.*") "\n")
5477 ((".*kramdown.*") "\n")
5478 ((".*rubocop.*") "\n")
5479 ((".*cucumber-pro.*") "\n")
5480 ((".*cucumber.*") "\n")
5481 ((".*license_finder.*") "\n")
5482 ((".*rake.*") "gem 'rake'\n")
15b16c2c 5483 ((".*relish.*") "\n"))
15b16c2c
CB
5484 (substitute* "aruba.gemspec"
5485 (("spec\\.add\\_runtime\\_dependency 'cucumber'.*")
5486 "spec.add_runtime_dependency 'cucumber'"))
5487 #t))
5488 (add-before 'check 'set-home
5489 (lambda _ (setenv "HOME" "/tmp") #t)))))
5490 (native-inputs
5491 `(("bundler" ,bundler)
5492 ("ruby-rspec" ,ruby-rspec)
cf7201c4
CB
5493 ("ruby-fuubar" ,ruby-fuubar)
5494 ("ruby-simplecov" ,ruby-simplecov)))
15b16c2c
CB
5495 (propagated-inputs
5496 `(("ruby-childprocess" ,ruby-childprocess)
5497 ("ruby-contracts" ,ruby-contracts)
5498 ("ruby-cucumber" ,ruby-cucumber)
5499 ("ruby-ffi" ,ruby-ffi)
5500 ("ruby-rspec-expectations" ,ruby-rspec-expectations)
5501 ("ruby-thor" ,ruby-thor)
5502 ("ruby-yard" ,ruby-yard)))
5503 (synopsis "Test command-line applications with Cucumber, RSpec or Minitest")
5504 (description
5505 "Aruba is an extension for Cucumber, RSpec and Minitest for testing
5506command-line applications. It supports applications written in any
5507language.")
5508 (home-page "https://github.com/cucumber/aruba")
5509 (license license:expat)))
5510
5511;; A version of ruby-aruba without tests run so that circular dependencies can
5512;; be avoided.
5513(define ruby-aruba-without-tests
5514 (package
5515 (inherit ruby-aruba)
5516 (arguments '(#:tests? #f))
5517 (propagated-inputs
5518 `(("ruby-cucumber" ,ruby-cucumber-without-tests)
5519 ,@(alist-delete "ruby-cucumber"
5520 (package-propagated-inputs ruby-aruba))))
5521 (native-inputs '())))
5522
5523(define-public ruby-cucumber
5524 (package
5525 (name "ruby-cucumber")
5526 (version "3.1.2")
5527 (source
5528 (origin
5529 (method git-fetch)
5530 (uri (git-reference
5531 (url "https://github.com/cucumber/cucumber-ruby.git")
5532 (commit (string-append "v" version))))
5533 (file-name (git-file-name name version))
5534 (sha256
5535 (base32
5536 "0764wp2cjg60qa3l69q1dxda5g06a01n5w92szqbf89d2hgl47n3"))))
5537 (build-system ruby-build-system)
5538 (arguments
5539 '(#:test-target "spec"
5540 #:phases
5541 (modify-phases %standard-phases
5542 ;; Don't run or require rubocop, the code linting tool, as this is a
5543 ;; bit unnecessary.
5544 (add-after 'unpack 'dont-run-rubocop
5545 (lambda _
5546 (substitute* "Rakefile"
5547 ((".*rubocop/rake\\_task.*") "")
5548 ((".*RuboCop.*") ""))
5549 #t)))))
5550 (propagated-inputs
5551 `(("ruby-builder" ,ruby-builder)
5552 ("ruby-cucumber-core" ,ruby-cucumber-core)
5553 ("ruby-cucumber-wire" ,ruby-cucumber-wire)
5554 ("ruby-cucumber-expressions" ,ruby-cucumber-expressions)
5555 ("ruby-diff-lcs" ,ruby-diff-lcs)
5556 ("ruby-gherkin" ,ruby-gherkin)
5557 ("ruby-multi-json" ,ruby-multi-json)
5558 ("ruby-multi-test" ,ruby-multi-test)))
5559 (native-inputs
5560 `(("bundler" ,bundler)
5561 ;; Use a untested version of aruba, to avoid a circular dependency, as
5562 ;; ruby-aruba depends on ruby-cucumber.
5563 ("ruby-aruba", ruby-aruba-without-tests)
5564 ("ruby-rspec" ,ruby-rspec)
5565 ("ruby-pry" ,ruby-pry)
5566 ("ruby-nokogiri" ,ruby-nokogiri)))
5567 (synopsis "Describe automated tests in plain language")
5568 (description
5569 "Cucumber is a tool for running automated tests written in plain
5570language. It's designed to support a Behaviour Driven Development (BDD)
5571software development workflow.")
5572 (home-page "https://cucumber.io/")
5573 (license license:expat)))
5574
5575(define ruby-cucumber-without-tests
5576 (package (inherit ruby-cucumber)
5577 (arguments
5578 '(#:tests? #f))
5579 (native-inputs
5580 '())))
5581
cd89fecb
PP
5582(define-public ruby-cucumber-core
5583 (package
5584 (name "ruby-cucumber-core")
5cd047e8
CB
5585 ;; Stick to major version 3, until version 4 of Cucumber is released.
5586 (version "3.2.1")
cd89fecb
PP
5587 (source
5588 (origin
5589 (method url-fetch)
5590 (uri (rubygems-uri "cucumber-core" version))
5591 (sha256
5592 (base32
5cd047e8 5593 "1iavlh8hqj9lwljbpkw06259gdicbr1bdb6pbj5yy3n8szgr8k3c"))))
cd89fecb
PP
5594 (build-system ruby-build-system)
5595 (propagated-inputs
5cd047e8
CB
5596 `(("ruby-backports" ,ruby-backports)
5597 ("ruby-gherkin" ,ruby-gherkin)
5598 ("ruby-cucumber-tag-expressions" ,ruby-cucumber-tag-expressions)))
cd89fecb
PP
5599 (native-inputs
5600 `(("bundler" ,bundler)))
5601 (arguments
5602 '(#:tests? #f)) ; needs simplecov, among others
5603 (synopsis "Core library for the Cucumber BDD app")
5604 (description "Cucumber is a tool for running automated tests
5605written in plain language. Because they're written in plain language,
5606they can be read by anyone on your team. Because they can be read by
5607anyone, you can use them to help improve communication, collaboration
5608and trust on your team.")
5609 (home-page "https://cucumber.io/")
5610 (license license:expat)))
212d563d 5611
fb1a8954
CB
5612(define-public ruby-cucumber-expressions
5613 (package
5614 (name "ruby-cucumber-expressions")
5615 (version "6.0.1")
5616 (source
5617 (origin
5618 (method url-fetch)
5619 (uri (rubygems-uri "cucumber-expressions" version))
5620 (sha256
5621 (base32
5622 "0zwmv6hznyz9vk81f5dhwcr9jhxx2vmbk8yyazayvllvhy0fkpdw"))))
5623 (build-system ruby-build-system)
5624 (arguments
5625 '(#:test-target "spec"))
5626 (native-inputs
5627 `(("bundler" ,bundler)
5628 ("ruby-rspec" ,ruby-rspec)
5629 ("ruby-simplecov" ,ruby-simplecov)))
5630 (synopsis "Simpler alternative to Regular Expressions")
5631 (description "Cucumber Expressions offer similar functionality to Regular
5632Expressions, with a syntax that is easier to read and write. Cucumber
5633Expressions are extensible with parameter types.")
5634 (home-page "https://github.com/cucumber/cucumber-expressions-ruby")
5635 (license license:expat)))
5636
ce872770
CB
5637(define-public ruby-cucumber-wire
5638 (package
5639 (name "ruby-cucumber-wire")
5640 ;; Package version 0.0.1 initially, as this is what's needed by Cucumber
5641 ;; 3, and Cucumber 4 hasn't been released yet.
5642 (version "0.0.1")
5643 (source
5644 (origin
5645 (method url-fetch)
5646 (uri (rubygems-uri "cucumber-wire" version))
5647 (sha256
5648 (base32
5649 "09ymvqb0sbw2if1nxg8rcj33sf0va88ancq5nmp8g01dfwzwma2f"))))
5650 (build-system ruby-build-system)
5651 (arguments
5652 '(;; TODO: Currently, the tests can't be run as cucumber is required,
5653 ;; which would lead to a circular dependency.
5654 #:tests? #f
5655 #:test-target "default"
5656 #:phases
5657 (modify-phases %standard-phases
5658 (add-before 'check 'set-CUCUMBER_USE_RELEASED_GEMS
5659 (lambda _
5660 (setenv "CUCUMBER_USE_RELEASED_GEMS" "true")
5661 #t)))))
5662 (native-inputs
5663 `(("bundler" ,bundler)
5664 ("ruby-rspec" ,ruby-rspec)))
5665 (synopsis "Cucumber wire protocol plugin")
5666 (description
5667 "Cucumber's wire protocol allows step definitions to be implemented and
5668invoked on any platform.")
5669 (home-page "https://github.com/cucumber/cucumber-ruby-wire")
5670 (license license:expat)))
5671
0ce8f344
CB
5672(define-public ruby-cucumber-tag-expressions
5673 (package
5674 (name "ruby-cucumber-tag-expressions")
5675 (version "1.1.1")
5676 (source
5677 (origin
5678 (method url-fetch)
5679 (uri (rubygems-uri "cucumber-tag_expressions" version))
5680 (sha256
5681 (base32
5682 "0cvmbljybws0qzjs1l67fvr9gqr005l8jk1ni5gcsis9pfmqh3vc"))))
5683 (build-system ruby-build-system)
5684 (arguments
5685 '(#:phases
5686 (modify-phases %standard-phases
5687 (replace 'check
5688 (lambda _
5689 (invoke "rspec")
5690 #t)))))
5691 (native-inputs
5692 `(("ruby-rspec" ,ruby-rspec)))
5693 (synopsis "Cucumber tag expressions for Ruby")
5694 (description
5695 "Cucumber tag expression parser for Ruby. A tag expression is an infix
5696boolean expression used by Cucumber.")
5697 (home-page "https://github.com/cucumber/tag-expressions-ruby")
5698 (license license:expat)))
5699
73a5aff7
CB
5700(define-public ruby-bindex
5701 (package
5702 (name "ruby-bindex")
5703 (version "0.5.0")
5704 (source
5705 (origin
5706 (method url-fetch)
5707 (uri (rubygems-uri "bindex" version))
5708 (sha256
5709 (base32
5710 "1wvhf4v8sk5x8li03pcc0v0wglmyv7ikvvg05bnms83dfy7s4k8i"))))
5711 (build-system ruby-build-system)
5712 (arguments
5713 '(#:test-target "default"))
5714 (native-inputs
5715 `(("bundler" ,bundler)
5716 ("ruby-rake-compiler" ,ruby-rake-compiler)))
5717 (synopsis "Provides access for bindings relating to Ruby exceptions")
5718 (description
5719 "@code{bindex} provides a way to access the bindings that relate to
5720exceptions in Ruby, providing more information about the context in which the
5721exception occurred.")
5722 (home-page "https://github.com/gsamokovarov/bindex")
5723 (license license:expat)))
5724
212d563d
PP
5725(define-public ruby-bio-logger
5726 (package
5727 (name "ruby-bio-logger")
5728 (version "1.0.1")
5729 (source
5730 (origin
5731 (method url-fetch)
5732 (uri (rubygems-uri "bio-logger" version))
5733 (sha256
5734 (base32
5735 "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
5736 (build-system ruby-build-system)
5737 (arguments
5738 `(#:tests? #f)) ; rake errors, missing shoulda
5739 (propagated-inputs
5740 `(("ruby-log4r" ,ruby-log4r)))
5741 (synopsis "Log4r wrapper for Ruby")
5742 (description "Bio-logger is a wrapper around Log4r adding extra logging
5743features such as filtering and fine grained logging.")
5744 (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
5745 (license license:expat)))
07f61cb2 5746
2db0f9c8
BW
5747(define-public ruby-yajl-ruby
5748 (package
5749 (name "ruby-yajl-ruby")
5750 (version "1.4.1")
5751 (source
5752 (origin
5753 (method url-fetch)
5754 (uri (rubygems-uri "yajl-ruby" version))
5755 (sha256
5756 (base32
5757 "16v0w5749qjp13xhjgr2gcsvjv6mf35br7iqwycix1n2h7kfcckf"))))
5758 (build-system ruby-build-system)
5759 (arguments
5760 '(#:test-target "spec"
5761 #:phases
5762 (modify-phases %standard-phases
5763 (add-before 'check 'patch-test-to-update-load-path
5764 (lambda _
5765 (substitute* "spec/parsing/large_number_spec.rb"
5766 (("require \"yajl\"")
5767 "$LOAD_PATH << 'lib'; require 'yajl'"))
5768 #t)))))
5769 (native-inputs
5770 `(("ruby-rake-compiler" ,ruby-rake-compiler)
5771 ("ruby-rspec" ,ruby-rspec)))
5772 (synopsis "Streaming JSON parsing and encoding library for Ruby")
5773 (description
5774 "Ruby C bindings to the Yajl JSON stream-based parser library. The API
5775is compatible with the JSON gem, so yajl-ruby can act as a drop in
5776replacement.
5777
5778A modified copy of yajl is used, and included in the package.")
5779 (home-page "https://github.com/brianmario/yajl-ruby")
5780 (license (list license:expat ; Ruby code, yajl_ext.c and yajl_ext.h
5781 license:bsd-3)))) ; Included, modified copy of yajl
5782
07f61cb2 5783(define-public ruby-yard
6499893e
BW
5784 (package
5785 (name "ruby-yard")
50135ff8 5786 (version "0.9.16")
6499893e
BW
5787 (source
5788 (origin
f3fd70c0 5789 (method git-fetch)
6499893e 5790 ;; Tests do not pass if we build from the distributed gem.
f3fd70c0
EF
5791 (uri (git-reference
5792 (url "https://github.com/lsegal/yard")
5793 (commit (string-append "v" version))))
5794 (file-name (git-file-name name version))
6499893e
BW
5795 (sha256
5796 (base32
f3fd70c0 5797 "0a4r1pfs0ms4vlccsf1x2jckx35lqm8b8lh6rdjxqfr5fia5izpf"))))
6499893e
BW
5798 (build-system ruby-build-system)
5799 (arguments
5800 `(#:phases
5801 (modify-phases %standard-phases
5802 (replace 'check
5803 (lambda _
5804 ;; $HOME needs to be set to somewhere writeable for tests to run
5805 (setenv "HOME" "/tmp")
5806 ;; Run tests without using 'rake' to avoid dependencies.
9923d5a4 5807 (invoke "rspec"))))))
6499893e
BW
5808 (native-inputs
5809 `(("ruby-rspec" ,ruby-rspec)
5810 ("ruby-rack" ,ruby-rack)))
5811 (synopsis "Documentation generation tool for Ruby")
5812 (description
5813 "YARD is a documentation generation tool for the Ruby programming
07f61cb2
BW
5814language. It enables the user to generate consistent, usable documentation
5815that can be exported to a number of formats very easily, and also supports
5816extending for custom Ruby constructs such as custom class level definitions.")
2f3800e5 5817 (home-page "https://yardoc.org")
6499893e 5818 (license license:expat)))
2cbcd23a 5819
ad686ef3
RW
5820(define-public ruby-clap
5821 (package
5822 (name "ruby-clap")
5823 (version "1.0.0")
5824 (source (origin
5825 (method url-fetch)
5826 (uri (rubygems-uri "clap" version))
5827 (sha256
5828 (base32
5829 "190m05k3pca72c1h8k0fnvby15m303zi0lpb9c478ad19wqawa5q"))))
5830 (build-system ruby-build-system)
5831 ;; Clap needs cutest for running tests, but cutest needs clap.
5832 (arguments `(#:tests? #f))
5833 (synopsis "Command line argument parsing for simple applications")
5834 (description
5835 "Clap provides command line argument parsing features. It covers the
5836simple case of executing code based on the flags or parameters passed.")
5837 (home-page "https://github.com/djanowski/cutest")
0c80451e
RW
5838 (license license:expat)))
5839
5840(define-public ruby-cutest
5841 (package
5842 (name "ruby-cutest")
5843 (version "1.2.2")
5844 (source (origin
5845 (method url-fetch)
5846 (uri (rubygems-uri "cutest" version))
5847 (sha256
5848 (base32
5849 "1mldhjn62g53vx4gq2qdqg2lgjvyrqxa8d0khf8347bbfgi16d32"))))
5850 (build-system ruby-build-system)
5851 (propagated-inputs
5852 `(("ruby-clap" ,ruby-clap)))
5853 (synopsis "Run tests in separate processes")
5854 (description
5855 "Cutest runs tests in separate processes to avoid shared state.")
5856 (home-page "https://github.com/djanowski/cutest")
ad686ef3
RW
5857 (license license:expat)))
5858
ac09beba
RW
5859(define-public ruby-pygmentize
5860 (package
5861 (name "ruby-pygmentize")
5862 (version "0.0.3")
5863 (source (origin
5864 (method url-fetch)
5865 (uri (rubygems-uri "pygmentize" version))
5866 (sha256
5867 (base32
5868 "1pxryhkiwvsz6xzda3bvqwz5z8ggzl1cdglf8qbcf4bb7akirdpb"))))
5869 (build-system ruby-build-system)
5870 (arguments
5871 `(#:phases
5872 (modify-phases %standard-phases
5873 (add-after 'unpack 'fix-pygmentize-path
5874 (lambda _
5875 (substitute* "lib/pygmentize.rb"
5876 (("\"/usr/bin/env python.*")
5877 (string-append "\"" (which "pygmentize") "\"\n")))
5878 #t))
5879 (add-after 'build 'do-not-use-vendor-directory
5880 (lambda _
5881 ;; Remove bundled pygments sources
5882 ;; FIXME: ruby-build-system does not support snippets.
5883 (delete-file-recursively "vendor")
5884 (substitute* "pygmentize.gemspec"
5885 (("\"vendor/\\*\\*/\\*\",") ""))
5886 #t)))))
5887 (inputs
5888 `(("pygments" ,python-pygments)))
5889 (native-inputs
5890 `(("ruby-cutest" ,ruby-cutest)
5891 ("ruby-nokogiri" ,ruby-nokogiri)))
5892 (synopsis "Thin Ruby wrapper around pygmentize")
5893 (description
5894 "Pygmentize provides a simple way to call pygmentize from within a Ruby
5895application.")
5896 (home-page "https://github.com/djanowski/pygmentize")
5897 (license license:expat)))
5898
2cbcd23a
DT
5899(define-public ruby-eventmachine
5900 (package
5901 (name "ruby-eventmachine")
c207fa5e 5902 (version "1.2.7")
2cbcd23a
DT
5903 (source
5904 (origin
5905 (method url-fetch)
5906 (uri (rubygems-uri "eventmachine" version))
5907 (sha256
5908 (base32
c207fa5e 5909 "0wh9aqb0skz80fhfn66lbpr4f86ya2z5rx6gm5xlfhd05bj1ch4r"))))
2cbcd23a
DT
5910 (build-system ruby-build-system)
5911 (arguments
c5d269fb 5912 '(#:tests? #f)) ; test suite tries to connect to google.com
2cbcd23a
DT
5913 (native-inputs
5914 `(("ruby-rake-compiler" ,ruby-rake-compiler)))
5915 (synopsis "Single-threaded network event framework for Ruby")
5916 (description
5917 "EventMachine implements a single-threaded engine for arbitrary network
5918communications. EventMachine wraps all interactions with sockets, allowing
5919programs to concentrate on the implementation of network protocols. It can be
5920used to create both network servers and clients.")
24a26227
TGR
5921 ;; The ‘official’ rubyeventmachine.com domain is now registrar-squatted.
5922 (home-page "https://github.com/eventmachine/eventmachine")
2cbcd23a 5923 (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT
7d3a1a2d 5924
e218b0c8
BW
5925(define-public ruby-ruby-engine
5926 (package
5927 (name "ruby-ruby-engine")
5928 (version "1.0.1")
5929 (source
5930 (origin
5931 (method url-fetch)
5932 (uri (rubygems-uri "ruby_engine" version))
5933 (sha256
5934 (base32
5935 "1d0sd4q50zkcqhr395wj1wpn2ql52r0fpwhzjfvi1bljml7k546v"))))
5936 (build-system ruby-build-system)
5937 (arguments
5938 `(#:phases
5939 (modify-phases %standard-phases
5940 (add-before 'check 'clean-up
5941 (lambda _
5942 (delete-file "Gemfile.lock")
5943 (substitute* "ruby_engine.gemspec"
5944 ;; Remove unnecessary imports that would entail further
5945 ;; dependencies.
5946 ((".*<rdoc.*") "")
5947 ((".*<rubygems-tasks.*") "")
5948 ;; Remove extraneous .gem file
5949 (("\\\"pkg/ruby_engine-1.0.0.gem\\\",") "")
5950 ;; Soften rake dependency
5951 (("%q<rake>.freeze, \\[\\\"~> 10.0\\\"\\]")
5952 "%q<rake>.freeze, [\">= 10.0\"]")
5953 ;; Soften the rspec dependency
5954 (("%q<rspec>.freeze, \\[\\\"~> 2.4\\\"\\]")
5955 "%q<rspec>.freeze, [\">= 2.4\"]"))
5956 (substitute* "Rakefile"
5957 (("require 'rubygems/tasks'") "")
5958 (("Gem::Tasks.new") ""))
5959 ;; Remove extraneous .gem file that otherwise gets installed.
5960 (delete-file "pkg/ruby_engine-1.0.0.gem")
5961 #t)))))
5962 (native-inputs
5963 `(("bundler" ,bundler)
5964 ("ruby-rake" ,ruby-rake)
5965 ("ruby-rspec" ,ruby-rspec)))
5966 (synopsis "Simplifies checking for Ruby implementation")
5967 (description
5968 "@code{ruby_engine} provides an RubyEngine class that can be used to
5969check which implementation of Ruby is in use. It can provide the interpreter
5970name and provides query methods such as @{RubyEngine.mri?}.")
5971 (home-page "https://github.com/janlelis/ruby_engine")
5972 (license license:expat)))
5973
8092e333
BW
5974(define-public ruby-turn
5975 (package
5976 (name "ruby-turn")
5977 (version "0.9.7")
5978 (source
5979 (origin
5980 (method url-fetch)
5981 (uri (rubygems-uri "turn" version))
5982 (sha256
5983 (base32
5984 "1691rc2sq04cw8mxxh340k2j04ll90kwgcy8ddrp6rligmfrf8fw"))))
5985 (build-system ruby-build-system)
5986 (arguments
5987 `(#:phases
5988 (modify-phases %standard-phases
5989 ;; Tests fail because turn changes its environment so can no longer
5990 ;; find test/unit. Instead simply test if the executable runs
5991 ;; without issue.
5992 (replace 'check
5993 (lambda _
9923d5a4 5994 (invoke "ruby" "-Ilib" "bin/turn" "-h"))))))
8092e333
BW
5995 (propagated-inputs
5996 `(("ruby-ansi" ,ruby-ansi)
5997 ("ruby-minitest" ,ruby-minitest-4)))
5998 (synopsis "Alternate set of alternative runners for MiniTest")
5999 (description
6000 "TURN provides a set of alternative runners for MiniTest which are both
6001colorful and informative. TURN displays each test on a separate line with
6002failures being displayed immediately instead of at the end of the tests. Note
6003that TURN is no longer being maintained.")
6004 (home-page "http://rubygems.org/gems/turn")
6005 (license license:expat)))
6006
8279b1d3
CB
6007(define-public ruby-mimemagic
6008 (package
6009 (name "ruby-mimemagic")
60bc8952 6010 (version "0.3.3")
8279b1d3
CB
6011 (source
6012 (origin
6013 (method url-fetch)
6014 (uri (rubygems-uri "mimemagic" version))
6015 (sha256
60bc8952 6016 (base32 "04cp5sfbh1qx82yqxn0q75c7hlcx8y1dr5g3kyzwm4mx6wi2gifw"))))
8279b1d3
CB
6017 (build-system ruby-build-system)
6018 (arguments
6019 '(#:phases
6020 (modify-phases %standard-phases
6021 ;; This phase breaks the tests, as it patches some of the test data.
6022 (delete 'patch-source-shebangs))))
6023 (native-inputs
6024 `(("ruby-bacon" ,ruby-bacon)))
6025 (synopsis "Ruby library for MIME detection by extension or content")
6026 (description
6027 "@acronym{MIME, Multipurpose Internet Mail Extensions} detection by
6028extension or content, using the freedesktop.org.xml shared-mime-info
6029database.")
6030 (home-page "https://github.com/minad/mimemagic")
6031 (license license:expat)))
6032
32d1c06f
BW
6033(define-public ruby-mime-types-data
6034 (package
6035 (name "ruby-mime-types-data")
f49511db 6036 (version "3.2016.0521")
32d1c06f
BW
6037 (source
6038 (origin
6039 (method url-fetch)
6040 (uri (rubygems-uri "mime-types-data" version))
6041 (sha256
6042 (base32
f49511db 6043 "04my3746hwa4yvbx1ranhfaqkgf6vavi1kyijjnw8w3dy37vqhkm"))))
32d1c06f
BW
6044 (build-system ruby-build-system)
6045 (native-inputs
6046 `(("ruby-hoe" ,ruby-hoe)))
6047 (synopsis "Registry for information about MIME media type definitions")
6048 (description
6049 "@code{mime-types-data} provides a registry for information about
6050Multipurpose Internet Mail Extensions (MIME) media type definitions. It can
6051be used with the Ruby mime-types library or other software to determine
6052defined filename extensions for MIME types, or to use filename extensions to
6053look up the likely MIME type definitions.")
6054 (home-page "https://github.com/mime-types/mime-types-data/")
6055 (license license:expat)))
6056
d39b606c
BW
6057(define-public ruby-mime-types
6058 (package
6059 (name "ruby-mime-types")
803bcc81 6060 (version "3.1")
d39b606c
BW
6061 (source
6062 (origin
6063 (method url-fetch)
6064 (uri (rubygems-uri "mime-types" version))
6065 (sha256
6066 (base32
803bcc81 6067 "0087z9kbnlqhci7fxh9f6il63hj1k02icq2rs0c6cppmqchr753m"))))
d39b606c
BW
6068 (build-system ruby-build-system)
6069 (propagated-inputs
6070 `(("ruby-mime-types-data" ,ruby-mime-types-data)))
6071 (native-inputs
6072 `(("ruby-hoe" ,ruby-hoe)
6073 ("ruby-fivemat" ,ruby-fivemat)
6074 ("ruby-minitest-focus" ,ruby-minitest-focus)
6075 ("ruby-minitest-rg" ,ruby-minitest-rg)
803bcc81
BW
6076 ("ruby-minitest-bonus-assertions" ,ruby-minitest-bonus-assertions)
6077 ("ruby-minitest-hooks" ,ruby-minitest-hooks)))
d39b606c
BW
6078 (synopsis "Library and registry for MIME content type definitions")
6079 (description "The mime-types library provides a library and registry for
6080information about Multipurpose Internet Mail Extensions (MIME) content type
6081definitions. It can be used to determine defined filename extensions for MIME
6082types, or to use filename extensions to look up the likely MIME type
6083definitions.")
6084 (home-page "https://github.com/mime-types/ruby-mime-types")
6085 (license license:expat)))
6086
eb5e0bd9
BW
6087(define-public ruby-fivemat
6088 (package
6089 (name "ruby-fivemat")
c664ebcc 6090 (version "1.3.7")
eb5e0bd9
BW
6091 (source
6092 (origin
6093 (method url-fetch)
6094 (uri (rubygems-uri "fivemat" version))
6095 (sha256
6096 (base32
c664ebcc 6097 "0pzlycasvwmg4bbx7plllpqnhd9zlmmff8l2w3yii86nrm2nvf9n"))))
eb5e0bd9
BW
6098 (build-system ruby-build-system)
6099 (arguments
6100 `(#:tests? #f)) ; no tests
6101 (synopsis "Each test file given its own line of dots")
6102 (description
6103 "Fivemat is a MiniTest/RSpec/Cucumber formatter that gives each test file
6104its own line of dots during testing. It aims to provide test output that is
6105neither too verbose nor too minimal.")
6106 (home-page "https://github.com/tpope/fivemat")
6107 (license license:expat)))
6108
4fea500b
BW
6109(define-public ruby-sqlite3
6110 (package
6111 (name "ruby-sqlite3")
cba53c60 6112 (version "1.3.13")
4fea500b
BW
6113 (source
6114 (origin
6115 (method url-fetch)
6116 (uri (rubygems-uri "sqlite3" version))
6117 (sha256
6118 (base32
cba53c60 6119 "01ifzp8nwzqppda419c9wcvr8n82ysmisrs0hph9pdmv1lpa4f5i"))))
4fea500b
BW
6120 (build-system ruby-build-system)
6121 (arguments
6122 `(#:phases
6123 (modify-phases %standard-phases
54a93355
MB
6124 (add-before 'check 'adjust-failing-test
6125 (lambda _
6126 ;; XXX: This test fails with SQLite versions >= 3.21.
6127 ;; See <https://github.com/sparklemotion/sqlite3-ruby/issues/226>.
6128 (substitute* "test/test_integration_resultset.rb"
6129 (("\"integer\", \"text\"") "\"INTEGER\", \"text\""))
6130 #t))
4fea500b
BW
6131 (add-before 'check 'add-gemtest-file
6132 ;; This file exists in the repository but is not distributed.
9923d5a4 6133 (lambda _ (invoke "touch" ".gemtest"))))))
4fea500b
BW
6134 (inputs
6135 `(("sqlite" ,sqlite)))
6136 (native-inputs
6137 `(("ruby-hoe" ,ruby-hoe)
6138 ("ruby-rake-compiler" ,ruby-rake-compiler)
6139 ("ruby-mini-portile" ,ruby-mini-portile)))
6140 (synopsis "Interface with SQLite3 databases")
6141 (description
6142 "This module allows Ruby programs to interface with the SQLite3 database
6143engine.")
6144 (home-page
6145 "https://github.com/sparklemotion/sqlite3-ruby")
6146 (license license:bsd-3)))
6147
4dfa39cc
BW
6148(define-public ruby-shoulda-context
6149 (package
6150 (name "ruby-shoulda-context")
e7d1d472 6151 (version "1.2.2")
4dfa39cc
BW
6152 (source
6153 (origin
6154 (method url-fetch)
6155 (uri (rubygems-uri "shoulda-context" version))
6156 (sha256
6157 (base32
e7d1d472 6158 "1l0ncsxycb4s8n47dml97kdnixw4mizljbkwqc3rh05r70csq9bc"))))
4dfa39cc
BW
6159 (build-system ruby-build-system)
6160 (arguments
6161 `(#:phases
6162 (modify-phases %standard-phases
6163 (replace 'check
6164 (lambda _
6165 ;; Do not run tests to avoid circular dependence with rails.
6166 ;; Instead just import the library to test.
9923d5a4 6167 (invoke "ruby" "-Ilib" "-r" "shoulda-context"))))))
4dfa39cc
BW
6168 (synopsis "Test::Unit context framework extracted from Shoulda")
6169 (description
6170 "@code{shoulda-context} is the context framework extracted from Shoulda.
6171Instead of writing Ruby methods with lots_of_underscores, shoulda-context adds
6172context, setup, and should blocks combine to produce natural test method
6173names.")
6174 (home-page "https://github.com/thoughtbot/shoulda-context")
6175 (license license:expat)))
6176
e4fea008
BW
6177(define-public ruby-shoulda-matchers
6178 (package
6179 (name "ruby-shoulda-matchers")
d1c1f368 6180 (version "3.1.2")
e4fea008
BW
6181 (source
6182 (origin
6183 (method url-fetch)
6184 (uri (rubygems-uri "shoulda-matchers" version))
6185 (sha256
6186 (base32
d1c1f368 6187 "1zvv94pqk5b5my3w1shdz7h34xf2ldhg5k4qfdpbwi2iy0j9zw2a"))))
e4fea008
BW
6188 (build-system ruby-build-system)
6189 (arguments
6190 `(#:phases
6191 (modify-phases %standard-phases
e4fea008
BW
6192 (replace 'check
6193 (lambda _
6194 ;; Do not run tests to avoid circular dependence with rails. Instead
6195 ;; just import the library to test.
9923d5a4 6196 (invoke "ruby" "-Ilib" "-r" "shoulda-matchers"))))))
e4fea008
BW
6197 (propagated-inputs
6198 `(("ruby-activesupport" ,ruby-activesupport)))
6199 (synopsis "Collection of testing matchers extracted from Shoulda")
6200 (description
6201 "Shoulda Matchers provides RSpec- and Minitest-compatible one-liners that
6202test common Rails functionality. These tests would otherwise be much longer,
6203more complex, and error-prone.")
6204 (home-page "https://github.com/thoughtbot/shoulda-matchers")
6205 (license license:expat)))
6206
3885c58b
BW
6207(define-public ruby-shoulda-matchers-2
6208 (package
6209 (inherit ruby-shoulda-matchers)
6210 (version "2.8.0")
6211 (source (origin
6212 (method url-fetch)
6213 (uri (rubygems-uri "shoulda-matchers" version))
6214 (sha256
6215 (base32
6216 "0d3ryqcsk1n9y35bx5wxnqbgw4m8b3c79isazdjnnbg8crdp72d0"))))))
6217
6f390716
BW
6218(define-public ruby-shoulda
6219 (package
6220 (name "ruby-shoulda")
6221 (version "3.5.0")
6222 (source
6223 (origin
6224 (method url-fetch)
6225 (uri (rubygems-uri "shoulda" version))
6226 (sha256
6227 (base32
6228 "0csmf15a7mcinfq54lfa4arp0f4b2jmwva55m0p94hdf3pxnjymy"))))
6229 (build-system ruby-build-system)
6230 (arguments
6231 `(#:phases
6232 (modify-phases %standard-phases
6233 (replace 'check
6234 ;; Don't run tests to avoid circular dependence with rails. Instead
6235 ;; just import the library to test.
9923d5a4 6236 (lambda _ (invoke "ruby" "-Ilib" "-r" "shoulda"))))))
6f390716
BW
6237 (propagated-inputs
6238 `(("ruby-shoulda-context" ,ruby-shoulda-context)
6239 ("ruby-shoulda-matchers" ,ruby-shoulda-matchers-2)))
6240 (synopsis "Context framework and matchers for testing")
6241 (description
6242 "@code{shoulda} is a meta-package combining @code{shoulda-context} and
6243@code{shoulda-matchers} providing tools for writing tests.")
6244 (home-page "https://github.com/thoughtbot/shoulda")
6245 (license license:expat)))
6246
3b44bcdf
BW
6247(define-public ruby-unf
6248 (package
6249 (name "ruby-unf")
6250 (version "0.1.4")
6251 (source
6252 (origin
6253 (method url-fetch)
6254 (uri (rubygems-uri "unf" version))
6255 (sha256
6256 (base32
6257 "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9"))))
6258 (build-system ruby-build-system)
6259 (arguments
6260 `(#:phases
6261 (modify-phases %standard-phases
6262 (add-before 'check 'add-dependency-to-bundler
6263 (lambda _
6264 ;; test-unit is required but not provided by the bundler
6265 ;; environment. This is fixed in the upstream repository but fix
6266 ;; has not been released.
6267 (substitute* "Gemfile"
6268 (("^gemspec") "gem 'test-unit'\ngemspec"))
6269 #t)))))
6270 (propagated-inputs
6271 `(("ruby-unf-ext" ,ruby-unf-ext)))
6272 (native-inputs
6273 `(("ruby-shoulda" ,ruby-shoulda)
6274 ("bundler" ,bundler)
6275 ("ruby-test-unit" ,ruby-test-unit)))
6276 (synopsis "Unicode Normalization Form support to Ruby and JRuby")
6277 (description
6278 "@code{ruby-unf} is a wrapper library to bring Unicode Normalization Form
6279support to both Ruby and JRuby. It uses @code{unf_ext} on CRuby and
6280@code{java.text.Normalizer} on JRuby.")
6281 (home-page "https://github.com/knu/ruby-unf")
6282 (license license:bsd-2)))
6283
e32c99d2
CB
6284(define-public ruby-warden
6285 (package
6286 (name "ruby-warden")
6287 (version "1.2.8")
6288 (source
6289 (origin
6290 (method url-fetch)
6291 (uri (rubygems-uri "warden" version))
6292 (sha256
6293 (base32
6294 "1fr9n9i9r82xb6i61fdw4xgc7zjv7fsdrr4k0njchy87iw9fl454"))))
6295 (build-system ruby-build-system)
6296 (arguments
6297 '(#:tests? #f)) ; No included tests
6298 (propagated-inputs
6299 `(("ruby-rack" ,ruby-rack)))
6300 (synopsis "Rack middleware providing authentication")
6301 (description
6302 "Warden is a Rack-based middleware that provides a mechanism for
6303authentication in Ruby web applications.")
6304 (home-page "https://github.com/wardencommunity/warden")
6305 (license license:expat)))
6306
e42eecdb
CB
6307(define-public ruby-warden-oauth2
6308 (package
6309 (name "ruby-warden-oauth2")
6310 (version "0.0.1")
6311 (source
6312 (origin
6313 (method url-fetch)
6314 (uri (rubygems-uri "warden-oauth2" version))
6315 (sha256
6316 (base32
6317 "1z9154lvzrnnfjbjkmirh4n811nygp6pm2fa6ikr7y1ysa4zv3cz"))))
6318 (build-system ruby-build-system)
6319 (arguments
6320 '(#:test-target "spec"
6321 #:phases
6322 (modify-phases %standard-phases
6323 (add-after 'unpack 'remove-unnecessary-dependencies
6324 (lambda _
6325 (substitute* "Gemfile"
6326 ;; All of these gems relate to development, and are unnecessary
6327 ;; when running the tests
6328 (("gem 'guard-bundler'") "")
6329 (("gem 'guard'") "")
6330 (("gem 'guard-rspec'") "")
6331 (("gem 'rb-fsevent'") "")
6332 (("gem 'pry'") "")
6333 (("gem 'growl'") ""))
6334 #t))
6335 ;; The test suite doesn't work with rspec@2, and this is incompatible
6336 ;; with the current version of Rake, so invoke Rspec directly
6337 (replace 'check
6338 (lambda* (#:key tests? #:allow-other-keys)
6339 (when tests?
6340 (invoke "bundle" "exec" "rspec"))
6341 #t)))))
6342 (propagated-inputs
6343 `(("ruby-warden" ,ruby-warden)))
6344 (native-inputs
6345 `(("bundler" ,bundler)
6346 ("ruby-rspec" ,ruby-rspec-2)
6347 ("ruby-rack-test" ,ruby-rack-test)))
6348 (synopsis "OAuth 2.0 strategies for Warden")
6349 (description
6350 "This library extends Warden to support OAuth 2.0 authorized API
6351requests.")
6352 (home-page "https://github.com/opperator/warden-oauth2")
6353 (license license:expat)))
6354
8c7ae384
CB
6355(define-public ruby-webmock-2
6356 (package
6357 (name "ruby-webmock")
6358 (version "2.3.2")
6359 (source
6360 (origin
6361 (method url-fetch)
6362 (uri (rubygems-uri "webmock" version))
6363 (sha256
6364 (base32
6365 "04hkcqsmbfnp8g237pisnc834vpgildklicbjbyikqg0bg1rwcy5"))))
6366 (build-system ruby-build-system)
6367 (native-inputs
6368 `(("bundler" ,bundler)
6369 ("ruby-rspec" ,ruby-rspec)))
6370 (propagated-inputs
6371 `(("ruby-addressable" ,ruby-addressable)
6372 ("ruby-crack" ,ruby-crack)
6373 ("ruby-hashdiff" ,ruby-hashdiff)))
6374 (synopsis "Allows stubbing and setting expectations on HTTP requests")
6375 (description
6376 "WebMock allows stubbing HTTP requests and setting expectations on HTTP
6377requests. This is useful when testing software.")
6378 (home-page "https://github.com/bblimke/webmock")
6379 (license license:expat)))
6380
d8c189ed
CB
6381(define-public ruby-unicode-display-width
6382 (package
6383 (name "ruby-unicode-display-width")
216ccced 6384 (version "1.6.0")
d8c189ed
CB
6385 (source
6386 (origin
6387 (method url-fetch)
6388 (uri (rubygems-uri "unicode-display_width" version))
6389 (sha256
6390 (base32
216ccced 6391 "08kfiniak1pvg3gn5k6snpigzvhvhyg7slmm0s2qx5zkj62c1z2w"))))
d8c189ed
CB
6392 (build-system ruby-build-system)
6393 (arguments
6394 '(;; Test data not included.
6395 #:tests? #f))
6396 (synopsis "Determine the monospace display width of Ruby strings")
6397 (description
6398 "@code{Unicode::DisplayWidth} is a Ruby library which can determine the
6399display width of strings in Ruby.")
6400 (home-page "https://github.com/janlelis/unicode-display_width")
6401 (license license:expat)))
6402
6120589f
CB
6403;; There is another gem called 'ruby-version' so we use an underscore in this
6404;; name
6405(define-public ruby_version
6406 (package
6407 (name "ruby_version")
6408 (version "1.0.1")
6409 (source
6410 (origin
6411 (method url-fetch)
6412 (uri (rubygems-uri "ruby_version" version))
6413 (sha256
6414 (base32
6415 "0854i1bjy56176anr05l5m0vc81nl53c7fyfg7sljj62m1d64dgj"))))
6416 (build-system ruby-build-system)
6417 (arguments
6418 '(#:phases
6419 (modify-phases %standard-phases
6420 (add-before 'check 'fix-dependencies
6421 (lambda _
6422 ;; Remove the Gemfile.lock, as we want to use Guix packages at
6423 ;; whatever versions.
6424 (delete-file "Gemfile.lock")
6425 ;; Remove the incldued gem file as it's unnecessary.
6426 (delete-file "pkg/ruby_version-1.0.0.gem")
6427 (substitute* "ruby_version.gemspec"
6428 ;; Don't require rdoc and rubygems-tasks as they're unnecessary
6429 ((".*rdoc.*") "\n")
6430 ((".*rubygems-tasks.*") "\n")
6431 ;; Accept any version of rake and rspec
6432 (("%q<rake.*") "%q<rake>)\n")
6433 (("%q<rspec.*") "%q<rspec>)\n"))
6434 ;; Remove the use of rubygems-tasks from the Rakefile, as it's
6435 ;; unnecessary.
6436 (substitute* "Rakefile"
6437 (("^require 'rubygems/tasks'") "")
6438 (("Gem::Tasks.new") ""))
6439 #t)))))
6440 (native-inputs
6441 `(("bundler" ,bundler)
6442 ("ruby-rspec" ,ruby-rspec)))
6443 (synopsis "Ruby library to help check the Ruby version")
6444 (description
6445 "@code{ruby_version} provides a @code{RubyVersion} module to simplify
6446checking for the right Ruby version in software.")
6447 (home-page "https://github.com/janlelis/ruby_version")
6448 (license license:expat)))
6449
a229acff
CB
6450(define-public ruby-websocket-driver
6451 (package
6452 (name "ruby-websocket-driver")
9d1cf6d4 6453 (version "0.7.1")
a229acff
CB
6454 (source
6455 (origin
6456 (method url-fetch)
6457 (uri (rubygems-uri "websocket-driver" version))
6458 (sha256
9d1cf6d4 6459 (base32 "1bxamwqldmy98hxs5pqby3andws14hl36ch78g0s81gaz9b91nj2"))))
a229acff
CB
6460 (build-system ruby-build-system)
6461 (arguments
9d1cf6d4 6462 '(#:tests? #f)) ; no included tests
a229acff
CB
6463 (propagated-inputs
6464 `(("ruby-websocket-extensions" ,ruby-websocket-extensions)))
6465 (synopsis "WebSocket protocol handler with pluggable I/O")
6466 (description
6467 "@code{websocket-driver} provides a complete implementation of the
6468WebSocket protocols that can be hooked up to any TCP library")
6469 (home-page "https://github.com/faye/websocket-driver-ruby")
6470 (license license:expat)))
6471
52b015a9
CB
6472(define-public ruby-websocket-extensions
6473 (package
6474 (name "ruby-websocket-extensions")
6475 (version "0.1.3")
6476 (source
6477 (origin
6478 (method url-fetch)
6479 (uri (rubygems-uri "websocket-extensions" version))
6480 (sha256
6481 (base32
6482 "034sdr7fd34yag5l6y156rkbhiqgmy395m231dwhlpcswhs6d270"))))
6483 (build-system ruby-build-system)
6484 (arguments
6485 '(;; No included tests
6486 #:tests? #f))
6487 (synopsis "Generic extension manager for WebSocket connections")
6488 (description
6489 "@code{websocket-extensions} provides a container for registering
6490extension plugins.")
6491 (home-page "https://github.com/faye/websocket-extensions-ruby")
6492 (license license:expat)))
6493
5799aadd
BW
6494(define-public ruby-domain-name
6495 (package
6496 (name "ruby-domain-name")
222999c9 6497 (version "0.5.20180417")
5799aadd
BW
6498 (source
6499 (origin
6500 (method url-fetch)
6501 (uri (rubygems-uri "domain_name" version))
6502 (sha256
6503 (base32
222999c9 6504 "0abdlwb64ns7ssmiqhdwgl27ly40x2l27l8hs8hn0z4kb3zd2x3v"))))
5799aadd
BW
6505 (build-system ruby-build-system)
6506 (arguments
6507 `(#:phases
6508 (modify-phases %standard-phases
6509 (add-before 'check 'fix-versions
6510 (lambda _
6511 ;; Fix NameError that appears to already be fixed upstream.
6512 (substitute* "Rakefile"
6513 (("DomainName::VERSION")
6514 "Bundler::GemHelper.gemspec.version"))
6515 ;; Loosen unnecessarily strict test-unit version specification.
6516 (substitute* "domain_name.gemspec"
71596c3c 6517 (("<test-unit>.freeze, \\[\\\"~> 2.5.5") "<test-unit>, [\">0"))
5799aadd
BW
6518 #t)))))
6519 (propagated-inputs
6520 `(("ruby-unf" ,ruby-unf)))
6521 (native-inputs
6522 `(("ruby-shoulda" ,ruby-shoulda)
6523 ("bundler" ,bundler)
6524 ("ruby-test-unit" ,ruby-test-unit)))
6525 (synopsis "Domain name manipulation library")
6526 (description
6527 "@code{domain_name} is a Domain name manipulation library. It parses a
6528domain name ready for extracting the registered domain and TLD (Top Level
6529Domain). It can also be used for cookie domain validation based on the Public
6530Suffix List.")
6531 (home-page "https://github.com/knu/ruby-domain_name")
6532 (license license:bsd-2)))
6533
d114ceeb
BW
6534(define-public ruby-http-cookie
6535 (package
6536 (name "ruby-http-cookie")
2a2eb07d 6537 (version "1.0.3")
d114ceeb
BW
6538 (source
6539 (origin
6540 (method url-fetch)
6541 (uri (rubygems-uri "http-cookie" version))
6542 (sha256
6543 (base32
2a2eb07d 6544 "004cgs4xg5n6byjs7qld0xhsjq3n6ydfh897myr2mibvh6fjc49g"))))
d114ceeb
BW
6545 (build-system ruby-build-system)
6546 (arguments
6547 `(#:phases
6548 (modify-phases %standard-phases
6549 (add-before 'check 'add-dependency-to-bundler
6550 (lambda _
6551 ;; Fix NameError
6552 (substitute* "Rakefile"
6553 (("HTTP::Cookie::VERSION")
6554 "Bundler::GemHelper.gemspec.version"))
6555 #t)))))
6556 (propagated-inputs
6557 `(("ruby-domain-name" ,ruby-domain-name)))
6558 (native-inputs
6559 `(("rubysimplecov" ,ruby-simplecov)
6560 ("bundler" ,bundler)
6561 ("ruby-sqlite3" ,ruby-sqlite3)
6562 ("ruby-test-unit" ,ruby-test-unit)))
6563 (synopsis "Handle HTTP Cookies based on RFC 6265")
6564 (description
6565 "@code{HTTP::Cookie} is a Ruby library to handle HTTP Cookies based on
6566RFC 6265. It has been designed with security, standards compliance and
6567compatibility in mind, to behave just the same as today's major web browsers.
6568It has built-in support for the legacy @code{cookies.txt} and
6569@code{cookies.sqlite} formats of Mozilla Firefox.")
6570 (home-page "https://github.com/sparklemotion/http-cookie")
6571 (license license:expat)))
6572
1c8e6fd3
CB
6573(define-public ruby-httpclient
6574 (package
6575 (name "ruby-httpclient")
6576 (version "2.8.3")
6577 (source
6578 (origin
6579 (method url-fetch)
6580 (uri (rubygems-uri "httpclient" version))
6581 (sha256
6582 (base32
6583 "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99"))))
6584 (build-system ruby-build-system)
6585 (arguments
6586 '(;; TODO: Some tests currently fail
6587 ;; ------
6588 ;; 211 tests, 729 assertions, 13 failures, 4 errors, 0 pendings,
6589 ;; 2 omissions, 0 notifications
6590 ;; 91.866% passed
6591 ;; ------
6592 ;; 6.49 tests/s, 22.41 assertions/s
6593 #:tests? #f
6594 #:phases
6595 (modify-phases %standard-phases
6596 (replace 'check
6597 (lambda* (#:key tests? #:allow-other-keys)
6598 (if tests?
9923d5a4
TGR
6599 (invoke "ruby"
6600 "-Ilib"
6601 "test/runner.rb")
0076f5a9 6602 #t))))))
1c8e6fd3
CB
6603 (native-inputs
6604 `(("ruby-rack" ,ruby-rack)))
6605 (synopsis
6606 "Make HTTP requests with support for HTTPS, Cookies, authentication and more")
6607 (description
6608 "The @code{httpclient} ruby library provides functionality related to
6609HTTP. Compared to the @code{net/http} library, @{httpclient} also provides
6610Cookie, multithreading and authentication (digest, NTLM) support.
6611
6612Also provided is a @command{httpclient} command, which can perform HTTP
6613requests either using arguments or with an interactive prompt.")
6614 (home-page "https://github.com/nahi/httpclient")
6615 (license license:ruby)))
6616
7d3a1a2d
BW
6617(define-public ruby-ansi
6618 (package
6619 (name "ruby-ansi")
6620 (version "1.5.0")
6621 (source
6622 (origin
3d30c332 6623 (method git-fetch)
7d3a1a2d 6624 ;; Fetch from GitHub as the gem does not contain testing code.
3d30c332
EF
6625 (uri (git-reference
6626 (url "https://github.com/rubyworks/ansi")
6627 (commit version)))
6628 (file-name (git-file-name name version))
7d3a1a2d
BW
6629 (sha256
6630 (base32
3d30c332 6631 "1wsz7xxwl3vkh277jb7fd7akqnqqgbvalxzpjwniiqk8ghfprbi5"))))
7d3a1a2d
BW
6632 (build-system ruby-build-system)
6633 (arguments
6634 `(#:phases
6635 (modify-phases %standard-phases
6636 ;; Disable testing to break the cycle ansi, ae, ansi, as well as the
6637 ;; cycle ansi, qed, ansi. Instead simply test that the library can
6638 ;; be require'd.
6639 (replace 'check
6640 (lambda _
9923d5a4 6641 (invoke "ruby" "-Ilib" "-r" "ansi")))
0899352f
MB
6642 (add-before 'validate-runpath 'replace-broken-symlink
6643 (lambda* (#:key outputs #:allow-other-keys)
6644 (let* ((out (assoc-ref outputs "out"))
3cb3fa67
CB
6645 (file (string-append
6646 out "/lib/ruby/vendor_ruby/gems/ansi-"
6647 ,version "/lib/ansi.yml")))
0899352f
MB
6648 ;; XXX: This symlink is broken since ruby 2.4.
6649 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
6650 (delete-file file)
6651 (symlink "../.index" file)
6652 #t))))))
7d3a1a2d
BW
6653 (synopsis "ANSI escape code related libraries")
6654 (description
6655 "This package is a collection of ANSI escape code related libraries
6656enabling ANSI colorization and stylization of console output. Included in the
6657library are the @code{Code} module, which defines ANSI codes as constants and
6658methods, a @code{Mixin} module for including color methods, a @code{Logger}, a
6659@code{ProgressBar}, and a @code{String} subclass. The library also includes a
6660@code{Terminal} module which provides information about the current output
6661device.")
3d30c332 6662 (home-page "https://rubyworks.github.io/ansi/")
7d3a1a2d 6663 (license license:bsd-2)))
7c033c46
BW
6664
6665(define-public ruby-systemu
6666 (package
6667 (name "ruby-systemu")
6668 (version "2.6.5")
6669 (source
6670 (origin
6671 (method url-fetch)
6672 (uri (rubygems-uri "systemu" version))
6673 (sha256
6674 (base32
6675 "0gmkbakhfci5wnmbfx5i54f25j9zsvbw858yg3jjhfs5n4ad1xq1"))))
6676 (build-system ruby-build-system)
6677 (arguments
6678 `(#:phases
6679 (modify-phases %standard-phases
6680 (add-before 'check 'set-version
6681 (lambda _
6682 (setenv "VERSION" ,version)
6683 #t)))))
6684 (synopsis "Capture of stdout/stderr and handling of child processes")
6685 (description
6686 "Systemu can be used on any platform to return status, stdout, and stderr
6687of any command. Unlike other methods like @code{open3} and @code{popen4}
6688there is no danger of full pipes or threading issues hanging your process or
6689subprocess.")
6690 (home-page "https://github.com/ahoward/systemu")
6691 (license license:ruby)))
3d84a99e
BW
6692
6693(define-public ruby-bio-commandeer
6694 (package
6695 (name "ruby-bio-commandeer")
37b08547 6696 (version "0.4.0")
3d84a99e
BW
6697 (source
6698 (origin
6699 (method url-fetch)
6700 (uri (rubygems-uri "bio-commandeer" version))
6701 (sha256
6702 (base32
37b08547 6703 "0khpfw1yl5l3d2m8nxpkk32ybc4c3pa5hic3agd160jdfjjjnlni"))))
3d84a99e
BW
6704 (build-system ruby-build-system)
6705 (arguments
6706 `(#:phases
6707 (modify-phases %standard-phases
6708 (replace 'check
6709 ;; Run test without calling 'rake' so that jeweler is
6710 ;; not required as an input.
6711 (lambda _
9923d5a4 6712 (invoke "rspec" "spec/bio-commandeer_spec.rb"))))))
3d84a99e
BW
6713 (propagated-inputs
6714 `(("ruby-bio-logger" ,ruby-bio-logger)
6715 ("ruby-systemu" ,ruby-systemu)))
6716 (native-inputs
6717 `(("bundler" ,bundler)
6718 ("ruby-rspec" ,ruby-rspec)))
6719 (synopsis "Simplified running of shell commands from within Ruby")
6720 (description
6721 "Bio-commandeer provides an opinionated method of running shell commands
6722from within Ruby. The advantage of bio-commandeer over other methods of
6723running external commands is that when something goes wrong, messages printed
6724to the @code{STDOUT} and @code{STDERR} streams are reported, giving extra
6725detail to ease debugging.")
7bf837fd 6726 (home-page "https://github.com/wwood/bioruby-commandeer")
3d84a99e 6727 (license license:expat)))
7c8131c7
BW
6728
6729(define-public ruby-rubytest
6730 (package
6731 (name "ruby-rubytest")
6732 (version "0.8.1")
6733 (source
6734 (origin
6735 (method url-fetch)
6736 (uri (rubygems-uri "rubytest" version))
6737 (sha256
6738 (base32
6739 "19jydsdnkl81i9dhdcr4dc34j0ilm68ff2ngnka1hi38xiw4p5qz"))))
6740 (build-system ruby-build-system)
6741 (arguments
6742 ;; Disable regular testing to break the cycle rubytest, qed, brass,
6743 ;; rubytest, as well as the cycle rubytest, qed, ansi, rubytest. Instead
6744 ;; simply test that the library can be require'd.
6745 `(#:phases
6746 (modify-phases %standard-phases
6747 (replace 'check
6748 (lambda _
9923d5a4 6749 (invoke "ruby" "-Ilib" "-r" "rubytest"))))))
7c8131c7
BW
6750 (propagated-inputs
6751 `(("ruby-ansi" ,ruby-ansi)))
6752 (synopsis "Universal test harness for Ruby")
6753 (description
6754 "Rubytest is a testing meta-framework for Ruby. It can handle any
6755compliant test framework and can run tests from multiple frameworks in a
6756single pass.")
2f3800e5 6757 (home-page "https://rubyworks.github.io/rubytest")
7c8131c7 6758 (license license:bsd-2)))
90fcedf2
BW
6759
6760(define-public ruby-brass
6761 (package
6762 (name "ruby-brass")
6763 (version "1.2.1")
6764 (source
6765 (origin
6766 (method url-fetch)
6767 (uri (rubygems-uri "brass" version))
6768 (sha256
6769 (base32
6770 "154lp8rp1vmg60ri1j4cb8hqlw37z7bn575h899v8hzxwi11sxka"))))
6771 (build-system ruby-build-system)
6772 (arguments
6773 ;; Disable tests to break the cycle brass, lemon, ae, qed, brass.
6774 ;; Instead simply test that the library can be require'd.
6775 `(#:phases
6776 (modify-phases %standard-phases
6777 (replace 'check
6778 (lambda _
9923d5a4 6779 (invoke "ruby" "-Ilib" "-r" "brass"))))))
90fcedf2
BW
6780 (synopsis "Basic foundational assertions framework")
6781 (description
6782 "BRASS (Bare-Metal Ruby Assertion System Standard) is a basic
6783foundational assertions framework for other assertion and test frameworks to
6784make use of.")
2f3800e5 6785 (home-page "https://rubyworks.github.io/brass")
90fcedf2 6786 (license license:bsd-2)))
120fc74b
BW
6787
6788(define-public ruby-qed
6789 (package
6790 (name "ruby-qed")
6791 (version "2.9.2")
6792 (source
6793 (origin
6794 (method url-fetch)
6795 (uri (rubygems-uri "qed" version))
6796 (sha256
6797 (base32
6798 "03h4lmlxpcya8j7s2cnyscqlx8v3xl1xgsw5y1wk1scxcgz2vbmr"))))
6799 (build-system ruby-build-system)
6800 (arguments
6801 ;; Disable testing to break the cycle qed, ansi, qed, among others.
6802 ;; Instead simply test that the executable runs using --copyright.
6803 `(#:phases
6804 (modify-phases %standard-phases
6805 (replace 'check
6806 (lambda _
9923d5a4 6807 (invoke "ruby" "-Ilib" "bin/qed" "--copyright"))))))
120fc74b
BW
6808 (propagated-inputs
6809 `(("ruby-ansi" ,ruby-ansi)
6810 ("ruby-brass" ,ruby-brass)))
6811 (synopsis "Test framework utilizing literate programming techniques")
6812 (description
6813 "@dfn{Quality Ensured Demonstrations} (QED) is a test framework for
6814@dfn{Test Driven Development} (TDD) and @dfn{Behaviour Driven
6815Development} (BDD) utilizing Literate Programming techniques. QED sits
6816somewhere between lower-level testing tools like @code{Test::Unit} and
6817requirement specifications systems like Cucumber.")
2f3800e5 6818 (home-page "https://rubyworks.github.io/qed")
120fc74b 6819 (license license:bsd-2)))
9273ee8f 6820
dbbe88d3
CB
6821(define-public ruby-que
6822 (package
6823 (name "ruby-que")
6824 (version "1.0.0.beta3")
6825 (source
6826 (origin
6827 (method url-fetch)
6828 (uri (rubygems-uri "que" version))
6829 (sha256
6830 (base32
6831 "0gr9pb814d4qj3ds98g6cjrdk7wv0yg8aqbm7c1lmgl87jkg8q04"))))
6832 (build-system ruby-build-system)
6833 (arguments
6834 '(#:tests? #f)) ; No included tests
6835 (synopsis "Job queue using PostgreSQL written in Ruby")
6836 (description
6837 "This package provides a job queue that uses PostgreSQL for storing jobs
6838and locking between worker processes.")
6839 (home-page "https://github.com/chanks/que")
6840 (license license:expat)))
6841
9273ee8f
BW
6842(define-public ruby-ae
6843 (package
6844 (name "ruby-ae")
6845 (version "1.8.2")
6846 (source
6847 (origin
11d1b318 6848 (method git-fetch)
9273ee8f 6849 ;; Fetch from github so tests are included.
11d1b318
EF
6850 (uri (git-reference
6851 (url "https://github.com/rubyworks/ae")
6852 (commit version)))
6853 (file-name (git-file-name name version))
9273ee8f
BW
6854 (sha256
6855 (base32
11d1b318 6856 "11299jj5ma8mi7b4majkyjy70y6zlqpgl8aql1c5lvfjavlpwmlp"))))
9273ee8f
BW
6857 (build-system ruby-build-system)
6858 (arguments
6859 `(#:phases
6860 (modify-phases %standard-phases
6861 (replace 'check
9923d5a4 6862 (lambda _ (invoke "qed")))
de6f6efd
MB
6863 (add-before 'validate-runpath 'replace-broken-symlink
6864 (lambda* (#:key outputs #:allow-other-keys)
6865 (let* ((out (assoc-ref outputs "out"))
3cb3fa67
CB
6866 (file (string-append
6867 out "/lib/ruby/vendor_ruby/gems/ae-"
6868 ,version "/lib/ae.yml")))
de6f6efd
MB
6869 ;; XXX: This symlink is broken since ruby 2.4.
6870 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
6871 (delete-file file)
6872 (symlink "../.index" file)
6873 #t))))))
9273ee8f
BW
6874 (propagated-inputs
6875 `(("ruby-ansi" ,ruby-ansi)))
6876 (native-inputs
6877 `(("ruby-qed" ,ruby-qed)))
6878 (synopsis "Assertions library")
6879 (description
6880 "Assertive Expressive (AE) is an assertions library specifically designed
6881for reuse by other test frameworks.")
11d1b318 6882 (home-page "https://rubyworks.github.io/ae/")
9273ee8f 6883 (license license:bsd-2)))
78bb471f
BW
6884
6885(define-public ruby-lemon
6886 (package
6887 (name "ruby-lemon")
6888 (version "0.9.1")
6889 (source
6890 (origin
6891 (method url-fetch)
6892 (uri (rubygems-uri "lemon" version))
6893 (sha256
6894 (base32
6895 "0gqhpgjavgpvx23rqpfqcv3d5bs8gc7lr9yvj8kxgp7mfbdc2jcm"))))
6896 (build-system ruby-build-system)
6897 (arguments
6898 `(#:phases
6899 (modify-phases %standard-phases
9923d5a4 6900 (replace 'check (lambda _ (invoke "qed"))))))
78bb471f
BW
6901 (propagated-inputs
6902 `(("ruby-ae" ,ruby-ae)
6903 ("ruby-ansi" ,ruby-ansi)
6904 ("ruby-rubytest" ,ruby-rubytest)))
6905 (native-inputs
6906 `(("ruby-qed" ,ruby-qed)))
6907 (synopsis "Test framework correlating code structure and test unit")
6908 (description
6909 "Lemon is a unit testing framework that enforces highly formal
6910case-to-class and unit-to-method test construction. This enforcement can help
6911focus concern on individual units of behavior.")
2f3800e5 6912 (home-page "https://rubyworks.github.io/lemon")
78bb471f 6913 (license license:bsd-2)))
0832804e
BW
6914
6915(define-public ruby-rubytest-cli
6916 (package
6917 (name "ruby-rubytest-cli")
6918 (version "0.2.0")
6919 (source
6920 (origin
6921 (method url-fetch)
6922 (uri (rubygems-uri "rubytest-cli" version))
6923 (sha256
6924 (base32
6925 "0n7hv4k1ba4fm3i98c6ydbsqhkxgbp52mhi70ba1x3mqzfvk438p"))))
6926 (build-system ruby-build-system)
6927 (arguments
6928 `(#:tests? #f)) ; no tests
6929 (propagated-inputs
6930 `(("ruby-ansi" ,ruby-ansi)
6931 ("ruby-rubytest" ,ruby-rubytest)))
6932 (synopsis "Command-line interface for rubytest")
6933 (description
6934 "Rubytest CLI is a command-line interface for running tests for
6935Rubytest-based test frameworks. It provides the @code{rubytest} executable.")
2f3800e5 6936 (home-page "https://rubyworks.github.io/rubytest-cli")
0832804e 6937 (license license:bsd-2)))
72ccbfe3
BW
6938
6939(define-public ruby-hashery
6940 (package
6941 (name "ruby-hashery")
cba96208 6942 (version "2.1.2")
72ccbfe3
BW
6943 (source
6944 (origin
6945 (method url-fetch)
6946 (uri (rubygems-uri "hashery" version))
6947 (sha256
6948 (base32
cba96208 6949 "0qj8815bf7q6q7llm5rzdz279gzmpqmqqicxnzv066a020iwqffj"))))
72ccbfe3
BW
6950 (build-system ruby-build-system)
6951 (arguments
6952 `(#:phases
6953 (modify-phases %standard-phases
6954 (replace 'check
6955 (lambda _
9923d5a4
TGR
6956 (invoke "qed")
6957 (invoke "rubytest" "-Ilib" "-Itest" "test/"))))))
72ccbfe3
BW
6958 (native-inputs
6959 `(("ruby-rubytest-cli" ,ruby-rubytest-cli)
6960 ("ruby-qed" ,ruby-qed)
6961 ("ruby-lemon" ,ruby-lemon)))
6962 (synopsis "Hash-like classes with extra features")
6963 (description
6964 "The Hashery is a tight collection of @code{Hash}-like classes.
6965Included are the auto-sorting @code{Dictionary} class, the efficient
6966@code{LRUHash}, the flexible @code{OpenHash} and the convenient
6967@code{KeyHash}. Nearly every class is a subclass of the @code{CRUDHash} which
6968defines a CRUD (Create, Read, Update and Delete) model on top of Ruby's
6969standard @code{Hash} making it possible to subclass and augment to fit any
6970specific use case.")
2f3800e5 6971 (home-page "https://rubyworks.github.io/hashery")
72ccbfe3 6972 (license license:bsd-2)))
1f1d71e0
BW
6973
6974(define-public ruby-rc4
6975 (package
6976 (name "ruby-rc4")
6977 (version "0.1.5")
6978 (source
6979 (origin
6980 (method url-fetch)
6981 (uri (rubygems-uri "ruby-rc4" version))
6982 (sha256
6983 (base32
6984 "00vci475258mmbvsdqkmqadlwn6gj9m01sp7b5a3zd90knil1k00"))))
6985 (build-system ruby-build-system)
6986 (arguments
6987 `(#:phases
6988 (modify-phases %standard-phases
6989 (replace 'check
6990 (lambda _
9923d5a4 6991 (invoke "rspec" "spec/rc4_spec.rb"))))))
1f1d71e0
BW
6992 (native-inputs
6993 `(("ruby-rspec" ,ruby-rspec-2)))
6994 (synopsis "Implementation of the RC4 algorithm")
6995 (description
6996 "RubyRC4 is a pure Ruby implementation of the RC4 algorithm.")
6997 (home-page "https://github.com/caiges/Ruby-RC4")
6998 (license license:expat)))
f3e085a8
BW
6999
7000(define-public ruby-afm
7001 (package
7002 (name "ruby-afm")
7003 (version "0.2.2")
7004 (source
7005 (origin
7006 (method url-fetch)
7007 (uri (rubygems-uri "afm" version))
7008 (sha256
7009 (base32
7010 "06kj9hgd0z8pj27bxp2diwqh6fv7qhwwm17z64rhdc4sfn76jgn8"))))
7011 (build-system ruby-build-system)
7012 (native-inputs
7013 `(("bundler" ,bundler)))
7014 (synopsis "Read Adobe Font Metrics (afm) files")
7015 (description
7016 "This library provides methods to read @dfn{Adobe Font Metrics} (afm)
7017files and use the data therein.")
7bf837fd 7018 (home-page "https://github.com/halfbyte/afm")
f3e085a8 7019 (license license:expat)))
acb6be42
BW
7020
7021(define-public ruby-ascii85
7022 (package
7023 (name "ruby-ascii85")
5854082a 7024 (version "1.0.3")
acb6be42
BW
7025 (source
7026 (origin
7027 (method url-fetch)
7028 (uri (rubygems-uri "Ascii85" version))
7029 (sha256
7030 (base32
5854082a 7031 "0658m37jjjn6drzqg1gk4p6c205mgp7g1jh2d00n4ngghgmz5qvs"))))
acb6be42
BW
7032 (build-system ruby-build-system)
7033 (native-inputs
7034 `(("bundler" ,bundler)))
7035 (synopsis "Encode and decode Ascii85 binary-to-text encoding")
7036 (description
7037 "This library provides methods to encode and decode Ascii85
7038binary-to-text encoding. The main modern use of Ascii85 is in PostScript and
7039@dfn{Portable Document Format} (PDF) file formats.")
7040 (home-page "https://github.com/datawraith/ascii85gem")
7041 (license license:expat)))
edf8caae
BW
7042
7043(define-public ruby-ttfunk
7044 (package
7045 (name "ruby-ttfunk")
afb7a3e8 7046 (version "1.5.1")
edf8caae
BW
7047 (source
7048 (origin
4e110825 7049 (method git-fetch)
edf8caae 7050 ;; fetch from github as the gem does not contain testing code
4e110825
EF
7051 (uri (git-reference
7052 (url "https://github.com/prawnpdf/ttfunk")
7053 (commit version)))
7054 (file-name (git-file-name name version))
edf8caae
BW
7055 (sha256
7056 (base32
4e110825 7057 "0dx9891zcli0sjrslmsvrwalv86hbjbqlmbrcasnjr069v05h9v9"))))
edf8caae
BW
7058 (build-system ruby-build-system)
7059 (arguments
7060 `(#:test-target "spec"
7061 #:phases
7062 (modify-phases %standard-phases
afb7a3e8
JL
7063 (add-before 'build 'remove-ssh
7064 (lambda _
7065 ;; remove dependency on an ssh key pair that doesn't exist
7066 (substitute* "ttfunk.gemspec"
7067 (("spec.signing_key.*") ""))
7068 #t))
edf8caae
BW
7069 (add-before 'check 'remove-rubocop
7070 (lambda _
7071 ;; remove rubocop as a dependency as not needed for testing
7072 (substitute* "ttfunk.gemspec"
7073 (("spec.add_development_dependency\\('rubocop'.*") ""))
7074 (substitute* "Rakefile"
7075 (("require 'rubocop/rake_task'") "")
afb7a3e8 7076 (("RuboCop::RakeTask.new") ""))
edf8caae
BW
7077 #t)))))
7078 (native-inputs
7079 `(("ruby-rspec" ,ruby-rspec)
afb7a3e8 7080 ("ruby-yard" ,ruby-yard)
edf8caae
BW
7081 ("bundler" ,bundler)))
7082 (synopsis "Font metrics parser for the Prawn PDF generator")
7083 (description
7084 "TTFunk is a TrueType font parser written in pure Ruby. It is used as
7085part of the Prawn PDF generator.")
7086 (home-page "https://github.com/prawnpdf/ttfunk")
7087 ;; From the README: "Matz's terms for Ruby, GPLv2, or GPLv3. See LICENSE
7088 ;; for details."
7089 (license (list license:gpl2 license:gpl3 license:ruby))))
cbdd428c 7090
9270298f
BW
7091(define-public ruby-puma
7092 (package
7093 (name "ruby-puma")
63755fcd 7094 (version "3.9.1")
9270298f
BW
7095 (source
7096 (origin
a6cffe6e 7097 (method git-fetch)
9270298f 7098 ;; Fetch from GitHub because distributed gem does not contain tests.
a6cffe6e
EF
7099 (uri (git-reference
7100 (url "https://github.com/puma/puma")
7101 (commit (string-append "v" version))))
7102 (file-name (git-file-name name version))
9270298f
BW
7103 (sha256
7104 (base32
a6cffe6e 7105 "1kj75k81iik3aj73pkc9ixj9rwf95ipkyma65n28m64dgw02qi1f"))))
9270298f
BW
7106 (build-system ruby-build-system)
7107 (arguments
63755fcd
BW
7108 `(#:tests? #f ; Tests require an out-dated version of minitest.
7109 #:phases
9270298f
BW
7110 (modify-phases %standard-phases
7111 (add-before 'build 'fix-gemspec
7112 (lambda _
7113 (substitute* "puma.gemspec"
7114 (("git ls-files") "find * |sort"))
7115 #t)))))
9270298f
BW
7116 (synopsis "Simple, concurrent HTTP server for Ruby/Rack")
7117 (description
7118 "Puma is a simple, fast, threaded, and highly concurrent HTTP 1.1 server
7119for Ruby/Rack applications. Puma is intended for use in both development and
7120production environments. In order to get the best throughput, it is highly
7121recommended that you use a Ruby implementation with real threads like Rubinius
7122or JRuby.")
a6cffe6e 7123 (home-page "https://puma.io/")
9270298f
BW
7124 (license license:expat)))
7125
b0813490
BW
7126(define-public ruby-hoe-git
7127 (package
7128 (name "ruby-hoe-git")
7129 (version "1.6.0")
7130 (source
7131 (origin
7132 (method url-fetch)
7133 (uri (rubygems-uri "hoe-git" version))
7134 (sha256
7135 (base32
7136 "10jmmbjm0lkglwxbn4rpqghgg1ipjxrswm117n50adhmy8yij650"))))
7137 (build-system ruby-build-system)
7138 (propagated-inputs
7139 `(("ruby-hoe" ,ruby-hoe)
7140 ("git" ,git)))
7141 (synopsis "Hoe plugins for tighter Git integration")
7142 (description
7143 "This package provides a set of Hoe plugins for tighter Git integration.
7144It provides tasks to automate release tagging and pushing and changelog
7145generation.")
7bf837fd 7146 (home-page "https://github.com/jbarnette/hoe-git")
b0813490
BW
7147 (license license:expat)))
7148
cbdd428c
BW
7149(define-public ruby-sequel
7150 (package
7151 (name "ruby-sequel")
65a7f09c 7152 (version "4.49.0")
cbdd428c
BW
7153 (source
7154 (origin
7155 (method url-fetch)
7156 (uri (rubygems-uri "sequel" version))
7157 (sha256
7158 (base32
65a7f09c 7159 "010p4a60npppvgbyw7pq5xia8aydpgxdlhh3qjm2615kwjsw3fl8"))))
cbdd428c
BW
7160 (build-system ruby-build-system)
7161 (arguments
7162 '(#:tests? #f)) ; Avoid dependency loop with ruby-minitest-hooks.
7163 (synopsis "Database toolkit for Ruby")
7164 (description "Sequel provides thread safety, connection pooling and a
7165concise DSL for constructing SQL queries and table schemas. It includes a
7166comprehensive ORM layer for mapping records to Ruby objects and handling
7167associated records.")
7168 (home-page "http://sequel.jeremyevans.net")
7169 (license license:expat)))
3cc78097
BW
7170
7171(define-public ruby-timecop
7172 (package
7173 (name "ruby-timecop")
3d4a5eb5 7174 (version "0.9.1")
3cc78097
BW
7175 (source
7176 (origin
7177 (method url-fetch)
7178 (uri (rubygems-uri "timecop" version))
7179 (sha256
7180 (base32
3d4a5eb5 7181 "0d7mm786180v4kzvn1f77rhfppsg5n0sq2bdx63x9nv114zm8jrp"))))
3cc78097
BW
7182 (build-system ruby-build-system)
7183 (arguments
7184 `(#:phases
7185 (modify-phases %standard-phases
7186 (add-before 'check 'set-check-rubylib
7187 (lambda _
7188 ;; Set RUBYLIB so timecop tests finds its own lib.
7189 (setenv "RUBYLIB" "lib")
7190 #t)))))
7191 (native-inputs
7192 `(("bundler" ,bundler)
7193 ("ruby-minitest-rg" ,ruby-minitest-rg)
7194 ("ruby-mocha" ,ruby-mocha)
7195 ("ruby-activesupport" ,ruby-activesupport)))
66e07664 7196 (synopsis "Test mocks for time-dependent functions")
3cc78097
BW
7197 (description
7198 "Timecop provides \"time travel\" and \"time freezing\" capabilities,
7199making it easier to test time-dependent code. It provides a unified method to
7200mock @code{Time.now}, @code{Date.today}, and @code{DateTime.now} in a single
7201call.")
7202 (home-page "https://github.com/travisjeffery/timecop")
7203 (license license:expat)))
7204
dae620b8
BW
7205(define-public ruby-concurrent
7206 (package
7207 (name "ruby-concurrent")
1007640a 7208 (version "1.1.5")
dae620b8
BW
7209 (source
7210 (origin
8fcba3be 7211 (method git-fetch)
dae620b8
BW
7212 ;; Download from GitHub because the rubygems version does not contain
7213 ;; Rakefile.
8fcba3be
MB
7214 (uri (git-reference
7215 (url "https://github.com/ruby-concurrency/concurrent-ruby")
7216 (commit (string-append "v" version))))
7217 (file-name (git-file-name name version))
dae620b8
BW
7218 (sha256
7219 (base32
1007640a 7220 "193q2k47vk7qdvv9hlhmmdxgy91xl4imapyk1ijdg9vgf46knyzj"))))
dae620b8
BW
7221 (build-system ruby-build-system)
7222 (arguments
1007640a 7223 `(#:test-target "ci"
dae620b8
BW
7224 #:phases
7225 (modify-phases %standard-phases
520e89eb 7226 (add-before 'replace-git-ls-files 'remove-extra-gemspecs
dae620b8
BW
7227 (lambda _
7228 ;; Delete extra gemspec files so 'first-gemspec' chooses the
7229 ;; correct one.
7230 (delete-file "concurrent-ruby-edge.gemspec")
7231 (delete-file "concurrent-ruby-ext.gemspec")
7232 #t))
1007640a 7233 (replace 'replace-git-ls-files
520e89eb 7234 (lambda _
1007640a
MB
7235 ;; XXX: The default substitution made by this phase is not fully
7236 ;; compatible with "git ls-files". The latter produces file names
7237 ;; such as "lib/foo", whereas ruby-build-system uses "find . [...]"
7238 ;; which gives "./lib/foo". That difference in turn breaks the
7239 ;; comparison against a glob pattern in this script.
7240 (substitute* "concurrent-ruby.gemspec"
7241 (("git ls-files") "find * -type f | sort"))
7242 #t))
7243 (add-before 'build 'remove-jar-from-gemspec
520e89eb 7244 (lambda _
1007640a
MB
7245 ;; The gemspec wants to include a JAR file that we do not build
7246 ;; nor need.
7247 (substitute* "concurrent-ruby.gemspec"
7248 (("'lib/concurrent/concurrent_ruby.jar'")
7249 ""))
7250 #t))
7251 (add-before 'build 'remove-rake_compiler_dock-dependency
7252 (lambda _
7253 ;; This library is only used when building for non-MRI targets.
7254 (substitute* "Rakefile"
7255 (("require 'rake_compiler_dock'")
7256 ""))
520e89eb 7257 #t))
9019b37f
BW
7258 (add-before 'check 'remove-timecop-dependency
7259 ;; Remove timecop-dependent tests as having timecop as a depedency
7260 ;; causes circular depedencies.
7261 (lambda _
7262 (delete-file "spec/concurrent/executor/timer_set_spec.rb")
7263 (delete-file "spec/concurrent/scheduled_task_spec.rb")
7264 #t)))))
dae620b8
BW
7265 (native-inputs
7266 `(("ruby-rake-compiler" ,ruby-rake-compiler)
9019b37f 7267 ("ruby-rspec" ,ruby-rspec)))
dae620b8
BW
7268 (synopsis "Concurrency tools for Ruby")
7269 (description
7270 "This library provides modern concurrency tools including agents,
7271futures, promises, thread pools, actors, supervisors, and more. It is
7272inspired by Erlang, Clojure, Go, JavaScript, actors and classic concurrency
7273patterns.")
7274 (home-page "http://www.concurrent-ruby.com")
7275 (license license:expat)))
2de61e34
BW
7276
7277(define-public ruby-pkg-config
7278 (package
7279 (name "ruby-pkg-config")
884a80dd 7280 (version "1.2.5")
2de61e34
BW
7281 (source
7282 (origin
7283 (method url-fetch)
7284 (uri (rubygems-uri "pkg-config" version))
7285 (sha256
7286 (base32
884a80dd 7287 "056mzqdh4yjznsg36fi0xiq76f24vxlhzh2n4az919l3x5k318ar"))))
2de61e34
BW
7288 (build-system ruby-build-system)
7289 (arguments
7290 ;; Tests require extra files not included in the gem.
7291 `(#:tests? #f))
7292 (synopsis "Detect libraries for compiling Ruby native extensions")
7293 (description
7294 "@code{pkg-config} can be used in your extconf.rb to properly detect need
7295libraries for compiling Ruby native extensions.")
7296 (home-page "https://github.com/ruby-gnome2/pkg-config")
7297 (license license:lgpl2.0+)))
6689c636
MFM
7298
7299(define-public ruby-net-http-digest-auth
7300 (package
7301 (name "ruby-net-http-digest-auth")
ba074a85 7302 (version "1.4.1")
6689c636
MFM
7303 (source
7304 (origin
7305 (method url-fetch)
7306 (uri (rubygems-uri "net-http-digest_auth" version))
7307 (sha256
7308 (base32
ba074a85 7309 "1nq859b0gh2vjhvl1qh1zrk09pc7p54r9i6nnn6sb06iv07db2jb"))))
6689c636
MFM
7310 (build-system ruby-build-system)
7311 (native-inputs
7312 `(("ruby-hoe" ,ruby-hoe)))
7313 (synopsis "RFC 2617 HTTP digest authentication library")
7314 (description
7315 "This library implements HTTP's digest authentication scheme based on
7316RFC 2617. This enables the use of the digest authentication scheme instead
7317of the more insecure basic authentication scheme.")
7bf837fd 7318 (home-page "https://github.com/drbrain/net-http-digest_auth")
6689c636 7319 (license license:expat)))
06116573 7320
7321(define-public ruby-mail
7322 (package
7323 (name "ruby-mail")
04de0cb5 7324 (version "2.6.6")
06116573 7325 (source
7326 (origin
7327 (method url-fetch)
7328 (uri (rubygems-uri "mail" version))
7329 (sha256
7330 (base32
04de0cb5 7331 "0d7lhj2dw52ycls6xigkfz6zvfhc6qggply9iycjmcyj9760yvz9"))))
06116573 7332 (build-system ruby-build-system)
7333 (propagated-inputs
7334 `(("ruby-mime-types" ,ruby-mime-types)))
7335 (arguments
7336 ;; Tests require extra gems not included in the Gemfile.
7337 ;; XXX: Try enabling this for the next version with mini_mime.
7338 `(#:tests? #f))
7339 (synopsis "Mail library for Ruby")
7340 (description
7341 "Mail is an internet library for Ruby that is designed to handle email
7342generation, parsing and sending. The purpose of this library is to provide
7343a single point of access to handle all email functions, including sending
7344and receiving emails. All network type actions are done through proxy
7345methods to @code{Net::SMTP}, @code{Net::POP3} etc.
7346
7347Mail has been designed with a very simple object oriented system that
7348really opens up the email messages you are parsing, if you know what you
7349are doing, you can fiddle with every last bit of your email directly.")
7350 (home-page "https://github.com/mikel/mail")
7351 (license license:expat)))
9b4c8e1b 7352
4d372cb9
CB
7353(define-public ruby-mathn
7354 (package
7355 (name "ruby-mathn")
7356 (version "0.1.0")
7357 (source
7358 (origin
7359 (method url-fetch)
7360 (uri (rubygems-uri "mathn" version))
7361 (sha256
7362 (base32
7363 "1wn812llln9jzgybz2d7536q39z3gi99i6fi0j1dapcpzvhgrr0p"))))
7364 (build-system ruby-build-system)
7365 (native-inputs
7366 `(("bundler" ,bundler)
7367 ("ruby-rake-compiler" ,ruby-rake-compiler)))
7368 (synopsis "Extends math operations for increased precision")
7369 (description
7370 "This gem makes mathematical operations more precise in Ruby and
7371integrates other mathematical standard libraries. Prior to Ruby 2.5,
7372@code{mathn} was part of the Ruby standard library.")
7373 (home-page "https://github.com/ruby/mathn")
7374 (license license:bsd-2)))
7375
9b4c8e1b
BW
7376(define-public ruby-code-statistics
7377 (package
7378 (name "ruby-code-statistics")
7379 (version "0.2.13")
7380 (source
7381 (origin
7382 (method url-fetch)
7383 (uri (rubygems-uri "code_statistics" version))
7384 (sha256
7385 (base32
7386 "07rdpsbwbmh4vp8nxyh308cj7am2pbrfhv9v5xr2d5gq8hnnsm93"))))
7387 (build-system ruby-build-system)
7388 (arguments
7389 `(#:tests? #f)) ; Not all test code is included in gem.
7390 (synopsis "Port of the rails 'rake stats' method")
7391 (description
7392 "This gem is a port of the rails 'rake stats' method so it can be made
7393more robust and work for non rails projects.")
7394 (home-page "http://github.com/danmayer/code_statistics")
7395 (license license:expat)))
f90c25c1
CL
7396
7397(define-public ruby-rubypants
7398 (package
7399 (name "ruby-rubypants")
7400 (version "0.6.0")
7401 (source (origin
7402 (method url-fetch)
7403 (uri (rubygems-uri "rubypants" version))
7404 (sha256
7405 (base32
7406 "0xpqkslan2wkyal2h9qhplkr5d4sdn7q6csigrhnljjpp8j4qfsh"))))
7407 (build-system ruby-build-system)
7408 (arguments
7409 '(#:tests? #f)) ; need Codecov
7410 (synopsis "Port of the smart-quotes library SmartyPants")
7411 (description
7412 "RubyPants is a Ruby port of the smart-quotes library SmartyPants. The
7413original SmartyPants is a web publishing plug-in for Movable Type, Blosxom,
7414and BBEdit that easily translates plain ASCII punctuation characters into
7415smart typographic punctuation HTML entities.")
7416 (home-page "https://github.com/jmcnevin/rubypants")
7417 (license license:bsd-2)))
beb34835
CL
7418
7419(define-public ruby-org-ruby
7420 (package
7421 (name "ruby-org-ruby")
7422 (version "0.9.12")
7423 (source (origin
7424 (method url-fetch)
7425 (uri (rubygems-uri "org-ruby" version))
7426 (sha256
7427 (base32
7428 "0x69s7aysfiwlcpd9hkvksfyld34d8kxr62adb59vjvh8hxfrjwk"))))
7429 (build-system ruby-build-system)
7430 (arguments
7431 '(#:tests? #f)) ; no rakefile
7432 (propagated-inputs
7433 `(("ruby-rubypants" ,ruby-rubypants)))
7434 (synopsis "Org-mode parser written in Ruby")
7435 (description
7436 "Org-ruby is an org-mode parser written in Ruby. The most significant
7437thing this library does today is convert org-mode files to HTML or Textile or
7438Markdown.")
7439 (home-page "https://github.com/wallyqs/org-ruby")
7440 (license license:expat)))
670ee20a
BW
7441
7442(define-public ruby-rake
7443 (package
7444 (name "ruby-rake")
d6fb32b8 7445 (version "12.3.1")
670ee20a
BW
7446 (source
7447 (origin
7448 (method url-fetch)
7449 (uri (rubygems-uri "rake" version))
7450 (sha256
7451 (base32
d6fb32b8 7452 "1idi53jay34ba9j68c3mfr9wwkg3cd9qh0fn9cg42hv72c6q8dyg"))))
670ee20a
BW
7453 (build-system ruby-build-system)
7454 (native-inputs
7455 `(("bundler" ,bundler)))
7456 (synopsis "Rake is a Make-like program implemented in Ruby")
7457 (description
7458 "Rake is a Make-like program where tasks and dependencies are specified
7459in standard Ruby syntax.")
7460 (home-page "https://github.com/ruby/rake")
7461 (license license:expat)))
45498f51 7462
51420124 7463(define-public ruby-childprocess
45498f51
DM
7464 (package
7465 (name "ruby-childprocess")
51420124 7466 (version "0.9.0")
45498f51
DM
7467 (source
7468 (origin
7469 (method url-fetch)
7470 (uri (rubygems-uri "childprocess" version))
7471 (sha256
7472 (base32
51420124 7473 "0a61922kmvcxyj5l70fycapr87gz1dzzlkfpq85rfqk5vdh3d28p"))))
45498f51
DM
7474 (build-system ruby-build-system)
7475 (arguments
7476 `(#:tests? #f))
7477 (native-inputs
7478 `(("bundler" ,bundler)
7479 ("ruby-rspec" ,ruby-rspec)))
7480 (propagated-inputs
7481 `(("ruby-ffi" ,ruby-ffi)))
7482 (synopsis "Control external programs running in the background, in Ruby")
7483 (description "@code{childprocess} provides a gem to control external
7484programs running in the background, in Ruby.")
7485 (home-page "http://github.com/enkessler/childprocess")
7486 (license license:expat)))
1f10e28d 7487
0d16905b
JL
7488(define-public ruby-public-suffix
7489 (package
7490 (name "ruby-public-suffix")
9de12df7 7491 (version "4.0.1")
0d16905b
JL
7492 (source (origin
7493 (method url-fetch)
7494 (uri (rubygems-uri "public_suffix" version))
7495 (sha256
7496 (base32
9de12df7 7497 "0xnfv2j2bqgdpg2yq9i2rxby0w2sc9h5iyjkpaas2xknwrgmhdb0"))))
0d16905b
JL
7498 (build-system ruby-build-system)
7499 (arguments
1f4fc125
CB
7500 '(#:phases
7501 (modify-phases %standard-phases
7502 ;; Remove the requirement on Rubocop, as it isn't useful to run, and
7503 ;; including it as an input can lead to circular dependencies.
7504 (add-after 'unpack 'remove-rubocop-from-Rakefile
7505 (lambda _
7506 (substitute* "Rakefile"
7507 (("require \"rubocop/rake\\_task\"") "")
7508 (("RuboCop::RakeTask\\.new") ""))
7509 #t)))))
7510 (native-inputs
7511 `(("bundler" ,bundler)
7512 ("ruby-yard" ,ruby-yard)
7513 ("ruby-mocha" ,ruby-mocha)
7514 ("ruby-minitest-reporters" ,ruby-minitest-reporters)))
0d16905b
JL
7515 (home-page "https://simonecarletti.com/code/publicsuffix-ruby/")
7516 (synopsis "Domain name parser")
7517 (description "The gem @code{public_suffix} is a domain name parser,
7518written in Ruby, and based on the @dfn{Public Suffix List}. A public suffix
7519is one under which Internet users can (or historically could) directly
7520register names. Some examples of public suffixes are @code{.com},
7521@code{.co.uk} and @code{pvt.k12.ma.us}. The Public Suffix List is a list of
7522all known public suffixes.")
7523 (license license:expat)))
6f2c4efb
JL
7524
7525(define-public ruby-addressable
7526 (package
7527 (name "ruby-addressable")
91f7ee87 7528 (version "2.7.0")
6f2c4efb
JL
7529 (source (origin
7530 (method url-fetch)
7531 (uri (rubygems-uri "addressable" version))
7532 (sha256
7533 (base32
91f7ee87 7534 "1fvchp2rhp2rmigx7qglf69xvjqvzq7x0g49naliw29r2bz656sy"))))
6f2c4efb 7535 (build-system ruby-build-system)
0a794b30
CB
7536 (arguments
7537 '(#:test-target "spec"
7538 #:phases
7539 (modify-phases %standard-phases
7540 (add-after 'unpack 'remove-unnecessary-dependencies-from-Gemfile
7541 (lambda _
7542 (substitute* "Gemfile"
7543 (("git: 'https://github.com/sporkmonger/rack-mount.git',") "")
7544 ((".*launchy.*") "")
7545 ((".*rake.*") "gem 'rake'\n")
7546 ((".*redcarpet.*") ""))
7547 #t))
7548 (add-before 'check 'delete-network-dependent-test
7549 (lambda _
7550 (delete-file "spec/addressable/net_http_compat_spec.rb")
7551 #t)))))
7552 (native-inputs
7553 `(("ruby-rspec" ,ruby-rspec)
7554 ("bundler" ,bundler)
7555 ("ruby-idn-ruby" ,ruby-idn-ruby)
7556 ("ruby-sporkmonger-rack-mount" ,ruby-sporkmonger-rack-mount)
7557 ("ruby-rspec-its", ruby-rspec-its)
7558 ("ruby-yard" ,ruby-yard)
7559 ("ruby-simplecov" ,ruby-simplecov)))
6f2c4efb
JL
7560 (propagated-inputs
7561 `(("ruby-public-suffix" ,ruby-public-suffix)))
6f2c4efb
JL
7562 (home-page "https://github.com/sporkmonger/addressable")
7563 (synopsis "Alternative URI implementation")
7564 (description "Addressable is a replacement for the URI implementation that
7565is part of Ruby's standard library. It more closely conforms to RFC 3986,
7566RFC 3987, and RFC 6570 (level 4), providing support for IRIs and URI templates.")
7567 (license license:asl2.0)))
9c7f15c0
JL
7568
7569(define-public ruby-colorator
7570 (package
7571 (name "ruby-colorator")
7572 (version "1.1.0")
7573 (source (origin
7574 (method url-fetch)
7575 (uri (rubygems-uri "colorator" version))
7576 (sha256
7577 (base32
7578 "0f7wvpam948cglrciyqd798gdc6z3cfijciavd0dfixgaypmvy72"))))
7579 (build-system ruby-build-system)
7580 (arguments
7581 ;; No test target
7582 `(#:tests? #f))
7583 (home-page "http://octopress.org/colorator/")
7584 (synopsis "Terminal color library")
7585 (description "Colorator is a Ruby gem that helps you colorize your text
7586for the terminal.")
7587 (license license:expat)))
78b9c291
JL
7588
7589(define-public ruby-command-line-reporter
7590 (package
7591 (name "ruby-command-line-reporter")
b448e408 7592 (version "4.0.1")
78b9c291
JL
7593 (source (origin
7594 (method url-fetch)
7595 (uri (rubygems-uri "command_line_reporter" version))
7596 (sha256
7597 (base32
b448e408 7598 "1l0zxkh5n9dxfw46lpkg416ljpldlq1bgdhqh0d118dk338nz4ll"))))
78b9c291
JL
7599 (build-system ruby-build-system)
7600 (arguments
7601 ;; No Rakefile
7602 `(#:tests? #f
7603 #:phases
7604 (modify-phases %standard-phases
7605 (add-before 'build 'fix-dependencies
7606 (lambda _
7607 (substitute* ".gemspec"
7608 ;; colored is unmaintained
7609 (("colored") "colorator")
7610 ;; colorator version
7611 (("= 1.2") "= 1.1"))
7612 #t)))))
7613 (propagated-inputs `(("ruby-colorator" ,ruby-colorator)))
7614 (home-page "https://github.com/wbailey/command_line_reporter")
7615 (synopsis "Report production while executing Ruby scripts")
7616 (description "This gem provides a DSL that makes it easy to write reports
7617of various types in ruby. It eliminates the need to litter your source with
7618puts statements, instead providing a more readable, expressive interface to
7619your application.")
7620 (license license:asl2.0)))
f22c0387
JL
7621
7622(define-public ruby-command-line-reporter-3
7623 (package
7624 (inherit ruby-command-line-reporter)
7625 (version "3.3.6")
7626 (source (origin
7627 (method url-fetch)
7628 (uri (rubygems-uri "command_line_reporter" version))
7629 (sha256
7630 (base32
7631 "1h39zqqxp3k4qk49ajpx0jps1vmvxgkh43mqkb6znk583bl0fv71"))))))
6bba8ecf
JL
7632
7633(define-public ruby-rdoc
7634 (package
7635 (name "ruby-rdoc")
7636 (version "6.0.4")
7637 (source
7638 (origin
7639 (method url-fetch)
7640 (uri (rubygems-uri "rdoc" version))
7641 (sha256
7642 (base32
7643 "0anv42cqcdc6g4n386mrva7mgav5i0c2ry3yzvzzc6z6hymkmcr7"))))
7644 (build-system ruby-build-system)
7645 (native-inputs
7646 `(("bundler" ,bundler)))
7647 (home-page "https://ruby.github.io/rdoc/")
7648 (synopsis "HTML and command-line documentation utility")
7649 (description "RDoc produces HTML and command-line documentation for Ruby
7650projects. RDoc includes the +rdoc+ and +ri+ tools for generating and displaying
7651documentation from the command-line.")
7652 (license license:gpl2+)))
18077ffc
JL
7653
7654(define-public ruby-sass-listen
7655 (package
7656 (name "ruby-sass-listen")
7657 (version "4.0.0")
7658 (source (origin
7659 (method url-fetch)
7660 (uri (rubygems-uri "sass-listen" version))
7661 (sha256
7662 (base32
7663 "0xw3q46cmahkgyldid5hwyiwacp590zj2vmswlll68ryvmvcp7df"))))
7664 (build-system ruby-build-system)
7665 (arguments
7666 ;; No test target
7667 `(#:tests? #f))
7668 (propagated-inputs
7669 `(("ruby-rb-fsevent" ,ruby-rb-fsevent)
7670 ("ruby-rb-inotify" ,ruby-rb-inotify)))
7671 (home-page "https://github.com/sass/listen")
7672 (synopsis "File modification notification library")
7673 (description "The Listen gem listens to file modifications and notifies you
7674about the changes.")
7675 (license license:expat)))
0c8eedc1
JL
7676
7677(define-public ruby-terminfo
7678 (package
7679 (name "ruby-terminfo")
7680 (version "0.1.1")
7681 (source
7682 (origin
7683 (method url-fetch)
7684 (uri (rubygems-uri "ruby-terminfo" version))
7685 (sha256
7686 (base32
7687 "0rl4ic5pzvrpgd42z0c1s2n3j39c9znksblxxvmhkzrc0ckyg2cm"))))
7688 (build-system ruby-build-system)
7689 (arguments
7690 `(#:test-target "test"
7691 ;; Rakefile requires old packages and would need modification to
7692 ;; work with current software.
7693 #:tests? #f))
7694 (inputs
7695 `(("ncurses" ,ncurses)))
7696 (native-inputs
7697 `(("ruby-rubygems-tasks" ,ruby-rubygems-tasks)
7698 ("ruby-rdoc" ,ruby-rdoc)))
7699 (home-page "http://www.a-k-r.org/ruby-terminfo/")
7700 (synopsis "Terminfo binding for Ruby")
7701 (description "Ruby-terminfo provides terminfo binding for Ruby.")
7702 (license license:bsd-3)))
ddc3a667
JL
7703
7704(define-public ruby-diffy
7705 (package
7706 (name "ruby-diffy")
7707 (version "3.2.1")
7708 (source
7709 (origin
7710 (method url-fetch)
7711 (uri (rubygems-uri "diffy" version))
7712 (sha256
7713 (base32
7714 "119imrkn01agwhx5raxhknsi331y5i4yda7r0ws0an6905ximzjg"))))
7715 (build-system ruby-build-system)
7716 (arguments
7717 ;; No tests
7718 `(#:tests? #f))
7719 (native-inputs
7720 `(("ruby-rspec" ,ruby-rspec)))
7721 (home-page "https://github.com/samg/diffy")
7722 (synopsis "Convenient diffing in ruby")
7723 (description "Diffy provides a convenient way to generate a diff from two
7724strings or files.")
7725 (license license:expat)))
6456beef
JL
7726
7727(define-public ruby-sass-spec
7728 (package
7729 (name "ruby-sass-spec")
7730 (version "3.5.4")
11df8321
TGR
7731 (source
7732 (origin
7733 (method git-fetch)
7734 (uri (git-reference
7735 (url "https://github.com/sass/sass-spec.git")
7736 (commit (string-append "v" version))))
7737 (file-name (git-file-name name version))
7738 (sha256
7739 (base32 "1zsw66830w0xlc7kxz6fm4b5nyb44vdsdgm9mgy06s5aixx83pwr"))))
6456beef
JL
7740 (build-system ruby-build-system)
7741 (propagated-inputs
7742 `(("ruby-command-line-reporter-3" ,ruby-command-line-reporter-3)
7743 ("ruby-diffy" ,ruby-diffy)
7744 ("ruby-terminfo" ,ruby-terminfo)))
7745 (arguments
2c7cb711
CB
7746 `(;; This package contains tests for a sass implementation, and the to
7747 ;; avoid any circular dependencies, the tests are not run here
7748 #:tests? #f
7749 #:phases
7750 (modify-phases %standard-phases
7751 (add-after 'unpack 'patch-test
7752 (lambda _
7753 (delete-file "spec/values/colors/alpha_hex-3.5/error")
7754 (substitute* "spec/values/colors/alpha_hex-3.5/expected_output.css"
7755 (("string") "color")))))))
6456beef
JL
7756 (home-page "https://github.com/sass/sass-spec")
7757 (synopsis "Test suite for Sass")
7758 (description "Sass Spec is a test suite for Sass. Test cases are all in
7759the @file{spec} directory.")
7760 (license license:expat)))
f00f4492
JL
7761
7762(define-public ruby-sass
7763 (package
7764 (name "ruby-sass")
11ff2adc 7765 (version "3.6.0")
f00f4492
JL
7766 (source (origin
7767 (method url-fetch)
7768 (uri (rubygems-uri "sass" version))
7769 (sha256
7770 (base32
11ff2adc 7771 "18c6prbw9wl8bqhb2435pd9s0lzarl3g7xf8pmyla28zblvwxmyh"))))
f00f4492
JL
7772 (build-system ruby-build-system)
7773 (propagated-inputs
7774 `(("ruby-sass-listen" ,ruby-sass-listen)))
7775 (native-inputs
11ff2adc
CB
7776 `(("ruby-sass-spec" ,ruby-sass-spec)
7777 ("ruby-mathn" ,ruby-mathn)))
f00f4492
JL
7778 (home-page "http://sass-lang.com/")
7779 (synopsis "CSS extension language")
7780 (description "Sass is a CSS extension language. It extends CSS with
7781features that don't exist yet like variables, nesting, mixins and inheritance.")
7782 (license license:expat)))
5e242cb4 7783
9efc888d
CB
7784(define-public ruby-sassc
7785 (package
7786 (name "ruby-sassc")
7787 (version "2.0.1")
7788 (source
7789 (origin
7790 (method url-fetch)
7791 (uri (rubygems-uri "sassc" version))
7792 (sha256
7793 (base32
7794 "1sr4825rlwsrl7xrsm0sgalcpf5zgp4i56dbi3qxfa9lhs8r6zh4"))))
7795 (build-system ruby-build-system)
7796 (arguments
7797 '(#:phases
7798 (modify-phases %standard-phases
7799 ;; TODO: This would be better as a snippet, but the ruby-build-system
7800 ;; doesn't seem to support that
7801 (add-after 'unpack 'remove-libsass
7802 (lambda _
7803 (delete-file-recursively "ext")
7804 #t))
7805 (add-after 'unpack 'dont-check-the-libsass-version
7806 (lambda _
7807 (substitute* "test/native_test.rb"
7808 (("assert_equal.*Native\\.version") ""))
7809 #t))
7810 (add-after 'unpack 'remove-git-from-gemspec
7811 (lambda _
7812 (substitute* "sassc.gemspec"
7813 (("`git ls-files -z`") "`find . -type f -print0 |sort -z`")
7814 (("`git submodule --quiet foreach pwd`") "''"))
7815 #t))
7816 (add-after 'unpack 'remove-extensions-from-gemspec
7817 (lambda _
7818 (substitute* "sassc.gemspec"
7819 (("\\[\"ext/Rakefile\"\\]") "[]"))
7820 #t))
7821 (add-after 'unpack 'fix-Rakefile
7822 (lambda _
7823 (substitute* "Rakefile"
7824 (("test: 'libsass:compile'") ":test"))
7825 #t))
7826 (add-after 'unpack 'remove-unnecessary-dependencies
7827 (lambda _
7828 (substitute* "test/test_helper.rb"
7829 (("require \"pry\"") ""))
7830 #t))
7831 (add-before 'build 'patch-native.rb
7832 (lambda* (#:key inputs #:allow-other-keys)
7833 (substitute* "lib/sassc/native.rb"
7834 ((".*gem_root = spec.gem_dir") "")
7835 (("ffi_lib .*\n")
7836 (string-append
7837 "ffi_lib '" (assoc-ref inputs "libsass") "/lib/libsass.so'")))
7838 #t))
7839 ;; The gemspec still references the libsass files, so just keep the
7840 ;; one in the gem.
7841 (delete 'extract-gemspec))))
7842 (propagated-inputs
7843 `(("ruby-ffi" ,ruby-ffi)
7844 ("ruby-rake" ,ruby-rake)))
7845 (inputs
7846 `(("libsass" ,libsass)))
7847 (native-inputs
7848 `(("bundler" ,bundler)
7849 ("ruby-minitest-around" ,ruby-minitest-around)
7850 ("ruby-test-construct" ,ruby-test-construct)))
7851 (synopsis "Use libsss from Ruby")
7852 (description
7853 "This library provides Ruby q@acronym{FFI, Foreign Function Interface}
7854bindings to the libsass library. This enables rendering
7855@acronym{SASS,Syntactically awesome style sheets} from Ruby code.")
7856 (home-page "https://github.com/sass/sassc-ruby")
7857 (license license:expat)))
7858
5e242cb4
JL
7859(define-public ruby-jekyll-sass-converter
7860 (package
7861 (name "ruby-jekyll-sass-converter")
7862 (version "1.5.2")
7863 (source (origin
7864 (method url-fetch)
7865 (uri (rubygems-uri "jekyll-sass-converter" version))
7866 (sha256
7867 (base32
7868 "008ikh5fk0n6ri54mylcl8jn0mq8p2nfyfqif2q3pp0lwilkcxsk"))))
7869 (build-system ruby-build-system)
7870 (propagated-inputs
7871 `(("ruby-sass" ,ruby-sass)))
7872 (arguments
7873 ;; No rakefile
7874 `(#:tests? #f))
7875 (home-page "https://github.com/jekyll/jekyll-sass-converter")
7876 (synopsis "Sass converter for Jekyll")
7877 (description "This gem provide built-in support for the Sass converter
7878in Jekyll.")
7879 (license license:expat)))
ceac6f6f
JL
7880
7881(define-public ruby-jekyll-watch
7882 (package
7883 (name "ruby-jekyll-watch")
6cbba8a3 7884 (version "2.1.2")
ceac6f6f
JL
7885 (source (origin
7886 (method url-fetch)
7887 (uri (rubygems-uri "jekyll-watch" version))
7888 (sha256
7889 (base32
6cbba8a3 7890 "1s9ly83sp8albvgdff12xy2h4xd8lm6z2fah4lzmk2yvp85jzdzv"))))
ceac6f6f
JL
7891 (build-system ruby-build-system)
7892 (propagated-inputs
6cbba8a3 7893 `(("ruby-listen" ,ruby-listen)))
ceac6f6f
JL
7894 (arguments
7895 ;; No rakefile
7896 `(#:tests? #f))
7897 (home-page "https://github.com/jekyll/jekyll-watch")
7898 (synopsis "Jekyll auto-rebuild support")
7899 (description "This gems add the @code{--watch} switch to the jekyll CLI
7900interface. It allows Jekyll to rebuild your site when a file changes.")
7901 (license license:expat)))
3224a5a8
JL
7902
7903(define-public ruby-parallel
7904 (package
7905 (name "ruby-parallel")
c41fba01
CB
7906 (version "1.13.0")
7907 (source
7908 (origin
7909 (method git-fetch)
7910 (uri (git-reference
7911 (url "https://github.com/grosser/parallel.git")
7912 (commit (string-append "v" version))))
7913 (file-name (git-file-name name version))
7914 (sha256
7915 (base32
7916 "1isqzbqxz2ndad4i5z3lb9ldrhaijfncj8bmffv04sq44sv87ikv"))))
3224a5a8 7917 (build-system ruby-build-system)
c41fba01
CB
7918 (arguments
7919 `(;; TODO 3 test failures
7920 ;; rspec ./spec/parallel_spec.rb:190 # Parallel.in_processes does not
7921 ;; open unnecessary pipes
7922 ;; rspec './spec/parallel_spec.rb[1:9:7]' # Parallel.each works with
7923 ;; SQLite in processes
7924 ;; rspec './spec/parallel_spec.rb[1:9:16]' # Parallel.each works with
7925 ;; SQLite in threads
7926 #:tests? #f
7927 #:test-target "rspec-rerun:spec"
7928 #:phases
7929 (modify-phases %standard-phases
7930 (add-after 'unpack 'patch-Gemfile
7931 (lambda _
7932 (substitute* "Gemfile"
7933 (("gem 'rspec-legacy_formatters'") "")
7934 (("gem 'activerecord.*$") "gem 'activerecord'\n"))))
7935 (add-before 'check 'delete-Gemfile.lock
7936 (lambda _
7937 ;; Bundler isn't being used for fetching dependendencies, so
7938 ;; delete the Gemfile.lock
7939 (delete-file "Gemfile.lock")
7940 #t))
7941 (add-before 'build 'patch-gemspec
7942 (lambda _
7943 (substitute* "parallel.gemspec"
7944 (("git ls-files") "find"))
7945 #t)))))
7946 (native-inputs
7947 `(("ruby-rspec" ,ruby-rspec)
7948 ("ruby-rspec-rerun" ,ruby-rspec-rerun)
7949 ("bundler" ,bundler)
7950 ("ruby-activerecord" ,ruby-activerecord)
7951 ("ruby-progressbar" ,ruby-progressbar)
7952 ("ruby-bump" ,ruby-bump)
7953 ("procps" ,procps)
7954 ("lsof" ,lsof)
7955 ("ruby-mysql2" ,ruby-mysql2)
7956 ("ruby-sqlite3" ,ruby-sqlite3)
7957 ("ruby-i18n" ,ruby-i18n)))
3224a5a8
JL
7958 (home-page "https://github.com/grosser/parallel")
7959 (synopsis "Parallel processing in Ruby")
7960 (description "Parallel allows you to run any code in parallel Processes
7961(to use all CPUs) or Threads(to speedup blocking operations). It is best
7962suited for map-reduce or e.g. parallel downloads/uploads.")
7963 (license license:expat)))
83d9f672
JL
7964
7965(define-public ruby-cane
7966 (package
7967 (name "ruby-cane")
7968 (version "3.0.0")
7969 (source (origin
7970 (method url-fetch)
7971 (uri (rubygems-uri "cane" version))
7972 (sha256
7973 (base32
7974 "0yf5za3l7lhrqa3g56sah73wh33lbxy5y3cb7ij0a2bp1b4kwhih"))))
7975 (build-system ruby-build-system)
7976 (arguments `(#:tests? #f)); No rakefile
7977 (home-page "https://github.com/square/cane")
7978 (propagated-inputs
7979 `(("ruby-parallel" ,ruby-parallel)))
7980 (synopsis "Code quality threshold checking")
7981 (description "Cane fails your build if code quality thresholds are not met.")
7982 (license license:asl2.0)))
00d71efc
JL
7983
7984(define-public ruby-morecane
7985 (package
7986 (name "ruby-morecane")
7987 (version "0.2.0")
7988 (source (origin
7989 (method url-fetch)
7990 (uri (rubygems-uri "morecane" version))
7991 (sha256
7992 (base32
7993 "0w70vb8z5bdhvr21h660aa43m5948pv0bd27z7ngai2iwdvqd771"))))
7994 (build-system ruby-build-system)
7995 (home-page "https://github.com/yob/morecane")
7996 (arguments `(#:tests? #f)); No rakefile
7997 (propagated-inputs
7998 `(("ruby-parallel" ,ruby-parallel)))
7999 (synopsis "Extra checks for cane")
8000 (description "The cane gem provides a great framework for running quality
8001checks over your ruby project as part of continuous integration build. It
8002comes with a few checks out of the box, but also provides an API for loading
8003custom checks. This gem provides a set of additional checks.")
8004 (license license:expat)))
abbe629c
JL
8005
8006(define-public ruby-pdf-reader
8007 (package
8008 (name "ruby-pdf-reader")
8009 (version "2.1.0")
8010 (source (origin
8011 (method url-fetch)
8012 (uri (rubygems-uri "pdf-reader" version))
8013 (sha256
8014 (base32
8015 "1b3ig4wpcgdbqa7yw0ahwbmikkkywn2a22bfmrknl5ls7g066x45"))))
8016 (build-system ruby-build-system)
8017 (arguments `(#:test-target "spec"))
8018 (native-inputs
8019 `(("bundler" ,bundler)
8020 ("ruby-rspec" ,ruby-rspec)
8021 ("ruby-cane" ,ruby-cane)
8022 ("ruby-morecane" ,ruby-morecane)))
8023 (propagated-inputs
8024 `(("ruby-afm" ,ruby-afm)
8025 ("ruby-ascii85" ,ruby-ascii85)
8026 ("ruby-hashery" ,ruby-hashery)
8027 ("ruby-rc4" ,ruby-rc4)
8028 ("ruby-ttfunk" ,ruby-ttfunk)))
8029 (home-page "https://github.com/yob/pdf-reader")
8030 (synopsis "PDF parser in Ruby")
8031 (description "The PDF::Reader library implements a PDF parser conforming as
8032much as possible to the PDF specification from Adobe. It provides programmatic
8033access to the contents of a PDF file with a high degree of flexibility.")
8034 (license license:gpl3+)))
461fb859
JL
8035
8036(define-public ruby-pdf-inspector
8037 (package
8038 (name "ruby-pdf-inspector")
8039 (version "1.3.0")
8040 (source (origin
8041 (method url-fetch)
8042 (uri (rubygems-uri "pdf-inspector" version))
8043 (sha256
8044 (base32
8045 "1g853az4xzgqxr5xiwhb76g4sqmjg4s79mm35mp676zjsrwpa47w"))))
8046 (build-system ruby-build-system)
8047 (propagated-inputs
8048 `(("ruby-pdf-reader" ,ruby-pdf-reader)))
8049 (arguments `(#:tests? #f)); No rakefile
8050 (home-page "https://github.com/prawnpdf/pdf-inspector")
8051 (synopsis "Analysis classes for inspecting PDF output")
8052 (description "This library provides a number of PDF::Reader based tools for
8053use in testing PDF output. Presently, the primary purpose of this tool is to
8054support the tests found in Prawn, a pure Ruby PDF generation library.")
8055 (license license:gpl3+)))
770e3b53
JL
8056
8057(define-public ruby-pdf-core
8058 (package
8059 (name "ruby-pdf-core")
8060 (version "0.8.1")
8061 (source (origin
8062 (method url-fetch)
8063 (uri (rubygems-uri "pdf-core" version))
8064 (sha256
8065 (base32
8066 "15d6m99bc8bbzlkcg13qfpjjzphfg5x905pjbfygvpcxsm8gnsvg"))))
8067 (build-system ruby-build-system)
8068 (arguments
8069 ; No test target
8070 `(#:tests? #f))
8071 (home-page "https://github.com/prawnpdf/pdf-core")
8072 (synopsis "Low level PDF features for Prawn")
8073 (description "This is an experimental gem that extracts low-level PDF
8074functionality from Prawn.")
8075 (license license:gpl3+)))
37fbced7 8076
7ad8dd08
JL
8077(define-public ruby-prawn
8078 (package
8079 (name "ruby-prawn")
8080 (version "2.2.2")
8081 (source (origin
8082 (method url-fetch)
8083 (uri (rubygems-uri "prawn" version))
8084 (sha256
8085 (base32
8086 "1qdjf1v6sfl44g3rqxlg8k4jrzkwaxgvh2l4xws97a8f3xv4na4m"))))
8087 (build-system ruby-build-system)
8088 (arguments
8089 ; No tests
8090 `(#:tests? #f
8091 #:phases
8092 (modify-phases %standard-phases
8093 (add-before 'build 'fix-dependencies
8094 (lambda _
8095 (substitute* "prawn.gemspec"
8096 (("~> 0.7.0") "~> 0.7"))
8097 #t)))))
8098 (propagated-inputs
8099 `(("ruby-pdf-core" ,ruby-pdf-core)
8100 ("ruby-ttfunk" ,ruby-ttfunk)))
8101 (native-inputs
8102 `(("bundler" ,bundler)
8103 ("ruby-pdf-inspector" ,ruby-pdf-inspector)
8104 ("ruby-rspec" ,ruby-rspec)
8105 ("ruby-simplecov" ,ruby-simplecov)
8106 ("ruby-yard" ,ruby-yard)))
8107 (home-page "http://prawnpdf.org/api-docs/2.0/")
8108 (synopsis "PDF generation for Ruby")
8109 (description "Prawn is a pure Ruby PDF generation library.")
8110 (license license:gpl3+)))
197ca8ec
JL
8111
8112(define-public ruby-prawn-table
8113 (package
8114 (name "ruby-prawn-table")
8115 (version "0.2.2")
8116 (source (origin
8117 (method url-fetch)
8118 (uri (rubygems-uri "prawn-table" version))
8119 (sha256
8120 (base32
8121 "1nxd6qmxqwl850icp18wjh5k0s3amxcajdrkjyzpfgq0kvilcv9k"))))
8122 (build-system ruby-build-system)
197ca8ec 8123 (propagated-inputs
0927b039
CB
8124 `(("ruby-prawn" ,ruby-prawn)
8125 ("ruby-pdf-inspector" ,ruby-pdf-inspector)))
8126 (native-inputs
8127 `(("bundler" ,bundler)
8128 ("ruby-yard" ,ruby-yard)
8129 ("ruby-mocha" ,ruby-mocha)
8130 ("ruby-coderay" ,ruby-coderay)
8131 ("ruby-prawn-manual-builder" ,ruby-prawn-manual-builder)
8132 ("ruby-simplecov" ,ruby-simplecov)
8133 ("ruby-rspec-2" ,ruby-rspec-2)))
8134 (arguments
8135 '(;; TODO: 1 test fails
8136 ;; Failure/Error: pdf.page_count.should == 1
8137 ;; expected: 1
8138 ;; got: 2 (using ==)
8139 ;; # ./spec/table_spec.rb:1308
8140 ;;
8141 ;; 225 examples, 1 failure
8142 #:tests? #f
8143 #:phases
8144 (modify-phases %standard-phases
8145 (add-before 'check 'patch-gemspec
8146 (lambda _
8147 (substitute* "prawn-table.gemspec"
8148 ;; Loosen the requirement for pdf-inspector
8149 (("~> 1\\.1\\.0") ">= 0")
8150 ;; Loosen the requirement for pdf-reader
8151 (("~> 1\\.2") ">= 0"))))
8152 (replace 'check
8153 (lambda* (#:key tests? #:allow-other-keys)
8154 (when tests?
8155 (invoke "rspec"))
8156 #t)))))
197ca8ec
JL
8157 (home-page "https://github.com/prawnpdf/prawn-table")
8158 (synopsis "Tables support for Prawn")
8159 (description "This gem provides tables support for Prawn.")
8160 (license license:gpl3+)))
03127069
JL
8161
8162(define-public ruby-kramdown
8163 (package
8164 (name "ruby-kramdown")
8165 (version "1.17.0")
8166 (source (origin
8167 (method url-fetch)
8168 (uri (rubygems-uri "kramdown" version))
8169 (sha256
8170 (base32
8171 "1n1c4jmrh5ig8iv1rw81s4mw4xsp4v97hvf8zkigv4hn5h542qjq"))))
8172 (build-system ruby-build-system)
8173 (arguments `(#:tests? #f)); FIXME: some test failures
8174 (native-inputs
8175 `(("ruby-prawn" ,ruby-prawn)
8176 ("ruby-prawn-table" ,ruby-prawn-table)))
8177 (home-page "https://kramdown.gettalong.org/")
8178 (synopsis "Markdown parsing and converting library")
8179 (description "Kramdown is a library for parsing and converting a superset
8180of Markdown. It is completely written in Ruby, supports standard Markdown
8181(with some minor modifications) and various extensions that have been made
8182popular by the PHP @code{Markdown Extra} package and @code{Maruku}.")
8183 (license license:expat)))
fa0063bc
JL
8184
8185(define-public ruby-http-parser.rb
8186 (package
8187 (name "ruby-http-parser.rb")
8188 (version "0.6.0")
8189 (source
8190 (origin
8191 (method url-fetch)
8192 (uri (rubygems-uri "http_parser.rb" version))
8193 (sha256
8194 (base32
8195 "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi"))))
8196 (build-system ruby-build-system)
8197 (arguments
8198 ;; No tests
8199 `(#:tests? #f))
8200 (native-inputs
8201 `(("ruby-rake-compiler" ,ruby-rake-compiler)
8202 ("ruby-rspec" ,ruby-rspec)))
8203 (home-page "https://github.com/tmm1/http_parser.rb")
8204 (synopsis "HTTP parser un Ruby")
8205 (description "This gem is a simple callback-based HTTP request/response
8206parser for writing http servers, clients and proxies.")
8207 (license license:expat)))
5e2f74bd
JL
8208
8209(define-public ruby-em-websocket
8210 (package
8211 (name "ruby-em-websocket")
8212 (version "0.5.1")
8213 (source
8214 (origin
8215 (method url-fetch)
8216 (uri (rubygems-uri "em-websocket" version))
8217 (sha256
8218 (base32
8219 "1bsw8vjz0z267j40nhbmrvfz7dvacq4p0pagvyp17jif6mj6v7n3"))))
8220 (build-system ruby-build-system)
8221 (arguments
8222 ;; No tests
8223 `(#:tests? #f))
8224 (propagated-inputs
8225 `(("ruby-eventmachine" ,ruby-eventmachine)
8226 ("ruby-http-parser.rb" ,ruby-http-parser.rb)))
8227 (native-inputs
8228 `(("bundler" ,bundler)
8229 ("ruby-rspec" ,ruby-rspec)))
8230 (home-page "https://github.com/igrigorik/em-websocket")
8231 (synopsis "EventMachine based WebSocket server")
8232 (description "Em-websocket is an EventMachine based WebSocket server
8233implementation.")
8234 (license license:expat)))
4ce0414b
JL
8235
8236(define-public ruby-rouge
8237 (package
8238 (name "ruby-rouge")
55cc5ef8 8239 (version "3.13.0")
4ce0414b
JL
8240 (source (origin
8241 (method url-fetch)
8242 (uri (rubygems-uri "rouge" version))
8243 (sha256
8244 (base32
55cc5ef8 8245 "1y90nx9ph9adnrpcsvs2adca2l3dyz8am2d2kzxkwd3a086ji7aw"))))
4ce0414b
JL
8246 (build-system ruby-build-system)
8247 (arguments `(#:tests? #f)); No rakefile
8248 (home-page "http://rouge.jneen.net/")
8249 (synopsis "Code highlighter")
8250 (description "Rouge is a code highlighter written in Ruby. It supports more
8251than 100 languages and outputs HTML or ANSI 256-color text. Its HTML output
8252is compatible with stylesheets designed for pygments.")
8253 (license (list
8254 ;; rouge is licensed under expat
8255 license:expat
8256 ;; pygments is licensed under bsd-2
8257 license:bsd-2))))
2c5028bd
JL
8258
8259(define-public ruby-rouge-2
8260 (package
8261 (inherit ruby-rouge)
8262 (version "2.2.1")
8263 (source (origin
8264 (method url-fetch)
8265 (uri (rubygems-uri "rouge" version))
8266 (sha256
8267 (base32
8268 "02kpahk5nkc33yxnn75649kzxaz073wvazr2zyg491nndykgnvcs"))))))
2e072e37
JL
8269
8270(define-public ruby-hashie
8271 (package
8272 (name "ruby-hashie")
8273 (version "3.6.0")
8274 (source (origin
8275 (method url-fetch)
8276 (uri (rubygems-uri "hashie" version))
8277 (sha256
8278 (base32
8279 "13bdzfp25c8k51ayzxqkbzag3wj5gc1jd8h7d985nsq6pn57g5xh"))))
8280 (build-system ruby-build-system)
8281 (native-inputs
8282 `(("bundler" ,bundler)))
8283 (arguments `(#:tests? #f)); FIXME: Could not locate Gemfile or .bundle/ directory
8284 (home-page "https://github.com/intridea/hashie")
8285 (synopsis "Extensions to Ruby Hashes")
8286 (description "Hashie is a collection of classes and mixins that make Ruby
8287hashes more powerful.")
8288 (license license:expat)))
73bfc125
JL
8289
8290(define-public ruby-heredoc-unindent
8291 (package
8292 (name "ruby-heredoc-unindent")
8293 (version "1.2.0")
8294 (source (origin
8295 (method url-fetch)
8296 (uri (rubygems-uri "heredoc_unindent" version))
8297 (sha256
8298 (base32
8299 "14ijr2fsjwhrkjkcaz81d5xnfa4vvgvcflrff83avqw9klm011yw"))))
8300 (build-system ruby-build-system)
8301 (native-inputs
8302 `(("ruby-hoe" ,ruby-hoe)))
8303 (home-page "https://github.com/adrianomitre/heredoc_unindent")
8304 (synopsis "Heredoc indentation cleaner")
8305 (description "This gem removes common margin from indented strings, such
8306as the ones produced by indented heredocs. In other words, it strips out
4f66ae28 8307leading whitespace chars at the beginning of each line, but only as much as
73bfc125
JL
8308the line with the smallest margin.
8309
8310It is acknowledged that many strings defined by heredocs are just code and
8311fact is that most parsers are insensitive to indentation. If, however, the
8312strings are to be used otherwise, be it for printing or testing, the extra
8313indentation will probably be an issue and hence this gem.")
8314 (license license:expat)))
f8ae2ee5
JL
8315
8316(define-public ruby-safe-yaml
8317 (package
8318 (name "ruby-safe-yaml")
7fa83fa8 8319 (version "1.0.5")
28cf8dab
CB
8320 (source
8321 (origin
28cf8dab
CB
8322 (method git-fetch)
8323 (uri (git-reference
8324 (url "https://github.com/dtao/safe_yaml.git")
8325 (commit version)))
8326 (file-name (git-file-name name version))
8327 (sha256
8328 (base32
7fa83fa8 8329 "1a0wh7y3va2m7bjza95na2snw0vrdh9syz40mpjvjphbc4ph3pzg"))))
f8ae2ee5
JL
8330 (build-system ruby-build-system)
8331 (native-inputs
8332 `(("ruby-rspec" ,ruby-rspec)
8333 ("ruby-hashie" ,ruby-hashie)
8334 ("ruby-heredoc-unindent" ,ruby-heredoc-unindent)))
28cf8dab
CB
8335 (arguments
8336 '(#:test-target "spec"
8337 #:phases
8338 (modify-phases %standard-phases
8339 (add-before 'check 'set-TZ
8340 (lambda _
8341 ;; This test is dependent on the timezone
8342 ;; spec/transform/to_date_spec.rb:35
8343 ;; # SafeYAML::Transform::ToDate converts times to the local
8344 ;; timezone
8345 (setenv "TZ" "UTC-11")
8346 #t)))))
f8ae2ee5
JL
8347 (home-page "https://github.com/dtao/safe_yaml")
8348 (synopsis "YAML parser")
8349 (description "The SafeYAML gem provides an alternative implementation of
8350YAML.load suitable for accepting user input in Ruby applications.")
8351 (license license:expat)))
f1ec4d76
JL
8352
8353(define-public ruby-mercenary
8354 (package
8355 (name "ruby-mercenary")
8356 (version "0.3.6")
8357 (source (origin
8358 (method url-fetch)
8359 (uri (rubygems-uri "mercenary" version))
8360 (sha256
8361 (base32
8362 "10la0xw82dh5mqab8bl0dk21zld63cqxb1g16fk8cb39ylc4n21a"))))
8363 (build-system ruby-build-system)
8364 (arguments `(#:test-target "spec"))
8365 (native-inputs
8366 `(("bundler" ,bundler)))
8367 (home-page "https://github.com/jekyll/mercenary")
8368 (synopsis "Command-line apps library in Ruby")
8369 (description "Mercenary is a lightweight and flexible library for writing
8370command-line apps in Ruby.")
8371 (license license:expat)))
a13d451e
JL
8372
8373(define-public ruby-liquid
8374 (package
8375 (name "ruby-liquid")
8376 (version "4.0.0")
8377 (source (origin
8378 (method url-fetch)
8379 (uri (rubygems-uri "liquid" version))
8380 (sha256
8381 (base32
8382 "17fa0jgwm9a935fyvzy8bysz7j5n1vf1x2wzqkdfd5k08dbw3x2y"))))
8383 (build-system ruby-build-system)
8384 (arguments `(#:tests? #f)); No rakefile
8385 (home-page "https://shopify.github.io/liquid/")
8386 (synopsis "Template language")
8387 (description "Liquid is a template language written in Ruby. It is used
8388to load dynamic content on storefronts.")
8389 (license license:expat)))
49395112
JL
8390
8391(define-public ruby-forwardable-extended
8392 (package
8393 (name "ruby-forwardable-extended")
8394 (version "2.6.0")
8395 (source (origin
8396 (method url-fetch)
8397 (uri (rubygems-uri "forwardable-extended" version))
8398 (sha256
8399 (base32
8400 "15zcqfxfvsnprwm8agia85x64vjzr2w0xn9vxfnxzgcv8s699v0v"))))
8401 (build-system ruby-build-system)
8402 (arguments `(#:tests? #f)); Cyclic dependency on luna-rspec-formatters
8403 (home-page "https://github.com/envygeeks/forwardable-extended")
8404 (synopsis "Delegation to hashes and instance variables in Forwardable")
8405 (description "Forwardable Extended provides more @code{Forwardable}
8406methods for your source as @code{Forwardable::Extended}.")
8407 (license license:expat)))
37296113
JL
8408
8409(define-public ruby-pathutil
8410 (package
8411 (name "ruby-pathutil")
feaaa603 8412 (version "0.16.2")
37296113
JL
8413 (source (origin
8414 (method url-fetch)
8415 (uri (rubygems-uri "pathutil" version))
8416 (sha256
8417 (base32
feaaa603 8418 "12fm93ljw9fbxmv2krki5k5wkvr7560qy8p4spvb9jiiaqv78fz4"))))
37296113
JL
8419 (build-system ruby-build-system)
8420 (propagated-inputs
8421 `(("ruby-forwardable-extended" ,ruby-forwardable-extended)))
8422 (native-inputs
8423 `(("bundler" ,bundler)
8424 ("ruby-rspec" ,ruby-rspec)))
8425 ;; Fails with: cannot load such file --
8426 ;; /tmp/guix-build-ruby-pathutil-0.16.0.drv-0/gem/benchmark/support/task
8427 (arguments `(#:tests? #f))
8428 (home-page "https://github.com/envygeeks/pathutil")
8429 (synopsis "Extended implementation of Pathname")
8430 (description "Pathutil tries to be a faster pure Ruby implementation of
8431Pathname.")
8432 (license license:expat)))
49e1dde5
JL
8433
8434(define-public jekyll
8435 (package
8436 (name "jekyll")
fcf82fd3 8437 (version "3.8.6")
49e1dde5
JL
8438 (source (origin
8439 (method url-fetch)
8440 (uri (rubygems-uri "jekyll" version))
8441 (sha256
8442 (base32
fcf82fd3 8443 "1ph1jjjl25vmzif7bvxzviq7azjm384pm7ba4k24cah94285bzhz"))))
49e1dde5
JL
8444 (build-system ruby-build-system)
8445 (arguments
fcf82fd3 8446 ;; No rakefile, but a test subdirectory.
49e1dde5
JL
8447 `(#:tests? #f
8448 #:phases
8449 (modify-phases %standard-phases
8450 (add-before 'build 'fix-i18n
8451 (lambda _
8452 (substitute* ".gemspec"
8453 (("~> 0.7") ">= 0.7"))
8454 #t)))))
8455 (propagated-inputs
8456 `(("ruby-addressable" ,ruby-addressable)
8457 ("ruby-colorator" ,ruby-colorator)
8458 ("ruby-em-websocket" ,ruby-em-websocket)
8459 ("ruby-i18n" ,ruby-i18n)
8460 ("ruby-jekyll-sass-converter" ,ruby-jekyll-sass-converter)
8461 ("ruby-jekyll-watch" ,ruby-jekyll-watch)
8462 ("ruby-kramdown" ,ruby-kramdown)
8463 ("ruby-liquid" ,ruby-liquid)
8464 ("ruby-mercenary" ,ruby-mercenary)
8465 ("ruby-pathutil" ,ruby-pathutil)
8466 ("ruby-rouge" ,ruby-rouge-2)
8467 ("ruby-safe-yaml" ,ruby-safe-yaml)))
8468 (home-page "https://jekyllrb.com/")
8469 (synopsis "Static site generator")
8470 (description "Jekyll is a simple, blog aware, static site generator.")
8471 (license license:expat)))
37a0f470
JL
8472
8473(define-public ruby-jekyll-paginate-v2
8474 (package
8475 (name "ruby-jekyll-paginate-v2")
8476 (version "2.0.0")
8477 (source (origin
8478 (method url-fetch)
8479 (uri (rubygems-uri "jekyll-paginate-v2" version))
8480 (sha256
8481 (base32
8482 "154bfpyml6abxww9868hhyfvxasl8qhsc5zy2q30c7dxaj0igdib"))))
8483 (build-system ruby-build-system)
8484 (propagated-inputs
8485 `(("jekyll" ,jekyll)))
8486 (home-page "https://github.com/sverrirs/jekyll-paginate-v2")
8487 (synopsis "Pagination Generator for Jekyll 3")
8488 (description "The Pagination Generator forms the core of the pagination
8489logic in Jekyll. It calculates and generates the pagination pages.")
8490 (license license:expat)))
909eae21
CB
8491
8492(define-public ruby-faraday
8493 (package
8494 (name "ruby-faraday")
8495 (version "0.15.4")
8496 (source
8497 (origin
8498 (method url-fetch)
8499 (uri (rubygems-uri "faraday" version))
8500 (sha256
8501 (base32
8502 "0s72m05jvzc1pd6cw1i289chas399q0a14xrwg4rvkdwy7bgzrh0"))))
8503 (build-system ruby-build-system)
8504 (arguments
8505 '(#:tests? #f))
8506 (propagated-inputs
8507 `(("ruby-multipart-post" ,ruby-multipart-post)))
8508 (synopsis "Ruby HTTP/REST API client library")
8509 (description
8510 "Faraday is a HTTP/REST API client library which provides a common
8511interface over different adapters.")
8512 (home-page "https://github.com/lostisland/faraday")
8513 (license license:expat)))
a058cbfd
CB
8514
8515(define-public ruby-nio4r
8516 (package
8517 (name "ruby-nio4r")
7923b9bf 8518 (version "2.5.2")
a058cbfd
CB
8519 (source
8520 (origin
8521 (method url-fetch)
8522 (uri (rubygems-uri "nio4r" version))
8523 (sha256
8524 (base32
7923b9bf 8525 "0gnmvbryr521r135yz5bv8354m7xn6miiapfgpg1bnwsvxz8xj6c"))))
a058cbfd
CB
8526 (build-system ruby-build-system)
8527 (arguments
8528 '(#:phases
8529 (modify-phases %standard-phases
8530 (add-after 'unpack 'remove-unnecessary-dependencies
8531 (lambda _
8532 (substitute* "spec/spec_helper.rb"
8533 ;; Coveralls is for uploading test coverage information to an
8534 ;; online service, and thus unnecessary for building the Guix
8535 ;; package
8536 (("require \"coveralls\"") "")
8537 (("Coveralls\\.wear!") "")
8538 ;; Remove rspec/retry as we are not retrying the tests
8539 (("require \"rspec/retry\"") "")
8540 (("config\\.display_try_failure_messages = true") "")
8541 (("config\\.verbose_retry = true") ""))
8542 #t))
8543 (add-before 'check 'compile
8544 (lambda _
8545 (invoke "rake" "compile")
8546 #t))
8547 (replace 'check
8548 (lambda* (#:key tests? #:allow-other-keys)
8549 (when tests?
8550 (invoke "rspec"))
8551 #t)))))
8552 (native-inputs
8553 `(("bundler" ,bundler)
8554 ("ruby-rake-compiler" ,ruby-rake-compiler)
8555 ("ruby-rspec" ,ruby-rspec)
8556 ("ruby-rubocop" ,ruby-rubocop)))
8557 (synopsis "New I/O for Ruby")
8558 (description
8559 "@code{nio} provides cross-platform asynchronous I/O primitives in Ruby
8560for scalable network clients and servers.")
8561 (home-page "https://github.com/socketry/nio4r")
8562 (license license:expat)))
f9da1ada
CB
8563
8564(define-public ruby-globalid
8565 (package
8566 (name "ruby-globalid")
8567 (version "0.4.2")
8568 (source
8569 (origin
8570 (method url-fetch)
8571 (uri (rubygems-uri "globalid" version))
8572 (sha256
8573 (base32
8574 "1zkxndvck72bfw235bd9nl2ii0lvs5z88q14706cmn702ww2mxv1"))))
8575 (build-system ruby-build-system)
8576 (arguments
8577 '(;; No included tests
8578 #:tests? #f))
8579 (propagated-inputs
8580 `(("ruby-activesupport" ,ruby-activesupport)))
8581 (synopsis "Generate URIs idenfitying model instances in Ruby")
8582 (description
8583 "@code{GlobalID} provides a way to generate URIs from a model in Ruby that
8584uniquely identify it.")
8585 (home-page "https://rubyonrails.org/")
8586 (license license:expat)))
15606d98
CB
8587
8588(define-public ruby-sprockets
8589 (package
8590 (name "ruby-sprockets")
8591 (version "3.7.2")
8592 (source
8593 (origin
8594 (method url-fetch)
8595 (uri (rubygems-uri "sprockets" version))
8596 (sha256
8597 (base32
8598 "182jw5a0fbqah5w9jancvfmjbk88h8bxdbwnl4d3q809rpxdg8ay"))))
8599 (build-system ruby-build-system)
8600 (arguments
8601 '(;; No included tests
8602 #:tests? #f))
8603 (propagated-inputs
8604 `(("ruby-concurrent" ,ruby-concurrent)
8605 ("ruby-rack" ,ruby-rack)))
8606 (synopsis "Sprockets is a Rack-based asset packaging system")
8607 (description
8608 "Sprockets is a Rack-based asset packaging system that concatenates and
8609serves JavaScript, CoffeeScript, CSS, LESS, Sass, and SCSS.")
8610 (home-page "https://github.com/rails/sprockets")
8611 (license license:expat)))
acb9e3d8
PN
8612
8613(define-public ruby-mustermann
8614 (package
8615 (name "ruby-mustermann")
8616 (version "1.0.3")
8617 (source
8618 (origin
8619 (method url-fetch)
8620 (uri (rubygems-uri "mustermann" version))
8621 (sha256
8622 (base32
8623 "0lycgkmnyy0bf29nnd2zql5a6pcf8sp69g9v4xw0gcfcxgpwp7i1"))))
8624 (build-system ruby-build-system)
8625 (arguments
8626 ;; No tests.
8627 '(#:tests? #f))
8628 (synopsis "Library implementing patterns that behave like regular expressions")
8629 (description "Given a string pattern, Mustermann will turn it into an
8630object that behaves like a regular expression and has comparable performance
8631characteristics.")
8632 (home-page "https://github.com/sinatra/mustermann")
8633 (license license:expat)))
3bb094e2 8634
7bddb6aa
BL
8635(define-public ruby-htmlentities
8636 (package
8637 (name "ruby-htmlentities")
8638 (version "4.3.4")
8639 (source
8640 (origin
8641 (method url-fetch)
8642 (uri (rubygems-uri "htmlentities" version))
8643 (sha256
8644 (base32
8645 "1nkklqsn8ir8wizzlakncfv42i32wc0w9hxp00hvdlgjr7376nhj"))))
8646 (build-system ruby-build-system)
8647 (arguments
8648 `(#:phases
8649 (modify-phases %standard-phases
8650 (replace 'check
8651 (lambda _
8652 (map (lambda (file)
8653 (invoke "ruby" "-Itest" file))
8654 (find-files "./test" ".*_test\\.rb")))))))
8655 (synopsis "Encode and decode (X)HTML entities")
8656 (description
8657 "This package provides a module for encoding and decoding (X)HTML
8658entities.")
8659 (home-page "https://github.com/threedaymonk/htmlentities")
8660 (license license:expat)))
8661
3bb094e2
PN
8662(define-public ruby-sinatra
8663 (package
8664 (name "ruby-sinatra")
8665 (version "2.0.5")
8666 (source
8667 (origin
8668 (method url-fetch)
8669 (uri (rubygems-uri "sinatra" version))
8670 (sha256
8671 (base32
8672 "1gasgn5f15myv08k10i16p326pchxjsy37pgqfw0xm66kcc5d7ry"))))
8673 (build-system ruby-build-system)
8674 (propagated-inputs
8675 `(("ruby-mustermann" ,ruby-mustermann)
8676 ("ruby-rack" ,ruby-rack)
8677 ("ruby-rack-protection" ,ruby-rack-protection)
8678 ("ruby-tilt" ,ruby-tilt)))
8679 (synopsis "DSL for quick web applications creation in Ruby")
8680 (description
8681 "Sinatra is a DSL for quickly creating web applications in Ruby with
8682minimal effort.")
8683 (home-page "http://sinatrarb.com/")
8684 (license license:expat)))
6e87695b
PN
8685
8686(define-public ruby-thin
8687 (package
8688 (name "ruby-thin")
8689 (version "1.7.2")
8690 (source
8691 (origin
8692 (method url-fetch)
8693 (uri (rubygems-uri "thin" version))
8694 (sha256
8695 (base32
8696 "0nagbf9pwy1vg09k6j4xqhbjjzrg5dwzvkn4ffvlj76fsn6vv61f"))))
8697 (build-system ruby-build-system)
8698 (arguments
8699 ;; No tests.
8700 '(#:tests? #f))
8701 (propagated-inputs
8702 `(("ruby-daemons" ,ruby-daemons)
8703 ("ruby-eventmachine" ,ruby-eventmachine)
8704 ("ruby-rack" ,ruby-rack)))
8705 (synopsis "Thin and fast web server for Ruby")
8706 (description "Thin is a Ruby web server that glues together 3 Ruby libraries:
8707@itemize
8708@item the Mongrel parser,
8709@item Event Machine, a network I/O library with high scalability, performance
8710and stability,
8711@item Rack, a minimal interface between webservers and Ruby frameworks.
8712@end itemize\n")
8713 (home-page "http://code.macournoyer.com/thin/")
8714 (license license:ruby)))
be6016db
PN
8715
8716(define-public ruby-skinny
8717 (package
8718 (name "ruby-skinny")
8719 (version "0.2.4")
8720 (source
8721 (origin
8722 (method url-fetch)
8723 (uri (rubygems-uri "skinny" version))
8724 (sha256
8725 (base32
8726 "1y3yvx88ylgz4d2s1wskjk5rkmrcr15q3ibzp1q88qwzr5y493a9"))))
8727 (build-system ruby-build-system)
8728 (arguments
8729 '(#:tests? #f ; No included tests
8730 #:phases
8731 (modify-phases %standard-phases
8732 (add-before 'build 'patch-gemspec
8733 (lambda _
8734 (substitute* ".gemspec"
8735 (("<eventmachine>.freeze, \\[\\\"~> 1.0.0\"")
8736 "<eventmachine>, [\">= 1.0.0\"")
8737 (("<thin>.freeze, \\[\\\"< 1.7\", ") "<thin>, ["))
8738 #t)))))
8739 (propagated-inputs
8740 `(("ruby-eventmachine" ,ruby-eventmachine)
8741 ("ruby-thin" ,ruby-thin)))
8742 (synopsis "Simple, upgradable WebSockets for Ruby Thin")
8743 (description "Skinny is a simple, upgradable WebSockets for Ruby, using
8744the Thin library.")
8745 (home-page "https://github.com/sj26/skinny")
8746 (license license:expat)))
df747c8d
PN
8747
8748(define-public mailcatcher
8749 (package
8750 (name "mailcatcher")
8751 (version "0.7.1")
8752 (source
8753 (origin
8754 (method url-fetch)
8755 (uri (rubygems-uri "mailcatcher" version))
8756 (sha256
8757 (base32
8758 "02w1ycyfv7x0sh9799lz7xa65p5qvl5z4pa8a7prb68h2zwkfq0n"))))
8759 (build-system ruby-build-system)
8760 (arguments
8761 ;; Tests require web/assets which is not included in the output. We
8762 ;; might be able to fix this by adding the Git repository to the GEM_PATH
8763 ;; of the tests. See ruby-mysql2.
8764 '(#:tests? #f
8765 #:phases
8766 (modify-phases %standard-phases
8767 (add-before 'build 'patch-gemspec
8768 (lambda _
8769 (substitute* ".gemspec"
8770 (("<eventmachine>.freeze, \\[\\\"= 1.0.9.1")
8771 "<eventmachine>, [\">= 1.0.9.1")
8772 (("<rack>.freeze, \\[\\\"~> 1.5") "<rack>, [\">= 1.5")
8773 (("<thin>.freeze, \\[\\\"~> 1.5.0") "<thin>, [\">= 1.5.0")
8774 (("<sinatra>.freeze, \\[\\\"~> 1.2") "<sinatra>, [\">= 1.2"))
8775 #t))
8776 (add-before 'build 'loosen-dependency-contraint
8777 (lambda _
8778 (substitute* "lib/mail_catcher.rb"
8779 (("\"eventmachine\", \"1.0.9.1\"") "\"eventmachine\", \">= 1.0.9.1\"")
8780 (("\"rack\", \"~> 1.5\"") "\"rack\", \">= 1.5\"")
8781 (("\"thin\", \"~> 1.5.0\"") "\"thin\", \">= 1.5.0\"")
8782 (("\"sinatra\", \"~> 1.2\"") "\"sinatra\", \">= 1.2\""))
8783 #t)))))
8784 (inputs
8785 `(("ruby-eventmachine" ,ruby-eventmachine)
8786 ("ruby-mail" ,ruby-mail)
8787 ("ruby-rack" ,ruby-rack)
8788 ("ruby-sinatra" ,ruby-sinatra)
8789 ("ruby-skinny" ,ruby-skinny)
8790 ("ruby-sqlite3" ,ruby-sqlite3)
8791 ("ruby-thin" ,ruby-thin)))
8792 (synopsis "SMTP server which catches messages to display them a browser")
8793 (description
8794 "MailCatcher runs a super simple SMTP server which catches any message
8795sent to it to display in a web interface. Run mailcatcher, set your favourite
8796app to deliver to smtp://127.0.0.1:1025 instead of your default SMTP server,
8797then check out http://127.0.0.1:1080 to see the mail.")
8798 (home-page "https://mailcatcher.me")
8799 (license license:expat)))
fc4f7c45
MK
8800
8801(define-public ruby-backport
8802 (package
8803 (name "ruby-backport")
b62863b8 8804 (version "1.1.2")
fc4f7c45
MK
8805 (source
8806 (origin
b62863b8 8807 ;; The gem does not include test code, so fetch from the Git repository.
fc4f7c45
MK
8808 (method git-fetch)
8809 (uri (git-reference
8810 (url "https://github.com/castwide/backport.git")
8811 (commit (string-append "v" version))))
8812 (file-name (git-file-name name version))
8813 (sha256
b62863b8 8814 (base32 "18fpg1n7n2z02ykz9v1x1q0cqa2lvivf8ygka768s01q1r9wfwv2"))))
fc4f7c45
MK
8815 (build-system ruby-build-system)
8816 (arguments
8817 `(#:test-target "spec"))
8818 (native-inputs
8819 `(("bundler" ,bundler)
8820 ("ruby-rspec" ,ruby-rspec)))
8821 (inputs
8822 `(("ruby-simplecov" ,ruby-simplecov)))
8823 (synopsis "Pure Ruby library for event-driven IO")
8824 (description
8825 "This package provides a pure Ruby library for event-driven IO.")
8826 (home-page "https://github.com/castwide/backport")
8827 (license license:expat)))
369faa59
JL
8828
8829(define-public ruby-json-schema
8830 (package
8831 (name "ruby-json-schema")
8832 (version "2.8.1")
8833 (source
8834 (origin
8835 (method url-fetch)
8836 (uri (rubygems-uri "json-schema" version))
8837 (sha256
8838 (base32
8839 "1yv5lfmr2nzd14af498xqd5p89f3g080q8wk0klr3vxgypsikkb5"))))
8840 (build-system ruby-build-system)
8841 (arguments
8842 `(#:tests? #f ; no tests
8843 #:phases
8844 (modify-phases %standard-phases
8845 (replace 'build
8846 (lambda _
8847 (invoke "gem" "build" ".gemspec"))))))
8848 (propagated-inputs
8849 `(("ruby-addressable" ,ruby-addressable)))
8850 (synopsis "Ruby JSON Schema Validator")
8851 (description "This library provides Ruby with an interface for validating
8852JSON objects against a JSON schema conforming to JSON Schema Draft 4. Legacy
8853support for JSON Schema Draft 3, JSON Schema Draft 2, and JSON Schema Draft 1
8854is also included.")
8855 (home-page "https://github.com/ruby-json-schema/json-schema")
8856 (license license:expat)))
44881cad
JL
8857
8858(define-public swagger-diff
8859 (package
8860 (name "swagger-diff")
8861 (version "1.1.2")
8862 (source
8863 (origin
8864 (method url-fetch)
8865 (uri (rubygems-uri "swagger-diff" version))
8866 (sha256
8867 (base32
8868 "1hxx50nga1bqn254iqjcdwkc9c72364ks9lyjyw10ajz0l0ly7sn"))))
8869 (build-system ruby-build-system)
8870 (arguments
8871 `(#:test-target "spec"
8872 #:phases
8873 (modify-phases %standard-phases
8874 ;; Don't run or require rubocop, the code linting tool, as this is a
8875 ;; bit unnecessary.
8876 (add-after 'unpack 'dont-run-rubocop
8877 (lambda _
8878 (substitute* "Rakefile"
8879 ((".*rubocop.*") "")
8880 ((".*RuboCop.*") ""))
8881 #t)))))
8882 (propagated-inputs
8883 `(("ruby-json-schema" ,ruby-json-schema)))
8884 (native-inputs
8885 `(("bundler" ,bundler)
8886 ("ruby-rspec-core" ,ruby-rspec-core)
8887 ("ruby-rspec-expectations" ,ruby-rspec-expectations)))
8888 (synopsis
8889 "Compare Open API Initiative specification files")
8890 (description
8891 "Swagger::Diff is a utility for comparing two different Open API
8892Initiative (OAI) specifications (formerly known as Swagger specifications).
8893It is intended to determine whether a newer API specification is
8894backwards-compatible with an older API specification.")
8895 (home-page "https://github.com/civisanalytics/swagger-diff")
8896 (license license:bsd-3)))
9e065a8a
BL
8897
8898(define-public ruby-reverse-markdown
8899 (package
8900 (name "ruby-reverse-markdown")
8901 (version "1.1.0")
8902 (source
8903 (origin
8904 (method url-fetch)
8905 (uri (rubygems-uri "reverse_markdown" version))
8906 (sha256
8907 (base32
8908 "0w7y5n74daajvl9gixr91nh8670d7mkgspkk3ql71m8azq3nffbg"))))
8909 (build-system ruby-build-system)
8910 (propagated-inputs
8911 `(("ruby-nokogiri" ,ruby-nokogiri)))
8912 (native-inputs
8913 `(("bundler" ,bundler)
8914 ("ruby-rspec" ,ruby-rspec)
8915 ("ruby-kramdown" ,ruby-kramdown)
8916 ("ruby-simplecov" ,ruby-simplecov)))
8917 (arguments
8918 `(#:phases
8919 (modify-phases %standard-phases
8920 (replace 'check
8921 (lambda* (#:key tests? #:allow-other-keys)
8922 (when tests?
8923 (invoke "rspec"))
8924 #t)))))
8925 (synopsis "Convert HTML into Markdown")
8926 (description
8927 "This Ruby module allows you to map simple HTML back into
8928Markdown---e.g., if you want to import existing HTML data in your
8929application.")
8930 (home-page "https://github.com/xijo/reverse_markdown")
8931 (license license:wtfpl2)))
8932
a9e2de7e
BL
8933(define-public ruby-solargraph
8934 (package
8935 (name "ruby-solargraph")
8936 (version "0.36.0")
8937 (source
8938 (origin
8939 (method url-fetch)
8940 (uri (rubygems-uri "solargraph" version))
8941 (sha256
8942 (base32
8943 "0b93xzkgd1h06da9gdnwivj1mzbil8lc072y2838dy6i7bxgpy9i"))))
8944 (build-system ruby-build-system)
8945 (propagated-inputs
8946 `(("ruby-backport" ,ruby-backport)
8947 ("bundler" ,bundler)
8948 ("ruby-htmlentities" ,ruby-htmlentities)
8949 ("ruby-jaro-winkler" ,ruby-jaro-winkler)
8950 ("ruby-maruku" ,ruby-maruku)
8951 ("ruby-nokogiri" ,ruby-nokogiri)
8952 ("ruby-parser" ,ruby-parser)
8953 ("ruby-reverse-markdown" ,ruby-reverse-markdown)
8954 ("ruby-rubocop" ,ruby-rubocop)
8955 ("ruby-thor" ,ruby-thor)
8956 ("ruby-tilt" ,ruby-tilt)
8957 ("ruby-yard" ,ruby-yard)))
8958 (native-inputs
8959 `(("ruby-rspec" ,ruby-rspec)
8960 ("ruby-pry" ,ruby-pry)
8961 ("ruby-simplecov" ,ruby-simplecov)
8962 ("ruby-webmock" ,ruby-webmock-2)))
8963 ;; FIXME: can't figure out how to run the tests properly:
8964
8965 ;; An error occurred while loading spec_helper.
8966 ;; Failure/Error: return gem_original_require(path)
8967 ;; LoadError:
8968 ;; cannot load such file -- spec_helper
8969 (arguments
8970 '(#:tests? #f
8971 #:phases
8972 (modify-phases %standard-phases
8973 (replace 'check
8974 (lambda* (#:key tests? #:allow-other-keys)
8975 (when tests?
8976 (invoke "rspec"))
8977 #t)))))
8978 (synopsis
8979 "IDE tools for code completion, inline documentation, and static analysis")
8980 (description
8981 "Solargraph provides a comprehensive suite of tools for Ruby
8982programming: intellisense, diagnostics, inline documentation, and type
8983checking.")
8984 (home-page "https://solargraph.org/")
8985 (license license:expat)))
0c558aa9
DNB
8986
8987(define-public ruby-wayback-machine-downloader
8988 (package
8989 (name "ruby-wayback-machine-downloader")
8990 (version "2.2.1")
8991 (source
8992 (origin
8993 (method url-fetch)
8994 (uri (rubygems-uri
8995 "wayback_machine_downloader"
8996 version))
8997 (sha256
8998 (base32
8999 "12kb1qmvmmsaihqab1prn6cmynkn6cgb4vf41mgv22wkcgv5wgk2"))))
9000 (build-system ruby-build-system)
9001 (arguments
9002 '(#:tests? #f)) ; no tests
9003 (synopsis "Download archived websites from the Wayback Machine")
9004 (description
9005 "Wayback Machine Downloader is a command line tool for downloading
9006websites from the Internet Archive's Wayback Machine (archive.org).
9007It allows fine grained control over what to download by specifying
9008which snapshots to consider and what files to include.")
9009 (home-page
9010 "https://github.com/hartator/wayback-machine-downloader")
9011 (license license:expat)))