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