summaryrefslogtreecommitdiff
path: root/gnu/packages/ruby.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/ruby.scm')
-rw-r--r--gnu/packages/ruby.scm17767
1 files changed, 12 insertions, 17755 deletions
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 105ac485fc5..d7341d8f97e 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -1,41 +1,20 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014, 2015 Pjotr Prins <pjotr.guix@thebird.nl> 2;;; Copyright © 2014, 2015 Pjotr Prins <pjotr.guix@thebird.nl>
3;;; Copyright © 2014-2017, 2021-2022, 2024 Ludovic Courtès <ludo@gnu.org> 3;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
4;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org> 4;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
5;;; Copyright © 2014, 2015 David Thompson <davet@gnu.org> 5;;; Copyright © 2015-2018 Ben Woodcroft <donttrustben@gmail.com>
6;;; Copyright © 2015 David Thompson <davet@gnu.org>
6;;; Copyright © 2015, 2019 Ricardo Wurmus <rekado@elephly.net> 7;;; Copyright © 2015, 2019 Ricardo Wurmus <rekado@elephly.net>
7;;; Copyright © 2015, 2016, 2017 Ben Woodcroft <donttrustben@gmail.com> 8;;; Copyright © 2018 Danny Milosavljevic <dannym@scratchpost.org>
8;;; Copyright © 2017 Nikita <nikita@n0.is> 9;;; Copyright © 2019, 2020 Christopher Baines <mail@cbaines.net>
9;;; Copyright © 2017, 2019-2022 Marius Bakke <marius@gnu.org>
10;;; Copyright © 2017-2025 Efraim Flashner <efraim@flashner.co.il>
11;;; Copyright © 2017, 2018, 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
12;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
13;;; Copyright © 2017, 2018, 2019 Christopher Baines <mail@cbaines.net>
14;;; Copyright © 2018 Vasile Dumitrascu <va511e@yahoo.com>
15;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
16;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
17;;; Copyright © 2019 Mikhail Kirillov <w96k.ru@gmail.com>
18;;; Copyright © 2019 Jelle Licht <jlicht@fsfe.org> 10;;; Copyright © 2019 Jelle Licht <jlicht@fsfe.org>
19;;; Copyright © 2019 Brian Leung <bkleung89@gmail.com>
20;;; Copyright © 2019 Collin J. Doering <collin@rekahsoft.ca>
21;;; Copyright © 2019 Diego N. Barbato <dnbarbato@posteo.de>
22;;; Copyright © 2019 Brett Gilio <brettg@posteo.de>
23;;; Copyright © 2020, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com> 11;;; Copyright © 2020, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
24;;; Copyright © 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr> 12;;; Copyright © 2020 Ryan Prior <rprior@protonmail.com>
25;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de> 13;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
26;;; Copyright © 2020 Holgr Peters <holger.peters@posteo.de> 14;;; Copyright © 2021 Marius Bakke <marius@gnu.org>
27;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org> 15;;; Copyright © 2023 Christopher Baines <mail@cbaines.net>
28;;; Copyright © 2021 EuAndreh <eu@euandre.org> 16;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
29;;; Copyright © 2020 Tomás Ortín Fernández <tomasortin@mailbox.org> 17;;; Copyright © 2023 Zheng Junjie <873216071@qq.com>
30;;; Copyright © 2021 Giovanni Biscuolo <g@xelera.eu>
31;;; Copyright © 2022 Philip McGrath <philip@philipmcgrath.com>
32;;; Copyright © 2022-2025 Remco van 't Veer <remco@remworks.net>
33;;; Copyright © 2022 Taiju HIGASHI <higashi@taiju.info>
34;;; Copyright © 2023 Yovan Naumovski <yovan@gorski.stream>
35;;; Copyright © 2023, 2024 gemmaro <gemmaro.dev@gmail.com>
36;;; Copyright © 2023, 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
37;;; Copyright © 2023, 2024 Zheng Junjie <873216071@qq.com>
38;;; Copyright © 2023, 2024 Hartmut Goebel <h.goebel@crazy-compilers.com>
39;;; Copyright © 2025 Nicolas Graves <ngraves@ngraves.fr> 18;;; Copyright © 2025 Nicolas Graves <ngraves@ngraves.fr>
40;;; 19;;;
41;;; This file is part of GNU Guix. 20;;; This file is part of GNU Guix.
@@ -96,7 +75,6 @@
96 #:use-module (gnu packages web-browsers) 75 #:use-module (gnu packages web-browsers)
97 #:use-module (gnu packages serialization) 76 #:use-module (gnu packages serialization)
98 #:use-module (guix packages) 77 #:use-module (guix packages)
99 #:use-module (guix deprecation)
100 #:use-module (guix download) 78 #:use-module (guix download)
101 #:use-module (guix git-download) 79 #:use-module (guix git-download)
102 #:use-module (guix gexp) 80 #:use-module (guix gexp)
@@ -105,15 +83,7 @@
105 #:use-module (guix build-system gnu) 83 #:use-module (guix build-system gnu)
106 #:use-module (gnu packages xml) 84 #:use-module (gnu packages xml)
107 #:use-module (gnu packages web) 85 #:use-module (gnu packages web)
108 #:use-module (guix build-system ruby) 86 #:use-module (guix build-system ruby))
109 #:use-module ((srfi srfi-1) #:select (alist-delete)))
110
111(define %prawn-project-licenses
112 ;; This set of licenses applies to most (all?) components of the Prawn
113 ;; project (it is triple licensed).
114 (list license:ruby
115 license:gpl2+
116 license:gpl3+))
117 87
118(define-public ruby-3.4 88(define-public ruby-3.4
119 (package 89 (package
@@ -349,17719 +319,6 @@ language. Its syntax is Ruby 3.x compatible except for pattern
349matching. mruby can be linked and embedded within your application.") 319matching. mruby can be linked and embedded within your application.")
350 (license license:expat))) 320 (license license:expat)))
351 321
352(define-public ruby-commander
353 (package
354 (name "ruby-commander")
355 (version "4.6.0")
356 (source
357 (origin
358 (method url-fetch)
359 (uri (rubygems-uri "commander" version))
360 (sha256
361 (base32
362 "1n8k547hqq9hvbyqbx2qi08g0bky20bbjca1df8cqq5frhzxq7bx"))))
363 (build-system ruby-build-system)
364 (arguments
365 (list
366 #:test-target "spec"
367 #:phases
368 #~(modify-phases %standard-phases
369 ;; Don't run or require rubocop, the code linting tool, as this is a
370 ;; bit unnecessary.
371 (add-after 'unpack 'dont-run-rubocop
372 (lambda _
373 (substitute* "Rakefile"
374 ((".*rubocop.*") "")
375 ((".*RuboCop.*") "")))))))
376 (propagated-inputs
377 (list ruby-highline))
378 (native-inputs
379 (list bundler ruby-rspec-core ruby-rspec-expectations
380 ruby-rspec-mocks ruby-simplecov))
381 (home-page "https://github.com/commander-rb/commander")
382 (synopsis "Library for building Ruby command-line executables")
383 (description
384 "Commander aims to be a complete solution for Ruby command-line
385executables. Commander bridges the gap between other terminal related
386libraries (OptionParser, HighLine), while providing many new features, and an
387elegant API.")
388 (license license:expat)))
389
390(define-public ruby-highline
391 (package
392 (name "ruby-highline")
393 (version "2.0.1")
394 (source
395 (origin
396 (method url-fetch)
397 (uri (rubygems-uri "highline" version))
398 (sha256
399 (base32
400 "0gr6pckj2jayxw1gdgh9193j5jag5zrrqqlrnl4jvcwpyd3sn2zc"))))
401 (build-system ruby-build-system)
402 (arguments
403 `(#:tests? #f)) ;; TODO: NameError: uninitialized constant SPEC
404 (native-inputs
405 (list bundler ruby-code-statistics))
406 (synopsis
407 "HighLine helps you build command-line interfaces")
408 (description
409 "HighLine provides a high-level IO library that provides validation,
410type conversion, and more for command-line interfaces. HighLine also includes
411a menu system for providing multiple options to the user.")
412 (home-page "https://github.com/JEG2/highline")
413 (license (list license:gpl2 license:ruby))))
414
415(define-public ruby-hoe
416 (package
417 (name "ruby-hoe")
418 (version "4.2.2")
419 (source (origin
420 (method url-fetch)
421 (uri (rubygems-uri "hoe" version))
422 (sha256
423 (base32
424 "1rhj1zs02mpdw6f4fh3mpfmj0p5pfar7rfxm758pk7l931mm8pyn"))))
425 (build-system ruby-build-system)
426 (arguments
427 (list
428 ;; Circular dependency with minitest
429 #:tests? #f))
430 (synopsis "Ruby project management helper")
431 (description
432 "Hoe is a rake/rubygems helper for project Rakefiles. It helps manage,
433maintain, and release projects and includes a dynamic plug-in system allowing
434for easy extensibility. Hoe ships with plug-ins for all the usual project
435tasks including rdoc generation, testing, packaging, deployment, and
436announcement.")
437 (home-page "https://www.zenspider.com/projects/hoe.html")
438 (license license:expat)))
439
440(define-public ruby-hoe-3
441 (package
442 (inherit ruby-hoe)
443 (version "3.26.0")
444 (source (origin
445 (method url-fetch)
446 (uri (rubygems-uri "hoe" version))
447 (sha256
448 (base32
449 "02vmphnfzna1dbb1l5nczcvlvvsg4flr26bdhmvdyf447bpswa63"))))))
450
451(define-public ruby-rake-compiler
452 (package
453 (name "ruby-rake-compiler")
454 (version "1.2.9")
455 (source (origin
456 (method url-fetch)
457 (uri (rubygems-uri "rake-compiler" version))
458 (sha256
459 (base32
460 "01rnl94p1sr84xkbnh66db42qsndykbfx2z2fggxyxx9vnji6cjs"))))
461 (build-system ruby-build-system)
462 (arguments
463 '(#:tests? #f)) ; needs cucumber
464 (synopsis "Building and packaging helper for Ruby native extensions")
465 (description "Rake-compiler provides a framework for building and
466packaging native C and Java extensions in Ruby.")
467 (home-page "https://github.com/rake-compiler/rake-compiler")
468 (license license:expat)))
469
470(define-public ruby-rake-compiler-dock
471 (package
472 (name "ruby-rake-compiler-dock")
473 (version "1.3.0")
474 (source (origin
475 (method url-fetch)
476 (uri (rubygems-uri "rake-compiler-dock" version))
477 (sha256
478 (base32
479 "0yr5f72irvhmnk12q7bbr4qw0xwy7diqkbcvb4lygjbg7rvk3k8k"))))
480 (build-system ruby-build-system)
481 (arguments (list #:tests? #f)) ;test suite requires docker
482 (synopsis "Cross compiler environment for building Ruby gems")
483 (description "The code{rake-compiler-dock} gem provides a cross compiler
484environment for building gems on a variety of platforms (GNU/Linux, JRuby,
485Windows and Mac).")
486 (home-page "https://github.com/rake-compiler/rake-compiler-dock")
487 (license license:expat)))
488
489(define-public ruby-rsync
490 (package
491 (name "ruby-rsync")
492 (version "1.0.9")
493 (source
494 (origin
495 (method url-fetch)
496 (uri (rubygems-uri "rsync" version))
497 (sha256
498 (base32
499 "0p8b27q1gvxilqfq2528xpwglzcm2myikkjxpqk7mwbwg9r6knxv"))))
500 (build-system ruby-build-system)
501 (arguments
502 '(#:test-target "spec"
503 #:phases
504 (modify-phases %standard-phases
505 (add-after 'unpack 'remove-coveralls-requirement
506 (lambda _
507 (substitute* "spec/spec_helper.rb"
508 (("require 'coveralls'") "")
509 (("Coveralls.wear!") "")))))))
510 (native-inputs
511 (list bundler rsync ruby-rspec-core ruby-rspec-expectations
512 ruby-rspec-mocks))
513 (home-page "https://github.com/jbussdieker/ruby-rsync")
514 (synopsis "Ruby wrapper around rsync")
515 (description
516 "Ruby Rsync is a Ruby library that can synchronize files between remote
517hosts by wrapping the @file{rsync} binary.")
518 (license license:expat)))
519
520(define-public ruby-i18n
521 (package
522 (name "ruby-i18n")
523 (version "1.13.0")
524 (source (origin
525 (method url-fetch)
526 (uri (rubygems-uri "i18n" version))
527 (sha256
528 (base32
529 "1yk33slipi3i1kydzrrchbi7cgisaxym6pgwlzx7ir8vjk6wl90x"))))
530 (build-system ruby-build-system)
531 (arguments
532 '(#:tests? #f)) ; no tests
533 (propagated-inputs `(("concurrent-ruby" ,ruby-concurrent)))
534 (synopsis "Internationalization library for Ruby")
535 (description "Ruby i18n is an internationalization and localization
536solution for Ruby programs. It features translation and localization,
537interpolation of values to translations, pluralization, customizable
538transliteration to ASCII, flexible defaults, bulk lookup, lambdas as
539translation data, custom key/scope separator, custom exception handlers, and
540an extensible architecture with a swappable backend.")
541 (home-page "https://github.com/ruby-i18n/i18n")
542 (license license:expat)))
543
544(define-public ruby-ice-nine
545 (package
546 (name "ruby-ice-nine")
547 (version "0.11.2")
548 (source
549 (origin
550 (method url-fetch)
551 (uri (rubygems-uri "ice_nine" version))
552 (sha256
553 (base32 "1nv35qg1rps9fsis28hz2cq2fx1i96795f91q4nmkm934xynll2x"))))
554 (build-system ruby-build-system)
555 (arguments
556 (list #:tests? #f)) ;Dependency on convoluted unpackaged ruby-devtools.
557 (synopsis "Deep Freeze Ruby Objects")
558 (description
559 "This package provides a function to deep freeze Ruby objects.")
560 (home-page "https://github.com/dkubb/ice_nine")
561 (license license:expat)))
562
563(define-public ruby-io-console
564 (package
565 (name "ruby-io-console")
566 (version "0.6.0")
567 (source (origin
568 (method git-fetch) ;for tests
569 (uri (git-reference
570 (url "https://github.com/ruby/io-console/")
571 (commit (string-append "v" version))))
572 (file-name (git-file-name name version))
573 (sha256
574 (base32
575 "0gwxrp29b6awkid1sf85sbh529mnq6hb86m8c2443cm6nc4vr8qb"))))
576 (build-system ruby-build-system)
577 (arguments
578 (list #:phases #~(modify-phases %standard-phases
579 (add-after 'unpack 'delete-rakelib-files
580 (lambda _
581 ;; These depend on git and other extraneous
582 ;; dependencies, and are loaded by rake.
583 (delete-file-recursively "rakelib"))))))
584 (native-inputs (list ruby-rake-compiler))
585 (synopsis "Console capabilities library for IO instances")
586 (description "IO.console adds console capabilities to Ruby IO instances.")
587 (home-page "https://github.com/ruby/io-console")
588 (license license:bsd-2)))
589
590(define-public ruby-irb
591 (package
592 (name "ruby-irb")
593 (version "1.6.3")
594 (source (origin
595 (method url-fetch)
596 (uri (rubygems-uri "irb" version))
597 (sha256
598 (base32
599 "1h9s07n5v3z029v18924ws9vdkdc80n6llp9ccx77yg1krv2g0f3"))))
600 (build-system ruby-build-system)
601 ;; XXX: Disable the test suite, as it requires debug, which requires this
602 ;; package (dependency cycle).
603 (arguments (list #:tests? #f))
604 (propagated-inputs (list ruby-reline))
605 (synopsis "Ruby command-line tool for REPL (Read Eval Print Loop)")
606 (description "IRB is an interactive Ruby command-line tool for REPL (Read
607Eval Print Loop).")
608 (home-page "https://github.com/ruby/irb")
609 (license license:bsd-2)))
610
611(define-public ruby-irb-1.1.1
612 (package
613 (inherit ruby-irb)
614 (version "1.1.1")
615 (source (origin
616 (method url-fetch)
617 (uri (rubygems-uri "irb" version))
618 (sha256
619 (base32
620 "0h605w798s2bg9wg681ynvvzgdz1yy69gh387bl0khw9ll7wkn8v"))))))
621
622(define-public ruby-iruby
623 (package
624 (name "ruby-iruby")
625 (version "0.3")
626 (source
627 (origin
628 (method url-fetch)
629 (uri (rubygems-uri "iruby" version))
630 (sha256
631 (base32
632 "1wdf2c0x8y6cya0n3y0p3p7b1sxkb2fdavdn2k58rf4rs37s7rzn"))))
633 (build-system ruby-build-system)
634 (arguments
635 ;; TODO: Tests currently fail.
636 ;;
637 ;; Finished in 1.764405s, 1.1335 runs/s, 5.1009 assertions/s.
638 ;;
639 ;; 1) Failure:
640 ;; IntegrationTest#test_interaction [/tmp/guix-build-ruby-iruby-0.3.drv-0/gem/test/integration_test.rb:25]:
641 ;; In [ expected
642 ;;
643 ;; 2 runs, 9 assertions, 1 failures, 0 errors, 0 skips
644 '(#:tests? #f
645 #:phases
646 (modify-phases %standard-phases
647 (add-after 'unpack 'patch-ipython
648 (lambda* (#:key inputs #:allow-other-keys)
649 (substitute* "lib/iruby/command.rb"
650 (("version = `")
651 (string-append
652 "version = `"
653 (assoc-ref inputs "python-ipython")
654 "/bin/"))
655 (("Kernel\\.exec\\('")
656 (string-append
657 "Kernel.exec('"
658 (assoc-ref inputs "python-ipython")
659 "/bin/"))))))))
660 (inputs
661 (list python-ipython))
662 (propagated-inputs
663 (list ruby-bond
664 ruby-data_uri
665 ruby-mimemagic
666 ruby-multi-json
667 ruby-cztop
668 ;; Optional inputs
669 ruby-pry))
670 (synopsis "Ruby kernel for Jupyter/IPython")
671 (description
672 "This package provides a Ruby kernel for Jupyter/IPython frontends (e.g.
673notebook).")
674 (home-page "https://github.com/SciRuby/iruby")
675 (license license:expat)))
676
677;; RSpec is the dominant testing library for Ruby projects. Even RSpec's
678;; dependencies use RSpec for their test suites! To avoid these circular
679;; dependencies, we disable tests for all of the RSpec-related packages.
680(define-public ruby-rspec-support
681 (package
682 (name "ruby-rspec-support")
683 (version "3.13.2")
684 (source (origin
685 (method url-fetch)
686 (uri (rubygems-uri "rspec-support" version))
687 (sha256
688 (base32
689 "1v6v6xvxcpkrrsrv7v1xgf7sl0d71vcfz1cnrjflpf6r7x3a58yf"))))
690 (build-system ruby-build-system)
691 (arguments
692 '(#:tests? #f)) ; avoid dependency cycles
693 (synopsis "RSpec support library")
694 (description "Support utilities for RSpec gems.")
695 (home-page "https://github.com/rspec/rspec-support")
696 (license license:expat)))
697
698(define-public ruby-rspec-core
699 (package
700 (name "ruby-rspec-core")
701 (version "3.13.2")
702 (source (origin
703 (method url-fetch)
704 (uri (rubygems-uri "rspec-core" version))
705 (sha256
706 (base32
707 "001kazj244cb6fbkmh7ap74csbr78717qaskqzqpir1q8xpdmywl"))))
708 (build-system ruby-build-system)
709 (arguments
710 '(#:tests? #f)) ; avoid dependency cycles
711 (propagated-inputs
712 (list ruby-rspec-support))
713 (synopsis "RSpec core library")
714 (description "Rspec-core provides the RSpec test runner and example
715groups.")
716 (home-page "https://github.com/rspec/rspec-core")
717 (license license:expat)))
718
719(define-public ruby-rspec-core-2
720 (package (inherit ruby-rspec-core)
721 (version "2.14.8")
722 (source (origin
723 (method url-fetch)
724 (uri (rubygems-uri "rspec-core" version))
725 (sha256
726 (base32
727 "0psjy5kdlz3ph39br0m01w65i1ikagnqlg39f8p65jh5q7dz8hwc"))))
728 (arguments
729 (cons*
730 #:phases
731 #~(modify-phases %standard-phases
732 (add-after 'unpack 'patch
733 (lambda _
734 (substitute* "lib/rspec/core/ruby_project.rb"
735 (("File\\.exists\\?") "File.exist?")))))
736 (package-arguments ruby-rspec-core)))
737 (propagated-inputs `())))
738
739(define-public ruby-date
740 (package
741 (name "ruby-date")
742 (version "3.3.3")
743 (source (origin
744 (method git-fetch)
745 (uri (git-reference
746 (url "https://github.com/ruby/date")
747 (commit (string-append "v" version))))
748 (file-name (git-file-name name version))
749 (sha256
750 (base32
751 "1jiqjnaap1jk1r8z37iicnzqha1rhc713qmcir17f4vnz8ac8v75"))))
752 (build-system ruby-build-system)
753 (arguments (list #:test-target "default"))
754 (native-inputs (list ruby-rake-compiler))
755 (synopsis "Ruby @code{Object} subclass with date comparison capability")
756 (description "This package provides a subclass of @code{Object} that
757includes the @code{Comparable} module for handling dates.")
758 (home-page "https://github.com/ruby/date")
759 (license license:bsd-2)))
760
761(define-public ruby-time
762 (package
763 (name "ruby-time")
764 (version "0.3.0")
765 (source (origin
766 (method git-fetch) ; for tests
767 (uri (git-reference
768 (url "https://github.com/ruby/time")
769 (commit (string-append "v" version))))
770 (file-name (git-file-name name version))
771 (sha256
772 (base32
773 "0jd6df2lxd60wcxyaf37j8v3nnfn952d5xhg6aap9zlcdmkk4g2n"))))
774 (build-system ruby-build-system)
775 (propagated-inputs (list ruby-date))
776 (native-inputs (list ruby-test-unit-ruby-core))
777 (synopsis
778 "Extends the Time class with methods for parsing and conversion")
779 (description
780 "When this gem is @code{require}d, it extends the Time class with with
781additional methods for parsing and converting Times.")
782 (home-page "https://github.com/ruby/time")
783 (license license:bsd-2)))
784
785(define-public ruby-diff-lcs
786 (package
787 (name "ruby-diff-lcs")
788 (version "1.3")
789 (source (origin
790 (method url-fetch)
791 (uri (rubygems-uri "diff-lcs" version))
792 (sha256
793 (base32
794 "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza"))))
795 (build-system ruby-build-system)
796 (arguments
797 '(#:tests? #f)) ; avoid dependency cycles
798 (synopsis "Compute the difference between two Enumerable sequences")
799 (description "Diff::LCS computes the difference between two Enumerable
800sequences using the McIlroy-Hunt longest common subsequence (LCS) algorithm.
801It includes utilities to create a simple HTML diff output format and a
802standard diff-like tool.")
803 (home-page "https://github.com/halostatue/diff-lcs")
804 (license license:expat)))
805
806(define-public ruby-rspec-expectations
807 (package
808 (name "ruby-rspec-expectations")
809 (version "3.13.3")
810 (source (origin
811 (method url-fetch)
812 (uri (rubygems-uri "rspec-expectations" version))
813 (sha256
814 (base32
815 "0n3cyrhsa75x5wwvskrrqk56jbjgdi2q1zx0irllf0chkgsmlsqf"))))
816 (build-system ruby-build-system)
817 (arguments
818 '(#:tests? #f)) ; avoid dependency cycles
819 (propagated-inputs
820 (list ruby-diff-lcs ruby-rspec-support))
821 (synopsis "RSpec expectations library")
822 (description "Rspec-expectations provides a simple API to express expected
823outcomes of a code example.")
824 (home-page "https://github.com/rspec/rspec-expectations")
825 (license license:expat)))
826
827(define-public ruby-rspec-expectations-2
828 (package (inherit ruby-rspec-expectations)
829 (version "2.14.5")
830 (source (origin
831 (method url-fetch)
832 (uri (rubygems-uri "rspec-expectations" version))
833 (sha256
834 (base32
835 "1ni8kw8kjv76jvwjzi4jba00k3qzj9f8wd94vm6inz0jz3gwjqf9"))))
836 (propagated-inputs
837 (list ruby-diff-lcs))))
838
839(define-public ruby-sorcerer
840 (package
841 (name "ruby-sorcerer")
842 (version "2.0.1")
843 (source
844 (origin
845 (method url-fetch)
846 (uri (rubygems-uri "sorcerer" version))
847 (sha256
848 (base32
849 "0d32ha9pp9slpmsm027pkdpbr9vc5jn2m8rl6hwwx6a87m8cr58h"))))
850 (build-system ruby-build-system)
851 (synopsis "Ripper-style abstract syntax tree to Ruby source generator")
852 (description "Sorcerer generates Ruby code from a Ripper-like abstract
853syntax tree (i.e. S-Expressions). Sorcerer is targeted mainly at small
854snippets of Ruby code, expressible in a single line. Longer examples may be
855re-sourced, but they will be rendered in a single-line format.")
856 (home-page "https://github.com/rspec-given/sorcerer")
857 (license license:expat)))
858
859(define-public ruby-sorted-set
860 (package
861 (name "ruby-sorted-set")
862 (version "1.0.3")
863 (source (origin
864 (method url-fetch)
865 (uri (rubygems-uri "sorted_set" version))
866 (sha256
867 (base32
868 "0brpwv68d7m9qbf5js4bg8bmg4v7h4ghz312jv9cnnccdvp8nasg"))))
869 (build-system ruby-build-system)
870 (propagated-inputs
871 (list ruby-rbtree ruby-set))
872 (synopsis
873 "Ruby Set variant whose elements are sorted in ascending order")
874 (description
875 "This package implements a variant of Set whose elements are sorted in
876ascending order")
877 (home-page "https://github.com/knu/sorted_set")
878 (license license:bsd-2)))
879
880(define-public ruby-given-core
881 (package
882 (name "ruby-given-core")
883 (version "3.8.2")
884 (source
885 (origin
886 (method url-fetch)
887 (uri (rubygems-uri "given_core" version))
888 (sha256
889 (base32
890 "0w1pyhgb2am7c267s8v06dpd9qhmsk2x4hfr2aq8l8lh49ma227s"))))
891 (build-system ruby-build-system)
892 (arguments '(#:tests? #f)) ;no test suite for the core package
893 (propagated-inputs
894 (list ruby-sorcerer))
895 (synopsis "Core abstractions used by rspec-given and minitest-given")
896 (description "Given_core is the basic functionality behind rspec-given and
897minitest-given, extensions that allow the use of Given/When/Then terminology
898when defining specifications.")
899 (home-page "https://github.com/rspec-given/rspec-given")
900 (license license:expat)))
901
902(define-public ruby-rspec-given
903 (package
904 (name "ruby-rspec-given")
905 (version "3.8.2")
906 (source
907 (origin
908 (method url-fetch)
909 (uri (rubygems-uri "rspec-given" version))
910 (sha256
911 (base32
912 "0xzzxjjzwrsp84p12sd6ab3jbm9kh7sbnqpxgc9mlfq3s3ll0fdj"))))
913 (build-system ruby-build-system)
914 (arguments
915 `(#:test-target "rs"
916 #:phases
917 (modify-phases %standard-phases
918 (add-after 'unpack 'fix-rakefile
919 (lambda _
920 (substitute* '("Rakefile" "rakelib/gemspec.rake")
921 (("require '\\./lib/given/.*") "")
922 (("Given::VERSION") (format #f "~s" ,version))
923 ;; Fix the error: "cannot load such file -- example_helper"
924 (("sh \"rspec")
925 "sh \"rspec -Ilib:examples"))))
926 (add-after 'extract-gemspec 'delete-failing-tests
927 ;; See: https://github.com/jimweirich/rspec-given/issues/57.
928 (lambda _
929 (substitute* ".gemspec"
930 (("\"spec/lib/given/natural_assertion_spec.rb\".freeze, ")
931 "")
932 (("\"examples/integration/failing_messages_spec.rb\".freeze, ")
933 ""))
934 (delete-file "spec/lib/given/natural_assertion_spec.rb")
935 (delete-file "examples/integration/failing_messages_spec.rb"))))))
936 (native-inputs
937 (list ruby-rspec ruby-minitest))
938 (propagated-inputs
939 (list ruby-given-core ruby-rspec))
940 (synopsis "Given/When/Then for RSpec and Minitest")
941 (description "Given is an RSpec extension that allows the use of
942Given/When/Then terminology when defining specifications, in a way similar to
943the Cucumber Gherkin language.")
944 (home-page "https://github.com/rspec-given/rspec-given")
945 (license license:expat)))
946
947(define-public ruby-rspec-its
948 (package
949 (name "ruby-rspec-its")
950 (version "1.3.0")
951 (source
952 (origin
953 (method git-fetch)
954 (uri (git-reference
955 (url "https://github.com/rspec/rspec-its")
956 (commit (string-append "v" version))))
957 (file-name (git-file-name name version))
958 (sha256
959 (base32
960 "02mlsc9d4d1cjj5vahi8v3q8hyn9fyiv8nnlidhgfh186qp20g1p"))))
961 (build-system ruby-build-system)
962 (arguments
963 `(#:test-target "spec"
964 #:phases
965 (modify-phases %standard-phases
966 (add-after 'unpack 'dont-install-gems-from-gemfile
967 (lambda _
968 (substitute* "Gemfile"
969 (("rspec rspec-core rspec-expectations rspec-mocks rspec-support")
970 ""))))
971 (add-before 'build 'loosen-ffi-requirement
972 (lambda _
973 ;; Accept any version of ruby-ffi.
974 (substitute* "Gemfile"
975 ((" gem 'ffi', '~> 1\\.9\\.25'")
976 " gem 'ffi'"))))
977 (add-before 'build 'remove-unnecessary-dependency-versions-from-gemfile
978 (lambda _
979 (substitute* "rspec-its.gemspec"
980 (("rake.*") "rake'\n")
981 (("spec.add_development_dependency 'cucumber'.*")
982 "spec.add_development_dependency 'cucumber'\n")
983 (("bundler.*") "bundler'\n")
984 (("\"aruba.*") "'aruba'\n")))))))
985 (propagated-inputs
986 (list ruby-rspec-core ruby-rspec-expectations))
987 (native-inputs
988 (list bundler ruby-cucumber ruby-ffi ruby-aruba))
989 (synopsis "RSpec extension that provides the @code{its} method")
990 (description
991 "RSpec::Its provides the its method as a short-hand to specify the expected
992value of an attribute. For example, one can use @code{its(:size)\\{should
993eq(1)\\}}.")
994 (home-page "https://github.com/rspec/rspec-its")
995 (license license:expat)))
996
997;;; This variant is used to break a cycle with ruby-protobuf.
998(define-public ruby-rspec-its-minimal
999 (hidden-package
1000 (package
1001 (inherit ruby-rspec-its)
1002 (arguments
1003 (substitute-keyword-arguments (package-arguments ruby-rspec-its)
1004 ((#:tests? _ #f) #f)))
1005 (native-inputs '()))))
1006
1007(define-public ruby-rspec-mocks
1008 (package
1009 (name "ruby-rspec-mocks")
1010 (version "3.13.2")
1011 (source (origin
1012 (method url-fetch)
1013 (uri (rubygems-uri "rspec-mocks" version))
1014 (sha256
1015 (base32
1016 "1vxxkb2sf2b36d8ca2nq84kjf85fz4x7wqcvb8r6a5hfxxfk69r3"))))
1017 (build-system ruby-build-system)
1018 (arguments
1019 '(#:tests? #f)) ; avoid dependency cycles
1020 (propagated-inputs
1021 (list ruby-diff-lcs ruby-rspec-support))
1022 (synopsis "RSpec stubbing and mocking library")
1023 (description "Rspec-mocks provides RSpec's \"test double\" framework, with
1024support for stubbing and mocking.")
1025 (home-page "https://github.com/rspec/rspec-mocks")
1026 (license license:expat)))
1027
1028(define-public ruby-rspec-mocks-2
1029 (package (inherit ruby-rspec-mocks)
1030 (version "2.14.6")
1031 (source (origin
1032 (method url-fetch)
1033 (uri (rubygems-uri "rspec-mocks" version))
1034 (sha256
1035 (base32
1036 "1fwsmijd6w6cmqyh4ky2nq89jrpzh56hzmndx9wgkmdgfhfakv30"))))
1037 (propagated-inputs
1038 (list ruby-diff-lcs))))
1039
1040(define-public ruby-rspec-block-is-expected
1041 (package
1042 (name "ruby-rspec-block-is-expected")
1043 (version "1.0.5")
1044 (source (origin
1045 (method git-fetch) ;for tests
1046 (uri (git-reference
1047 (url "https://github.com/pboling/rspec-block_is_expected")
1048 (commit (string-append "v" version))))
1049 (file-name (git-file-name name version))
1050 (sha256
1051 (base32
1052 "1zi5z12lkw3fiwgr7g61845wj73asr2vzw4zsjv45klnnfspwass"))))
1053 (build-system ruby-build-system)
1054 (arguments
1055 (list #:phases #~(modify-phases %standard-phases
1056 (add-after 'unpack 'relax-requirements
1057 (lambda _
1058 (substitute* "Rakefile"
1059 (("require 'rubocop/rake_task'") "")
1060 (("RuboCop::RakeTask.new") ""))
1061 ;; Contains extraneous requirements not actually
1062 ;; needed for the test suite.
1063 (delete-file "Gemfile")))
1064 (add-before 'build 'drop-signing-key-requirement
1065 (lambda _
1066 (substitute* "rspec-block_is_expected.gemspec"
1067 (("spec.signing_key =.*")
1068 "spec.signing_key = nil")))))))
1069 (native-inputs (list ruby-rspec-pending-for ruby-rspec-expectations))
1070 (propagated-inputs (list ruby-rspec-core))
1071 (synopsis "Simplify testing of blocks in RSpec")
1072 (description "This RSpec plugin allows you to use @code{block_is_expected}
1073similarly to how you would use @code{is_expected} if a block was wrapping the
1074subject.")
1075 (home-page "https://github.com/pboling/rspec-block_is_expected")
1076 (license license:expat)))
1077
1078(define-public ruby-rspec-pending-for
1079 (package
1080 (name "ruby-rspec-pending-for")
1081 (version "0.1.16")
1082 (source (origin
1083 (method git-fetch) ;for tests
1084 (uri (git-reference
1085 (url "https://github.com/pboling/rspec-pending_for")
1086 (commit (string-append "v" version))))
1087 (file-name (git-file-name name version))
1088 (sha256
1089 (base32
1090 "107l560vm0kx25w5iy5rsk9ly8dxzr81b31284j514f4hkd0qv3m"))))
1091 (build-system ruby-build-system)
1092 (native-inputs (list ruby-rspec ruby-simplecov))
1093 (propagated-inputs (list ruby-rspec-core ruby-ruby-engine
1094 ruby-ruby-version))
1095 (synopsis "Skip RSpec tests for specific Ruby engines or versions")
1096 (description "This RSpec plugin makes it easy to mark test cases as
1097pending or skipped for a specific Ruby engine (e.g. MRI or JRuby) or version
1098combinations.")
1099 (home-page "https://github.com/pboling/rspec-pending_for")
1100 (license license:expat)))
1101
1102(define-public ruby-rspec-rerun
1103 (package
1104 (name "ruby-rspec-rerun")
1105 (version "1.1.0")
1106 (source
1107 (origin
1108 (method url-fetch)
1109 (uri (rubygems-uri "rspec-rerun" version))
1110 (sha256
1111 (base32
1112 "1gy7znkcaqhpccfnk2nvaqbsvgxy3q57cmjwkl9fi1zabaq5lbkj"))))
1113 (build-system ruby-build-system)
1114 (arguments
1115 '(;; No included tests
1116 #:tests? #f))
1117 (propagated-inputs (list ruby-rspec))
1118 (synopsis "Track failed RSpec tests to re-run them")
1119 (description
1120 "This package provides an automated way to track, and then re-run failed
1121RSpec tests.")
1122 (home-page "https://github.com/dblock/rspec-rerun")
1123 (license license:expat)))
1124
1125(define-public ruby-rspec-stubbed-env
1126 ;; There is no release nor tag (see:
1127 ;; https://github.com/pboling/rspec-stubbed_env/issues/7).
1128 (let ((revision "0")
1129 (commit "9d767dec77a6d130f6ad83c48a00a5c81b14b9fa"))
1130 (package
1131 (name "ruby-rspec-stubbed-env")
1132 (version (git-version "1.0.0" revision commit))
1133 (source (origin
1134 (method git-fetch)
1135 (uri (git-reference
1136 (url "https://github.com/pboling/rspec-stubbed_env")
1137 (commit commit)))
1138 (file-name (git-file-name name version))
1139 (sha256
1140 (base32
1141 "1dy4m04h613dp0s59rknjd6h4lqs1h17mffc5kd8kh046mk8nr1p"))))
1142 (build-system ruby-build-system)
1143 (arguments
1144 (list #:test-target "spec"
1145 #:phases #~(modify-phases %standard-phases
1146 (add-after 'unpack 'streamline-requirements
1147 (lambda _
1148 ;; Remove extraneous development dependencies.
1149 (substitute* "rspec-stubbed_env.gemspec"
1150 ((".*bundler.*") "")
1151 ((".*rubocop.*") "")))))))
1152 (native-inputs (list ruby-simplecov))
1153 (propagated-inputs (list ruby-rspec))
1154 (synopsis "RSpec plugin to stub environment variables")
1155 (description
1156 "This RSpec plugin can be used to stub environment variables in a scoped
1157context for testing.")
1158 (home-page "https://github.com/pboling/rspec-stubbed_env")
1159 (license license:expat))))
1160
1161(define-public ruby-rspec-wait
1162 (package
1163 (name "ruby-rspec-wait")
1164 (version "0.0.9")
1165 (source
1166 (origin
1167 (method url-fetch)
1168 (uri (rubygems-uri "rspec-wait" version))
1169 (sha256
1170 (base32
1171 "0gvj1bp5ccx001dyvcgk2j49s5sl6vs9fdaqqb08z3bd1554hsww"))))
1172 (build-system ruby-build-system)
1173 (arguments
1174 '(#:phases
1175 (modify-phases %standard-phases
1176 (replace 'check
1177 (lambda _
1178 (invoke "rake" "spec"))))))
1179 (native-inputs
1180 (list bundler))
1181 (propagated-inputs
1182 (list ruby-rspec))
1183 (home-page "https://github.com/laserlemon/rspec-wait")
1184 (synopsis "Wait for conditions in RSpec")
1185 (description
1186 "RSpec::Wait strives to make it easier to test asynchronous or slow
1187interactions.")
1188 (license license:expat)))
1189
1190(define-public ruby-rspec
1191 (package
1192 (name "ruby-rspec")
1193 (version "3.13.0")
1194 (source (origin
1195 (method url-fetch)
1196 (uri (rubygems-uri "rspec" version))
1197 (sha256
1198 (base32
1199 "14xrp8vq6i9zx37vh0yp4h9m0anx9paw200l1r5ad9fmq559346l"))))
1200 (build-system ruby-build-system)
1201 (arguments
1202 '(#:tests? #f)) ; avoid dependency cycles
1203 (propagated-inputs
1204 (list ruby-rspec-core ruby-rspec-expectations ruby-rspec-mocks))
1205 (synopsis "Behavior-driven development framework for Ruby")
1206 (description "RSpec is a behavior-driven development (BDD) framework for
1207Ruby. This meta-package includes the RSpec test runner, along with the
1208expectations and mocks frameworks.")
1209 (home-page "https://rspec.info/")
1210 (license license:expat)))
1211
1212(define-public ruby-rspec-2
1213 (package (inherit ruby-rspec)
1214 (version "2.14.1")
1215 (source (origin
1216 (method url-fetch)
1217 (uri (rubygems-uri "rspec" version))
1218 (sha256
1219 (base32
1220 "134y4wzk1prninb5a0bhxgm30kqfzl8dg06af4js5ylnhv2wd7sg"))))
1221 (propagated-inputs
1222 (list ruby-rspec-core-2 ruby-rspec-mocks-2 ruby-rspec-expectations-2))))
1223
1224(define-public ruby-rspec-debug
1225 (package
1226 (name "ruby-rspec-debug")
1227 (version "0.2.0")
1228 (source (origin
1229 (method git-fetch) ;for tests
1230 (uri (git-reference
1231 (url "https://github.com/ko1/rspec-debug")
1232 (commit (string-append "v" version))))
1233 (file-name (git-file-name name version))
1234 (sha256
1235 (base32
1236 "125p1zxjznkk765nyqvkksw8x1nbm7xk4sjc1wza2fyp5hvyiddn"))))
1237 (build-system ruby-build-system)
1238 (arguments
1239 (list #:test-target "spec"
1240 #:phases #~(modify-phases %standard-phases
1241 (add-after 'extract-gemspec 'relax-dependencies
1242 (lambda _
1243 (substitute* "Gemfile"
1244 (("~>") ">=")))))))
1245 (native-inputs (list ruby-rspec))
1246 (propagated-inputs (list ruby-debug))
1247 (synopsis "Invoke Ruby debugger when spec fails")
1248 (description "This package can be used to have the execution stopped for
1249inspection in the Ruby debugger upon encountering a failure. To use it, set
1250the @env{RSPEC_DEBUG} environment variable to @samp{true} then invoke the
1251@command{rspec} command as usual.")
1252 (home-page "https://github.com/ko1/rspec-debug")
1253 (license license:expat)))
1254
1255(define-public ruby-specinfra
1256 (package
1257 (name "ruby-specinfra")
1258 (version "2.88.1")
1259 (source (origin
1260 (method url-fetch)
1261 (uri (rubygems-uri "specinfra" version))
1262 (sha256
1263 (base32
1264 "07lap3sknncffpq9jw1x1mn9c5xxd058wxs5vnyz1y0lawdjfnsf"))))
1265 (build-system ruby-build-system)
1266 (propagated-inputs (list ruby-net-scp ruby-net-ssh ruby-net-telnet
1267 ruby-sfl))
1268 (arguments
1269 (list
1270 #:test-target "spec"
1271 #:phases
1272 #~(modify-phases %standard-phases
1273 (add-after 'extract-gemspec 'relax-dependencies
1274 (lambda _
1275 (substitute* "specinfra.gemspec"
1276 (("%q<net-telnet>.freeze, \\[.*\\]")
1277 "%q<net-telnet>.freeze, [\">= 0\"]")))))))
1278 (synopsis "Common layer for serverspec and itamae")
1279 (description "This Gem provides a common layer for serverspec and
1280itamae.")
1281 (home-page "https://github.com/mizzy/specinfra")
1282 (license license:expat)))
1283
1284(define-public ruby-serverspec
1285 (package
1286 (name "ruby-serverspec")
1287 (version "2.42.3")
1288 (source (origin
1289 (method url-fetch)
1290 (uri (rubygems-uri "serverspec" version))
1291 (sha256
1292 (base32
1293 "0kfaqrqynly8n3dy5qrbjvx4lx6mk9a5vynwb7xwqj8bixm0mab4"))))
1294 (build-system ruby-build-system)
1295 (propagated-inputs (list ruby-multi-json ruby-rspec ruby-rspec-its
1296 ruby-specinfra))
1297 (arguments
1298 (list #:test-target "spec"))
1299 (synopsis
1300 "RSpec tests for servers configured by Puppet, Chef, Itamae, etc")
1301 (description
1302 "With Serverspec, you can write RSpec tests for checking your servers are
1303configured correctly.
1304
1305Serverspec tests your servers’ actual state by executing command locally, via
1306SSH, via WinRM, via Docker API and so on. So you don’t need to install any
1307agent softwares on your servers and can use any configuration management
1308tools, Puppet, Ansible, CFEngine, Itamae and so on.
1309
1310But the true aim of Serverspec is to help refactoring infrastructure code.")
1311 (home-page "https://serverspec.org/")
1312 (license license:expat)))
1313
1314;; Bundler is yet another source of circular dependencies, so we must disable
1315;; its test suite as well.
1316(define-public bundler
1317 (package
1318 (name "bundler")
1319 (version "2.4.18")
1320 (source (origin
1321 (method url-fetch)
1322 (uri (rubygems-uri "bundler" version))
1323 (sha256
1324 (base32
1325 "03ppd60cbwzlrhsidi7frj826ssmxzwd954ikjk7966l45qx5xxn"))))
1326 (build-system ruby-build-system)
1327 (arguments
1328 '(#:tests? #f)) ; avoid dependency cycles
1329 (synopsis "Ruby gem bundler")
1330 (description "Bundler automatically downloads and installs a list of gems
1331specified in a \"Gemfile\", as well as their dependencies.")
1332 (home-page "https://bundler.io/")
1333 (license license:expat)))
1334
1335(define-public ruby-base64
1336 (package
1337 (name "ruby-base64")
1338 (version "0.2.0")
1339 (source
1340 (origin
1341 (method url-fetch)
1342 (uri (rubygems-uri "base64" version))
1343 (sha256
1344 (base32 "01qml0yilb9basf7is2614skjp8384h2pycfx86cr8023arfj98g"))))
1345 (build-system ruby-build-system)
1346 (arguments '(#:tests? #f)) ; No tests bundled.
1347 (synopsis "Base64 encoding/decoding in Ruby")
1348 (description
1349 "This package provides support for encoding and decoding binary data
1350using a Base64 representation.")
1351 (home-page "https://github.com/ruby/base64")
1352 (license (list license:bsd-2))))
1353
1354(define-public ruby-builder
1355 (package
1356 (name "ruby-builder")
1357 (version "3.2.4")
1358 (source (origin
1359 (method url-fetch)
1360 (uri (rubygems-uri "builder" version))
1361 (sha256
1362 (base32
1363 "045wzckxpwcqzrjr353cxnyaxgf0qg22jh00dcx7z38cys5g1jlr"))))
1364 (build-system ruby-build-system)
1365 (arguments
1366 (list
1367 #:phases
1368 #~(modify-phases %standard-phases
1369 (add-after 'unpack 'patch
1370 (lambda _
1371 (substitute* "rakelib/tags.rake"
1372 (("File\\.exists\\?") "File.exist?"))
1373
1374 ;; TODO This test is broken
1375 ;; https://github.com/tenderlove/builder/issues/13
1376 (substitute* "test/test_blankslate.rb"
1377 (("test_late_included_module_in_kernel_is_ok")
1378 "test_late_included_module_in_kernel_is_ok
1379 skip(\"test expected to fail\")
1380"))
1381 (substitute* "rakelib/tags.rake"
1382 (("RVM_GEMDIR = .*") "RVM_GEMDIR = 'no-rvm-please'\n")))))))
1383 (synopsis "Ruby library to create structured data")
1384 (description "Builder provides a number of builder objects that make it
1385easy to create structured data. Currently the following builder objects are
1386supported: XML Markup and XML Events.")
1387 (home-page "https://github.com/tenderlove/builder")
1388 (license license:expat)))
1389
1390(define-public ruby-bump
1391 (package
1392 (name "ruby-bump")
1393 (version "0.7.0")
1394 (source
1395 (origin
1396 (method url-fetch)
1397 (uri (rubygems-uri "bump" version))
1398 (sha256
1399 (base32
1400 "1xinbr9rzh6cj75x24niwgqcnbhdxc68a8bc41lk8xv6fd906fym"))))
1401 (build-system ruby-build-system)
1402 (arguments
1403 '(;; No included tests
1404 #:tests? #f))
1405 (synopsis "Tool for working with Rubygems")
1406 (description
1407 "Bump provides commands to manage Rubygem versioning, updating to the
1408next patch version for example.")
1409 (home-page "https://github.com/gregorym/bump")
1410 (license license:expat)))
1411
1412(define-public ruby-rjb
1413 (package
1414 (name "ruby-rjb")
1415 (version "1.6.7")
1416 (source (origin
1417 (method url-fetch)
1418 (uri (rubygems-uri "rjb" version))
1419 (sha256
1420 (base32
1421 "0ck802bm8cklhmqsgzhsa0y8lg80qy52dp3m8rlld3zc5gv1rsb9"))))
1422 (build-system ruby-build-system)
1423 (arguments
1424 (list
1425 #:tests? #f ; no rakefile
1426 #:phases
1427 #~(modify-phases %standard-phases
1428 (add-before 'build 'set-java-home
1429 (lambda* (#:key inputs #:allow-other-keys)
1430 (setenv "JAVA_HOME" (assoc-ref inputs "jdk")))))))
1431 (native-inputs
1432 `(("jdk" ,icedtea "jdk")))
1433 (synopsis "Ruby-to-Java bridge using the Java Native Interface")
1434 (description "RJB is a bridge program that connects Ruby and Java via the
1435Java Native Interface.")
1436 (home-page "https://www.artonx.org/collabo/backyard/?RubyJavaBridge")
1437 (license license:lgpl2.1+)))
1438
1439(define-public ruby-log4r
1440 (package
1441 (name "ruby-log4r")
1442 (version "1.1.10")
1443 (source
1444 (origin
1445 (method url-fetch)
1446 (uri (rubygems-uri "log4r" version))
1447 (sha256
1448 (base32
1449 "0ri90q0frfmigkirqv5ihyrj59xm8pq5zcmf156cbdv4r4l2jicv"))))
1450 (build-system ruby-build-system)
1451 (arguments
1452 '(#:tests? #f)) ; no Rakefile in gem
1453 (synopsis "Flexible logging library for Ruby")
1454 (description "Comprehensive and flexible logging library written
1455in Ruby for use in Ruby programs. It features a hierarchical logging
1456system of any number of levels, custom level names, logger
1457inheritance, multiple output destinations per log event, execution
1458tracing, custom formatting, thread safteyness, XML and YAML
1459configuration, and more.")
1460 (home-page "http://log4r.rubyforge.org/")
1461 (license license:bsd-3)))
1462
1463(define-public ruby-atoulme-antwrap
1464 (package
1465 (name "ruby-atoulme-antwrap")
1466 (version "0.7.5")
1467 (source (origin
1468 (method url-fetch)
1469 (uri (rubygems-uri "atoulme-Antwrap" version))
1470 (sha256
1471 (base32
1472 "05s3iw44lqa81f8nfy5f0xjj808600h82zb9bsh46b9kcq2w2kmz"))))
1473 (build-system ruby-build-system)
1474 ;; Test data required for most of the tests are not included.
1475 (arguments `(#:tests? #f))
1476 (native-inputs
1477 (list ruby-hoe))
1478 (inputs
1479 (list ruby-rjb))
1480 (synopsis "Ruby wrapper for the Ant build tool")
1481 (description "Antwrap is a Ruby module that wraps the Apache Ant build
1482tool. Antwrap can be used to invoke Ant tasks from a Ruby or a JRuby
1483script.")
1484 (home-page "http://rubyforge.org/projects/antwrap/")
1485 (license license:expat)))
1486
1487(define-public ruby-atoulme-saikuro
1488 (package
1489 (name "ruby-atoulme-saikuro")
1490 (version "1.2.1")
1491 (source (origin
1492 (method url-fetch)
1493 (uri (rubygems-uri "atoulme-Saikuro" version))
1494 (sha256
1495 (base32
1496 "0kvd2nsxffbza61d3q4j94wrbnbv50r1zy3a7q26f6k706fw1f19"))))
1497 (build-system ruby-build-system)
1498 (arguments
1499 (list
1500 #:phases
1501 #~(modify-phases %standard-phases
1502 (add-after 'unpack 'fix-module-resolution
1503 (lambda _
1504 (substitute* "lib/saikuro.rb"
1505 ;; irb 1.2.0 or later doesn't have RubyToken
1506 (("require 'irb/ruby-lex'")
1507 "require 'rubygems'\ngem 'irb', '=1.1.1'\nrequire 'irb/ruby-lex'"))))
1508 (delete 'check)
1509 (add-after 'install 'check
1510 (lambda* (#:key outputs #:allow-other-keys)
1511 (let* ((out (assoc-ref outputs "out"))
1512 (saikuro (string-append out "/bin/saikuro")))
1513 (setenv "GEM_PATH" (string-append
1514 (getenv "GEM_PATH") ":"
1515 #$output "/lib/ruby/vendor_ruby"))
1516 (invoke saikuro "--cyclo" "--token" "--input_directory" "tests")))))))
1517 (propagated-inputs (list ruby-irb-1.1.1
1518 ruby-e2mmap)) ;required by rubygems
1519 (synopsis "Cyclomatic complexity analyzer")
1520 (description "Saikuro is a Ruby cyclomatic complexity analyzer. When
1521given Ruby source code Saikuro will generate a report listing the cyclomatic
1522complexity of each method found. In addition, Saikuro counts the number of
1523lines per method and can generate a listing of the number of tokens on each
1524line of code.")
1525 (home-page "http://www.github.com/atoulme/Saikuro")
1526 ;; File headers contain the BSD-3 license and the README.rdoc says that
1527 ;; "Saikuro uses the BSD license", but the LICENSE file contains the text
1528 ;; of the Expat license.
1529 (license license:bsd-3)))
1530
1531(define-public ruby-awesome-print
1532 (package
1533 (name "ruby-awesome-print")
1534 (version "1.9.2")
1535 (source
1536 (origin
1537 (method url-fetch)
1538 (uri (rubygems-uri "awesome_print" version))
1539 (sha256
1540 (base32
1541 "0vkq6c8y2jvaw03ynds5vjzl1v9wg608cimkd3bidzxc0jvk56z9"))))
1542 (build-system ruby-build-system)
1543 (arguments
1544 (list
1545 #:phases
1546 #~(modify-phases %standard-phases
1547 (replace 'check
1548 (lambda _
1549 ;; Remove failing test.
1550 (for-each delete-file
1551 '("spec/ext/nokogiri_spec.rb"
1552 "spec/colors_spec.rb"
1553 "spec/formats_spec.rb"
1554 "spec/methods_spec.rb"
1555 "spec/misc_spec.rb"
1556 "spec/objects_spec.rb"))
1557 (invoke "rspec" "-c" "spec"))))))
1558 (native-inputs
1559 (list ruby-nokogiri ruby-rspec ruby-simplecov))
1560 (synopsis "Pretty print Ruby objects to visualize their structure")
1561 (description
1562 "Ruby dubugging companion: pretty print Ruby objects to visualize their
1563structure. Supports custom object formatting via plugins.")
1564 (home-page "https://github.com/awesome-print/awesome_print")
1565 (license license:expat)))
1566
1567(define-public ruby-pandoc-ruby
1568 (package
1569 (name "ruby-pandoc-ruby")
1570 (version "2.1.4")
1571 (source
1572 (origin
1573 (method git-fetch) ;the gem lacks many test files
1574 (uri (git-reference
1575 (url "https://github.com/xwmx/pandoc-ruby")
1576 (commit version)))
1577 (file-name (git-file-name name version))
1578 (sha256
1579 (base32
1580 "03a11clhycyn0jhc7g9davpqd83sn60jqwjy1y145ag9sq6sp935"))))
1581 (build-system ruby-build-system)
1582 (arguments
1583 `(#:tests? #f ; Disable tests since they depend on pandoc behavior
1584 ; and there are no upstream releases.
1585 #:phases
1586 (modify-phases %standard-phases
1587 (add-after 'unpack 'patch-pandoc-path
1588 (lambda* (#:key inputs #:allow-other-keys)
1589 (let ((pandoc (search-input-file inputs "/bin/pandoc")))
1590 (substitute* "lib/pandoc-ruby.rb"
1591 (("@@pandoc_path = 'pandoc'")
1592 (format #f "@@pandoc_path = '~a'" pandoc)))
1593 (substitute* "test/test_pandoc_ruby.rb"
1594 (("('|\")pandoc" _ quote)
1595 (string-append quote pandoc))
1596 (("\\^pandoc")
1597 ".*pandoc")))))
1598 (add-after 'unpack 'adjust-tests
1599 ;; The tests expect filenames with spaces. Because they don't have
1600 ;; spaces the quotes around the output are dropped automatically.
1601 (lambda _
1602 (substitute* "test/test_pandoc_ruby.rb"
1603 (("\\\\\"#\\{file\\.path\\}\\\\\"") "#{file.path}"))))
1604 (add-after 'extract-gemspec 'remove-Gemfile.lock
1605 (lambda _
1606 (delete-file "Gemfile.lock")
1607 (substitute* "pandoc-ruby.gemspec"
1608 (("Gemfile\\.lock") "")))))))
1609 (native-inputs
1610 (list ruby-mocha))
1611 (inputs
1612 (list pandoc))
1613 (synopsis "Ruby wrapper for Pandoc")
1614 (description "PandocRuby is a wrapper for Pandoc, a Haskell library with
1615command line tools for converting one markup format to another. Pandoc can
1616convert documents from a variety of formats including markdown,
1617reStructuredText, textile, HTML, DocBook, LaTeX, and MediaWiki markup to a
1618variety of other formats, including markdown, reStructuredText, HTML, LaTeX,
1619ConTeXt, PDF, RTF, DocBook XML, OpenDocument XML, ODT, GNU Texinfo, MediaWiki
1620markup, groff man pages, HTML slide shows, EPUB, Microsoft Word docx, and
1621more.")
1622 (home-page "https://github.com/xwmx/pandoc-ruby")
1623 (license license:expat)))
1624
1625(define-public ruby-patron
1626 (package
1627 (name "ruby-patron")
1628 (version "0.13.3")
1629 (source
1630 (origin
1631 (method url-fetch)
1632 (uri (rubygems-uri "patron" version))
1633 (sha256
1634 (base32
1635 "0523gddx88zql2mq6655k60gy2ac8vybpzkcf90lmd9nx7wl3fi9"))))
1636 (build-system ruby-build-system)
1637 (inputs
1638 (list curl))
1639 (arguments
1640 `(#:tests? #f)) ; no included tests
1641 (synopsis "Ruby HTTP client library based on @code{libcurl}")
1642 (description
1643 "Patron is a Ruby HTTP client library based on @code{libcurl}. It does
1644not try to expose the full power (read complexity) of @code{libcurl} but
1645instead tries to provide a sane API while taking advantage of @code{libcurl}
1646under the hood.")
1647 (home-page "https://github.com/toland/patron")
1648 (license license:expat)))
1649
1650(define-public ruby-slim
1651 (package
1652 (name "ruby-slim")
1653 (version "5.2.1")
1654 (source
1655 (origin
1656 (method url-fetch)
1657 (uri (rubygems-uri "slim" version))
1658 (sha256
1659 (base32
1660 "1rqk7jn66wgx50b18ndhbppjq55rbcwgqg1rbhnhxwiggvzisdbj"))))
1661 (build-system ruby-build-system)
1662 (arguments
1663 `(#:phases
1664 (modify-phases %standard-phases
1665 ;; See: https://github.com/slim-template/slim/issues/857 and
1666 ;; https://github.com/slim-template/slim/issues/858.
1667 (add-after 'unpack 'skip-broken-tests
1668 (lambda _
1669 (substitute* "test/core/test_embedded_engines.rb"
1670 (("def test_render_with_markdown")
1671 "def skipped_test_render_with_markdown"))
1672 (substitute* "test/translator/test_translator.rb"
1673 (("raise (\"Missing test for.*)" _ tail)
1674 (string-append "print " tail)))))
1675 ;; See: https://salsa.debian.org/ruby-team/ruby-slim/-/commit/
1676 ;; 824862bd99d1675bc699d8fc71ba965a785c1f44.
1677 (add-after 'unpack 'prevent-bundler-interference
1678 (lambda _
1679 (substitute* "Rakefile"
1680 (("require 'bundler/setup'") "nil")
1681 (("Bundler::GemHelper\\.install_tasks") "nil")))))))
1682 (native-inputs
1683 (list ruby-rack-test ruby-rspec-core ruby-sinatra))
1684 (propagated-inputs
1685 (list ruby-temple ruby-tilt))
1686 (synopsis "Minimalist template language for Ruby")
1687 (description "Slim is a template language for Ruby that aims to reduce the
1688syntax to the minimum while remaining clear.")
1689 (home-page "http://slim-lang.com/")
1690 (license license:expat)))
1691
1692(define-public ruby-asciidoctor
1693 (package
1694 (name "ruby-asciidoctor")
1695 (version "2.0.20")
1696 (source
1697 (origin
1698 (method git-fetch) ;the gem release lacks a Rakefile
1699 (uri (git-reference
1700 (url "https://github.com/asciidoctor/asciidoctor")
1701 (commit (string-append "v" version))))
1702 (file-name (git-file-name name version))
1703 (sha256
1704 (base32
1705 "19qvilhwa9plg80ppspn5ys0ybl8qfyaicqbl9w316hk5ldwi1jq"))))
1706 (build-system ruby-build-system)
1707 (arguments
1708 (list
1709 #:test-target "test:all"
1710 #:phases
1711 #~(modify-phases %standard-phases
1712 (add-after 'extract-gemspec 'strip-version-requirements
1713 (lambda _
1714 (delete-file "Gemfile")
1715 (substitute* "asciidoctor.gemspec"
1716 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
1717 (string-append stripped "\n")))))
1718 (add-after 'install 'install-man-page
1719 (lambda* (#:key outputs #:allow-other-keys)
1720 (install-file (search-input-file
1721 outputs (string-append "lib/ruby/vendor_ruby/"
1722 "gems/asciidoctor-"
1723 #$version
1724 "/man/asciidoctor.1"))
1725 (string-append #$output "/share/man/man1")))))))
1726 (native-inputs
1727 (list ruby-asciimath
1728 ruby-coderay
1729 ruby-cucumber
1730 ruby-erubis
1731 ruby-haml
1732 ruby-minitest
1733 ruby-nokogiri
1734 ruby-open-uri-cached
1735 ruby-rouge
1736 ruby-rspec-expectations
1737 ruby-simplecov
1738 ruby-slim
1739 ruby-tilt
1740 ruby-erubi))
1741 (synopsis "Converter from AsciiDoc content to other formats")
1742 (description "Asciidoctor is a text processor and publishing toolchain for
1743converting AsciiDoc content to HTML5, DocBook 5, PDF, and other formats.")
1744 (home-page "https://asciidoctor.org")
1745 (license license:expat)))
1746
1747(define-public ruby-asciidoctor/minimal
1748 (hidden-package
1749 (package
1750 (inherit ruby-asciidoctor)
1751 (arguments
1752 (ensure-keyword-arguments
1753 (package-arguments ruby-asciidoctor)
1754 (list #:tests? #f)))
1755 (native-inputs '()))))
1756
1757(define-public ruby-asciidoctor-multipage
1758 (package
1759 (name "ruby-asciidoctor-multipage")
1760 (version "0.0.16")
1761 (source (origin
1762 (method git-fetch)
1763 (uri (git-reference
1764 (url "https://github.com/owenh000/asciidoctor-multipage")
1765 (commit (string-append "v" version))))
1766 (file-name (git-file-name name version))
1767 (sha256
1768 (base32
1769 "0rnz7qxdw5qbi3qjplihhk468kv690njdi06yllgylc75k62ar1p"))))
1770 (propagated-inputs (list ruby-asciidoctor ruby-slim))
1771 (build-system ruby-build-system)
1772 (arguments
1773 `(#:phases (modify-phases %standard-phases
1774 (add-after 'extract-gemspec 'strip-version-requirements
1775 (lambda _
1776 (delete-file "Gemfile")
1777 (substitute* "asciidoctor-multipage.gemspec"
1778 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
1779 (string-append stripped "\n"))))))))
1780 (synopsis
1781 "Asciidoctor extension for generating HTML output using multiple pages")
1782 (description
1783 "Asciidoctor generates single-page documents. This extension
1784splits documents up into multiple HTML pages according to their headings, with
1785configurable levels.")
1786 (license license:expat)
1787 (home-page "https://github.com/owenh000/asciidoctor-multipage")))
1788
1789(define-public ruby-prawn-icon
1790 (package
1791 (name "ruby-prawn-icon")
1792 (version "3.1.0")
1793 (source
1794 (origin
1795 (method url-fetch)
1796 (uri (rubygems-uri "prawn-icon" version))
1797 (sha256
1798 (base32
1799 "049k42bqy4iq9hddf7jah83b6qr8ka63w1d63illh1mf4f4dihdk"))))
1800 (build-system ruby-build-system)
1801 (arguments
1802 `(#:test-target "spec"
1803 #:phases (modify-phases %standard-phases
1804 (add-after 'unpack 'remove-unnecessary-dependencies
1805 (lambda _
1806 (substitute* '("Rakefile" "spec/spec_helper.rb")
1807 ((".*[Bb]undler.*") "")
1808 (("^require 'rubocop.*") "")
1809 (("^RuboCop.*") "")))))))
1810 (native-inputs
1811 (list ruby-pdf-inspector ruby-pdf-reader ruby-rspec ruby-simplecov))
1812 (propagated-inputs
1813 (list ruby-prawn))
1814 (synopsis "Icon fonts for use with the Prawn PDF toolkit")
1815 (description "@code{Prawn::Icon} provides various icon fonts including
1816FontAwesome, PaymentFont and Foundation Icons for use with the Prawn PDF
1817toolkit.")
1818 (home-page "https://github.com/jessedoyle/prawn-icon/")
1819 (license %prawn-project-licenses)))
1820
1821(define-public ruby-css-parser
1822 (package
1823 (name "ruby-css-parser")
1824 (version "1.7.1")
1825 (source
1826 (origin
1827 (method url-fetch)
1828 (uri (rubygems-uri "css_parser" version))
1829 (sha256
1830 (base32
1831 "04c4dl8cm5rjr50k9qa6yl9r05fk9zcb1zxh0y0cdahxlsgcydfw"))))
1832 (build-system ruby-build-system)
1833 (arguments `(#:tests? #f)) ;gem doesn't ship with test suite
1834 (propagated-inputs
1835 (list ruby-addressable))
1836 (synopsis "Ruby Cascading Style Sheets (CSS) parser")
1837 (description "This package allows loading, parsing and cascading Cascading
1838Style Sheets (CSS) rule sets in Ruby.")
1839 (home-page "https://github.com/premailer/css_parser")
1840 (license license:expat)))
1841
1842(define-public ruby-prism
1843 (package
1844 (name "ruby-prism")
1845 (version "1.3.0")
1846 (source (origin
1847 (method git-fetch)
1848 (uri (git-reference
1849 (url "https://github.com/ruby/prism.git")
1850 (commit (string-append "v" version))))
1851 (file-name (git-file-name name version))
1852 (sha256
1853 (base32
1854 "03bs2gbackc3c3k4p979l2p9v215jb1m5h7b44n6yzh18kaimc85"))))
1855 (build-system ruby-build-system)
1856 (arguments
1857 `(#:phases
1858 (modify-phases %standard-phases
1859 (replace 'build
1860 (lambda _
1861 (setenv "CC" ,(cc-for-target))
1862 (invoke "rake" "compile")))
1863 (replace 'install
1864 (lambda* (#:key outputs #:allow-other-keys)
1865 (setenv "GEM_HOME" (string-append (assoc-ref outputs "out")
1866 "/lib/ruby/vendor_ruby"))
1867 (invoke "rake" "install")
1868 ;; Make build reproducible.
1869 (for-each delete-file
1870 (find-files (string-append (assoc-ref outputs "out")
1871 "/lib/ruby/vendor_ruby")
1872 "gem_make.out$")))))))
1873 (native-inputs
1874 (list ruby-rake ruby-rake-compiler))
1875 (synopsis "Parser for Ruby source code")
1876 (description "This package provides a parser for Ruby source code,
1877written in C.")
1878 (home-page "https://ruby.github.io/prism/")
1879 (license license:expat)))
1880
1881(define-public ruby-prawn-svg
1882 (package
1883 (name "ruby-prawn-svg")
1884 (version "0.36.0")
1885 (source
1886 (origin
1887 (method url-fetch)
1888 (uri (rubygems-uri "prawn-svg" version))
1889 (sha256
1890 (base32 "008p1p334h3019x5w5bqvwgmly3g5n08s63va1261nwyvfb955jv"))))
1891 (build-system ruby-build-system)
1892 (arguments
1893 (list #:test-target "spec"
1894 #:phases
1895 #~(modify-phases %standard-phases
1896 (add-after 'unpack 'do-not-use-bundler
1897 (lambda _
1898 (substitute* "spec/spec_helper.rb"
1899 ((".*[Bb]undler.*") ""))))
1900 (replace 'check
1901 (lambda* (#:key tests? #:allow-other-keys)
1902 (when tests?
1903 ;; This test fails due to the recent rspec 3.12 used
1904 ;; (see: https://github.com/mogest/prawn-svg/issues/151).
1905 (delete-file "spec/prawn/svg/interface_spec.rb")
1906 (invoke "rspec" "-Ilib" "-rprawn-svg")))))))
1907 (native-inputs (list ruby-rspec))
1908 (propagated-inputs (list ruby-css-parser ruby-matrix ruby-prawn ruby-rexml))
1909 (synopsis "SVG renderer for the Prawn PDF library")
1910 (description "This library allows rendering Scalable Vector Graphics (SVG)
1911graphics directly into a Portable Document Format (PDF) document using the
1912Prawn module.")
1913 (home-page "https://github.com/mogest/prawn-svg")
1914 (license license:expat)))
1915
1916(define-public ruby-prawn-templates
1917 (package
1918 (name "ruby-prawn-templates")
1919 (version "0.1.2")
1920 (source
1921 (origin
1922 (method git-fetch)
1923 (uri (git-reference
1924 (url "https://github.com/prawnpdf/prawn-templates")
1925 (commit version)))
1926 (file-name (git-file-name name version))
1927 (sha256
1928 (base32
1929 "0wll54wxxwixpwazfn4ffbqvqbfrl01cfsv8y11vnlzy7isx5xvl"))))
1930 (build-system ruby-build-system)
1931 (arguments
1932 `(#:phases (modify-phases %standard-phases
1933 (add-after 'unpack 'do-not-use-bundler
1934 (lambda _
1935 (substitute* "spec/spec_helper.rb"
1936 ((".*[Bb]undler.*") ""))))
1937 (replace 'check
1938 (lambda* (#:key tests? #:allow-other-keys)
1939 (when tests?
1940 (invoke "rspec")))))))
1941 (native-inputs
1942 (list ruby-pdf-inspector ruby-rspec))
1943 (propagated-inputs
1944 (list ruby-pdf-reader ruby-prawn))
1945 (synopsis "Prawn extension to include or combine PDF documents")
1946 (description "This @strong{unmaintained} package provides a Prawn
1947extension that allows including other Portable Document Format (PDF) documents
1948as background or combining several PDF documents into one. This functionality
1949used to be part of Prawn itself, but was extracted from Prawn 0.15.0 because
1950of its many longstanding issues.")
1951 (home-page "https://github.com/prawnpdf/prawn-templates")
1952 (license %prawn-project-licenses)))
1953
1954(define-public ruby-polyglot
1955 (package
1956 (name "ruby-polyglot")
1957 (version "0.3.5")
1958 (source
1959 (origin
1960 (method url-fetch)
1961 (uri (rubygems-uri "polyglot" version))
1962 (sha256
1963 (base32
1964 "1bqnxwyip623d8pr29rg6m8r0hdg08fpr2yb74f46rn1wgsnxmjr"))))
1965 (build-system ruby-build-system)
1966 (arguments `(#:tests? #f)) ;no test suite
1967 (synopsis "Augment @code{require} to load non-Ruby file types")
1968 (description "The Polyglot library allows a Ruby module to register a
1969loader for the file type associated with a filename extension, and it augments
1970@code{require} to find and load matching files.")
1971 (home-page "https://github.com/cjheath/polyglot")
1972 (license license:expat)))
1973
1974(define-public ruby-treetop
1975 (package
1976 (name "ruby-treetop")
1977 (version "1.6.12")
1978 (source
1979 (origin
1980 (method git-fetch) ;no test suite in distributed gem
1981 (uri (git-reference
1982 (url "https://github.com/cjheath/treetop")
1983 (commit (string-append "v" version))))
1984 (file-name (git-file-name name version))
1985 (sha256
1986 (base32
1987 "0cgs6f9z0a9dq5fc03710zsch4gmh1771wq36mq81qsql4x9vksf"))))
1988 (build-system ruby-build-system)
1989 (arguments
1990 `(#:test-target "spec"))
1991 (native-inputs
1992 (list ruby-activesupport ruby-rr ruby-rspec))
1993 (propagated-inputs
1994 (list ruby-polyglot))
1995 (synopsis "Ruby-based parsing DSL based on parsing expression grammars")
1996 (description "This package provides a Ruby-based Parsing Expression
1997Grammar (PEG) parser generator Domain Specific Language (DSL).")
1998 (home-page "https://github.com/cjheath/treetop")
1999 (license license:expat)))
2000
2001(define-public ruby-typhoeus
2002 (package
2003 (name "ruby-typhoeus")
2004 (version "1.4.0")
2005 (source
2006 (origin
2007 (method url-fetch)
2008 (uri (rubygems-uri "typhoeus" version))
2009 (sha256
2010 (base32
2011 "1m22yrkmbj81rzhlny81j427qdvz57yk5wbcf3km0nf3bl6qiygz"))))
2012 (build-system ruby-build-system)
2013 (arguments
2014 `(#:tests? #f)) ; no included tests
2015 (propagated-inputs
2016 (list ruby-ethon))
2017 (synopsis "@code{libcurl} wrapper in Ruby")
2018 (description
2019 "Like a modern code version of the mythical beast with 100 serpent heads,
2020Typhoeus runs HTTP requests in parallel while cleanly encapsulating handling
2021logic.")
2022 (home-page "https://github.com/typhoeus/typhoeus")
2023 (license license:expat)))
2024
2025;;; A minimal variant used to build ruby-rubocop itself.
2026(define ruby-rubocop-capybara-minimal
2027 (package
2028 (name "ruby-rubocop-capybara")
2029 (version "2.21.0")
2030 (source (origin
2031 (method git-fetch) ;for tests
2032 (uri (git-reference
2033 (url "https://github.com/rubocop/rubocop-capybara")
2034 (commit (string-append "v" version))))
2035 (file-name (git-file-name name version))
2036 (sha256
2037 (base32
2038 "19r2s782r9ch2g1lxgrvk22d9qqkxi69brza16bfwp2rl2064qnc"))))
2039 (build-system ruby-build-system)
2040 (arguments (list #:tests? #f))
2041 (synopsis "Capybara plugin for RuboCop")
2042 (description "This package provides a RuboCop plugin that can be used for
2043code style checking of Capybara test files (RSpec, Cucumber, Minitest).")
2044 (home-page "https://github.com/rubocop/rubocop-capybara")
2045 (license license:expat)))
2046
2047(define-public ruby-rubocop-capybara
2048 (package
2049 (inherit ruby-rubocop-capybara-minimal)
2050 (arguments
2051 (list #:test-target "spec"
2052 #:phases #~(modify-phases %standard-phases
2053 (add-after 'unpack 'relax-requirements
2054 (lambda _
2055 (substitute* "Gemfile"
2056 (("gem 'rubocop-rspec', '~> 2.16.0'")
2057 "gem 'rubocop-rspec', '>= 2.16.0'")
2058 (("gem 'danger'.*") "")))))))
2059 (native-inputs
2060 (list ruby-bump
2061 ruby-rack
2062 ruby-rake
2063 ruby-rspec
2064 ruby-rubocop
2065 ruby-rubocop-performance-minimal
2066 ruby-rubocop-rake-minimal
2067 ruby-rubocop-rspec-minimal
2068 ruby-simplecov
2069 ruby-yard))))
2070
2071(define-public ruby-rubocop-factory-bot
2072 (package
2073 (name "ruby-rubocop-factory-bot")
2074 (version "2.26.1")
2075 (source
2076 (origin
2077 (method url-fetch)
2078 (uri (rubygems-uri "rubocop-factory_bot" version))
2079 (sha256
2080 (base32 "1aljadsjx7affcarzbhz7pydpy6fgqb8hl951y0cmrffxpa3rqcd"))))
2081 (build-system ruby-build-system)
2082 (arguments '(#:tests? #f)) ; No tests bundled.
2083 (synopsis "Code style checking for factory_bot files")
2084 (description
2085 "This package provides a plugin for the @code{RuboCop} code style
2086enforcing & linting tool for @code{factory_bot} files.")
2087 (home-page "https://github.com/rubocop/rubocop-factory_bot")
2088 (license license:expat)))
2089
2090;;; A minimal variant used to build ruby-rubocop itself.
2091(define ruby-rubocop-rake-minimal
2092 (package
2093 (name "ruby-rubocop-rake")
2094 (version "0.6.0")
2095 (source (origin
2096 (method git-fetch) ;for tests
2097 (uri (git-reference
2098 (url "https://github.com/rubocop/rubocop-rake")
2099 (commit (string-append "v" version))))
2100 (file-name (git-file-name name version))
2101 (sha256
2102 (base32
2103 "1r53szwglikbir1fvpz4i51p915khrrkl6rp61zcx3dcrclkr3ld"))))
2104 (build-system ruby-build-system)
2105 (arguments (list #:tests? #f)) ;avoid extra dependencies
2106 (synopsis "RuboCop plugin for Rake")
2107 (description "This package provides a RuboCop plugin for Rake.")
2108 (home-page "https://github.com/rubocop/rubocop-rake")
2109 (license license:expat)))
2110
2111(define-public ruby-rubocop-rake
2112 (package
2113 (inherit ruby-rubocop-rake-minimal)
2114 (arguments
2115 (list #:test-target "spec"))
2116 (native-inputs
2117 (list ruby-rake
2118 ruby-rspec
2119 ruby-rubocop
2120 ruby-rubocop-rspec))
2121 (propagated-inputs
2122 (list ruby-rubocop))))
2123
2124;;; A minimal variant used to build ruby-rubocop itself.
2125(define ruby-rubocop-rspec-minimal
2126 (package
2127 (name "ruby-rubocop-rspec")
2128 (version "2.26.0")
2129 (source
2130 (origin
2131 (method git-fetch)
2132 (uri (git-reference
2133 (url "https://github.com/rubocop/rubocop-rspec")
2134 (commit (string-append "v" version))))
2135 (file-name (git-file-name name version))
2136 (sha256
2137 (base32
2138 "1w9whadx60kv4vlbnk77b5yyhhfcg717r9cr334zqznqr1bqr8mh"))))
2139 (build-system ruby-build-system)
2140 (arguments
2141 (list #:tests? #f ;avoid extra dependencies
2142 #:phases
2143 #~(modify-phases %standard-phases
2144 (add-after 'unpack 'relax-requirements
2145 (lambda _
2146 (substitute* "Gemfile"
2147 (("gem 'danger'.*") "")))))))
2148 (propagated-inputs (list ruby-rubocop-factory-bot))
2149 (synopsis "Code style checking for RSpec files")
2150 (description "This package provides a plugin for the RuboCop code style
2151enforcing & linting tool.")
2152 (home-page "https://github.com/rubocop/rubocop-rspec")
2153 (license license:expat)))
2154
2155(define-public ruby-rubocop-rspec
2156 (package
2157 (inherit ruby-rubocop-rspec-minimal)
2158 (arguments
2159 (substitute-keyword-arguments
2160 (package-arguments ruby-rubocop-rspec-minimal)
2161 ((#:tests? _ #f) #t)
2162 ((#:test-target _ "test") "spec")))
2163 (native-inputs
2164 (list ruby-bump
2165 ruby-rack
2166 ruby-rspec
2167 ruby-rubocop-performance-minimal
2168 ruby-rubocop-rake-minimal
2169 ruby-simplecov
2170 ruby-yard))
2171 (propagated-inputs
2172 (list ruby-rubocop
2173 ruby-rubocop-ast
2174 ruby-rubocop-capybara
2175 ruby-rubocop-factory-bot))))
2176
2177(define-public ruby-rubocop-packaging
2178 (package
2179 (name "ruby-rubocop-packaging")
2180 (version "0.5.2")
2181 (source
2182 (origin
2183 (method git-fetch)
2184 (uri (git-reference
2185 (url "https://github.com/utkarsh2102/rubocop-packaging")
2186 (commit (string-append "v" version))))
2187 (file-name (git-file-name name version))
2188 (sha256
2189 (base32
2190 "08jsfp42z0aj32002z2hz8vkmza0jvnrqk9rk2v0xb8qdxkgbx3l"))))
2191 (build-system ruby-build-system)
2192 (arguments
2193 (list #:test-target "spec"
2194 #:phases
2195 #~(modify-phases %standard-phases
2196 (add-after 'unpack 'skip-problematic-tests
2197 (lambda _
2198 ;; Tests are actually running fine, except for a prefix.
2199 ;; This doesn't impair functionality, ignored for now.
2200 (delete-file
2201 "spec/rubocop/cop/packaging/gemspec_git_spec.rb"))))))
2202 (propagated-inputs
2203 (list ruby-rubocop))
2204 (native-inputs
2205 (list ruby-rspec
2206 ruby-yard
2207 ruby-bump))
2208 (synopsis
2209 "Collection of RuboCop checks for downstream compatibility issues")
2210 (description
2211 "This package provides a collection of RuboCop cops to check for
2212downstream compatibility issues in the Ruby code.")
2213 (home-page "https://github.com/utkarsh2102/rubocop-packaging")
2214 (license license:expat)))
2215
2216(define-public ruby-rubocop-performance
2217 (package
2218 (name "ruby-rubocop-performance")
2219 (version "1.23.1")
2220 (source
2221 (origin
2222 (method git-fetch)
2223 (uri (git-reference
2224 (url "https://github.com/rubocop/rubocop-performance")
2225 (commit (string-append "v" version))))
2226 (file-name (git-file-name name version))
2227 (sha256
2228 (base32
2229 "0d1p6pgrcnj58q1g0np5j4vbk7wavj31b4bapi5p4gckqlnc7xjd"))))
2230 (build-system ruby-build-system)
2231 (arguments
2232 `(#:tests? #f ; tests require a git checkout of rubocop's source code.
2233 #:phases
2234 (modify-phases %standard-phases
2235 (replace 'replace-git-ls-files
2236 (lambda _
2237 (substitute* "rubocop-performance.gemspec"
2238 (("`git ls-files -z config lib LICENSE.txt README.md`")
2239 "`find config lib LICENSE.txt README.md \
2240-type f -print0 |sort -z`"))))
2241 (add-before 'check 'set-HOME
2242 (lambda _
2243 (setenv "HOME" "/tmp"))))))
2244 (propagated-inputs
2245 (list ruby-rubocop ruby-rubocop-ast))
2246 (native-inputs
2247 (list ruby-bump ruby-yard))
2248 (synopsis "Performance optimizations checkers for Ruby code")
2249 (description "This package provides a collection of RuboCop cops to check
2250for performance optimizations in Ruby code.")
2251 (home-page "https://docs.rubocop.org/rubocop-performance/")
2252 (license license:expat)))
2253
2254(define-public ruby-rubocop-performance-minimal
2255 (hidden-package
2256 (package
2257 (inherit ruby-rubocop-performance)
2258 (arguments
2259 (substitute-keyword-arguments (package-arguments ruby-rubocop-performance)
2260 ((#:tests? _ #f) #f)))
2261 (propagated-inputs '())
2262 (native-inputs '()))))
2263
2264(define-public ruby-stud
2265 (package
2266 (name "ruby-stud")
2267 (version "0.0.23")
2268 (source (origin
2269 (method url-fetch)
2270 (uri (rubygems-uri "stud" version))
2271 (sha256
2272 (base32
2273 "0qpb57cbpm9rwgsygqxifca0zma87drnlacv49cqs2n5iyi6z8kb"))))
2274 (build-system ruby-build-system)
2275 (native-inputs (list ruby-rspec))
2276 (arguments
2277 (list #:phases #~(modify-phases %standard-phases
2278 ;; No Rakefile is included, so run rspec directly.
2279 (replace 'check
2280 (lambda* (#:key tests? #:allow-other-keys)
2281 (when tests?
2282 (invoke "rspec")))))))
2283 (synopsis "Retries, worker supervision, resource pools and more for Ruby")
2284 (description "The Stud Ruby library adds a few things missing from the
2285standard Ruby library such as:
2286@table @code
2287@item {Stud::Try}
2288Retry on failure, with back-off, where failure is any exception.
2289@item {Stud::Pool}
2290Generic resource pools.
2291@item {Stud::Task}
2292Tasks (threads that can return values, exceptions, etc.)
2293@item {Stud.interval}
2294Interval execution (do X every N seconds).
2295@item {Stud::Buffer}
2296Batch and flush behavior.
2297@end itemize")
2298 (home-page "https://github.com/jordansissel/ruby-stud")
2299 (license license:asl2.0)))
2300
2301(define-public ruby-standard-custom
2302 (package
2303 (name "ruby-standard-custom")
2304 (version "1.0.2")
2305 (source
2306 (origin
2307 (method url-fetch)
2308 (uri (rubygems-uri "standard-custom" version))
2309 (sha256
2310 (base32 "0av55ai0nv23z5mhrwj1clmxpgyngk7vk6rh58d4y1ws2y2dqjj2"))))
2311 (build-system ruby-build-system)
2312 (arguments '(#:tests? #f)) ;Circular dependency on ruby-standard.
2313 (propagated-inputs (list ruby-lint-roller ruby-rubocop))
2314 (synopsis "Plugin of custom cops for Standard Ruby")
2315 (description
2316 "This package provides a implementations of custom cops that are bundled
2317as defaults in Standard Ruby.")
2318 (home-page "https://github.com/standardrb/standard-custom")
2319 (license license:expat)))
2320
2321(define-public ruby-standard-performance
2322 (package
2323 (name "ruby-standard-performance")
2324 (version "1.6.0")
2325 (source
2326 (origin
2327 (method url-fetch)
2328 (uri (rubygems-uri "standard-performance" version))
2329 (sha256
2330 (base32 "1x298w3wmq8cavbsg903wc3arxp3xh2x8263brvy128436m732rd"))))
2331 (build-system ruby-build-system)
2332 (arguments '(#:tests? #f)) ;Circular dependency on ruby-standard.
2333 (propagated-inputs (list ruby-lint-roller ruby-rubocop-performance))
2334 (synopsis "Standard Ruby Plugin for rubocop-performance")
2335 (description
2336 "This package is a Standard Ruby Plugin providing configuration for
2337@code{rubocop-performance}.")
2338 (home-page "https://github.com/standardrb/standard-performance")
2339 (license license:expat)))
2340
2341(define-public ruby-standard
2342 (package
2343 (name "ruby-standard")
2344 (version "1.37.0")
2345 (source
2346 (origin
2347 (method git-fetch) ;no test suite in distributed gem
2348 (uri (git-reference
2349 (url "https://github.com/testdouble/standard")
2350 (commit (string-append "v" version))))
2351 (file-name (git-file-name name version))
2352 (sha256
2353 (base32 "0gm9fn6fz41aya34xz7kzda8xxs7h98n7cjx66qbcy2w0qhs40wc"))))
2354 (build-system ruby-build-system)
2355 (arguments
2356 (list
2357 #:phases
2358 #~(modify-phases %standard-phases
2359 (add-after 'unpack 'set-HOME
2360 (lambda _
2361 ;; Some tests fail otherwise.
2362 (setenv "HOME" "/tmp")))
2363 (add-after 'unpack 'relax-requirements
2364 (lambda _
2365 (substitute* "standard.gemspec"
2366 (("\"rubocop\", \".*\"")
2367 (string-append
2368 "\"rubocop\", \"~> "
2369 #$(package-version
2370 (this-package-input "ruby-rubocop"))
2371 "\""))
2372 (("\"rubocop-performance\", \".*\"")
2373 (string-append
2374 "\"rubocop-performance\", \"~> "
2375 #$(package-version
2376 (this-package-input "ruby-rubocop-performance"))
2377 "\"")))))
2378 (add-after 'unpack 'delete-problematic-tests
2379 ;; These tests fail for unknown reasons (see:
2380 ;; https://github.com/testdouble/standard/issues/532).
2381 (lambda _
2382 (delete-file "test/standard_test.rb")
2383 (substitute* "test/standard/base_test.rb"
2384 ((".*test_configures_all_rubocop_cops.*" all)
2385 (string-append all
2386 " skip('fails on guix')\n"))))))))
2387 (native-inputs
2388 (list ruby-simplecov))
2389 (propagated-inputs
2390 (list ruby-language-server-protocol
2391 ruby-lint-roller
2392 ruby-rubocop
2393 ruby-rubocop-performance
2394 ruby-standard-custom
2395 ruby-standard-performance))
2396 (synopsis "Ruby Style Guide, with linter & automatic code fixer")
2397 (description "Standard is a port of StandardJS. Like StandardJS, it aims
2398to save time in the following ways:
2399@itemize
2400@item No configuration.
2401@item Automatically format code.
2402@item Catch style issues and programmer errors early.
2403@end itemize")
2404 (home-page "https://github.com/testdouble/standard")
2405 (license license:expat)))
2406
2407(define-public ruby-chunky-png
2408 (package
2409 (name "ruby-chunky-png")
2410 (version "1.4.0")
2411 (source
2412 (origin
2413 (method git-fetch)
2414 (uri (git-reference
2415 (url "https://github.com/wvanbergen/chunky_png")
2416 (commit (string-append "v" version))))
2417 (file-name (git-file-name name version))
2418 (sha256
2419 (base32 "05qwj72dy2fcy0n2jnf3bfriybfj36m7s6pv9xash6295dbcp901"))))
2420 (build-system ruby-build-system)
2421 (arguments
2422 (list
2423 #:ruby ruby-3.1
2424 #:test-target "spec"
2425 #:phases
2426 #~(modify-phases %standard-phases
2427 (add-after 'unpack 'disable-bundler
2428 (lambda _
2429 (substitute* (find-files "." "\\.rb$")
2430 (("require.*bundler/setup.*") "")))))))
2431 (native-inputs
2432 (list bundler ruby-rspec ruby-standard ruby-yard))
2433 (synopsis "Ruby library to handle PNG images")
2434 (description "ChunkyPNG is a pure Ruby library that can read and write
2435Portable Network Graphics (PNG) images without depending on an external image
2436library. It tries to be memory efficient and reasonably fast. It has
2437features such as:
2438@itemize
2439@item
2440Decoding support for any image that the PNG standard allows. This includes all
2441standard color modes, all bit depths, all transparency, and interlacing and
2442filtering options.
2443@item
2444Encoding support for images of all color modes (true color, grayscale, and
2445indexed) and transparency for all these color modes. The best color mode is
2446chosen automatically, based on the amount of used colors.
2447@item Read/write access to the image's pixels.
2448@item Read/write access to all image metadata that is stored in chunks.
2449@item
2450Memory efficiency: @code{fixnum} are used, i.e. 4 or 8 bytes of memory per
2451pixel, depending on the hardware).
2452@item
2453Performance: ChunkyPNG is reasonably fast for Ruby standards, by only using
2454integer math and a highly optimized saving routine.
2455@item Interoperability with RMagick.
2456@end itemize
2457
2458ChunkyPNG is vulnerable to decompression bombs and can run out of memory when
2459loading a specifically crafted PNG file. This is hard to fix in pure Ruby.
2460Deal with untrusted images in a separate process, e.g., by using @code{fork}
2461or a background processing library.")
2462 (home-page "https://github.com/wvanbergen/chunky_png/wiki")
2463 (license license:expat)))
2464
2465(define-public ruby-text-hyphen
2466 (package
2467 (name "ruby-text-hyphen")
2468 (version "1.5.0")
2469 (source
2470 (origin
2471 (method url-fetch)
2472 (uri (rubygems-uri "text-hyphen" version))
2473 (sha256
2474 (base32
2475 "01js0wxz84cc5hzxgqbcqnsa0y6crhdi6plmgkzyfm55p0rlajn4"))))
2476 (build-system ruby-build-system)
2477 (native-inputs
2478 (list ruby-hoe))
2479 (synopsis "Ruby library to hyphenate words in various languages")
2480 (description "Text::Hyphen is a Ruby library to hyphenate words in various
2481languages using Ruby-fied versions of TeX hyphenation patterns. It will
2482properly hyphenate various words according to the rules of the language the
2483word is written in. The algorithm is based on that of the TeX typesetting
2484system by Donald E. Knuth.")
2485 (home-page "https://github.com/halostatue/text-hyphen")
2486 ;; The whole is licensed under the Expat license, but parts use various
2487 ;; versions of the LaTeX Project Public License.
2488 (license license:expat)))
2489
2490(define-public ruby-open-uri-cached
2491 (package
2492 (name "ruby-open-uri-cached")
2493 (version "1.0.0")
2494 (source
2495 (origin
2496 (method url-fetch)
2497 (uri (rubygems-uri "open-uri-cached" version))
2498 (sha256
2499 (base32
2500 "03v0if3jlvbclnd6jgjk94fbhf0h2fq1wxr0mbx7018sxzm0biwr"))))
2501 (build-system ruby-build-system)
2502 (arguments
2503 `(#:tests? #f)) ;no test suite
2504 (synopsis "OpenURI with transparent disk caching")
2505 (description "OpenURI with transparent disk caching, which is
2506useful to avoid making excessive queries, for example when scraping
2507web pages.")
2508 (home-page "https://github.com/tigris/open-uri-cached")
2509 (license license:expat)))
2510
2511(define-public ruby-asciidoctor-pdf
2512 (package
2513 (name "ruby-asciidoctor-pdf")
2514 (version "2.3.19")
2515 (source
2516 (origin
2517 (method git-fetch) ;no test suite in the distributed gem
2518 (uri (git-reference
2519 (url "https://github.com/asciidoctor/asciidoctor-pdf")
2520 (commit (string-append "v" version))))
2521 (file-name (git-file-name name version))
2522 (sha256
2523 (base32
2524 "1l8my8jj4aww2yad80n6f7hs76lq5gicld8dy014pw90pk3x43mp"))
2525 (patches
2526 (search-patches
2527 "ruby-asciidoctor-pdf-support-prawn-svg-0_36.patch"))))
2528 (build-system ruby-build-system)
2529 (arguments
2530 (list
2531 #:test-target "spec"
2532 #:phases
2533 #~(modify-phases %standard-phases
2534 ;; The tests rely on the Gem being installed, so move the check
2535 ;; phase after the install phase.
2536 (delete 'check)
2537 (add-after 'install 'check
2538 (lambda* (#:key tests? #:allow-other-keys)
2539 (setenv "GEM_PATH" (string-append
2540 (getenv "GEM_PATH") ":"
2541 #$output "/lib/ruby/vendor_ruby"))
2542 (when tests?
2543 (invoke "rspec" "-t" "~visual" "-t" "~cli"
2544 "-t" "~network")))))))
2545 (native-inputs
2546 (list ruby-chunky-png
2547 ruby-coderay
2548 ruby-pdf-inspector
2549 ruby-rouge
2550 ruby-rspec))
2551 (propagated-inputs
2552 (list ruby-asciidoctor
2553 ruby-concurrent
2554 ruby-prawn
2555 ruby-prawn-icon
2556 ruby-prawn-svg
2557 ruby-prawn-table
2558 ruby-prawn-templates
2559 ruby-text-hyphen
2560 ruby-treetop
2561 ruby-ttfunk))
2562 (synopsis"AsciiDoc to Portable Document Format (PDF)} converter")
2563 (description "Asciidoctor PDF is an extension for Asciidoctor that
2564converts AsciiDoc documents to Portable Document Format (PDF) using the Prawn
2565PDF library. It has features such as:
2566@itemize
2567@item Direct AsciiDoc to PDF conversion
2568@item Configuration-driven theme (style and layout)
2569@item Scalable Vector Graphics (SVG) support
2570@item PDF document outline (i.e., bookmarks)
2571@item Table of contents page(s)
2572@item Document metadata (title, authors, subject, keywords, etc.)
2573@item Internal cross reference links
2574@item Syntax highlighting with Rouge, Pygments, or CodeRay
2575@item Page numbering
2576@item Customizable running content (header and footer)
2577@item
2578“Keep together” blocks (i.e., page breaks avoided in certain block content)
2579@item Orphaned section titles avoided
2580@item Autofit verbatim blocks (as permitted by base_font_size_min setting)
2581@item Table border settings honored
2582@item Font-based icons
2583@item Custom TrueType (TTF) fonts
2584@item Double-sided printing mode (margins alternate on recto and verso pages)
2585@end itemize")
2586 (home-page "https://asciidoctor.org/docs/asciidoctor-pdf")
2587 (license license:expat)))
2588
2589(define-public ruby-ast
2590 (package
2591 (name "ruby-ast")
2592 (version "2.4.2")
2593 (source
2594 (origin
2595 (method git-fetch) ;no test included in gem from v2.4.1
2596 (uri (git-reference
2597 (url "https://github.com/whitequark/ast")
2598 (commit (string-append "v" version))))
2599 (file-name (git-file-name name version))
2600 (sha256
2601 (base32
2602 "0vm94yml8rknr7z034vg6s3fpx6lml2prz9fn3hr67cx0143bb4h"))))
2603 (build-system ruby-build-system)
2604 (arguments
2605 '(#:phases
2606 (modify-phases %standard-phases
2607 (add-after 'unpack 'remove-coveralls-requirement
2608 (lambda _
2609 (substitute* "test/helper.rb"
2610 (("require 'coveralls'") "")
2611 (("Coveralls::SimpleCov::Formatter") ""))))
2612 (add-after 'extract-gemspec 'remove-unnecessary-requirements
2613 (lambda* (#:key inputs #:allow-other-keys)
2614 (substitute* "ast.gemspec"
2615 ((".*coveralls.*") "\n")
2616 (("%q<rest-client>.*") "%q<rest-client>.freeze, [\">= 0\"])\n")
2617 (("%q<mime-types>.*") "%q<mime-types>.freeze, [\">= 0\"])\n")
2618 (("%q<rake>.*") "%q<rake>.freeze, [\">= 0\"])\n")
2619 (("12\\.3") "13.0")))))))
2620 (native-inputs
2621 (list bundler
2622 ruby-bacon
2623 ruby-bacon-colored-output
2624 ruby-json-pure
2625 ruby-kramdown
2626 ruby-mime-types
2627 ruby-racc
2628 ruby-rest-client
2629 ruby-simplecov
2630 ruby-yard))
2631 (synopsis "Library for working with Abstract Syntax Trees")
2632 (description
2633 "@code{ast} is a Ruby library for working with Abstract Syntax Trees.
2634It does this through immutable data structures.")
2635 (home-page "https://whitequark.github.io/ast/")
2636 (license license:expat)))
2637
2638(define-public ruby-sporkmonger-rack-mount
2639 ;; Testing the addressable gem requires a newer commit than that released, so
2640 ;; use an up to date version.
2641 (let ((revision "1")
2642 (commit "076aa2c47d9a4c081f1e9bcb56a826a9e72bd5c3"))
2643 (package
2644 (name "ruby-sporkmonger-rack-mount")
2645 (version (git-version "0.8.3" revision commit))
2646 (source (origin
2647 (method git-fetch)
2648 (uri (git-reference
2649 (url "https://github.com/sporkmonger/rack-mount")
2650 (commit commit)))
2651 (file-name (git-file-name name version))
2652 (sha256
2653 (base32
2654 "1scx273g3xd93424x9lxc4zyvcp2niknbw5mkz6wkivpf7xsyxdq"))))
2655 (build-system ruby-build-system)
2656 (arguments
2657 ;; Tests currently fail so disable them.
2658 ;; https://github.com/sporkmonger/rack-mount/pull/1
2659 `(#:tests? #f))
2660 (propagated-inputs (list ruby-rack))
2661 (synopsis "Stackable dynamic tree based Rack router")
2662 (description
2663 "@code{Rack::Mount} supports Rack's @code{X-Cascade} convention to
2664continue trying routes if the response returns pass. This allows multiple
2665routes to be nested or stacked on top of each other.")
2666 (home-page "https://github.com/sporkmonger/rack-mount")
2667 (license license:expat))))
2668
2669(define-public ruby-ci-reporter
2670 (package
2671 (name "ruby-ci-reporter")
2672 (version "2.1.0")
2673 (source (origin
2674 (method url-fetch)
2675 (uri (rubygems-uri "ci_reporter" version))
2676 (sha256
2677 (base32
2678 "0qcafasmjjr8a5gzr4k92ncm6h2943skwllhjzwz8spawdwc7dla"))))
2679 (build-system ruby-build-system)
2680 (arguments
2681 `(#:test-target "rspec"))
2682 (propagated-inputs
2683 (list ruby-builder ruby-rexml))
2684 (native-inputs
2685 (list bundler ruby-rspec))
2686 (synopsis "Generate XML reports of runs test")
2687 (description
2688 "@code{CI::Reporter} is an add-on to Ruby testing frameworks that allows
2689you to generate XML reports of your test runs. The resulting files can be
2690read by a continuous integration system that understands Ant's JUnit report
2691format.")
2692 (home-page "https://github.com/nicksieger/ci_reporter")
2693 (license license:expat)))
2694
2695(define-public ruby-console
2696 (package
2697 (name "ruby-console")
2698 (version "1.16.2")
2699 (source (origin
2700 (method url-fetch)
2701 (uri (rubygems-uri "console" version))
2702 (sha256
2703 (base32
2704 "0y1bv3kd1l9p0k5n3anvvjxdrcq113pyngz2g29i9mvdgbbx7kq2"))))
2705 (build-system ruby-build-system)
2706 ;; XXX: Disable test suite to avoid dependency cycles with ruby-samovar.
2707 (arguments (list #:tests? #f))
2708 (propagated-inputs (list ruby-fiber-local))
2709 (synopsis "Console logging library for Ruby")
2710 (description "This gem provides beautiful console logging for Ruby
2711applications. It implements fast, buffered log output and has the following
2712features:
2713@itemize
2714@item Thread safe global logger with per-fiber context
2715@item Carry along context with nested loggers
2716@item Enable/disable log levels per class
2717@item Detailed logging of exceptions
2718@item Beautiful logging to the terminal or structured logging using JSON.
2719@end itemize")
2720 (home-page "https://github.com/socketry/console")
2721 (license license:expat)))
2722
2723(define-public ruby-contracts
2724 (package
2725 (name "ruby-contracts")
2726 (version "0.17.2")
2727 (source
2728 (origin
2729 (method url-fetch)
2730 (uri (rubygems-uri "contracts" version))
2731 (sha256
2732 (base32
2733 "1sclvlwnlxfaj1595xd0rn3x3w0ljic3vqgnx6476lr7x8xbpbiv"))))
2734 (build-system ruby-build-system)
2735 (arguments
2736 (list
2737 #:test-target "spec"
2738 #:phases
2739 #~(modify-phases %standard-phases
2740 ;; Don't run or require rubocop, the code linting tool, as this is a
2741 ;; bit unnecessary.
2742 (add-after 'unpack 'dont-run-rubocop
2743 (lambda _
2744 (substitute* "Rakefile"
2745 ((".*rubocop.*") "")
2746 ((".*RuboCop.*") "")))))))
2747 (native-inputs
2748 (list ruby-rspec))
2749 (synopsis "Method contracts for Ruby")
2750 (description
2751 "This library provides contracts for Ruby. A contract describes the
2752correct inputs and output for a method, and will raise an error if a incorrect
2753value is found.")
2754 (home-page "https://github.com/egonSchiele/contracts.ruby")
2755 (license license:bsd-2)))
2756
2757(define-public ruby-crack
2758 (package
2759 (name "ruby-crack")
2760 (version "0.4.5")
2761 (source
2762 (origin
2763 (method url-fetch)
2764 (uri (rubygems-uri "crack" version))
2765 (sha256
2766 (base32
2767 "1cr1kfpw3vkhysvkk3wg7c54m75kd68mbm9rs5azdjdq57xid13r"))))
2768 (build-system ruby-build-system)
2769 (arguments
2770 `(#:phases
2771 (modify-phases %standard-phases
2772 (replace 'check
2773 (lambda* (#:key tests? #:allow-other-keys)
2774 (when tests?
2775 (for-each (lambda (file)
2776 (display file)(display "\n")
2777 (invoke "ruby" "-Ilib" "-Itest" "-rrubygems" file))
2778 (find-files "test" ".*rb$"))))))))
2779 (synopsis "Simple JSON and XML parsing for Ruby")
2780 (description
2781 "@code{crack} provides really simple JSON and XML parsing, extracted from
2782code in Merb and Rails.")
2783 (home-page "https://github.com/jnunemaker/crack")
2784 (license license:expat)))
2785
2786(define-public ruby-clamp
2787 (package
2788 (name "ruby-clamp")
2789 (version "1.3.2")
2790 (source (origin
2791 (method url-fetch)
2792 (uri (rubygems-uri "clamp" version))
2793 (sha256
2794 (base32
2795 "08m0syh06bhx8dqn560ivjg96l5cs5s3l9jh2szsnlcdcyl9jsjg"))))
2796 (build-system ruby-build-system)
2797 (arguments
2798 (list #:test-target "spec"
2799 #:phases #~(modify-phases %standard-phases
2800 (add-after 'unpack 'do-not-require-rubocop
2801 (lambda _
2802 (substitute* "Rakefile"
2803 (("require \"rubocop/rake_task\"")
2804 "")
2805 (("RuboCop::RakeTask.new")
2806 "")))))))
2807 (native-inputs (list ruby-rspec))
2808 (synopsis "Command-line parsing library for Ruby")
2809 (description "Clamp provides an object-model for command-line utilities.
2810It handles parsing of command-line options, and generation of usage help.")
2811 (home-page "https://github.com/mdub/clamp")
2812 (license license:expat)))
2813
2814(define-public ruby-cliver
2815 (package
2816 (name "ruby-cliver")
2817 (version "0.3.2")
2818 (source
2819 (origin
2820 (method url-fetch)
2821 (uri (rubygems-uri "cliver" version))
2822 (sha256
2823 (base32
2824 "096f4rj7virwvqxhkavy0v55rax10r4jqf8cymbvn4n631948xc7"))))
2825 (build-system ruby-build-system)
2826 (arguments
2827 '(#:phases
2828 (modify-phases %standard-phases
2829 ;; Avoid a incompatibility between rspec@2 and rake. Using rspec@3
2830 ;; would be nice, but the tests look to be incompatible:
2831 ;;
2832 ;; NoMethodError: undefined method `last_comment'
2833 (replace 'check
2834 (lambda* (#:key tests? #:allow-other-keys)
2835 (when tests?
2836 (invoke "rspec")))))))
2837 (native-inputs
2838 (list bundler ruby-rspec-2))
2839 (synopsis "Assertions for command-line dependencies in Ruby")
2840 (description
2841 "@code{cliver} provides a way to detect missing command-line
2842dependencies, including versions.")
2843 (home-page "https://github.com/yaauie/cliver")
2844 (license license:expat)))
2845
2846(define-public ruby-czmq-ffi-gen
2847 (package
2848 (name "ruby-czmq-ffi-gen")
2849 (version "0.13.0")
2850 (source
2851 (origin
2852 (method url-fetch)
2853 (uri (rubygems-uri "czmq-ffi-gen" version))
2854 (sha256
2855 (base32
2856 "1yf719dmf4mwks1hqdsy6i5kzfvlsha69sfnhb2fr2cgk2snbys3"))))
2857 (build-system ruby-build-system)
2858 (arguments
2859 '(#:tests? #f ;; Tests are not included in the release on rubygems.org
2860 #:phases
2861 (modify-phases %standard-phases
2862 (add-after 'unpack 'patch-lib_dirs
2863 (lambda* (#:key inputs #:allow-other-keys)
2864 (substitute* "lib/czmq-ffi-gen/czmq/ffi.rb"
2865 (("lib\\_dirs = \\[.*\\]")
2866 (string-append "lib_dirs = ['"
2867 (assoc-ref inputs "czmq") "/lib"
2868 "']")))
2869 (substitute* "lib/czmq-ffi-gen/libzmq.rb"
2870 (("lib\\_dirs = \\[.*\\]")
2871 (string-append "lib_dirs = ['"
2872 (assoc-ref inputs "zeromq") "/lib"
2873 "']"))))))))
2874 (inputs
2875 (list zeromq czmq))
2876 (propagated-inputs (list ruby-ffi))
2877 (synopsis "Low-level Ruby bindings for CZMQ (generated using zproject)")
2878 (description
2879 "These Ruby bindings are not intended to be directly used, but rather
2880used by higher level bindings like those provided by CZTop.")
2881 (home-page
2882 "https://github.com/paddor/czmq-ffi-gen")
2883 (license license:isc)))
2884
2885(define-public ruby-cztop
2886 (package
2887 (name "ruby-cztop")
2888 (version "0.12.2")
2889 (source
2890 (origin
2891 (method url-fetch)
2892 (uri (rubygems-uri "cztop" version))
2893 (sha256
2894 (base32
2895 "0yqbpaiw5d7f271d73lyrsh8xpx6n4zi6xqwfgi00dacxrq3s3fa"))))
2896 (build-system ruby-build-system)
2897 (arguments
2898 '(#:test-target "spec"
2899 #:phases
2900 (modify-phases %standard-phases
2901 (add-after 'unpack 'patch-lib_paths
2902 (lambda* (#:key inputs #:allow-other-keys)
2903 (substitute* "lib/cztop/poller/zmq.rb"
2904 (("lib\\_paths = \\[.*\\]")
2905 (string-append "lib_paths = ['"
2906 (assoc-ref inputs "zeromq") "/lib"
2907 "']"))))))))
2908 (native-inputs
2909 (list bundler ruby-rspec))
2910 (inputs
2911 (list zeromq))
2912 (propagated-inputs
2913 (list ruby-czmq-ffi-gen))
2914 (synopsis "CZMQ Ruby bindings")
2915 (description
2916 "CZMQ Ruby bindings, based on the generated low-level FFI bindings of
2917CZMQ. The focus of of CZTop is on being easy to use and providing first class
2918support for security mechanisms.")
2919 (home-page "https://github.com/paddor/cztop")
2920 (license license:isc)))
2921
2922(define-public ruby-saikuro-treemap
2923 (package
2924 (name "ruby-saikuro-treemap")
2925 (version "0.2.0")
2926 (source (origin
2927 (method url-fetch)
2928 (uri (rubygems-uri "saikuro_treemap" version))
2929 (sha256
2930 (base32
2931 "0w70nmh43mwfbpq20iindl61siqqr8acmf7p3m7n5ipd61c24950"))))
2932 (build-system ruby-build-system)
2933 ;; Some of the tests fail because the generated JSON has keys in a
2934 ;; different order. This is a problem with the test suite rather than any
2935 ;; of the involved libraries.
2936 (arguments `(#:tests? #f))
2937 (propagated-inputs
2938 (list ruby-json-pure ruby-atoulme-saikuro))
2939 (synopsis "Generate complexity treemap based on saikuro analysis")
2940 (description
2941 "This gem generates a treemap showing the complexity of Ruby code on
2942which it is run. It uses Saikuro under the covers to analyze Ruby code
2943complexity.")
2944 (home-page "https://github.com/ThoughtWorksStudios/saikuro_treemap")
2945 (license license:expat)))
2946
2947(define-public ruby-oauth2
2948 (package
2949 (name "ruby-oauth2")
2950 (version "2.0.9")
2951 (source (origin
2952 (method git-fetch) ;for tests
2953 (uri (git-reference
2954 (url "https://gitlab.com/oauth-xx/oauth2")
2955 (commit (string-append "v" version))))
2956 (file-name (git-file-name name version))
2957 (sha256
2958 (base32
2959 "191j1f4gjw8wij1jy2fvddgi8cv1mm0ki7v0b0795clix1avnj29"))))
2960 (build-system ruby-build-system)
2961 (arguments
2962 (list #:modules '((guix build ruby-build-system)
2963 (guix build utils)
2964 (ice-9 regex)
2965 (ice-9 textual-ports))
2966 #:phases
2967 #~(modify-phases %standard-phases
2968 (add-after 'unpack 'relax-requirements
2969 (lambda _
2970 (substitute* "Gemfile"
2971 (("^linting = .*")
2972 "linting = false\n")
2973 (("^coverage = .*")
2974 "coverage = false\n")
2975 (("^debug = .*")
2976 "debug = false\n"))
2977 (substitute* "spec/spec_helper.rb"
2978 (("^RUN_COVERAGE = .*")
2979 "RUN_COVERAGE = false\n")
2980 (("^ALL_FORMATTERS = .*")
2981 "ALL_FORMATTERS = false\n"))))
2982 (add-after 'unpack 'skip-problematic-test
2983 (lambda _
2984 ;; XXX: substitute* can't match 2 lines.
2985 (with-atomic-file-replacement
2986 "spec/oauth2/client_spec.rb"
2987 (lambda (in out)
2988 (let* ((pattern "\
2989 context 'when parse: :xml but response is JSON' do\n\
2990 it 'returns a configured AccessToken' do\n")
2991 (content (get-string-all in))
2992 (matched (string-match pattern content)))
2993 (if matched
2994 (format out "~a skip('fails on guix')~%~a"
2995 (string-take content (match:end matched))
2996 (string-drop content (match:end matched)))
2997 (display content out))))))))))
2998 (native-inputs
2999 (list bundler
3000 ruby-addressable
3001 ruby-backports
3002 ruby-rexml
3003 ruby-rspec-block-is-expected
3004 ruby-rspec-pending-for
3005 ruby-rspec-stubbed-env
3006 ruby-silent-stream))
3007 (propagated-inputs
3008 (list ruby-faraday
3009 ruby-jwt
3010 ruby-multi-xml
3011 ruby-rack
3012 ruby-snaky-hash
3013 ruby-version-gem))
3014 (synopsis "Ruby wrapper for the OAuth 2.0")
3015 (description
3016 "This package provides a Ruby wrapper for the OAuth 2.0 protocol built
3017with a similar style to the original OAuth spec.")
3018 (home-page "https://github.com/oauth-xx/oauth2")
3019 (license license:expat)))
3020
3021(define-public ruby-omniauth
3022 (package
3023 (name "ruby-omniauth")
3024 (version "2.1.1")
3025 (source (origin
3026 (method git-fetch) ;for tests
3027 (uri (git-reference
3028 (url "https://github.com/omniauth/omniauth")
3029 (commit (string-append "v" version))))
3030 (file-name (git-file-name name version))
3031 (sha256
3032 (base32
3033 "1mm7a4ll7ymamrbsl63yi6i34qpwmh2nh5a9kj961gja1iz2gyd1"))))
3034 (build-system ruby-build-system)
3035 (arguments
3036 (list #:phases
3037 #~(modify-phases %standard-phases
3038 (add-after 'unpack 'relax-requirements
3039 (lambda _
3040 (substitute* "spec/helper.rb"
3041 ;; This condition is used to require coveralls and
3042 ;; simplecov; override it to avoid these extraneous
3043 ;; requirements.
3044 (("RUBY_VERSION >= '1.9'")
3045 "false")
3046 (("require 'rack/freeze'") "")))))))
3047 (native-inputs (list ruby-rspec))
3048 (propagated-inputs (list ruby-hashie ruby-rack ruby-rack-test
3049 ruby-rack-protection))
3050 (synopsis "Generalized Rack framework for multiple-provider authentication")
3051 (description
3052 "This package provides a generalized Rack framework for multiple-provider
3053authentication.")
3054 (home-page "https://github.com/omniauth/omniauth")
3055 (license license:expat)))
3056
3057(define-public ruby-omniauth-oauth2
3058 (package
3059 (name "ruby-omniauth-oauth2")
3060 (version "1.8.0")
3061 (source
3062 (origin
3063 (method url-fetch)
3064 (uri (rubygems-uri "omniauth-oauth2" version))
3065 (sha256
3066 (base32
3067 "0y4y122xm8zgrxn5nnzwg6w39dnjss8pcq2ppbpx9qn7kiayky5j"))))
3068 (build-system ruby-build-system)
3069 (arguments
3070 (list #:phases
3071 #~(modify-phases %standard-phases
3072 (add-after 'unpack 'relax-requirements
3073 (lambda _
3074 (substitute* "spec/helper.rb"
3075 ;; This condition is used to require coveralls and
3076 ;; simplecov; override it to avoid these extraneous
3077 ;; requirements.
3078 (("RUBY_VERSION >= \"1.9\"")
3079 "false")))))))
3080 (propagated-inputs (list ruby-oauth2 ruby-omniauth))
3081 (native-inputs (list ruby-rspec ruby-rack-test ruby-webmock))
3082 (synopsis "Abstract OAuth2 strategy for OmniAuth")
3083 (description
3084 "This library provides a generic OAuth2 strategy for OmniAuth. It
3085doesn't provide a way to gather user information, so should be used as a
3086building block for authentication strategies.")
3087 (home-page "https://github.com/omniauth/omniauth-oauth2")
3088 (license license:expat)))
3089
3090(define-public ruby-open4
3091 (package
3092 (name "ruby-open4")
3093 (version "1.3.4")
3094 (source
3095 (origin
3096 (method url-fetch)
3097 (uri (rubygems-uri "open4" version))
3098 (sha256
3099 (base32
3100 "1cgls3f9dlrpil846q0w7h66vsc33jqn84nql4gcqkk221rh7px1"))))
3101 (build-system ruby-build-system)
3102 (arguments
3103 '(#:phases
3104 (modify-phases %standard-phases
3105 (add-after 'unpack 'patch
3106 (lambda _
3107 (substitute* "rakefile"
3108 ;; Update the Rakefile so it works
3109 (("-rubygems") "-rrubygems")
3110 (("Config") "RbConfig"))))
3111 (add-before 'check 'set-LIB
3112 (lambda _
3113 ;; This is used in the rakefile when running the tests
3114 (setenv "LIB" "open4"))))))
3115 (synopsis "Open child processes from Ruby and manage them easily")
3116 (description
3117 "@code{Open4} is a Ruby library to run child processes and manage their
3118input and output.")
3119 (home-page "https://github.com/ahoward/open4")
3120 (license license:ruby)))
3121
3122(define-public ruby-options
3123 (package
3124 (name "ruby-options")
3125 (version "2.3.2")
3126 (source
3127 (origin
3128 (method url-fetch)
3129 (uri (rubygems-uri "options" version))
3130 (sha256
3131 (base32
3132 "1s650nwnabx66w584m1cyw82icyym6hv5kzfsbp38cinkr5klh9j"))))
3133 (build-system ruby-build-system)
3134 (arguments
3135 '(#:tests? #f ;; TODO: NameError: uninitialized constant Config
3136 #:phases
3137 (modify-phases %standard-phases
3138 (add-before 'check 'set-LIB
3139 (lambda _
3140 ;; This is used in the Rakefile, and setting it avoids an issue
3141 ;; with running the tests.
3142 (setenv "LIB" "options"))))))
3143 (synopsis "Ruby library to parse options from *args cleanly")
3144 (description
3145 "The @code{options} library helps with parsing keyword options in Ruby
3146functions.")
3147 (home-page "https://github.com/ahoward/options")
3148 (license license:ruby)))
3149
3150(define-public ruby-erubi
3151 (package
3152 (name "ruby-erubi")
3153 (version "1.11.0")
3154 (source
3155 (origin
3156 (method git-fetch)
3157 (uri (git-reference
3158 (url "https://github.com/jeremyevans/erubi")
3159 (commit version)))
3160 (file-name (git-file-name name version))
3161 (sha256
3162 (base32 "0y4qskz260fjwbnjps5z5yygjwgh6ds0f97lfa9gsmh6zqa1lvvx"))))
3163 (build-system ruby-build-system)
3164 (arguments
3165 (list #:test-target "spec"))
3166 (native-inputs (list ruby-minitest
3167 ruby-minitest-global-expectations))
3168 (synopsis "ERB template engine for Ruby")
3169 (description
3170 "Erubi is a ERB template engine for Ruby. It is a simplified fork of
3171Erubis")
3172 (home-page "https://github.com/jeremyevans/erubi")
3173 (license license:expat)))
3174
3175(define-public ruby-erubis
3176 (package
3177 (name "ruby-erubis")
3178 (version "2.7.0")
3179 (source
3180 (origin
3181 (method url-fetch)
3182 (uri (rubygems-uri "erubis" version))
3183 (sha256
3184 (base32
3185 "1fj827xqjs91yqsydf0zmfyw9p4l2jz5yikg3mppz6d7fi8kyrb3"))))
3186 (build-system ruby-build-system)
3187 (arguments
3188 '(#:tests? #f)) ; tests do not run properly with Ruby 2.0
3189 (synopsis "Implementation of embedded Ruby (eRuby)")
3190 (description
3191 "Erubis is a fast implementation of embedded Ruby (eRuby) with several
3192features such as multi-language support, auto escaping, auto trimming spaces
3193around @code{<% %>}, a changeable embedded pattern, and Ruby on Rails
3194support.")
3195 (home-page "http://www.kuwata-lab.com/erubis/")
3196 (license license:expat)))
3197
3198(define-public ruby-ethon
3199 (package
3200 (name "ruby-ethon")
3201 (version "0.12.0")
3202 (source
3203 (origin
3204 (method url-fetch)
3205 (uri (rubygems-uri "ethon" version))
3206 (sha256
3207 (base32
3208 "0gggrgkcq839mamx7a8jbnp2h7x2ykfn34ixwskwb0lzx2ak17g9"))))
3209 (build-system ruby-build-system)
3210 (arguments
3211 (list
3212 #:tests? #f ; no included tests
3213 #:phases
3214 #~(modify-phases %standard-phases
3215 (add-after 'unpack 'libcurl-use-absolute-reference
3216 (lambda* (#:key inputs #:allow-other-keys)
3217 (substitute* "lib/ethon/curls/settings.rb"
3218 (("libcurl', 'libcurl\\.so\\.4")
3219 (search-input-file inputs "/lib/libcurl.so"))))))))
3220 (inputs
3221 (list curl))
3222 (propagated-inputs
3223 (list ruby-ffi))
3224 (synopsis "Very lightweight @code{libcurl} wrapper")
3225 (description
3226 "Ethon is a very basic @code{libcurl} wrapper using ffi.")
3227 (home-page "https://github.com/typhoeus/ethon")
3228 (license license:expat)))
3229
3230(define-public ruby-execjs
3231 (package
3232 (name "ruby-execjs")
3233 (version "2.7.0")
3234 (source
3235 (origin
3236 ;; fetch from github as the gem does not contain testing code
3237 (method git-fetch)
3238 (uri (git-reference
3239 (url "https://github.com/rails/execjs")
3240 (commit (string-append "v" version))))
3241 (file-name (git-file-name name version))
3242 (sha256
3243 (base32
3244 "0c0vd2mmqq3ar4plbwi2wsbr31vn4h45i19r5km66skydnnbp1y6"))))
3245 (build-system ruby-build-system)
3246 (native-inputs
3247 (list bundler
3248 ;; The test suite tests all the available backends. Currently, this just
3249 ;; means the node backend.
3250 ;;
3251 ;; PASSED: test:node
3252 ;; SKIPPED: test:duktape, ;; test:javascriptcore, test:jscript,
3253 ;; test:miniracer, test:rubyracer, ;; test:rubyrhino, test:v8
3254 node-lts))
3255 (synopsis "Run JavaScript code from Ruby")
3256 (description
3257 "ExecJS lets you run JavaScript code from Ruby. It automatically picks a
3258runtime to evaluate your JavaScript program, then returns the result to you as
3259a Ruby object.")
3260 (home-page "https://github.com/rails/execjs")
3261 (license license:expat)))
3262
3263(define-public ruby-fakefs
3264 (package
3265 (name "ruby-fakefs")
3266 (version "2.8.0")
3267 (home-page "https://github.com/fakefs/fakefs")
3268 (source (origin
3269 ;; The Rubygems release does not contain tests.
3270 (method git-fetch)
3271 (uri (git-reference
3272 (url home-page)
3273 (commit (string-append "v" version))))
3274 (file-name (git-file-name name version))
3275 (sha256
3276 (base32
3277 "0a3vq6cllml279j77hxipmbln31pjw6di3zdgpzqvhqgazv55v10"))))
3278 (build-system ruby-build-system)
3279 (arguments
3280 '(#:phases (modify-phases %standard-phases
3281 (replace 'replace-git-ls-files
3282 (lambda _
3283 (substitute* "fakefs.gemspec"
3284 (("`git ls-files lib README.md LICENSE`")
3285 "`find lib README.md LICENSE -type f | sort`"))))
3286 (add-before 'check 'remove-version-constraints
3287 (lambda _
3288 ;; Drop hard version requirements for test dependencies.
3289 (substitute* "fakefs.gemspec"
3290 (("(.*add_development_dependency .*), .*" _ dep)
3291 (string-append dep "\n"))))))))
3292 (native-inputs
3293 (list ruby-bump ruby-maxitest ruby-pry ruby-rubocop ruby-rspec))
3294 (synopsis "Fake file system for Ruby")
3295 (description
3296 "This package provides a fake file system for use in test suites. It
3297avoids the need for manually creating temporary directories, or dealing
3298with platform intricacies in @code{File} and @code{FileUtils}.")
3299 (license license:expat)))
3300
3301(define-public ruby-orderedhash
3302 (package
3303 (name "ruby-orderedhash")
3304 (version "0.0.6")
3305 (source (origin
3306 (method url-fetch)
3307 (uri (rubygems-uri "orderedhash" version))
3308 (sha256
3309 (base32
3310 "0fryy7f9jbpx33jq5m402yqj01zcg563k9fsxlqbhmq638p4bzd7"))))
3311 (build-system ruby-build-system)
3312 (arguments
3313 '(#:tests? #f)) ; no test suite
3314 (synopsis "Ruby library providing an order-preserving hash")
3315 (description "Orderedhash is a Ruby library providing a hash
3316implementation that preserves the order of items and features some array-like
3317extensions.")
3318 (home-page "http://codeforpeople.com/lib/ruby/orderedhash/")
3319 (license license:public-domain)))
3320
3321(define-public ruby-libxml
3322 (package
3323 (name "ruby-libxml")
3324 (version "3.0.0")
3325 (source
3326 (origin
3327 (method url-fetch)
3328 (uri (rubygems-uri "libxml-ruby" version))
3329 (sha256
3330 (base32
3331 "0xy8wmjwjcnv36zi042678ncjzpxvy351ccbv7mzkns2n3kxfp54"))))
3332 (build-system ruby-build-system)
3333 (inputs
3334 (list zlib libxml2))
3335 (arguments
3336 '(#:tests? #f ; test suite hangs for unknown reason
3337 #:gem-flags
3338 (list "--no-document" ; TODO: Re-enable when documentation
3339 ; generation works
3340 "--"
3341 (string-append "--with-xml2-include="
3342 (assoc-ref %build-inputs "libxml2")
3343 "/include/libxml2" ))))
3344 (synopsis "Ruby bindings for GNOME Libxml2")
3345 (description "The Libxml-Ruby project provides Ruby language bindings for
3346the GNOME Libxml2 XML toolkit.")
3347 (home-page "https://xml4r.github.com/libxml-ruby")
3348 (license license:expat)))
3349
3350(define-public ruby-lino
3351 (package
3352 (name "ruby-lino")
3353 (version "3.1.0")
3354 (source
3355 (origin
3356 (method url-fetch)
3357 (uri (rubygems-uri "lino" version))
3358 (sha256
3359 (base32
3360 "1zq9dza040fgjvr9imh7z2lgxrcyc5ac100rqimsnsf9bpfz3fsm"))))
3361 (build-system ruby-build-system)
3362 (arguments
3363 '(#:tests? #f)) ; No included tests
3364 (propagated-inputs
3365 (list ruby-hamster ruby-open4))
3366 (synopsis "Build and execute commands in Ruby")
3367 (description
3368 "@code{Lino} provides an interface to run external commands. It provides
3369an interface to add options as well as managing the standard input, output and
3370error streams.")
3371 (home-page "https://github.com/tobyclemson/lino")
3372 (license license:expat)))
3373
3374(define-public ruby-x25519
3375 (package
3376 (name "ruby-x25519")
3377 (version "1.0.10")
3378 (source (origin
3379 (method git-fetch)
3380 (uri (git-reference
3381 (url "https://github.com/RubyCrypto/x25519")
3382 (commit (string-append "v" version))))
3383 (file-name (git-file-name name version))
3384 (sha256
3385 (base32
3386 "1g0311ly32f6hfn4q5fvkbjbl2bhv1l9fx6s0kglxfsrwq51926y"))
3387 (patches
3388 (search-patches
3389 "ruby-x25519-automatic-fallback-non-x86_64.patch"))))
3390 (build-system ruby-build-system)
3391 (arguments
3392 (list #:test-target "spec"
3393 #:phases #~(modify-phases %standard-phases
3394 (add-after 'unpack 'remove-unnecessary-dependencies
3395 (lambda _
3396 (substitute* "Gemfile"
3397 ((".*rubocop.*")
3398 ""))
3399 (substitute* "Rakefile"
3400 (("require \"rubocop/rake_task\"")
3401 "")
3402 (("RuboCop::RakeTask.new")
3403 ""))))
3404 (add-before 'build 'compile
3405 (lambda _
3406 (invoke "rake" "compile"))))))
3407 (native-inputs (list ruby-rake-compiler ruby-rspec))
3408 (synopsis "Cryptography library for Ruby providing the X25519
3409Diffie-Hellman function")
3410 (description
3411 "The x25519 gem is an efficient public key cryptography library for
3412Ruby providing key exchange/agreement via the X25519 (as known as
3413Curve25519) Elliptic Curve Diffie-Hellman function as described in
3414@url{https://www.ietf.org/rfc/rfc7748.txt, RFC 7748}.")
3415 (home-page "https://github.com/RubyCrypto/x25519")
3416 (license license:bsd-3)))
3417
3418(define-public ruby-xml-simple
3419 (package
3420 (name "ruby-xml-simple")
3421 (version "1.1.5")
3422 (source (origin
3423 (method url-fetch)
3424 (uri (rubygems-uri "xml-simple" version))
3425 (sha256
3426 (base32
3427 "0xlqplda3fix5pcykzsyzwgnbamb3qrqkgbrhhfz2a2fxhrkvhw8"))))
3428 (build-system ruby-build-system)
3429 (arguments
3430 '(#:tests? #f)) ; no test suite
3431 (synopsis "Simple Ruby library for XML processing")
3432 (description "This library provides a simple API for XML processing in
3433Ruby.")
3434 (home-page "https://github.com/maik/xml-simple")
3435 (license license:ruby)))
3436
3437(define-public ruby-xpath
3438 (package
3439 (name "ruby-xpath")
3440 (version "3.2.0")
3441 (source (origin
3442 (method url-fetch)
3443 (uri (rubygems-uri "xpath" version))
3444 (sha256
3445 (base32
3446 "0bh8lk9hvlpn7vmi6h4hkcwjzvs2y0cmkk3yjjdr8fxvj6fsgzbd"))))
3447 (build-system ruby-build-system)
3448 (arguments (list #:phases #~(modify-phases %standard-phases
3449 (replace 'check
3450 (lambda* (#:key tests? #:allow-other-keys)
3451 (when tests?
3452 (invoke "rspec" "spec" )))))))
3453 (native-inputs (list ruby-pry ruby-rspec))
3454 (propagated-inputs (list ruby-nokogiri))
3455 (synopsis "Ruby DSL for generating XPath expressions")
3456 (description "XPath is a Ruby domain-specific language (DSL) for
3457generating XPath expressions.")
3458 (home-page "https://github.com/teamcapybara/xpath")
3459 (license license:expat)))
3460
3461(define-public ruby-thor
3462 (package
3463 (name "ruby-thor")
3464 (version "1.2.2")
3465 (source (origin
3466 ;; Pull from git because the gem has no tests.
3467 (method git-fetch)
3468 (uri (git-reference
3469 (url "https://github.com/rails/thor")
3470 (commit (string-append "v" version))))
3471 (file-name (git-file-name name version))
3472 (sha256
3473 (base32
3474 "1k3z2mlhaig5ycapjxwybb19z7ca0q1876i6csfmv2j0hf1hnc0z"))))
3475 (build-system ruby-build-system)
3476 (arguments
3477 (list
3478 #:phases
3479 #~(modify-phases %standard-phases
3480 (add-after 'unpack 'remove-coveralls-dependency
3481 (lambda _
3482 ;; Do not hook the test suite into the online coveralls service.
3483 (substitute* "Gemfile"
3484 ((".*coveralls.*") ""))
3485 (substitute* "spec/helper.rb"
3486 (("require \"coveralls\"") "")
3487 (("Coveralls::SimpleCov::Formatter") ""))))
3488 (add-after 'unpack 'disable-problematic-tests
3489 (lambda _
3490 ;; These tests attempt to check the git repository for
3491 ;; tabs vs spaces, double vs single quotes, etc, and
3492 ;; depend on the git checkout.
3493 (delete-file "spec/quality_spec.rb")
3494 (substitute* "spec/parser/options_spec.rb"
3495 ;; This test fails for unknown reasons (see:
3496 ;; https://github.com/rails/thor/issues/814).
3497 (("it \"raises an error for unknown switches" all)
3498 (string-append "x" all)))))
3499 (replace 'check
3500 (lambda* (#:key tests? #:allow-other-keys)
3501 (when tests?
3502 (invoke "rspec" "spec" )))))))
3503 (native-inputs (list ruby-rspec ruby-simplecov ruby-webmock))
3504 (synopsis "Ruby toolkit for building command-line interfaces")
3505 (description "Thor is a toolkit for building powerful command-line
3506interfaces.")
3507 (home-page "http://whatisthor.com/")
3508 (license license:expat)))
3509
3510(define-public ruby-lumberjack
3511 (package
3512 (name "ruby-lumberjack")
3513 (version "1.0.13")
3514 (source (origin
3515 (method url-fetch)
3516 (uri (rubygems-uri "lumberjack" version))
3517 (sha256
3518 (base32
3519 "06im7gcg42x77yhz2w5da2ly9xz0n0c36y5ks7xs53v0l9g0vf5n"))))
3520 (build-system ruby-build-system)
3521 (native-inputs
3522 (list ruby-rspec ruby-timecop))
3523 (synopsis "Logging utility library for Ruby")
3524 (description "Lumberjack is a simple logging utility that can be a drop in
3525replacement for Logger or ActiveSupport::BufferedLogger. It provides support
3526for automatically rolling log files even with multiple processes writing the
3527same log file.")
3528 (home-page "https://github.com/bdurand/lumberjack")
3529 (license license:expat)))
3530
3531(define-public ruby-rbnacl
3532 (package
3533 (name "ruby-rbnacl")
3534 (version "7.1.1")
3535 (source (origin
3536 (method url-fetch)
3537 (uri (rubygems-uri "rbnacl" version))
3538 (sha256
3539 (base32
3540 "0y8yzianlkc9w6sbqy8iy8l0yym0y6x7p5rjflkfixq76fqmhvzk"))))
3541 (build-system ruby-build-system)
3542 (arguments
3543 (list
3544 #:phases
3545 #~(modify-phases %standard-phases
3546 (add-after 'unpack 'remove-unnecessary-dependencies
3547 (lambda _
3548 ;; Coveralls relates to a network service, and Rubocop to code
3549 ;; linting and both are unnecessary to run the tests
3550 (substitute* "Gemfile"
3551 ((".*rubocop.*")
3552 "\n")
3553 ((".*guard-rspec.*")
3554 "\n")
3555 ((".*coveralls.*")
3556 "\n"))
3557 (substitute* "spec/spec_helper.rb"
3558 (("require \"coveralls\"")
3559 "")
3560 (("Coveralls.wear!")
3561 ""))))
3562 (add-after 'unpack 'use-libsodium-from-store
3563 (lambda* (#:key inputs #:allow-other-keys)
3564 (substitute* '("lib/rbnacl/init.rb"
3565 "lib/rbnacl/sodium.rb")
3566 (("ffi_lib \\[.+\\]")
3567 (string-append "ffi_lib [\""
3568 (assoc-ref inputs "libsodium")
3569 "/lib/libsodium.so" "\"]")))))
3570 ;; Run Rspec directly to avoid the Rubocop dependency in the
3571 ;; Rakefile
3572 (replace 'check
3573 (lambda* (#:key tests? #:allow-other-keys)
3574 (when tests?
3575 (invoke "rspec")))))))
3576 (propagated-inputs (list ruby-ffi))
3577 (inputs (list libsodium))
3578 (native-inputs (list bundler ruby-rspec))
3579 (synopsis "Ruby FFI binding to libsodium")
3580 (description
3581 "This package provides Ruby FFI bindings to the Networking and
3582Cryptography (NaCl) library, also known as libsodium. This provides a
3583high-level toolkit for building cryptographic systems and protocols.")
3584 (home-page "https://github.com/RubyCrypto/rbnacl")
3585 (license license:expat)))
3586
3587(define-public ruby-rbtree
3588 (package
3589 (name "ruby-rbtree")
3590 (version "0.4.6")
3591 (source (origin
3592 (method url-fetch)
3593 (uri (rubygems-uri "rbtree" version))
3594 (sha256
3595 (base32
3596 "1z0h1x7fpkzxamnvbw1nry64qd6n0nqkwprfair29z94kd3a9vhl"))))
3597 (build-system ruby-build-system)
3598 (arguments
3599 (list
3600 #:phases
3601 #~(modify-phases %standard-phases
3602 (add-before 'build 'extconf
3603 (lambda _
3604 (invoke "ruby" "extconf.rb")
3605 (invoke "make" "install" (string-append "prefix=" #$output))))
3606 (replace 'check
3607 (lambda* (#:key tests? #:allow-other-keys)
3608 (when tests?
3609 (invoke "ruby" "-I." "test.rb")))))))
3610 (synopsis "Ruby implementation of a sorted associative collection")
3611 (description
3612 "This package provides a RBTree is a sorted associative collection that
3613is implemented with a Red-Black Tree. It maps keys to values like a Hash, but
3614maintains its elements in ascending key order. The interface is the almost
3615identical to that of Hash.")
3616 (home-page "http://rbtree.rubyforge.org/")
3617 (license license:expat)))
3618
3619(define-public ruby-rgl
3620 (package
3621 (name "ruby-rgl")
3622 (version "0.6.6")
3623 (source (origin
3624 (method url-fetch)
3625 (uri (rubygems-uri "rgl" version))
3626 (sha256
3627 (base32
3628 "0dji1k9knrf8cxm5psd3pgd9i8f7cfq182jwjpi1pwxw15axf496"))))
3629 (build-system ruby-build-system)
3630 (arguments
3631 (list
3632 #:phases
3633 #~(modify-phases %standard-phases
3634 (add-after 'unpack 'remove-unnecessary-dependencies
3635 (lambda _
3636 (substitute* "Gemfile"
3637 ;; Caring about coverage is a not a packager's task but a
3638 ;; developer's
3639 ;;(("gem \"simplecov\"") "")
3640 ;; CodeClimate is an online service, and is unnecessary for
3641 ;; running the tests
3642 (("gem \"codeclimate-test-reporter\", .*") "\n")))))))
3643 (native-inputs (list ruby-test-unit ruby-simplecov ruby-yard graphviz-minimal))
3644 (propagated-inputs (list ruby-pairing-heap ruby-rexml ruby-stream))
3645 (synopsis "Framework for graph data structures and algorithms")
3646 (description "RGL is a framework for graph data structures and algorithms.
3647The design of the library is much influenced by the Boost Graph Library (BGL)
3648which is written in C++.")
3649 (home-page "https://github.com/monora/rgl")
3650 (license license:bsd-2)))
3651
3652(define-public ruby-hkdf
3653 (package
3654 (name "ruby-hkdf")
3655 (version "1.0.0")
3656 (source
3657 (origin
3658 (method git-fetch)
3659 (uri (git-reference
3660 (url "https://github.com/jtdowney/hkdf")
3661 (commit (string-append "v" version))))
3662 (file-name (git-file-name name version))
3663 (sha256
3664 (base32
3665 "1xqwdmxfnhagivwgb5v9ilwpb4jxlsqwj7pnj43d65zzg5m8p9r5"))))
3666 (build-system ruby-build-system)
3667 (arguments
3668 `(#:test-target "default"))
3669 (native-inputs
3670 (list ruby-rspec))
3671 (synopsis "HMAC-based Key Derivation Function")
3672 (description
3673 "This package provides a Ruby implementation of RFC5869: @acronym{HKDF,
3674HMAC-based Extract-and-Expand Key Derivation Function}. The goal of HKDF is to
3675take some source key material and generate suitable cryptographic keys from it.")
3676 (home-page "https://github.com/jtdowney/hkdf")
3677 (license license:expat)))
3678
3679(define-public ruby-nenv
3680 (package
3681 (name "ruby-nenv")
3682 (version "0.3.0")
3683 (source (origin
3684 (method url-fetch)
3685 (uri (rubygems-uri "nenv" version))
3686 (sha256
3687 (base32
3688 "0r97jzknll9bhd8yyg2bngnnkj8rjhal667n7d32h8h7ny7nvpnr"))))
3689 (build-system ruby-build-system)
3690 (arguments
3691 `(#:tests? #f)) ; no tests included
3692 (native-inputs
3693 (list ruby-rspec bundler))
3694 (synopsis "Ruby interface for modifying the environment")
3695 (description "Nenv provides a convenient wrapper for Ruby's ENV to modify
3696and inspect the environment.")
3697 (home-page "https://github.com/e2/nenv")
3698 (license license:expat)))
3699
3700(define-public ruby-ptools
3701 (package
3702 (name "ruby-ptools")
3703 (version "1.5.0")
3704 (source (origin
3705 (method url-fetch)
3706 (uri (rubygems-uri "ptools" version))
3707 (sha256
3708 (base32
3709 "0damllbshkxycrwjv80sz78h76dw7r9z54d17mb5cbha1daq9q2d"))))
3710 (build-system ruby-build-system)
3711 (arguments
3712 (list
3713 #:test-target "spec:all"
3714 #:phases
3715 #~(modify-phases %standard-phases
3716 (add-after 'unpack 'patch
3717 (lambda _
3718 (substitute* "Rakefile"
3719 ;; Don't require rubocop
3720 (("require 'rubocop/rake_task'") "")
3721 (("RuboCop::RakeTask.new") "")
3722 ;; Do not attempt to sign the gem.
3723 (("spec\\.signing_key = .*") ""))
3724
3725 (substitute* "spec/binary_spec.rb"
3726 (("/bin/ls") (which "ls"))
3727 (("/bin/cat") (which "cat"))
3728 (("/bin/chmod") (which "chmod"))
3729 (("/bin/df") (which "df"))))))))
3730 (native-inputs
3731 (list ruby-rspec))
3732 (synopsis "Extra methods for Ruby's @code{File} class")
3733 (description
3734 "The @dfn{ptools} (power tools) library extends Ruby's core @code{File}
3735class with many additional methods modelled after common POSIX tools, such as
3736@code{File.which} for finding executables, @code{File.tail} to print the last
3737lines of a file, @code{File.wc} to count words, and so on.")
3738 (home-page "https://github.com/djberg96/ptools")
3739 (license license:artistic2.0)))
3740
3741(define-public ruby-permutation
3742 (package
3743 (name "ruby-permutation")
3744 (version "0.1.8")
3745 (source (origin
3746 (method url-fetch)
3747 (uri (rubygems-uri "permutation" version))
3748 (sha256
3749 (base32
3750 "13crwk2vfbzv99czva7881027dbcnidihmvx2jc58z2vm3bp9sl8"))))
3751 (build-system ruby-build-system)
3752 (arguments
3753 `(#:phases
3754 (modify-phases %standard-phases
3755 (add-after 'unpack 'fix-rakefile
3756 (lambda _
3757 (substitute* "Rakefile"
3758 (("require 'rake/gempackagetask'")
3759 "require 'rubygems/package_task'")
3760 (("include Config") ""))))
3761 (replace 'check
3762 (lambda _
3763 (invoke "ruby" "-Ilib" "test/test.rb"))))))
3764 (synopsis "Library to perform operations with sequence permutations")
3765 (description "This package provides a Ruby library to perform different
3766operations with permutations of sequences, such as strings and arrays.")
3767 (home-page "https://flori.github.io/permutation")
3768 (license license:gpl2))) ; GPL 2 only
3769
3770(define-public ruby-shellany
3771 (package
3772 (name "ruby-shellany")
3773 (version "0.0.1")
3774 (source (origin
3775 (method url-fetch)
3776 (uri (rubygems-uri "shellany" version))
3777 (sha256
3778 (base32
3779 "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf"))))
3780 (build-system ruby-build-system)
3781 (arguments
3782 `(#:test-target "default"
3783 #:phases
3784 (modify-phases %standard-phases
3785 (add-after 'unpack 'fix-version-test
3786 (lambda _
3787 (substitute* "spec/shellany_spec.rb"
3788 (("^RSpec") "require \"shellany\"\nRSpec")))))))
3789 (native-inputs
3790 (list ruby-rspec ruby-nenv bundler))
3791 (synopsis "Capture command output")
3792 (description "Shellany is a Ruby library providing functions to capture
3793the output produced by running shell commands.")
3794 (home-page "https://rubygems.org/gems/shellany")
3795 (license license:expat)))
3796
3797(define-public ruby-notiffany
3798 (package
3799 (name "ruby-notiffany")
3800 (version "0.1.3")
3801 (source (origin
3802 (method url-fetch)
3803 (uri (rubygems-uri "notiffany" version))
3804 (sha256
3805 (base32
3806 "0f47h3bmg1apr4x51szqfv3rh2vq58z3grh4w02cp3bzbdh6jxnk"))))
3807 (build-system ruby-build-system)
3808 ;; Tests are not included in the gem.
3809 (arguments `(#:tests? #f))
3810 (propagated-inputs
3811 (list ruby-shellany ruby-nenv))
3812 (native-inputs
3813 (list bundler))
3814 (synopsis "Wrapper library for notification libraries")
3815 (description "Notiffany is a Ruby wrapper library for notification
3816libraries such as Libnotify.")
3817 (home-page "https://github.com/guard/notiffany")
3818 (license license:expat)))
3819
3820(define-public ruby-forking-test-runner
3821 (package
3822 (name "ruby-forking-test-runner")
3823 (version "1.6.0")
3824 (home-page "https://github.com/grosser/forking_test_runner")
3825 (source (origin
3826 (method git-fetch)
3827 (uri (git-reference (url home-page)
3828 (commit (string-append "v" version))))
3829 (file-name (git-file-name name version))
3830 (sha256
3831 (base32
3832 "1mrglzkj2nrgisccf2f30zbfmcs0awv1g3lw994b2az90fl39x8m"))))
3833 (build-system ruby-build-system)
3834 (arguments
3835 '(#:test-target "spec"
3836 ;; FIXME: ActiveRecord depends on sqlite3 1.3.6, but Guix has
3837 ;; 1.4.1, which in turn breaks the tests that use ActiveRecord.
3838 #:tests? #f
3839 #:phases (modify-phases %standard-phases
3840 (replace 'replace-git-ls-files
3841 (lambda _
3842 (substitute* "forking_test_runner.gemspec"
3843 (("`git ls-files lib/ bin/ MIT-LICENSE`")
3844 "`find lib/ bin/ MIT-LICENSE -type f | sort`"))))
3845 (add-before 'check 'remove-version-constraints
3846 (lambda _
3847 ;; Ignore hard coded version constraints for the tests.
3848 (delete-file "Gemfile.lock")))
3849 (add-before 'check 'set-HOME
3850 (lambda _
3851 ;; Many tests invoke Bundler, and fails when Bundler
3852 ;; warns that /homeless-shelter does not exist.
3853 (setenv "HOME" "/tmp"))))))
3854 (native-inputs
3855 (list ruby-activerecord ruby-bump ruby-rspec ruby-sqlite3 ruby-wwtd))
3856 (propagated-inputs
3857 (list ruby-parallel-tests))
3858 (synopsis "Run every test in a fork")
3859 (description
3860 "This package is a wrapper around @code{parallel_tests} that runs every
3861test in a fork to avoid pollution and get clean output per test.")
3862 (license license:expat)))
3863
3864(define-public ruby-formatador
3865 (package
3866 (name "ruby-formatador")
3867 (version "0.2.5")
3868 (source (origin
3869 (method url-fetch)
3870 (uri (rubygems-uri "formatador" version))
3871 (sha256
3872 (base32
3873 "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0"))))
3874 (build-system ruby-build-system)
3875 ;; Circular dependency: Tests require ruby-shindo, which requires
3876 ;; ruby-formatador at runtime.
3877 (arguments `(#:tests? #f))
3878 (synopsis "Ruby library to format text on stdout")
3879 (description "Formatador is a Ruby library to format text printed to the
3880standard output stream.")
3881 (home-page "https://github.com/geemus/formatador")
3882 (license license:expat)))
3883
3884(define-public ruby-fuubar
3885 (package
3886 (name "ruby-fuubar")
3887 (version "2.3.2")
3888 (source
3889 (origin
3890 ;; Fetch from the git repository, as the gem package doesn't include
3891 ;; the tests.
3892 (method git-fetch)
3893 (uri (git-reference
3894 (url "https://github.com/thekompanee/fuubar")
3895 (commit (string-append "releases/v" version))))
3896 (file-name (git-file-name name version))
3897 (sha256
3898 (base32
3899 "0jm1x2xp13csbnadixaikj7mlkp5yk4byx51npm56zi13izp7259"))))
3900 (build-system ruby-build-system)
3901 (arguments
3902 '(;; TODO: Some tests fail, unsure why.
3903 ;; 21 examples, 7 failures
3904 #:tests? #f
3905 #:phases
3906 (modify-phases %standard-phases
3907 (add-before 'build 'delete-certificate
3908 (lambda _
3909 ;; Remove 's.cert_chain' as we do not build with a private key
3910 (substitute* "fuubar.gemspec"
3911 ((".*cert_chain.*") "")
3912 ((".*signing_key.*") ""))))
3913 (replace 'check
3914 (lambda* (#:key tests? #:allow-other-keys)
3915 (when tests?
3916 (invoke "rspec")))))))
3917 (native-inputs
3918 (list bundler))
3919 (propagated-inputs
3920 (list ruby-rspec-core ruby-progressbar))
3921 (synopsis "Fuubar is an RSpec formatter that uses a progress bar")
3922 (description
3923 "Fuubar is an RSpec formatter that uses a progress bar instead of a
3924string of letters and dots as feedback. It also stops on the first test
3925failure.")
3926 (home-page "https://github.com/thekompanee/fuubar")
3927 (license license:expat)))
3928
3929(define-public ruby-haml
3930 (package
3931 (name "ruby-haml")
3932 (version "5.0.4")
3933 (source
3934 (origin
3935 (method url-fetch)
3936 (uri (rubygems-uri "haml" version))
3937 (sha256
3938 (base32
3939 "1q0a9fvqh8kn6wm97fcks6qzbjd400bv8bx748w8v87m7p4klhac"))))
3940 (build-system ruby-build-system)
3941 (arguments
3942 '(#:tests? #f)) ; No included tests
3943 (propagated-inputs
3944 (list ruby-tilt ruby-temple))
3945 (synopsis "Haml is a Ruby library to generate HTML documents")
3946 (description
3947 "@acronym{Haml, HTML Abstraction Markup Language} is a layer on top of
3948HTML or XML that is designed to express the structure of documents using
3949indentation rather than closing tags. It was originally envisioned as a
3950plugin for Ruby on Rails, but it can function as a stand-alone templating
3951engine.")
3952 (home-page "https://haml.info/")
3953 (license license:expat)))
3954
3955(define-public ruby-hamster
3956 (package
3957 (name "ruby-hamster")
3958 (version "3.0.0")
3959 (source
3960 (origin
3961 (method url-fetch)
3962 (uri (rubygems-uri "hamster" version))
3963 (sha256
3964 (base32
3965 "1n1lsh96vnyc1pnzyd30f9prcsclmvmkdb3nm5aahnyizyiy6lar"))))
3966 (build-system ruby-build-system)
3967 (arguments
3968 (list
3969 ;; Only supports Ruby 2 currently
3970 #:ruby ruby-2.7
3971 #:phases
3972 #~(modify-phases %standard-phases
3973 (add-after 'unpack 'remove-unnecessary-dependencies
3974 (lambda _
3975 ;; pry is a debugging tool, and is unnecessary when running the
3976 ;; tests
3977 (substitute* "spec/lib/hamster/vector/insert_spec.rb"
3978 (("require 'pry'") ""))
3979 (substitute* "spec/spec_helper.rb"
3980 (("require \"pry\"") "")
3981 ;; CodeClimate is an online service, and is unnecessary for
3982 ;; running the tests
3983 (("require \"codeclimate-test-reporter\"") "")
3984 (("CodeClimate.*\n") ""))))
3985 ;; No Rakefile is included, so run rspec directly.
3986 (replace 'check
3987 (lambda* (#:key tests? #:allow-other-keys)
3988 (when tests?
3989 (invoke "ruby" (which "rspec"))))))))
3990 (propagated-inputs
3991 (list ruby-concurrent))
3992 (native-inputs
3993 (list ruby-rspec))
3994 (synopsis "Efficient, immutable, thread-safe collection classes for Ruby")
3995 (description
3996 "Hamster provides 6 persistent data structures: @code{Hash}, @code{Vector},
3997@code{Set}, @code{SortedSet}, @code{List}, and @code{Deque} (which works as an
3998immutable queue or stack).")
3999 (home-page "https://github.com/hamstergem/hamster")
4000 (license license:expat)))
4001
4002(define-public ruby-hashdiff
4003 (package
4004 (name "ruby-hashdiff")
4005 (version "1.0.1")
4006 (source
4007 (origin
4008 (method url-fetch)
4009 (uri (rubygems-uri "hashdiff" version))
4010 (sha256
4011 (base32
4012 "1nynpl0xbj0nphqx1qlmyggq58ms1phf5i03hk64wcc0a17x1m1c"))))
4013 (build-system ruby-build-system)
4014 (arguments
4015 '(#:phases
4016 (modify-phases %standard-phases
4017 ;; Run tests directly via rspec to avoid depending on rubocop.
4018 (replace 'check
4019 (lambda* (#:key tests? #:allow-other-keys)
4020 (when tests?
4021 (invoke "rspec")))))))
4022 (native-inputs
4023 (list bundler ruby-rspec-2))
4024 (synopsis "HashDiff computes the smallest difference between two hashes")
4025 (description
4026 "HashDiff is a Ruby library to compute the smallest difference between
4027two hashes.")
4028 (home-page "https://github.com/liufengyun/hashdiff")
4029 (license license:expat)))
4030
4031(define-public ruby-hydra-minimal
4032 ;; No releases yet.
4033 (let ((commit "a4cab705a8a281e4356cb6a05a1946443ad9d53b")
4034 (revision "1"))
4035 (package
4036 (name "ruby-hydra-minimal")
4037 (version (git-version "0.0.0" revision commit))
4038 (home-page "https://github.com/hyphenation/hydra")
4039 (source (origin
4040 (method git-fetch)
4041 (uri (git-reference (url home-page) (commit commit)))
4042 (file-name (git-file-name name version))
4043 ;; byebug is a non-essential debugging utility that brings in
4044 ;; many dependencies.
4045 (patches (search-patches "ruby-hydra-minimal-no-byebug.patch"))
4046 (sha256
4047 (base32
4048 "1swzab7i4cqk1bck7p5m3bh526jh0v6m9qq720r3270zbjc8x8z3"))))
4049 (build-system ruby-build-system)
4050 (arguments
4051 ;; Avoid rspec dependency.
4052 '(#:tests? #f))
4053 (synopsis "Ruby hyphenation patterns")
4054 (description
4055 "ruby-hydra-minimal is a Ruby library for working with hyphenation patterns.
4056It is a low-dependency variant of ruby-hydra.")
4057 (license license:expat))))
4058
4059;; Pinned variant for use by texlive
4060(define-public ruby-hydra-minimal/pinned
4061 (let ((commit "5abfa378743756ae4d9306cc134bcc482f5c9525")
4062 (revision "0"))
4063 (hidden-package
4064 (package
4065 (inherit ruby-hydra-minimal)
4066 (version (git-version "0.0" revision commit))
4067 (source (origin
4068 (method git-fetch)
4069 (uri (git-reference
4070 (url "https://github.com/hyphenation/hydra")
4071 (commit commit)))
4072 (file-name (git-file-name "ruby-hydra-minimal" version))
4073 ;; byebug is a non-essential debugging utility that brings in
4074 ;; many dependencies.
4075 (patches (search-patches "ruby-hydra-minimal-no-byebug.patch"))
4076 (sha256
4077 (base32
4078 "1cik398l2765y3d9sdhjzki3303hkry58ac6jlkiy7iy62nm529f"))))
4079 (arguments
4080 (list
4081 #:ruby ruby-2.7
4082 #:tests? #f))))))
4083
4084(define-public ruby-hydra
4085 (package
4086 (inherit ruby-hydra-minimal)
4087 (name "ruby-hydra")
4088 (arguments
4089 (list
4090 #:phases
4091 #~(modify-phases %standard-phases
4092 (add-after 'unpack 'make-files-writable
4093 (lambda _
4094 (for-each make-file-writable (find-files "."))))
4095 (replace 'check
4096 (lambda* (#:key tests? #:allow-other-keys)
4097 (when tests?
4098 (invoke "rspec")))))))
4099 (native-inputs
4100 (list ruby-rspec))
4101 (description
4102 "ruby-hydra is a Ruby library for working with hyphenation patterns.")))
4103
4104(define-public ruby-shindo
4105 (package
4106 (name "ruby-shindo")
4107 (version "0.3.11")
4108 (source (origin
4109 (method url-fetch)
4110 (uri (rubygems-uri "shindo" version))
4111 (sha256
4112 (base32
4113 "1wccg3a4g3agfyszipkdnbcgsazcfwdbz1gv51q8m17m9plvpzdp"))))
4114 (build-system ruby-build-system)
4115 (arguments
4116 (list
4117 #:test-target "tests"
4118 #:phases
4119 #~(modify-phases %standard-phases
4120 (add-after 'unpack 'fix-tests
4121 (lambda _
4122 (substitute* "tests/tests_helper.rb"
4123 (("-rrubygems") ""))))
4124 ;; Move the 'check phase to after 'install, to use installed shindo.
4125 (delete 'check)
4126 (add-after 'install 'configure-tests
4127 (lambda* (#:key tests? #:allow-other-keys)
4128 (when tests?
4129 (setenv "GEM_PATH"
4130 (string-append
4131 (getenv "GEM_PATH") ":"
4132 #$output "/lib/ruby/vendor_ruby"))
4133 (setenv "PATH"
4134 (string-append
4135 (getenv "PATH") ":" #$output "/bin")))))
4136 (add-after 'configure-tests 'check
4137 (assoc-ref %standard-phases 'check)))))
4138 (propagated-inputs
4139 (list ruby-formatador))
4140 (synopsis "Simple depth first Ruby testing")
4141 (description "Shindo is a simple depth first testing library for Ruby.")
4142 (home-page "https://github.com/geemus/shindo")
4143 (license license:expat)))
4144
4145(define-public ruby-rubygems-tasks
4146 (package
4147 (name "ruby-rubygems-tasks")
4148 (version "0.2.5")
4149 (source (origin
4150 (method url-fetch)
4151 (uri (rubygems-uri "rubygems-tasks" version))
4152 (sha256
4153 (base32
4154 "1x3sz3n2dlknd3v7w1mrq6f0ag6pwzhjvg7z29p75w3p42ma1gbx"))))
4155 (build-system ruby-build-system)
4156 ;; Tests need Internet access.
4157 (arguments `(#:tests? #f))
4158 (synopsis "Rake tasks for managing and releasing Ruby Gems")
4159 (description "Rubygems-task provides Rake tasks for managing and releasing
4160Ruby Gems.")
4161 (home-page "https://github.com/postmodern/rubygems-tasks")
4162 (license license:expat)))
4163
4164(define-public ruby-rubyzip
4165 (package
4166 (name "ruby-rubyzip")
4167 (version "2.3.2")
4168 (source (origin
4169 (method git-fetch)
4170 (uri (git-reference
4171 (url "https://github.com/rubyzip/rubyzip")
4172 (commit (string-append "v" version))))
4173 (file-name (git-file-name name version))
4174 (sha256
4175 (base32
4176 "03p8c990n6c1r4g64w0vv7z2iaswisl07l2f1lbh1s78cvmlmfxx"))))
4177 (build-system ruby-build-system)
4178 (arguments
4179 '(#:phases
4180 (modify-phases %standard-phases
4181 (add-after 'unpack 'disable-rubocop
4182 (lambda _
4183 (substitute* "Rakefile"
4184 (("require 'rubocop/rake_task'") "")
4185 (("RuboCop::RakeTask.new") ""))))
4186 (add-before 'check 'patch-tests
4187 (lambda* (#:key inputs #:allow-other-keys)
4188 (substitute* "test/gentestfiles.rb"
4189 (("/usr/bin/zip") (which "zip")))))
4190 (add-after 'patch-source-shebangs 'unpatch-some-source-shebangs
4191 (lambda _
4192 ;; The tests compare zipped files with data test files; since the
4193 ;; zip files do not have their shebangs patched, the data files
4194 ;; compared with their extracted version must also be left
4195 ;; un-patched.
4196 (substitute* (find-files "test/data" "\\.(txt|rb)$")
4197 (((which "ruby"))
4198 "/usr/bin/env ruby")))))))
4199 (native-inputs
4200 (list bundler ruby-simplecov zip unzip))
4201 (synopsis "Ruby module is for reading and writing zip files")
4202 (description
4203 "The rubyzip module provides ways to read from and create zip files.")
4204 (home-page "https://github.com/rubyzip/rubyzip")
4205 (license license:bsd-2)))
4206
4207(define-public ruby-silent-stream
4208 (package
4209 (name "ruby-silent-stream")
4210 (version "1.0.6")
4211 (source (origin
4212 (method url-fetch)
4213 (uri (rubygems-uri "silent_stream" version))
4214 (sha256
4215 (base32
4216 "10381fpvjzfjvhgfyv700607fpa29firgf52w5w5536m4fh6x63m"))))
4217 (build-system ruby-build-system)
4218 (synopsis "ActiveSupport stream silencing without ActiveSupport")
4219 (description "SilentStream is an extraction of some parts of
4220ActiveSupport's Kernel Reporting Core Extensions around silencing IO
4221streams.")
4222 (home-page "https://github.com/pboling/silent_stream")
4223 (license license:expat)))
4224
4225(define-public ruby-simplecov-html
4226 (package
4227 (name "ruby-simplecov-html")
4228 (version "0.12.3")
4229 (source (origin
4230 (method url-fetch)
4231 (uri (rubygems-uri "simplecov-html" version))
4232 (sha256
4233 (base32
4234 "0yx01bxa8pbf9ip4hagqkp5m0mqfnwnw2xk8kjraiywz4lrss6jb"))))
4235 (build-system ruby-build-system)
4236 (arguments `(#:tests? #f)) ; there are no tests
4237 (native-inputs
4238 (list bundler))
4239 (synopsis "Default HTML formatter for SimpleCov code coverage tool")
4240 (description "This package provides the default HTML formatter for
4241the SimpleCov code coverage tool for Ruby version 1.9 and above.")
4242 (home-page "https://github.com/simplecov-ruby/simplecov-html")
4243 (license license:expat)))
4244
4245(define-public ruby-simplecov-json-formatter
4246 (package
4247 (name "ruby-simplecov-json-formatter")
4248 (version "0.1.4")
4249 (source (origin
4250 (method url-fetch)
4251 (uri (rubygems-uri "simplecov_json_formatter" version))
4252 (sha256
4253 (base32
4254 "0a5l0733hj7sk51j81ykfmlk2vd5vaijlq9d5fn165yyx3xii52j"))))
4255 (build-system ruby-build-system)
4256 ;; The test suite is disabled because it requires simplecov, which
4257 ;; requires this, introducing a dependency cycle.
4258 (arguments (list #:tests? #f))
4259 (synopsis "JSON formatter for SimpleCov")
4260 (description "This package provides a JSON formatter for SimpleCov, the
4261Ruby code coverage tool.")
4262 (home-page
4263 "https://github.com/codeclimate-community/simplecov_json_formatter")
4264 (license license:expat)))
4265
4266(define-public ruby-simplecov
4267 (package
4268 (name "ruby-simplecov")
4269 (version "0.22.0")
4270 (source (origin
4271 (method url-fetch)
4272 (uri (rubygems-uri "simplecov" version))
4273 (sha256
4274 (base32
4275 "198kcbrjxhhzca19yrdcd6jjj9sb51aaic3b0sc3pwjghg3j49py"))))
4276 (build-system ruby-build-system)
4277 ;; Simplecov depends on rubocop for code style checking at build time.
4278 ;; Rubocop needs simplecov at build time.
4279 (arguments `(#:tests? #f))
4280 (propagated-inputs
4281 (list ruby-json
4282 ruby-docile
4283 ruby-simplecov-html
4284 ruby-simplecov-json-formatter))
4285 (synopsis "Code coverage framework for Ruby")
4286 (description "SimpleCov is a code coverage framework for Ruby with a
4287powerful configuration library and automatic merging of coverage across test
4288suites.")
4289 (home-page "https://github.com/simplecov-ruby/simplecov")
4290 (license license:expat)))
4291
4292(define-public ruby-simplecov-lcov
4293 (package
4294 (name "ruby-simplecov-lcov")
4295 (version "0.8.0")
4296 (source (origin
4297 (method url-fetch)
4298 (uri (rubygems-uri "simplecov-lcov" version))
4299 (sha256
4300 (base32
4301 "1h8kswnshgb9zidvc88f4zjy4gflgz3854sx9wrw8ppgnwfg6581"))))
4302 (build-system ruby-build-system)
4303 ;; The test suite fails half of its tests; it seems to rely on older
4304 ;; versions of simplecov, rspec, possibly others (see:
4305 ;; https://github.com/fortissimo1997/simplecov-lcov/issues/29).
4306 (arguments (list #:tests? #f
4307 #:test-target "spec"))
4308 (native-inputs
4309 (list ruby-activesupport
4310 ruby-coveralls
4311 ruby-rspec
4312 ruby-simplecov))
4313 (synopsis "SimpleCov formatter to generate a lcov style coverage")
4314 (description "This package provides a SimpleCov formatter to generate a
4315lcov-style coverage report.")
4316 (home-page "https://github.com/fortissimo1997/simplecov-lcov")
4317 (license license:expat)))
4318
4319(define-public ruby-snaky-hash
4320 (package
4321 (name "ruby-snaky-hash")
4322 (version "2.0.1")
4323 (source (origin
4324 (method git-fetch)
4325 (uri (git-reference ;for tests
4326 (url "https://gitlab.com/oauth-xx/snaky_hash")
4327 (commit (string-append "v" version))))
4328 (file-name (git-file-name name version))
4329 (sha256
4330 (base32
4331 "0zmixxzi2g2d75zii65bq037j4g67p25l6aqddbmmwizspsp5az6"))))
4332 (build-system ruby-build-system)
4333 (arguments
4334 (list #:phases #~(modify-phases %standard-phases
4335 (add-after 'unpack 'relax-requirements
4336 (lambda _
4337 (substitute* "Gemfile"
4338 (("^linting = .*")
4339 "linting = false\n")
4340 (("^coverage = .*")
4341 "coverage = false\n")
4342 (("^debug = .*")
4343 "debug = false\n"))
4344 (substitute* "spec/spec_helper.rb"
4345 (("^RUN_COVERAGE = .*")
4346 "RUN_COVERAGE = false\n")
4347 (("^ALL_FORMATTERS = .*")
4348 "ALL_FORMATTERS = false\n"))))
4349 (add-before 'build 'drop-signing-key-requirement
4350 (lambda _
4351 (substitute* "snaky_hash.gemspec"
4352 (("spec.signing_key =.*")
4353 "spec.signing_key = nil")))))))
4354 (native-inputs (list ruby-rspec ruby-rspec-block-is-expected))
4355 (propagated-inputs (list ruby-hashie ruby-version-gem))
4356 (synopsis "Hash keys and look-ups normalization Ruby library")
4357 (description "The SnakyHash Ruby library provides classes for normalizing
4358hash keys and look-ups, and a pseudo-object interface.")
4359 (home-page "https://gitlab.com/oauth-xx/snaky_hash")
4360 (license license:expat)))
4361
4362(define-public ruby-useragent
4363 (package
4364 (name "ruby-useragent")
4365 (version "0.16.10")
4366 (source (origin
4367 (method url-fetch)
4368 (uri (rubygems-uri "useragent" version))
4369 (sha256
4370 (base32
4371 "1fv5kvq494swy0p17h9qya9r50w15xsi9zmvhzb8gh55kq6ki50p"))))
4372 (build-system ruby-build-system)
4373 (arguments
4374 '(#:tests? #f)) ; no test suite
4375 (synopsis "HTTP user agent parser for Ruby")
4376 (description "UserAgent is a Ruby library that parses and compares HTTP
4377User Agents.")
4378 (home-page "https://github.com/gshutler/useragent")
4379 (license license:expat)))
4380
4381(define-public ruby-backports
4382 (package
4383 (name "ruby-backports")
4384 (version "3.11.4")
4385 (source
4386 (origin
4387 (method url-fetch)
4388 (uri (rubygems-uri "backports" version))
4389 (sha256
4390 (base32
4391 "1hshjxww2h7s0dk57njrygq4zpp0nlqrjfya7zwm27iq3rhc3y8g"))))
4392 (build-system ruby-build-system)
4393 (arguments
4394 '(;; TODO: This should be default, but there is one test failure
4395 #:test-target "all_spec"))
4396 (native-inputs
4397 (list ruby-mspec ruby-activesupport))
4398 (synopsis "Backports of the features in newer Ruby versions")
4399 (description
4400 "Backports enables more compatibility across Ruby versions by providing
4401backports of some features.")
4402 (home-page "https://github.com/marcandre/backports")
4403 (license license:expat)))
4404
4405(define-public ruby-bacon
4406 (package
4407 (name "ruby-bacon")
4408 (version "1.2.0")
4409 (source (origin
4410 (method url-fetch)
4411 (uri (rubygems-uri "bacon" version))
4412 (sha256
4413 (base32
4414 "1f06gdj77bmwzc1k5iragl1595hbn67yc7sqvs56ca8plrr2vmai"))))
4415 (build-system ruby-build-system)
4416 (synopsis "Small RSpec clone")
4417 (description "Bacon is a small RSpec clone providing all essential
4418features.")
4419 (home-page "https://github.com/chneukirchen/bacon")
4420 (license license:expat)))
4421
4422(define-public ruby-bacon-bits
4423 (package
4424 (name "ruby-bacon-bits")
4425 (version "0.1.0")
4426 (source
4427 (origin
4428 (method url-fetch)
4429 (uri (rubygems-uri "bacon-bits" version))
4430 (sha256
4431 (base32
4432 "1ghpj8ja94lhi8rgi872hqk4fd2amz2k7g9znd64z5dj7v6l0dmx"))))
4433 (build-system ruby-build-system)
4434 (arguments
4435 ;; No tests
4436 '(#:tests? #f))
4437 (propagated-inputs (list ruby-bacon))
4438 (synopsis "Extensions to Bacon, for disabling tests, before and after
4439blocks and more")
4440 (description
4441 "This extends the bacon testing framework with useful extensions to
4442disable tests, have before and after blocks that run once and more.")
4443 (home-page "https://github.com/cldwalker/bacon-bits")
4444 (license license:expat)))
4445
4446(define-public ruby-bacon-colored-output
4447 (package
4448 (name "ruby-bacon-colored-output")
4449 (version "1.1.1")
4450 (source
4451 (origin
4452 (method url-fetch)
4453 (uri (rubygems-uri "bacon-colored_output" version))
4454 (sha256
4455 (base32
4456 "1znyh3vkfdlmf19p3k4zip88ibym41dn5g4p4n5hmks2iznb7qpx"))))
4457 (build-system ruby-build-system)
4458 (arguments
4459 '(;; No included tests
4460 #:tests? #f))
4461 (propagated-inputs
4462 (list ruby-bacon))
4463 (synopsis "Colored output for Bacon test framework")
4464 (description
4465 "This package adds color through ANSI escape codes to Bacon test
4466output.")
4467 (home-page "https://github.com/whitequark/bacon-colored_output")
4468 (license license:expat)))
4469
4470(define-public ruby-bake
4471 (package
4472 (name "ruby-bake")
4473 (version "0.18.2")
4474 (source (origin
4475 (method git-fetch) ;for tests
4476 (uri (git-reference
4477 (url "https://github.com/ioquatix/bake")
4478 (commit (string-append "v" version))))
4479 (file-name (git-file-name name version))
4480 (sha256
4481 (base32
4482 "19yi1fxzz9n580gig3p3j6nxbgcfcassa6b0q07jkqrzxdqn7xhn"))))
4483 (build-system ruby-build-system)
4484 (arguments
4485 (list #:phases
4486 #~(modify-phases %standard-phases
4487 (add-after 'unpack 'sanitize-dependencies
4488 (lambda _
4489 ;; These dependencies are not needed to build and run tests
4490 ;; and contain circular dependencies.
4491 (substitute* "gems.rb"
4492 ((".*'bake-modernize'.*") "")
4493 ((".*'bake-gem'.*") "")
4494 ((".*'bake-github-pages'.*") "")
4495 ((".*'utopia-project'.*") ""))))
4496 (add-before 'build 'drop-signing-key-requirement
4497 (lambda _
4498 (substitute* "bake.gemspec"
4499 (("spec.signing_key =.*")
4500 "spec.signing_key = nil"))))
4501 (replace 'check
4502 (lambda* (#:key tests? #:allow-other-keys)
4503 (when tests?
4504 (invoke "rspec")))))))
4505 (native-inputs (list ruby-covered ruby-rspec))
4506 (propagated-inputs (list ruby-samovar))
4507 (synopsis "Replacement for rake with a simpler syntax")
4508 (description "Bake is a task execution tool, inspired by Rake, but
4509codifying many of the use cases which are typically implemented in an ad-hoc
4510manner.")
4511 (home-page "https://github.com/ioquatix/bake")
4512 (license license:expat)))
4513
4514(define-public ruby-bake-test
4515 (package
4516 (name "ruby-bake-test")
4517 (version "0.2.0")
4518 (source (origin
4519 (method url-fetch)
4520 (uri (rubygems-uri "bake-test" version))
4521 (sha256
4522 (base32
4523 "1p6kfpncj0s4zyynrrq6c735jvh0dnwyv7kfqym4rpyka4f85qdp"))))
4524 (build-system ruby-build-system)
4525 ;; XXX: Disable the test suite to avoid a circular dependency with
4526 ;; ruby-sus.
4527 (arguments (list #:tests? #f))
4528 (propagated-inputs (list ruby-bake))
4529 (synopsis "Test suite automatic runner for Ruby")
4530 (description "@command{bake-test} automatically discovers how to run local
4531test suites for Ruby projects. It supports @command{rspec}, @command{sus}, as
4532well as @samp{rake}.")
4533 (home-page "https://github.com/ioquatix/bake-test")
4534 (license license:expat)))
4535
4536(define-public ruby-bake-test-external
4537 (package
4538 (name "ruby-bake-test-external")
4539 (version "0.3.2")
4540 (source (origin
4541 (method url-fetch)
4542 (uri (rubygems-uri "bake-test-external" version))
4543 (sha256
4544 (base32
4545 "0749xc7jkz1c5gsq1giwhrqy6s6xqm48bdvs414372881wki2jmh"))))
4546 (build-system ruby-build-system)
4547 ;; The test suite relies on git and network access to clone external
4548 ;; repositories.
4549 (arguments (list #:tests? #f))
4550 (propagated-inputs (list ruby-bake))
4551 (synopsis "Continuous integration extension for Bake")
4552 (description "Bake Test External adds a @samp{test:external} action to the
4553@command{bake} command to run the test suites of dependent projects to check
4554for breakage.")
4555 (home-page "https://github.com/ioquatix/bake-test-external")
4556 (license license:expat)))
4557
4558(define-public ruby-connection-pool
4559 (package
4560 (name "ruby-connection-pool")
4561 (version "2.4.1")
4562 (source (origin
4563 (method git-fetch)
4564 (uri (git-reference
4565 (url "https://github.com/mperham/connection_pool")
4566 (commit (string-append "v" version))))
4567 (file-name (git-file-name name version))
4568 (sha256
4569 (base32
4570 "1iijshb1n9xl5knvpzzx0vqlw7v7mskiw1cpfj1cmdmssavyhsx5"))))
4571 (build-system ruby-build-system)
4572 (arguments
4573 (list
4574 #:phases
4575 #~(modify-phases %standard-phases
4576 (add-after 'unpack 'patch
4577 (lambda _
4578 (substitute* "Rakefile"
4579 (("require \"standard/rake\"") "")
4580 ((":\"standard:fix\",") "")))))))
4581 (native-inputs
4582 (list bundler))
4583 (synopsis "Generic connection pool for Ruby")
4584 (description "Connection_pool provides a generic connection pooling
4585interface for Ruby programs.")
4586 (home-page "https://github.com/mperham/connection_pool")
4587 (license license:expat)))
4588
4589(define-public ruby-fast-gettext
4590 (package
4591 (name "ruby-fast-gettext")
4592 (version "4.1.0")
4593 (home-page "https://github.com/grosser/fast_gettext")
4594 (source (origin
4595 (method git-fetch)
4596 (uri (git-reference (url home-page)
4597 (commit (string-append "v" version))))
4598 (file-name (git-file-name name version))
4599 (sha256
4600 (base32
4601 "04p9s0r67xgvckab9ydb3fbnrc7g20p5c05z2zsacynlkp9x5jp9"))))
4602 (build-system ruby-build-system)
4603 (arguments
4604 (list
4605 #:test-target "spec"
4606 #:phases
4607 #~(modify-phases %standard-phases
4608 (add-before 'check 'remove-version-constraints
4609 (lambda _
4610 (delete-file "Gemfile.lock"))))))
4611 (native-inputs
4612 (list ;; For tests.
4613 ruby-activerecord
4614 ruby-activesupport
4615 ruby-bump
4616 ruby-forking-test-runner
4617 ruby-i18n
4618 ruby-rubocop
4619 ruby-rubocop-packaging
4620 ruby-rspec
4621 ruby-single-cov
4622 ruby-sqlite3
4623 ruby-wwtd))
4624 (synopsis "Fast implementation of @code{GetText}")
4625 (description
4626 "This package provides an alternative implementation of the Ruby
4627@code{GetText} library that is approximately 12x faster yet thread safe.")
4628 ;; Some parts are covered by the Ruby license, see file headers.
4629 (license (list license:expat license:ruby))))
4630
4631(define-public ruby-fiber-local
4632 (package
4633 (name "ruby-fiber-local")
4634 (version "1.0.0")
4635 (source (origin
4636 (method git-fetch)
4637 (uri (git-reference
4638 (url "https://github.com/socketry/fiber-local")
4639 (commit (string-append "v" version))))
4640 (file-name (git-file-name name version))
4641 (sha256
4642 (base32
4643 "0pp5b81h0lysdnphgprkixh1az0fkrgir5sbcp0mm8arxf3f8m90"))))
4644 (build-system ruby-build-system)
4645 (arguments
4646 (list #:phases
4647 #~(modify-phases %standard-phases
4648 (add-after 'extract-gemspec 'sanitize-dependencies
4649 (lambda _
4650 ;; This pulls in extraneous maintenance dependencies.
4651 (delete-file "gems.rb")
4652 ;; Depending on ruby-covered would introduce a dependency
4653 ;; cycle with it.
4654 (substitute* '("fiber-local.gemspec" "spec/spec_helper.rb")
4655 ((".*covered.*") ""))))
4656 (replace 'check
4657 (lambda* (#:key tests? #:allow-other-keys)
4658 (when tests?
4659 (invoke "rspec")))))))
4660 (native-inputs (list ruby-rspec))
4661 (synopsis "Ruby module to simplify fiber-local state management")
4662 (description "This package provides a class-level mixin to make managing
4663fiber-local state easy. It provides easy access to a fiber-local state from a
4664fiber, and defaults to a shared thread-local state.")
4665 (home-page "https://github.com/socketry/fiber-local")
4666 (license license:expat)))
4667
4668(define-public ruby-flores
4669 (let ((commit "92fded00b04b1e3d308edb7440d7b7ab2c89ab5e")
4670 (revision "0"))
4671 (package
4672 (name "ruby-flores")
4673 (version (git-version "0.0.8" revision commit))
4674 (source
4675 (origin
4676 (method git-fetch)
4677 (uri (git-reference
4678 (url "https://github.com/jordansissel/ruby-flores")
4679 (commit commit)))
4680 (sha256
4681 (base32 "0jvnw0jli2zzxklfk751vfbi4acf9lijppk67346j3b2qxqi8xms"))
4682 (patches
4683 (search-patches "ruby-flores-fix-deprecations.patch"))))
4684 (build-system ruby-build-system)
4685 (arguments
4686 (list #:phases
4687 #~(modify-phases %standard-phases
4688 (add-after 'unpack 'fix-gemspec
4689 (lambda _
4690 (substitute* "flores.gemspec"
4691 ;; Since this is not a git repository, do not call 'git'.
4692 (("git ls-files") "find . -type f |sort"))))
4693 (replace 'check
4694 (lambda* (#:key tests? #:allow-other-keys)
4695 (when tests?
4696 (invoke "ruby" (which "rspec"))))))))
4697 (native-inputs (list ruby-rspec ruby-simplecov))
4698 (synopsis "Fuzzing, randomization, and stress testing library")
4699 (description "Flores is a fuzzing, randomization, and stress library to
4700help tests uncover more bugs.")
4701 (home-page "https://github.com/jordansissel/ruby-flores")
4702 (license license:asl2.0))))
4703
4704(define-public ruby-ipaddr
4705 (package
4706 (name "ruby-ipaddr")
4707 (version "1.2.6")
4708 (source (origin
4709 (method git-fetch) ;for tests
4710 (uri (git-reference
4711 (url "https://github.com/ruby/ipaddr")
4712 (commit (string-append "v" version))))
4713 (file-name (git-file-name name version))
4714 (sha256
4715 (base32
4716 "0h3z8i1fa8s4gx48322fflhpkzghd4bmd9109hglsgdkic7b0dyp"))))
4717 (build-system ruby-build-system)
4718 (native-inputs (list ruby-test-unit-ruby-core))
4719 (synopsis "Manipulate IP addresses")
4720 (description "This package provides a set of methods to manipulate an IP
4721address. Both IPv4 and IPv6 are supported.")
4722 (home-page "https://github.com/ruby/ipaddr")
4723 (license license:bsd-2)))
4724
4725(define-public ruby-fake-ftp
4726 (package
4727 (name "ruby-fake-ftp")
4728 (version "0.3.0")
4729 (source (origin
4730 (method url-fetch)
4731 (uri (rubygems-uri "fake_ftp" version))
4732 (sha256
4733 (base32
4734 "1zl9q9m4x7lz9890g0h1qqj7hcxnwzpjfnfbxadjblps7b5054q4"))))
4735 (build-system ruby-build-system)
4736 (native-inputs (list ruby-rspec ruby-rubocop ruby-simplecov))
4737 (arguments
4738 '(#:test-target "spec"))
4739 (synopsis "Fake FTP server for use with ruby tests")
4740 (description "This package allows you to test FTP implementations in ruby.
4741It is a minimal single-client FTP server that can be bound to any arbitrary
4742port on localhost.")
4743 (home-page "https://rubygems.org/gems/fake_ftp")
4744 (license license:expat)))
4745
4746(define-public ruby-net-telnet
4747 (package
4748 (name "ruby-net-telnet")
4749 (version "0.2.0")
4750 (source (origin
4751 (method url-fetch)
4752 (uri (rubygems-uri "net-telnet" version))
4753 (sha256
4754 (base32
4755 "16nkxc79nqm7fd6w1fba4kb98vpgwnyfnlwxarpdcgywz300fc15"))))
4756 (build-system ruby-build-system)
4757 (synopsis "Telnet client functionality")
4758 (description "This package provides telnet client functionality.")
4759 (home-page "https://github.com/ruby/net-telnet")
4760 (license license:bsd-2)))
4761
4762(define-public ruby-net-ftp
4763 (package
4764 (name "ruby-net-ftp")
4765 (version "0.3.4")
4766 (source (origin
4767 (method git-fetch) ;for tests
4768 (uri (git-reference
4769 (url "https://github.com/ruby/net-ftp")
4770 (commit (string-append "v" version))))
4771 (file-name (git-file-name name version))
4772 (sha256
4773 (base32
4774 "11b1sw7c4c7xrhn5li5m0wylw42hp52jp6pqacyb43hkw1m5zr36"))))
4775 (build-system ruby-build-system)
4776 (propagated-inputs (list ruby-net-protocol ruby-time))
4777 (synopsis "File Transfer Protocol client library")
4778 (description "This class implements the File Transfer Protocol. If you
4779have used a command-line FTP program, and are familiar with the commands, you
4780will be able to use this class easily. Some extra features are included to
4781take advantage of Ruby's style and strengths.")
4782 (home-page "https://github.com/ruby/net-ftp")
4783 (license license:bsd-2)))
4784
4785(define-public ruby-net-http-persistent
4786 (package
4787 (name "ruby-net-http-persistent")
4788 (version "4.0.2")
4789 (source (origin
4790 (method url-fetch)
4791 (uri (rubygems-uri "net-http-persistent" version))
4792 (sha256
4793 (base32
4794 "0i1as2lgnw7b4jid0gw5glv5hnxz36nmfsbr9rmxbcap72ijgy03"))))
4795 (build-system ruby-build-system)
4796 (native-inputs
4797 (list ruby-connection-pool
4798 ruby-hoe
4799 ruby-rake-manifest))
4800 (synopsis "Persistent HTTP connection manager")
4801 (description "Net::HTTP::Persistent manages persistent HTTP connections
4802using Net::HTTP, supporting reconnection and retry according to RFC 2616.")
4803 (home-page "https://github.com/drbrain/net-http-persistent")
4804 (license license:expat)))
4805
4806(define-public ruby-net-imap
4807 (package
4808 (name "ruby-net-imap")
4809 (version "0.3.4")
4810 (source (origin
4811 (method git-fetch) ;for tests
4812 (uri (git-reference
4813 (url "https://github.com/ruby/net-imap")
4814 (commit (string-append "v" version))))
4815 (file-name (git-file-name name version))
4816 (sha256
4817 (base32
4818 "0nx49i1n9q1wpancqaac2srrpb8mb43mc8wryyqyhpgki2grwyxw"))))
4819 (build-system ruby-build-system)
4820 (arguments
4821 ;; The test suite appears to rely on RFCs it tries fetching from the
4822 ;; network (see: https://github.com/ruby/net-imap/issues/136).
4823 (list #:tests? #f
4824 #:phases
4825 #~(modify-phases %standard-phases
4826 (add-before 'replace-git-ls-files 'adjust-for-git-ls-files
4827 (lambda _
4828 ;; Adjust the git ls-files invocation so that it matches
4829 ;; the expected pattern.
4830 (substitute* "net-imap.gemspec"
4831 (("`git ls-files -z 2>/dev/null`")
4832 "`git ls-files -z`")))))))
4833 (propagated-inputs (list ruby-date ruby-net-protocol))
4834 (synopsis "Ruby client api for Internet Message Access Protocol")
4835 (description "@code{Net::IMAP} implements Internet Message Access
4836Protocol (IMAP) client functionality. The protocol is described in
4837@url{https://tools.ietf.org/html/rfc3501, IMAP}.")
4838 (home-page "https://github.com/ruby/net-imap")
4839 (license license:bsd-2)))
4840
4841(define-public ruby-net-pop
4842 (package
4843 (name "ruby-net-pop")
4844 (version "0.1.2")
4845 (source (origin
4846 (method git-fetch)
4847 (uri (git-reference
4848 (url "https://github.com/ruby/net-pop")
4849 (commit (string-append "v" version))))
4850 (file-name (git-file-name name version))
4851 (sha256
4852 (base32
4853 "05vz6a56va2rbr7ld78gdzwy1j5mzs98cz82ax5aqa83pzzk6jld"))))
4854 (build-system ruby-build-system)
4855 (propagated-inputs (list ruby-net-protocol))
4856 (synopsis "Ruby client library for POP3")
4857 (description "This library provides functionality for retrieving email via
4858POP3, the Post Office Protocol version 3, as specified by
4859@url{http://www.ietf.org/rfc/rfc1939.txt, RFC1939}.")
4860 (home-page "https://github.com/ruby/net-pop")
4861 (license license:bsd-2)))
4862
4863(define-public ruby-net-smtp
4864 (package
4865 (name "ruby-net-smtp")
4866 (version "0.3.3")
4867 (source (origin
4868 (method git-fetch) ;for tests
4869 (uri (git-reference
4870 (url "https://github.com/ruby/net-smtp")
4871 (commit (string-append "v" version))))
4872 (file-name (git-file-name name version))
4873 (sha256
4874 (base32
4875 "0ca2wh45xvc09rv6v6sz3vbnkzrjzk5c4l6dk50zk4dwxvghma8r"))))
4876 (build-system ruby-build-system)
4877 (arguments
4878 (list
4879 #:phases
4880 #~(modify-phases %standard-phases
4881 (add-before 'check 'regenerate-certificate
4882 ;; On version 0.5.0 a Makefile was introduced to regenerated
4883 ;; the certificates, and instead of calling openssl directory
4884 ;; we could do (with-directory-excursion "test/net/fixtures"
4885 ;; (invoke "make" "regen_certs"). However the certificate is
4886 ;; expired versions before 0.5.0 as well.
4887 (lambda _
4888 (with-directory-excursion "test/net/fixtures"
4889 (invoke
4890 "openssl" "req" "-new" "-key" "server.key" "-out"
4891 "server.csr" "-subj"
4892 "/C=JP/ST=Shimane/O=Ruby Core Team/OU=Ruby Test/CN=localhost")
4893 (invoke "openssl" "req" "-new" "-x509" "-days" "3650"
4894 "-key" "server.key" "-out" "cacert.pem" "-subj"
4895 (string-append
4896 "/C=JP/ST=Shimane/L=Matz-e city/O=Ruby "
4897 "Core Team/CN=Ruby Test "
4898 "CA/emailAddress=security@ruby-lang.org"))
4899 (invoke "openssl" "x509" "-days" "3650" "-CA" "cacert.pem"
4900 "-CAkey" "server.key" "-set_serial" "00" "-in"
4901 "server.csr" "-req" "-out" "server.crt")))))))
4902 (native-inputs (list openssl))
4903 (propagated-inputs (list ruby-net-protocol))
4904 (synopsis "Simple Mail Transfer Protocol client library for Ruby")
4905 (description "This library provides functionality to send Internet mail
4906via SMTP, the Simple Mail Transfer Protocol. The SMTP protocol specification
4907is known as @url{http://www.ietf.org/rfc/rfc2821.txt, RFC2821}.")
4908 (home-page "https://github.com/ruby/net-smtp")
4909 (license license:bsd-2)))
4910
4911(define-public ruby-pleaserun
4912 (package
4913 (name "ruby-pleaserun")
4914 (version "0.0.32")
4915 (source (origin
4916 (method url-fetch)
4917 (uri (rubygems-uri "pleaserun" version))
4918 (sha256
4919 (base32
4920 "1aykf0l8327bqkkf5xd9jcglsib973zpy37cfnlf4j0vp0cdpn2d"))))
4921 (build-system ruby-build-system)
4922 (arguments
4923 (list #:phases
4924 #~(modify-phases %standard-phases
4925 (add-after 'extract-gemspec 'relax-requirements
4926 (lambda _
4927 (substitute* "pleaserun.gemspec"
4928 ;; Mustache is pinned at 0.99.8, for portability with
4929 ;; older Rubies.
4930 (("dependency\\(%q<mustache>.freeze.*")
4931 "dependency(%q<mustache>.freeze)\n"))))
4932 (replace 'check
4933 (lambda* (#:key tests? #:allow-other-keys)
4934 (when tests?
4935 ;; The cli_spec.rb test fails non-deterministically with
4936 ;; a Errno::EISDIR error (see:
4937 ;; https://github.com/jordansissel/pleaserun/issues/155)
4938 (invoke "rspec" "--exclude-pattern"
4939 "spec/pleaserun/cli_spec.rb")))))))
4940 (native-inputs (list ruby-flores ruby-rspec))
4941 (propagated-inputs (list ruby-cabin
4942 ruby-clamp
4943 ruby-dotenv
4944 ruby-insist
4945 ruby-mustache
4946 ruby-stud))
4947 (synopsis "Init scripts and service definitions generation tool")
4948 (description "Pleaserun is a tool to generate startup scripts and service
4949definitions. It targets service managers such as systemd, Upstart, launchd,
4950sysv init, and runit.")
4951 (home-page "https://github.com/jordansissel/pleaserun")
4952 (license license:asl2.0)))
4953
4954(define-public ruby-power-assert
4955 (package
4956 (name "ruby-power-assert")
4957 (version "1.1.5")
4958 (source (origin
4959 (method url-fetch)
4960 (uri (rubygems-uri "power_assert" version))
4961 (sha256
4962 (base32
4963 "1dii0wkfa0jm8sk9b20zl1z4980dmrjh0zqnii058485pp3ws10s"))))
4964 (build-system ruby-build-system)
4965 (arguments
4966 '(#:tests? #f)) ; No included tests
4967 (native-inputs
4968 (list bundler))
4969 (synopsis "Assert library with descriptive assertion messages")
4970 (description "Power-assert is an assertion library providing descriptive
4971assertion messages for tests.")
4972 (home-page "https://github.com/k-tsj/power_assert")
4973 (license (list license:bsd-2 license:ruby))))
4974
4975(define-public ruby-powerpack
4976 (package
4977 (name "ruby-powerpack")
4978 (version "0.1.3")
4979 (source
4980 (origin
4981 (method url-fetch)
4982 (uri (rubygems-uri "powerpack" version))
4983 (sha256
4984 (base32
4985 "1f71axvlhnxja0k17qqxdi4qh5ck807hqg4i3j6cgy8fgzmyg7rg"))))
4986 (build-system ruby-build-system)
4987 (arguments
4988 (list #:test-target "spec"))
4989 (native-inputs
4990 (list bundler ruby-rspec ruby-yard))
4991 (synopsis "Useful extensions to core Ruby classes")
4992 (description
4993 "This package provides a few useful extensions to core Ruby classes,
4994including @code{Array}, @code{Enumerable}, @code{Hash}, @code{Numeric}, and
4995@code{String}.")
4996 (home-page "https://github.com/bbatsov/powerpack")
4997 (license license:expat)))
4998
4999(define-public ruby-locale
5000 (package
5001 (name "ruby-locale")
5002 (version "2.1.2")
5003 (source (origin
5004 (method url-fetch)
5005 (uri (rubygems-uri "locale" version))
5006 (sha256
5007 (base32
5008 "1sls9bq4krx0fmnzmlbn64dw23c4d6pz46ynjzrn9k8zyassdd0x"))))
5009 (build-system ruby-build-system)
5010 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
5011 ;; which needs ruby-gettext, which needs ruby-locale. To break the
5012 ;; dependency cycle we disable tests.
5013 (arguments `(#:tests? #f))
5014 (native-inputs
5015 (list bundler ruby-yard/minimal))
5016 (synopsis "Ruby library providing basic localization APIs")
5017 (description
5018 "Ruby-Locale is the pure ruby library which provides basic APIs for
5019localization.")
5020 (home-page "https://github.com/ruby-gettext/locale")
5021 (license (list license:lgpl3+ license:ruby))))
5022
5023(define-public ruby-temple
5024 (package
5025 (name "ruby-temple")
5026 (version "0.10.0")
5027 (source (origin
5028 (method git-fetch) ;for tests
5029 (uri (git-reference
5030 (url "https://github.com/judofyr/temple")
5031 (commit (string-append "v" version))))
5032 (file-name (git-file-name name version))
5033 (sha256
5034 (base32
5035 "0rr9fnlcgj9nm3b6hzzjsvcw8x3y7z48j7slk7xxff2mh8s7y3y0"))))
5036 (build-system ruby-build-system)
5037 (arguments
5038 (list #:phases
5039 #~(modify-phases %standard-phases
5040 (add-after 'replace-git-ls-files 'replace-more-git-ls-files
5041 (lambda _
5042 (substitute* "temple.gemspec"
5043 ;; There no longer are test, spec or features
5044 ;; directories.
5045 ((".*`git ls-files -- \\{test,spec,features}/\\*`.*")
5046 "")
5047 ;; There isn't any bin directory either.
5048 ((".*`git ls-files -- bin/\\*`.*")
5049 ""))))
5050 (replace 'check
5051 (lambda* (#:key tests? #:allow-other-keys)
5052 (when tests?
5053 (invoke "rspec")))))))
5054 (native-inputs (list ruby-bacon ruby-erubi ruby-rspec ruby-tilt))
5055 (synopsis "Template compilation framework in Ruby")
5056 (description "Temple is an abstraction and framework for compiling
5057templates to pure Ruby.")
5058 (home-page "https://github.com/judofyr/temple")
5059 (license license:expat)))
5060
5061(define-public ruby-text
5062 (package
5063 (name "ruby-text")
5064 (version "1.3.1")
5065 (source (origin
5066 (method url-fetch)
5067 (uri (rubygems-uri "text" version))
5068 (sha256
5069 (base32
5070 "1x6kkmsr49y3rnrin91rv8mpc3dhrf3ql08kbccw8yffq61brfrg"))))
5071 (build-system ruby-build-system)
5072 (synopsis "Collection of text algorithms for Ruby")
5073 (description
5074 "This package provides a collection of text algorithms: Levenshtein,
5075Soundex, Metaphone, Double Metaphone, Porter Stemming.")
5076 (home-page "https://github.com/threedaymonk/text")
5077 (license license:expat)))
5078
5079(define-public ruby-gdbm
5080 (package
5081 (name "ruby-gdbm")
5082 (version "2.1.0")
5083 (source
5084 (origin
5085 (method url-fetch)
5086 (uri (rubygems-uri "gdbm" version))
5087 (sha256
5088 (base32 "0xxygf50b2fvy8lcn2vip27vq32p607d3lwd1diplvkajijq8q8b"))))
5089 (build-system ruby-build-system)
5090 (arguments '(#:tests? #f)) ; No bundled tests.
5091 (inputs (list gdbm))
5092 (synopsis "Ruby extension for GNU dbm")
5093 (description "This package provides a Ruby extension for GNU dbm.")
5094 (home-page "https://github.com/ruby/gdbm")
5095 (license license:bsd-2)))
5096
5097(define-public ruby-gettext
5098 (package
5099 (name "ruby-gettext")
5100 (version "3.4.4")
5101 (source (origin
5102 (method url-fetch)
5103 (uri (rubygems-uri "gettext" version))
5104 (sha256
5105 (base32
5106 "11hlxkk2yr9wjwd3nf8kgmsjcd8wf35yqlxi9wpvrgmvrk9n9a2k"))))
5107 (build-system ruby-build-system)
5108 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga,
5109 ;; which needs ruby-gettext. To break the dependency cycle we disable
5110 ;; tests.
5111 (arguments `(#:tests? #f))
5112 (propagated-inputs
5113 (list ruby-locale ruby-text ruby-erubi))
5114 (native-inputs
5115 (list bundler ruby-yard/minimal))
5116 (synopsis "GNU gettext-like program for Ruby")
5117 (description
5118 "Gettext is a GNU gettext-like program for Ruby. The catalog
5119file (po-file) used is the same as that used by GNU gettext, allowing you to
5120use GNU gettext tools for maintenance.")
5121 (home-page "https://ruby-gettext.github.com/")
5122 (license (list license:lgpl3+ license:ruby))))
5123
5124(define-public ruby-packnga
5125 (package
5126 (name "ruby-packnga")
5127 (version "1.0.4")
5128 (source (origin
5129 (method url-fetch)
5130 (uri (rubygems-uri "packnga" version))
5131 (sha256
5132 (base32
5133 "1vv2j0i43s4xid2km5hgrrxqlqpwgq8nlm8kaxfg2531c1vwfsd4"))))
5134 (build-system ruby-build-system)
5135 ;; ruby-test-unit is required to run tests, but that needs ruby-packnga.
5136 ;; To break the dependency cycle we disable tests.
5137 (arguments `(#:tests? #f))
5138 (propagated-inputs
5139 (list ruby-gettext ruby-yard))
5140 (native-inputs
5141 (list bundler))
5142 (synopsis "Utility library to package internationalized libraries")
5143 (description
5144 "Packnga is a library to translate to many languages using YARD.")
5145 (home-page "https://ranguba.org/packnga/")
5146 (license license:lgpl2.0+)))
5147
5148(define-public ruby-test-construct
5149 (package
5150 (name "ruby-test-construct")
5151 (version "2.0.2")
5152 (source
5153 (origin
5154 (method url-fetch)
5155 (uri (rubygems-uri "test_construct" version))
5156 (sha256
5157 (base32
5158 "17q7rw92l7r4zh6rkvzrn4dyl8p8p77217vaa1wf7nsv8k5541vy"))))
5159 (build-system ruby-build-system)
5160 (native-inputs
5161 (list bundler ruby-mocha-1 ruby-rspec))
5162 (synopsis "Creates temporary files and directories for testing")
5163 (description
5164 "TestConstruct is a @acronym{DSL, Domain Specific Language} for creating
5165temporary files and directories during tests.")
5166 (home-page "https://github.com/bhb/test_construct")
5167 (license license:expat)))
5168
5169(define-public ruby-test-unit
5170 (package
5171 (name "ruby-test-unit")
5172 (version "3.6.0")
5173 (source (origin
5174 (method git-fetch) ;for tests
5175 (uri (git-reference
5176 (url "https://github.com/test-unit/test-unit")
5177 (commit version)))
5178 (file-name (git-file-name name version))
5179 (sha256
5180 (base32
5181 "0w1m432q3y5v9lkak8yyxadak3z17bsp6afni97i4zjdgfz7niz2"))))
5182 (build-system ruby-build-system)
5183 (propagated-inputs
5184 (list ruby-power-assert))
5185 (native-inputs
5186 (list bundler ruby-packnga ruby-yard))
5187 (synopsis "Unit testing framework for Ruby")
5188 (description "@code{Test::Unit} is unit testing framework for Ruby, based
5189on xUnit principles. These were originally designed by Kent Beck, creator of
5190extreme programming software development methodology, for Smalltalk's SUnit.
5191It allows writing tests, checking results and automated testing in Ruby.")
5192 (home-page "https://test-unit.github.io/")
5193 (license (list license:psfl license:ruby))))
5194
5195(define-public ruby-test-unit/minimal
5196 (hidden-package
5197 (package
5198 (inherit ruby-test-unit)
5199 (arguments
5200 (ensure-keyword-arguments
5201 (package-arguments ruby-test-unit)
5202 (list #:tests? #f)))
5203 (native-inputs '()))))
5204
5205(define-public ruby-test-unit-ruby-core
5206 (package
5207 (name "ruby-test-unit-ruby-core")
5208 (version "1.0.5")
5209 (source
5210 (origin
5211 (method url-fetch)
5212 (uri (rubygems-uri "test-unit-ruby-core" version))
5213 (sha256
5214 (base32 "1i7fa4hlj6xiqvjaikagwrmiyc21jzyswvd4grjbfqysziwsxygc"))))
5215 (build-system ruby-build-system)
5216 (arguments
5217 (list #:tests? #f)) ; contains no tests
5218 (synopsis "Additional test assertions for Ruby standard libraries")
5219 (description "This package provides additional test assertions for Ruby
5220standard libraries.")
5221 (home-page "https://github.com/ruby/test-unit-ruby-core")
5222 (license license:ruby)))
5223
5224(define-public ruby-mapping
5225 (package
5226 (name "ruby-mapping")
5227 (version "1.1.1")
5228 (source (origin
5229 (method git-fetch) ;for tests
5230 (uri (git-reference
5231 (url "https://github.com/ioquatix/mapping")
5232 (commit (string-append "v" version))))
5233 (file-name (git-file-name name version))
5234 (sha256
5235 (base32
5236 "0yhmqp8mprjqf9m7wzc4hhi50qbfax86r89w852csns0ijaffjjs"))))
5237 (build-system ruby-build-system)
5238 (arguments
5239 (list
5240 #:test-target "spec"
5241 #:phases
5242 #~(modify-phases %standard-phases
5243 (add-after 'unpack 'patch
5244 (lambda _
5245 (substitute* "spec/mapping/model_spec.rb"
5246 ;; From https://github.com/ioquatix/mapping/pull/2
5247 (("offset:") "offset =")))))))
5248 (native-inputs (list ruby-rspec))
5249 (synopsis "Map model objects based on their class to a given output model")
5250 (description "The @code{mapping} gem maps model objects based on their
5251class to a given output model. It is useful for versioning external
5252interfaces (e.g. JSON APIs) or processing structured data from one format to
5253another.")
5254 (home-page "https://github.com/ioquatix/mapping")
5255 (license license:expat)))
5256
5257(define-public ruby-markaby
5258 (package
5259 (name "ruby-markaby")
5260 (version "0.9.0")
5261 (source
5262 (origin
5263 (method url-fetch)
5264 (uri (rubygems-uri "markaby" version))
5265 (sha256
5266 (base32
5267 "1j4jc31ycydbkh5h3q6zwidzpavg3g5mbb5lqyaczd3jrq78rd7i"))))
5268 (build-system ruby-build-system)
5269 (arguments
5270 (list
5271 #:phases
5272 #~(modify-phases %standard-phases
5273 ;; Run rspec manually without using the Rakefile, as the versions of
5274 ;; Rake and RSpec 2 are incompatible:
5275 ;;
5276 ;; NoMethodError: undefined method `last_comment'
5277 (replace 'check
5278 (lambda* (#:key tests? #:allow-other-keys)
5279 ;; Skip some broken tests, this should be redundant with the
5280 ;; next release
5281 (delete-file "spec/markaby/markaby_test_unit_spec.rb")
5282 (substitute* "spec/markaby/markaby_spec.rb"
5283 (("generated.should == str")
5284 "# Test broken: generated.should == str"))
5285
5286 (when tests?
5287 (invoke "rspec")))))))
5288 (propagated-inputs
5289 (list ruby-builder))
5290 (native-inputs
5291 (list bundler ruby-rspec-2))
5292 (synopsis "Write HTML pages in pure Ruby")
5293 (description
5294 "Markaby allows writing HTML packages in pure Ruby. This is similar to
5295the functionality provided by @acronym{ERB, Embedded Ruby}, but without the
5296mixture of HTML and additional ERB syntax.")
5297 (home-page "https://markaby.github.io/")
5298 (license license:expat)))
5299
5300(define-public ruby-maruku
5301 (package
5302 (name "ruby-maruku")
5303 (version "0.7.3")
5304 (source
5305 (origin
5306 (method url-fetch)
5307 (uri (rubygems-uri "maruku" version))
5308 (sha256
5309 (base32
5310 "1r7bxpgnx2hp3g12bjrmdrpv663dfqxsdp0af69kjhxmaxpia56x"))))
5311 (build-system ruby-build-system)
5312 (arguments
5313 '(;; TODO: 3 tests seem to fail due to HTML encoding issues
5314 #:tests? #f
5315 #:phases
5316 (modify-phases %standard-phases
5317 (replace 'check
5318 (lambda* (#:key tests? #:allow-other-keys)
5319 (when tests?
5320 (invoke "rspec")))))))
5321 (native-inputs
5322 (list ruby-rspec ruby-simplecov ruby-nokogiri-diff))
5323 (synopsis "Markdown interpreter in Ruby")
5324 (description
5325 "Maruku is a Markdown interpreter in Ruby. It can export Markdown to
5326HTML, and PDF through LaTeX.")
5327 (home-page "https://github.com/bhollis/maruku")
5328 (license license:expat)))
5329
5330(define-public ruby-metaclass
5331 (package
5332 (name "ruby-metaclass")
5333 (version "0.0.4")
5334 (source (origin
5335 (method url-fetch)
5336 (uri (rubygems-uri "metaclass" version))
5337 (sha256
5338 (base32
5339 "0hp99y2b1nh0nr8pc398n3f8lakgci6pkrg4bf2b2211j1f6hsc5"))))
5340 (build-system ruby-build-system)
5341 (arguments
5342 `(#:phases
5343 (modify-phases %standard-phases
5344 (add-after 'unpack 'add-test-unit-to-search-path
5345 (lambda* (#:key inputs #:allow-other-keys)
5346 (let* ((test-unit (assoc-ref inputs "ruby-test-unit")))
5347 (substitute* "Rakefile"
5348 (("t\\.libs << \"test\"" line)
5349 (string-append line "; t.libs << \""
5350 test-unit "/lib/ruby/vendor_ruby"
5351 "/gems/test-unit-"
5352 ,(package-version ruby-test-unit)
5353 "/lib\"")))))))))
5354 (native-inputs
5355 (list bundler ruby-test-unit/minimal))
5356 (synopsis "Ruby library adding metaclass method to all objects")
5357 (description
5358 "Metaclass is a Ruby library adding a @code{metaclass} method to all Ruby
5359objects.")
5360 (home-page "https://github.com/floehopper/metaclass")
5361 (license license:expat)))
5362
5363(define-public ruby-mkmf-lite
5364 (package
5365 (name "ruby-mkmf-lite")
5366 (version "0.5.2")
5367 (source (origin
5368 (method url-fetch)
5369 (uri (rubygems-uri "mkmf-lite" version))
5370 (sha256
5371 (base32
5372 "0rqa5kzswhqkj7r9mqrqz4mjd2vdxsblgybb52gj3mwr1gwvl4c5"))))
5373 (build-system ruby-build-system)
5374 (arguments
5375 (list
5376 #:phases
5377 #~(modify-phases %standard-phases
5378 ;; Avoid rubocop dependency
5379 (replace 'check
5380 (lambda* (#:key tests? #:allow-other-keys)
5381 (when tests?
5382 (invoke "rspec")))))))
5383 (propagated-inputs
5384 (list ruby-ptools))
5385 (native-inputs
5386 (list ruby-rspec))
5387 (synopsis "Lightweight alternative to @code{mkmf}")
5388 (description
5389 "@code{mkmf-lite} is a light version of Ruby's @code{mkmf.rb} designed
5390for use as a library. It does not create packages, builds, or log files of
5391any kind. Instead, it provides mixin methods that you can use in FFI or tests
5392to check for the presence of header files, constants, and so on.")
5393 (home-page "https://github.com/djberg96/mkmf-lite")
5394 (license license:asl2.0)))
5395
5396(define-public ruby-msgpack
5397 (package
5398 (name "ruby-msgpack")
5399 (version "1.7.5")
5400 (source (origin
5401 (method git-fetch) ;for tests
5402 (uri (git-reference
5403 (url "https://github.com/msgpack/msgpack-ruby")
5404 (commit (string-append "v" version))))
5405 (file-name (git-file-name name version))
5406 (sha256
5407 (base32
5408 "0d759pjgxgrxw18kmk81yv9brc141b4d8gszlp4vdnpvwvb96nln"))))
5409 (build-system ruby-build-system)
5410 (arguments (list #:test-target "spec"))
5411 (native-inputs
5412 (list ruby-rake-compiler
5413 ruby-ruby-memcheck
5414 ruby-rspec
5415 ruby-yard))
5416 (synopsis "Efficient object serialization library for Ruby")
5417 (description "MessagePack is a binary-based efficient object serialization
5418library. It enables to exchange structured objects between many languages
5419like JSON. Unlike JSON, it is very fast and small.")
5420 (home-page "https://msgpack.org/")
5421 (license license:asl2.0)))
5422
5423(define-public ruby-mspec
5424 (package
5425 (name "ruby-mspec")
5426 (version "1.9.1")
5427 (source
5428 (origin
5429 (method url-fetch)
5430 (uri (rubygems-uri "mspec" version))
5431 (sha256
5432 (base32
5433 "0wmyh2n40m4srwdx9z6h6g6p46k02pzyhcsja3hqcw5h5b0hfmhd"))))
5434 (build-system ruby-build-system)
5435 (arguments
5436 '(;; TODO: 3 test failures
5437 ;; ./spec/mocks/mock_spec.rb:82
5438 ;; ./spec/utils/name_map_spec.rb:151
5439 ;; ./spec/utils/name_map_spec.rb:155
5440 #:tests? #f
5441 #:phases
5442 (modify-phases %standard-phases
5443 (add-after 'extract-gemspec 'change-dependency-constraints
5444 (lambda _
5445 (substitute* "mspec.gemspec"
5446 (("rake.*") "rake>)\n")
5447 (("rspec.*") "rspec>)\n"))))
5448 (replace 'check
5449 (lambda* (#:key tests? #:allow-other-keys)
5450 (when tests?
5451 (invoke "rspec" "spec")))))))
5452 (native-inputs
5453 (list bundler ruby-rake ruby-rspec))
5454 (synopsis "MSpec is a specialized framework for RubySpec")
5455 (description
5456 "MSpec is a specialized framework that is syntax-compatible with RSpec 2
5457for basic features. MSpec contains additional features that assist in writing
5458specs for Ruby implementations in ruby/spec.")
5459 (home-page "http://rubyspec.org")
5460 (license license:expat)))
5461
5462(define-public ruby-mysql2
5463 (package
5464 (name "ruby-mysql2")
5465 (version "0.5.2")
5466 (source
5467 (origin
5468 (method git-fetch)
5469 (uri (git-reference
5470 (url "https://github.com/brianmario/mysql2")
5471 (commit version)))
5472 (file-name (git-file-name name version))
5473 (sha256
5474 (base32
5475 "11lvfgc2rmvkm52jp0nbi6pvhk06klznghr7llldfw8basl9n5wv"))))
5476 (build-system ruby-build-system)
5477 (arguments
5478 '(;; TODO: Tests require a running MySQL/MariaDB service
5479 #:tests? #f
5480 #:phases
5481 (modify-phases %standard-phases
5482 (replace 'replace-git-ls-files
5483 (lambda _
5484 (substitute* "mysql2.gemspec"
5485 (("git ls-files .*`") "find . -type f |sort`"))))
5486 (add-before 'install 'set-MAKEFLAGS
5487 (lambda* (#:key outputs #:allow-other-keys)
5488 (setenv "MAKEFLAGS"
5489 (string-append
5490 "V=1 "
5491 "prefix=" (assoc-ref outputs "out")))))
5492 ;; Move the 'check phase to after 'install, as then you can test
5493 ;; using the installed mysql2 gem in the store.
5494 (delete 'check)
5495 (add-after 'install 'check
5496 (lambda* (#:key outputs tests? #:allow-other-keys)
5497 (setenv "GEM_PATH"
5498 (string-append
5499 (getenv "GEM_PATH")
5500 ":"
5501 (assoc-ref outputs "out") "/lib/ruby/vendor_ruby"))
5502 (when tests?
5503 (invoke "rspec")))))))
5504 (inputs
5505 `(("mariadb-dev" ,mariadb "dev")
5506 ("zlib" ,zlib)))
5507 (native-inputs
5508 (list ruby-rspec ruby-rake-compiler))
5509 (synopsis "MySQL library for Ruby, binding to libmysql")
5510 (description
5511 "This package provides a simple, fast MySQL library for Ruby, binding to
5512libmysql.")
5513 (home-page "https://github.com/brianmario/mysql2")
5514 (license license:expat)))
5515
5516(define-public ruby-blankslate
5517 (package
5518 (name "ruby-blankslate")
5519 (version "3.1.3")
5520 (source (origin
5521 (method url-fetch)
5522 (uri (rubygems-uri "blankslate" version))
5523 (sha256
5524 (base32
5525 "0fwkb4d1j9gc7vdwn2nxvwgy2g5wlag4c4bp7bl85jvq0kgp6cyx"))))
5526 (build-system ruby-build-system)
5527 (arguments
5528 `(#:phases
5529 (modify-phases %standard-phases
5530 (replace 'check
5531 (lambda _ (invoke "rspec" "spec/"))))))
5532 (native-inputs
5533 (list bundler ruby-rspec))
5534 (synopsis "Abstract base class with no predefined methods")
5535 (description
5536 "BlankSlate provides an abstract base class with no predefined
5537methods (except for @code{__send__} and @code{__id__}). BlankSlate is useful
5538as a base class when writing classes that depend upon
5539@code{method_missing} (e.g. dynamic proxies).")
5540 (home-page "https://github.com/masover/blankslate")
5541 (license license:expat)))
5542
5543(define-public ruby-bond
5544 (package
5545 (name "ruby-bond")
5546 (version "0.5.1")
5547 (source
5548 (origin
5549 (method url-fetch)
5550 (uri (rubygems-uri "bond" version))
5551 (sha256
5552 (base32
5553 "1r19ifc4skyl2gxnifrxa5jvbbay9fb2in79ppgv02b6n4bhsw90"))))
5554 (build-system ruby-build-system)
5555 (arguments
5556 ;; The test suite fails (see:
5557 ;; https://github.com/cldwalker/bond/issues/46).
5558 `(#:tests? #f))
5559 (native-inputs
5560 (list ruby-bacon ruby-bacon-bits ruby-mocha-on-bacon))
5561 (synopsis "Bond can provide custom autocompletion for arguments, methods
5562and more")
5563 (description
5564 "Bond can autocomplete argument(s) to methods, uniquely completing per
5565module, per method and per argument. Bond provides a configuration system and
5566a DSL for creating custom completions and completion rules. Bond can also
5567load completions that ship with gems. Bond is able to offer more than irb's
5568completion since it uses the full line of input when completing as opposed to
5569irb's last-word approach.")
5570 (home-page "http://tagaholic.me/bond/")
5571 (license license:expat)))
5572
5573(define-public ruby-idn-ruby
5574 (package
5575 (name "ruby-idn-ruby")
5576 (version "0.1.0")
5577 (source
5578 (origin
5579 (method url-fetch)
5580 (uri (rubygems-uri "idn-ruby" version))
5581 (sha256
5582 (base32
5583 "07vblcyk3g72sbq12xz7xj28snpxnh3sbcnxy8bglqbfqqhvmawr"))))
5584 (build-system ruby-build-system)
5585 (arguments
5586 '(#:phases
5587 (modify-phases %standard-phases
5588 (delete 'check)
5589 (add-after 'install 'check
5590 (lambda* (#:key tests? outputs #:allow-other-keys)
5591 (when tests?
5592 (let* ((gem-file (cadr (find-files "." "\\.gem")))
5593 (name-and-version (basename gem-file ".gem")))
5594 (apply invoke
5595 "ruby" "--verbose"
5596 (string-append "-I"
5597 (assoc-ref outputs "out")
5598 "/lib/ruby/vendor_ruby/gems/"
5599 name-and-version
5600 "/lib")
5601 (find-files "./test" ".*\\.rb")))))))))
5602 (inputs
5603 (list libidn))
5604 (synopsis "Ruby Bindings for the GNU LibIDN library")
5605 (description
5606 "Ruby Bindings for the GNU LibIDN library, an implementation of the
5607Stringprep, Punycode and IDNA specifications. These are used to encode and
5608decode internationalized domain + names according to the IDNA2003
5609specifications.
5610
5611Included are the most important parts of the Stringprep, Punycode and IDNA
5612APIs like performing Stringprep processings, encoding to and decoding from
5613Punycode strings and converting entire domain names to and from the ACE
5614encoded form.")
5615 (home-page "https://github.com/deepfryed/idn-ruby")
5616 (license license:asl2.0)))
5617
5618(define-public ruby-insist
5619 (package
5620 (name "ruby-insist")
5621 (version "1.0.0")
5622 (source (origin
5623 (method url-fetch)
5624 (uri (rubygems-uri "insist" version))
5625 (sha256
5626 (base32
5627 "0bw3bdwns14mapbgb8cbjmr0amvwz8y72gyclq04xp43wpp5jrvg"))))
5628 (build-system ruby-build-system)
5629 (arguments (list #:phases #~(modify-phases %standard-phases
5630 (replace 'check
5631 (lambda* (#:key tests? #:allow-other-keys)
5632 (when tests?
5633 (invoke "ruby" "test/testing.rb")))))))
5634 (synopsis "Testing tool for Ruby")
5635 (description "This package provides a simple block-driven assertion
5636library for both testing and for production code that attempts to make test
5637definitions more readable.")
5638 (home-page "https://github.com/jordansissel/ruby-insist/")
5639 (license license:asl2.0)))
5640
5641(define-public ruby-introspection
5642 (package
5643 (name "ruby-introspection")
5644 (version "0.0.4")
5645 (source (origin
5646 (method url-fetch)
5647 (uri (rubygems-uri "introspection" version))
5648 (sha256
5649 (base32
5650 "1y2nbijkc0zlfmn9ss6588ilarq2kbn2i7w7pwwsli66dj84zgca"))))
5651 (build-system ruby-build-system)
5652 (propagated-inputs
5653 (list ruby-metaclass))
5654 (native-inputs
5655 (list bundler
5656 ruby-blankslate))
5657 (synopsis "Dynamic inspection of the method hierarchy on a Ruby object")
5658 (description
5659 "Introspection provides tools to inspect the hierarchy of method
5660definitions on a Ruby object.")
5661 (home-page "https://github.com/floehopper/introspection")
5662 (license license:expat)))
5663
5664(define-public ruby-redcarpet
5665 (package
5666 (name "ruby-redcarpet")
5667 (version "3.5.0")
5668 (source (origin
5669 (method url-fetch)
5670 (uri (rubygems-uri "redcarpet" version))
5671 (sha256
5672 (base32
5673 "0skcyx1h8b5ms0rp2zm3ql6g322b8c1adnkwkqyv7z3kypb4bm7k"))))
5674 (build-system ruby-build-system)
5675 (arguments
5676 `(#:phases
5677 (modify-phases %standard-phases
5678 ;; The gem archive does not include the conformance tests.
5679 (add-after 'unpack 'disable-conformance-tests
5680 (lambda _
5681 (substitute* "Rakefile"
5682 (("task :test => %w\\[test:unit test:conformance\\]")
5683 "task :test => %w[test:unit]")))))))
5684 (native-inputs
5685 (list bundler ruby-test-unit ruby-rake-compiler))
5686 (synopsis "Extensible Markdown to (X)HTML converter")
5687 (description
5688 "Redcarpet is an extensible Ruby library for Markdown processing and
5689conversion to (X)HTML.")
5690 (home-page "https://github.com/vmg/redcarpet")
5691 (license license:expat)))
5692
5693(define-public ruby-reline
5694 (package
5695 (name "ruby-reline")
5696 (version "0.3.3")
5697 (source (origin
5698 (method git-fetch) ;for tests
5699 (uri (git-reference
5700 (url "https://github.com/ruby/reline")
5701 (commit (string-append "v" version))))
5702 (file-name (git-file-name name version))
5703 (sha256
5704 (base32
5705 "1papa4f4prjml9qk6yydi4k5a4zgbzmxmbhd8fz9kfg1i34s35cw"))))
5706 (build-system ruby-build-system)
5707 (propagated-inputs (list ruby-io-console))
5708 (synopsis "GNU Readline or Editline implementation in Ruby")
5709 (description "Reline is a pure Ruby alternative GNU Readline or Editline
5710implementation.")
5711 (home-page "https://github.com/ruby/reline")
5712 (license (list license:bsd-2 license:ruby)))) ;dual license
5713
5714(define-public ruby-rerun
5715 (package
5716 (name "ruby-rerun")
5717 (version "0.13.0")
5718 (source
5719 (origin
5720 (method url-fetch)
5721 (uri (rubygems-uri "rerun" version))
5722 (sha256
5723 (base32
5724 "1cskvxk8z8vmfail8na7hj91hs0qnvds9nydj04zi3dbddgnbmvz"))))
5725 (build-system ruby-build-system)
5726 (arguments
5727 '(#:tests? #f)) ; No included tests
5728 (propagated-inputs
5729 (list ruby-listen))
5730 (synopsis "Run a process, and restart when some monitored files change")
5731 (description
5732 "Rerun is a tool to launch programs, then monitor the file system, and
5733restart the program when any of the monitored files change. It's written in
5734Ruby, but can be used for all programs.")
5735 (home-page "https://github.com/alexch/rerun/")
5736 (license license:expat)))
5737
5738(define-public ruby-maxitest
5739 (package
5740 (name "ruby-maxitest")
5741 (version "5.1.0")
5742 (home-page "https://github.com/grosser/maxitest")
5743 (source (origin
5744 ;; Pull from git because the gem does not contain tests.
5745 (method git-fetch)
5746 (uri (git-reference
5747 (url home-page)
5748 (commit (string-append "v" version))))
5749 (file-name (git-file-name name version))
5750 (sha256
5751 (base32
5752 "0qj410krfm497ggmf71xpnabbb6814y0585by4nlzyjvg9hpgg3m"))))
5753 (build-system ruby-build-system)
5754 (arguments
5755 (list
5756 #:test-target "default"
5757 #:phases
5758 #~(modify-phases %standard-phases
5759 (replace 'replace-git-ls-files
5760 (lambda _
5761 (substitute* "maxitest.gemspec"
5762 (("`git ls-files lib/ bin/ MIT-LICENSE Readme.md`")
5763 "`find lib/ bin/ MIT-LICENSE Readme.md -type f | sort`"))))
5764 (add-before 'check 'remove-version-constraints
5765 (lambda _
5766 ;; Don't use specific versions of dependencies, instead
5767 ;; take whatever is available in Guix.
5768 (delete-file "Gemfile.lock")))
5769 (add-before 'check 'add-mtest-on-PATH
5770 (lambda _
5771 ;; Tests use 'mtest' which is not automatically added on
5772 ;; PATH.
5773 (setenv "PATH" (string-append (getcwd) "/bin:"
5774 (getenv "PATH"))))))))
5775 (native-inputs
5776 (list procps
5777 ruby-bump
5778 ruby-rspec
5779 ruby-wwtd))
5780 (propagated-inputs
5781 (list ruby-minitest))
5782 (synopsis "Minitest with extra features")
5783 (description
5784 "Maxitest is a wrapper around Minitest with extra functionality such
5785as timeouts, an @command{mtest} executable that can run tests by line
5786number, support for interrupted tests, better backtraces, and more.")
5787 (license license:expat)))
5788
5789(define-public ruby-mocha
5790 (package
5791 (name "ruby-mocha")
5792 (version "2.0.4")
5793 (source (origin
5794 (method url-fetch)
5795 (uri (rubygems-uri "mocha" version))
5796 (sha256
5797 (base32
5798 "18xn9gm9yypavy9yck71fplan19hy5697mwd1rwzz7vizh3ip7bd"))))
5799 (build-system ruby-build-system)
5800 (arguments
5801 (list
5802 #:phases
5803 #~(modify-phases %standard-phases
5804 (add-before 'check 'remove-rubocop-dependency
5805 (lambda _
5806 ;; Disable dependency on Rubocop, which is just a linter,
5807 ;; and would introduce a circular dependency.
5808 (substitute* "Gemfile"
5809 ((".*rubocop.*") "")))))))
5810 (propagated-inputs
5811 (list ruby-ruby2-keywords))
5812 (native-inputs
5813 (list ruby-psych-3
5814 ruby-introspection))
5815 (synopsis "Mocking and stubbing library for Ruby")
5816 (description
5817 "Mocha is a mocking and stubbing library with JMock/SchMock syntax, which
5818allows mocking and stubbing of methods on real (non-mock) classes.")
5819 (home-page "https://mocha.jamesmead.org/")
5820 ;; Mocha can be used with either license at the users choice.
5821 (license (list license:expat license:ruby))))
5822
5823(define-public ruby-mocha-1
5824 (package
5825 (inherit ruby-mocha)
5826 (version "1.13.0")
5827 (source (origin
5828 (method url-fetch)
5829 (uri (rubygems-uri "mocha" version))
5830 (sha256
5831 (base32
5832 "15s53ggsykk69kxqvs4416s8yxdhz6caggva55n8sjgy4ixzwp10"))))
5833 (arguments
5834 '(#:tests? #f))))
5835
5836(define-public ruby-mocha-on-bacon
5837 (package
5838 (name "ruby-mocha-on-bacon")
5839 (version "0.2.3")
5840 (source
5841 (origin
5842 (method url-fetch)
5843 (uri (rubygems-uri "mocha-on-bacon" version))
5844 (sha256
5845 (base32
5846 "1h49b33rq889hn8x3wp9byczl91va16jh1w4d2wyy4yj23icdrcp"))))
5847 (build-system ruby-build-system)
5848 (arguments
5849 ;; rubygems.org release missing tests
5850 '(#:tests? #f))
5851 (propagated-inputs (list ruby-mocha))
5852 (synopsis "Mocha adapter for Bacon")
5853 (description
5854 "This package provides a Mocha adapter for Bacon, allowing you to use the
5855Mocha stubbing and mocking library with Bacon, a small RSpec clone.")
5856 (home-page
5857 "https://github.com/alloy/mocha-on-bacon")
5858 (license license:expat)))
5859
5860(define-public ruby-net-ssh
5861 (package
5862 (name "ruby-net-ssh")
5863 (version "7.1.0")
5864 (source (origin
5865 (method git-fetch) ;for tests
5866 (uri (git-reference
5867 (url "https://github.com/net-ssh/net-ssh")
5868 (commit (string-append "v" version))))
5869 (file-name (git-file-name name version))
5870 (sha256
5871 (base32
5872 "1dkbyzpl31jygnnva5sa754vk42q1fih4qz5ipqw5gqiafrrlb91"))))
5873 (build-system ruby-build-system)
5874 (native-inputs
5875 (list bundler
5876 ruby-bcrypt-pbkdf
5877 ruby-ed25519
5878 ruby-mocha
5879 ruby-rbnacl
5880 ruby-test-unit
5881 ruby-x25519))
5882 (synopsis "Ruby implementation of the SSH2 client protocol")
5883 (description "@code{Net::SSH} is a pure-Ruby implementation of the SSH2
5884client protocol. It allows you to write programs that invoke and interact
5885with processes on remote servers, via SSH2.")
5886 (home-page "https://github.com/net-ssh/net-ssh")
5887 (license license:expat)))
5888
5889(define-public ruby-net-scp
5890 (package
5891 (name "ruby-net-scp")
5892 (version "4.0.1.rc3")
5893 (source
5894 (origin
5895 (method git-fetch)
5896 (uri (git-reference
5897 (url "https://github.com/net-ssh/net-scp")
5898 (commit (string-append "v" version))))
5899 (file-name (git-file-name name version))
5900 (sha256
5901 (base32 "136mb8idxdkxkadx827027nyxcsvvv2wivz5dnjqy8g6ic0h9dzn"))))
5902 (build-system ruby-build-system)
5903 (native-inputs
5904 (list bundler ruby-test-unit ruby-mocha-1))
5905 (propagated-inputs
5906 (list ruby-net-ssh))
5907 (synopsis "Pure-Ruby SCP client library")
5908 (description "@code{Net::SCP} is a pure-Ruby implementation of the SCP
5909client protocol.")
5910 (home-page "https://github.com/net-ssh/net-scp")
5911 (license license:expat)))
5912
5913(define-public ruby-net-sftp
5914 (package
5915 (name "ruby-net-sftp")
5916 (version "4.0.0")
5917 (source (origin
5918 (method url-fetch)
5919 (uri (rubygems-uri "net-sftp" version))
5920 (sha256
5921 (base32
5922 "0r33aa2d61hv1psm0l0mm6ik3ycsnq8symv7h84kpyf2b7493fv5"))))
5923 (build-system ruby-build-system)
5924 (propagated-inputs (list ruby-net-ssh))
5925 (synopsis "Pure Ruby implementation of the SFTP client protocol")
5926 (description
5927 "@code{Net::SFTP} is a pure Ruby implementation of the SFTP
5928protocol (specifically, versions 1 through 6 of the SFTP protocol). Note that
5929this is the “Secure File Transfer Protocol”, typically run over an SSH
5930connection, and has nothing to do with the FTP protocol.")
5931 (home-page "https://github.com/net-ssh/net-sftp")
5932 (license license:expat)))
5933
5934(define-public ruby-minima
5935 (package
5936 (name "ruby-minima")
5937 (version "2.5.1")
5938 (source (origin
5939 (method url-fetch)
5940 (uri (rubygems-uri "minima" version))
5941 (sha256
5942 (base32
5943 "1gk7jmriiswda1ykjzpsw9cpiya4m9n0yrh0h6xnrc8zcfy543jj"))))
5944 (arguments
5945 (list #:phases #~(modify-phases %standard-phases
5946 (replace 'check
5947 (lambda* (#:key tests? #:allow-other-keys)
5948 (when tests?
5949 (invoke "jekyll" "build"))
5950 ;; Without the following, an attempt to remove
5951 ;; minima-<version>.gem is made during installation,
5952 ;; which will fail.
5953 (delete-file #$(string-append "_site/minima-"
5954 version ".gem")))))))
5955 (build-system ruby-build-system)
5956 (propagated-inputs (list jekyll ruby-jekyll-feed ruby-jekyll-seo-tag))
5957 (synopsis "Beautiful, minimal theme for Jekyll")
5958 (description
5959 "Minima is a one-size-fits-all Jekyll theme for writers. It's Jekyll's
5960default (and first) theme. It's what you get when you run @code{jekyll new}.")
5961 (home-page "https://github.com/jekyll/minima")
5962 (license license:expat)))
5963
5964(define-public ruby-minitest
5965 (package
5966 (name "ruby-minitest")
5967 (version "5.18.1")
5968 (source (origin
5969 (method url-fetch)
5970 (uri (rubygems-uri "minitest" version))
5971 (sha256
5972 (base32
5973 "1kg9wh7jlc9zsr3hkhpzkbn0ynf4np5ap9m2d8xdrb8shy0y6pmb"))))
5974 (build-system ruby-build-system)
5975 (native-inputs (list ruby-hoe))
5976 (home-page "https://github.com/minitest/minitest")
5977 (synopsis "Small test suite library for Ruby")
5978 (description "Minitest provides a complete suite of Ruby testing
5979facilities supporting TDD, BDD, mocking, and benchmarking.")
5980 (license license:expat)))
5981
5982(define-public ruby-minitest-around
5983 (package
5984 (name "ruby-minitest-around")
5985 (version "0.5.0")
5986 (source
5987 (origin
5988 (method url-fetch)
5989 (uri (rubygems-uri "minitest-around" version))
5990 (sha256
5991 (base32
5992 "15ywnqx0719jl9c25yqfshmwcir57i5f4hr1ra9v9vay9ylcwndr"))))
5993 (build-system ruby-build-system)
5994 (arguments
5995 '(#:phases
5996 (modify-phases %standard-phases
5997 (add-after 'extract-gemspec 'remove-unnecessary-dependency-versions
5998 (lambda _
5999 (substitute* "minitest-around.gemspec"
6000 (("%q<cucumber>.*") "%q<cucumber>, [\">= 0\"])\n")))))))
6001 (propagated-inputs
6002 (list ruby-minitest))
6003 (native-inputs
6004 (list bundler ruby-cucumber ruby-bump ruby-test-construct))
6005 (synopsis "Run code around tests in Minitest")
6006 (description
6007 "This library provides a way to run code around tests in Minitest,
6008written using either the unit test or spec style.")
6009 (home-page "https://github.com/splattael/minitest-around")
6010 (license license:expat)))
6011
6012(define-public ruby-minitest-retry
6013 (package
6014 (name "ruby-minitest-retry")
6015 (version "0.2.2")
6016 (source (origin
6017 (method url-fetch)
6018 (uri (rubygems-uri "minitest-retry" version))
6019 (sha256
6020 (base32
6021 "1c1zq0b1a9y0hbqphq4ybijnjldlis1g6kyhx92q2ynnqfmzhfga"))))
6022 (build-system ruby-build-system)
6023 (propagated-inputs (list ruby-minitest))
6024 (synopsis "Minitest extension to re-run failing tests")
6025 (description "This package provides the @code{Minitest::Retry} class,
6026which extends Minitest to allow retrying tests when they fail.")
6027 (home-page "https://github.com/y-yagi/minitest-retry")
6028 (license license:expat)))
6029
6030(define-public ruby-minitest-sprint
6031 (package
6032 (name "ruby-minitest-sprint")
6033 (version "1.1.0")
6034 (source (origin
6035 (method url-fetch)
6036 (uri (rubygems-uri "minitest-sprint" version))
6037 (sha256
6038 (base32
6039 "179d6pj56l9xzm46fqsqj10mzjkr1f9fv4cxa8wvchs97hqz33w1"))))
6040 (build-system ruby-build-system)
6041 (native-inputs
6042 (list ruby-hoe ruby-minitest))
6043 (synopsis "Fast test suite runner for minitest")
6044 (description "Minitest-sprint is a test runner for minitest that makes it
6045easier to re-run individual failing tests.")
6046 (home-page "https://github.com/seattlerb/minitest-sprint")
6047 (license license:expat)))
6048
6049(define-public ruby-minitest-stub-const
6050 (package
6051 (name "ruby-minitest-stub-const")
6052 (version "0.6") ;for Rakefile
6053 (source (origin
6054 (method git-fetch)
6055 (uri (git-reference
6056 (url "https://github.com/adammck/minitest-stub-const")
6057 (commit (string-append "v" version))))
6058 (file-name (git-file-name name version))
6059 (sha256
6060 (base32
6061 "0cz4r9fxplx94c7wakx0998n2gv7l21prn8pfpw6z2c33k3g2xar"))))
6062 (build-system ruby-build-system)
6063 (synopsis "Stub constants for the duration of a block in MiniTest")
6064 (description "This package provides a MiniTest extension to stub constants
6065for the duration of a block in MiniTest.")
6066 (home-page "https://github.com/adammck/minitest-stub-const")
6067 (license license:expat)))
6068
6069(define-public ruby-minitest-bacon
6070 (package
6071 (name "ruby-minitest-bacon")
6072 (version "1.0.3")
6073 (source (origin
6074 (method url-fetch)
6075 (uri (rubygems-uri "minitest-bacon" version))
6076 (sha256
6077 (base32
6078 "0zhdwcl6bgha61qiyfvr7zs7ywaxc33wmj9xhxl8jdmpdvifvfaj"))))
6079 (build-system ruby-build-system)
6080 (native-inputs
6081 (list ruby-hoe))
6082 (inputs
6083 (list ruby-minitest))
6084 (synopsis "Bacon compatibility library for minitest")
6085 (description "Minitest-bacon extends minitest with bacon-like
6086functionality, making it easier to migrate test suites from bacon to minitest.")
6087 (home-page "https://github.com/seattlerb/minitest-bacon")
6088 (license license:expat)))
6089
6090(define-public ruby-minitest-focus
6091 (package
6092 (name "ruby-minitest-focus")
6093 (version "1.3.1")
6094 (source
6095 (origin
6096 (method url-fetch)
6097 (uri (rubygems-uri "minitest-focus" version))
6098 (sha256
6099 (base32
6100 "13kd2dkd9akfb99ziqndz9mir5iynyfyj2l45mcibab6mq5k8g67"))))
6101 (build-system ruby-build-system)
6102 (propagated-inputs
6103 (list ruby-minitest))
6104 (native-inputs
6105 (list ruby-hoe))
6106 (synopsis "Allows a few specific tests to be focused on")
6107 (description
6108 "@code{minitest-focus} gives the ability focus on a few tests with ease
6109without having to use command-line arguments. It introduces a @code{focus}
6110class method for use in testing classes, specifying that the next defined test
6111is to be run.")
6112 (home-page "https://github.com/seattlerb/minitest-focus")
6113 (license license:expat)))
6114
6115(define-public ruby-minitest-power-assert
6116 (package
6117 (name "ruby-minitest-power-assert")
6118 (version "0.3.1")
6119 (source (origin
6120 (method url-fetch)
6121 (uri (rubygems-uri "minitest-power_assert" version))
6122 (sha256
6123 (base32
6124 "1dazl6nbxjvvmi5jamrsygkz396s29b7cd841ni6qy4izk8jd9b7"))))
6125 (build-system ruby-build-system)
6126 (propagated-inputs (list ruby-minitest ruby-power-assert))
6127 (synopsis "Power Assert implementation for Minitest")
6128 (description "This gem provides a Power Assert implementation for
6129Minitest. It is inspired by the @code{test-unit-power_assert} gem.")
6130 (home-page "https://github.com/hsbt/minitest-power_assert")
6131 (license license:bsd-2)))
6132
6133(define-public ruby-minitest-profile
6134 (package
6135 (name "ruby-minitest-profile")
6136 (version "0.0.2")
6137 (source (origin
6138 (method url-fetch)
6139 (uri (rubygems-uri "minitest-profile" version))
6140 (sha256
6141 (base32
6142 "13h4nwbq6yv7hsaa7dpj90lry4rc5qqnpzvm9n2s57mm2xi31xfa"))))
6143 (build-system ruby-build-system)
6144 (synopsis "Display the slowest tests in a MiniTest suite")
6145 (description "This package provides a MiniTest plugin for displaying the
6146slowest tests in a minitest suite.")
6147 (home-page "https://github.com/nmeans/minitest-profile")
6148 (license license:expat)))
6149
6150(define-public ruby-minitest-proveit
6151 (package
6152 (name "ruby-minitest-proveit")
6153 (version "1.0.0")
6154 (source (origin
6155 (method url-fetch)
6156 (uri (rubygems-uri "minitest-proveit" version))
6157 (sha256
6158 (base32
6159 "0k1hpr8lgkgygfivgcsnnib7xjlf9ribgpn7yidvb4q0l0q2yfmr"))))
6160 (build-system ruby-build-system)
6161 (native-inputs (list ruby-hoe))
6162 (propagated-inputs (list ruby-minitest))
6163 (synopsis "Assertion-based tests extension for MiniTest")
6164 (description "The @code{minitest-proveit} MiniTest extension ensures all
6165tests to prove success (via at least one assertion) rather than rely on the
6166absence of failure.")
6167 (home-page "https://github.com/seattlerb/minitest-proveit")
6168 (license license:expat)))
6169
6170(define-public ruby-minitest-moar
6171 (package
6172 (name "ruby-minitest-moar")
6173 (version "0.0.4")
6174 (source
6175 (origin
6176 (method url-fetch)
6177 (uri (rubygems-uri "minitest-moar" version))
6178 (sha256
6179 (base32
6180 "0nb83blrsab92gcy6nfpw39njys7zisia8pw4igzzfzfl51cis0x"))))
6181 (build-system ruby-build-system)
6182 (arguments
6183 `(#:phases
6184 (modify-phases %standard-phases
6185 (add-before 'check 'clean-dependencies
6186 (lambda _
6187 ;; Remove all gems defined in the Gemfile because these are not
6188 ;; truly needed.
6189 (substitute* "Gemfile"
6190 (("gem .*") ""))
6191 ;; Remove byebug as not needed to run tests.
6192 (substitute* "test/test_helper.rb"
6193 (("require 'byebug'") "")))))))
6194 (native-inputs
6195 (list bundler ruby-minitest))
6196 (synopsis "Extra features and changes to MiniTest")
6197 (description "@code{MiniTest Moar} add some additional features and
6198changes some default behaviours in MiniTest. For instance, Moar replaces the
6199MiniTest @code{Object#stub} with a global @code{stub} method.")
6200 (home-page "https://github.com/dockyard/minitest-moar")
6201 (license license:expat)))
6202
6203(define-public ruby-minitest-bonus-assertions
6204 (package
6205 (name "ruby-minitest-bonus-assertions")
6206 (version "3.0")
6207 (source
6208 (origin
6209 (method url-fetch)
6210 (uri (rubygems-uri "minitest-bonus-assertions" version))
6211 (sha256
6212 (base32
6213 "1hbq9jk904xkz868yha1bqcm6azm7kmjsll2k4pn2nrcib508h2a"))))
6214 (build-system ruby-build-system)
6215 (arguments
6216 (list
6217 #:tests? #f ; Test suite has bitrotted.
6218 #:phases
6219 #~(modify-phases %standard-phases
6220 (add-before 'check 'clean-dependencies
6221 (lambda _
6222 ;; Remove unneeded require statement that would entail another
6223 ;; dependency.
6224 (substitute* "test/minitest_config.rb"
6225 (("require 'minitest/bisect'") "")))))))
6226 (native-inputs
6227 (list ruby-hoe
6228 ruby-minitest-focus
6229 ruby-minitest-moar))
6230 (synopsis "Bonus assertions for @code{Minitest}")
6231 (description
6232 "Minitest bonus assertions provides extra MiniTest assertions. For
6233instance, it provides @code{assert_true}, @code{assert_false} and
6234@code{assert_set_equal}.")
6235 (home-page "https://github.com/halostatue/minitest-bonus-assertions")
6236 (license license:expat)))
6237
6238(define-public ruby-minitest-reporters
6239 (package
6240 (name "ruby-minitest-reporters")
6241 (version "1.3.6")
6242 (source
6243 (origin
6244 (method url-fetch)
6245 (uri (rubygems-uri "minitest-reporters" version))
6246 (sha256
6247 (base32
6248 "1a3das80rwgys5rj48i5ly144nvszyqyi748bk9bss74jblcf5ay"))))
6249 (build-system ruby-build-system)
6250 (arguments
6251 '(#:phases
6252 (modify-phases %standard-phases
6253 ;; Remove the requirement on Rubocop, as it isn't useful to run, and
6254 ;; including it as an input can lead to circular dependencies.
6255 (add-after 'unpack 'remove-rubocop-from-Rakefile
6256 (lambda _
6257 (substitute* "Rakefile"
6258 (("require 'rubocop/rake\\_task'") "")
6259 (("RuboCop::RakeTask\\.new\\(:rubocop\\)") "[].each"))))
6260 (add-after 'extract-gemspec 'remove-rubocop-from-gemspec
6261 (lambda _
6262 (substitute* "minitest-reporters.gemspec"
6263 ((".*%q<rubocop>.*") "\n")))))))
6264 (propagated-inputs
6265 (list ruby-ansi ruby-builder ruby-minitest ruby-progressbar))
6266 (native-inputs
6267 (list bundler ruby-maruku))
6268 (synopsis "Enhanced reporting for Minitest tests")
6269 (description
6270 "@code{minitest/reporters} provides a custom Minitest runner to improve
6271how the test state is reported. A number of different reporters are
6272available, including a spec reporter, progress bar reporter, a HTML
6273reporter.")
6274 (home-page "https://github.com/kern/minitest-reporters")
6275 (license license:expat)))
6276
6277(define-public ruby-minitest-rg
6278 (package
6279 (name "ruby-minitest-rg")
6280 (version "5.2.0")
6281 (source
6282 (origin
6283 (method url-fetch)
6284 (uri (rubygems-uri "minitest-rg" version))
6285 (sha256
6286 (base32
6287 "0sq509ax1x62rd0w10b0hcydcxyk5bxxr3fwrgxv02r8drq2r354"))))
6288 (build-system ruby-build-system)
6289 (arguments
6290 ;; Some tests fail even outside Guix, so disable tests.
6291 ;; https://github.com/blowmage/minitest-rg/issues/12
6292 ;; https://github.com/blowmage/minitest-rg/pull/13
6293 `(#:tests? #f))
6294 (propagated-inputs
6295 (list ruby-minitest))
6296 (synopsis "Coloured output for Minitest")
6297 (description
6298 "@code{minitest-rg} changes the colour of the output from Minitest.")
6299 (home-page "https://blowmage.com/minitest-rg/")
6300 (license license:expat)))
6301
6302(define-public ruby-minitest-global-expectations
6303 (package
6304 (name "ruby-minitest-global-expectations")
6305 (version "1.0.1")
6306 (source
6307 (origin
6308 (method url-fetch)
6309 (uri (rubygems-uri "minitest-global_expectations"
6310 version))
6311 (sha256
6312 (base32
6313 "1pp3k2608spj4kvqy2y16hs18an917g6vwgvphrfhjviac83090x"))))
6314 (build-system ruby-build-system)
6315 (propagated-inputs
6316 (list ruby-minitest))
6317 (synopsis "Adjust minitest behaviour for calling expectation methods")
6318 (description
6319 "Minitest-global_expectations allows continued use of expectation methods
6320on all objects. Calling expectation methods on all objects was deprecated in
6321minitest 5.12, and is planned to be removed from minitest 6.")
6322 (home-page "https://github.com/jeremyevans/minitest-global_expectations")
6323 (license license:expat)))
6324
6325(define-public ruby-minitest-hooks
6326 (package
6327 (name "ruby-minitest-hooks")
6328 (version "1.5.2")
6329 (source
6330 (origin
6331 (method url-fetch)
6332 (uri (rubygems-uri "minitest-hooks" version))
6333 (sha256
6334 (base32 "11jb31dl5kbpyl3kgxql0p7da9066r2aqw54y5q6cni9nmld3zf5"))))
6335 (build-system ruby-build-system)
6336 (arguments
6337 '(#:tests? #f)) ; No tests bundled.
6338 (native-inputs
6339 (list ruby-sequel ruby-sqlite3))
6340 (synopsis "Hooks for the minitest framework")
6341 (description
6342 "Minitest-hooks adds @code{around}, @code{before_all}, @code{after_all},
6343@code{around_all} hooks for Minitest. This allows, for instance, running each
6344suite of specs inside a database transaction, running each spec inside its own
6345savepoint inside that transaction. This can significantly speed up testing
6346for specs that share expensive database setup code.")
6347 (home-page "https://github.com/jeremyevans/minitest-hooks")
6348 (license license:expat)))
6349
6350(define-public ruby-daemons
6351 (package
6352 (name "ruby-daemons")
6353 (version "1.2.5")
6354 (source (origin
6355 (method url-fetch)
6356 (uri (rubygems-uri "daemons" version))
6357 (sha256
6358 (base32
6359 "15smbsg0gxb7nf0nrlnplc68y0cdy13dm6fviavpmw7c630sring"))))
6360 (build-system ruby-build-system)
6361 (arguments
6362 `(#:tests? #f)) ; no test suite
6363 (synopsis "Daemonize Ruby programs")
6364 (description "Daemons provides a way to wrap existing Ruby scripts to be
6365run as a daemon and to be controlled by simple start/stop/restart commands.")
6366 (home-page "https://github.com/thuehlinger/daemons")
6367 (license license:expat)))
6368
6369(define-public ruby-dalli
6370 (package
6371 (name "ruby-dalli")
6372 (version "3.2.4")
6373 (source (origin
6374 (method git-fetch) ;for tests
6375 (uri (git-reference
6376 (url "https://github.com/petergoldstein/dalli")
6377 (commit (string-append "v" version))))
6378 (file-name (git-file-name name version))
6379 (sha256
6380 (base32
6381 "1hhqqv1j3zd2y0vr6maaabsflrvkf1x0i6z8n725mhqydp3f9gwp"))))
6382 (build-system ruby-build-system)
6383 ;; Disable tests to avoid a dependency cycle with ruby-activesupport,
6384 ;; through ruby-ruby-prof.
6385 (arguments (list #:tests? #f))
6386 (synopsis "High performance memcached client for Ruby")
6387 (description "Dalli is a high performance pure Ruby client for accessing
6388memcached servers. Dalli supports:
6389
6390@itemize
6391@item Simple and complex memcached configurations
6392@item Fail-over between memcached instances
6393@item Fine-grained control of data serialization and compression
6394@item Thread-safe operation
6395@item SSL/TLS connections to memcached
6396@item SASL authentication.
6397@end itemize
6398
6399The name is a variant of Salvador Dali for his famous painting The Persistence
6400of Memory.")
6401 (home-page "https://github.com/petergoldstein/dalli")
6402 (license license:expat)))
6403
6404(define-public ruby-data_uri
6405 (package
6406 (name "ruby-data_uri")
6407 (version "0.1.0")
6408 (source
6409 (origin
6410 (method url-fetch)
6411 (uri (rubygems-uri "data_uri" version))
6412 (sha256
6413 (base32
6414 "0fzkxgdxrlbfl4537y3n9mjxbm28kir639gcw3x47ffchwsgdcky"))))
6415 (build-system ruby-build-system)
6416 (synopsis "URI class for parsing data URIs")
6417 (description
6418 "Data @acronym{URI, universal resource identifier}s allow resources to be
6419embedded inside a URI. The URI::Data class provides support for parsing these
6420URIs using the normal URI.parse method.")
6421 (home-page "https://github.com/dball/data_uri")
6422 (license license:expat)))
6423
6424(define-public ruby-debug
6425 (package
6426 (name "ruby-debug")
6427 (version "1.7.2")
6428 (source (origin
6429 (method url-fetch)
6430 (uri (rubygems-uri "debug" version))
6431 (sha256
6432 (base32
6433 "0x59508j69w9p275gabysv521n210pd3n060gqfgsiqjms1h0ldf"))))
6434 (build-system ruby-build-system)
6435 (arguments (list #:test-target "test_all"))
6436 (propagated-inputs (list ruby-irb ruby-reline))
6437 (synopsis "Debugging functionality for Ruby")
6438 (description "Debugging functionality for Ruby. This is completely
6439rewritten debug.rb which was contained by the ancient Ruby versions. It is
6440included with Ruby itself, but this package is made available so that the
6441latest version can be made available independently from Ruby.")
6442 (home-page "https://github.com/ruby/debug")
6443 (license license:bsd-2)))
6444
6445(define-public ruby-deep-merge
6446 (package
6447 (name "ruby-deep-merge")
6448 (version "1.2.1")
6449 (home-page "https://github.com/danielsdeleo/deep_merge")
6450 ;; The Rubygem source does not contain the gemspec required for tests.
6451 (source (origin
6452 (method git-fetch)
6453 (uri (git-reference (url home-page) (commit version)))
6454 (file-name (git-file-name name version))
6455 (sha256
6456 (base32
6457 "0c9rk23ilhc0n4489y6lda2wzphpzh6ish6fahlbpjhxn82wb931"))))
6458 (build-system ruby-build-system)
6459 (native-inputs
6460 (list ruby-minitest))
6461 (synopsis "Recursively merge hashes")
6462 (description
6463 "Deep Merge is a set of utility functions for @code{Hash}. It permits
6464you to merge elements inside a hash together recursively.")
6465 (license license:expat)))
6466
6467(define-public ruby-delayed-job
6468 (package
6469 (name "ruby-delayed-job")
6470 (version "4.1.11")
6471 (source (origin
6472 (method url-fetch)
6473 (uri (rubygems-uri "delayed_job" version))
6474 (sha256
6475 (base32
6476 "0s2xg72ljg4cwmr05zi67vcyz8zib46gvvf7rmrdhsyq387m2qcq"))))
6477 (build-system ruby-build-system)
6478 (arguments
6479 (list #:phases
6480 #~(modify-phases %standard-phases
6481 (add-after 'unpack 'disable-bundler
6482 (lambda _
6483 (substitute* "Rakefile"
6484 (("require 'bundler/setup'") "")
6485 (("Bundler::GemHelper\\.install_tasks") ""))))
6486 (add-after 'unpack 'disable-rubocop
6487 (lambda _
6488 (substitute* "Rakefile"
6489 (("require 'rubocop/rake_task'") "")
6490 (("RuboCop::RakeTask.new") ""))))
6491 (add-after 'extract-gemspec 'remove-dependency-on-actionmailer
6492 (lambda _
6493 (substitute* "spec/helper.rb"
6494 (("require 'action_mailer'") ""))
6495 (substitute* "delayed_job.gemspec"
6496 (("\"spec/performable_mailer_spec.rb\".freeze, ") ""))
6497 (delete-file "spec/performable_mailer_spec.rb"))))))
6498 (native-inputs
6499 (list ruby-activerecord
6500 ruby-rspec
6501 ruby-simplecov
6502 ruby-simplecov-lcov
6503 ruby-zeitwerk
6504 ruby-mini-portile-2))
6505 (propagated-inputs
6506 (list ruby-activesupport))
6507 (synopsis "Asynchronous background tasks execution library")
6508 (description "Delayed_job (or DJ) encapsulates the common pattern of
6509asynchronously executing longer tasks in the background. It is a direct
6510extraction from Shopify where the job table is responsible for a multitude of
6511core tasks.")
6512 (home-page "https://github.com/collectiveidea/delayed_job")
6513 (license license:expat)))
6514
6515(define-public ruby-git
6516 (package
6517 (name "ruby-git")
6518 (version "1.3.0")
6519 (source (origin
6520 (method url-fetch)
6521 (uri (rubygems-uri "git" version))
6522 (sha256
6523 (base32
6524 "1waikaggw7a1d24nw0sh8fd419gbf7awh000qhsf411valycj6q3"))))
6525 (build-system ruby-build-system)
6526 (arguments
6527 `(#:tests? #f ; no tests
6528 #:phases (modify-phases %standard-phases
6529 (add-after 'install 'patch-git-binary
6530 (lambda* (#:key inputs outputs #:allow-other-keys)
6531 ;; Make the default git binary an absolute path to the
6532 ;; store.
6533 (let ((git (search-input-file inputs "/bin/git"))
6534 (config (string-append
6535 (assoc-ref outputs "out")
6536 "/lib/ruby/vendor_ruby/gems/git-"
6537 ,version "/lib/git/config.rb")))
6538 (substitute* (list config)
6539 (("'git'")
6540 (string-append "'" git "'")))))))))
6541 (inputs
6542 (list git))
6543 (synopsis "Ruby wrappers for Git")
6544 (description "Ruby/Git is a Ruby library that can be used to create, read
6545and manipulate Git repositories by wrapping system calls to the git binary.")
6546 (home-page "https://github.com/schacon/ruby-git")
6547 (license license:expat)))
6548
6549(define-public ruby-hocon
6550 (package
6551 (name "ruby-hocon")
6552 (version "1.4.0")
6553 (home-page "https://github.com/puppetlabs/ruby-hocon")
6554 (source (origin
6555 (method git-fetch)
6556 (uri (git-reference (url home-page) (commit version)))
6557 (file-name (git-file-name name version))
6558 (sha256
6559 (base32
6560 "04wgv0pwrghawnl6qp346z59fvp9v37jymq8p0lsrzxa6nvrykmk"))))
6561 (build-system ruby-build-system)
6562 (arguments
6563 (list
6564 #:phases
6565 #~(modify-phases %standard-phases
6566 (replace 'check
6567 (lambda* (#:key tests? #:allow-other-keys)
6568 (if tests?
6569 (invoke "rspec")
6570 (format #t "test suite not run~%")))))))
6571 (native-inputs
6572 (list bundler ruby-rspec))
6573 (synopsis "HOCON config library")
6574 (description
6575 "This package provides Ruby support for the @acronym{HOCON,
6576Human-Optimized Config Object Notation} configuration file format. It
6577supports parsing and modifying HOCON and JSON files, and rendering parsed
6578objects back to a @code{String}.")
6579 (license license:asl2.0)))
6580
6581(define-public ruby-slop
6582 (package
6583 (name "ruby-slop")
6584 (version "4.10.1")
6585 (source (origin
6586 (method url-fetch)
6587 (uri (rubygems-uri "slop" version))
6588 (sha256
6589 (base32
6590 "1iyrjskgxyn8i1679qwkzns85p909aq77cgx2m4fs5ygzysj4hw4"))))
6591 (build-system ruby-build-system)
6592 (synopsis "Ruby command line option parser")
6593 (description "Slop provides a Ruby domain specific language for gathering
6594options and parsing command line flags.")
6595 (home-page "https://github.com/leejarvis/slop")
6596 (license license:expat)))
6597
6598(define-public ruby-slop-3
6599 (package (inherit ruby-slop)
6600 (version "3.6.0")
6601 (source (origin
6602 (method url-fetch)
6603 (uri (rubygems-uri "slop" version))
6604 (sha256
6605 (base32
6606 "00w8g3j7k7kl8ri2cf1m58ckxk8rn350gp4chfscmgv6pq1spk3n"))))))
6607
6608(define-public ruby-multi-xml
6609 (package
6610 (name "ruby-multi-xml")
6611 (version "0.6.0")
6612 (source
6613 (origin
6614 (method url-fetch)
6615 (uri (rubygems-uri "multi_xml" version))
6616 (sha256
6617 (base32
6618 "0lmd4f401mvravi1i1yq7b2qjjli0yq7dfc4p1nj5nwajp7r6hyj"))))
6619 (build-system ruby-build-system)
6620 (arguments
6621 '(#:tests? #f)) ; No included tests
6622 (synopsis "Swappable XML backends for Ruby")
6623 (description
6624 "@code{MultiXml} provides swappable XML backends utilizing either LibXML,
6625Nokogiri, Ox, or REXML.")
6626 (home-page "https://github.com/sferik/multi_xml")
6627 (license license:expat)))
6628
6629(define-public ruby-multipart-parser
6630 (package
6631 (name "ruby-multipart-parser")
6632 (version "0.1.1")
6633 (source (origin
6634 (method url-fetch)
6635 (uri (rubygems-uri "multipart-parser" version))
6636 (sha256
6637 (base32
6638 "0xb4p475yrfm883h9kn80a021myn17dvs50wpa1djzcmlq7p0882"))))
6639 (build-system ruby-build-system)
6640 (arguments
6641 (list
6642 #:phases #~(modify-phases %standard-phases
6643 (add-after 'unpack 'skip-failing-test
6644 ;; One test fails for unknown reasons (see:
6645 ;; https://github.com/danabr/multipart-parser/issues/7).
6646 (lambda _
6647 (substitute* "test/multipart_parser/reader_test.rb"
6648 (("def test_long" all)
6649 (string-append all "\n return true"))))))))
6650 (synopsis "Parser for multipart MIME messages")
6651 (description "@code{multipart-parser} is a simple parser for multipart
6652MIME messages, written in Ruby, based on felixge/node-formidable's parser. It
6653has the following characteristics:
6654@itemize
6655@item Pure Ruby
6656@item Event-driven API
6657@item Only supports one level of multipart parsing
6658@item Does not perform I/O
6659@item Does not depend on any other library.
6660@end itemize")
6661 (home-page "https://github.com/danabr/multipart-parser")
6662 (license license:expat)))
6663
6664(define-public ruby-multipart-post
6665 (package
6666 (name "ruby-multipart-post")
6667 (version "2.0.0")
6668 (source (origin
6669 (method url-fetch)
6670 (uri (rubygems-uri "multipart-post" version))
6671 (sha256
6672 (base32
6673 "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x"))))
6674 (build-system ruby-build-system)
6675 (native-inputs
6676 (list bundler))
6677 (synopsis "Multipart POST library for Ruby")
6678 (description "Multipart-Post Adds multipart POST capability to Ruby's
6679net/http library.")
6680 (home-page "https://github.com/nicksieger/multipart-post")
6681 (license license:expat)))
6682
6683(define-public ruby-multi-json
6684 (package
6685 (name "ruby-multi-json")
6686 (version "1.15.0")
6687 (source
6688 (origin
6689 (method git-fetch)
6690 ;; Tests are not distributed at rubygems.org so download from GitHub
6691 ;; instead.
6692 (uri (git-reference
6693 (url "https://github.com/intridea/multi_json")
6694 (commit (string-append "v" version))))
6695 (file-name (git-file-name name version))
6696 (sha256
6697 (base32
6698 "0mkdvy6i00yyksjvnv6znh7wf89j9506qzzjq6bsbmbkyqrszp4d"))))
6699 (build-system ruby-build-system)
6700 (arguments
6701 (list
6702 ;; TODO Tests don't currently work with Ruby 3
6703 #:tests? #f
6704 #:phases
6705 #~(modify-phases %standard-phases
6706 (add-before 'check 'pre-check
6707 (lambda _
6708 ;; As seen in the .travis.yml file.
6709 (setenv "SKIP_ADAPTERS" "gson,jr_jackson,nsjsonserialization"))))))
6710 (native-inputs
6711 (list ruby-rspec ruby-json-pure ruby-oj ruby-yajl-ruby))
6712 (synopsis "Common interface to multiple JSON libraries for Ruby")
6713 (description
6714 "This package provides a common interface to multiple JSON libraries,
6715including Oj, Yajl, the JSON gem (with C-extensions), the pure-Ruby JSON gem,
6716NSJSONSerialization, gson.rb, JrJackson, and OkJson.")
6717 (home-page "https://github.com/intridea/multi_json")
6718 (license license:expat)))
6719
6720(define-public ruby-multi-test
6721 (package
6722 (name "ruby-multi-test")
6723 (version "0.1.2")
6724 (source
6725 (origin
6726 (method url-fetch)
6727 (uri (rubygems-uri "multi_test" version))
6728 (sha256
6729 (base32
6730 "1sx356q81plr67hg16jfwz9hcqvnk03bd9n75pmdw8pfxjfy1yxd"))))
6731 (build-system ruby-build-system)
6732 (arguments
6733 '(;; Tests require different sets of specific gem versions to be available,
6734 ;; and there is no gemfile that specifies the newest versions of
6735 ;; dependencies to be tested.
6736 #:tests? #f))
6737 (synopsis
6738 "Interface to testing libraries loaded into a running Ruby process")
6739 (description
6740 "@code{multi_test} provides a uniform interface onto whatever testing
6741libraries that have been loaded into a running Ruby process to help control
6742rogue test/unit/autorun requires.")
6743 (home-page "https://github.com/cucumber/multi_test")
6744 (license license:expat)))
6745
6746(define-public ruby-arr-pm
6747 (package
6748 (name "ruby-arr-pm")
6749 (version "0.0.12")
6750 (source (origin
6751 (method url-fetch)
6752 (uri (rubygems-uri "arr-pm" version))
6753 (sha256
6754 (base32
6755 "0fddw0vwdrr7v3a0lfqbmnd664j48a9psrjd3wh3k4i3flplizzx"))))
6756 (build-system ruby-build-system)
6757 (arguments
6758 (list #:phases
6759 #~(modify-phases %standard-phases
6760 (replace 'check
6761 (lambda* (#:key tests? #:allow-other-keys)
6762 (when tests?
6763 (invoke "rspec")))))))
6764 (native-inputs (list ruby-flores ruby-insist ruby-rspec ruby-stud))
6765 (synopsis "RPM reader/writer library written in Ruby")
6766 (description "This library allows reading and writing RPM packages. It is
6767used by the @command{fpm} tool. It is written in pure Ruby because
6768@code{librpm} is not available on all systems and requires many
6769dependencies.")
6770 (home-page "https://github.com/jordansissel/ruby-arr-pm")
6771 (license license:asl2.0)))
6772
6773(define-public ruby-arel
6774 (package
6775 (name "ruby-arel")
6776 (version "9.0.0")
6777 (source (origin
6778 (method url-fetch)
6779 (uri (rubygems-uri "arel" version))
6780 (sha256
6781 (base32
6782 "1jk7wlmkr61f6g36w9s2sn46nmdg6wn2jfssrhbhirv5x9n95nk0"))))
6783 (build-system ruby-build-system)
6784 (arguments '(#:tests? #f)) ; no tests
6785 (home-page "https://github.com/rails/arel")
6786 (synopsis "SQL AST manager for Ruby")
6787 (description "Arel is an SQL @dfn{Abstract Syntax Tree} (AST) manager for
6788Ruby. It simplifies the generation of complex SQL queries and adapts to
6789various relational database implementations.")
6790 (license license:expat)))
6791
6792(define-public ruby-minitar
6793 ;; We package from the GitHub source to fix the security issue reported at
6794 ;; https://github.com/halostatue/minitar/issues/16.
6795 (let ((commit "e25205ecbb6277ae8a3df1e6a306d7ed4458b6e4"))
6796 (package
6797 (name "ruby-minitar")
6798 (version (string-append "0.5.4-1." (string-take commit 8)))
6799 (source
6800 (origin
6801 (method git-fetch)
6802 (uri (git-reference
6803 (url "https://github.com/halostatue/minitar")
6804 (commit commit)))
6805 (file-name (string-append name "-" version "-checkout"))
6806 (sha256
6807 (base32
6808 "1iywfx07jgjqcmixzkxk9zdwfmij1fyg1z2jlwzj15cj7s99qlfv"))))
6809 (build-system ruby-build-system)
6810 (arguments
6811 '(#:tests? #f)) ; missing a gemspec
6812 (synopsis "Ruby library and utility for handling tar archives")
6813 (description
6814 "Archive::Tar::Minitar is a pure-Ruby library and command-line utility
6815that provides the ability to deal with POSIX tar archive files.")
6816 (home-page "http://www.github.com/atoulme/minitar")
6817 (license (list license:gpl2+ license:ruby)))))
6818
6819(define-public ruby-mini-portile
6820 (package
6821 (name "ruby-mini-portile")
6822 (version "0.6.2")
6823 (source
6824 (origin
6825 (method url-fetch)
6826 (uri (rubygems-uri "mini_portile" version))
6827 (sha256
6828 (base32
6829 "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w"))))
6830 (build-system ruby-build-system)
6831 (arguments
6832 '(#:tests? #f)) ; tests require network access
6833 (synopsis "Ports system for Ruby developers")
6834 (description "Mini-portile is a port/recipe system for Ruby developers.
6835It provides a standard way to compile against specific versions of libraries
6836to reproduce user environments.")
6837 (home-page "https://github.com/flavorjones/mini_portile")
6838 (license license:expat)))
6839
6840(define-public ruby-mini-portile-2
6841 (package
6842 (inherit ruby-mini-portile)
6843 (version "2.8.2")
6844 (source (origin
6845 (method url-fetch)
6846 (uri (rubygems-uri "mini_portile2" version))
6847 (sha256
6848 (base32
6849 "0z7f38iq37h376n9xbl4gajdrnwzq284c9v1py4imw3gri2d5cj6"))))))
6850
6851(define-public ruby-nokogiri
6852 (package
6853 (name "ruby-nokogiri")
6854 (version "1.15.2")
6855 (source (origin
6856 (method git-fetch)
6857 (uri (git-reference
6858 (url "https://github.com/sparklemotion/nokogiri")
6859 (commit "a6ad20b3edc8f020043ccfe5d9ec6ae9af103720")))
6860 (file-name (git-file-name name version))
6861 (sha256
6862 (base32
6863 "1n0vlg6v58jw3qzgyihz1dh5fvp4js1qgdh75j0kn47nvyiw3jxj"))
6864 (patches (search-patches "ruby-nokogiri.patch"))))
6865 (build-system ruby-build-system)
6866 (arguments
6867 (list #:gem-flags #~(list "--" "--use-system-libraries"
6868 (string-append "--with-xml2-include="
6869 #$(this-package-input "libxml2")
6870 "/include/libxml2"))
6871 #:phases #~(modify-phases %standard-phases
6872 (add-after 'install 'delete-mkmf.log
6873 (lambda _
6874 ;; Rubygems installs build log files that embed volatile file
6875 ;; names (see:
6876 ;; https://github.com/rubygems/rubygems/issues/6259).
6877 (for-each delete-file
6878 (find-files #$output "^mkmf\\.log$"))))
6879 (delete 'check)
6880 (add-after 'install 'check
6881 (lambda* (#:key tests? #:allow-other-keys)
6882 (setenv "GEM_PATH" (string-append
6883 (getenv "GEM_PATH") ":"
6884 #$output "/lib/ruby/vendor_ruby"))
6885 (when tests?
6886 (for-each (lambda (file)
6887 (invoke "ruby" "-Itest" file))
6888 (find-files "test" "^test_.*\\.rb"))))))))
6889 (native-inputs (list ruby-hoe ruby-rubyzip))
6890 (inputs (list zlib libxml2 libxslt))
6891 (propagated-inputs (list ruby-mini-portile-2 ruby-pkg-config))
6892 (synopsis "HTML, XML, SAX, and Reader parser for Ruby")
6893 (description "Nokogiri (鋸) parses and searches XML/HTML, and features
6894both CSS3 selector and XPath 1.0 support.")
6895 (home-page "https://nokogiri.org/")
6896 (license license:expat)))
6897
6898(define-public ruby-method-source
6899 (package
6900 (name "ruby-method-source")
6901 (version "1.0.0")
6902 (source
6903 (origin
6904 (method url-fetch)
6905 (uri (rubygems-uri "method_source" version))
6906 (sha256
6907 (base32
6908 "1pnyh44qycnf9mzi1j6fywd5fkskv3x7nmsqrrws0rjn5dd4ayfp"))))
6909 (build-system ruby-build-system)
6910 (arguments
6911 `(#:test-target "spec"
6912 #:phases
6913 (modify-phases %standard-phases
6914 (add-after 'unpack 'remove-git-ls-files
6915 (lambda* (#:key outputs #:allow-other-keys)
6916 (substitute* "Rakefile"
6917 (("git ls-files") "find . -type f")))))))
6918 (native-inputs
6919 (list ruby-rspec))
6920 (synopsis "Retrieve the source code for Ruby methods")
6921 (description "Method_source retrieves the source code for Ruby methods.
6922Additionally, it can extract source code from Proc and Lambda objects or just
6923extract comments.")
6924 (home-page "https://github.com/banister/method_source")
6925 (license license:expat)))
6926
6927(define-public ruby-coderay
6928 (package
6929 (name "ruby-coderay")
6930 (version "1.1.2")
6931 (source
6932 (origin
6933 (method url-fetch)
6934 (uri (rubygems-uri "coderay" version))
6935 (sha256
6936 (base32
6937 "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y"))))
6938 (build-system ruby-build-system)
6939 (arguments
6940 '(#:tests? #f)) ; missing test files
6941 (synopsis "Ruby syntax highlighting library")
6942 (description "Coderay is a Ruby library that provides syntax highlighting
6943for select languages.")
6944 (home-page "http://coderay.rubychan.de")
6945 (license license:expat)))
6946
6947(define-public ruby-cuke-modeler
6948 (package
6949 (name "ruby-cuke-modeler")
6950 (version "3.20.1")
6951 (source (origin
6952 (method git-fetch)
6953 (uri (git-reference
6954 (url "https://github.com/enkessler/cuke_modeler")
6955 (commit (string-append "v" version))))
6956 (file-name (git-file-name name version))
6957 (sha256
6958 (base32
6959 "0xbnx1blxm4kfhfwfh58n2ja40p2kfw8hbbz60dlzvghz25vcwy6"))))
6960 (build-system ruby-build-system)
6961 (arguments
6962 (list #:test-target "default"
6963 #:phases
6964 #~(modify-phases %standard-phases
6965 (add-after 'unpack 'improve-reproducibility
6966 (lambda _
6967 (substitute*
6968 "testing/rspec/spec/unit/cuke_modeler_unit_spec.rb"
6969 (("#\\{Time.now.year\\}") ""))))
6970 (add-after 'unpack 'relax-requirements
6971 (lambda _
6972 (substitute* "Gemfile"
6973 ;; Cucumber appears pinned to an older version for no
6974 ;; particular reason (see:
6975 ;; https://github.com/enkessler/cuke_modeler/issues/14).
6976 (("'cucumber', '2.2.0'")
6977 "'cucumber', '>= 2.2.0'")
6978 (("^gherkin_major_version_used = .*")
6979 (string-append
6980 "gherkin_major_version_used = "
6981 #$(car
6982 (string-split
6983 (package-version
6984 (this-package-input "ruby-cucumber-gherkin")) #\.))
6985 "\n")))
6986 ;; Disable Bundler.
6987 (substitute* "bin/console"
6988 (("require 'bundler/setup'") ""))
6989 (substitute* "rakefiles/testing_tasks.rb"
6990 (("'bundle', 'exec', ") ""))
6991 ;; Remove extraneous dependencies.
6992 (substitute* "cuke_modeler.gemspec"
6993 ((".*bundler.*") "")
6994 ((".*rubocop.*") "")
6995 ((".*yard.*") ""))
6996 (substitute* "Rakefile"
6997 (("Rainbow.enabled = true") "")
6998 (("require_relative 'rakefiles/documentation_tasks'") "")
6999 (("require_relative 'rakefiles/other_tasks'") "")
7000 (("require_relative 'rakefiles/release_tasks'") "")))))))
7001 (native-inputs
7002 (list ruby-childprocess
7003 ruby-cucumber
7004 ruby-rainbow
7005 ruby-rspec
7006 ruby-simplecov
7007 ruby-simplecov-lcov))
7008 (propagated-inputs (list ruby-cucumber-gherkin))
7009 (synopsis "Gherkin test suite analysis tool")
7010 (description "CukeModeler facilitates modeling a test suite that is
7011written in Gherkin (e.g. Cucumber, SpecFlow, Lettuce, etc.). It does this by
7012providing an abstraction layer on top of the Abstract Syntax Tree (AST) that
7013the @code{cucumber-gherkin} generates when parsing features, as well as
7014providing models for feature files and directories in order to be able to have
7015a fully traversable model tree of a test suite's structure. These models can
7016then be analyzed or manipulated more easily than the underlying AST layer.")
7017 (home-page "https://github.com/enkessler/cuke_modeler")
7018 (license license:expat)))
7019
7020(define-public ruby-parallel-tests
7021 (package
7022 (name "ruby-parallel-tests")
7023 (version "4.9.0")
7024 (home-page "https://github.com/grosser/parallel_tests")
7025 (source (origin
7026 (method git-fetch)
7027 (uri (git-reference
7028 (url home-page)
7029 (commit (string-append "v" version))))
7030 (file-name (string-append name version))
7031 (sha256
7032 (base32
7033 "0ljb17i1bvlr0y1avwishcrg60h48bj6iwgkp8yrck08wcs7b338"))))
7034 (build-system ruby-build-system)
7035 (arguments
7036 '(#:test-target "spec" ;avoid rubocop dependency
7037 #:phases (modify-phases %standard-phases
7038 (add-after 'patch-source-shebangs 'patch-shell-invocations
7039 (lambda _
7040 (substitute* '("lib/parallel_tests/tasks.rb"
7041 "spec/parallel_tests/tasks_spec.rb")
7042 (("/bin/sh") (which "sh"))
7043 (("/bin/bash") (which "bash")))))
7044 (add-before 'check 'relax-requirements
7045 (lambda _
7046 ;; Remove hard coded version constraints, instead just
7047 ;; use whatever versions are available in Guix.
7048 (delete-file "Gemfile.lock")
7049 (substitute* "Gemfile"
7050 (("'minitest',.*")
7051 "'minitest'\n")
7052 (("'cucumber',.*")
7053 "'cucumber'\n")
7054 ;; Do not depend on a git-fetched spinach version.
7055 (("gem 'spinach',.*")
7056 "gem 'spinach'\n")
7057 ((".*rubocop.*") ""))))
7058 (add-before 'check 'disable-rails-test
7059 (lambda _
7060 ;; XXX: This test attempts to download and run the test
7061 ;; suites of multiple Rails versions(!) directly.
7062 (delete-file "spec/rails_spec.rb")))
7063 (add-before 'check 'disable-problematic-tests
7064 (lambda _
7065 ;; This test fails, probably because of the newer
7066 ;; Cucumber version used here.
7067 (delete-file "spec/parallel_tests/cucumber/\
7068failure_logger_spec.rb") ))
7069 (add-before 'check 'set-HOME
7070 (lambda _
7071 ;; Some tests check the output of Bundler, and fail when
7072 ;; Bundler warns that /homeless-shelter does not exist.
7073 (setenv "HOME" "/tmp"))))))
7074 (native-inputs
7075 (list ruby-bump
7076 ruby-cucumber
7077 ruby-cuke-modeler
7078 ruby-minitest
7079 ruby-rake
7080 ruby-rspec
7081 ruby-spinach))
7082 (propagated-inputs
7083 (list ruby-parallel))
7084 (synopsis "Run tests in parallel")
7085 (description
7086 "This package can speed up @code{Test::Unit}, @code{RSpec},
7087@code{Cucumber}, and @code{Spinach} tests by running them concurrently
7088across multiple CPU cores.")
7089 (license license:expat)))
7090
7091(define-public ruby-parser
7092 (package
7093 (name "ruby-parser")
7094 (version "3.3.7.0")
7095 (source
7096 (origin
7097 (method url-fetch)
7098 (uri (rubygems-uri "parser" version))
7099 (sha256
7100 (base32
7101 "16qi2qhpszm842awxghmsp64yvvawafq96w5jw98irz3f4bh2jbl"))))
7102 (build-system ruby-build-system)
7103 (arguments '(#:tests? #f)) ; tests not included in gem
7104 (native-inputs (list bundler ruby-cliver ruby-simplecov))
7105 (inputs (list ragel))
7106 (propagated-inputs (list ruby-ast ruby-racc))
7107 (synopsis "Ruby parser written in pure Ruby")
7108 (description
7109 "This package provides a Ruby parser written in pure Ruby.")
7110 (home-page "https://github.com/whitequark/parser")
7111 (license license:expat)))
7112
7113(define-public ruby-set
7114 (package
7115 (name "ruby-set")
7116 (version "1.0.3")
7117 (source (origin
7118 (method url-fetch)
7119 (uri (rubygems-uri "set" version))
7120 (sha256
7121 (base32
7122 "07kc057nrkddrybqmlbmgf9x7nsmbc3ni6gy1z6xjx5b838vlj33"))))
7123 (build-system ruby-build-system)
7124 (synopsis
7125 "Ruby class to deal with collections of unordered, unique values")
7126 (description
7127 "This package provides a class to deal with collections of unordered,
7128unique values")
7129 (home-page "https://github.com/ruby/set")
7130 (license license:bsd-2)))
7131
7132(define-public ruby-sexp-processor
7133 (package
7134 (name "ruby-sexp-processor")
7135 (version "4.17.0")
7136 (source
7137 (origin
7138 (method url-fetch)
7139 (uri (rubygems-uri "sexp_processor" version))
7140 (sha256
7141 (base32
7142 "0vzz9mhg4kkdqf179pm30i204h7iskanxrk53j0csf0qrrs4iajd"))))
7143 (build-system ruby-build-system)
7144 (native-inputs
7145 (list ruby-hoe
7146 ruby-minitest
7147 ruby-minitest-proveit))
7148 (synopsis "ParseTree fork which includes generic S-exp processing tools")
7149 (description "The sexp_processor package is derived from ParseTree, but
7150contrary to ParseTree, it includes all the generic S-exp processing tools.
7151Amongst the included tools are @code{Sexp}, @code{SexpProcessor} and
7152@code{Environment}")
7153 (home-page "https://github.com/seattlerb/sexp_processor")
7154 (license license:expat)))
7155
7156(define-public ruby-ruby-parser
7157 (package
7158 (name "ruby-ruby-parser")
7159 (version "3.20.2")
7160 (source
7161 (origin
7162 (method url-fetch)
7163 (uri (rubygems-uri "ruby_parser" version))
7164 (sha256
7165 (base32
7166 "0q851n8654wkjrq8jawq8vi5yhr1y9vpyr2vj7cnn3sa4ikg6d3z"))))
7167 (build-system ruby-build-system)
7168 (arguments
7169 (list
7170 #:phases
7171 #~(modify-phases %standard-phases
7172 (add-after 'unpack 'patch
7173 (lambda _
7174 (substitute* "Rakefile"
7175 (("`which bison`")
7176 (string-append "\"" (which "bison") "\""))
7177 (("which unifdef")
7178 (which "unifdef"))))))))
7179 (native-inputs
7180 (list ruby-hoe
7181 ruby-racc
7182 unifdef
7183 bison
7184 ruby-minitest))
7185 (propagated-inputs
7186 (list ruby-sexp-processor))
7187 (home-page "https://github.com/seattlerb/ruby_parser/")
7188 (synopsis "Ruby parser written in pure Ruby")
7189 (description "The ruby_parser (RP) package provides a Ruby parser written
7190in pure Ruby. It outputs S-expressions which can be manipulated and converted
7191back to Ruby via the @code{ruby2ruby} library.")
7192 (license license:expat)))
7193
7194(define-public ruby-ruby-version
7195 (package
7196 (name "ruby-ruby-version")
7197 (version "1.0.2")
7198 (source (origin
7199 (method url-fetch)
7200 (uri (rubygems-uri "ruby_version" version))
7201 (sha256
7202 (base32
7203 "0lvc7bd5ps3w2vq2wb02i0pi3vfcx2rnckx2ix4rjym1qf52kb2j"))))
7204 (build-system ruby-build-system)
7205 (arguments
7206 (list #:phases
7207 #~(modify-phases %standard-phases
7208 (add-after 'extract-gemspec 'delete-gem-files
7209 ;; There are some pre-built files in the source, and
7210 ;; registered in the .gemspec (see:
7211 ;; https://github.com/janlelis/ruby_version/issues/1).
7212 (lambda _
7213 (delete-file-recursively "pkg")
7214 (substitute* "ruby_version.gemspec"
7215 (("\"pkg/ruby_version-1.0.0.gem\".freeze, ")
7216 "")
7217 (("\"pkg/ruby_version-1.0.1.gem\".freeze, ")
7218 ""))))
7219 (add-after 'extract-gemspec 'relax-requirements
7220 (lambda _
7221 (delete-file "Gemfile.lock")
7222 (substitute* "ruby_version.gemspec"
7223 (("\"Gemfile.lock\".freeze, ") "")
7224 ;; Allow a newers versions of development dependencies.
7225 (("~>") ">=")))))))
7226 (native-inputs (list ruby-rdoc ruby-rubygems-tasks ruby-rspec))
7227 (synopsis "Ruby class for checking the Ruby version")
7228 (description "This package provides a @code{RubyVersion} class which
7229offers a convenient Domain Specific Language (DSL) for checking for the right
7230Ruby version.")
7231 (home-page "https://github.com/janlelis/ruby_version")
7232 (license license:expat)))
7233
7234(define-public ruby-prawn-manual-builder
7235 (package
7236 (name "ruby-prawn-manual-builder")
7237 (version "0.3.1")
7238 (source
7239 (origin
7240 (method url-fetch)
7241 (uri (rubygems-uri "prawn-manual_builder" version))
7242 (sha256
7243 (base32 "1vlg5w7wq43g2hgpgra2nrcxj1kb4ayqliz4gmja2rhs037j2vzs"))))
7244 (build-system ruby-build-system)
7245 (arguments
7246 '(#:tests? #f ; no included tests
7247 #:phases
7248 (modify-phases %standard-phases
7249 (add-after 'extract-gemspec 'patch-gemspec
7250 (lambda _
7251 (substitute* ".gemspec"
7252 ;; Loosen the requirement for pdf-inspector
7253 (("~> 1\\.0\\.7") ">= 0")))))))
7254 (propagated-inputs
7255 (list ruby-coderay))
7256 (synopsis "Tool for writing manuals for Prawn and Prawn accessories")
7257 (description
7258 "This package provides a tool for writing manuals for Prawn and Prawn
7259accessories")
7260 (home-page "https://github.com/prawnpdf/prawn-manual_builder")
7261 (license %prawn-project-licenses)))
7262
7263(define-public ruby-progress_bar
7264 (package
7265 (name "ruby-progress_bar")
7266 (version "1.1.0")
7267 (source
7268 (origin
7269 (method url-fetch)
7270 (uri (rubygems-uri "progress_bar" version))
7271 (sha256
7272 (base32
7273 "1qc40mr6p1z9a3vlpnsg1zfgk1qswviql2a31y63wpv3vr6b5f48"))))
7274 (build-system ruby-build-system)
7275 (arguments
7276 '(#:test-target "spec"))
7277 (propagated-inputs
7278 (list ruby-highline ruby-options))
7279 (native-inputs
7280 (list bundler ruby-rspec ruby-timecop))
7281 (synopsis
7282 "Ruby library for displaying progress bars")
7283 (description
7284 "ProgressBar is a simple library for displaying progress bars. The
7285maximum value is configurable, and additional information can be displayed
7286like the percentage completion, estimated time remaining, elapsed time and
7287rate.")
7288 (home-page "https://github.com/paul/progress_bar")
7289 (license license:wtfpl2)))
7290
7291(define-public ruby-progressbar
7292 (package
7293 (name "ruby-progressbar")
7294 (version "1.10.1")
7295 (source
7296 (origin
7297 (method url-fetch)
7298 (uri (rubygems-uri "ruby-progressbar" version))
7299 (sha256
7300 (base32 "1k77i0d4wsn23ggdd2msrcwfy0i376cglfqypkk2q77r2l3408zf"))))
7301 (build-system ruby-build-system)
7302 (arguments
7303 '(;; TODO: There looks to be a circular dependency with ruby-fuubar.
7304 #:tests? #f))
7305 (synopsis "Text progress bar library for Ruby")
7306 (description
7307 "Ruby/ProgressBar is an flexible text progress bar library for Ruby.
7308The output can be customized with a formatting system.")
7309 (home-page "https://github.com/jfelchner/ruby-progressbar")
7310 (license license:expat)))
7311
7312(define-public ruby-latest-ruby
7313 (package
7314 (name "ruby-latest-ruby")
7315 (version "3.1.0")
7316 (source (origin
7317 (method url-fetch)
7318 (uri (rubygems-uri "latest_ruby" version))
7319 (sha256
7320 (base32
7321 "15rqwgxzpnkzdiz8m02jra0zq5sx0fiz61vkfrj1ls6slqfhnzqg"))))
7322 (build-system ruby-build-system)
7323 (arguments
7324 '(#:tests? #f)) ; No Rakefile
7325 (synopsis "Answers the question of what the latest Ruby version is")
7326 (description "Knows about MRI, Rubinius, JRuby, MagLev and MacRuby.")
7327 (home-page "https://github.com/kyrylo/latest_ruby")
7328 (license license:zlib)))
7329
7330(define-public ruby-pry
7331 (package
7332 (name "ruby-pry")
7333 (version "0.14.2")
7334 (source
7335 (origin
7336 (method url-fetch)
7337 (uri (rubygems-uri "pry" version))
7338 (sha256
7339 (base32
7340 "0k9kqkd9nps1w1r1rb7wjr31hqzkka2bhi8b518x78dcxppm9zn4"))))
7341 (build-system ruby-build-system)
7342 (arguments
7343 '(#:tests? #f)) ; no tests
7344 (propagated-inputs
7345 (list ruby-coderay ruby-method-source))
7346 (synopsis "Ruby REPL")
7347 (description "Pry is an IRB alternative and runtime developer console for
7348Ruby. It features syntax highlighting, a plugin architecture, runtime
7349invocation, and source and documentation browsing.")
7350 (home-page "https://cobaltbluemedia.com/pryrepl/")
7351 (license license:expat)))
7352
7353(define-public ruby-pry-doc
7354 (package
7355 (name "ruby-pry-doc")
7356 (version "1.4.0")
7357 (source (origin
7358 (method url-fetch)
7359 (uri (rubygems-uri "pry-doc" version))
7360 (sha256
7361 (base32
7362 "1pp43n69p6bjvc640wgcz295w1q2v9awcqgbwcqn082dbvq5xvnx"))))
7363 (build-system ruby-build-system)
7364 (propagated-inputs (list ruby-pry ruby-yard))
7365 (native-inputs (list ruby-latest-ruby ruby-rspec ruby-rake)) ;for tests
7366 (synopsis "Provides YARD and extended documentation support for Pry")
7367 (description
7368 "Pry Doc is a Pry REPL plugin. It provides extended documentation
7369support for the REPL by means of improving the @code{show-doc} and
7370@code{show-source} commands. With help of the plugin the commands are
7371be able to display the source code and the docs of Ruby methods and
7372classes implemented in C.")
7373 (home-page "https://github.com/pry/pry-doc")
7374 (license license:expat)))
7375
7376(define-public ruby-single-cov
7377 (package
7378 (name "ruby-single-cov")
7379 (version "1.9.1")
7380 (home-page "https://github.com/grosser/single_cov")
7381 (source (origin
7382 (method git-fetch)
7383 (uri (git-reference (url home-page)
7384 (commit (string-append "v" version))))
7385 (file-name (git-file-name name version))
7386 (sha256
7387 (base32
7388 "1w4k81f2mdg620m6pwkrqayddnz9mr8qx0myqn33mw8k6imfip05"))))
7389 (build-system ruby-build-system)
7390 (arguments
7391 '(#:test-target "spec" ;to avoid rubocop requirement
7392 #:phases (modify-phases %standard-phases
7393 (replace 'replace-git-ls-files
7394 (lambda _
7395 (substitute* "single_cov.gemspec"
7396 (("`git ls-files lib/ bin/ MIT-LICENSE`")
7397 ;; There no longer appear to be a 'bin'
7398 ;; sub-directory.
7399 "`find lib/ MIT-LICENSE -type f | sort`"))))
7400 (add-before 'check 'remove-version-constraints
7401 (lambda _
7402 (delete-file "Gemfile.lock")))
7403 (add-before 'check 'relax-requirements
7404 (lambda _
7405 ;; Remove extraneous requirements.
7406 (substitute* "Rakefile"
7407 ((".*require.*bump.*") ""))
7408 (substitute* "Gemfile"
7409 ((".*gem \"bump\".*") "")
7410 ((".*gem \"rubocop\".*") ""))))
7411 (add-before 'check 'disable-failing-test
7412 (lambda _
7413 ;; XXX: This test copies assets from minitest, but can
7414 ;; not cope with the files being read-only. Just skip
7415 ;; it for now.
7416 (substitute* "specs/single_cov_spec.rb"
7417 (("it \"complains when coverage is bad\"")
7418 "xit \"complains when coverage is bad\"")))))))
7419 (native-inputs (list ruby-minitest ruby-rspec ruby-simplecov))
7420 (synopsis "Code coverage reporting tool")
7421 (description
7422 "This package provides actionable code coverage reports for Ruby
7423projects. It has very little overhead and can be easily integrated with
7424development tools to catch coverage problems early.")
7425 (license license:expat)))
7426
7427(define-public ruby-oedipus-lex
7428 (package
7429 (name "ruby-oedipus-lex")
7430 (version "2.6.1")
7431 (source
7432 (origin
7433 (method url-fetch)
7434 (uri (rubygems-uri "oedipus_lex" version))
7435 (sha256
7436 (base32
7437 "06l4d3l75vhdcmnavnkzr7bd39rb0njxhkbmwrw6ni64z2hlj7w7"))))
7438 (build-system ruby-build-system)
7439 (native-inputs
7440 (list ruby-hoe
7441 ruby-minitest))
7442 (synopsis "Ruby lexer")
7443 (description
7444 "Oedipus Lex is a lexer generator in the same family as Rexical and Rex.
7445It is based primarily on generating code much like you would a hand-written
7446lexer. It uses StrScanner within a multi-level case statement. As such,
7447Oedipus matches on the first match, not the longest.")
7448 (home-page "https://github.com/seattlerb/oedipus_lex")
7449 (license license:expat)))
7450
7451(define-public ruby-guard
7452 (package
7453 (name "ruby-guard")
7454 (version "2.13.0")
7455 (source (origin
7456 (method git-fetch)
7457 ;; The gem does not include a Rakefile, nor does it contain a
7458 ;; gemspec file, nor does it come with the tests. This is why
7459 ;; we fetch the tarball from Github.
7460 (uri (git-reference
7461 (url "https://github.com/guard/guard")
7462 (commit (string-append "v" version))))
7463 (file-name (git-file-name name version))
7464 (sha256
7465 (base32
7466 "16pxcszr0g2jnl3090didxh1d8z5m2mly14m3w4rspb8fmclsnjs"))))
7467 (build-system ruby-build-system)
7468 (arguments
7469 `(#:tests? #f ; tests require cucumber
7470 #:phases
7471 (modify-phases %standard-phases
7472 (add-after 'unpack 'remove-git-ls-files
7473 (lambda* (#:key outputs #:allow-other-keys)
7474 (substitute* "guard.gemspec"
7475 (("git ls-files -z") "find . -type f -print0"))))
7476 (replace 'build
7477 (lambda _
7478 (invoke "gem" "build" "guard.gemspec"))))))
7479 (propagated-inputs
7480 (list ruby-formatador
7481 ruby-listen
7482 ruby-lumberjack
7483 ruby-nenv
7484 ruby-notiffany
7485 ruby-pry
7486 ruby-shellany
7487 ruby-thor))
7488 (native-inputs
7489 (list bundler ruby-rspec))
7490 (synopsis "Tool to handle events on file system modifications")
7491 (description
7492 "Guard is a command line tool to easily handle events on file system
7493modifications. Guard automates various tasks by running custom rules whenever
7494file or directories are modified.")
7495 (home-page "https://guardgem.org/")
7496 (license license:expat)))
7497
7498(define-public ruby-spinach
7499 (package
7500 (name "ruby-spinach")
7501 (version "0.12.0")
7502 (home-page "https://github.com/codegram/spinach")
7503 (source (origin
7504 (method url-fetch)
7505 (uri (rubygems-uri "spinach" version))
7506 (sha256
7507 (base32
7508 "1v9nvpvlgjx698dc4q2p1l45sxm5fjjzfxayrkyzb9nv0q0xfjsp"))))
7509 (build-system ruby-build-system)
7510 (arguments
7511 ;; FIXME: Disable tests altogether because they depend on 'capybara'
7512 ;; which in turn depends on many other unpackaged gems. Enable once
7513 ;; capybara is available.
7514 '(#:tests? #f))
7515 (propagated-inputs
7516 (list ruby-colorize ruby-gherkin-ruby))
7517 (synopsis "Gherkin-based BDD framework")
7518 (description
7519 "Spinach is a high-level @acronym{BDD, Behavior-driven development}
7520framework that leverages the expressive @code{Gherkin} language to help you
7521define executable specifications of your code.")
7522 (license license:expat)))
7523
7524(define-public ruby-timers
7525 (package
7526 (name "ruby-timers")
7527 (version "4.3.5")
7528 (source (origin
7529 (method git-fetch)
7530 (uri (git-reference
7531 (url "https://github.com/socketry/timers")
7532 (commit (string-append "v" version))))
7533 (file-name (git-file-name name version))
7534 (sha256
7535 (base32
7536 "1vvahlhk6i1xks1bsha6s64pjjxhagmzvvf1q9h6z3lpcba43rpx"))))
7537 (build-system ruby-build-system)
7538 (arguments
7539 (list #:phases
7540 #~(modify-phases %standard-phases
7541 (add-before 'build 'prune-gems.rb
7542 (lambda _
7543 (substitute* "gems.rb"
7544 ;; These are only required for maintenance.
7545 ((".*gem \"bake-modernize\".*") "")
7546 ((".*gem \"bake-gem\".*") "")
7547 ;; Not actually required by the tests.
7548 ((".*gem 'benchmark-ips'.*") "")
7549 ((".*gem \"ruby-prof\".*") ""))))
7550 (add-before 'build 'remove-missing-signing-key
7551 (lambda _
7552 ;; Otherwise, the build fails with ENOENT.
7553 (substitute* "timers.gemspec"
7554 ((".*spec.signing_key.*") ""))))
7555 (replace 'check
7556 (lambda* (#:key tests? #:allow-other-keys)
7557 (when tests?
7558 (invoke "bake" "test")))))))
7559 (native-inputs
7560 (list ruby-covered
7561 ruby-bake-test
7562 ruby-bake-test-external
7563 ruby-sus))
7564 (synopsis "Collection of Ruby timer classes")
7565 (description "Timers offers a collections of one-shot and periodic timers,
7566intended for use with event loops such as async.")
7567 (home-page "https://github.com/socketry/timers")
7568 (license license:expat)))
7569
7570(define-public ruby-tilt
7571 (package
7572 (name "ruby-tilt")
7573 (version "2.2.0")
7574 (source
7575 (origin
7576 (method git-fetch) ;the distributed gem lacks tests
7577 (uri (git-reference
7578 (url "https://github.com/jeremyevans/tilt")
7579 (commit (string-append "v" version))))
7580 (file-name (git-file-name name version))
7581 (sha256
7582 (base32 "056zm4vzx9xjwl7zgmb17hzb91qx5cvzk60wvsxchfybvl03gn5d"))))
7583 (build-system ruby-build-system)
7584 (arguments
7585 (list
7586 #:phases
7587 #~(modify-phases %standard-phases
7588 (add-before 'check 'set-SASS_IMPLEMENTATION
7589 (lambda _
7590 (setenv "SASS_IMPLEMENTATION" "sassc"))))))
7591 (propagated-inputs
7592 (list ruby-pandoc-ruby ruby-sassc))
7593 (native-inputs
7594 (list bundler ruby-yard ruby-builder ruby-erubis ruby-markaby))
7595 (synopsis "Generic interface to multiple Ruby template engines")
7596 (description
7597 "Tilt is a thin interface over a number of different Ruby template
7598engines in an attempt to make their usage as generic as possible.")
7599 (home-page "https://github.com/rtomayko/tilt/")
7600 (license license:expat)))
7601
7602(define-public ruby-thread-safe
7603 (package
7604 (name "ruby-thread-safe")
7605 (version "0.3.6")
7606 (source
7607 (origin
7608 (method url-fetch)
7609 (uri (rubygems-uri "thread_safe" version))
7610 (sha256
7611 (base32
7612 "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy"))))
7613 (build-system ruby-build-system)
7614 (arguments
7615 '(#:tests? #f)) ; needs simplecov, among others
7616 (synopsis "Thread-safe utilities for Ruby")
7617 (description "The thread_safe library provides thread-safe collections and
7618utilities for Ruby.")
7619 (home-page "https://github.com/ruby-concurrency/thread_safe")
7620 (license license:asl2.0)))
7621
7622(define-public ruby-tzinfo
7623 (package
7624 (name "ruby-tzinfo")
7625 (version "2.0.6")
7626 (source
7627 (origin
7628 (method git-fetch)
7629 (uri (git-reference
7630 ;; Pull from git because the gem has no tests.
7631 (url "https://github.com/tzinfo/tzinfo")
7632 (commit (string-append "v" version))))
7633 (file-name (git-file-name name version))
7634 (sha256
7635 (base32
7636 "1n1gzjqwwnx209h8d054miva0y7x17db2ahy7jav5r25ibhh7rgm"))))
7637 (build-system ruby-build-system)
7638 (arguments
7639 (list
7640 #:phases
7641 #~(modify-phases %standard-phases
7642 (add-after 'unpack 'skip-safe-tests
7643 (lambda _
7644 (substitute* "test/test_utils.rb"
7645 (("def safe_test\\(options = \\{\\}\\)")
7646 "def safe_test(options = {})
7647 skip('The Guix build environment has an unsafe load path')"))))
7648 (add-before 'check 'pre-check
7649 (lambda _
7650 (setenv "HOME" (getcwd))
7651 (substitute* "Gemfile"
7652 (("simplecov.*") "simplecov'\n"))))
7653 (replace 'check
7654 (lambda* (#:key tests? test-target #:allow-other-keys)
7655 (when tests?
7656 (invoke "bundler" "exec" "rake" test-target)))))))
7657 (propagated-inputs
7658 (list ruby-concurrent))
7659 (native-inputs
7660 (list ruby-simplecov))
7661 (synopsis "Time zone library for Ruby")
7662 (description "TZInfo is a Ruby library that provides daylight savings
7663aware transformations between times in different time zones.")
7664 (home-page "https://tzinfo.github.io")
7665 (license license:expat)))
7666
7667(define-public ruby-tzinfo-data
7668 (package
7669 (name "ruby-tzinfo-data")
7670 (version "1.2023.3")
7671 (source
7672 (origin
7673 (method git-fetch)
7674 ;; Download from GitHub because the rubygems version does not contain
7675 ;; Rakefile or tests.
7676 (uri (git-reference
7677 (url "https://github.com/tzinfo/tzinfo-data")
7678 (commit (string-append "v" version))))
7679 (file-name (git-file-name name version))
7680 (sha256
7681 (base32
7682 "1v3fpfmw485lsc9bfqfcasb9j25g9ywfpmmk648l2vdsh7nipilf"))))
7683 (build-system ruby-build-system)
7684 (arguments
7685 (list
7686 #:phases
7687 #~(modify-phases %standard-phases
7688 (add-after 'unpack 'patch-source
7689 (lambda* (#:key inputs #:allow-other-keys)
7690 (substitute* "Rakefile"
7691 (("URI\\.parse\\(url\\)\\.open")
7692 "URI.open(url)")
7693 (("https://data.iana.org/time-zones/releases")
7694 (assoc-ref inputs "tzdata")))))
7695 (add-before 'check 'pre-check
7696 (lambda _
7697 (setenv "HOME" (getcwd))
7698 (substitute* "Rakefile"
7699 ;; Don't need gpg, and it may break after a time.
7700 (("gpg ") "echo ")
7701 ((" sh\\(\\\"make -C" text)
7702 (string-append " sh(\"sed -i 's@/bin/sh@sh@' #{tzdb_combined_path}/Makefile \")\n"
7703 " sh(\"sed -i 's@cc=@cc?=@' #{tzdb_combined_path}/Makefile \")\n" text)))
7704 (setenv "cc" #$(cc-for-target)))))))
7705 (propagated-inputs
7706 (list ruby-tzinfo))
7707 (native-inputs
7708 `(("tzdata"
7709 ,(file-union "tzdata-for-ruby-tzdata-info"
7710 `(("tzdata2023c.tar.gz"
7711 ,(origin
7712 (method url-fetch)
7713 (uri "https://data.iana.org/time-zones/releases/tzdata2023c.tar.gz")
7714 (sha256
7715 (base32
7716 "0p4nvp5bdxxdqh269nvvcfrpycbbfwm31al5whwbpsaa3dfhnl9z"))))
7717 ("tzdata2023c.tar.gz.asc"
7718 ,(origin
7719 (method url-fetch)
7720 (uri "https://data.iana.org/time-zones/releases/tzdata2023c.tar.gz.asc")
7721 (sha256
7722 (base32
7723 "0mrmhczs5qnj1zp6gh4pg6fm0iblr2jmzy0fgh9slinwxmn7pv6m"))))
7724 ("tzcode2023c.tar.gz"
7725 ,(origin
7726 (method url-fetch)
7727 (uri "https://data.iana.org/time-zones/releases/tzcode2023c.tar.gz")
7728 (sha256
7729 (base32
7730 "1rqln88ki0jagi372nqyn7bs03rf2l33081sy2835mwsn4mpzla6"))))
7731 ("tzcode2023c.tar.gz.asc"
7732 ,(origin
7733 (method url-fetch)
7734 (uri "https://data.iana.org/time-zones/releases/tzcode2023c.tar.gz.asc")
7735 (sha256
7736 (base32
7737 "0jbx8xjv75qfh7bxa2xmrf97r37057y89rhmrq1gz8s6b8qlzb2i")))))))))
7738 (synopsis "Data from the IANA Time Zone database")
7739 (description
7740 "This library provides @code{TZInfo::Data}, which contains data from the
7741IANA Time Zone database packaged as Ruby modules for use with @code{TZInfo}.")
7742 (home-page "https://tzinfo.github.io")
7743 (license license:expat)))
7744
7745(define-public ruby-rb-inotify
7746 (package
7747 (name "ruby-rb-inotify")
7748 (version "0.10.1")
7749 (source
7750 (origin
7751 (method url-fetch)
7752 (uri (rubygems-uri "rb-inotify" version))
7753 (sha256
7754 (base32
7755 "1jm76h8f8hji38z3ggf4bzi8vps6p7sagxn3ab57qc0xyga64005"))))
7756 (build-system ruby-build-system)
7757 (arguments
7758 (list
7759 #:tests? #f ; there are no tests
7760 #:phases
7761 #~(modify-phases %standard-phases
7762 ;; Building the gemspec with rake is not working here since it is
7763 ;; generated with Jeweler. It is also unnecessary because the
7764 ;; existing gemspec does not use any development tools to generate a
7765 ;; list of files.
7766 (replace 'build
7767 (lambda _
7768 (invoke "gem" "build" "rb-inotify.gemspec"))))))
7769 (propagated-inputs
7770 (list ruby-ffi))
7771 (native-inputs
7772 (list ruby-yard))
7773 (synopsis "Ruby wrapper for Linux's inotify")
7774 (description "rb-inotify is a simple wrapper over the @code{inotify} Linux
7775kernel subsystem for monitoring changes to files and directories.")
7776 (home-page "https://github.com/nex3/rb-inotify")
7777 (license license:expat)))
7778
7779(define-public ruby-pry-editline
7780 (package
7781 (name "ruby-pry-editline")
7782 (version "1.1.2")
7783 (source (origin
7784 (method url-fetch)
7785 (uri (rubygems-uri "pry-editline" version))
7786 (sha256
7787 (base32
7788 "1pjxyvdxvw41xw3yyl18pwzix8hbvn6lgics7qcfhjfsf1zs8x1z"))))
7789 (build-system ruby-build-system)
7790 (arguments `(#:tests? #f)) ; no tests included
7791 (native-inputs
7792 (list bundler))
7793 (synopsis "Open the current REPL line in an editor")
7794 (description
7795 "This gem provides a plugin for the Ruby REPL to enable opening the
7796current line in an external editor.")
7797 (home-page "https://github.com/tpope/pry-editline")
7798 (license license:expat)))
7799
7800(define-public ruby-sdoc
7801 (package
7802 (name "ruby-sdoc")
7803 (version "1.1.0")
7804 (source (origin
7805 (method url-fetch)
7806 (uri (rubygems-uri "sdoc" version))
7807 (sha256
7808 (base32
7809 "1am73dldx1fqlw2xny5vyk00pgkisg6bvs0pa8jjd7c19drjczrd"))))
7810 (build-system ruby-build-system)
7811 (arguments
7812 `(#:phases
7813 (modify-phases %standard-phases
7814 (add-before 'check 'set-rubylib-and-patch-gemfile
7815 (lambda _
7816 (setenv "RUBYLIB" "lib")
7817 (substitute* "sdoc.gemspec"
7818 (("s.add_runtime_dependency.*") "\n")
7819 (("s.add_dependency.*") "\n"))
7820 (substitute* "Gemfile"
7821 (("gem \"rake\".*")
7822 "gem 'rake'\ngem 'rdoc'\ngem 'json'\n")))))))
7823 (propagated-inputs
7824 (list ruby-json))
7825 (native-inputs
7826 (list bundler ruby-minitest ruby-hoe))
7827 (synopsis "Generate searchable RDoc documentation")
7828 (description
7829 "SDoc is an RDoc documentation generator to build searchable HTML
7830documentation for Ruby code.")
7831 (home-page "https://github.com/voloko/sdoc")
7832 (license license:expat)))
7833
7834(define-public ruby-tins
7835 (package
7836 (name "ruby-tins")
7837 (version "1.29.1")
7838 (source (origin
7839 (method url-fetch)
7840 (uri (rubygems-uri "tins" version))
7841 (sha256
7842 (base32
7843 "0nzp88y19rqlcizp1nw8m44fvfxs9g3bhjpscz44dwfawfrmr0cb"))))
7844 (build-system ruby-build-system)
7845 ;; This gem needs gem-hadar at development time, but gem-hadar needs tins
7846 ;; at runtime. To avoid the dependency on gem-hadar we disable rebuilding
7847 ;; the gemspec.
7848 (arguments
7849 `(#:tests? #f ; there are no tests
7850 #:phases
7851 (modify-phases %standard-phases
7852 (replace 'build
7853 (lambda _
7854 ;; "lib/spruz" is a symlink. Leaving it in the gemspec file
7855 ;; causes an error.
7856 (substitute* "tins.gemspec"
7857 (("\"lib/spruz\", ") ""))
7858 (invoke "gem" "build" "tins.gemspec"))))))
7859 (propagated-inputs
7860 (list ruby-sync))
7861 (synopsis "Assorted tools for Ruby")
7862 (description "Tins is a Ruby library providing assorted tools.")
7863 (home-page "https://github.com/flori/tins")
7864 (license license:expat)))
7865
7866(define-public ruby-gemtext
7867 (package
7868 (name "ruby-gemtext")
7869 (version "1.0.3")
7870 (source
7871 (origin
7872 (method url-fetch)
7873 (uri (rubygems-uri "gemtext" version))
7874 (sha256
7875 (base32 "1z559f5z0zvwnqgnny0zf4mppiary020ljxwpw3bdxi2hr9aj3gp"))))
7876 (build-system ruby-build-system)
7877 (synopsis "Gemtext parser for Ruby")
7878 (description
7879 "This package is a Ruby parser library for Gemtext (hypertext format
7880which is intended to serve as the native response format of the Gemini
7881file transfer protocol) and produces a document object of various
7882nodes.")
7883 (home-page "https://github.com/exastencil/gemtext")
7884 (license license:expat)))
7885
7886(define-public ruby-gem-hadar
7887 (package
7888 (name "ruby-gem-hadar")
7889 (version "1.11.0")
7890 (source (origin
7891 (method url-fetch)
7892 (uri (rubygems-uri "gem_hadar" version))
7893 (sha256
7894 (base32
7895 "160abb3l4n3gkhd86f22n981bhqxkbf5ym6fhsk796pix6696pd5"))))
7896 (build-system ruby-build-system)
7897 ;; This gem needs itself at development time. We disable rebuilding of the
7898 ;; gemspec to avoid this loop.
7899 (arguments
7900 `(#:tests? #f ; there are no tests
7901 #:phases
7902 (modify-phases %standard-phases
7903 (replace 'build
7904 (lambda _
7905 (invoke "gem" "build" "gem_hadar.gemspec"))))))
7906 (propagated-inputs
7907 (list git-minimal/pinned ruby-tins ruby-yard))
7908 (synopsis "Library for the development of Ruby gems")
7909 (description
7910 "This library contains some useful functionality to support the
7911development of Ruby gems.")
7912 (home-page "https://github.com/flori/gem_hadar")
7913 (license license:expat)))
7914
7915(define-public ruby-term-ansicolor
7916 (package
7917 (name "ruby-term-ansicolor")
7918 (version "1.7.1")
7919 (source (origin
7920 (method url-fetch)
7921 (uri (rubygems-uri "term-ansicolor" version))
7922 (sha256
7923 (base32
7924 "1xq5kci9215skdh27npyd3y55p812v4qb4x2hv3xsjvwqzz9ycwj"))))
7925 (build-system ruby-build-system)
7926 ;; Rebuilding the gemspec seems to require git, even though this is not a
7927 ;; git repository, so we just build the gem from the existing gemspec.
7928 (arguments
7929 (list
7930 #:phases
7931 #~(modify-phases %standard-phases
7932 (add-after 'unpack 'fix-test
7933 (lambda -
7934 (substitute* "tests/hsl_triple_test.rb"
7935 (("0\\\\\\.0%")
7936 "0\\.?0?%"))))
7937 (replace 'build
7938 (lambda _
7939 (invoke "gem" "build" "term-ansicolor.gemspec"))))))
7940 (propagated-inputs
7941 (list ruby-tins))
7942 (native-inputs
7943 (list ruby-gem-hadar))
7944 (synopsis "Ruby library to control the attributes of terminal output")
7945 (description
7946 "This Ruby library uses ANSI escape sequences to control the attributes
7947of terminal output.")
7948 (home-page "https://flori.github.io/term-ansicolor/")
7949 ;; There is no mention of the "or later" clause.
7950 (license license:gpl2)))
7951
7952(define-public ruby-immutable-struct
7953 (let ((commit "bb67ad8fa2117e8031c3f4333b4c25c8bcd3afff")
7954 (revision "0"))
7955 (package
7956 (name "ruby-immutable-struct")
7957 (version (git-version "2.4.1" revision commit))
7958 (source
7959 (origin
7960 (method git-fetch)
7961 (uri (git-reference
7962 (url "https://github.com/stitchfix/immutable-struct")
7963 (commit commit)))
7964 (file-name (git-file-name name version))
7965 (sha256
7966 (base32
7967 "0vsr2spypjf0i7ppg2a0gj3mjj5k3dyqsx224cbsxw51p6cc11c1"))))
7968 (build-system ruby-build-system)
7969 (arguments
7970 (list
7971 #:phases
7972 #~(modify-phases %standard-phases
7973 (replace 'check
7974 (lambda* (#:key tests? #:allow-other-keys)
7975 (when tests?
7976 (invoke "ruby" (which "rspec"))))))))
7977 (native-inputs
7978 (list ruby-rspec))
7979 (synopsis "Ruby library for creating immutable struct classes")
7980 (description
7981 "This package provides a library to help create value objects without
7982the pain of Ruby's Struct (or its setters).")
7983 (home-page "https://stitchfix.github.io/immutable-struct/")
7984 (license license:expat))))
7985
7986(define-public ruby-faker
7987 (package
7988 (name "ruby-faker")
7989 (version "3.2.0")
7990 (source
7991 (origin
7992 (method git-fetch)
7993 (uri (git-reference
7994 (url "https://github.com/faker-ruby/faker")
7995 (commit (string-append "v" version))))
7996 (file-name (git-file-name name version))
7997 (sha256
7998 (base32
7999 "1wwdwh5qwaxnd9dl6732mj6b953l5r32r4936pj5680963iagq59"))))
8000 (build-system ruby-build-system)
8001 (arguments
8002 (list
8003 #:phases
8004 #~(modify-phases %standard-phases
8005 (add-after 'unpack 'remove-rubocop-from-rakefile
8006 (lambda _
8007 (substitute* "Rakefile"
8008 (("require 'rubocop/rake_task'") "")
8009 (("RuboCop::RakeTask\\.new") "")))))))
8010 (native-inputs (list ruby-yard ruby-simplecov ruby-timecop))
8011 (propagated-inputs (list ruby-i18n))
8012 (synopsis "Library for generating fake data")
8013 (description "Faker is a port of Data::Faker from Perl. It is used to
8014easily generate fake data: names, addresses, phone numbers, etc.")
8015 (home-page "https://github.com/faker-ruby/faker")
8016 (license license:expat)))
8017
8018(define-public ruby-terraform
8019 (package
8020 (name "ruby-terraform")
8021 (version "1.7.0")
8022 (source
8023 (origin
8024 (method git-fetch)
8025 (uri (git-reference
8026 (url "https://github.com/infrablocks/ruby_terraform")
8027 (commit (string-append "v" version))))
8028 (file-name (git-file-name name version))
8029 (sha256
8030 (base32
8031 "18d1qkf2rbbvc2f0dxni85i2l2g8zn5kzh0v8zr1b86r1wjy6rvd"))))
8032 (build-system ruby-build-system)
8033 (arguments
8034 (list
8035 #:test-target "spec"
8036 #:phases
8037 #~(modify-phases %standard-phases
8038 (add-after 'unpack 'disable-bundler
8039 (lambda _
8040 (substitute* "spec/spec_helper.rb"
8041 (("require 'bundler/setup'") ""))))
8042 (add-before 'check 'disable-falinig-tests
8043 (lambda _
8044 (substitute* "spec/ruby_terraform/commands/plan_spec.rb"
8045 (("it 'logs an error raised when running the command'")
8046 "xit 'logs an error raised when running the command'")
8047 (("it 'raises execution error when an error occurs running the command'")
8048 "xit 'raises execution error when an error occurs running the command'"))))
8049 (replace 'check
8050 (lambda* (#:key tests? #:allow-other-keys)
8051 (when tests?
8052 (invoke "rspec")))))))
8053 (native-inputs
8054 (list ruby-rspec
8055 ruby-faker
8056 ruby-simplecov))
8057 (propagated-inputs
8058 (list ruby-lino ruby-immutable-struct))
8059 (synopsis "Ruby wrapper around the Terraform command line interface")
8060 (description
8061 "This package provides a Ruby wrapper around the Terraform command line
8062interface so that Terraform can be more easily invoked from Ruby code.")
8063 (home-page "https://github.com/infrablocks/ruby_terraform")
8064 (license license:expat)))
8065
8066(define-public ruby-pstree
8067 (package
8068 (name "ruby-pstree")
8069 (version "0.3.0")
8070 (source (origin
8071 (method url-fetch)
8072 (uri (rubygems-uri "pstree" version))
8073 (sha256
8074 (base32
8075 "0ld3ng37y92kv9vqnachw1l3n07hsc8hrnjs9d840liw0mysf1vp"))))
8076 (build-system ruby-build-system)
8077 (native-inputs
8078 (list ruby-gem-hadar bundler))
8079 (synopsis "Create a process tree data structure")
8080 (description
8081 "This library uses the output of the @code{ps} command to create a
8082process tree data structure for the current host.")
8083 (home-page "https://github.com/flori/pstree")
8084 ;; There is no mention of the "or later" clause.
8085 (license license:gpl2)))
8086
8087(define-public ruby-psych
8088 (package
8089 (name "ruby-psych")
8090 (version "5.1.0")
8091 (source (origin
8092 (method git-fetch) ;for tests
8093 (uri (git-reference
8094 (url "https://github.com/ruby/psych")
8095 (commit (string-append "v" version))))
8096 (file-name (git-file-name name version))
8097 (sha256
8098 (base32
8099 "0m3668y79jcv2h9p7w74awwdyz13rpfr24w4nzh3iz96kxwssz83"))))
8100 (build-system ruby-build-system)
8101 (inputs
8102 (list libyaml))
8103 (native-inputs
8104 (list ruby-rake-compiler))
8105 (synopsis "Ruby YAML parser and emitter")
8106 (description
8107 "Psych is a YAML parser and emitter. Psych leverages libyaml for its
8108YAML parsing and emitting capabilities. In addition to wrapping libyaml,
8109Psych also knows how to serialize and de-serialize most Ruby objects to and
8110from the YAML format.")
8111 (home-page "https://github.com/ruby/psych")
8112 (license license:expat)))
8113
8114(define-public ruby-psych-3
8115 (package
8116 (inherit ruby-psych)
8117 (version "3.3.4")
8118 (source (origin
8119 (method git-fetch) ;for tests
8120 (uri (git-reference
8121 (url "https://github.com/ruby/psych")
8122 (commit (string-append "v" version))))
8123 (file-name (git-file-name "ruby-psych" version))
8124 (sha256
8125 (base32
8126 "11f7bxbhaj5697izap7hfbiln6lfk5cks78a498mkyhs2ylhl0fc"))))
8127 (arguments
8128 (list
8129 #:phases
8130 #~(modify-phases %standard-phases
8131 (replace 'check
8132 (lambda* (#:key tests? #:allow-other-keys)
8133 (when tests?
8134 (invoke "bundle" "exec" "rake" "default")))))))))
8135
8136(define-public ruby-utils
8137 (package
8138 (name "ruby-utils")
8139 (version "0.9.0")
8140 (source (origin
8141 (method url-fetch)
8142 (uri (rubygems-uri "utils" version))
8143 (sha256
8144 (base32
8145 "196zhgcygrnx09bb9mh22qas03rl9avzx8qs0wnxznpin4pffwcl"))))
8146 (build-system ruby-build-system)
8147 (propagated-inputs
8148 (list ruby-tins ruby-term-ansicolor ruby-pstree ruby-pry-editline))
8149 (native-inputs
8150 (list ruby-gem-hadar bundler))
8151 (synopsis "Command line tools for working with Ruby")
8152 (description
8153 "This package provides assorted command line tools that may be useful
8154when working with Ruby code.")
8155 (home-page "https://github.com/flori/utils")
8156 ;; There is no mention of the "or later" clause.
8157 (license license:gpl2)))
8158
8159(define-public ruby-jaro-winkler
8160 (package
8161 (name "ruby-jaro-winkler")
8162 (version "1.5.4")
8163 (source
8164 (origin
8165 (method url-fetch)
8166 (uri (rubygems-uri "jaro_winkler" version))
8167 (sha256
8168 (base32 "1y8l6k34svmdyqxya3iahpwbpvmn3fswhwsvrz0nk1wyb8yfihsh"))))
8169 (build-system ruby-build-system)
8170 (arguments
8171 '(#:tests? #f)) ; no included tests
8172 (synopsis "Ruby implementation of Jaro-Winkler distance algorithm")
8173 (description
8174 "@code{jaro_winkler} is an implementation of Jaro-Winkler distance
8175algorithm. It is written as a C extension and will fallback to a pure Ruby
8176implementation on platforms where this is unsupported.")
8177 (home-page "https://github.com/tonytonyjan/jaro_winkler")
8178 (license license:expat)))
8179
8180(define-public ruby-json
8181 (package
8182 (name "ruby-json")
8183 (version "2.1.0")
8184 (source
8185 (origin
8186 (method url-fetch)
8187 (uri (rubygems-uri "json" version))
8188 (sha256
8189 (base32
8190 "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp"))))
8191 (build-system ruby-build-system)
8192 (arguments '(#:tests? #f)) ; dependency cycle with sdoc
8193 (synopsis "JSON library for Ruby")
8194 (description "This Ruby library provides a JSON implementation written as
8195a native C extension.")
8196 (home-page "http://json-jruby.rubyforge.org/")
8197 (license (list license:ruby license:gpl2)))) ; GPL2 only
8198
8199(define-public ruby-json-pure
8200 (package
8201 (name "ruby-json-pure")
8202 (version "2.6.3")
8203 (source
8204 (origin
8205 ;; For tests
8206 (method git-fetch)
8207 (uri (git-reference
8208 (url "https://github.com/flori/json.git")
8209 (commit (string-append "v" version))))
8210 (file-name (git-file-name name version))
8211 (sha256
8212 (base32
8213 "0551269c98a07m6bl594syh5vknrm3c636a4dxis9jpsb7vf7lfx"))))
8214 (build-system ruby-build-system)
8215 (arguments
8216 (list
8217 #:phases
8218 #~(modify-phases %standard-phases
8219 (add-after 'unpack 'fix-rakefile
8220 (lambda _
8221 (substitute* "Rakefile"
8222 ;; Since this is not a git repository, do not call 'git'.
8223 (("`git ls-files`") "`find . -type f |sort`")))))))
8224 (native-inputs
8225 (list bundler ragel ruby-simplecov ruby-test-unit which))
8226 (synopsis "JSON implementation in pure Ruby")
8227 (description
8228 "This package provides a JSON implementation written in pure Ruby.")
8229 (home-page "https://flori.github.io/json/")
8230 (license license:ruby)))
8231
8232(define-public ruby-jwt
8233 (package
8234 (name "ruby-jwt")
8235 (version "2.7.1")
8236 (source
8237 (origin
8238 ;; For tests
8239 (method git-fetch)
8240 (uri (git-reference
8241 (url "https://github.com/jwt/ruby-jwt")
8242 (commit (string-append "v" version))))
8243 (file-name (git-file-name name version))
8244 (sha256
8245 (base32
8246 "12ss6knfis6a6a41qndalnlvq3yykhpg6igzll8qyssnnwi9zdw7"))))
8247 (build-system ruby-build-system)
8248 (arguments
8249 (list
8250 #:test-target "test"
8251 #:phases
8252 #~(modify-phases %standard-phases
8253 (add-after 'unpack 'remove-unnecessary-dependencies
8254 (lambda _
8255 (substitute* "ruby-jwt.gemspec"
8256 (("spec\\.add_development_dependency 'appraisal'") "")
8257 (("spec\\.add_development_dependency 'simplecov'") ""))
8258 (substitute* "Gemfile"
8259 (("gem 'rubocop'.*") ""))
8260 (substitute* "Rakefile"
8261 (("require 'rubocop/rake_task'") "")
8262 (("RuboCop::RakeTask\\.new\\(:rubocop\\)") ""))
8263 (substitute* "spec/spec_helper.rb"
8264 (("require 'simplecov.*") "\n")
8265 ;; Use [].each to disable running the SimpleCov configuration
8266 ;; block
8267 (("SimpleCov\\.configure") "[].each")
8268 (("require 'codeclimate-test-reporter'") "")
8269 (("require 'codacy-coverage'") "")
8270 (("Codacy::Reporter\\.start") "")))))))
8271 (native-inputs
8272 (list bundler ruby-rspec ruby-rbnacl))
8273 (synopsis "Ruby implementation of the JSON Web Token standard")
8274 (description
8275 "This package provides a pure Ruby implementation of the RFC 7519 OAuth
8276@acronym{JWT, JSON Web Token} standard.")
8277 (home-page "https://github.com/jwt/ruby-jwt")
8278 (license license:expat)))
8279
8280;; Even though this package only provides bindings for a Mac OSX API it is
8281;; required by "ruby-listen" at runtime.
8282(define-public ruby-rb-fsevent
8283 (package
8284 (name "ruby-rb-fsevent")
8285 (version "0.10.3")
8286 (source (origin
8287 (method url-fetch)
8288 (uri (rubygems-uri "rb-fsevent" version))
8289 (sha256
8290 (base32
8291 "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8"))))
8292 (build-system ruby-build-system)
8293 ;; Tests need "guard-rspec", which needs "guard". However, "guard" needs
8294 ;; "listen", which needs "rb-fsevent" at runtime.
8295 (arguments `(#:tests? #f))
8296 (synopsis "FSEvents API with signals catching")
8297 (description
8298 "This library provides Ruby bindings for the Mac OSX FSEvents API.")
8299 (home-page "https://rubygems.org/gems/rb-fsevent")
8300 (license license:expat)))
8301
8302(define-public ruby-listen
8303 (package
8304 (name "ruby-listen")
8305 (version "3.8.0")
8306 (source
8307 (origin
8308 ;; The gem does not include a Rakefile, so fetch from the Git
8309 ;; repository.
8310 (method git-fetch)
8311 (uri (git-reference
8312 (url "https://github.com/guard/listen")
8313 (commit (string-append "v" version))))
8314 (file-name (git-file-name name version))
8315 (sha256
8316 (base32
8317 "1skkglml094dw1xr4742in1rwwa84ld0mz4nkw6qa8pwhx48x2n5"))))
8318 (build-system ruby-build-system)
8319 (arguments
8320 (list
8321 #:test-target "spec"
8322 #:phases
8323 #~(modify-phases %standard-phases
8324 (add-after 'unpack 'fix-files-in-gemspec
8325 (lambda _
8326 (substitute* "listen.gemspec"
8327 (("`git ls-files -z`")
8328 "`find . -type f -printf '%P\\\\0' |sort -z`"))))
8329 (add-before 'check 'remove-unnecessary-dependencies'
8330 (lambda _
8331 (substitute* "Rakefile"
8332 ;; Rubocop is for code linting, and is unnecessary for running
8333 ;; the tests.
8334 ((".*rubocop.*") "")))))))
8335 (native-inputs
8336 (list bundler ruby-rspec))
8337 (inputs
8338 (list ;; ruby-thor is used for the command line interface, and is referenced
8339 ;; in the wrapper, and therefore just needs to be an input.
8340 ruby-thor))
8341 (propagated-inputs
8342 (list ruby-rb-fsevent ruby-rb-inotify))
8343 (synopsis "Listen to file modifications")
8344 (description "The Listen gem listens to file modifications and notifies
8345you about the changes.")
8346 (home-page "https://github.com/guard/listen")
8347 (license license:expat)))
8348
8349(define-public ruby-loofah
8350 (package
8351 (name "ruby-loofah")
8352 (version "2.21.3")
8353 (home-page "https://github.com/flavorjones/loofah")
8354 (source
8355 (origin
8356 ;; Build from git because the gem lacks tests.
8357 (method git-fetch)
8358 (uri (git-reference (url home-page)
8359 (commit (string-append "v" version))))
8360 (file-name (git-file-name name version))
8361 (sha256
8362 (base32
8363 "1lh7cf56y1b0h090ahphvz7grq581phsamdl0rq59y0q9bqwrhg0"))))
8364 (build-system ruby-build-system)
8365 (native-inputs
8366 (list ruby-hoe ruby-hoe-markdown ruby-rr))
8367 (propagated-inputs
8368 (list ruby-nokogiri ruby-crass))
8369 (synopsis "Ruby library for manipulating and transforming HTML/XML")
8370 (description
8371 "Loofah is a general library for manipulating and transforming HTML/XML
8372documents and fragments. It's built on top of Nokogiri and libxml2.")
8373 (license license:expat)))
8374
8375(define-public ruby-crass
8376 (package
8377 (name "ruby-crass")
8378 (version "1.0.6")
8379 (home-page "https://github.com/rgrove/crass")
8380 (source (origin
8381 ;; The gem does not contain tests, so pull from git.
8382 (method git-fetch)
8383 (uri (git-reference
8384 (url home-page)
8385 (commit (string-append "v" version))))
8386 (file-name (git-file-name name version))
8387 (sha256
8388 (base32
8389 "1gbsb81psgb6xhnwpx4s409jc0mk0gijh039sy5xyi8jpaaadp40"))))
8390 (build-system ruby-build-system)
8391 (synopsis "Pure Ruby CSS parser")
8392 (description
8393 "Crass is a pure Ruby CSS parser based on the CSS Syntax Level 3 spec.")
8394 (license license:expat)))
8395
8396;;; The ruby-nokogumbo package has been absorbed into ruby-nokogiri.
8397(define-public ruby-nokogumbo
8398 (deprecated-package "ruby-nokogumbo" ruby-nokogiri))
8399
8400(define-public ruby-samovar
8401 (package
8402 (name "ruby-samovar")
8403 (version "2.1.4")
8404 (source (origin
8405 (method git-fetch) ;for tests
8406 (uri (git-reference
8407 (url "https://github.com/ioquatix/samovar")
8408 (commit (string-append "v" version))))
8409 (file-name (git-file-name name version))
8410 (sha256
8411 (base32
8412 "05pc5xlbv44anx0sfqssh0xhxg297bvl5slsl7k1vnka4k5fhax6"))))
8413 (build-system ruby-build-system)
8414 (native-inputs (list ruby-covered ruby-rspec))
8415 (propagated-inputs (list ruby-console ruby-mapping))
8416 (synopsis "Flexible option parser for Ruby")
8417 (description "Samovar is a modern framework for building command-line
8418tools and applications. It provides a declarative class-based DSL for
8419building command-line parsers that include automatic documentation generation.
8420It helps you keep your functionality clean and isolated where possible.")
8421 (home-page "https://github.com/ioquatix/samovar")
8422 (license license:expat)))
8423
8424(define-public ruby-sanitize
8425 (package
8426 (name "ruby-sanitize")
8427 (version "6.0.0")
8428 (home-page "https://github.com/rgrove/sanitize")
8429 (source (origin
8430 (method git-fetch)
8431 ;; The gem does not include the Rakefile, so we download the
8432 ;; source from Github.
8433 (uri (git-reference
8434 (url home-page)
8435 (commit (string-append "v" version))))
8436 (file-name (git-file-name name version))
8437 (sha256
8438 (base32
8439 "0p1a28vx95vscy9xzzyyddzgb9496x42a5i2ka39cpxbl5f3gkl0"))))
8440 (build-system ruby-build-system)
8441 (propagated-inputs (list ruby-crass ruby-nokogiri))
8442 (native-inputs (list ruby-minitest))
8443 (synopsis "Whitelist-based HTML and CSS sanitizer")
8444 (description
8445 "Sanitize is a whitelist-based HTML and CSS sanitizer. Given a list of
8446acceptable elements, attributes, and CSS properties, Sanitize will remove all
8447unacceptable HTML and/or CSS from a string.")
8448 (license license:expat)))
8449
8450(define-public ruby-sync
8451 (package
8452 (name "ruby-sync")
8453 (version "0.5.0")
8454 (source
8455 (origin
8456 (method url-fetch)
8457 (uri (rubygems-uri "sync" version))
8458 (sha256
8459 (base32
8460 "1z9qlq4icyiv3hz1znvsq1wz2ccqjb1zwd6gkvnwg6n50z65d0v6"))))
8461 (build-system ruby-build-system)
8462 (synopsis "Ruby module with a two-phase lock and counter")
8463 (description "This package provides a Ruby module that provides a two-phase
8464lock with a counter.")
8465 (home-page "https://github.com/ruby/sync")
8466 (license license:bsd-2)))
8467
8468(define-public ruby-oj
8469 (package
8470 (name "ruby-oj")
8471 (version "3.13.9")
8472 (source
8473 (origin
8474 (method git-fetch)
8475 ;; Version on rubygems.org does not contain Rakefile, so download from
8476 ;; GitHub instead.
8477 (uri (git-reference
8478 (url "https://github.com/ohler55/oj")
8479 (commit (string-append "v" version))))
8480 (file-name (git-file-name name version))
8481 (sha256
8482 (base32
8483 "0a24zd28y58nyhjxgrpn2k9p72vzj3zbmdrcsbhwbdycj7nn9fpd"))))
8484 (build-system ruby-build-system)
8485 (arguments
8486 '(#:test-target "test_all"
8487 #:phases
8488 (modify-phases %standard-phases
8489 (add-before 'check 'disable-bundler
8490 (lambda _
8491 (substitute* "Rakefile"
8492 (("Bundler\\.with_clean_env") "1.times")
8493 (("bundle exec ") "")))))))
8494 (native-inputs
8495 (list bundler ruby-rspec ruby-rake-compiler))
8496 (synopsis "JSON parser for Ruby optimized for speed")
8497 (description
8498 "Oj is a JSON parser and generator for Ruby, where the encoding and
8499decoding of JSON is implemented as a C extension to Ruby.")
8500 (home-page "https://www.ohler.com/oj/")
8501 (license (list license:expat ; Ruby code
8502 license:bsd-3)))) ; extension code
8503
8504(define-public ruby-ox
8505 (package
8506 (name "ruby-ox")
8507 (version "2.6.0")
8508 (source
8509 (origin
8510 (method url-fetch)
8511 (uri (rubygems-uri "ox" version))
8512 (sha256
8513 (base32
8514 "0fmk62b1h2i79dfzjj8wmf8qid1rv5nhwfc17l489ywnga91xl83"))))
8515 (build-system ruby-build-system)
8516 (arguments
8517 '(#:tests? #f)) ; no tests
8518 (synopsis "Optimized XML library for Ruby")
8519 (description
8520 "Optimized XML (Ox) is a fast XML parser and object serializer for Ruby
8521written as a native C extension. It was designed to be an alternative to
8522Nokogiri and other Ruby XML parsers for generic XML parsing and as an
8523alternative to Marshal for Object serialization.")
8524 (home-page "https://www.ohler.com/ox")
8525 (license license:expat)))
8526
8527(define-public ruby-redcloth
8528 (package
8529 (name "ruby-redcloth")
8530 (version "4.3.2")
8531 (source (origin
8532 (method url-fetch)
8533 (uri (rubygems-uri "RedCloth" version))
8534 (sha256
8535 (base32
8536 "0m9dv7ya9q93r8x1pg2gi15rxlbck8m178j1fz7r5v6wr1avrrqy"))))
8537 (build-system ruby-build-system)
8538 (arguments
8539 `(#:tests? #f ; no tests
8540 #:phases
8541 (modify-phases %standard-phases
8542 ;; Redcloth has complicated rake tasks to build various versions for
8543 ;; multiple targets using RVM. We don't want this so we just use the
8544 ;; existing gemspec.
8545 (replace 'build
8546 (lambda _
8547 (invoke "gem" "build" "redcloth.gemspec"))))))
8548 (native-inputs
8549 `(("bundler" ,bundler)
8550 ("ruby-diff-lcs" ,ruby-diff-lcs)
8551 ("ruby-rspec-2" ,ruby-rspec-2)))
8552 (synopsis "Textile markup language parser for Ruby")
8553 (description
8554 "RedCloth is a Ruby parser for the Textile markup language.")
8555 (home-page "http://redcloth.org")
8556 (license license:expat)))
8557
8558(define-public ruby-pg
8559 (let ((commit "378b7a35c12292625460ef2f33373de7114bf255")
8560 (revision "0"))
8561 (package
8562 (name "ruby-pg")
8563 (version (git-version "1.5.9" revision commit))
8564 (home-page "https://github.com/ged/ruby-pg")
8565 (source
8566 (origin
8567 (method git-fetch)
8568 (uri (git-reference
8569 (url home-page)
8570 (commit commit)))
8571 (file-name (git-file-name name version))
8572 (sha256
8573 (base32 "1aq6kakyghgbb4yykxxl9ziaaa7jbdbyc7vz6avyxhlby1jkj0m8"))
8574 (patches
8575 (search-patches "ruby-pg-fix-connect-timeout.patch"))))
8576 (build-system ruby-build-system)
8577 (arguments
8578 (list
8579 #:test-target "spec"
8580 #:phases
8581 #~(modify-phases %standard-phases
8582 (add-before 'build 'compile
8583 (lambda _
8584 (invoke "rake" "compile")))
8585 ;; Some tests rely on postgresql_lib_path.rb, but it is not
8586 ;; available until the gem is installed. Run tests after
8587 ;; installing to work around it.
8588 (delete 'check)
8589 (add-after 'install 'check
8590 (lambda* (#:key tests? #:allow-other-keys)
8591 (let ((new-gem (string-append #$output
8592 "/lib/ruby/vendor_ruby")))
8593 (setenv "GEM_PATH"
8594 (string-append (getenv "GEM_PATH") ":" new-gem))
8595 (when tests?
8596 (invoke "rspec"))))))))
8597 (native-inputs (list ruby-rake-compiler ruby-hoe ruby-rspec))
8598 (inputs (list postgresql))
8599 (synopsis "Ruby interface to PostgreSQL")
8600 (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works
8601with PostgreSQL 9.3 and later.")
8602 (license license:ruby))))
8603
8604(define-public ruby-byebug
8605 (package
8606 (name "ruby-byebug")
8607 (version "11.1.3")
8608 (source
8609 (origin
8610 (method git-fetch)
8611 (uri (git-reference
8612 (url "https://github.com/deivid-rodriguez/byebug")
8613 (commit (string-append "v" version))))
8614 (file-name (git-file-name name version))
8615 (sha256
8616 (base32
8617 "0vyy3k2s7dcndngj6m8kxhs1vxc2c93dw8b3yyand3srsg9ffpij"))
8618 (modules '((guix build utils)))
8619 (snippet
8620 '(begin
8621 ;; Remove wrappers that try to setup a bundle environment.
8622 (with-directory-excursion "bin"
8623 (for-each delete-file '("bundle" "rake" "rubocop"))
8624 ;; ruby-minitest doesn't come with a launcher, so fix the one
8625 ;; provided.
8626 (substitute* "minitest"
8627 (("load File\\.expand_path\\(\"bundle\".*") "")
8628 (("require \"bundler/setup\".*") "")))))))
8629 (build-system ruby-build-system)
8630 (arguments
8631 (list
8632 #:phases
8633 #~(modify-phases %standard-phases
8634 (add-after 'unpack 'sanitize-dependencies
8635 (lambda _
8636 (substitute* "Rakefile"
8637 ((".*chandler/tasks.*") ""))))
8638 (add-after 'unpack 'skip-tmp-path-sensitive-test
8639 (lambda _
8640 (substitute* "test/commands/where_test.rb"
8641 (("unless /cygwin\\|mswin\\|mingw\\|darwin/.*")
8642 "unless true\n"))))
8643 (add-before 'build 'compile
8644 (lambda _
8645 (invoke "rake" "compile")))
8646 (add-before 'check 'patch-tests
8647 (lambda _
8648 ;; srand': no implicit conversion of nil into Integer (TypeError)
8649 (delete-file "test/minitest_runner_test.rb")
8650 ;; Expects 5, gets 162. From a file containing ~10 lines.
8651 (substitute* "test/commands/finish_test.rb"
8652 (("test_finish_inside_autoloaded_files")
8653 "finish_inside_autoloaded_files"))))
8654 (add-before 'check 'set-home
8655 (lambda _
8656 (setenv "HOME" (getcwd)))))))
8657 (native-inputs
8658 (list bundler
8659 ruby-minitest
8660 ruby-pry
8661 ruby-rake-compiler
8662 ruby-rubocop
8663 ruby-yard))
8664 (synopsis "Debugger for Ruby 2")
8665 (description "Byebug is a Ruby 2 debugger implemented using the Ruby 2
8666TracePoint C API for execution control and the Debug Inspector C API for call
8667stack navigation. The core component provides support that front-ends can
8668build on. It provides breakpoint handling and bindings for stack frames among
8669other things and it comes with a command line interface.")
8670 (home-page "https://github.com/deivid-rodriguez/byebug")
8671 (license license:bsd-2)))
8672
8673(define-public ruby-netrc
8674 (package
8675 (name "ruby-netrc")
8676 (version "0.11.0")
8677 (source (origin
8678 (method url-fetch)
8679 (uri (rubygems-uri "netrc" version))
8680 (sha256
8681 (base32
8682 "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y"))))
8683 (build-system ruby-build-system)
8684 (arguments
8685 `(#:phases
8686 (modify-phases %standard-phases
8687 (replace 'check
8688 ;; There is no Rakefile and minitest can only run one file at once,
8689 ;; so we have to iterate over all test files.
8690 (lambda _
8691 (for-each (lambda (file)
8692 (invoke "ruby" "-Itest" file))
8693 (find-files "./test" "test_.*\\.rb"))))
8694 (add-before 'check 'patch-tests-for-newer-ruby
8695 (lambda _
8696 (substitute* "test/test_netrc.rb"
8697 (("Dir.pwd, '.netrc'") "Netrc.home_path, '.netrc'")))))))
8698 (native-inputs
8699 (list ruby-minitest))
8700 (synopsis "Library to read and update netrc files")
8701 (description
8702 "This library can read and update netrc files, preserving formatting
8703including comments and whitespace.")
8704 (home-page "https://github.com/geemus/netrc")
8705 (license license:expat)))
8706
8707(define-public ruby-unf-ext
8708 (package
8709 (name "ruby-unf-ext")
8710 (version "0.0.8.2")
8711 (source (origin
8712 (method url-fetch)
8713 (uri (rubygems-uri "unf_ext" version))
8714 (sha256
8715 (base32
8716 "1yj2nz2l101vr1x9w2k83a0fag1xgnmjwp8w8rw4ik2rwcz65fch"))))
8717 (build-system ruby-build-system)
8718 (arguments
8719 `(#:phases
8720 (modify-phases %standard-phases
8721 (add-after 'build 'build-ext
8722 (lambda _ (invoke "rake" "compile:unf_ext")))
8723 (add-before 'check 'lose-rake-compiler-dock-dependency
8724 (lambda _
8725 ;; rake-compiler-dock is listed in the gemspec, but only
8726 ;; required when cross-compiling.
8727 (substitute* "unf_ext.gemspec"
8728 ((".*rake-compiler-dock.*") "")))))))
8729 (native-inputs
8730 (list bundler ruby-rake-compiler ruby-test-unit))
8731 (synopsis "Unicode normalization form support library")
8732 (description
8733 "This package provides unicode normalization form support for Ruby.")
8734 (home-page "https://github.com/knu/ruby-unf_ext")
8735 (license license:expat)))
8736
8737(define-public ruby-tdiff
8738 ;; Use a newer than released snapshot so that rspec-2 is not required.
8739 (let ((commit "b662a6048f08abc45c1a834e5f34dd1c662935e2"))
8740 (package
8741 (name "ruby-tdiff")
8742 (version (string-append "0.3.3-1." (string-take commit 8)))
8743 (source (origin
8744 (method git-fetch)
8745 (uri (git-reference
8746 (url "https://github.com/postmodern/tdiff")
8747 (commit commit)))
8748 (file-name (string-append name "-" version "-checkout"))
8749 (sha256
8750 (base32
8751 "0n3gq8rx49f7ln6zqlshqfg2mgqyy30rsdjlnki5mv307ykc7ad4"))))
8752 (build-system ruby-build-system)
8753 (native-inputs
8754 (list ruby-rspec ruby-yard/minimal ruby-rubygems-tasks))
8755 (synopsis "Calculate the differences between two tree-like structures")
8756 (description
8757 "This library provides functions to calculate the differences between two
8758tree-like structures. It is similar to Ruby's built-in @code{TSort} module.")
8759 (home-page "https://github.com/postmodern/tdiff")
8760 (license license:expat))))
8761
8762(define-public ruby-nokogiri-diff
8763 ;; Use a newer than released snapshot so that rspec-2 is not required.
8764 (let ((commit "a38491e4d8709b7406f2cae11a50226d927d06f5"))
8765 (package
8766 (name "ruby-nokogiri-diff")
8767 (version (string-append "0.2.0-1." (string-take commit 8)))
8768 (source (origin
8769 (method git-fetch)
8770 (uri (git-reference
8771 (url "https://github.com/postmodern/nokogiri-diff")
8772 (commit commit)))
8773 (file-name (string-append name "-" version "-checkout"))
8774 (sha256
8775 (base32
8776 "1ah2sfjh9n1p0ln2wkqzfl448ml7j4zfy6dhp1qgzq2m41php6rf"))))
8777 (build-system ruby-build-system)
8778 (propagated-inputs
8779 (list ruby-tdiff
8780 ruby-nokogiri))
8781 (native-inputs
8782 (list ruby-rspec ruby-yard/minimal ruby-rubygems-tasks))
8783 (synopsis "Calculate the differences between two XML/HTML documents")
8784 (description
8785 "@code{Nokogiri::Diff} adds the ability to calculate the
8786differences (added or removed nodes) between two XML/HTML documents.")
8787 (home-page "https://github.com/postmodern/nokogiri-diff")
8788 (license license:expat))))
8789
8790(define-public ruby-racc
8791 (package
8792 (name "ruby-racc")
8793 (version "1.5.2")
8794 (source
8795 (origin
8796 (method url-fetch)
8797 (uri (rubygems-uri "racc" version))
8798 (sha256
8799 (base32
8800 "178k7r0xn689spviqzhvazzvxfq6fyjldxb3ywjbgipbfi4s8j1g"))))
8801 (build-system ruby-build-system)
8802 (arguments
8803 `(#:tests? #f)) ; Fails while parsing test instructions.
8804 (native-inputs
8805 (list ruby-hoe ruby-rake-compiler))
8806 (synopsis "LALR(1) parser generator for Ruby")
8807 (description
8808 "Racc is a LALR(1) parser generator. It is written in Ruby itself, and
8809generates Ruby program.")
8810 (home-page "https://i.loveruby.net/en/projects/racc/")
8811 (license (list
8812 ;; Generally licensed under the LGPL2.1, and some files also
8813 ;; available under the same license as Ruby.
8814 license:lgpl2.1
8815 license:ruby))))
8816
8817(define-public ruby-rack
8818 (package
8819 (name "ruby-rack")
8820 ;; Do not upgrade to version 3, as Rails doesn't support it yet.
8821 (version "2.2.7")
8822 (source
8823 (origin
8824 (method git-fetch) ;for tests
8825 (uri (git-reference
8826 (url "https://github.com/rack/rack")
8827 (commit (string-append "v" version))))
8828 (file-name (git-file-name name version))
8829 (sha256
8830 (base32
8831 "02r41fr61x0jfhraizc6bsgs40p8mlpvnzix71zwmcvibg384ify"))))
8832 (build-system ruby-build-system)
8833 (arguments
8834 (list
8835 #:phases
8836 #~(modify-phases %standard-phases
8837 (add-before 'check 'fix-tests
8838 (lambda _
8839 ;; This test fails in the build environment (and passes outside
8840 ;; of it).
8841 (substitute* "test/spec_files.rb"
8842 (("res.body.must_equal expected_body") ""))
8843 ;; A few of the tests use the length of a file on disk for
8844 ;; Content-Length and Content-Range headers. However, this file
8845 ;; has a shebang in it which an earlier phase patches, growing
8846 ;; the file size from 193 to 239 bytes when the store prefix is
8847 ;; "/gnu/store".
8848 (let ((size-diff (- (string-length (which "ruby"))
8849 (string-length "/usr/bin/env ruby"))))
8850 (substitute* '("test/spec_files.rb")
8851 (("208" bytes)
8852 (number->string (+ (string->number bytes) size-diff)))
8853 (("bytes(.)22-33" all delimiter)
8854 (string-append "bytes"
8855 delimiter
8856 (number->string (+ 22 size-diff))
8857 "-"
8858 (number->string (+ 33 size-diff)))))))))))
8859 (native-inputs
8860 (list ruby-minitest
8861 ruby-minitest-global-expectations
8862 ruby-webrick))
8863 (synopsis "Unified web application interface for Ruby")
8864 (description "Rack provides a minimal, modular and adaptable interface for
8865developing web applications in Ruby. By wrapping HTTP requests and responses,
8866it unifies the API for web servers, web frameworks, and software in between
8867into a single method call.")
8868 (home-page "https://github.com/rack/rack")
8869 (license license:expat)))
8870
8871(define-public ruby-rack-next
8872 (package
8873 (inherit ruby-rack)
8874 (name "ruby-rack")
8875 (version "3.0.7")
8876 (source (origin
8877 (method git-fetch) ;for tests
8878 (uri (git-reference
8879 (url "https://github.com/rack/rack")
8880 (commit (string-append "v" version))))
8881 (file-name (git-file-name name version))
8882 (sha256
8883 (base32
8884 "0msf14655nfcq1kgmib6932lgzm9nw3nb0m3c7nh6nj4sx30yxfr"))))
8885 (arguments '())))
8886
8887(define-public ruby-rackup
8888 (package
8889 (name "ruby-rackup")
8890 (version "2.1.0")
8891 (source (origin
8892 (method git-fetch)
8893 (uri (git-reference
8894 (url "https://github.com/rack/rackup")
8895 (commit (string-append "v" version))))
8896 (file-name (git-file-name name version))
8897 (sha256
8898 (base32
8899 "19b7sy700zjwaw7x47qpxvhnnz5hrp5bhrxfyljgagrli824dajy"))))
8900 (build-system ruby-build-system)
8901 (native-inputs (list ruby-minitest-global-expectations))
8902 (inputs (list ruby-rack-next ruby-webrick))
8903 (synopsis "Command line interface (CLI) for running for Rack applications")
8904 (description "This package provides a command line interface for running
8905for Rack applications.")
8906 (home-page "https://github.com/rack/rackup")
8907 (license license:expat)))
8908
8909(define-public ruby-rackup-1
8910 (package
8911 (inherit ruby-rackup)
8912 (name "ruby-rackup")
8913 (version "1.0.1")
8914 (source (origin
8915 (method git-fetch)
8916 (uri (git-reference
8917 (url "https://github.com/rack/rackup")
8918 (commit (string-append "v" version))))
8919 (file-name (git-file-name name version))
8920 (sha256
8921 (base32
8922 "1xdfxsz7jx2gwfq212y9mca6q0i5s7kyqbfcscy1315awg57ynyp"))))))
8923
8924(define-public ruby-rack-cache
8925 (package
8926 (name "ruby-rack-cache")
8927 (version "1.13.0")
8928 (source (origin
8929 (method url-fetch)
8930 (uri (rubygems-uri "rack-cache" version))
8931 (sha256
8932 (base32
8933 "1cqpax628h2mhnsjfg91c3klxwx2pkvaj061cisb0saqa99b0jgm"))))
8934 (build-system ruby-build-system)
8935 (arguments
8936 (list
8937 ;; The test suite depends on ruby-memcached, which is not available in
8938 ;; Guix and bundles a very dated copy of memcached (undesirable).
8939 #:tests? #f))
8940 (propagated-inputs (list ruby-rack))
8941 (synopsis "Component to enable HTTP caching for Rack-based applications")
8942 (description "Rack::Cache is suitable as a drop-in component to enable
8943HTTP caching for Rack-based applications that produce freshness (Expires,
8944Cache-Control) and/or validation (Last-Modified, ETag) information.")
8945 (home-page "https://github.com/rtomayko/rack-cache")
8946 (license license:expat)))
8947
8948(define-public ruby-rack-test
8949 (package
8950 (name "ruby-rack-test")
8951 (version "2.1.0")
8952 (source
8953 (origin
8954 (method url-fetch)
8955 (uri (rubygems-uri "rack-test" version))
8956 (sha256
8957 (base32
8958 "1ysx29gk9k14a14zsp5a8czys140wacvp91fja8xcja0j1hzqq8c"))))
8959 (build-system ruby-build-system)
8960 (arguments
8961 ;; Disable tests because of circular dependencies: requires sinatra,
8962 ;; which requires rack-protection, which requires rack-test. Instead
8963 ;; simply require the library.
8964 `(#:phases
8965 (modify-phases %standard-phases
8966 (replace 'check
8967 (lambda* (#:key tests? #:allow-other-keys)
8968 (when tests?
8969 (invoke "ruby" "-Ilib" "-r" "rack/test")))))))
8970 (propagated-inputs
8971 (list ruby-rack))
8972 (synopsis "Testing API for Rack applications")
8973 (description
8974 "Rack::Test is a small, simple testing API for Rack applications. It can
8975be used on its own or as a reusable starting point for Web frameworks and
8976testing libraries to build on.")
8977 (home-page "https://github.com/rack/rack-test")
8978 (license license:expat)))
8979
8980(define-public ruby-rack-session
8981 (package
8982 (name "ruby-rack-session")
8983 ;; Stay on version 1 until all the rack users such as Rails can use rack 3
8984 ;; (rack-session 2 requires rack 3).
8985 (version "1.0.1")
8986 (source (origin
8987 (method git-fetch) ;for tests
8988 (uri (git-reference
8989 (url "https://github.com/rack/rack-session")
8990 (commit (string-append "v" version))))
8991 (file-name (git-file-name name version))
8992 (sha256
8993 (base32
8994 "0rv955wd7ckp5jgy5c229wmajh48jpcy8s0iv5i8ma61wf7qw0i1"))))
8995 (build-system ruby-build-system)
8996 (native-inputs
8997 (list ruby-minitest-global-expectations
8998 ruby-minitest-sprint))
8999 (propagated-inputs
9000 (list ruby-rack))
9001 (synopsis "Session management for Rack")
9002 (description "This package provides a session management implementation
9003for Rack.")
9004 (home-page "https://github.com/rack/rack-session")
9005 (license license:expat)))
9006
9007(define-public ruby-rack-protection
9008 (package
9009 (name "ruby-rack-protection")
9010 (version "3.0.5")
9011 (source
9012 (origin
9013 (method url-fetch)
9014 (uri (rubygems-uri "rack-protection" version))
9015 (sha256
9016 (base32
9017 "1a12m1mv8dc0g90fs1myvis8vsgr427k1arg1q4a9qlfw6fqyhis"))))
9018 (build-system ruby-build-system)
9019 (arguments
9020 '(;; Tests missing from the gem.
9021 #:tests? #f))
9022 (propagated-inputs
9023 (list ruby-rack))
9024 (native-inputs
9025 (list bundler ruby-rspec-2 ruby-rack-test))
9026 (synopsis "Rack middleware that protects against typical web attacks")
9027 (description "Rack middleware that can be used to protect against typical
9028web attacks. It can protect all Rack apps, including Rails. For instance, it
9029protects against cross site request forgery, cross site scripting,
9030clickjacking, directory traversal, session hijacking and IP spoofing.")
9031 (home-page "https://github.com/sinatra/sinatra/tree/master/rack-protection")
9032 (license license:expat)))
9033
9034(define-public ruby-rainbow
9035 (package
9036 (name "ruby-rainbow")
9037 (version "3.0.0")
9038 (source
9039 (origin
9040 (method url-fetch)
9041 (uri (rubygems-uri "rainbow" version))
9042 (sha256
9043 (base32
9044 "0bb2fpjspydr6x0s8pn1pqkzmxszvkfapv0p4627mywl7ky4zkhk"))))
9045 (build-system ruby-build-system)
9046 (arguments
9047 '(#:phases
9048 (modify-phases %standard-phases
9049 ;; Run rspec directly, to avoid requiring Rubocop which is used from
9050 ;; the Rakefile.
9051 (replace 'check
9052 (lambda* (#:key tests? #:allow-other-keys)
9053 (when tests?
9054 (invoke "rspec")))))))
9055 (native-inputs
9056 (list bundler ruby-rspec))
9057 (synopsis "Colorize printed text on ANSI terminals")
9058 (description
9059 "@code{rainbow} provides a string presenter object to colorize strings by
9060wrapping them in ANSI escape codes.")
9061 (home-page "https://github.com/sickill/rainbow")
9062 (license license:expat)))
9063
9064(define-public ruby-rr
9065 (package
9066 (name "ruby-rr")
9067 (version "1.2.1")
9068 (source
9069 (origin
9070 (method url-fetch)
9071 (uri (rubygems-uri "rr" version))
9072 (sha256
9073 (base32
9074 "1n9g78ba4c2zzmz8cdb97c38h1xm0clircag00vbcxwqs4dq0ymp"))))
9075 (build-system ruby-build-system)
9076 (arguments
9077 '(#:tests? #f)) ; test files not included
9078 (native-inputs
9079 (list bundler ruby-rspec))
9080 (synopsis "Ruby test double framework")
9081 (description
9082 "RR is a test double framework that features a rich selection of double
9083techniques and a terse syntax.")
9084 (home-page "https://rr.github.io/rr/")
9085 (license license:expat)))
9086
9087(define-public ruby-rest-client
9088 (package
9089 (name "ruby-rest-client")
9090 (version "2.1.0")
9091 (source
9092 (origin
9093 (method url-fetch)
9094 (uri (rubygems-uri "rest-client" version))
9095 (sha256
9096 (base32
9097 "1qs74yzl58agzx9dgjhcpgmzfn61fqkk33k1js2y5yhlvc5l19im"))))
9098 (build-system ruby-build-system)
9099 (arguments
9100 (list
9101 ;; TODO Some tests are currently broken
9102 #:tests? #f
9103 #:phases
9104 #~(modify-phases %standard-phases
9105 (add-before 'check 'remove-unnecessary-development-dependencies
9106 (lambda _
9107 (substitute* "rest-client.gemspec"
9108 ;; Remove rubocop as it's unused. Rubocop also indirectly
9109 ;; depends on this package through ruby-parser and ruby-ast so
9110 ;; this avoids a dependency loop.
9111 ((".*rubocop.*") "\n")
9112 ;; Remove pry as it's unused, it's a debugging tool
9113 ((".*pry.*") "\n")
9114 ;; Remove an unnecessarily strict rdoc dependency
9115 ((".*rdoc.*") "\n"))))
9116 (add-before 'check 'delete-network-dependent-tests
9117 (lambda _
9118 (delete-file "spec/integration/request_spec.rb")
9119 (delete-file "spec/integration/httpbin_spec.rb")))
9120 (replace 'check
9121 (lambda* (#:key tests? #:allow-other-keys)
9122 (when tests?
9123 (invoke "rspec")))))))
9124 (propagated-inputs
9125 (list ruby-http-accept-1
9126 ruby-http-cookie
9127 ruby-mime-types
9128 ruby-netrc))
9129 (native-inputs
9130 (list bundler
9131 ruby-webmock-2
9132 ruby-rspec))
9133 (synopsis "Simple HTTP and REST client for Ruby")
9134 (description
9135 "@code{rest-client} provides a simple HTTP and REST client for Ruby,
9136inspired by the Sinatra microframework style of specifying actions:
9137@code{get}, @code{put}, @code{post}, @code{delete}.")
9138 (home-page "https://github.com/rest-client/rest-client")
9139 (license license:expat)))
9140
9141(define-public ruby-rubocop-ast
9142 (package
9143 (name "ruby-rubocop-ast")
9144 (version "1.37.0")
9145 (source
9146 (origin
9147 (method git-fetch) ;no test suite in distributed gem
9148 (uri (git-reference
9149 (url "https://github.com/rubocop/rubocop-ast")
9150 (commit (string-append "v" version))))
9151 (file-name (git-file-name name version))
9152 (sha256
9153 (base32
9154 "1ww1vxcx6qaih4g68mrbq4xlgrqbv8w7cqxdaz629sazpw2hkycs"))))
9155 (build-system ruby-build-system)
9156 (arguments
9157 `(#:test-target "spec"
9158 #:phases (modify-phases %standard-phases
9159 (add-after 'unpack 'relax-dependencies
9160 (lambda _
9161 (substitute* "Gemfile"
9162 (("gem 'simplecov', '~> 0.10', '< 0.18'")
9163 "gem 'simplecov', '~> 0.10'"))))
9164 (add-before 'build 'generate-lexer
9165 (lambda _
9166 (setenv "RUBOCOP_VERSION" "none")
9167 (invoke "rake" "generate")))
9168 (replace 'replace-git-ls-files
9169 (lambda _
9170 (substitute* "rubocop-ast.gemspec"
9171 (("`git ls-files(.*)`" _ files)
9172 (format #f "`find ~a -type f| sort`" files))))))))
9173 (native-inputs
9174 (list ruby-bump
9175 ruby-oedipus-lex
9176 ruby-prism
9177 ruby-racc
9178 ruby-rake
9179 ruby-rspec
9180 ruby-simplecov))
9181 (propagated-inputs
9182 (list ruby-parser))
9183 (synopsis "RuboCop's AST extensions and NodePattern functionality")
9184 (description "Rubocop::AST extends @code{ruby-parser} with classes used
9185by RuboCop to deal with Ruby's Abstract Syntax Tree (AST), in particular:
9186@itemize
9187@item @code{RuboCop::AST::Node}
9188@item @code{RuboCop::AST::NodePattern}
9189@end itemize")
9190 (home-page "https://rubocop.org/")
9191 (license license:expat)))
9192
9193(define-public ruby-rexml
9194 (package
9195 (name "ruby-rexml")
9196 (version "3.2.5")
9197 (source
9198 (origin
9199 (method git-fetch) ;no tests in distributed gem
9200 (uri (git-reference
9201 (url "https://github.com/ruby/rexml")
9202 (commit (string-append "v" version))))
9203 (file-name (git-file-name name version))
9204 (sha256
9205 (base32 "13n6vaa80drqic2wri4q6k22qzvsn683vp5s8c9dllil6x04kn0x"))))
9206 (build-system ruby-build-system)
9207 (synopsis "XML toolkit for Ruby")
9208 (description "Inspired by Electric XML library for Java, REXML aims to be
9209easy-to-use API, small and fast. It supports both tree and stream document
9210parsing.")
9211 (home-page "https://github.com/ruby/rexml")
9212 (license license:bsd-2)))
9213
9214(define-public ruby-character-set
9215 (package
9216 (name "ruby-character-set")
9217 (version "1.4.0")
9218 (source
9219 (origin
9220 (method url-fetch)
9221 (uri (rubygems-uri "character_set" version))
9222 (sha256
9223 (base32
9224 "0affq9n77vwy897ri2zhmfinfagf37hcwwimrccy1bcxan9mj3h3"))))
9225 (build-system ruby-build-system)
9226 (arguments '(#:tests? #f)) ;avoid a cycle with ruby-regexp-parser
9227 (synopsis "Ruby library to manipulate Unicode")
9228 (description "CharacterSet is a C-extended Ruby library to work with sets
9229of Unicode code points. It can read and write these sets in various formats
9230and implements the @code{stdlib} @code{Set} interface for them. It also
9231offers an alternate paradigm of @code{String} processing which grants much
9232better performance than @code{Regexp} and @code{String} methods from the
9233@code{stdlib} where applicable. Many parts can be used independently, e.g.:
9234@itemize
9235@item @code{CharacterSet::Character}
9236@item @code{CharacterSet::Parser}
9237@item @code{CharacterSet::Writer}
9238@item @code{RangeCompressor}
9239@end itemize")
9240 (home-page "https://github.com/jaynetics/character_set")
9241 (license license:expat)))
9242
9243(define-public ruby-range-compressor
9244 (package
9245 (name "ruby-range-compressor")
9246 (version "1.2.0")
9247 (source
9248 (origin
9249 (method git-fetch)
9250 (uri (git-reference
9251 (url "https://github.com/janosch-x/range_compressor")
9252 (commit (string-append "v" version))))
9253 (file-name (git-file-name name version))
9254 (sha256
9255 (base32
9256 "1zmc44si5ac2h7r1x4f1j8z5yr6wz528c7dssh0g70fmczs3pfga"))))
9257 (build-system ruby-build-system)
9258 (arguments
9259 (list
9260 #:test-target "spec"
9261 #:phases
9262 #~(modify-phases %standard-phases
9263 (add-after 'extract-gemspec 'strip-version-requirements
9264 (lambda _
9265 (substitute* "range_compressor.gemspec"
9266 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
9267 (string-append stripped "\n"))))))))
9268 (native-inputs
9269 (list ruby-rspec
9270 ruby-sorted-set))
9271 (synopsis "Simple arrays of objects to arrays of ranges compressor")
9272 (description "RangeCompresses is a tiny library that allows compressing
9273arrays of objects into arrays of ranges. For example, it can turn the
9274following: @code{[1, 2, 3, 4, 6, 8, 9, 10]} into @code{[1..4, 6..6, 8..10]}.")
9275 (home-page "https://github.com/janosch-x/range_compressor")
9276 (license license:expat)))
9277
9278(define-public ruby-regexp-property-values
9279 (let ((commit "03007a66c912949a7130b973cc0eca109c20811f")
9280 (revision "1"))
9281 (package
9282 (name "ruby-regexp-property-values")
9283 (version (git-version "1.0.0" revision commit))
9284 (source
9285 (origin
9286 (method git-fetch)
9287 (uri (git-reference ;no test suite in distributed gem
9288 (url "https://github.com/jaynetics/regexp_property_values")
9289 (commit commit)))
9290 (file-name (git-file-name name version))
9291 (sha256
9292 (base32
9293 "1zsax784p16zdkf60lyq9z924zvsafhx9ckxx9srsgkyiqrifi1s"))))
9294 (build-system ruby-build-system)
9295 (arguments
9296 '(#:test-target "default"))
9297 (native-inputs
9298 (list ruby-character-set ruby-rake ruby-rake-compiler
9299 ruby-range-compressor ruby-rspec))
9300 (synopsis "Inspect Ruby's regex engine property values")
9301 (description "This small library lets you see which property values are
9302supported by the regular expression engine of the Ruby version you are running
9303and can directly read out their code point ranges. In other words, it
9304determines all supported values for @code{\\p{value}} expressions and what
9305they match.")
9306 (home-page "https://github.com/jaynetics/regexp_property_values")
9307 (license license:expat))))
9308
9309(define-public ruby-regexp-parser
9310 (package
9311 (name "ruby-regexp-parser")
9312 (version "2.6.0")
9313 (source
9314 (origin
9315 (method git-fetch) ;bin/test missing from gem
9316 (uri (git-reference
9317 (url "https://github.com/ammar/regexp_parser")
9318 (commit (string-append "v" version))))
9319 (file-name (git-file-name name version))
9320 (sha256
9321 (base32
9322 "07dx96gjvpa07dsdnzpwhhwc7qpxakjgws7d7wbnkbs20fyvx55x"))))
9323 (build-system ruby-build-system)
9324 (arguments
9325 '(#:test-target "default"
9326 #:phases (modify-phases %standard-phases
9327 (add-before 'build 'compile-scanner.rb
9328 (lambda _
9329 (invoke "rake" "build")
9330 ;; XXX: This is needed otherwise the install
9331 ;; phase fails to delete the installed cached
9332 ;; gem file.
9333 (delete-file-recursively "pkg"))))))
9334 (native-inputs
9335 (list ragel ruby-ice-nine ruby-regexp-property-values ruby-rspec))
9336 (synopsis "Regular expression parser library for Ruby")
9337 (description "A Ruby gem for tokenizing, parsing, and transforming regular
9338expressions. It comprises the following components:
9339@itemize
9340@item A scanner/tokenizer based on Ragel,
9341@item A lexer that produces a stream of token objects,
9342@item A parser that produces a tree of Expression objects.
9343@end itemize")
9344 (home-page "https://github.com/ammar/regexp_parser")
9345 (license license:expat)))
9346
9347(define-public ruby-test-queue
9348 (package
9349 (name "ruby-test-queue")
9350 (version "0.4.2")
9351 (source
9352 (origin
9353 (method url-fetch)
9354 (uri (rubygems-uri "test-queue" version))
9355 (sha256
9356 (base32
9357 "0hvm3n1qrqxqilhqk4rjivw3gcrd08zz1i6am9qzg1ppjxv6f36f"))))
9358 (build-system ruby-build-system)
9359 (arguments
9360 '(#:phases
9361 (modify-phases %standard-phases
9362 (replace 'check
9363 (lambda* (#:key tests? #:allow-other-keys)
9364 (when tests?
9365 (invoke "rspec")))))))
9366 (native-inputs
9367 (list ruby-rspec))
9368 (synopsis "Minitest/RSpec parallel test runner for CI environments")
9369 (description "The test-queue module is a parallel test runner,
9370built using a centralized queue to ensure optimal distribution of
9371tests between workers. It is specifically optimized for Continuous
9372Integration (CI) environments: build statistics from each run are
9373stored locally and used to sort the queue at the beginning of the next
9374run.")
9375 (home-page "https://github.com/tmm1/test-queue")
9376 (license license:expat)))
9377
9378(define-public ruby-rubocop
9379 (package
9380 (name "ruby-rubocop")
9381 (version "1.68.0")
9382 (source
9383 (origin
9384 (method git-fetch) ;no tests in distributed gem
9385 (uri (git-reference
9386 (url "https://github.com/rubocop/rubocop")
9387 (commit (string-append "v" version))))
9388 (file-name (git-file-name name version))
9389 (sha256
9390 (base32
9391 "0pfsrgkg2dhb6a2rknciqskgxgmb9kf48rvbkhay9n8n6m712v2w"))))
9392 (build-system ruby-build-system)
9393 (arguments
9394 `(#:test-target "default"
9395 ;; TODO: Figure out why test hangs.
9396 #:tests? ,(not (or (%current-target-system)
9397 (target-riscv64?)))
9398 #:phases
9399 (modify-phases %standard-phases
9400 (add-before 'check 'set-home
9401 (lambda _
9402 (setenv "HOME" (getcwd))))
9403 ;; Rubocop depends on itself for tests, directly and indirectly. By
9404 ;; regenerating the TODO list we test rubocop against itself and
9405 ;; forgo adjusting the test suite to our environment each release.
9406 (replace 'check
9407 (lambda* (#:key tests? #:allow-other-keys)
9408 (when tests?
9409 (make-file-writable ".rubocop_todo.yml")
9410 (invoke "./exe/rubocop" "--auto-gen-config")))))))
9411 (native-inputs
9412 (list ruby-pry
9413 ruby-rake
9414 ruby-rspec
9415 ruby-rubocop-ast
9416 ruby-rubocop-capybara-minimal
9417 ruby-rubocop-factory-bot
9418 ruby-rubocop-minimal
9419 ruby-rubocop-performance-minimal
9420 ruby-rubocop-rake-minimal
9421 ruby-rubocop-rspec-minimal
9422 ruby-simplecov
9423 ruby-stackprof
9424 ruby-test-queue
9425 ruby-webmock
9426 ruby-yard))
9427 (propagated-inputs
9428 (list ruby-json
9429 ruby-language-server-protocol
9430 ruby-parallel
9431 ruby-parser
9432 ruby-progressbar
9433 ruby-rainbow
9434 ruby-regexp-parser
9435 ruby-rexml
9436 ruby-rubocop-ast
9437 ruby-unicode-display-width))
9438 (synopsis "Ruby code style checking tool")
9439 (description
9440 "@code{rubocop} is a Ruby code style checking tool. It aims to enforce
9441the community-driven Ruby Style Guide.")
9442 (home-page "https://github.com/rubocop/rubocop")
9443 (license license:expat)))
9444
9445(define-public ruby-rubocop-minimal
9446 (hidden-package
9447 (package
9448 (inherit ruby-rubocop)
9449 (arguments
9450 (substitute-keyword-arguments (package-arguments ruby-rubocop)
9451 ((#:tests? _ #f) #f)))
9452 (propagated-inputs '())
9453 (native-inputs '()))))
9454
9455(define-public ruby-contest
9456 (package
9457 (name "ruby-contest")
9458 (version "0.1.3")
9459 (source
9460 (origin
9461 (method url-fetch)
9462 (uri (rubygems-uri "contest" version))
9463 (sha256
9464 (base32
9465 "1p9f2292b7b0fbrcjswvj9v01z7ig5ig52328wyqcabgb553qsdf"))))
9466 (build-system ruby-build-system)
9467 (synopsis "Write declarative tests using nested contexts")
9468 (description
9469 "Contest allows writing declarative @code{Test::Unit} tests using nested
9470contexts without performance penalties.")
9471 (home-page "https://github.com/citrusbyte/contest")
9472 (license license:expat)))
9473
9474(define-public ruby-creole
9475 (package
9476 (name "ruby-creole")
9477 (version "0.5.0")
9478 (source
9479 (origin
9480 (method url-fetch)
9481 (uri (rubygems-uri "creole" version))
9482 (sha256
9483 (base32
9484 "00rcscz16idp6dx0dk5yi5i0fz593i3r6anbn5bg2q07v3i025wm"))))
9485 (build-system ruby-build-system)
9486 (native-inputs
9487 (list ruby-bacon))
9488 (synopsis "Creole markup language converter")
9489 (description
9490 "Creole is a lightweight markup language and this library for converting
9491creole to @code{HTML}.")
9492 (home-page "https://github.com/minad/creole")
9493 (license license:ruby)))
9494
9495(define-public ruby-docile
9496 (package
9497 (name "ruby-docile")
9498 (version "1.1.5")
9499 (source
9500 (origin
9501 (method url-fetch)
9502 (uri (rubygems-uri "docile" version))
9503 (sha256
9504 (base32
9505 "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx"))))
9506 (build-system ruby-build-system)
9507 (arguments
9508 '(#:tests? #f)) ; needs github-markup, among others
9509 (synopsis "Ruby EDSL helper library")
9510 (description "Docile is a Ruby library that provides an interface for
9511creating embedded domain specific languages (EDSLs) that manipulate existing
9512Ruby classes.")
9513 (home-page "https://ms-ati.github.io/docile/")
9514 (license license:expat)))
9515
9516(define-public ruby-middleware
9517 (package
9518 (name "ruby-middleware")
9519 (version "0.1.0")
9520 (source
9521 (origin
9522 (method url-fetch)
9523 (uri (rubygems-uri "middleware" version))
9524 (sha256
9525 (base32
9526 "0703nkf2v371wqr41c04x5qid7ww45cxqv3hnlg07if3b3xrm9xl"))))
9527 (build-system ruby-build-system)
9528 (arguments '(#:tests? #f)) ;no test suite
9529 (synopsis "Implementation of a middleware abstraction for Ruby")
9530 (description "Middleware is a generalized implementation of a middleware
9531abstraction for Ruby.")
9532 (home-page "https://github.com/mitchellh/middleware")
9533 (license license:expat)))
9534
9535(define-public ruby-benchmark-ips
9536 (package
9537 (name "ruby-benchmark-ips")
9538 (version "2.12.0")
9539 (source
9540 (origin
9541 (method git-fetch) ;no tests in distributed gem
9542 (uri (git-reference
9543 (url "https://github.com/evanphx/benchmark-ips")
9544 (commit (string-append "v" version))))
9545 (file-name (git-file-name name version))
9546 (sha256
9547 (base32
9548 "19pa2a1lgjzrxcz6vxwfiq5qq337vr15bbbpc2mfwzljdlx5059s"))))
9549 (build-system ruby-build-system)
9550 (arguments
9551 (list
9552 #:phases
9553 #~(modify-phases %standard-phases
9554 (add-after 'unpack 'patch
9555 (lambda _
9556 (substitute* "Gemfile"
9557 (("gem 'rake'.*")
9558 "gem 'rake'"))
9559 (substitute* "benchmark-ips.gemspec"
9560 (("git ls-files -- examples lib")
9561 "find examples lib -type f | sort")))))))
9562 (native-inputs
9563 (list ruby-hoe))
9564 (synopsis "Iterations per second enhancement for the Ruby Benchmark module")
9565 (description "Benchmark-ips enhances the Ruby Benchmark module with the
9566iterations per second count. For short snippets of code, it can automatically
9567figure out how many times to run the code to get interesting data.")
9568 (home-page "https://github.com/evanphx/benchmark-ips")
9569 (license license:expat)))
9570
9571(define-public ruby-ffi-rzmq-core
9572 (package
9573 (name "ruby-ffi-rzmq-core")
9574 (version "1.0.7")
9575 (source
9576 (origin
9577 (method url-fetch)
9578 (uri (rubygems-uri "ffi-rzmq-core" version))
9579 (sha256
9580 (base32
9581 "0amkbvljpjfnv0jpdmz71p1i3mqbhyrnhamjn566w0c01xd64hb5"))))
9582 (build-system ruby-build-system)
9583 (arguments
9584 `(#:phases
9585 (modify-phases %standard-phases
9586 (add-after 'unpack 'patch-libzmq-search-path
9587 (lambda* (#:key inputs #:allow-other-keys)
9588 (let ((zeromq (assoc-ref inputs "zeromq")))
9589 (substitute* "lib/ffi-rzmq-core/libzmq.rb"
9590 (("/usr/local/lib")
9591 (string-append zeromq "/lib"))))))
9592 (replace 'check
9593 (lambda _
9594 (invoke "rspec"))))))
9595 (native-inputs
9596 (list ruby-rspec))
9597 (inputs
9598 (list zeromq))
9599 (propagated-inputs (list ruby-ffi))
9600 (synopsis "Low-level Ruby FFI wrapper for the ZeroMQ networking library")
9601 (description "This library only provides the FFI wrapper for the ZeroMQ
9602networking library. It can be used to implement a Ruby API for the ZeroMQ
9603library.")
9604 (home-page "https://github.com/chuckremes/ffi-rzmq-core")
9605 (license license:expat)))
9606
9607(define-public ruby-ffi-rzmq
9608 (package
9609 (name "ruby-ffi-rzmq")
9610 (version "2.0.7")
9611 (source
9612 (origin
9613 (method url-fetch)
9614 (uri (rubygems-uri "ffi-rzmq" version))
9615 (sha256
9616 (base32
9617 "14a5kxfnf8l3ngyk8hgmk30z07aj1324ll8i48z67ps6pz2kpsrg"))))
9618 (build-system ruby-build-system)
9619 (arguments '(#:phases (modify-phases %standard-phases
9620 (replace 'check
9621 (lambda* (#:key tests? #:allow-other-keys)
9622 (when tests?
9623 (invoke "rspec")))))))
9624 (native-inputs
9625 (list ruby-rspec))
9626 (propagated-inputs
9627 (list ruby-ffi-rzmq-core))
9628 (synopsis "High-level Ruby wrapper for the ZeroMQ networking library")
9629 (description "This library provides a high-level API that wraps the ZeroMQ
9630networking library using the Ruby foreign function interface (FFI). It is a
9631pure Ruby wrapper, hence is compatible with any Ruby runtime that has support
9632for FFI.")
9633 (home-page "https://github.com/chuckremes/ffi-rzmq")
9634 (license license:expat)))
9635
9636(define-public ruby-sawyer
9637 (package
9638 (name "ruby-sawyer")
9639 (version "0.9.2")
9640 (source
9641 (origin
9642 (method url-fetch)
9643 (uri (rubygems-uri "sawyer" version))
9644 (sha256
9645 (base32
9646 "1jks1qjbmqm8f9kvwa81vqj39avaj9wdnzc531xm29a55bb74fps"))))
9647 (build-system ruby-build-system)
9648 (propagated-inputs
9649 (list ruby-addressable ruby-faraday))
9650 (synopsis "Experimental hypermedia agent for Ruby")
9651 (description "Sawyer is an experimental hypermedia agent for Ruby built on
9652top of Faraday.")
9653 (home-page "https://github.com/lostisland/sawyer")
9654 (license license:expat)))
9655
9656(define-public ruby-octokit
9657 (package
9658 (name "ruby-octokit")
9659 (version "6.1.1")
9660 (source (origin
9661 (method git-fetch)
9662 (uri (git-reference
9663 (url "https://github.com/octokit/octokit.rb")
9664 (commit (string-append "v" version))))
9665 (file-name (git-file-name name version))
9666 (sha256
9667 (base32
9668 "02bcmh0b0v80cis1l80lhzxw8adb69xkz6qgg4m7qcmj3y5arwmk"))))
9669 (build-system ruby-build-system)
9670 (arguments
9671 (list
9672 #:phases
9673 #~(modify-phases %standard-phases
9674 (add-after 'unpack 'remove-unnecessary-dependencies
9675 (lambda _
9676 (substitute* "spec/spec_helper.rb"
9677 (("require 'pry-byebug'") "")))))))
9678 (native-inputs
9679 (list ruby-faraday-multipart
9680 ruby-jwt
9681 ruby-mime-types
9682 ruby-multi-json
9683 ruby-netrc
9684 ruby-rbnacl
9685 ruby-rspec
9686 ruby-simplecov
9687 ruby-webmock
9688 ruby-vcr-expat))
9689 (propagated-inputs (list ruby-faraday ruby-sawyer))
9690 (synopsis "Ruby toolkit for the GitHub API")
9691 (description "Octokit wraps the GitHub API in a flat API client that
9692follows Ruby conventions and requires little knowledge of REST.")
9693 (home-page "https://github.com/octokit/octokit.rb")
9694 (license license:expat)))
9695
9696(define-public ruby-hashicorp-checkpoint
9697 (package
9698 (name "ruby-hashicorp-checkpoint")
9699 (version "0.1.5")
9700 (source (origin
9701 (method url-fetch)
9702 (uri (rubygems-uri "hashicorp-checkpoint" version))
9703 (sha256
9704 (base32
9705 "1z6mwzvd7p2wqhmk07dwrhvm0ncgqm7pxn0pr2k025rwsspp9bsd"))))
9706 (build-system ruby-build-system)
9707 (arguments
9708 (list #:tests? #f)) ;; no need to test, useless outside HashiCorp anyway
9709 (synopsis "Internal HashiCorp service to check version information")
9710 (description "This package is probably useless outside of internal
9711HashiCorp use. It is open source for disclosure and because HashiCorp's open
9712source projects must be able to link to it.")
9713 (home-page "https://github.com/hashicorp/ruby-checkpoint")
9714 (license license:mpl2.0)))
9715
9716(define-public ruby-vagrant-cloud
9717 (package
9718 (name "ruby-vagrant-cloud")
9719 (version "3.1.1")
9720 (source (origin
9721 (method git-fetch)
9722 (uri (git-reference
9723 (url "https://github.com/hashicorp/vagrant_cloud")
9724 (commit (string-append "v" version))))
9725 (file-name (git-file-name name version))
9726 (sha256
9727 (base32
9728 "0bnjd8b86lrgj5ar1l7pg5if95bv0sxa75mz7x2ikqyz6q8rmjb3"))))
9729 (build-system ruby-build-system)
9730 (arguments
9731 `(#:test-target "spec"))
9732 (native-inputs (list ruby-rspec ruby-webmock))
9733 (propagated-inputs (list ruby-excon ruby-log4r ruby-rexml))
9734 (synopsis "Vagrant Cloud API library")
9735 (description "This library provides the functionality to create, modify,
9736and delete boxes, versions, and providers on HashiCorp's Vagrant Cloud.")
9737 (home-page "https://github.com/hashicorp/vagrant_cloud")
9738 (license license:asl2.0)))
9739
9740(define-public ruby-libvirt
9741 (package
9742 (name "ruby-libvirt")
9743 (version "0.8.2")
9744 (source (origin
9745 (method url-fetch)
9746 (uri (rubygems-uri "ruby-libvirt" version))
9747 (sha256
9748 (base32
9749 "0v6vj5vs9v01zr00bflqpfczhwcyc6jdf8k2dqn42lq6d87si77d"))))
9750 (build-system ruby-build-system)
9751 (arguments
9752 (list
9753 #:tests? #f)) ; tests require access to libvirt socket
9754 (native-inputs (list pkg-config))
9755 (inputs (list libvirt))
9756 (synopsis "Ruby bindings for libvirt")
9757 (description "This package provides Ruby language binding for libvirt's
9758native C API.")
9759 (home-page "https://ruby.libvirt.org/")
9760 (license license:lgpl2.1+)))
9761
9762(define-public ruby-fog-core
9763 (package
9764 (name "ruby-fog-core")
9765 (version "2.4.0")
9766 (source (origin
9767 (method git-fetch) ; for tests
9768 (uri (git-reference
9769 (url "https://github.com/fog/fog-core")
9770 (commit (string-append "v" version))))
9771 (file-name (git-file-name name version))
9772 (sha256
9773 (base32
9774 "184vpi81az7raz98652m7d98ikabdl9di37dgal0adr76q57j03c"))))
9775 (build-system ruby-build-system)
9776 (arguments
9777 (list
9778 #:phases
9779 #~(modify-phases %standard-phases
9780 (add-before 'check 'set-home
9781 (lambda _
9782 (setenv "HOME" "/tmp"))))))
9783 (native-inputs (list ruby-minitest-stub-const))
9784 (propagated-inputs (list ruby-builder ruby-excon ruby-formatador
9785 ruby-mime-types))
9786 (synopsis "Shared classes and tests for fog providers and services")
9787 (description "@code{fog} is a Ruby cloud services library. This package
9788provides shared classes and tests for @code{fog} providers and services.")
9789 (home-page "https://github.com/fog/fog-core")
9790 (license license:expat)))
9791
9792(define-public ruby-fog-json
9793 (package
9794 (name "ruby-fog-json")
9795 (version "1.2.0")
9796 (source (origin
9797 (method git-fetch) ; for tests
9798 (uri (git-reference
9799 (url "https://github.com/fog/fog-json")
9800 (commit (string-append "v" version))))
9801 (file-name (git-file-name name version))
9802 (sha256
9803 (base32
9804 "0f4hbmhy22b1gbkzd3pnj5xvljp6bl7inc2y4fxh29nrmcn4pgb0"))))
9805 (build-system ruby-build-system)
9806 (native-inputs (list ruby-minitest))
9807 (propagated-inputs (list ruby-fog-core ruby-multi-json))
9808 (synopsis "JSON parsing tools used by @code{fog} providers")
9809 (description "This package containse the JSON parsing tools shared between
9810a number of providers in the @code{fog} gem. @code{fog} is a Ruby cloud
9811services library.")
9812 (home-page "https://github.com/fog/fog-json")
9813 (license license:expat)))
9814
9815(define-public ruby-fog-xml
9816 (package
9817 (name "ruby-fog-xml")
9818 (version "0.1.5")
9819 (source (origin
9820 (method git-fetch) ; for tests
9821 (uri (git-reference
9822 (url "https://github.com/fog/fog-xml")
9823 (commit (string-append "v" version))))
9824 (file-name (git-file-name name version))
9825 (sha256
9826 (base32
9827 "1v896k9j44axhgvwjvk1j0amy27a9fm6ynv656fxqa1m2wib6dzh"))))
9828 (build-system ruby-build-system)
9829 (arguments
9830 (list
9831 #:phases
9832 #~(modify-phases %standard-phases
9833 ;; Run tests via bundler so rake picks up the minitest gem from
9834 ;; native-inputs, not the one installed otherwise. This is required
9835 ;; since turn@0.9.7 needs minitest@4 and can not be upgraded to
9836 ;; minitest@5.
9837 (replace 'check
9838 (lambda* (#:key tests? #:allow-other-keys)
9839 (when tests?
9840 (invoke "bundle" "exec" "rake")))))))
9841 (native-inputs (list ruby-minitest ruby-pry ruby-coveralls))
9842 (propagated-inputs (list ruby-fog-core ruby-nokogiri))
9843 (synopsis "XML parsing tools used by @code{fog} providers")
9844 (description "This package containse the XML parsing tools shared between
9845a number of providers in the @code{fog} gem. @code{fog} is a Ruby cloud
9846services library.")
9847 (home-page "https://github.com/fog/fog-xml")
9848 (license license:expat)))
9849
9850(define-public ruby-fog-libvirt
9851 (package
9852 (name "ruby-fog-libvirt")
9853 (version "0.12.0")
9854 (source (origin
9855 (method git-fetch) ; for tests
9856 (uri (git-reference
9857 (url "https://github.com/fog/fog-libvirt")
9858 (commit (string-append "v" version))))
9859 (file-name (git-file-name name version))
9860 (sha256
9861 (base32
9862 "0b1qafb0l24anmr8fviwhp9vj14g0fic0mkg9n1i11h68zhqkj2v"))))
9863 (build-system ruby-build-system)
9864 (native-inputs (list ruby-minitest-stub-const ruby-mocha ruby-net-ssh
9865 ruby-netrc ruby-octokit ruby-pry ruby-rubocop
9866 ruby-shindo ruby-simplecov ruby-yard ))
9867 (propagated-inputs (list ruby-fog-core ruby-fog-json ruby-fog-xml
9868 ruby-json ruby-libvirt))
9869 (synopsis "Ruby libvirt provider, either standalone or as a module for
9870@code{fog}")
9871 (description "This library can be used as a module for @code{fog} or as
9872standalone libvirt provider. @code{fog} is a Ruby cloud services library.")
9873 (home-page "https://github.com/fog/fog-libvirt")
9874 (license license:expat)))
9875
9876(define-public ruby-pry-byebug
9877 (package
9878 (name "ruby-pry-byebug")
9879 (version "3.10.1")
9880 (source
9881 (origin
9882 (method git-fetch)
9883 (uri (git-reference
9884 (url "https://github.com/deivid-rodriguez/pry-byebug")
9885 (commit (string-append "v" version))))
9886 (file-name (git-file-name name version))
9887 (sha256
9888 (base32
9889 "0z8rhvmr9qmlbk8c8h6jbig5qd5xbdg9qihvx3g0cv1whqzbfikq"))))
9890 (build-system ruby-build-system)
9891 (arguments
9892 `(#:phases (modify-phases %standard-phases
9893 (add-after 'unpack 'sanitize-dependencies
9894 (lambda _
9895 (substitute* "Rakefile"
9896 ((".*chandler/tasks.*") ""))))
9897 (add-before 'check 'set-home
9898 (lambda _
9899 (setenv "HOME" (getcwd)))))))
9900 (native-inputs (list ruby-rubocop ruby-simplecov))
9901 (propagated-inputs (list ruby-byebug ruby-pry))
9902 (synopsis "Step-by-step debugging and stack navigation in Pry")
9903 (description "This package adds step-by-step debugging and stack
9904navigation capabilities to @code{pry}, using @code{byebug}.")
9905 (home-page "https://github.com/deivid-rodriguez/pry-byebug")
9906 (license license:expat)))
9907
9908(define-public ruby-stackprof
9909 (package
9910 (name "ruby-stackprof")
9911 (version "0.2.27")
9912 (source
9913 (origin
9914 (method url-fetch)
9915 (uri (rubygems-uri "stackprof" version))
9916 (sha256
9917 (base32 "03788mbipmihq2w7rznzvv0ks0s9z1321k1jyr6ffln8as3d5xmg"))))
9918 (build-system ruby-build-system)
9919 (arguments
9920 (list
9921 #:phases
9922 #~(modify-phases %standard-phases
9923 (add-before 'check 'patch-gemspec
9924 (lambda _
9925 (substitute* "stackprof.gemspec"
9926 (("rake-compiler.*")
9927 "rake-compiler>.freeze, [\"> 0.9\"])\n")
9928 (("mocha.*")
9929 "mocha>.freeze, [\"> 0.14\"])\n"))))
9930 (add-before 'check 'skip-dubious-test
9931 (lambda _
9932 (substitute* "test/test_stackprof.rb"
9933 ;; This unreliable test can fail with "Expected 0 to be >= 1."
9934 (("def test_(cputime)" _ name)
9935 (string-append "def skip_" name))
9936 ;; This test often fails
9937 (("def test_gc") "def skip_test_gc")
9938 ;; This test is known to fail on 32-bit systems.
9939 ;; /gnu/store/...-stackprof-0.2.27.gem
9940 (("def test_raw") "def skip_test_raw"))))
9941 (add-before 'check 'build-tests
9942 (lambda _
9943 (invoke "rake" "compile")))
9944 (replace 'check
9945 (lambda* (#:key tests? #:allow-other-keys)
9946 (when tests?
9947 (invoke "bundle" "exec" "rake" "default")))))))
9948 (native-inputs
9949 (list bundler ruby-mocha-1 ruby-rake-compiler))
9950 (synopsis "Sampling profiler for Ruby code")
9951 (description
9952 "@code{stackprof} is a fast sampling profiler for Ruby code, with cpu,
9953wallclock and object allocation samplers.")
9954 (home-page "https://github.com/tmm1/stackprof")
9955 (license license:expat)))
9956
9957(define-public ruby-bindex
9958 (package
9959 (name "ruby-bindex")
9960 (version "0.8.1")
9961 (source
9962 (origin
9963 (method url-fetch)
9964 (uri (rubygems-uri "bindex" version))
9965 (sha256
9966 (base32 "0zmirr3m02p52bzq4xgksq4pn8j641rx5d4czk68pv9rqnfwq7kv"))))
9967 (build-system ruby-build-system)
9968 (arguments
9969 (list #:test-target "default"
9970 #:phases
9971 #~(modify-phases %standard-phases
9972 (add-after 'unpack 'avoid-bundler
9973 (lambda _
9974 (substitute* "Rakefile"
9975 (("^Bundler::.*") "")))))))
9976 (native-inputs (list bundler ruby-rake-compiler))
9977 (synopsis "Bindings for Ruby exceptions")
9978 (description
9979 "This package provides bindings for any kind of Ruby exceptions.")
9980 (home-page "https://github.com/gsamokovarov/bindex")
9981 (license license:expat)))
9982
9983(define-public ruby-binding-of-caller
9984 (package
9985 (name "ruby-binding-of-caller")
9986 (version "0.8.0")
9987 (source
9988 (origin
9989 (method url-fetch)
9990 (uri (rubygems-uri "binding_of_caller" version))
9991 (sha256
9992 (base32
9993 "05syqlks7463zsy1jdfbbdravdhj9hpj5pv2m74blqpv8bq4vv5g"))))
9994 (build-system ruby-build-system)
9995 ;; Attempting to run the test suite fails with a rake deprecation error
9996 ;; (see: https://github.com/banister/binding_of_caller/issues/76).
9997 (arguments '(#:tests? #f))
9998 (propagated-inputs
9999 (list ruby-debug-inspector))
10000 (synopsis "Retrieve the binding of a method's caller")
10001 (description "The @code{binding_of_caller} module provides the
10002@code{Binding#of_caller} method. It allows accessing bindings from upper
10003frames in the call stack and can evaluate code in that context.")
10004 (home-page "https://github.com/banister/binding_of_caller")
10005 (license license:expat)))
10006
10007(define-public ruby-pry-stack-explorer
10008 (package
10009 (name "ruby-pry-stack-explorer")
10010 (version "0.5.1")
10011 (source
10012 (origin
10013 (method url-fetch)
10014 (uri (rubygems-uri "pry-stack_explorer" version))
10015 (sha256
10016 (base32
10017 "157rd2n9pfvcmmicm0xkq8z4p6famaj13syrpra6b4032qpb1wn0"))))
10018 (build-system ruby-build-system)
10019 (arguments '(#:tests? #f)) ;no test suite in gem release
10020 (propagated-inputs
10021 (list ruby-binding-of-caller ruby-pry))
10022 (synopsis "Call-stack navigation plugin for the Pry REPL")
10023 (description "@code{pry-stack_explorer} is a plugin for the Pry REPL that
10024add support to navigate the call-stack.")
10025 (home-page "https://github.com/pry/pry-stack_explorer")
10026 (license license:expat)))
10027
10028(define-public ruby-varint
10029 (package
10030 (name "ruby-varint")
10031 (version "0.1.1")
10032 (source
10033 (origin
10034 (method url-fetch)
10035 (uri (rubygems-uri "varint" version))
10036 (sha256
10037 (base32
10038 "1y0l2qc64cwsyv76ygg9bbjnk86riz2kq73kmn87gdrlmpiyrdac"))))
10039 (build-system ruby-build-system)
10040 (arguments '(#:tests? #f)) ;no test suite
10041 (synopsis "Variable length integers (varint) C extension for Ruby")
10042 (description "This package provides a small C extension to speed up
10043variable length integers (varint) in Ruby Protocol Buffers.")
10044 (home-page "https://github.com/liquidm/varint")
10045 (license license:bsd-3)))
10046
10047(define-public ruby-version-gem
10048 (package
10049 (name "ruby-version-gem")
10050 (version "1.1.3")
10051 (source (origin
10052 (method git-fetch) ;for tests
10053 (uri (git-reference
10054 (url "https://gitlab.com/oauth-xx/version_gem")
10055 (commit (string-append "v" version))))
10056 (file-name (git-file-name name version))
10057 (sha256
10058 (base32
10059 "1wazx2jr9vx5wm48fy8bccvfwhg7y2s8shfw9q81dhb4yvwk6gbf"))))
10060 (build-system ruby-build-system)
10061 (arguments
10062 (list
10063 #:phases
10064 #~(modify-phases %standard-phases
10065 (add-after 'unpack 'relax-requirements
10066 (lambda _
10067 (substitute* "Gemfile"
10068 (("^linting = .*")
10069 "linting = false\n")
10070 (("^coverage = .*")
10071 "coverage = false\n")
10072 (("^debug = .*")
10073 "debug = false\n"))
10074 (substitute* "spec/spec_helper.rb"
10075 (("^RUN_COVERAGE = .*")
10076 "RUN_COVERAGE = false\n")
10077 (("^ALL_FORMATTERS = .*")
10078 "ALL_FORMATTERS = false\n"))))
10079 (add-before 'build 'drop-signing-key-requirement
10080 (lambda _
10081 (substitute* "version_gem.gemspec"
10082 (("spec.signing_key =.*")
10083 "spec.signing_key = nil")))))))
10084 (native-inputs (list ruby-rspec ruby-rspec-block-is-expected))
10085 (synopsis "Improved @code{Version} module for Ruby")
10086 (description "VersionGem aims to provide introspection of a @code{Version}
10087module based on a @code{Version::VERSION} constant string wile not interfering
10088with gemspec parsing where the @code{VERSION} string is traditionally used.")
10089 (home-page "https://gitlab.com/oauth-xx/version_gem")
10090 (license license:expat)))
10091
10092;;; Note: Do NOT update to a newer version; this is the last commit that is
10093;;; still licensed as free software, the project having switched to the
10094;;; Hippocratic license afterward (see:
10095;;; https://github.com/vcr/vcr/issues/959).
10096(define-public ruby-vcr-expat
10097 (let ((revision "0")
10098 (commit-dont-touch "842b2bf89099dc91f2c643d0d85d1abd54eb7e85")) ;
10099 (package
10100 (name "ruby-vcr-expat")
10101 (version (git-version "5.0.0" revision commit-dont-touch))
10102 (source (origin
10103 (method git-fetch)
10104 (uri (git-reference
10105 (url "https://github.com/vcr/vcr")
10106 (commit commit-dont-touch)))
10107 (file-name (git-file-name name version))
10108 (sha256
10109 (base32
10110 "02mzifd2655kjh35bbry01n66jjcjrsw6ncqlybfkjcaqrw2zalv"))))
10111 (build-system ruby-build-system)
10112 (arguments (list #:tests? #f)) ;avoid all dependencies
10113 (home-page "https://github.com/vcr/vcr")
10114 (synopsis "HTTP interaction recorder [old version]")
10115 (description "Record your test suite's HTTP interactions and replay them
10116during future test runs for fast, deterministic, accurate tests. This is an
10117older version of VCR that is free software under the Expat license. The
10118project later switched to the Hippocratic license, which is non-free.
10119@emph{Do not use it in new free software projects}.")
10120 (license license:expat))))
10121
10122(define-public ruby-ruby-prof
10123 (package
10124 (name "ruby-ruby-prof")
10125 (version "1.4.5")
10126 (source
10127 (origin
10128 (method url-fetch)
10129 (uri (rubygems-uri "ruby-prof" version))
10130 (sha256
10131 (base32
10132 "09n13bzm1p956z318xx1v7ikqdp2i971v7p3kwf3170axz368ccy"))))
10133 (build-system ruby-build-system)
10134 (arguments
10135 ;; FIXME: Investigate why the tests fail on i686-linux.
10136 `(#:tests? ,(not (or (%current-target-system)
10137 (target-x86-32?)))
10138 #:phases
10139 (modify-phases %standard-phases
10140 ;; The LineNumbersTest test fails non-deterministically (see:
10141 ;; https://github.com/ruby-prof/ruby-prof/issues/276).
10142 (add-after 'extract-gemspec 'delete-flaky-test
10143 (lambda _
10144 (delete-file "test/line_number_test.rb")
10145 (substitute* "ruby-prof.gemspec"
10146 (("\"test/line_number_test\\.rb\"\\.freeze, ") ""))))
10147 (add-before 'check 'compile
10148 (lambda _
10149 (invoke "rake" "compile"))))))
10150 (native-inputs (list bundler ruby-minitest ruby-rake-compiler ruby-rdoc))
10151 (synopsis "Fast code profiler for Ruby")
10152 (description "RubyProf is a fast code profiler for Ruby. Its features
10153include:
10154@table @asis
10155@item Speed
10156Being a C extension, it is many times faster than the standard Ruby profiler.
10157@item Measurement Modes
10158It can measure program wall time, process time, object allocations and memory
10159usage.
10160@item Reports
10161A variety of text and cross-referenced HTML reports can be generated.
10162@item Threads
10163Profiling multiple threads simultaneously is supported.
10164@end table")
10165 (home-page "https://github.com/ruby-prof/ruby-prof")
10166 (license license:bsd-2)))
10167
10168(define-public ruby-ruby-memcheck
10169 (package
10170 (name "ruby-ruby-memcheck")
10171 (version "1.3.2")
10172 (source (origin
10173 (method git-fetch)
10174 (uri (git-reference
10175 (url "https://github.com/Shopify/ruby_memcheck")
10176 (commit version)))
10177 (file-name (git-file-name name version))
10178 (sha256
10179 (base32
10180 "0fj4j4d062sw2kx2qlj877gjbj1xbb691njr8x9nbah6615idlni"))))
10181 (build-system ruby-build-system)
10182 (arguments
10183 (list
10184 ;; The tests seem to fail on 32bit x86
10185 #:tests? (not (or (target-x86-32?)
10186 (%current-target-system)))
10187 #:phases
10188 #~(modify-phases %standard-phases
10189 (add-after 'unpack 'patch-valgrind-path
10190 (lambda* (#:key inputs #:allow-other-keys)
10191 (substitute* "lib/ruby_memcheck/configuration.rb"
10192 (("DEFAULT_VALGRIND = \"valgrind\"")
10193 (format #f "DEFAULT_VALGRIND = ~s"
10194 (search-input-file inputs "bin/valgrind"))))))
10195 (add-before 'replace-git-ls-files 'standardize-git-ls-files
10196 (lambda _
10197 (substitute* "ruby_memcheck.gemspec"
10198 (("%x\\(git ls-files -z)")
10199 "`git ls-files -z`")))))))
10200 (native-inputs (list ruby-rake-compiler ruby-rspec))
10201 (inputs (list valgrind/pinned))
10202 (propagated-inputs (list ruby-nokogiri))
10203 (synopsis "Valgrind memcheck tool for Ruby")
10204 (description "The @code{ruby_memcheck} gem provides a sane way to use
10205Valgrind's memcheck on your native extension gem, that filters out all the
10206false positives caused by Ruby not freeing all of the memory it allocates
10207during shutdown.")
10208 (home-page "https://github.com/Shopify/ruby_memcheck")
10209 (license license:expat)))
10210
10211(define-public ruby-memory-profiler
10212 (package
10213 (name "ruby-memory-profiler")
10214 (version "1.0.1")
10215 (source
10216 (origin
10217 (method git-fetch)
10218 (uri (git-reference
10219 (url "https://github.com/SamSaffron/memory_profiler")
10220 (commit (string-append "v" version))))
10221 (file-name (git-file-name name version))
10222 (sha256
10223 (base32
10224 "1z1x0rymfv45gh1y3s46w5pga5y8cvgn228jiwlnhc8hin3zig84"))))
10225 (build-system ruby-build-system)
10226 (synopsis "Memory profiling routines for Ruby")
10227 (description
10228 "This package provides memory profiling routines for Ruby.")
10229 (home-page "https://github.com/SamSaffron/memory_profiler")
10230 (license license:expat)))
10231
10232(define-public ruby-cucumber-compatibility-kit
10233 (package
10234 (name "ruby-cucumber-compatibility-kit")
10235 (version "11.2.0")
10236 (source (origin
10237 (method url-fetch)
10238 (uri (rubygems-uri "cucumber-compatibility-kit" version))
10239 (sha256
10240 (base32
10241 "17c8zx0yn68rcpfbw4nb1gzvh9fzpwsi1y0qivb99ahdlgzcdp8q"))))
10242 (build-system ruby-build-system)
10243 (arguments (list #:phases #~(modify-phases %standard-phases
10244 (replace 'check
10245 (lambda* (#:key tests? #:allow-other-keys)
10246 (when tests?
10247 (invoke "rspec")))))))
10248 (propagated-inputs (list ruby-cucumber-messages ruby-rake ruby-rspec))
10249 (synopsis "Cucumber compatibility verification utility")
10250 (description "The Cucumber Compatibility Kit (CCK) aims to validate a
10251Cucumber implementation's support for the Cucumber Messages protocol.")
10252 (home-page "https://github.com/cucumber/compatibility-kit")
10253 (license license:expat)))
10254
10255;;; Variant package to break a cycle with ruby-cucumber-messages.
10256(define ruby-cucumber-compatibility-kit-bootstrap
10257 (package/inherit ruby-cucumber-compatibility-kit
10258 (arguments (list #:tests? #f))
10259 (propagated-inputs (modify-inputs (package-propagated-inputs
10260 ruby-cucumber-compatibility-kit)
10261 (delete "ruby-cucumber-messages")))))
10262
10263(define-public ruby-cucumber-messages
10264 (package
10265 (name "ruby-cucumber-messages")
10266 (version "21.0.1")
10267 (source (origin
10268 (method url-fetch)
10269 (uri (rubygems-uri "cucumber-messages" version))
10270 (sha256
10271 (base32
10272 "0482a63y7my0arn2bv208g401dq8525f0gwhnwaa11mhv6ph0q5i"))))
10273 (build-system ruby-build-system)
10274 (arguments
10275 (list #:phases
10276 #~(modify-phases %standard-phases
10277 ;; The test suite requires the gem to be installed, so move it
10278 ;; after the install phase.
10279 (delete 'check)
10280 (add-after 'install 'check
10281 (lambda* (#:key tests? #:allow-other-keys)
10282 (setenv "GEM_PATH" (string-append
10283 (getenv "GEM_PATH") ":"
10284 #$output "/lib/ruby/vendor_ruby"))
10285 (when tests?
10286 (invoke "rspec")))))))
10287 (native-inputs
10288 (list ruby-cucumber-compatibility-kit-bootstrap ruby-rspec))
10289 (home-page "https://github.com/cucumber/messages/")
10290 (synopsis "Cucumber Messages for Ruby (Protocol Buffers)")
10291 (description "Cucumber Messages for Ruby is a library which allows
10292serialization and deserialization of the protocol buffer messages used in
10293Cucumber.")
10294 (license license:expat)))
10295
10296(define-public ruby-cucumber-gherkin
10297 (package
10298 (name "ruby-cucumber-gherkin")
10299 (version "26.1.0")
10300 (source (origin
10301 (method git-fetch)
10302 (uri (git-reference
10303 (url "https://github.com/cucumber/gherkin")
10304 (commit (string-append "v" version))))
10305 (file-name (git-file-name name version))
10306 (sha256
10307 (base32
10308 "1rsannfcg5rqh5a3d3paw10kf6mmqjrgbq3k235px4swbyqysmgn"))))
10309 (build-system ruby-build-system)
10310 (arguments (list #:test-target "spec"
10311 #:phases #~(modify-phases %standard-phases
10312 (add-after 'unpack 'chdir
10313 (lambda _
10314 (chdir "ruby"))))))
10315 (native-inputs (list ruby-rspec))
10316 (propagated-inputs (list ruby-cucumber-messages))
10317 (synopsis "Gherkin parser for Ruby")
10318 (description "Gherkin is a parser and compiler for the Gherkin language.
10319It is intended be used by all Cucumber implementations to parse
10320@file{.feature} files.")
10321 (home-page "https://github.com/cucumber/gherkin")
10322 (license license:expat)))
10323
10324(define-deprecated ruby-gherkin ruby-cucumber-gherkin)
10325
10326(define-public ruby-gherkin-ruby
10327 (package
10328 (name "ruby-gherkin-ruby")
10329 (version "0.3.2")
10330 (home-page "https://github.com/codegram/gherkin-ruby")
10331 (source (origin
10332 (method url-fetch)
10333 (uri (rubygems-uri "gherkin-ruby" version))
10334 (sha256
10335 (base32
10336 "18ay7yiibf4sl9n94k7mbi4k5zj2igl4j71qcmkswv69znyx0sn1"))))
10337 (build-system ruby-build-system)
10338 (synopsis "Pure Ruby Gherkin parser")
10339 (description
10340 "Gherkin-ruby is a Gherkin parser written in pure Ruby and less than
10341200 lines of code.")
10342 ;; XXX: No license information anywhere but Readme.md.
10343 (license license:expat)))
10344
10345(define-public ruby-aruba
10346 (package
10347 (name "ruby-aruba")
10348 (version "2.1.0")
10349 (source (origin
10350 (method git-fetch)
10351 (uri (git-reference
10352 (url "https://github.com/cucumber/aruba")
10353 (commit (string-append "v" version))))
10354 (file-name (git-file-name name version))
10355 (sha256
10356 (base32
10357 "1mmlgqhi6yww3z34hmrrnha2rygkv6kx0q962z31dqxjkcv23yfd"))))
10358 (build-system ruby-build-system)
10359 (arguments
10360 (list
10361 ;; XXX: Only run the "spec" target and not the "cucumber" one, as it is
10362 ;; slow and has multiple unexplained test failures.
10363 #:test-target "spec"
10364 #:phases
10365 #~(modify-phases %standard-phases
10366 (add-after 'unpack 'patch-paths
10367 (lambda _
10368 ;; This test file relies on a dynamically generated script;
10369 ;; patch its #!/bin/bash shebang.
10370 (substitute* "spec/aruba/api/commands_spec.rb"
10371 (("/bin/bash")
10372 (which "bash")))))
10373 (add-before 'check 'relax-requirements
10374 ;; Many development requirements are not actually needed.
10375 (lambda _
10376 (substitute* "aruba.gemspec"
10377 (("\\[\">= 0.18.0\", \"< 0.22.0\"]") ;simplecov
10378 "\">= 0.18.0\"")
10379 ((".*appraisal.*") "")
10380 ((".*pry.*") "")
10381 ((".*kramdown.*") "")
10382 ((".*rubocop.*") "")
10383 ((".*yard-junk.*") ""))
10384 (substitute* "Rakefile"
10385 ((".*require \"rubocop/rake_task\".*") "")
10386 ((".*require \"yard-junk/rake\".*") "")
10387 ((".*RuboCop::RakeTask.new.*") "")
10388 ((".*YardJunk::Rake.define_task.*") ""))))
10389 ;; The tests rely on the Gem being installed, so move the check
10390 ;; phase after the install phase.
10391 (delete 'check)
10392 (add-after 'install 'check
10393 (assoc-ref %standard-phases 'check))
10394 (add-before 'check 'set-GEM_PATH
10395 (lambda _
10396 (setenv "GEM_PATH" (string-append
10397 (getenv "GEM_PATH") ":"
10398 #$output "/lib/ruby/vendor_ruby"))))
10399 (add-before 'check 'set-home
10400 (lambda _
10401 (setenv "HOME" "/tmp"))))))
10402 (native-inputs
10403 (list ruby-rake-manifest
10404 ruby-rspec
10405 ruby-simplecov))
10406 (propagated-inputs
10407 (list bundler
10408 ruby-childprocess
10409 ruby-contracts
10410 ruby-cucumber
10411 ruby-rspec-expectations
10412 ruby-thor))
10413 (synopsis "Test command-line applications with Cucumber, RSpec or Minitest")
10414 (description
10415 "Aruba is an extension for Cucumber, RSpec and Minitest for testing
10416command-line applications. It supports applications written in any
10417language.")
10418 (home-page "https://github.com/cucumber/aruba")
10419 (license license:expat)))
10420
10421(define-public ruby-sys-uname
10422 (package
10423 (name "ruby-sys-uname")
10424 (version "1.2.1")
10425 (source
10426 (origin
10427 (method url-fetch)
10428 (uri (rubygems-uri "sys-uname" version))
10429 (sha256
10430 (base32
10431 "00p3wwvkdbg6pl38bchaagncv3i4fq4y0ks470imwykjanpy2ic0"))))
10432 (build-system ruby-build-system)
10433 (arguments
10434 `(#:test-target "spec"))
10435 (propagated-inputs (list ruby-ffi))
10436 (native-inputs (list ruby-rspec))
10437 (synopsis "Ruby interface for gathering system information")
10438 (description "The sys-uname library provides an interface for gathering
10439information about your current platform. It allows retrieving information
10440such as the OS name, OS version, system name, etc.")
10441 (home-page "https://github.com/djberg96/sys-uname")
10442 (license license:asl2.0)))
10443
10444(define-public ruby-cucumber-html-formatter
10445 (package
10446 (name "ruby-cucumber-html-formatter")
10447 (version "20.2.1")
10448 (source
10449 (origin
10450 (method url-fetch)
10451 (uri (rubygems-uri "cucumber-html-formatter" version))
10452 (sha256
10453 (base32
10454 "0c7r9mfmph4c6yzc7y3dkr92rhwvpyksr0mdhpqp67xmmr8z1br4"))))
10455 (build-system ruby-build-system)
10456 (arguments
10457 (list #:phases #~(modify-phases %standard-phases
10458 (add-after 'extract-gemspec 'relax-requirements
10459 (lambda _
10460 (substitute* ".gemspec"
10461 (("~> 18.0") "~> 21.0")))) ;cucumber-messages
10462 (replace 'check
10463 (lambda* (#:key tests? #:allow-other-keys)
10464 (when tests?
10465 (invoke "rspec")))))))
10466 (native-inputs (list ruby-cucumber-compatibility-kit ruby-rspec))
10467 (propagated-inputs (list ruby-cucumber-messages))
10468 (synopsis "HTML formatter for Cucumber")
10469 (description "Cucumber HTML Formatter produces a HTML report for Cucumber
10470runs. It is built on top of cucumber-react and works with any Cucumber
10471implementation with a protocol buffer formatter that outputs Cucumber
10472messages.")
10473 (home-page "https://github.com/cucumber/html-formatter")
10474 (license license:expat)))
10475
10476(define-public ruby-cucumber-ci-environment
10477 (package
10478 (name "ruby-cucumber-ci-environment")
10479 (version "9.1.0")
10480 (source (origin
10481 (method url-fetch)
10482 (uri (rubygems-uri "cucumber-ci-environment" version))
10483 (sha256
10484 (base32
10485 "1nmn2hfrjlbazgcryr3hwvsa5v4csfbjqxb4q7wbjhaxl9xxn0k7"))))
10486 (build-system ruby-build-system)
10487 (arguments (list #:phases #~(modify-phases %standard-phases
10488 (replace 'check
10489 (lambda* (#:key tests? #:allow-other-keys)
10490 (when tests?
10491 (invoke "rspec")))))))
10492 (native-inputs (list ruby-rspec))
10493 (synopsis "Detect CI Environment from environment variables")
10494 (description "This is a Ruby utility library for Cucumber that detects a
10495CI environment from environment variables.")
10496 (home-page "https://github.com/cucumber/ci-environment")
10497 (license license:expat)))
10498
10499(define-public ruby-cucumber
10500 (package
10501 (name "ruby-cucumber")
10502 (version "8.0.0")
10503 (source
10504 (origin
10505 (method git-fetch)
10506 (uri (git-reference
10507 (url "https://github.com/cucumber/cucumber-ruby")
10508 (commit (string-append "v" version))))
10509 (file-name (git-file-name name version))
10510 (sha256
10511 (base32
10512 "1dz880fdz6rfbh1nwwcq21v65byik46jnf9gppnrqf3p5k61i55r"))))
10513 (build-system ruby-build-system)
10514 (arguments
10515 (list #:test-target "spec"
10516 #:phases
10517 #~(modify-phases %standard-phases
10518 (add-after 'unpack 'disable-rubocop
10519 ;; Remove extraneous Lint checks.
10520 (lambda _
10521 (substitute* "Rakefile"
10522 (("require 'rubocop/rake_task'")
10523 "")
10524 (("RuboCop::RakeTask.new")
10525 ""))))
10526 (add-after 'extract-gemspec 'strip-version-requirements
10527 (lambda _
10528 (delete-file "Gemfile") ;do not use Bundler
10529 (substitute* "cucumber.gemspec"
10530 ;; The dependency specifications are often trailing
10531 ;; behind and appear stricter than necessary, since the
10532 ;; test suite passes with the newer component versions.
10533 (("(.*add_.*dependency '[_A-Za-z0-9-]+')(.*)"
10534 _ stripped rest)
10535 (string-append stripped " # " rest "\n")))))
10536 (add-before 'check 'set-home
10537 (lambda _
10538 (setenv "HOME" (getcwd)))))))
10539 (propagated-inputs
10540 (list ruby-builder
10541 ruby-cucumber-ci-environment
10542 ruby-cucumber-core
10543 ruby-cucumber-gherkin
10544 ruby-cucumber-html-formatter
10545 ruby-cucumber-messages
10546 ruby-cucumber-wire
10547 ruby-diff-lcs
10548 ruby-mime-types
10549 ruby-multi-test
10550 ruby-sys-uname))
10551 (native-inputs
10552 (list ruby-cucumber-compatibility-kit
10553 ruby-nokogiri
10554 ruby-pry
10555 ruby-webrick
10556 ruby-rspec))
10557 (synopsis "Describe automated tests in plain language")
10558 (description "Cucumber is a tool for running automated tests written in
10559plain language. It's designed to support a Behaviour Driven Development (BDD)
10560software development workflow.")
10561 (home-page "https://cucumber.io/")
10562 (license license:expat)))
10563
10564(define ruby-cucumber-without-tests
10565 (package (inherit ruby-cucumber)
10566 (arguments
10567 '(#:tests? #f))
10568 (native-inputs
10569 '())))
10570
10571(define-public ruby-covered
10572 (package
10573 (name "ruby-covered")
10574 (version "0.20.2")
10575 (source (origin
10576 (method url-fetch)
10577 (uri (rubygems-uri "covered" version))
10578 (sha256
10579 (base32
10580 "04fpj493jn23ah5fq93956a5h2xj3z0hrckvc26fxcfsg5pbwypa"))))
10581 (build-system ruby-build-system)
10582 (arguments
10583 ;; XXX: The test suite is disabled to avoid dependency cycles with
10584 ;; ruby-samovar, through ruby-bake.
10585 (list #:tests? #f
10586 #:phases
10587 #~(modify-phases %standard-phases
10588 (add-after 'extract-gemspec 'relax-requirements
10589 (lambda _
10590 (substitute* ".gemspec"
10591 (("\">= 3.2\"")
10592 "\">= 2.7\"")))))))
10593 (propagated-inputs (list ruby-console ruby-msgpack))
10594 (synopsis "Modern approach to code coverage in Ruby")
10595 (description "Covered uses modern Ruby features to generate comprehensive
10596coverage, including support for templates which are compiled into Ruby. It
10597has the following features:
10598@itemize
10599@item
10600Incremental coverage -- if you run your full test suite, and the run a subset,
10601it will still report the correct coverage - so you can incrementally work on
10602improving coverage.
10603@item
10604Integration with RSpec, Minitest, Travis & Coveralls - no need to configure
10605anything - out of the box support for these platforms.
10606@item
10607It supports coverage of views -- templates compiled to Ruby code can be
10608tracked for coverage reporting.
10609@end itemize")
10610 (home-page "https://github.com/ioquatix/covered")
10611 (license license:expat)))
10612
10613(define-public ruby-coveralls
10614 (package
10615 (name "ruby-coveralls")
10616 (version "0.8.23")
10617 (source
10618 (origin
10619 (method url-fetch)
10620 (uri (rubygems-uri "coveralls" version))
10621 (sha256
10622 (base32
10623 "1mv4fn5lfxhy7bc2f1lpnc5yp9mvv97az77j4r7jgrxcqwn8fqxc"))))
10624 (build-system ruby-build-system)
10625 (arguments
10626 (list #:test-target "default"
10627 #:phases #~(modify-phases %standard-phases
10628 (add-after 'extract-gemspec 'disable-problematic-tests
10629 (lambda _
10630 (substitute* "spec/coveralls/coveralls_spec.rb"
10631 ;; This test fails for unknown reasons (perhaps
10632 ;; networking); skip it.
10633 (("it \"sends existing test results\"" all)
10634 (string-append "x" all)))
10635 ;; 3 simplecov tests fail, perhaps due to using a
10636 ;; newer simplecov version.
10637 (delete-file "spec/coveralls/simplecov_spec.rb")
10638 (substitute* "coveralls-ruby.gemspec"
10639 (("\"spec/coveralls/simplecov_spec.rb\".freeze, ")
10640 ""))))
10641 (add-after 'extract-gemspec 'relax-requirements
10642 (lambda _
10643 (substitute* "coveralls-ruby.gemspec"
10644 (("%q<simplecov>.freeze, \\[\"~> 0.16.1\"]")
10645 "%q<simplecov>.freeze")))))))
10646 (native-inputs
10647 (list git-minimal/pinned
10648 ruby-pry
10649 ruby-rspec
10650 ruby-truthy
10651 ruby-vcr-expat
10652 ruby-webmock))
10653 (propagated-inputs
10654 (list ruby-json
10655 ruby-term-ansicolor
10656 ruby-thor
10657 ruby-tins
10658 ruby-simplecov))
10659 (synopsis "Ruby implementation of the Coveralls API")
10660 (description "This package provides a Ruby implementation of the Coveralls
10661API.")
10662 (home-page "https://coveralls.io")
10663 (license license:expat)))
10664
10665(define-public ruby-unindent
10666 (package
10667 (name "ruby-unindent")
10668 (version "1.0")
10669 (source
10670 (origin
10671 (method url-fetch)
10672 (uri (rubygems-uri "unindent" version))
10673 (sha256
10674 (base32
10675 "1wqh3rzv8589yzibigminxx3qpmj2nqj28f90xy1sczk1pijmcrd"))))
10676 (build-system ruby-build-system)
10677 (synopsis "Ruby method to unindent strings")
10678 (description "This module provides a @code{String#unindent} Ruby method to
10679unindent strings, which can be useful to unindent multiline strings embedded
10680in already-indented code.")
10681 (home-page "https://github.com/mynyml/unindent")
10682 (license license:expat)))
10683
10684(define-public ruby-cucumber-core
10685 (package
10686 (name "ruby-cucumber-core")
10687 (version "11.1.0")
10688 (source
10689 (origin
10690 (method git-fetch)
10691 (uri (git-reference
10692 (url "https://github.com/cucumber/cucumber-ruby-core")
10693 (commit (string-append "v" version))))
10694 (file-name (git-file-name name version))
10695 (sha256
10696 (base32
10697 "0lf2inlam0951djc2qz81x0nkffmw2dpj44iadw1fw31m7r8wqvh"))))
10698 (build-system ruby-build-system)
10699 (arguments (list #:test-target "spec"
10700 #:phases
10701 #~(modify-phases %standard-phases
10702 (add-after 'extract-gemspec 'relax-version-requirements
10703 (lambda _
10704 (substitute* "cucumber-core.gemspec"
10705 (("'cucumber-tag-expressions',.*")
10706 "'cucumber-tag-expressions', '>=4.1.0'\n")))))))
10707 (native-inputs
10708 (list ruby-rspec
10709 ruby-coveralls
10710 ruby-rubocop
10711 ruby-simplecov
10712 ruby-unindent))
10713 (propagated-inputs
10714 (list ruby-cucumber-gherkin
10715 ruby-cucumber-messages
10716 ruby-cucumber-tag-expressions))
10717 (synopsis "Core library for the Cucumber BDD app")
10718 (description "Cucumber is a tool for running automated tests
10719written in plain language. Because they're written in plain language,
10720they can be read by anyone on your team. Because they can be read by
10721anyone, you can use them to help improve communication, collaboration
10722and trust on your team.")
10723 (home-page "https://cucumber.io/")
10724 (license license:expat)))
10725
10726(define-public ruby-cucumber-expressions
10727 (package
10728 (name "ruby-cucumber-expressions")
10729 (version "16.1.2")
10730 (source
10731 (origin
10732 (method git-fetch)
10733 (uri (git-reference
10734 (url "https://github.com/cucumber/cucumber-expressions")
10735 (commit (string-append "v" version))))
10736 (file-name (git-file-name name version))
10737 (sha256
10738 (base32
10739 "1dhq88k9x2x8svam5bc7rrcd166fqymda8wxryqkbkffhnzla0id"))))
10740 (build-system ruby-build-system)
10741 (arguments
10742 (list #:test-target "spec"
10743 #:phases #~(modify-phases %standard-phases
10744 (add-after 'unpack 'chdir
10745 (lambda _
10746 (chdir "ruby"))))))
10747 (native-inputs (list ruby-rspec ruby-simplecov))
10748 (synopsis "Simpler alternative to Regular Expressions")
10749 (description "Cucumber Expressions offer similar functionality to Regular
10750Expressions, with a syntax that is easier to read and write. Cucumber
10751Expressions are extensible with parameter types.")
10752 (home-page "https://github.com/cucumber/cucumber-expressions/")
10753 (license license:expat)))
10754
10755(define-public ruby-cucumber-wire
10756 (package
10757 (name "ruby-cucumber-wire")
10758 (version "6.2.1")
10759 (source
10760 (origin
10761 (method url-fetch)
10762 (uri (rubygems-uri "cucumber-wire" version))
10763 (sha256
10764 (base32
10765 "1pmydrh9lcckj7p0cn67jw7msxdkgr9zir86cs19h3mf2zlcv7b9"))))
10766 (build-system ruby-build-system)
10767 (arguments
10768 (list #:tests? #f)) ;tests use cucumber, causing a cycle
10769 (propagated-inputs
10770 (list ruby-cucumber-core ruby-cucumber-expressions
10771 ruby-cucumber-messages))
10772 (synopsis "Cucumber wire protocol plugin")
10773 (description "Cucumber's wire protocol allows step definitions to be
10774implemented and invoked on any platform.")
10775 (home-page "https://github.com/cucumber/cucumber-ruby-wire")
10776 (license license:expat)))
10777
10778(define-public ruby-cucumber-tag-expressions
10779 (package
10780 (name "ruby-cucumber-tag-expressions")
10781 (version "5.0.1")
10782 (source
10783 (origin
10784 (method git-fetch)
10785 (uri (git-reference
10786 (url "https://github.com/cucumber/tag-expressions")
10787 (commit (string-append "v" version))))
10788 (file-name (git-file-name name version))
10789 (sha256
10790 (base32
10791 "1ziq30szn8m5y29hsdpx4dn1a8sy29h01nvcldm8nr1mx4b7dj1w"))))
10792 (build-system ruby-build-system)
10793 (arguments
10794 (list #:test-target "spec"
10795 #:phases #~(modify-phases %standard-phases
10796 (add-after 'unpack 'chdir
10797 (lambda _
10798 (chdir "ruby"))))))
10799 (native-inputs (list ruby-rspec))
10800 (synopsis "Cucumber tag expressions for Ruby")
10801 (description "Cucumber tag expression parser for Ruby. A tag expression
10802is an infix boolean expression used by Cucumber.")
10803 (home-page "https://github.com/cucumber/tag-expressions")
10804 (license license:expat)))
10805
10806(define-public ruby-skiptrace
10807 (package
10808 (name "ruby-skiptrace")
10809 (version "0.8.1")
10810 (source
10811 (origin
10812 (method url-fetch)
10813 (uri (rubygems-uri "skiptrace" version))
10814 (sha256
10815 (base32
10816 "1qpjy6pqd8hx4w7bai64jsr10mwbpnnb65wcbssyqcnalimi1s12"))))
10817 (build-system ruby-build-system)
10818 (arguments
10819 (list
10820 #:phases
10821 #~(modify-phases %standard-phases
10822 (add-after 'unpack 'remove-git-from-gemspec
10823 (lambda _
10824 (substitute* "skiptrace.gemspec"
10825 (("`git ls-files -z`") "`find . -type f -print0 |sort -z`"))))
10826 (replace 'check
10827 (lambda* (#:key tests? #:allow-other-keys)
10828 (when tests?
10829 (invoke "bundle" "exec" "rake" "default")))))))
10830 (native-inputs
10831 (list bundler ruby-rake-compiler))
10832 (synopsis "Provides access for bindings relating to Ruby exceptions")
10833 (description
10834 "@code{skiptrace} provides a way to access the bindings that relate to
10835exceptions in Ruby, providing more information about the context in which the
10836exception occurred.")
10837 (home-page "https://github.com/gsamokovarov/skiptrace")
10838 (license license:expat)))
10839
10840(define-public ruby-bio-logger
10841 (package
10842 (name "ruby-bio-logger")
10843 (version "1.0.1")
10844 (source
10845 (origin
10846 (method url-fetch)
10847 (uri (rubygems-uri "bio-logger" version))
10848 (sha256
10849 (base32
10850 "02pylfy8nkdqzyzplvnhn1crzmfkj1zmi3qjhrj2f2imlxvycd28"))))
10851 (build-system ruby-build-system)
10852 (arguments
10853 `(#:tests? #f)) ; rake errors, missing shoulda
10854 (propagated-inputs
10855 (list ruby-log4r))
10856 (synopsis "Log4r wrapper for Ruby")
10857 (description "Bio-logger is a wrapper around Log4r adding extra logging
10858features such as filtering and fine grained logging.")
10859 (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
10860 (license license:expat)))
10861
10862(define-public ruby-yajl-ruby
10863 (package
10864 (name "ruby-yajl-ruby")
10865 (version "1.4.3")
10866 (source
10867 (origin
10868 (method url-fetch)
10869 (uri (rubygems-uri "yajl-ruby" version))
10870 (sha256
10871 (base32
10872 "1lni4jbyrlph7sz8y49q84pb0sbj82lgwvnjnsiv01xf26f4v5wc"))))
10873 (build-system ruby-build-system)
10874 (arguments
10875 (list
10876 #:test-target "spec"
10877 #:phases
10878 #~(modify-phases %standard-phases
10879 (add-before 'check 'patch-test-to-update-load-path
10880 (lambda _
10881 (substitute* "spec/parsing/large_number_spec.rb"
10882 (("require \"yajl\"")
10883 "$LOAD_PATH << 'lib'; require 'yajl'")))))))
10884 (native-inputs
10885 (list ruby-rake-compiler ruby-rspec))
10886 (synopsis "Streaming JSON parsing and encoding library for Ruby")
10887 (description
10888 "Ruby C bindings to the Yajl JSON stream-based parser library. The API
10889is compatible with the JSON gem, so yajl-ruby can act as a drop in
10890replacement.
10891
10892A modified copy of yajl is used, and included in the package.")
10893 (home-page "https://github.com/brianmario/yajl-ruby")
10894 (license (list license:expat ; Ruby code, yajl_ext.c and yajl_ext.h
10895 license:bsd-3)))) ; Included, modified copy of yajl
10896
10897(define-public ruby-yard
10898 (package
10899 (name "ruby-yard")
10900 (version "0.9.34")
10901 (source
10902 (origin
10903 (method git-fetch)
10904 ;; Tests do not pass if we build from the distributed gem.
10905 (uri (git-reference
10906 (url "https://github.com/lsegal/yard")
10907 (commit (string-append "v" version))))
10908 (file-name (git-file-name name version))
10909 (sha256
10910 (base32
10911 "10jq0hyzyy0d6l63jxld32g36fhrclkb3rwnyp47igcik73kbagb"))))
10912 (build-system ruby-build-system)
10913 (arguments
10914 (list
10915 #:test-target "default"
10916 #:phases
10917 #~(modify-phases %standard-phases
10918 (add-after 'unpack 'do-not-set-date-in-gemspec
10919 ;; Fix a reproducibility issue (see:
10920 ;; https://github.com/lsegal/yard/issues/1343).
10921 (lambda _
10922 (substitute* "yard.gemspec"
10923 ((".*s\\.date.*") ""))))
10924 (add-before 'check 'prepare-for-tests
10925 (lambda* (#:key tests? #:allow-other-keys)
10926 (when tests?
10927 (substitute* "Rakefile"
10928 ((".*[Ss]amus.*") ""))
10929 ;; Delete the Gemfile to avoid errors relating to it.
10930 (delete-file "Gemfile")
10931 ;; $HOME needs to be set to somewhere writeable for tests to
10932 ;; run.
10933 (setenv "HOME" "/tmp")
10934 ;; This test fails
10935 ;; #<File (class)> received :open with unexpected arguments
10936 ;; expected: ("gem1.gem", "rb")
10937 ;; got: ("/gnu/store/.../lib/ruby/vendor_ruby/specifications/asciidoctor-2.0.18.gemspec", "r:UTF-8:-")
10938 (substitute* "spec/cli/diff_spec.rb"
10939 (("it \"searches for .gem file")
10940 "xit \"searches for .gem file"))))))))
10941 (native-inputs
10942 (list ruby-rspec
10943 ruby-rack
10944 ruby-redcloth
10945 ruby-webrick
10946 ruby-asciidoctor/minimal))
10947 (synopsis "Documentation generation tool for Ruby")
10948 (description "YARD is a documentation generation tool for the Ruby
10949programming language. It enables the user to generate consistent, usable
10950documentation that can be exported to a number of formats very easily, and
10951also supports extending for custom Ruby constructs such as custom class level
10952definitions.")
10953 (home-page "https://yardoc.org")
10954 (license license:expat)))
10955
10956(define-public ruby-yard/minimal
10957 (hidden-package
10958 (package
10959 (inherit ruby-yard)
10960 (arguments
10961 (ensure-keyword-arguments
10962 (package-arguments ruby-yard)
10963 (list #:tests? #f)))
10964 (native-inputs '()))))
10965
10966(define-public ruby-spectroscope
10967 (package
10968 (name "ruby-spectroscope")
10969 (version "0.1.0")
10970 (source
10971 (origin
10972 (method url-fetch)
10973 (uri (rubygems-uri "spectroscope" version))
10974 (sha256
10975 (base32
10976 "0iiid9sm110qhx0i1zkds710cvsnmhd308wbqa7slkzbq2akrb3y"))))
10977 (build-system ruby-build-system)
10978 (arguments
10979 `(#:phases
10980 (modify-phases %standard-phases
10981 (replace 'check
10982 (lambda _
10983 (with-output-to-file ".test"
10984 (lambda _
10985 (display
10986 "\
10987require 'ae/should'
10988require 'rspec'
10989
10990include RSpec
10991
10992Test.run :default do |run|
10993 run.files << 'spec/*_spec.rb'
10994end")))
10995 (invoke "ruby" "-Ilib" "-rrubytest" ".test"))))))
10996 (native-inputs
10997 (list ruby-ae ruby-rspec))
10998 (propagated-inputs
10999 (list ruby-rubytest))
11000 (synopsis "Behavior-Driven Development (BDD) framework built on RubyTest")
11001 (description "Spectroscope is a Behavior-Driven Development (BDD)
11002framework built on RubyTest, designed to emulate RSpec in most respects. It
11003is assertion framework independent so any number of assertion systems can be
11004used, such as Assay or AE.")
11005 (home-page "http://rubyworks.github.com/spectroscope/")
11006 (license license:bsd-2)))
11007
11008(define-public ruby-tomparse
11009 (package
11010 (name "ruby-tomparse")
11011 (version "0.4.2")
11012 (source
11013 (origin
11014 (method url-fetch)
11015 (uri (rubygems-uri "tomparse" version))
11016 (sha256
11017 (base32
11018 "06xakk41f1kgj6j1ahkwn4r6cvidixvm4phhlrvmwb7c3pr8ygc8"))))
11019 (build-system ruby-build-system)
11020 ;; TODO: Tests require citron and rulebow, not yet packaged.
11021 (arguments '(#:tests? #f))
11022 (synopsis "TomDoc parser for Ruby")
11023 (description "TomParse is a TomDoc parser for Ruby. It takes a code
11024comment as input and parses it into a convenient object-oriented structure in
11025accordance with the TomDoc standard. See
11026@url{https://github.com/mojombo/tomdoc, TomDoc} for more information about the
11027TomDoc format.")
11028 (home-page "http://rubyworks.github.com/tomparse/")
11029 (license license:bsd-2)))
11030
11031(define-public ruby-yard-tomdoc
11032 (package
11033 (name "ruby-yard-tomdoc")
11034 (version "0.7.1")
11035 (source
11036 (origin
11037 (method url-fetch)
11038 (uri (rubygems-uri "yard-tomdoc" version))
11039 (sha256
11040 (base32
11041 "1725gs8b8klpwhrvnf2wwp7dw3zxs9vz2la983l2d8c4r4fn1j2z"))))
11042 (build-system ruby-build-system)
11043 (arguments
11044 `(#:phases (modify-phases %standard-phases
11045 (replace 'check
11046 (lambda _
11047 (invoke "rubytest" "-Ilib" "-Itest" "test/"))))))
11048 (native-inputs
11049 (list ruby-rubytest-cli ruby-spectroscope ruby-ae))
11050 (propagated-inputs
11051 (list ruby-tomparse ruby-yard))
11052 (synopsis "TomDoc syntax for YARD")
11053 (description "This module adds support for the TomDoc documentation format
11054to YARD, a documentation generation tool for Ruby.")
11055 (home-page "http://rubyworks.github.com/yard-tomdoc/")
11056 (license license:expat)))
11057
11058(define-public ruby-clap
11059 (package
11060 (name "ruby-clap")
11061 (version "1.0.0")
11062 (source (origin
11063 (method url-fetch)
11064 (uri (rubygems-uri "clap" version))
11065 (sha256
11066 (base32
11067 "190m05k3pca72c1h8k0fnvby15m303zi0lpb9c478ad19wqawa5q"))))
11068 (build-system ruby-build-system)
11069 ;; Clap needs cutest for running tests, but cutest needs clap.
11070 (arguments `(#:tests? #f))
11071 (synopsis "Command line argument parsing for simple applications")
11072 (description
11073 "Clap provides command line argument parsing features. It covers the
11074simple case of executing code based on the flags or parameters passed.")
11075 (home-page "https://github.com/djanowski/cutest")
11076 (license license:expat)))
11077
11078(define-public ruby-cutest
11079 (package
11080 (name "ruby-cutest")
11081 (version "1.2.2")
11082 (source (origin
11083 (method url-fetch)
11084 (uri (rubygems-uri "cutest" version))
11085 (sha256
11086 (base32
11087 "1mldhjn62g53vx4gq2qdqg2lgjvyrqxa8d0khf8347bbfgi16d32"))))
11088 (build-system ruby-build-system)
11089 (propagated-inputs
11090 (list ruby-clap))
11091 (synopsis "Run tests in separate processes")
11092 (description
11093 "Cutest runs tests in separate processes to avoid shared state.")
11094 (home-page "https://github.com/djanowski/cutest")
11095 (license license:expat)))
11096
11097(define-public ruby-pygmentize
11098 (package
11099 (name "ruby-pygmentize")
11100 (version "0.0.3")
11101 (source (origin
11102 (method url-fetch)
11103 (uri (rubygems-uri "pygmentize" version))
11104 (sha256
11105 (base32
11106 "1pxryhkiwvsz6xzda3bvqwz5z8ggzl1cdglf8qbcf4bb7akirdpb"))))
11107 (build-system ruby-build-system)
11108 (arguments
11109 `(#:phases
11110 (modify-phases %standard-phases
11111 (add-after 'unpack 'fix-pygmentize-path
11112 (lambda _
11113 (substitute* "lib/pygmentize.rb"
11114 (("\"/usr/bin/env python.*")
11115 (string-append "\"" (which "pygmentize") "\"\n")))))
11116 (add-after 'build 'do-not-use-vendor-directory
11117 (lambda _
11118 ;; Remove bundled pygments sources
11119 ;; FIXME: ruby-build-system does not support snippets.
11120 (delete-file-recursively "vendor")
11121 (substitute* "pygmentize.gemspec"
11122 (("\"vendor/\\*\\*/\\*\",") "")))))))
11123 (inputs
11124 `(("pygments" ,python-pygments)))
11125 (native-inputs
11126 (list ruby-cutest ruby-nokogiri))
11127 (synopsis "Thin Ruby wrapper around pygmentize")
11128 (description
11129 "Pygmentize provides a simple way to call pygmentize from within a Ruby
11130application.")
11131 (home-page "https://github.com/djanowski/pygmentize")
11132 (license license:expat)))
11133
11134(define-public ruby-event-emitter
11135 (package
11136 (name "ruby-event-emitter")
11137 (version "0.2.6")
11138 (source (origin
11139 (method url-fetch)
11140 (uri (rubygems-uri "event_emitter" version))
11141 (sha256
11142 (base32
11143 "148k9qv8102l3m6klc24dwip79f9y4bjr5z19dckd7ffbjyrf9n7"))))
11144 (build-system ruby-build-system)
11145 (arguments
11146 (list #:phases #~(modify-phases %standard-phases
11147 (add-after 'extract-gemspec 'relax-requirements
11148 (lambda _
11149 (substitute* "event_emitter.gemspec"
11150 (("~> 1.15") ">= 1.15")))))))
11151 (synopsis "Ruby port of EventEmitter from Node.js")
11152 (description
11153 "This package provides a Ruby port of EventEmitter from Node.js.")
11154 (home-page "https://shokai.github.io/event_emitter/")
11155 (license license:expat)))
11156
11157(define-public ruby-eventmachine
11158 (package
11159 (name "ruby-eventmachine")
11160 (version "1.2.7")
11161 (source
11162 (origin
11163 (method url-fetch)
11164 (uri (rubygems-uri "eventmachine" version))
11165 (sha256
11166 (base32
11167 "0wh9aqb0skz80fhfn66lbpr4f86ya2z5rx6gm5xlfhd05bj1ch4r"))))
11168 (build-system ruby-build-system)
11169 (arguments
11170 '(#:tests? #f)) ; test suite tries to connect to google.com
11171 (inputs
11172 (list openssl))
11173 (native-inputs
11174 (list ruby-rake-compiler))
11175 (synopsis "Single-threaded network event framework for Ruby")
11176 (description
11177 "EventMachine implements a single-threaded engine for arbitrary network
11178communications. EventMachine wraps all interactions with sockets, allowing
11179programs to concentrate on the implementation of network protocols. It can be
11180used to create both network servers and clients.")
11181 ;; The ‘official’ rubyeventmachine.com domain is now registrar-squatted.
11182 (home-page "https://github.com/eventmachine/eventmachine")
11183 (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT
11184
11185(define-public ruby-ruby-engine
11186 (package
11187 (name "ruby-ruby-engine")
11188 (version "2.0.0")
11189 (source
11190 (origin
11191 (method url-fetch)
11192 (uri (rubygems-uri "ruby_engine" version))
11193 (sha256
11194 (base32
11195 "0wqdcv8gxybp1y7kjhh18g3r9dczacs62d4ahcvyhz32bih8c9fm"))))
11196 (build-system ruby-build-system)
11197 (arguments
11198 `(#:phases
11199 (modify-phases %standard-phases
11200 (add-after 'extract-gemspec 'clean-up
11201 (lambda _
11202 (delete-file "Gemfile.lock")
11203 (substitute* "ruby_engine.gemspec"
11204 ;; Remove unnecessary imports that would entail further
11205 ;; dependencies.
11206 ((".*<rdoc.*") "")
11207 ((".*<rubygems-tasks.*") "")
11208 ;; Remove extraneous .gem file
11209 (("\"pkg/ruby_engine-[0-9.]+\\.gem\".freeze, ") "")
11210 (("\"Gemfile.lock\".freeze, ") "")
11211 ;; Soften rake dependency
11212 (("%q<rake>.freeze, \\[\"~> 10.0\"\\]")
11213 "%q<rake>.freeze, [\">= 10.0\"]")
11214 ;; Soften the rspec dependency
11215 (("%q<rspec>.freeze, \\[\"~> 2.4\"\\]")
11216 "%q<rspec>.freeze, [\">= 2.4\"]"))
11217 (substitute* "Rakefile"
11218 (("require 'rubygems/tasks'") "")
11219 (("Gem::Tasks.new") ""))
11220 ;; Remove extraneous .gem file that otherwise gets installed.
11221 (delete-file-recursively "pkg"))))))
11222 (native-inputs
11223 (list bundler ruby-rake ruby-rspec))
11224 (synopsis "Simplifies checking for Ruby implementation")
11225 (description
11226 "@code{ruby_engine} provides an RubyEngine class that can be used to
11227check which implementation of Ruby is in use. It can provide the interpreter
11228name and provides query methods such as @code{RubyEngine.mri?}.")
11229 (home-page "https://github.com/janlelis/ruby_engine")
11230 (license license:expat)))
11231
11232(define-public ruby-mimemagic
11233 (package
11234 (name "ruby-mimemagic")
11235 (version "0.3.3")
11236 (source
11237 (origin
11238 (method url-fetch)
11239 (uri (rubygems-uri "mimemagic" version))
11240 (sha256
11241 (base32 "04cp5sfbh1qx82yqxn0q75c7hlcx8y1dr5g3kyzwm4mx6wi2gifw"))))
11242 (build-system ruby-build-system)
11243 (arguments
11244 '(#:phases
11245 (modify-phases %standard-phases
11246 ;; This phase breaks the tests, as it patches some of the test data.
11247 (delete 'patch-source-shebangs))))
11248 (native-inputs
11249 (list ruby-bacon))
11250 (synopsis "Ruby library for MIME detection by extension or content")
11251 (description
11252 "@acronym{MIME, Multipurpose Internet Mail Extensions} detection by
11253extension or content, using the freedesktop.org.xml shared-mime-info
11254database.")
11255 (home-page "https://github.com/minad/mimemagic")
11256 (license license:expat)))
11257
11258(define-public ruby-mime-types-data
11259 (package
11260 (name "ruby-mime-types-data")
11261 (version "3.2016.0521")
11262 (source
11263 (origin
11264 (method url-fetch)
11265 (uri (rubygems-uri "mime-types-data" version))
11266 (sha256
11267 (base32
11268 "04my3746hwa4yvbx1ranhfaqkgf6vavi1kyijjnw8w3dy37vqhkm"))))
11269 (build-system ruby-build-system)
11270 (native-inputs
11271 (list ruby-hoe))
11272 (synopsis "Registry for information about MIME media type definitions")
11273 (description
11274 "@code{mime-types-data} provides a registry for information about
11275Multipurpose Internet Mail Extensions (MIME) media type definitions. It can
11276be used with the Ruby mime-types library or other software to determine
11277defined filename extensions for MIME types, or to use filename extensions to
11278look up the likely MIME type definitions.")
11279 (home-page "https://github.com/mime-types/mime-types-data/")
11280 (license license:expat)))
11281
11282(define-public ruby-mime-types
11283 (package
11284 (name "ruby-mime-types")
11285 (version "3.4.1")
11286 (source
11287 (origin
11288 (method url-fetch)
11289 (uri (rubygems-uri "mime-types" version))
11290 (sha256
11291 (base32
11292 "0ipw892jbksbxxcrlx9g5ljq60qx47pm24ywgfbyjskbcl78pkvb"))))
11293 (build-system ruby-build-system)
11294 (propagated-inputs
11295 (list ruby-mime-types-data))
11296 (native-inputs
11297 (list ruby-hoe
11298 ruby-fivemat
11299 ruby-minitest-focus
11300 ruby-minitest-bonus-assertions
11301 ruby-minitest-hooks))
11302 (synopsis "Library and registry for MIME content type definitions")
11303 (description "The mime-types library provides a library and registry for
11304information about Multipurpose Internet Mail Extensions (MIME) content type
11305definitions. It can be used to determine defined filename extensions for MIME
11306types, or to use filename extensions to look up the likely MIME type
11307definitions.")
11308 (home-page "https://github.com/mime-types/ruby-mime-types")
11309 (license license:expat)))
11310
11311(define-public ruby-mini-mime
11312 (package
11313 (name "ruby-mini-mime")
11314 (version "1.1.2")
11315 (source
11316 (origin
11317 (method url-fetch)
11318 (uri (rubygems-uri "mini_mime" version))
11319 (sha256
11320 (base32
11321 "0lbim375gw2dk6383qirz13hgdmxlan0vc5da2l072j3qw6fqjm5"))))
11322 (build-system ruby-build-system)
11323 (synopsis "Lightweight mime type lookup toy")
11324 (description "This package provides a lightweight mime type lookup toy.")
11325 (home-page "https://github.com/discourse/mini_mime")
11326 (license license:expat)))
11327
11328(define-public ruby-fileutils
11329 (package
11330 (name "ruby-fileutils")
11331 (version "1.7.0")
11332 (source (origin
11333 (method git-fetch) ;for tests
11334 (uri (git-reference
11335 (url "https://github.com/ruby/fileutils")
11336 (commit (string-append "v" version))))
11337 (file-name (git-file-name name version))
11338 (sha256
11339 (base32
11340 "0m68gaqclnc2wflilmrnr19kky2gr6fjf6k3yq02sf9scs281kid"))))
11341 (build-system ruby-build-system)
11342 (arguments
11343 (list
11344 #:phases
11345 #~(modify-phases %standard-phases
11346 (add-before 'check 'disable-problematic-tests
11347 (lambda _
11348 (substitute* "test/fileutils/test_fileutils.rb"
11349 ;; The 'test_chown' tests depends on /etc/groups, which
11350 ;; doesn't exist in the build environment.
11351 (("def test_chown.*" all)
11352 (string-append all " return true\n"))
11353 ;; The 'test_cp_r_dev' expects a RuntimeError to be raised
11354 ;; when copying a char device to a directory, but this is not
11355 ;; triggered in the build environment, for reasons unknown.
11356 (("def test_cp_r_dev.*" all)
11357 (string-append all " return true\n"))))))))
11358 (synopsis "Ruby utility library to manipulate files")
11359 (description "The FileUtils Ruby library includes Several file utility
11360methods for copying, moving, removing, etc.")
11361 (home-page "https://github.com/ruby/fileutils")
11362 (license license:bsd-2)))
11363
11364(define-public ruby-fivemat
11365 (package
11366 (name "ruby-fivemat")
11367 (version "1.3.7")
11368 (source
11369 (origin
11370 (method url-fetch)
11371 (uri (rubygems-uri "fivemat" version))
11372 (sha256
11373 (base32
11374 "0pzlycasvwmg4bbx7plllpqnhd9zlmmff8l2w3yii86nrm2nvf9n"))))
11375 (build-system ruby-build-system)
11376 (arguments
11377 `(#:tests? #f)) ; no tests
11378 (synopsis "Each test file given its own line of dots")
11379 (description
11380 "Fivemat is a MiniTest/RSpec/Cucumber formatter that gives each test file
11381its own line of dots during testing. It aims to provide test output that is
11382neither too verbose nor too minimal.")
11383 (home-page "https://github.com/tpope/fivemat")
11384 (license license:expat)))
11385
11386(define-public ruby-sqlite3
11387 (package
11388 (name "ruby-sqlite3")
11389 (version "2.5.0")
11390 (source
11391 (origin
11392 (method git-fetch) ;for tests
11393 (uri (git-reference
11394 (url "https://github.com/sparklemotion/sqlite3-ruby")
11395 (commit (string-append "v" version))))
11396 (file-name (git-file-name name version))
11397 (sha256
11398 (base32
11399 "1fanv7bv5lszd5g752yy8nmpjhrl9gqwbbkbis2xbh83y96f2zfm"))))
11400 (build-system ruby-build-system)
11401 (arguments
11402 (list
11403 #:gem-flags #~(list "--" "--enable-system-libraries")
11404 #:modules '((guix build ruby-build-system)
11405 (guix build utils)
11406 (ice-9 rdelim)
11407 (ice-9 textual-ports))
11408 #:phases
11409 #~(modify-phases %standard-phases
11410 (add-after 'unpack 'relax-requirements
11411 (lambda _
11412 ;; Don't try to format C code, remove rubocop-rake.
11413 (delete-file "rakelib/format.rake")
11414 ;; Don't try to run valgrind-like memory tests.
11415 ;; This cuts all lines after Minitest::TestTask.create
11416 (with-atomic-file-replacement
11417 "rakelib/test.rake"
11418 (lambda (in out)
11419 (let loop ()
11420 (let ((line (read-line in)))
11421 (cond
11422 ((eof-object? line) #f)
11423 ((string-prefix? "Minitest::TestTask.create" line) #f)
11424 (else
11425 (format out "~a~%" line)
11426 (loop)))))))))
11427 (delete 'check)
11428 (add-after 'install 'check
11429 (lambda* (#:key tests? #:allow-other-keys)
11430 (when tests?
11431 (setenv "GEM_PATH"
11432 (string-append (getenv "GEM_PATH") ":"
11433 #$output "/lib/ruby/vendor_ruby"))
11434 (invoke "rake" "test")))))))
11435 (propagated-inputs
11436 (list ruby-mini-portile-2))
11437 (inputs
11438 (list sqlite))
11439 (native-inputs
11440 (list ruby-hoe
11441 ruby-rake-compiler
11442 ruby-rake-compiler-dock))
11443 (synopsis "Interface with SQLite3 databases")
11444 (description
11445 "This module allows Ruby programs to interface with the SQLite3 database
11446engine.")
11447 (home-page
11448 "https://github.com/sparklemotion/sqlite3-ruby")
11449 (license license:bsd-3)))
11450
11451(define-public ruby-sqlite3-1.4
11452 (package/inherit ruby-sqlite3
11453 (name "ruby-sqlite3")
11454 (version "1.4.4")
11455 (source
11456 (origin
11457 (method git-fetch) ;for tests
11458 (uri (git-reference
11459 (url "https://github.com/sparklemotion/sqlite3-ruby")
11460 (commit (string-append "v" version))))
11461 (file-name (git-file-name name version))
11462 (sha256
11463 (base32
11464 "0ngirjbai3f5ki2sf6m4gxbbrjpr3b35bz5nrz1cifyw1jk6a6sr"))))
11465 (arguments
11466 (substitute-keyword-arguments (package-arguments ruby-sqlite3)
11467 ((#:tests? #t #t) #f)
11468 ((#:phases phases #~%standard-phases)
11469 #~(modify-phases #$phases
11470 (delete 'relax-requirements)
11471 (add-after 'unpack 'fix-version
11472 (lambda _
11473 (substitute* "sqlite3.gemspec"
11474 (("s\\.version = .*")
11475 (format #f "s.version = ~s~%" #$version)))))))))))
11476
11477(define-public ruby-shoulda-context
11478 (package
11479 (name "ruby-shoulda-context")
11480 (version "2.0.0")
11481 (source
11482 (origin
11483 (method url-fetch)
11484 (uri (rubygems-uri "shoulda-context" version))
11485 (sha256
11486 (base32
11487 "0d1clcp92jv8756h09kbc55qiqncn666alx0s83za06q5hs4bpvs"))))
11488 (build-system ruby-build-system)
11489 (arguments
11490 `(#:phases
11491 (modify-phases %standard-phases
11492 (replace 'check
11493 (lambda* (#:key tests? #:allow-other-keys)
11494 (when tests?
11495 ;; Do not run tests to avoid circular dependence with rails.
11496 ;; Instead just import the library to test.
11497 (invoke "ruby" "-Ilib" "-r" "shoulda-context")))))))
11498 (synopsis "Test::Unit context framework extracted from Shoulda")
11499 (description
11500 "@code{shoulda-context} is the context framework extracted from Shoulda.
11501Instead of writing Ruby methods with lots_of_underscores, shoulda-context adds
11502context, setup, and should blocks combine to produce natural test method
11503names.")
11504 (home-page "https://github.com/thoughtbot/shoulda-context")
11505 (license license:expat)))
11506
11507(define-public ruby-shoulda-matchers
11508 (package
11509 (name "ruby-shoulda-matchers")
11510 (version "5.3.0")
11511 (source
11512 (origin
11513 (method url-fetch)
11514 (uri (rubygems-uri "shoulda-matchers" version))
11515 (sha256
11516 (base32
11517 "11igjgh16dl5pwqizdmclzlzpv7mbmnh8fx7m9b5kfsjhwxqdfpn"))))
11518 (build-system ruby-build-system)
11519 (arguments
11520 `(#:phases
11521 (modify-phases %standard-phases
11522 (replace 'check
11523 (lambda* (#:key tests? #:allow-other-keys)
11524 (when tests?
11525 ;; Do not run tests to avoid circular dependence with rails. Instead
11526 ;; just import the library to test.
11527 (invoke "ruby" "-Ilib" "-r" "shoulda-matchers")))))))
11528 (propagated-inputs
11529 (list ruby-activesupport))
11530 (synopsis "Collection of testing matchers extracted from Shoulda")
11531 (description
11532 "Shoulda Matchers provides RSpec- and Minitest-compatible one-liners that
11533test common Rails functionality. These tests would otherwise be much longer,
11534more complex, and error-prone.")
11535 (home-page "https://github.com/thoughtbot/shoulda-matchers")
11536 (license license:expat)))
11537
11538(define-public ruby-shoulda
11539 (package
11540 (name "ruby-shoulda")
11541 (version "4.0.0")
11542 (source
11543 (origin
11544 (method url-fetch)
11545 (uri (rubygems-uri "shoulda" version))
11546 (sha256
11547 (base32
11548 "02lww34kn1g6lidp4rx4rs6bqvirrzxlfw1y2wm11aif8f622xz6"))))
11549 (build-system ruby-build-system)
11550 (arguments
11551 `(#:phases
11552 (modify-phases %standard-phases
11553 (replace 'check
11554 (lambda* (#:key tests? #:allow-other-keys)
11555 (when tests?
11556 ;; Don't run tests to avoid circular dependence with rails.
11557 ;; Instead just import the library to test.
11558 (invoke "ruby" "-Ilib" "-r" "shoulda"))))
11559 (add-after 'extract-gemspec 'relax-requirements
11560 (lambda _
11561 (substitute* "shoulda.gemspec"
11562 ;; An older version of shoulda-matchers (4.0) is used, out of
11563 ;; little maintenance rather than because of an real
11564 ;; incompatibility (see:
11565 ;; https://github.com/thoughtbot/shoulda/issues/275).
11566 ((", \\[\"~> 4.0\"]") "")))))))
11567 (propagated-inputs
11568 (list ruby-shoulda-context ruby-shoulda-matchers))
11569 (synopsis "Context framework and matchers for testing")
11570 (description
11571 "@code{shoulda} is a meta-package combining @code{shoulda-context} and
11572@code{shoulda-matchers} providing tools for writing tests.")
11573 (home-page "https://github.com/thoughtbot/shoulda")
11574 (license license:expat)))
11575
11576(define-public ruby-unf
11577 (package
11578 (name "ruby-unf")
11579 (version "0.1.4")
11580 (source
11581 (origin
11582 (method url-fetch)
11583 (uri (rubygems-uri "unf" version))
11584 (sha256
11585 (base32
11586 "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9"))))
11587 (build-system ruby-build-system)
11588 (arguments
11589 `(#:phases
11590 (modify-phases %standard-phases
11591 (add-before 'check 'add-dependency-to-bundler
11592 (lambda _
11593 ;; test-unit is required but not provided by the bundler
11594 ;; environment. This is fixed in the upstream repository but fix
11595 ;; has not been released.
11596 (substitute* "Gemfile"
11597 (("^gemspec") "gem 'test-unit'\ngemspec")))))))
11598 (propagated-inputs
11599 (list ruby-unf-ext))
11600 (native-inputs
11601 (list ruby-shoulda bundler ruby-test-unit))
11602 (synopsis "Unicode Normalization Form support to Ruby and JRuby")
11603 (description
11604 "@code{ruby-unf} is a wrapper library to bring Unicode Normalization Form
11605support to both Ruby and JRuby. It uses @code{unf_ext} on CRuby and
11606@code{java.text.Normalizer} on JRuby.")
11607 (home-page "https://github.com/knu/ruby-unf")
11608 (license license:bsd-2)))
11609
11610(define-public ruby-warden
11611 (package
11612 (name "ruby-warden")
11613 (version "1.2.8")
11614 (source
11615 (origin
11616 (method url-fetch)
11617 (uri (rubygems-uri "warden" version))
11618 (sha256
11619 (base32
11620 "1fr9n9i9r82xb6i61fdw4xgc7zjv7fsdrr4k0njchy87iw9fl454"))))
11621 (build-system ruby-build-system)
11622 (arguments
11623 '(#:tests? #f)) ; No included tests
11624 (propagated-inputs
11625 (list ruby-rack))
11626 (synopsis "Rack middleware providing authentication")
11627 (description
11628 "Warden is a Rack-based middleware that provides a mechanism for
11629authentication in Ruby web applications.")
11630 (home-page "https://github.com/wardencommunity/warden")
11631 (license license:expat)))
11632
11633(define-public ruby-warden-oauth2
11634 (package
11635 (name "ruby-warden-oauth2")
11636 (version "0.0.1")
11637 (source
11638 (origin
11639 (method url-fetch)
11640 (uri (rubygems-uri "warden-oauth2" version))
11641 (sha256
11642 (base32
11643 "1z9154lvzrnnfjbjkmirh4n811nygp6pm2fa6ikr7y1ysa4zv3cz"))))
11644 (build-system ruby-build-system)
11645 (arguments
11646 '(#:test-target "spec"
11647 #:phases
11648 (modify-phases %standard-phases
11649 (add-after 'unpack 'remove-unnecessary-dependencies
11650 (lambda _
11651 (substitute* "Gemfile"
11652 ;; All of these gems relate to development, and are unnecessary
11653 ;; when running the tests
11654 (("gem 'guard-bundler'") "")
11655 (("gem 'guard'") "")
11656 (("gem 'guard-rspec'") "")
11657 (("gem 'rb-fsevent'") "")
11658 (("gem 'pry'") "")
11659 (("gem 'growl'") ""))))
11660 ;; The test suite doesn't work with rspec@2, and this is incompatible
11661 ;; with the current version of Rake, so invoke Rspec directly
11662 (replace 'check
11663 (lambda* (#:key tests? #:allow-other-keys)
11664 (when tests?
11665 (invoke "bundle" "exec" "rspec")))))))
11666 (propagated-inputs
11667 (list ruby-warden))
11668 (native-inputs
11669 (list bundler ruby-rspec-2 ruby-rack-test))
11670 (synopsis "OAuth 2.0 strategies for Warden")
11671 (description
11672 "This library extends Warden to support OAuth 2.0 authorized API
11673requests.")
11674 (home-page "https://github.com/opperator/warden-oauth2")
11675 (license license:expat)))
11676
11677(define-public ruby-webmock
11678 (package
11679 (name "ruby-webmock")
11680 (version "3.11.2")
11681 (source
11682 (origin
11683 (method url-fetch)
11684 (uri (rubygems-uri "webmock" version))
11685 (sha256
11686 (base32
11687 "1hdlbvfw316lkz251qnfk79drmaay7l51kidvicz41nhvw12xz8v"))))
11688 (build-system ruby-build-system)
11689 (native-inputs
11690 (list bundler ruby-rspec))
11691 (propagated-inputs
11692 (list ruby-addressable ruby-crack ruby-hashdiff))
11693 (synopsis "Allows stubbing and setting expectations on HTTP requests")
11694 (description
11695 "WebMock allows stubbing HTTP requests and setting expectations on HTTP
11696requests. This is useful when testing software.")
11697 (home-page "https://github.com/bblimke/webmock")
11698 (license license:expat)))
11699
11700(define-public ruby-webmock-2
11701 (package
11702 (inherit ruby-webmock)
11703 (name "ruby-webmock")
11704 (version "2.3.2")
11705 (source
11706 (origin
11707 (method url-fetch)
11708 (uri (rubygems-uri "webmock" version))
11709 (sha256
11710 (base32
11711 "04hkcqsmbfnp8g237pisnc834vpgildklicbjbyikqg0bg1rwcy5"))))))
11712
11713(define-public ruby-unicode-display-width
11714 (package
11715 (name "ruby-unicode-display-width")
11716 (version "2.4.2")
11717 (source
11718 (origin
11719 (method url-fetch)
11720 (uri (rubygems-uri "unicode-display_width" version))
11721 (sha256
11722 (base32
11723 "1gi82k102q7bkmfi7ggn9ciypn897ylln1jk9q67kjhr39fj043a"))))
11724 (build-system ruby-build-system)
11725 (arguments
11726 '(;; Test data not included.
11727 #:tests? #f))
11728 (synopsis "Determine the monospace display width of Ruby strings")
11729 (description
11730 "@code{Unicode::DisplayWidth} is a Ruby library which can determine the
11731display width of strings in Ruby.")
11732 (home-page "https://github.com/janlelis/unicode-display_width")
11733 (license license:expat)))
11734
11735;; There is another gem called 'ruby-version' so we use an underscore in this
11736;; name
11737(define-public ruby_version
11738 (package
11739 (name "ruby_version")
11740 (version "1.0.2")
11741 (source
11742 (origin
11743 (method url-fetch)
11744 (uri (rubygems-uri "ruby_version" version))
11745 (sha256
11746 (base32
11747 "0lvc7bd5ps3w2vq2wb02i0pi3vfcx2rnckx2ix4rjym1qf52kb2j"))))
11748 (build-system ruby-build-system)
11749 (arguments
11750 `(#:phases
11751 (modify-phases %standard-phases
11752 (add-before 'check 'fix-dependencies
11753 (lambda _
11754 ;; Remove the Gemfile.lock, as we want to use Guix packages at
11755 ;; whatever versions.
11756 (delete-file "Gemfile.lock")
11757 ;; Remove the included gem files as they unnecessary.
11758 (delete-file-recursively "pkg/")
11759 ;; Accept any version of rake, rdoc and rspec
11760 (substitute* "ruby_version.gemspec"
11761 (("%q<rake.*") "%q<rake>)\n")
11762 (("%q<rdoc.*") "%q<rdoc>)\n")
11763 (("%q<rspec.*") "%q<rspec>)\n"))
11764 ;; Do not use bundler.
11765 (substitute* "Rakefile"
11766 (("Bundler\\.setup.*") "nil\n")))))))
11767 (native-inputs
11768 (list ruby-rdoc ruby-rspec ruby-rubygems-tasks))
11769 (synopsis "Ruby library to help check the Ruby version")
11770 (description "@code{ruby_version} provides a @code{RubyVersion} module to simplify
11771checking for the right Ruby version in software.")
11772 (home-page "https://github.com/janlelis/ruby_version")
11773 (license license:expat)))
11774
11775(define-public ruby-websocket-client-simple
11776 (package
11777 (name "ruby-websocket-client-simple")
11778 (version "0.6.1")
11779 (source (origin
11780 (method url-fetch)
11781 (uri (rubygems-uri "websocket-client-simple" version))
11782 (sha256
11783 (base32
11784 "1ypl4xvlh5c99zbn20sifv7gv04zi20ly464vsgikfrpn5f37bid"))))
11785 (build-system ruby-build-system)
11786 (arguments (list #:test-target "default"))
11787 (native-inputs (list ruby-eventmachine ruby-websocket-eventmachine-server))
11788 (propagated-inputs (list ruby-event-emitter ruby-websocket))
11789 (synopsis "Simple WebSocket client for Ruby")
11790 (description "This package provides a simple WebSocket client for Ruby.")
11791 (home-page "https://github.com/ruby-jp/websocket-client-simple")
11792 (license license:expat)))
11793
11794(define-public ruby-websocket-eventmachine-base
11795 (package
11796 (name "ruby-websocket-eventmachine-base")
11797 (version "1.2.0")
11798 (source (origin
11799 (method url-fetch)
11800 (uri (rubygems-uri "websocket-eventmachine-base" version))
11801 (sha256
11802 (base32
11803 "0wiz61mcwgs3k21cdr5l9b4jpg29gl6mflfampww2v525yc3hr1r"))))
11804 (build-system ruby-build-system)
11805 (arguments
11806 (list #:tests? #f)) ;no test suite
11807 (propagated-inputs (list ruby-eventmachine ruby-websocket
11808 ruby-websocket-native))
11809 (synopsis "WebSocket base for Ruby client and server")
11810 (description "This package provides a WebSocket base for a Ruby client and
11811server.")
11812 (home-page "https://github.com/imanel/websocket-eventmachine-base")
11813 (license license:expat)))
11814
11815(define-public ruby-websocket-eventmachine-server
11816 (package
11817 (name "ruby-websocket-eventmachine-server")
11818 (version "1.0.1")
11819 (source (origin
11820 (method url-fetch)
11821 (uri (rubygems-uri "websocket-eventmachine-server" version))
11822 (sha256
11823 (base32
11824 "0iqpzc8s028nck1flqaj784gvyn64wy1h3svpa4y2847wklg8sms"))))
11825 (build-system ruby-build-system)
11826 ;; TODO: The test suite requires Autobahn, not yet packaged in Guix.
11827 (arguments (list #:tests? #f))
11828 (propagated-inputs (list ruby-websocket-eventmachine-base))
11829 (synopsis "WebSocket server for Ruby")
11830 (description "This package provides a WebSocket server for Ruby.")
11831 (home-page "https://github.com/imanel/websocket-eventmachine-server")
11832 (license license:expat)))
11833
11834(define-public ruby-websocket-native
11835 (package
11836 (name "ruby-websocket-native")
11837 (version "1.0.0")
11838 (source (origin
11839 (method url-fetch)
11840 (uri (rubygems-uri "websocket-native" version))
11841 (sha256
11842 (base32
11843 "1kgvd3gyzh7hk0ddzn85jrs4csxm54qnvla95ldyn6rzgfbjchdn"))))
11844 (build-system ruby-build-system)
11845 (arguments
11846 (list #:test-target "spec"
11847 #:phases #~(modify-phases %standard-phases
11848 (add-before 'check 'disable-problematic-tests
11849 (lambda _
11850 (substitute* "spec/websocket_spec.rb"
11851 (("it \"should have mask_native defined\"" all)
11852 (string-append "x" all)))))
11853 (add-after 'build 'compile
11854 (lambda _
11855 (invoke "rake" "compile"))))))
11856 (native-inputs (list ruby-rake-compiler ruby-rspec))
11857 (synopsis "Native Ruby extension for the WebSocket gem")
11858 (description "This package provides a native extension that can increase
11859performance by about 25% compared to the pure Ruby WebSocket implementation.")
11860 (home-page "https://github.com/imanel/websocket-ruby-native")
11861 (license license:expat)))
11862
11863(define-public ruby-websocket-driver
11864 (package
11865 (name "ruby-websocket-driver")
11866 (version "0.7.1")
11867 (source
11868 (origin
11869 (method url-fetch)
11870 (uri (rubygems-uri "websocket-driver" version))
11871 (sha256
11872 (base32 "1bxamwqldmy98hxs5pqby3andws14hl36ch78g0s81gaz9b91nj2"))))
11873 (build-system ruby-build-system)
11874 (arguments
11875 '(#:tests? #f)) ; no included tests
11876 (propagated-inputs
11877 (list ruby-websocket-extensions))
11878 (synopsis "WebSocket protocol handler with pluggable I/O")
11879 (description
11880 "@code{websocket-driver} provides a complete implementation of the
11881WebSocket protocols that can be hooked up to any TCP library")
11882 (home-page "https://github.com/faye/websocket-driver-ruby")
11883 (license license:expat)))
11884
11885(define-public ruby-websocket-extensions
11886 (package
11887 (name "ruby-websocket-extensions")
11888 (version "0.1.3")
11889 (source
11890 (origin
11891 (method url-fetch)
11892 (uri (rubygems-uri "websocket-extensions" version))
11893 (sha256
11894 (base32
11895 "034sdr7fd34yag5l6y156rkbhiqgmy395m231dwhlpcswhs6d270"))))
11896 (build-system ruby-build-system)
11897 (arguments
11898 '(;; No included tests
11899 #:tests? #f))
11900 (synopsis "Generic extension manager for WebSocket connections")
11901 (description
11902 "@code{websocket-extensions} provides a container for registering
11903extension plugins.")
11904 (home-page "https://github.com/faye/websocket-extensions-ruby")
11905 (license license:expat)))
11906
11907(define-public ruby-domain-name
11908 (package
11909 (name "ruby-domain-name")
11910 (version "0.5.20190701")
11911 (source
11912 (origin
11913 (method url-fetch)
11914 (uri (rubygems-uri "domain_name" version))
11915 (sha256
11916 (base32 "0lcqjsmixjp52bnlgzh4lg9ppsk52x9hpwdjd53k8jnbah2602h0"))))
11917 (build-system ruby-build-system)
11918 (arguments
11919 `(#:phases
11920 (modify-phases %standard-phases
11921 (add-before 'check 'fix-versions
11922 (lambda _
11923 ;; Fix NameError that appears to already be fixed upstream.
11924 (substitute* "Rakefile"
11925 (("DomainName::VERSION")
11926 "Bundler::GemHelper.gemspec.version"))
11927 ;; Loosen unnecessarily strict test-unit version specification.
11928 (substitute* "domain_name.gemspec"
11929 (("<test-unit>.freeze, \\[\\\"~> 2.5.5") "<test-unit>, [\">0"))
11930 #t)))))
11931 (propagated-inputs
11932 (list ruby-unf))
11933 (native-inputs
11934 (list ruby-shoulda bundler ruby-test-unit))
11935 (synopsis "Domain name manipulation library")
11936 (description
11937 "@code{domain_name} is a Domain name manipulation library. It parses a
11938domain name ready for extracting the registered domain and TLD (Top Level
11939Domain). It can also be used for cookie domain validation based on the Public
11940Suffix List.")
11941 (home-page "https://github.com/knu/ruby-domain_name")
11942 (license license:bsd-2)))
11943
11944(define-public ruby-dotenv
11945 (package
11946 (name "ruby-dotenv")
11947 (version "3.1.7")
11948 (source (origin
11949 (method git-fetch) ;for the tests
11950 (uri (git-reference
11951 (url "https://github.com/bkeepers/dotenv")
11952 (commit (string-append "v" version))))
11953 (file-name (git-file-name name version))
11954 (sha256
11955 (base32
11956 "19j0acy12si537hwi4q54q8n5ycmlvfd2ik5y6r7jir6ww06l8yx"))))
11957 (build-system ruby-build-system)
11958 (arguments
11959 (list
11960 #:test-target "spec"
11961 #:phases
11962 #~(modify-phases %standard-phases
11963 (add-after 'unpack 'do-not-build-dotenv-rails
11964 (lambda _
11965 ;; The repository includes the definitions of two packages,
11966 ;; 'dotenv' and 'dotenv-rails'. Since we want to package them
11967 ;; separately, remove the dotenv-rails and associated Rake
11968 ;; tasks.
11969 (delete-file "dotenv-rails.gemspec")
11970 (delete-file "spec/dotenv/rails_spec.rb")
11971 (delete-file "spec/dotenv/log_subscriber_spec.rb")
11972 (substitute* "spec/spec_helper.rb"
11973 (("require \"dotenv\"" all)
11974 (string-append "require \"pathname\"\n" all)))
11975 (substitute* "Rakefile"
11976 (("DotenvRailsGemHelper.install_tasks name: \"dotenv-rails\"")
11977 "")
11978 ((", \"dotenv-rails:.*\"")
11979 ""))))
11980 (replace 'replace-git-ls-files
11981 (lambda _
11982 (substitute* "dotenv.gemspec"
11983 (("`git ls-files (README.md LICENSE lib bin) \\| ([^`]*`)"
11984 all files command)
11985 (string-append
11986 "`find " files " -type f | sort | " command))))))))
11987 (native-inputs (list ruby-standard ruby-rspec))
11988 (synopsis "Ruby library for setting environment variables")
11989 (description "Dotenv is a Ruby library for setting environment variables
11990defined in a @file{.env} file.")
11991 (home-page "https://github.com/bkeepers/dotenv")
11992 (license license:expat)))
11993
11994(define-public ruby-dotenv-rails
11995 (package
11996 (inherit ruby-dotenv)
11997 (name "ruby-dotenv-rails")
11998 (arguments
11999 (substitute-keyword-arguments (package-arguments ruby-dotenv)
12000 ((#:phases phases '%standard-phases)
12001 #~(modify-phases #$phases
12002 (delete 'do-not-build-dotenv-rails)
12003 (add-after 'unpack 'delete-Gemfile
12004 (lambda _
12005 ;; It defines extraneous dependencies; remove it.
12006 (delete-file "Gemfile")))
12007 (add-after 'unpack 'remove-extraneous-gemspec
12008 (lambda _
12009 (delete-file "dotenv.gemspec")
12010 (substitute* "Gemfile"
12011 ((".*\"dotenv\".*") ""))
12012 (substitute* "Rakefile"
12013 ;; Remove the dotenv-related Rake tasks.
12014 (("Bundler::GemHelper.install_tasks name: \"dotenv\"")
12015 "")
12016 (("\"dotenv:[^\"]*\", ")
12017 ""))))
12018 (replace 'replace-git-ls-files
12019 (lambda _
12020 (substitute* "dotenv-rails.gemspec"
12021 (("`git ls-files lib \\| grep rails`")
12022 "`find lib -type f | sort | grep rails`"))))))))
12023 (native-inputs (list ruby-rspec ruby-spring ruby-standard))
12024 (propagated-inputs (list ruby-dotenv ruby-railties))
12025 (synopsis "Ruby library for setting environment variables in Rails project")
12026 (description "Dotenv is a Ruby library for setting environment variables
12027defined in a @file{.env} file. This is the Rails variant, adapted for use
12028with Ruby on Rails projects.")))
12029
12030(define-public ruby-http-accept
12031 (package
12032 (name "ruby-http-accept")
12033 (version "2.2.0")
12034 (source (origin
12035 (method git-fetch) ;for the tests
12036 (uri (git-reference
12037 (url "https://github.com/socketry/http-accept")
12038 (commit (string-append "v" version))))
12039 (file-name (git-file-name name version))
12040 (sha256
12041 (base32
12042 "1d69cy12hqbcqrhw4dibvdq5pqklxsa59kih6pzl479nxq79rgs7"))))
12043 (build-system ruby-build-system)
12044 (arguments
12045 (list
12046 #:phases
12047 #~(modify-phases %standard-phases
12048 (add-after 'unpack 'remove-missing-key-directive
12049 ;; This seem to be a common problem in Ruby projects (see:
12050 ;; https://github.com/prawnpdf/ttfunk/issues/99).
12051 (lambda _
12052 (substitute* "http-accept.gemspec"
12053 ((".*spec.signing_key.*") ""))))
12054 (replace 'check
12055 (lambda* (#:key tests? #:allow-other-keys)
12056 (when tests?
12057 (invoke "rspec")))))))
12058 (native-inputs
12059 (list ruby-rspec
12060 ruby-covered))
12061 (synopsis "Parse Accept and Accept-Language HTTP headers")
12062 (description
12063 "This package provides a set of parsers for Accept and Accept-Language
12064HTTP headers.")
12065 (home-page "https://github.com/socketry/http-accept")
12066 (license license:expat)))
12067
12068(define-public ruby-http-accept-1
12069 (package
12070 (inherit ruby-http-accept)
12071 (version "1.7.0")
12072 (source (origin
12073 (method git-fetch) ;for the tests
12074 (uri (git-reference
12075 (url "https://github.com/ioquatix/http-accept")
12076 (commit (string-append "v" version))))
12077 (file-name (git-file-name "ruby-http-accept" version))
12078 (sha256
12079 (base32
12080 "1hnqmqpa135s3xgcvv30qzqm8zp88my1aj05m72d2q9cvc31g92z"))))))
12081
12082(define-public ruby-http-cookie
12083 (package
12084 (name "ruby-http-cookie")
12085 (version "1.0.5")
12086 (source
12087 (origin
12088 (method url-fetch)
12089 (uri (rubygems-uri "http-cookie" version))
12090 (sha256
12091 (base32
12092 "13rilvlv8kwbzqfb644qp6hrbsj82cbqmnzcvqip1p6vqx36sxbk"))))
12093 (build-system ruby-build-system)
12094 (arguments
12095 (list
12096 #:phases
12097 #~(modify-phases %standard-phases
12098 (add-before 'check 'add-dependency-to-bundler
12099 (lambda _
12100 ;; Fix NameError
12101 (substitute* "Rakefile"
12102 (("HTTP::Cookie::VERSION")
12103 "Bundler::GemHelper.gemspec.version")))))))
12104 (propagated-inputs
12105 (list ruby-domain-name))
12106 (native-inputs
12107 (list ruby-simplecov
12108 bundler
12109 ruby-sqlite3
12110 ruby-test-unit))
12111 (synopsis "Handle HTTP Cookies based on RFC 6265")
12112 (description
12113 "@code{HTTP::Cookie} is a Ruby library to handle HTTP Cookies based on
12114RFC 6265. It has been designed with security, standards compliance and
12115compatibility in mind, to behave just the same as today's major web browsers.
12116It has built-in support for the legacy @code{cookies.txt} and
12117@code{cookies.sqlite} formats of Mozilla Firefox.")
12118 (home-page "https://github.com/sparklemotion/http-cookie")
12119 (license license:expat)))
12120
12121(define-public ruby-httpclient
12122 (package
12123 (name "ruby-httpclient")
12124 (version "2.8.3")
12125 (source
12126 (origin
12127 (method url-fetch)
12128 (uri (rubygems-uri "httpclient" version))
12129 (sha256
12130 (base32
12131 "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99"))))
12132 (build-system ruby-build-system)
12133 (arguments
12134 '(;; TODO: Some tests currently fail
12135 ;; ------
12136 ;; 211 tests, 729 assertions, 13 failures, 4 errors, 0 pendings,
12137 ;; 2 omissions, 0 notifications
12138 ;; 91.866% passed
12139 ;; ------
12140 ;; 6.49 tests/s, 22.41 assertions/s
12141 #:tests? #f
12142 #:phases
12143 (modify-phases %standard-phases
12144 (replace 'check
12145 (lambda* (#:key tests? #:allow-other-keys)
12146 (if tests?
12147 (invoke "ruby"
12148 "-Ilib"
12149 "test/runner.rb")))))))
12150 (native-inputs
12151 (list ruby-rack))
12152 (synopsis
12153 "Make HTTP requests with support for HTTPS, Cookies, authentication and more")
12154 (description
12155 "The @code{httpclient} ruby library provides functionality related to
12156HTTP. Compared to the @code{net/http} library, @code{httpclient} also provides
12157Cookie, multithreading and authentication (digest, NTLM) support.
12158
12159Also provided is a @command{httpclient} command, which can perform HTTP
12160requests either using arguments or with an interactive prompt.")
12161 (home-page "https://github.com/nahi/httpclient")
12162 (license license:ruby)))
12163
12164(define-public ruby-ansi
12165 (package
12166 (name "ruby-ansi")
12167 (version "1.5.0")
12168 (source
12169 (origin
12170 (method git-fetch)
12171 ;; Fetch from GitHub as the gem does not contain testing code.
12172 (uri (git-reference
12173 (url "https://github.com/rubyworks/ansi")
12174 (commit version)))
12175 (file-name (git-file-name name version))
12176 (sha256
12177 (base32
12178 "1wsz7xxwl3vkh277jb7fd7akqnqqgbvalxzpjwniiqk8ghfprbi5"))))
12179 (build-system ruby-build-system)
12180 (arguments
12181 `(#:phases
12182 (modify-phases %standard-phases
12183 ;; Disable testing to break the cycle ansi, ae, ansi, as well as the
12184 ;; cycle ansi, qed, ansi. Instead simply test that the library can
12185 ;; be require'd.
12186 (replace 'check
12187 (lambda _
12188 (invoke "ruby" "-Ilib" "-r" "ansi")))
12189 (add-before 'validate-runpath 'replace-broken-symlink
12190 (lambda* (#:key outputs #:allow-other-keys)
12191 (let* ((out (assoc-ref outputs "out"))
12192 (file (string-append
12193 out "/lib/ruby/vendor_ruby/gems/ansi-"
12194 ,version "/lib/ansi.yml")))
12195 ;; XXX: This symlink is broken since ruby 2.4.
12196 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
12197 (delete-file file)
12198 (symlink "../.index" file)))))))
12199 (synopsis "ANSI escape code related libraries")
12200 (description
12201 "This package is a collection of ANSI escape code related libraries
12202enabling ANSI colorization and stylization of console output. Included in the
12203library are the @code{Code} module, which defines ANSI codes as constants and
12204methods, a @code{Mixin} module for including color methods, a @code{Logger}, a
12205@code{ProgressBar}, and a @code{String} subclass. The library also includes a
12206@code{Terminal} module which provides information about the current output
12207device.")
12208 (home-page "https://rubyworks.github.io/ansi/")
12209 (license license:bsd-2)))
12210
12211(define-public ruby-systemu
12212 (package
12213 (name "ruby-systemu")
12214 (version "2.6.5")
12215 (source
12216 (origin
12217 (method url-fetch)
12218 (uri (rubygems-uri "systemu" version))
12219 (sha256
12220 (base32
12221 "0gmkbakhfci5wnmbfx5i54f25j9zsvbw858yg3jjhfs5n4ad1xq1"))))
12222 (build-system ruby-build-system)
12223 (arguments
12224 `(#:phases
12225 (modify-phases %standard-phases
12226 (add-before 'check 'set-version
12227 (lambda _
12228 (setenv "VERSION" ,version))))))
12229 (synopsis "Capture of stdout/stderr and handling of child processes")
12230 (description
12231 "Systemu can be used on any platform to return status, stdout, and stderr
12232of any command. Unlike other methods like @code{open3} and @code{popen4}
12233there is no danger of full pipes or threading issues hanging your process or
12234subprocess.")
12235 (home-page "https://github.com/ahoward/systemu")
12236 (license license:ruby)))
12237
12238(define-public ruby-bcrypt
12239 (package
12240 (name "ruby-bcrypt")
12241 (version "3.1.20")
12242 ;; FIXME: Unbundle the bcrypt library used.
12243 (source
12244 (origin
12245 (method git-fetch)
12246 (uri (git-reference
12247 (url "https://github.com/bcrypt-ruby/bcrypt-ruby")
12248 (commit (string-append "v" version))))
12249 (file-name (git-file-name name version))
12250 (sha256
12251 (base32 "0q6h8kmjb34hg6qjv31v374n3cavv00drsfyzv6nybdwipgyg62i"))))
12252 (build-system ruby-build-system)
12253 (arguments (list #:test-target "default")) ;compile + spec
12254 (native-inputs (list ruby-rake-compiler ruby-rspec))
12255 (synopsis "Ruby bcrypt wrapper")
12256 (description "This Ruby library provides a simple wrapper to bcrypt, a
12257secure hash algorithm for hashing passwords.")
12258 (home-page "https://github.com/bcrypt-ruby/bcrypt-ruby")
12259 (license license:expat)))
12260
12261(define-public ruby-bcrypt-pbkdf
12262 (package
12263 (name "ruby-bcrypt-pbkdf")
12264 (version "1.1.0")
12265 (source (origin
12266 (method url-fetch)
12267 (uri (rubygems-uri "bcrypt_pbkdf" version))
12268 (sha256
12269 (base32
12270 "0ndamfaivnkhc6hy0yqyk2gkwr6f3bz6216lh74hsiiyk3axz445"))))
12271 (build-system ruby-build-system)
12272 (arguments
12273 (list #:phases #~(modify-phases %standard-phases
12274 (add-before 'build 'compile
12275 (lambda _
12276 (invoke "rake" "compile"))))))
12277 (native-inputs (list ruby-minitest ruby-rake-compiler
12278 ruby-rake-compiler-dock ruby-rdoc))
12279 (synopsis "Reading password encrypted Ed25519 keys in Ruby")
12280 (description
12281 "This gem implements @samp{bcrypt_pbkdf}, which is a variant of
12282PBKDF2 (Password-Based Key Derivation Function 2) with bcrypt-based
12283pseudorandom function. This is currently used by @samp{net-ssh} to
12284read password encrypted Ed25519 keys.")
12285 (home-page "https://github.com/net-ssh/bcrypt_pbkdf-ruby")
12286 (license license:expat)))
12287
12288(define-public ruby-bio-commandeer
12289 (package
12290 (name "ruby-bio-commandeer")
12291 (version "0.4.0")
12292 (source
12293 (origin
12294 (method url-fetch)
12295 (uri (rubygems-uri "bio-commandeer" version))
12296 (sha256
12297 (base32
12298 "0khpfw1yl5l3d2m8nxpkk32ybc4c3pa5hic3agd160jdfjjjnlni"))))
12299 (build-system ruby-build-system)
12300 (arguments
12301 `(#:phases
12302 (modify-phases %standard-phases
12303 (replace 'check
12304 ;; Run test without calling 'rake' so that jeweler is
12305 ;; not required as an input.
12306 (lambda _
12307 (invoke "rspec" "spec/bio-commandeer_spec.rb"))))))
12308 (propagated-inputs
12309 (list ruby-bio-logger ruby-systemu))
12310 (native-inputs
12311 (list bundler ruby-rspec))
12312 (synopsis "Simplified running of shell commands from within Ruby")
12313 (description
12314 "Bio-commandeer provides an opinionated method of running shell commands
12315from within Ruby. The advantage of bio-commandeer over other methods of
12316running external commands is that when something goes wrong, messages printed
12317to the @code{STDOUT} and @code{STDERR} streams are reported, giving extra
12318detail to ease debugging.")
12319 (home-page "https://github.com/wwood/bioruby-commandeer")
12320 (license license:expat)))
12321
12322(define-public ruby-rubytest
12323 (package
12324 (name "ruby-rubytest")
12325 (version "0.8.1")
12326 (source
12327 (origin
12328 (method url-fetch)
12329 (uri (rubygems-uri "rubytest" version))
12330 (sha256
12331 (base32
12332 "19jydsdnkl81i9dhdcr4dc34j0ilm68ff2ngnka1hi38xiw4p5qz"))))
12333 (build-system ruby-build-system)
12334 (arguments
12335 ;; Disable regular testing to break the cycle rubytest, qed, brass,
12336 ;; rubytest, as well as the cycle rubytest, qed, ansi, rubytest. Instead
12337 ;; simply test that the library can be require'd.
12338 `(#:phases
12339 (modify-phases %standard-phases
12340 (replace 'check
12341 (lambda _
12342 (invoke "ruby" "-Ilib" "-r" "rubytest"))))))
12343 (propagated-inputs
12344 (list ruby-ansi))
12345 (synopsis "Universal test harness for Ruby")
12346 (description
12347 "Rubytest is a testing meta-framework for Ruby. It can handle any
12348compliant test framework and can run tests from multiple frameworks in a
12349single pass.")
12350 (home-page "https://rubyworks.github.io/rubytest")
12351 (license license:bsd-2)))
12352
12353(define-public ruby-brass
12354 (package
12355 (name "ruby-brass")
12356 (version "1.2.1")
12357 (source
12358 (origin
12359 (method url-fetch)
12360 (uri (rubygems-uri "brass" version))
12361 (sha256
12362 (base32
12363 "154lp8rp1vmg60ri1j4cb8hqlw37z7bn575h899v8hzxwi11sxka"))))
12364 (build-system ruby-build-system)
12365 (arguments
12366 ;; Disable tests to break the cycle brass, lemon, ae, qed, brass.
12367 ;; Instead simply test that the library can be require'd.
12368 `(#:phases
12369 (modify-phases %standard-phases
12370 (replace 'check
12371 (lambda* (#:key tests? #:allow-other-keys)
12372 (when tests?
12373 (invoke "ruby" "-Ilib" "-r" "brass")))))))
12374 (synopsis "Basic foundational assertions framework")
12375 (description
12376 "BRASS (Bare-Metal Ruby Assertion System Standard) is a basic
12377foundational assertions framework for other assertion and test frameworks to
12378make use of.")
12379 (home-page "https://rubyworks.github.io/brass")
12380 (license license:bsd-2)))
12381
12382(define-public ruby-qed
12383 (package
12384 (name "ruby-qed")
12385 (version "2.9.2")
12386 (source
12387 (origin
12388 (method url-fetch)
12389 (uri (rubygems-uri "qed" version))
12390 (sha256
12391 (base32
12392 "03h4lmlxpcya8j7s2cnyscqlx8v3xl1xgsw5y1wk1scxcgz2vbmr"))))
12393 (build-system ruby-build-system)
12394 (arguments
12395 `(#:phases
12396 (modify-phases %standard-phases
12397 (replace 'check
12398 (lambda* (#:key tests? #:allow-other-keys)
12399 (when tests?
12400 (invoke "ruby" "-Ilib" "bin/qed")))))))
12401 (native-inputs
12402 (list ruby-ae-bootstrap))
12403 (propagated-inputs
12404 (list ruby-ansi ruby-brass))
12405 (synopsis "Test framework utilizing literate programming techniques")
12406 (description
12407 "@dfn{Quality Ensured Demonstrations} (QED) is a test framework for
12408@dfn{Test Driven Development} (TDD) and @dfn{Behaviour Driven
12409Development} (BDD) utilizing Literate Programming techniques. QED sits
12410somewhere between lower-level testing tools like @code{Test::Unit} and
12411requirement specifications systems like Cucumber.")
12412 (home-page "https://rubyworks.github.io/qed")
12413 (license license:bsd-2)))
12414
12415(define-public ruby-que
12416 (package
12417 (name "ruby-que")
12418 (version "1.0.0.beta3")
12419 (source
12420 (origin
12421 (method url-fetch)
12422 (uri (rubygems-uri "que" version))
12423 (sha256
12424 (base32
12425 "0gr9pb814d4qj3ds98g6cjrdk7wv0yg8aqbm7c1lmgl87jkg8q04"))))
12426 (build-system ruby-build-system)
12427 (arguments
12428 '(#:tests? #f)) ; No included tests
12429 (synopsis "Job queue using PostgreSQL written in Ruby")
12430 (description
12431 "This package provides a job queue that uses PostgreSQL for storing jobs
12432and locking between worker processes.")
12433 (home-page "https://github.com/chanks/que")
12434 (license license:expat)))
12435
12436(define-public ruby-queue-classic
12437 (package
12438 (name "ruby-queue-classic")
12439 (version "4.0.0")
12440 (source (origin
12441 (method url-fetch)
12442 (uri (rubygems-uri "queue_classic" version))
12443 (sha256
12444 (base32
12445 "0npyhajf2fc80apkw9s2kj0n254w5lcl4xpjidg5d5w1fb19abh6"))))
12446 (build-system ruby-build-system)
12447 (arguments (list #:tests? #f)) ;tests require a postgresql server
12448 (native-inputs (list ruby-activerecord ruby-minitest-reporters))
12449 (propagated-inputs (list ruby-pg))
12450 (synopsis "Queuing library for Ruby")
12451 (description "@code{queue_classic} is a queuing library for Ruby
12452applications (Rails, Sinatra, etc.) @code{queue_classic} features
12453asynchronous job polling, database maintained locks and has a single
12454dependency, @code{pg}.")
12455 (home-page "https://github.com/QueueClassic/queue_classic")
12456 (license license:expat)))
12457
12458(define-public ruby-pairing-heap
12459 (package
12460 (name "ruby-pairing-heap")
12461 (version "3.1.0")
12462 (source (origin
12463 (method url-fetch)
12464 (uri (rubygems-uri "pairing_heap" version))
12465 (sha256
12466 (base32
12467 "059kqpw53cancnp0bp7y1s74y1955riw33w3lqfbnms4b4mdh5zj"))))
12468 (build-system ruby-build-system)
12469 (arguments
12470 (list
12471 #:phases
12472 #~(modify-phases %standard-phases
12473 (add-after 'unpack 'patch
12474 (lambda _
12475 (substitute* "Rakefile"
12476 (("require \"standard/rake\"") "")
12477 ((":\"standard:fix\",") "")))))))
12478 (synopsis "Priority queue in pure Ruby")
12479 (description "This package provides a performant priority queue in pure
12480ruby with support for changing priority using pairing heap data structure")
12481 (home-page "https://github.com/mhib/pairing_heap")
12482 (license license:expat)))
12483
12484(define-public ruby-ae
12485 (package
12486 (name "ruby-ae")
12487 (version "1.8.2")
12488 (source
12489 (origin
12490 (method git-fetch)
12491 ;; Fetch from github so tests are included.
12492 (uri (git-reference
12493 (url "https://github.com/rubyworks/ae")
12494 (commit version)))
12495 (file-name (git-file-name name version))
12496 (sha256
12497 (base32
12498 "11299jj5ma8mi7b4majkyjy70y6zlqpgl8aql1c5lvfjavlpwmlp"))))
12499 (build-system ruby-build-system)
12500 (arguments
12501 `(#:phases
12502 (modify-phases %standard-phases
12503 (replace 'check
12504 (lambda* (#:key tests? #:allow-other-keys)
12505 (when tests?
12506 (invoke "qed"))))
12507 (add-before 'validate-runpath 'replace-broken-symlink
12508 (lambda* (#:key outputs #:allow-other-keys)
12509 (let* ((out (assoc-ref outputs "out"))
12510 (file (string-append
12511 out "/lib/ruby/vendor_ruby/gems/ae-"
12512 ,version "/lib/ae.yml")))
12513 ;; XXX: This symlink is broken since ruby 2.4.
12514 ;; https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00034.html
12515 (delete-file file)
12516 (symlink "../.index" file)))))))
12517 (propagated-inputs
12518 (list ruby-ansi))
12519 (native-inputs
12520 (list ruby-qed))
12521 (synopsis "Assertions library")
12522 (description
12523 "Assertive Expressive (AE) is an assertions library specifically designed
12524for reuse by other test frameworks.")
12525 (home-page "https://rubyworks.github.io/ae/")
12526 (license license:bsd-2)))
12527
12528(define-public ruby-ae-bootstrap
12529 (hidden-package
12530 (package/inherit ruby-ae
12531 (arguments
12532 (substitute-keyword-arguments
12533 (package-arguments ruby-ae)
12534 ((#:tests? _ #t) #f)))
12535 (native-inputs '()))))
12536
12537(define-public ruby-lemon
12538 (package
12539 (name "ruby-lemon")
12540 (version "0.9.1")
12541 (source
12542 (origin
12543 (method url-fetch)
12544 (uri (rubygems-uri "lemon" version))
12545 (sha256
12546 (base32
12547 "0gqhpgjavgpvx23rqpfqcv3d5bs8gc7lr9yvj8kxgp7mfbdc2jcm"))))
12548 (build-system ruby-build-system)
12549 (arguments
12550 `(#:phases
12551 (modify-phases %standard-phases
12552 (replace 'check (lambda _ (invoke "qed"))))))
12553 (propagated-inputs
12554 (list ruby-ae ruby-ansi ruby-rubytest))
12555 (native-inputs
12556 (list ruby-qed))
12557 (synopsis "Test framework correlating code structure and test unit")
12558 (description
12559 "Lemon is a unit testing framework that enforces highly formal
12560case-to-class and unit-to-method test construction. This enforcement can help
12561focus concern on individual units of behavior.")
12562 (home-page "https://rubyworks.github.io/lemon")
12563 (license license:bsd-2)))
12564
12565(define-public ruby-rubytest-cli
12566 (package
12567 (name "ruby-rubytest-cli")
12568 (version "0.2.0")
12569 (source
12570 (origin
12571 (method url-fetch)
12572 (uri (rubygems-uri "rubytest-cli" version))
12573 (sha256
12574 (base32
12575 "0n7hv4k1ba4fm3i98c6ydbsqhkxgbp52mhi70ba1x3mqzfvk438p"))))
12576 (build-system ruby-build-system)
12577 (arguments
12578 `(#:tests? #f)) ; no tests
12579 (propagated-inputs
12580 (list ruby-ansi ruby-rubytest))
12581 (synopsis "Command-line interface for rubytest")
12582 (description
12583 "Rubytest CLI is a command-line interface for running tests for
12584Rubytest-based test frameworks. It provides the @code{rubytest} executable.")
12585 (home-page "https://rubyworks.github.io/rubytest-cli")
12586 (license license:bsd-2)))
12587
12588(define-public ruby-hashery
12589 (package
12590 (name "ruby-hashery")
12591 (version "2.1.2")
12592 (source
12593 (origin
12594 (method url-fetch)
12595 (uri (rubygems-uri "hashery" version))
12596 (sha256
12597 (base32
12598 "0qj8815bf7q6q7llm5rzdz279gzmpqmqqicxnzv066a020iwqffj"))))
12599 (build-system ruby-build-system)
12600 (arguments
12601 `(#:phases
12602 (modify-phases %standard-phases
12603 (replace 'check
12604 (lambda _
12605 (invoke "qed")
12606 (invoke "rubytest" "-Ilib" "-Itest" "test/"))))))
12607 (native-inputs
12608 (list ruby-rubytest-cli ruby-qed ruby-lemon))
12609 (synopsis "Hash-like classes with extra features")
12610 (description
12611 "The Hashery is a tight collection of @code{Hash}-like classes.
12612Included are the auto-sorting @code{Dictionary} class, the efficient
12613@code{LRUHash}, the flexible @code{OpenHash} and the convenient
12614@code{KeyHash}. Nearly every class is a subclass of the @code{CRUDHash} which
12615defines a CRUD (Create, Read, Update and Delete) model on top of Ruby's
12616standard @code{Hash} making it possible to subclass and augment to fit any
12617specific use case.")
12618 (home-page "https://rubyworks.github.io/hashery")
12619 (license license:bsd-2)))
12620
12621(define-public ruby-rc4
12622 (package
12623 (name "ruby-rc4")
12624 (version "0.1.5")
12625 (source
12626 (origin
12627 (method url-fetch)
12628 (uri (rubygems-uri "ruby-rc4" version))
12629 (sha256
12630 (base32
12631 "00vci475258mmbvsdqkmqadlwn6gj9m01sp7b5a3zd90knil1k00"))))
12632 (build-system ruby-build-system)
12633 (arguments
12634 `(#:phases
12635 (modify-phases %standard-phases
12636 (replace 'check
12637 (lambda _
12638 (invoke "rspec" "spec/rc4_spec.rb"))))))
12639 (native-inputs
12640 (list ruby-rspec-2))
12641 (synopsis "Implementation of the RC4 algorithm")
12642 (description
12643 "RubyRC4 is a pure Ruby implementation of the RC4 algorithm.")
12644 (home-page "https://github.com/caiges/Ruby-RC4")
12645 (license license:expat)))
12646
12647(define-public ruby-afm
12648 (package
12649 (name "ruby-afm")
12650 (version "0.2.2")
12651 (source
12652 (origin
12653 (method url-fetch)
12654 (uri (rubygems-uri "afm" version))
12655 (sha256
12656 (base32
12657 "06kj9hgd0z8pj27bxp2diwqh6fv7qhwwm17z64rhdc4sfn76jgn8"))))
12658 (build-system ruby-build-system)
12659 (native-inputs
12660 (list bundler))
12661 (synopsis "Read Adobe Font Metrics (afm) files")
12662 (description
12663 "This library provides methods to read @dfn{Adobe Font Metrics} (afm)
12664files and use the data therein.")
12665 (home-page "https://github.com/halfbyte/afm")
12666 (license license:expat)))
12667
12668(define-public ruby-ascii85
12669 (package
12670 (name "ruby-ascii85")
12671 (version "1.0.3")
12672 (source
12673 (origin
12674 (method url-fetch)
12675 (uri (rubygems-uri "Ascii85" version))
12676 (sha256
12677 (base32
12678 "0658m37jjjn6drzqg1gk4p6c205mgp7g1jh2d00n4ngghgmz5qvs"))))
12679 (build-system ruby-build-system)
12680 (native-inputs
12681 (list bundler))
12682 (synopsis "Encode and decode Ascii85 binary-to-text encoding")
12683 (description
12684 "This library provides methods to encode and decode Ascii85
12685binary-to-text encoding. The main modern use of Ascii85 is in PostScript and
12686@dfn{Portable Document Format} (PDF) file formats.")
12687 (home-page "https://github.com/datawraith/ascii85gem")
12688 (license license:expat)))
12689
12690(define-public ruby-ttfunk
12691 (package
12692 (name "ruby-ttfunk")
12693 (version "1.7.0")
12694 (source
12695 (origin
12696 (method git-fetch)
12697 ;; Fetch from github as the gem does not contain testing code.
12698 (uri (git-reference
12699 (url "https://github.com/prawnpdf/ttfunk")
12700 (commit version)))
12701 (file-name (git-file-name name version))
12702 (sha256
12703 (base32
12704 "1jyxn928mpyb1sikjd93s3v8fmh33232pq41ziaph513j7am6fi5"))))
12705 (build-system ruby-build-system)
12706 (arguments
12707 (list #:test-target "spec" ;avoid the rubocop target
12708 #:phases
12709 #~(modify-phases %standard-phases
12710 (add-after 'unpack 'remove-missing-key-directive
12711 ;; This seem to be a common problem in Ruby projects (see:
12712 ;; https://github.com/prawnpdf/ttfunk/issues/99).
12713 (lambda _
12714 (substitute* "ttfunk.gemspec"
12715 ((".*spec.signing_key.*") "")))))))
12716 (native-inputs (list ruby-prawn-dev))
12717 (synopsis "Font metrics parser for the Prawn PDF generator")
12718 (description
12719 "TTFunk is a TrueType font parser written in pure Ruby. It is used as
12720part of the Prawn PDF generator.")
12721 (home-page "https://github.com/prawnpdf/ttfunk")
12722 ;; From the README: "Matz's terms for Ruby, GPLv2, or GPLv3. See LICENSE
12723 ;; for details."
12724 (license %prawn-project-licenses)))
12725
12726(define-public ruby-puma
12727 (package
12728 (name "ruby-puma")
12729 (version "6.6.0")
12730 (source
12731 (origin
12732 (method git-fetch) ;for tests
12733 (uri (git-reference
12734 (url "https://github.com/puma/puma")
12735 (commit (string-append "v" version))))
12736 (file-name (git-file-name name version))
12737 (sha256
12738 (base32
12739 "1pdd7s403pi4y75s1sb4jkghhmm2w9zcqifj7z7yx4z0qfs7lvzv"))))
12740 (build-system ruby-build-system)
12741 (arguments
12742 (list
12743 #:phases
12744 #~(modify-phases %standard-phases
12745 (add-after 'unpack 'patch-Gemfile
12746 (lambda _
12747 (substitute* "Gemfile"
12748 (("gem \"rake-compiler\".*")
12749 "gem 'rake-compiler'\n"))))
12750 (add-after 'unpack 'disable-rubocop
12751 (lambda _
12752 (setenv "PUMA_NO_RUBOCOP" "1")))
12753 (add-after 'unpack 'use-rack-2
12754 (lambda _
12755 (setenv "PUMA_CI_RACK" "rack2")
12756 (setenv "PUMA_CI_RACK_2" "1")))
12757 (add-before 'build 'increase-resource-limits
12758 (lambda _
12759 ;; The test suite requires a higher number of open files. Try
12760 ;; increasing the soft resource limit of max open files to 2048,
12761 ;; or equal to the hard limit, whichever is lower.
12762 (call-with-values (lambda () (getrlimit 'nofile))
12763 (lambda (soft hard)
12764 (when (and soft (< soft 2048))
12765 (if hard
12766 (setrlimit 'nofile (min hard 2048) hard)
12767 (setrlimit 'nofile 2048 #f))
12768 (format
12769 #t "increased maximum number of open files from ~d to ~d~%"
12770 soft (if hard (min hard 2048) 2048)))))))
12771 (add-before 'build 'fix-gemspec
12772 (lambda _
12773 (substitute* "puma.gemspec"
12774 (("`git ls-files -- bin docs ext lib tools`")
12775 "`find bin docs ext lib tools -type f |sort`"))))
12776 (delete 'check) ;moved after install
12777 (add-after 'install 'check
12778 (lambda* (#:key tests? #:allow-other-keys)
12779 (when tests?
12780 (invoke "bundle" "exec" "rake" "test"))))
12781 (add-after 'install 'delete-mkmf.log
12782 (lambda _
12783 ;; Rubygems installs build log files that embed volatile file
12784 ;; names (see:
12785 ;; https://github.com/rubygems/rubygems/issues/6259).
12786 (for-each delete-file (find-files #$output "^mkmf\\.log$"))))
12787 (add-before 'check 'disable-problematic-tests
12788 (lambda _
12789 (let-syntax ((skip-tests
12790 (syntax-rules ()
12791 ((_ file test ...)
12792 (substitute* file
12793 (((string-append "def " test ".*") all)
12794 (string-append
12795 all " skip('fails on guix')\n")) ...)))))
12796 ;; The test failures were reported at:
12797 ;; https://github.com/puma/puma/issues/3093, but appear to be
12798 ;; caused by the Guix build container, perhaps the lack of
12799 ;; zombie process reaping (see:
12800 ;; https://issues.guix.gnu.org/30948).
12801 ;; All the tests in the 'test_worker_gem_independence.rb'
12802 ;; module fail with "Expected false to be truthy.".
12803 (delete-file "test/test_worker_gem_independence.rb")
12804 (skip-tests "test/test_integration_ssl_session.rb"
12805 ;; The TLS 1.2 test fails for unknown reasons.
12806 "test_off_tls1_2")
12807 (skip-tests "test/test_integration_cluster.rb"
12808 "test_fork_worker_on_refork"
12809 "test_hot_restart_does_not_drop_connections"
12810 "test_culling_strategy_oldest_fork_worker"
12811 "test_usr1_fork_worker")
12812 (skip-tests "test/test_integration_pumactl.rb"
12813 "test_refork_cluster")
12814 ;; The Openssl certificate has expired, causing these tests to fail.
12815 (skip-tests "test/test_puma_server_ssl.rb"
12816 "test_verify_fail_if_client_expired_cert"
12817 "test_verify_client_cert"
12818 "test_server_ssl_with_cert_pem_and_key_pem")
12819 (skip-tests "test/test_integration_ssl.rb"
12820 "test_ssl_run_with_curl_client")
12821 (skip-tests "test/test_web_concurrency_auto.rb" "\
12822test_web_concurrency_with_concurrent_ruby_unavailable")
12823 (skip-tests "test/helpers/integration.rb"
12824 "test_puma_started_log_writing"))))
12825 (add-before 'check 'relax-test-case-timeout
12826 (lambda _
12827 ;; The default value is 45 s and easily causes timeouts.
12828 (setenv "TEST_CASE_TIMEOUT" "600")))
12829 (add-before 'check 'set-home
12830 (lambda _
12831 ;; Some tests fail if the cannot write to HOME.
12832 (setenv "HOME" "/tmp")))
12833 (add-before 'check 'set-paths
12834 (lambda _
12835 ;; The test suite requires the 'puma' command to be on PATH.
12836 (setenv "PATH" (string-append (getenv "PATH") ":"
12837 #$output "/bin"))
12838 (setenv "GEM_PATH" (string-append
12839 (getenv "GEM_PATH") ":"
12840 #$output "/lib/ruby/vendor_ruby")))))))
12841 (native-inputs
12842 (list bundler
12843 curl
12844 ruby-json
12845 ruby-localhost
12846 ruby-m
12847 ruby-minitest-proveit
12848 ruby-minitest-retry
12849 ruby-minitest-stub-const
12850 ruby-rack
12851 ruby-rackup-1
12852 ruby-rake-compiler
12853 ruby-webrick))
12854 (inputs
12855 (list openssl
12856 ruby-nio4r))
12857 (propagated-inputs
12858 (list ruby-concurrent-ruby))
12859 (synopsis "Simple, concurrent HTTP server for Ruby/Rack")
12860 (description
12861 "Puma is a simple, fast, threaded, and highly concurrent HTTP 1.1 server
12862for Ruby/Rack applications. Puma is intended for use in both development and
12863production environments. In order to get the best throughput, it is highly
12864recommended that you use a Ruby implementation with real threads like Rubinius
12865or JRuby.")
12866 (home-page "https://puma.io/")
12867 (license license:expat)))
12868
12869(define-public ruby-hoe-git
12870 (package
12871 (name "ruby-hoe-git")
12872 (version "1.6.0")
12873 (source
12874 (origin
12875 (method url-fetch)
12876 (uri (rubygems-uri "hoe-git" version))
12877 (sha256
12878 (base32
12879 "10jmmbjm0lkglwxbn4rpqghgg1ipjxrswm117n50adhmy8yij650"))))
12880 (build-system ruby-build-system)
12881 (propagated-inputs
12882 (list ruby-hoe-3))
12883 (synopsis "Hoe plugins for tighter Git integration")
12884 (description
12885 "This package provides a set of Hoe plugins for tighter Git integration.
12886It provides tasks to automate release tagging and pushing and changelog
12887generation.")
12888 (home-page "https://github.com/jbarnette/hoe-git")
12889 (license license:expat)))
12890
12891(define-public ruby-hoe-markdown
12892 (package
12893 (name "ruby-hoe-markdown")
12894 (version "1.4.0")
12895 (home-page "https://github.com/flavorjones/hoe-markdown")
12896 (source
12897 (origin
12898 (method git-fetch)
12899 (uri (git-reference
12900 (url home-page)
12901 (commit (string-append "v" version))))
12902 (file-name (git-file-name name version))
12903 (sha256
12904 (base32 "0wb0yjdx9gx9r0cahpx42pblvglgh1i9pdfxjavq7f40nan2g076"))))
12905 (build-system ruby-build-system)
12906 (arguments
12907 '(#:test-target "spec"
12908 #:phases (modify-phases %standard-phases
12909 (add-before 'check 'disable-bundler-dependency
12910 (lambda _
12911 (substitute* "spec/spec_helper.rb"
12912 (("require.*bundler/setup.*")
12913 "")))))))
12914 (native-inputs
12915 (list ruby-rspec))
12916 (propagated-inputs
12917 (list ruby-rake))
12918 (synopsis "Hoe plugin with Markdown helpers")
12919 (description
12920 "This package provides a Hoe plugin with various Markdown helpers, which
12921can be used to e.g. hyperlink Markdown documentation between project files.")
12922 (license license:expat)))
12923
12924(define-public ruby-sequel
12925 (package
12926 (name "ruby-sequel")
12927 (version "5.47.0")
12928 (source
12929 (origin
12930 (method url-fetch)
12931 (uri (rubygems-uri "sequel" version))
12932 (sha256
12933 (base32
12934 "03pmhj4kc3ga75wy397l57bvd18jxxmrk3qsznjw93b993qgvj3z"))))
12935 (build-system ruby-build-system)
12936 (arguments
12937 '(#:tests? #f)) ; Avoid dependency loop with ruby-minitest-hooks.
12938 (synopsis "Database toolkit for Ruby")
12939 (description "Sequel provides thread safety, connection pooling and a
12940concise DSL for constructing SQL queries and table schemas. It includes a
12941comprehensive ORM layer for mapping records to Ruby objects and handling
12942associated records.")
12943 (home-page "https://sequel.jeremyevans.net")
12944 (license license:expat)))
12945
12946(define-public ruby-timecop
12947 (package
12948 (name "ruby-timecop")
12949 (version "0.9.6")
12950 (source
12951 (origin
12952 (method url-fetch)
12953 (uri (rubygems-uri "timecop" version))
12954 (sha256
12955 (base32
12956 "0dlx4gx0zh836i7nzna03xdl7fc233s5z6plnr6k3kw46ah8d1fc"))))
12957 (build-system ruby-build-system)
12958 (arguments
12959 (list
12960 #:phases
12961 #~(modify-phases %standard-phases
12962 (add-before 'check 'set-check-rubylib
12963 (lambda _
12964 ;; Set RUBYLIB so timecop tests finds its own lib.
12965 (setenv "RUBYLIB" "lib"))))))
12966 (native-inputs
12967 (list bundler
12968 ruby-minitest-rg
12969 ruby-mocha
12970 ruby-activesupport
12971 ruby-pry))
12972 (synopsis "Test mocks for time-dependent functions")
12973 (description
12974 "Timecop provides \"time travel\" and \"time freezing\" capabilities,
12975making it easier to test time-dependent code. It provides a unified method to
12976mock @code{Time.now}, @code{Date.today}, and @code{DateTime.now} in a single
12977call.")
12978 (home-page "https://github.com/travisjeffery/timecop")
12979 (license license:expat)))
12980
12981(define-public ruby-concurrent-ruby
12982 (package
12983 (name "ruby-concurrent-ruby")
12984 (version "1.3.5")
12985 (source (origin
12986 (method git-fetch)
12987 (uri (git-reference ;for tests
12988 (url "https://github.com/ruby-concurrency/concurrent-ruby")
12989 (commit (string-append "v" version))))
12990 (file-name (git-file-name name version))
12991 (sha256
12992 (base32
12993 "0f0apna8k9cwnpa4lddwimywxzznrd4rjv4m0lka2i54z49iky73"))))
12994 (build-system ruby-build-system)
12995 (arguments
12996 (list
12997 #:tests? #f ;the test suite is run in ruby-concurrent-ruby-edge
12998 #:phases #~(modify-phases %standard-phases
12999 (add-after 'unpack 'delete-unwanted-gemspecs
13000 (lambda _
13001 (for-each delete-file
13002 '("concurrent-ruby-ext.gemspec"
13003 "concurrent-ruby-edge.gemspec"))))
13004 (add-after 'unpack 'do-not-install-concurrent_ruby.jar
13005 (lambda _
13006 ;; This file is only built when building the Java
13007 ;; extension.
13008 (substitute* "concurrent-ruby.gemspec"
13009 (("'lib/concurrent-ruby/concurrent/concurrent_ruby.jar'")
13010 "")))))))
13011 (synopsis "Concurrency library for Ruby")
13012 (description "Concurrent Ruby includes concurrency tools such as agents,
13013futures, promises, thread pools, actors, supervisors, and more. It is
13014inspired by Erlang, Clojure, Go, JavaScript, actors, and classic concurrency
13015patterns.")
13016 (home-page "https://github.com/ruby-concurrency/concurrent-ruby")
13017 (license license:expat)))
13018
13019;;; The 'gem' is called 'concurrent-ruby'; reversing its name was confusing
13020;;; and failed to be picked by the gem importer (which led to this newer
13021;;; package).
13022(define-public ruby-concurrent
13023 (deprecated-package "ruby-concurrent" ruby-concurrent-ruby))
13024
13025(define-public ruby-concurrent-ruby-ext
13026 (package
13027 (inherit ruby-concurrent-ruby)
13028 (name "ruby-concurrent-ruby-ext")
13029 (arguments
13030 (list
13031 #:tests? #f ;tested as part of concurrent-ruby-edge
13032 #:phases
13033 #~(modify-phases %standard-phases
13034 (add-after 'unpack 'delete-unwanted-gemspecs
13035 (lambda _
13036 (for-each delete-file
13037 '("concurrent-ruby.gemspec"
13038 "concurrent-ruby-edge.gemspec")))))))
13039 (native-inputs (list ruby-rake-compiler))
13040 (propagated-inputs (list ruby-concurrent-ruby))
13041 (synopsis "C extensions for concurrent-ruby")
13042 (description "This package provides C extensions to optimize the
13043concurrent-ruby gem when running under the Matz's Ruby Interpreter (MRI, also
13044known as CRuby).")))
13045
13046(define-public ruby-concurrent-ruby-edge
13047 (package
13048 (inherit ruby-concurrent-ruby)
13049 (name "ruby-concurrent-ruby-edge")
13050 (arguments
13051 (list
13052 #:phases
13053 #~(modify-phases %standard-phases
13054 (add-after 'unpack 'delete-unwanted-gemspecs
13055 (lambda _
13056 (for-each delete-file
13057 '("concurrent-ruby.gemspec"
13058 "concurrent-ruby-ext.gemspec"))))
13059 ;; The tests rely on the Gem being installed, so move the check
13060 ;; phase after the install phase.
13061 (delete 'check)
13062 (add-after 'install 'check
13063 (lambda* (#:key tests? #:allow-other-keys)
13064 (setenv "GEM_PATH" (string-append
13065 (getenv "GEM_PATH") ":"
13066 #$output "/lib/ruby/vendor_ruby"))
13067 (when tests?
13068 (invoke "rake" "ci")))))))
13069 (native-inputs
13070 (list ruby-rake-compiler
13071 ruby-rake-compiler-dock
13072 ruby-rspec
13073 ruby-timecop
13074 ruby-yard))
13075 (propagated-inputs
13076 (list ruby-concurrent-ruby ruby-concurrent-ruby-ext))
13077 (synopsis "Edge features and additions to the @code{concurrent-ruby} gem")
13078 (description "The @code{concurrent-ruby-edge} gem includes
13079@code{concurrent-ruby} features that are under active development and may
13080change frequently. They are expected not to keep backward
13081compatibility (there may also lack tests and documentation), although semantic
13082versions are obeyed though. Features developed in @code{concurrent-ruby-edge}
13083are expected to move to @code{concurrent-ruby} when final.")))
13084
13085(define-public ruby-pkg-config
13086 (package
13087 (name "ruby-pkg-config")
13088 (version "1.2.5")
13089 (source
13090 (origin
13091 (method url-fetch)
13092 (uri (rubygems-uri "pkg-config" version))
13093 (sha256
13094 (base32
13095 "056mzqdh4yjznsg36fi0xiq76f24vxlhzh2n4az919l3x5k318ar"))))
13096 (build-system ruby-build-system)
13097 (arguments
13098 ;; Tests require extra files not included in the gem.
13099 `(#:tests? #f))
13100 (synopsis "Detect libraries for compiling Ruby native extensions")
13101 (description
13102 "@code{pkg-config} can be used in your extconf.rb to properly detect need
13103libraries for compiling Ruby native extensions.")
13104 (home-page "https://github.com/ruby-gnome2/pkg-config")
13105 (license license:lgpl2.0+)))
13106
13107(define-public ruby-net-http-digest-auth
13108 (package
13109 (name "ruby-net-http-digest-auth")
13110 (version "1.4.1")
13111 (source
13112 (origin
13113 (method url-fetch)
13114 (uri (rubygems-uri "net-http-digest_auth" version))
13115 (sha256
13116 (base32
13117 "1nq859b0gh2vjhvl1qh1zrk09pc7p54r9i6nnn6sb06iv07db2jb"))))
13118 (build-system ruby-build-system)
13119 (native-inputs
13120 (list ruby-hoe
13121 ruby-minitest))
13122 (synopsis "RFC 2617 HTTP digest authentication library")
13123 (description
13124 "This library implements HTTP's digest authentication scheme based on
13125RFC 2617. This enables the use of the digest authentication scheme instead
13126of the more insecure basic authentication scheme.")
13127 (home-page "https://github.com/drbrain/net-http-digest_auth")
13128 (license license:expat)))
13129
13130(define-public ruby-mail
13131 (package
13132 (name "ruby-mail")
13133 (version "2.8.1")
13134 (source
13135 (origin
13136 (method url-fetch)
13137 (uri (rubygems-uri "mail" version))
13138 (sha256
13139 (base32 "1bf9pysw1jfgynv692hhaycfxa8ckay1gjw5hz3madrbrynryfzc"))))
13140 (build-system ruby-build-system)
13141 (propagated-inputs
13142 (list ruby-mini-mime))
13143 (arguments
13144 '(#:tests? #f)) ; no rakefile
13145 (synopsis "Mail library for Ruby")
13146 (description
13147 "Mail is an internet library for Ruby that is designed to handle email
13148generation, parsing and sending. The purpose of this library is to provide
13149a single point of access to handle all email functions, including sending
13150and receiving emails. All network type actions are done through proxy
13151methods to @code{Net::SMTP}, @code{Net::POP3} etc.
13152
13153Mail has been designed with a very simple object oriented system that
13154really opens up the email messages you are parsing, if you know what you
13155are doing, you can fiddle with every last bit of your email directly.")
13156 (home-page "https://github.com/mikel/mail")
13157 (license license:expat)))
13158
13159(define-public ruby-net-protocol
13160 (package
13161 (name "ruby-net-protocol")
13162 (version "0.2.1")
13163 (source (origin
13164 (method git-fetch)
13165 (uri (git-reference
13166 (url "https://github.com/ruby/net-protocol")
13167 (commit (string-append "v" version))))
13168 (file-name (git-file-name name version))
13169 (sha256
13170 (base32
13171 "0niivmjx7bc6vsylc1ag17mw6mnvjxw02s7cin1f0422xyr8msq9"))))
13172 (build-system ruby-build-system)
13173 (propagated-inputs (list ruby-timeout))
13174 (synopsis "Abstract interface for Ruby network clients")
13175 (description "This Ruby library provides an abstract interface for network
13176clients.")
13177 (home-page "https://github.com/ruby/net-protocol")
13178 (license (list license:bsd-2))))
13179
13180(define-public ruby-email-reply-trimmer
13181 (package
13182 (name "ruby-email-reply-trimmer")
13183 (version "0.1.13")
13184 (source
13185 (origin
13186 (method url-fetch)
13187 (uri (rubygems-uri "email_reply_trimmer" version))
13188 (sha256
13189 (base32
13190 "1jgcxifm48xq5dz9k47q43pqm5bfnf14l62l3bqhmv8f6z8dw4ki"))))
13191 (build-system ruby-build-system)
13192 (synopsis "Trim replies from plain text email")
13193 (description "EmailReplyTrimmer is a Ruby small library to trim replies
13194from plain text email.")
13195 (home-page "https://github.com/discourse/email_reply_trimmer")
13196 (license license:expat)))
13197
13198(define-public ruby-mathn
13199 (package
13200 (name "ruby-mathn")
13201 (version "0.1.0")
13202 (source
13203 (origin
13204 (method url-fetch)
13205 (uri (rubygems-uri "mathn" version))
13206 (sha256
13207 (base32
13208 "1wn812llln9jzgybz2d7536q39z3gi99i6fi0j1dapcpzvhgrr0p"))))
13209 (build-system ruby-build-system)
13210 (native-inputs
13211 (list bundler ruby-rake-compiler))
13212 (synopsis "Extends math operations for increased precision")
13213 (description
13214 "This gem makes mathematical operations more precise in Ruby and
13215integrates other mathematical standard libraries. Prior to Ruby 2.5,
13216@code{mathn} was part of the Ruby standard library.")
13217 (home-page "https://github.com/ruby/mathn")
13218 (license license:bsd-2)))
13219
13220(define-public ruby-code-statistics
13221 (package
13222 (name "ruby-code-statistics")
13223 (version "0.2.13")
13224 (source
13225 (origin
13226 (method url-fetch)
13227 (uri (rubygems-uri "code_statistics" version))
13228 (sha256
13229 (base32
13230 "07rdpsbwbmh4vp8nxyh308cj7am2pbrfhv9v5xr2d5gq8hnnsm93"))))
13231 (build-system ruby-build-system)
13232 (arguments
13233 `(#:tests? #f)) ; Not all test code is included in gem.
13234 (synopsis "Port of the rails 'rake stats' method")
13235 (description
13236 "This gem is a port of the rails 'rake stats' method so it can be made
13237more robust and work for non rails projects.")
13238 (home-page "https://github.com/danmayer/code_statistics")
13239 (license license:expat)))
13240
13241(define-public ruby-ruby2-keywords
13242 (package
13243 (name "ruby-ruby2-keywords")
13244 (version "0.0.5")
13245 (source (origin
13246 (method git-fetch)
13247 (uri (git-reference
13248 (url "https://github.com/ruby/ruby2_keywords")
13249 (commit (string-append "v" version))))
13250 (file-name (git-file-name name version))
13251 (sha256
13252 (base32
13253 "1jhqb152zfr2yrxj6j8rzakkwdkg5viggwnnqrrfxwwy63msdi97"))))
13254 (build-system ruby-build-system)
13255 (arguments
13256 (list
13257 #:phases
13258 #~(modify-phases %standard-phases
13259 (add-after 'unpack 'delete-extraneous-rake-files
13260 (lambda _
13261 (for-each delete-file '("rakelib/changelogs.rake"
13262 "rakelib/epoch.rake"
13263 "rakelib/version.rake"))))
13264 (add-after 'extract-gemspec 'adjust-files
13265 (lambda _
13266 (substitute* "ruby2_keywords.gemspec"
13267 ;; This file is not present in the git checkout.
13268 ((".*\"ChangeLog\",.*") "")))))))
13269 (synopsis "Shim library for Module#ruby2_keywords")
13270 (description "Provides empty @code{Module#ruby2_keywords} method, for the
13271forward source-level compatibility against @command{ruby2.7} and
13272@command{ruby3}.")
13273 (home-page "https://github.com/ruby/ruby2_keywords")
13274 (license license:bsd-2)))
13275
13276(define-public ruby-rubypants
13277 (package
13278 (name "ruby-rubypants")
13279 (version "0.6.0")
13280 (source (origin
13281 (method url-fetch)
13282 (uri (rubygems-uri "rubypants" version))
13283 (sha256
13284 (base32
13285 "0xpqkslan2wkyal2h9qhplkr5d4sdn7q6csigrhnljjpp8j4qfsh"))))
13286 (build-system ruby-build-system)
13287 (arguments
13288 '(#:tests? #f)) ; need Codecov
13289 (synopsis "Port of the smart-quotes library SmartyPants")
13290 (description
13291 "RubyPants is a Ruby port of the smart-quotes library SmartyPants. The
13292original SmartyPants is a web publishing plug-in for Movable Type, Blosxom,
13293and BBEdit that easily translates plain ASCII punctuation characters into
13294smart typographic punctuation HTML entities.")
13295 (home-page "https://github.com/jmcnevin/rubypants")
13296 (license license:bsd-2)))
13297
13298(define-public ruby-org-ruby
13299 (package
13300 (name "ruby-org-ruby")
13301 (version "0.9.12")
13302 (source (origin
13303 (method url-fetch)
13304 (uri (rubygems-uri "org-ruby" version))
13305 (sha256
13306 (base32
13307 "0x69s7aysfiwlcpd9hkvksfyld34d8kxr62adb59vjvh8hxfrjwk"))))
13308 (build-system ruby-build-system)
13309 (arguments
13310 '(#:tests? #f)) ; no rakefile
13311 (propagated-inputs
13312 (list ruby-rubypants))
13313 (synopsis "Org-mode parser written in Ruby")
13314 (description
13315 "Org-ruby is an org-mode parser written in Ruby. The most significant
13316thing this library does today is convert org-mode files to HTML or Textile or
13317Markdown.")
13318 (home-page "https://github.com/wallyqs/org-ruby")
13319 (license license:expat)))
13320
13321(define-public ruby-rake
13322 (package
13323 (name "ruby-rake")
13324 (version "13.0.6")
13325 (source
13326 (origin
13327 (method git-fetch) ;for tests
13328 (uri (git-reference
13329 (url "https://github.com/ruby/rake")
13330 (commit (string-append "v" version))))
13331 (file-name (git-file-name name version))
13332 (sha256
13333 (base32
13334 "0c77xyl677s966f8yvk8yv7l31c1ffa1yl4kcwiram219h0s76in"))))
13335 (build-system ruby-build-system)
13336 (native-inputs
13337 (list bundler))
13338 (synopsis "Rake is a Make-like program implemented in Ruby")
13339 (description
13340 "Rake is a Make-like program where tasks and dependencies are specified
13341in standard Ruby syntax.")
13342 (home-page "https://github.com/ruby/rake")
13343 (license license:expat)))
13344
13345(define-public ruby-rake-manifest
13346 (package
13347 (name "ruby-rake-manifest")
13348 (version "0.2.3")
13349 (source (origin
13350 (method git-fetch)
13351 (uri (git-reference
13352 (url "https://github.com/mvz/rake-manifest")
13353 (commit (string-append "v" version))))
13354 (file-name (git-file-name name version))
13355 (sha256
13356 (base32
13357 "16k2yvg773c25kp2vhzhp01rhf53k0nhrcmpv34k1fridw90r2k8"))))
13358 (build-system ruby-build-system)
13359 (arguments
13360 (list
13361 #:test-target "default"
13362 #:phases
13363 #~(modify-phases %standard-phases
13364 (delete 'check) ;moved after the install phase
13365 (add-after 'install 'check
13366 (assoc-ref %standard-phases 'check))
13367 (add-before 'check 'set-GEM_PATH
13368 (lambda _
13369 (setenv "GEM_PATH" (string-append
13370 (getenv "GEM_PATH") ":"
13371 #$output "/lib/ruby/vendor_ruby")))))))
13372 (native-inputs (list ruby-rspec ruby-simplecov))
13373 (synopsis "Rake tasks to generate and check a manifest file")
13374 (description "This package provides Rake tasks to generate and check a
13375manifest file.")
13376 (home-page "https://github.com/mvz/rake-manifest")
13377 (license license:expat)))
13378
13379(define-public ruby-sfl
13380 (package
13381 (name "ruby-sfl")
13382 (version "2.3")
13383 (source (origin
13384 (method url-fetch)
13385 (uri (rubygems-uri "sfl" version))
13386 (sha256
13387 (base32
13388 "1qm4hvhq9pszi9zs1cl9qgwx1n4wxq0af0hq9sbf6qihqd8rwwwr"))))
13389 (build-system ruby-build-system)
13390 (arguments
13391 `(#:tests? #f ;; some tests fail, gem is a dummy for ruby >= 1.9 anyway
13392 #:test-target "spec"))
13393 (synopsis "Spawn for Ruby 1.8")
13394 (description "This pure ruby library provides @code{spawn()} which is
13395almost perfectly compatible with ruby 1.9's.")
13396 (home-page "https://github.com/ujihisa/spawn-for-legacy")
13397 (license license:bsd-2)))
13398
13399(define-public ruby-childprocess
13400 (package
13401 (name "ruby-childprocess")
13402 (version "4.1.0")
13403 (source
13404 (origin
13405 (method url-fetch)
13406 (uri (rubygems-uri "childprocess" version))
13407 (sha256
13408 (base32
13409 "1lvcp8bsd35g57f7wz4jigcw2sryzzwrpcgjwwf3chmjrjcww5in"))))
13410 (build-system ruby-build-system)
13411 (arguments
13412 `(#:tests? #f ;; one failing test, even with fixes below
13413 #:test-target "spec"
13414 #:phases
13415 (modify-phases %standard-phases
13416 (add-after 'unpack 'patch
13417 (lambda _
13418 (substitute* "spec/spec_helper.rb"
13419 (("#!/bin/sh\\\\n") (string-append "#!" (which "sh") "\\n"))))))))
13420 (native-inputs
13421 (list ruby-coveralls ruby-rspec))
13422 (synopsis "Control external programs running in the background, in Ruby")
13423 (description "@code{childprocess} provides a gem to control external
13424programs running in the background, in Ruby.")
13425 (home-page "https://github.com/enkessler/childprocess")
13426 (license license:expat)))
13427
13428(define-public ruby-public-suffix
13429 (package
13430 (name "ruby-public-suffix")
13431 (version "4.0.5")
13432 (source (origin
13433 (method url-fetch)
13434 (uri (rubygems-uri "public_suffix" version))
13435 (sha256
13436 (base32
13437 "0vywld400fzi17cszwrchrzcqys4qm6sshbv73wy5mwcixmrgg7g"))))
13438 (build-system ruby-build-system)
13439 (arguments
13440 '(#:phases
13441 (modify-phases %standard-phases
13442 ;; Remove the requirement on Rubocop, as it isn't useful to run, and
13443 ;; including it as an input can lead to circular dependencies.
13444 (add-after 'unpack 'remove-rubocop-from-Rakefile
13445 (lambda _
13446 (substitute* "Rakefile"
13447 (("require \"rubocop/rake\\_task\"") "")
13448 (("RuboCop::RakeTask\\.new") "")))))))
13449 (native-inputs
13450 (list bundler ruby-yard/minimal ruby-mocha ruby-minitest-reporters))
13451 (home-page "https://simonecarletti.com/code/publicsuffix-ruby/")
13452 (synopsis "Domain name parser")
13453 (description "The gem @code{public_suffix} is a domain name parser,
13454written in Ruby, and based on the @dfn{Public Suffix List}. A public suffix
13455is one under which Internet users can (or historically could) directly
13456register names. Some examples of public suffixes are @code{.com},
13457@code{.co.uk} and @code{pvt.k12.ma.us}. The Public Suffix List is a list of
13458all known public suffixes.")
13459 (license license:expat)))
13460
13461(define-public ruby-addressable
13462 (package
13463 (name "ruby-addressable")
13464 (version "2.8.1")
13465 (source (origin
13466 (method url-fetch)
13467 (uri (rubygems-uri "addressable" version))
13468 (sha256
13469 (base32
13470 "1ypdmpdn20hxp5vwxz3zc04r5xcwqc25qszdlg41h8ghdqbllwmw"))))
13471 (build-system ruby-build-system)
13472 (arguments
13473 '(#:test-target "spec"
13474 #:phases
13475 (modify-phases %standard-phases
13476 (add-after 'unpack 'disable-bundler
13477 (lambda _
13478 (substitute* "spec/spec_helper.rb"
13479 (("require 'bundler/setup'") ""))))
13480 (add-after 'unpack 'remove-unnecessary-dependencies-from-Gemfile
13481 (lambda _
13482 (substitute* "Gemfile"
13483 (("git: 'https://github.com/sporkmonger/rack-mount.git',") "")
13484 ((".*launchy.*") "")
13485 ((".*rake.*") "gem 'rake'\n")
13486 ((".*redcarpet.*") ""))))
13487 (add-before 'check 'delete-network-dependent-test
13488 (lambda _
13489 (delete-file "spec/addressable/net_http_compat_spec.rb"))))))
13490 (native-inputs
13491 (list bundler
13492 ruby-idn-ruby
13493 ruby-rspec
13494 ruby-rspec-its-minimal
13495 ruby-simplecov
13496 ruby-sporkmonger-rack-mount
13497 ruby-yard/minimal))
13498 (propagated-inputs
13499 (list ruby-public-suffix))
13500 (home-page "https://github.com/sporkmonger/addressable")
13501 (synopsis "Alternative URI implementation")
13502 (description "Addressable is a replacement for the URI implementation that
13503is part of Ruby's standard library. It more closely conforms to RFC 3986,
13504RFC 3987, and RFC 6570 (level 4), providing support for IRIs and URI templates.")
13505 (license license:asl2.0)))
13506
13507(define-public ruby-colorize
13508 (package
13509 (name "ruby-colorize")
13510 (version "0.8.1")
13511 (source (origin
13512 (method url-fetch)
13513 (uri (rubygems-uri "colorize" version))
13514 (sha256
13515 (base32
13516 "133rqj85n400qk6g3dhf2bmfws34mak1wqihvh3bgy9jhajw580b"))))
13517 (build-system ruby-build-system)
13518 (arguments
13519 '(#:phases (modify-phases %standard-phases
13520 (add-before 'check 'remove-codeclimate-dependency
13521 (lambda _
13522 (substitute* "test/test_colorize.rb"
13523 ;; Do not hook the tests into the online CodeClimate
13524 ;; service which is unnecessary for these tests.
13525 (("require 'codeclimate-test-reporter'")
13526 "")
13527 (("CodeClimate.*") "")))))))
13528 (synopsis "Add color effects to the @code{String} class")
13529 (description
13530 "This package extends the @code{String} class and adds a
13531@code{ColorizedString} with methods to set text color, background color,
13532and text effects.")
13533 (home-page "https://github.com/fazibear/colorize")
13534 (license license:gpl2+)))
13535
13536(define-public ruby-colorator
13537 (package
13538 (name "ruby-colorator")
13539 (version "1.1.0")
13540 (source (origin
13541 (method url-fetch)
13542 (uri (rubygems-uri "colorator" version))
13543 (sha256
13544 (base32
13545 "0f7wvpam948cglrciyqd798gdc6z3cfijciavd0dfixgaypmvy72"))))
13546 (build-system ruby-build-system)
13547 (arguments
13548 ;; No test target
13549 `(#:tests? #f))
13550 (home-page "http://octopress.org/colorator/")
13551 (synopsis "Terminal color library")
13552 (description "Colorator is a Ruby gem that helps you colorize your text
13553for the terminal.")
13554 (license license:expat)))
13555
13556(define-public ruby-command-line-reporter
13557 (package
13558 (name "ruby-command-line-reporter")
13559 (version "4.0.1")
13560 (source (origin
13561 (method url-fetch)
13562 (uri (rubygems-uri "command_line_reporter" version))
13563 (sha256
13564 (base32
13565 "1l0zxkh5n9dxfw46lpkg416ljpldlq1bgdhqh0d118dk338nz4ll"))))
13566 (build-system ruby-build-system)
13567 (arguments
13568 ;; No Rakefile
13569 `(#:tests? #f
13570 #:phases
13571 (modify-phases %standard-phases
13572 (add-before 'build 'fix-dependencies
13573 (lambda _
13574 (substitute* ".gemspec"
13575 ;; colored is unmaintained
13576 (("colored") "colorator")
13577 ;; colorator version
13578 (("= 1.2") "= 1.1")))))))
13579 (propagated-inputs (list ruby-colorator))
13580 (home-page "https://github.com/wbailey/command_line_reporter")
13581 (synopsis "Report production while executing Ruby scripts")
13582 (description "This gem provides a DSL that makes it easy to write reports
13583of various types in ruby. It eliminates the need to litter your source with
13584puts statements, instead providing a more readable, expressive interface to
13585your application.")
13586 (license license:asl2.0)))
13587
13588(define-public ruby-command-line-reporter-3
13589 (package
13590 (inherit ruby-command-line-reporter)
13591 (version "3.3.6")
13592 (source (origin
13593 (method url-fetch)
13594 (uri (rubygems-uri "command_line_reporter" version))
13595 (sha256
13596 (base32
13597 "1h39zqqxp3k4qk49ajpx0jps1vmvxgkh43mqkb6znk583bl0fv71"))))))
13598
13599(define-public ruby-kpeg
13600 (package
13601 (name "ruby-kpeg")
13602 (version "1.3.3")
13603 (source
13604 (origin
13605 (method url-fetch)
13606 (uri (rubygems-uri "kpeg" version))
13607 (sha256
13608 (base32
13609 "0jxddpyb23digcd8b1b02gn94057a7mw17680c3c8s3bcb5xqfnp"))))
13610 (build-system ruby-build-system)
13611 (native-inputs
13612 (list ruby-hoe))
13613 (synopsis "PEG library for Ruby")
13614 (description "KPeg is a simple PEG library for Ruby. It provides an API as
13615well as native grammar to build the grammar. KPeg supports direct left
13616recursion of rules via the
13617@uref{http://www.vpri.org/pdf/tr2008003_experimenting.pdf,OMeta memoization}
13618technique.")
13619 (home-page "https://github.com/evanphx/kpeg")
13620 (license license:expat)))
13621
13622(define-public ruby-rdoc
13623 (package
13624 (name "ruby-rdoc")
13625 (version "6.7.0")
13626 (source
13627 (origin
13628 (method git-fetch)
13629 (uri (git-reference
13630 (url "https://github.com/ruby/rdoc")
13631 (commit (string-append "v" version))))
13632 (file-name (git-file-name name version))
13633 (sha256
13634 (base32
13635 "0dy997zi7k17c2yjlq1y7zl9yaiym1f4jgfh84qqzhwl1qm6v41j"))))
13636 (build-system ruby-build-system)
13637 (arguments
13638 `(#:phases
13639 (modify-phases %standard-phases
13640 (add-before 'build 'generate
13641 ;; 'gem build' doesn't honor Rakefile dependencies (see:
13642 ;; https://github.com/ruby/rdoc/issues/432#issuecomment-650808977).
13643 (lambda _
13644 (invoke "rake" "generate"))))))
13645 (native-inputs (list bundler ruby-kpeg ruby-racc ruby-rubocop
13646 ruby-test-unit-ruby-core))
13647 (home-page "https://ruby.github.io/rdoc/")
13648 (synopsis "HTML and command-line documentation utility")
13649 (description "RDoc produces HTML and command-line documentation for Ruby
13650projects. RDoc includes the +rdoc+ and +ri+ tools for generating and displaying
13651documentation from the command-line.")
13652 (license license:gpl2+)))
13653
13654(define-public ruby-sass-listen
13655 (package
13656 (name "ruby-sass-listen")
13657 (version "4.0.0")
13658 (source (origin
13659 (method url-fetch)
13660 (uri (rubygems-uri "sass-listen" version))
13661 (sha256
13662 (base32
13663 "0xw3q46cmahkgyldid5hwyiwacp590zj2vmswlll68ryvmvcp7df"))))
13664 (build-system ruby-build-system)
13665 (arguments
13666 ;; No test target
13667 `(#:tests? #f))
13668 (propagated-inputs
13669 (list ruby-rb-fsevent ruby-rb-inotify))
13670 (home-page "https://github.com/sass/listen")
13671 (synopsis "File modification notification library")
13672 (description "The Listen gem listens to file modifications and notifies you
13673about the changes.")
13674 (license license:expat)))
13675
13676(define-public ruby-terminfo
13677 (let ((commit "f4a597d92dcc465e7b343f9afb8cd45607c8e969")
13678 (revision "0"))
13679 (package
13680 (name "ruby-terminfo")
13681 (version (git-version "0.2" revision commit))
13682 (source
13683 (origin
13684 (method git-fetch)
13685 (uri
13686 (git-reference
13687 (url "https://github.com/genki/ruby-terminfo")
13688 (commit commit)))
13689 (file-name (git-file-name name version))
13690 (sha256
13691 (base32 "0b24sqf0jwj8m106nh35hjayw1kiyrpramb6vg7fnz32mqni6hdi"))))
13692 (build-system ruby-build-system)
13693 (arguments
13694 (list
13695 #:phases
13696 #~(modify-phases %standard-phases
13697 (delete 'replace-git-ls-files)
13698 (replace 'build
13699 (lambda _
13700 (invoke "ruby" "extconf.rb")
13701 (invoke "make")))
13702 (replace 'check
13703 (lambda* (#:key tests? #:allow-other-keys)
13704 (when tests?
13705 (for-each (lambda (f)
13706 (invoke "ruby" "-Ilib:test" "-Ilib:." f))
13707 (find-files "test" "^test_.*\\.rb$")))))
13708 (replace 'install
13709 (lambda _
13710 (invoke "make" "install" (string-append "prefix=" #$output)))))))
13711 (inputs
13712 (list ncurses))
13713 (native-inputs
13714 (list ruby-rubygems-tasks ruby-rdoc))
13715 (home-page "http://www.a-k-r.org/ruby-terminfo/")
13716 (synopsis "Terminfo binding for Ruby")
13717 (description "Ruby-terminfo provides terminfo binding for Ruby.")
13718 (license license:bsd-3))))
13719
13720(define-public ruby-diffy
13721 (package
13722 (name "ruby-diffy")
13723 (version "3.2.1")
13724 (source
13725 (origin
13726 (method url-fetch)
13727 (uri (rubygems-uri "diffy" version))
13728 (sha256
13729 (base32
13730 "119imrkn01agwhx5raxhknsi331y5i4yda7r0ws0an6905ximzjg"))))
13731 (build-system ruby-build-system)
13732 (arguments
13733 ;; No tests
13734 `(#:tests? #f))
13735 (native-inputs
13736 (list ruby-rspec))
13737 (home-page "https://github.com/samg/diffy")
13738 (synopsis "Convenient diffing in ruby")
13739 (description "Diffy provides a convenient way to generate a diff from two
13740strings or files.")
13741 (license license:expat)))
13742
13743(define-public ruby-sass-spec
13744 (package
13745 (name "ruby-sass-spec")
13746 (version "3.5.4")
13747 (source
13748 (origin
13749 (method git-fetch)
13750 (uri (git-reference
13751 (url "https://github.com/sass/sass-spec")
13752 (commit (string-append "v" version))))
13753 (file-name (git-file-name name version))
13754 (sha256
13755 (base32 "1zsw66830w0xlc7kxz6fm4b5nyb44vdsdgm9mgy06s5aixx83pwr"))))
13756 (build-system ruby-build-system)
13757 (propagated-inputs
13758 (list ruby-command-line-reporter-3
13759 ruby-diffy))
13760 (arguments
13761 (list
13762 ;; This package contains tests for a sass implementation, and the to
13763 ;; avoid any circular dependencies, the tests are not run here
13764 #:tests? #f
13765 #:phases
13766 #~(modify-phases %standard-phases
13767 (add-after 'unpack 'patch-test
13768 (lambda _
13769 (delete-file "spec/values/colors/alpha_hex-3.5/error")
13770 (substitute* "spec/values/colors/alpha_hex-3.5/expected_output.css"
13771 (("string") "color")))))))
13772 (home-page "https://github.com/sass/sass-spec")
13773 (synopsis "Test suite for Sass")
13774 (description "Sass Spec is a test suite for Sass. Test cases are all in
13775the @file{spec} directory.")
13776 (license license:expat)))
13777
13778(define-public ruby-sass
13779 (package
13780 (name "ruby-sass")
13781 (version "3.7.4")
13782 (source
13783 (origin
13784 (method git-fetch)
13785 (uri (git-reference
13786 (url "https://github.com/sass/ruby-sass")
13787 (commit version)))
13788 (file-name (git-file-name name version))
13789 (sha256
13790 (base32 "03215h9jkni3l9w6lq28p8adaj3qzb47qgxd20l6kldjnm1a1yky"))))
13791 (build-system ruby-build-system)
13792 (arguments
13793 (list #:test-target "test:ruby"))
13794 (propagated-inputs
13795 (list ruby-sass-listen))
13796 (native-inputs
13797 (list ruby-sass-spec ruby-mathn ruby-cmath))
13798 (home-page "https://sass-lang.com/")
13799 (synopsis "CSS extension language")
13800 (description "Sass is a CSS extension language. It extends CSS with
13801features that don't exist yet like variables, nesting, mixins and inheritance.")
13802 (license license:expat)))
13803
13804(define-public ruby-sassc
13805 (package
13806 (name "ruby-sassc")
13807 (version "2.4.0")
13808 (source
13809 (origin
13810 (method url-fetch)
13811 (uri (rubygems-uri "sassc" version))
13812 (sha256
13813 (base32
13814 "0gpqv48xhl8mb8qqhcifcp0pixn206a7imc07g48armklfqa4q2c"))))
13815 (build-system ruby-build-system)
13816 (arguments
13817 '(#:modules ((guix build ruby-build-system)
13818 (guix build utils)
13819 (ice-9 textual-ports))
13820 #:phases
13821 (modify-phases %standard-phases
13822 ;; TODO: This would be better as a snippet, but the ruby-build-system
13823 ;; doesn't seem to support that
13824 (add-after 'unpack 'remove-libsass
13825 (lambda _
13826 (delete-file-recursively "ext")
13827 (with-atomic-file-replacement "sassc.gemspec"
13828 (lambda (in out)
13829 (let* ((gemspec (get-string-all in))
13830 (index (string-contains gemspec "libsass_dir")))
13831 (display (string-append
13832 (string-take gemspec index)
13833 "\nend\n")
13834 out))))))
13835 (add-after 'unpack 'dont-check-the-libsass-version
13836 (lambda _
13837 (substitute* "test/native_test.rb"
13838 (("assert_equal.*Native\\.version") ""))))
13839 (add-after 'unpack 'remove-git-from-gemspec
13840 (lambda _
13841 (substitute* "sassc.gemspec"
13842 (("`git ls-files -z`") "`find . -type f -print0 |sort -z`"))))
13843 (add-after 'unpack 'remove-extensions-from-gemspec
13844 (lambda _
13845 (substitute* "sassc.gemspec"
13846 (("\\[\"ext/extconf.rb\"\\]") "[]"))))
13847 (add-after 'unpack 'fix-Rakefile
13848 (lambda _
13849 (substitute* "Rakefile"
13850 (("test: 'compile:libsass'") ":test"))))
13851 (add-after 'unpack 'remove-unnecessary-dependencies
13852 (lambda _
13853 (substitute* "test/test_helper.rb"
13854 (("require \"pry\"") ""))))
13855 (add-before 'build 'patch-native.rb
13856 (lambda* (#:key inputs #:allow-other-keys)
13857 (substitute* "lib/sassc/native.rb"
13858 ((".*gem_root = spec.gem_dir") "")
13859 (("ffi_lib .*\n")
13860 (string-append
13861 "ffi_lib '" (assoc-ref inputs "libsass") "/lib/libsass.so'")))))
13862 ;; The gemspec still references the libsass files, so just keep the
13863 ;; one in the gem.
13864 (delete 'extract-gemspec))))
13865 (propagated-inputs
13866 (list ruby-ffi ruby-rake))
13867 (inputs
13868 (list libsass))
13869 (native-inputs
13870 (list bundler ruby-rake-compiler ruby-minitest-around
13871 ruby-test-construct))
13872 (synopsis "Use libsss from Ruby")
13873 (description
13874 "This library provides Ruby q@acronym{FFI, Foreign Function Interface}
13875bindings to the libsass library. This enables rendering
13876@acronym{SASS,Syntactically awesome style sheets} from Ruby code.")
13877 (home-page "https://github.com/sass/sassc-ruby")
13878 (license license:expat)))
13879
13880(define-public ruby-jekyll-sass-converter
13881 (package
13882 (name "ruby-jekyll-sass-converter")
13883 (version "2.1.0")
13884 (source (origin
13885 (method url-fetch)
13886 (uri (rubygems-uri "jekyll-sass-converter" version))
13887 (sha256
13888 (base32
13889 "04ncr44wrilz26ayqwlg7379yjnkb29mvx4j04i62b7czmdrc9dv"))))
13890 (build-system ruby-build-system)
13891 (propagated-inputs
13892 (list ruby-sass))
13893 (arguments
13894 ;; No rakefile
13895 `(#:tests? #f))
13896 (home-page "https://github.com/jekyll/jekyll-sass-converter")
13897 (synopsis "Sass converter for Jekyll")
13898 (description "This gem provide built-in support for the Sass converter
13899in Jekyll.")
13900 (license license:expat)))
13901
13902(define-public ruby-jekyll-watch
13903 (package
13904 (name "ruby-jekyll-watch")
13905 (version "2.1.2")
13906 (source (origin
13907 (method url-fetch)
13908 (uri (rubygems-uri "jekyll-watch" version))
13909 (sha256
13910 (base32
13911 "1s9ly83sp8albvgdff12xy2h4xd8lm6z2fah4lzmk2yvp85jzdzv"))))
13912 (build-system ruby-build-system)
13913 (propagated-inputs
13914 (list ruby-listen))
13915 (arguments
13916 ;; No rakefile
13917 `(#:tests? #f))
13918 (home-page "https://github.com/jekyll/jekyll-watch")
13919 (synopsis "Jekyll auto-rebuild support")
13920 (description "This gems add the @code{--watch} switch to the jekyll CLI
13921interface. It allows Jekyll to rebuild your site when a file changes.")
13922 (license license:expat)))
13923
13924(define-public ruby-parallel
13925 (package
13926 (name "ruby-parallel")
13927 (version "1.21.0")
13928 (source
13929 (origin
13930 (method git-fetch)
13931 (uri (git-reference
13932 (url "https://github.com/grosser/parallel")
13933 (commit (string-append "v" version))))
13934 (file-name (git-file-name name version))
13935 (sha256
13936 (base32
13937 "1xqjcvl3gq3shvrqp8wc3fbqibzh4mf1yczq6np9gd79558dwj3w"))))
13938 (build-system ruby-build-system)
13939 (arguments
13940 `(;; TODO 3 test failures
13941 ;; rspec ./spec/parallel_spec.rb:190 # Parallel.in_processes does not
13942 ;; open unnecessary pipes
13943 ;; rspec './spec/parallel_spec.rb[1:9:7]' # Parallel.each works with
13944 ;; SQLite in processes
13945 ;; rspec './spec/parallel_spec.rb[1:9:16]' # Parallel.each works with
13946 ;; SQLite in threads
13947 #:tests? #f
13948 #:test-target "rspec-rerun:spec"
13949 #:phases
13950 (modify-phases %standard-phases
13951 (add-after 'unpack 'patch-Gemfile
13952 (lambda _
13953 (substitute* "Gemfile"
13954 (("gem 'rspec-legacy_formatters'") "")
13955 (("gem 'activerecord.*$") "gem 'activerecord'\n"))))
13956 (add-before 'check 'delete-Gemfile.lock
13957 (lambda _
13958 ;; Bundler isn't being used for fetching dependencies, so
13959 ;; delete the Gemfile.lock
13960 (delete-file "Gemfile.lock")))
13961 (add-before 'build 'patch-gemspec
13962 (lambda _
13963 (substitute* "parallel.gemspec"
13964 (("git ls-files") "find")))))))
13965 (native-inputs
13966 (list ruby-rspec
13967 ruby-rspec-rerun
13968 bundler
13969 ruby-activerecord
13970 ruby-progressbar
13971 ruby-bump
13972 procps
13973 lsof
13974 ruby-mysql2
13975 ruby-sqlite3
13976 ruby-i18n))
13977 (home-page "https://github.com/grosser/parallel")
13978 (synopsis "Parallel processing in Ruby")
13979 (description "Parallel allows you to run any code in parallel Processes
13980(to use all CPUs) or Threads(to speedup blocking operations). It is best
13981suited for map-reduce or e.g. parallel downloads/uploads.")
13982 (license license:expat)))
13983
13984(define-public ruby-cabin
13985 (package
13986 (name "ruby-cabin")
13987 (version "0.9.0")
13988 (source (origin
13989 (method url-fetch)
13990 (uri (rubygems-uri "cabin" version))
13991 (sha256
13992 (base32
13993 "0b3b8j3iqnagjfn1261b9ncaac9g44zrx1kcg81yg4z9i513kici"))))
13994 (build-system ruby-build-system)
13995 (arguments (list #:tests? #f)) ;no Rakefile in released gem
13996 (synopsis "Structured and contextual logging experiments in Ruby")
13997 (description "This Ruby library provides an experimental logging system
13998that tries to make logging more flexible and more consumable than plain-text
13999logging.")
14000 (home-page "https://github.com/jordansissel/ruby-cabin")
14001 (license license:asl2.0)))
14002
14003(define-public ruby-capybara
14004 (package
14005 (name "ruby-capybara")
14006 (version "3.38.0")
14007 (source (origin
14008 (method url-fetch)
14009 (uri (rubygems-uri "capybara" version))
14010 (sha256
14011 (base32
14012 "123198zk2ak8mziwa5jc3ckgpmsg08zn064n3aywnqm9s1bwjv3v"))))
14013 (build-system ruby-build-system)
14014 (arguments
14015 (list #:tests? #f ;sinatra is currently broken with rack 3
14016 #:phases
14017 #~(modify-phases %standard-phases
14018 (add-after 'extract-gemspec 'remove-extraneous-requirements
14019 (lambda _
14020 (substitute* "spec/spec_helper.rb"
14021 ((".*require 'selenium_statistics'.*") "")
14022 ((".*SeleniumStatistics.print_results.*") ""))))
14023 (replace 'check
14024 (lambda* (#:key tests? #:allow-other-keys)
14025 (when tests?
14026 (invoke "rspec" "spec")))))))
14027 (native-inputs
14028 (list ruby-puma
14029 ruby-rspec
14030 ruby-selenium-webdriver
14031 ruby-sinatra))
14032 (propagated-inputs
14033 (list ruby-addressable
14034 ruby-launchy
14035 ruby-matrix
14036 ruby-mini-mime
14037 ruby-nokogiri
14038 ruby-rack
14039 ruby-rack-test
14040 ruby-regexp-parser
14041 ruby-xpath))
14042 (synopsis "Integration testing tool for rack-based web applications")
14043 (description "Capybara is an integration testing tool for rack based web
14044applications. It simulates how a user would interact with a website.")
14045 (home-page "https://github.com/teamcapybara/capybara")
14046 (license license:expat)))
14047
14048(define-public ruby-cane
14049 (package
14050 (name "ruby-cane")
14051 (version "3.0.0")
14052 (source (origin
14053 (method url-fetch)
14054 (uri (rubygems-uri "cane" version))
14055 (sha256
14056 (base32
14057 "0yf5za3l7lhrqa3g56sah73wh33lbxy5y3cb7ij0a2bp1b4kwhih"))))
14058 (build-system ruby-build-system)
14059 (arguments `(#:tests? #f)); No rakefile
14060 (home-page "https://github.com/square/cane")
14061 (propagated-inputs
14062 (list ruby-parallel))
14063 (synopsis "Code quality threshold checking")
14064 (description "Cane fails your build if code quality thresholds are not met.")
14065 (license license:asl2.0)))
14066
14067(define-public ruby-morecane
14068 (package
14069 (name "ruby-morecane")
14070 (version "0.2.0")
14071 (source (origin
14072 (method url-fetch)
14073 (uri (rubygems-uri "morecane" version))
14074 (sha256
14075 (base32
14076 "0w70vb8z5bdhvr21h660aa43m5948pv0bd27z7ngai2iwdvqd771"))))
14077 (build-system ruby-build-system)
14078 (home-page "https://github.com/yob/morecane")
14079 (arguments `(#:tests? #f)); No rakefile
14080 (propagated-inputs
14081 (list ruby-parallel))
14082 (synopsis "Extra checks for cane")
14083 (description "The cane gem provides a great framework for running quality
14084checks over your ruby project as part of continuous integration build. It
14085comes with a few checks out of the box, but also provides an API for loading
14086custom checks. This gem provides a set of additional checks.")
14087 (license license:expat)))
14088
14089(define-public ruby-pdf-reader
14090 (package
14091 (name "ruby-pdf-reader")
14092 (version "2.4.0")
14093 (source (origin
14094 (method git-fetch) ;no test in distributed gem archive
14095 (uri (git-reference
14096 (url "https://github.com/yob/pdf-reader")
14097 (commit (string-append "v" version))))
14098 (file-name (git-file-name name version))
14099 (sha256
14100 (base32
14101 "1yh8yrlssf5ppnkvk4m78vmh5r5vqwdcd0gm3lqipw162llz0rai"))))
14102 (build-system ruby-build-system)
14103 (arguments `(#:test-target "spec"
14104 #:phases (modify-phases %standard-phases
14105 (add-after 'unpack 'do-not-use-bundler
14106 (lambda _
14107 (substitute* "spec/spec_helper.rb"
14108 ((".*[Bb]undler.*") "")))))))
14109 (native-inputs
14110 (list ruby-rspec ruby-cane ruby-morecane))
14111 (propagated-inputs
14112 (list ruby-afm ruby-ascii85 ruby-hashery ruby-rc4 ruby-ttfunk))
14113 (home-page "https://github.com/yob/pdf-reader")
14114 (synopsis "PDF parser in Ruby")
14115 (description "The PDF::Reader library implements a PDF parser conforming as
14116much as possible to the PDF specification from Adobe. It provides programmatic
14117access to the contents of a PDF file with a high degree of flexibility.")
14118 (license license:gpl3+)))
14119
14120(define-public ruby-pdf-inspector
14121 (let ((revision "1")
14122 (commit "00ee4c92ff917118785ebec188e81effc968abeb"))
14123 (package
14124 (name "ruby-pdf-inspector")
14125 (version (git-version "1.3.0" revision commit))
14126 (source (origin
14127 (method git-fetch)
14128 (uri (git-reference
14129 (url "https://github.com/prawnpdf/pdf-inspector")
14130 (commit commit)))
14131 (file-name (git-file-name name version))
14132 (sha256
14133 (base32
14134 "0h9w81ddd0gvkh5n2cvny9ddb5qiac1si0dhinkk0xxh5382qs0m"))))
14135 (build-system ruby-build-system)
14136 (arguments
14137 `(#:test-target "spec"
14138 #:phases (modify-phases %standard-phases
14139 (add-before 'build 'drop-signing-key-requirement
14140 (lambda _
14141 (substitute* "pdf-inspector.gemspec"
14142 (("spec.signing_key =.*")
14143 "spec.signing_key = nil"))))
14144 (replace 'check
14145 (lambda _
14146 (substitute* "pdf-inspector.gemspec"
14147 ((".*rubocop.*") "")
14148 ((".*yard.*") ""))
14149 (invoke "rspec"))))))
14150 (native-inputs
14151 (list ruby-rspec))
14152 (propagated-inputs
14153 (list ruby-pdf-reader))
14154 (home-page "https://github.com/prawnpdf/pdf-inspector")
14155 (synopsis "Analysis classes for inspecting PDF output")
14156 (description "This library provides a number of PDF::Reader based tools for
14157use in testing PDF output. Presently, the primary purpose of this tool is to
14158support the tests found in Prawn, a pure Ruby PDF generation library.")
14159 (license %prawn-project-licenses))))
14160
14161(define-public ruby-pdf-core
14162 (package
14163 (name "ruby-pdf-core")
14164 (version "0.9.0")
14165 (source (origin
14166 (method url-fetch)
14167 (uri (rubygems-uri "pdf-core" version))
14168 (sha256
14169 (base32
14170 "1fz0yj4zrlii2j08kaw11j769s373ayz8jrdhxwwjzmm28pqndjg"))))
14171 (build-system ruby-build-system)
14172 (arguments
14173 ; No test target
14174 `(#:tests? #f))
14175 (home-page "https://github.com/prawnpdf/pdf-core")
14176 (synopsis "Low level PDF features for Prawn")
14177 (description "This is an experimental gem that extracts low-level PDF
14178functionality from Prawn.")
14179 (license license:gpl3+)))
14180
14181(define-public ruby-prawn-dev
14182 (package
14183 (name "ruby-prawn-dev")
14184 (version "0.3.0")
14185 (source (origin
14186 (method url-fetch)
14187 (uri (rubygems-uri "prawn-dev" version))
14188 (sha256
14189 (base32
14190 "1hbzzgm0nwc6h8pyv8h9xx068bf676rispxcz4a0sm8nykz54z4x"))))
14191 (build-system ruby-build-system)
14192 (arguments
14193 (list
14194 #:tests? #f ;no test suite
14195 #:phases
14196 #~(modify-phases %standard-phases
14197 (add-after 'extract-gemspec 'drop-rubocop-dependency
14198 ;; Rubocop depends on Prawn. Remove it to avoid the
14199 ;; dependency cycle when using this tool to build
14200 ;; Prawn components.
14201 (lambda _
14202 (substitute* "lib/prawn/dev/tasks.rb"
14203 (("require 'rubocop/rake_task'")
14204 "")
14205 (("RuboCop::RakeTask.new")
14206 ""))
14207 (substitute* ".gemspec"
14208 ((".*add.*dependency.*(rubocop|simplecov).*")
14209 "")))))))
14210 (propagated-inputs (list ruby-rake ruby-rspec ruby-yard))
14211 (synopsis "Shared tools for Prawn projects development")
14212 (description "Prawn-dev contains tools to aid the development of the
14213various Prawn projects.")
14214 (home-page "https://prawnpdf.org/")
14215 (license license:expat)))
14216
14217(define-public ruby-prawn
14218 ;; There hasn't been a new release since 2017/03/17.
14219 (package
14220 (name "ruby-prawn")
14221 (version "2.4.0")
14222 (source (origin
14223 (method git-fetch)
14224 (uri (git-reference
14225 (url "https://github.com/prawnpdf/prawn")
14226 (commit version)))
14227 (file-name (git-file-name name version))
14228 (sha256
14229 (base32
14230 "1h1gww12wcdscij0lnd21p9zcbwrwc3miini5ppannc2birmj9ja"))))
14231 (build-system ruby-build-system)
14232 (arguments
14233 (list
14234 #:phases
14235 #~(modify-phases %standard-phases
14236 (add-before 'build 'drop-signing-key-requirement
14237 (lambda _
14238 (substitute* "prawn.gemspec"
14239 (("spec.signing_key =.*")
14240 "spec.signing_key = nil"))))
14241 (replace 'check
14242 (lambda* (#:key tests? #:allow-other-keys)
14243 (when tests?
14244 ;; The Prawn manual test fails (see:
14245 ;; https://github.com/prawnpdf/prawn/issues/1163), so exclude
14246 ;; it.
14247 (invoke "rspec"
14248 "--exclude-pattern" "prawn_manual_spec.rb")))))))
14249 (propagated-inputs
14250 (list ruby-matrix
14251 ruby-pdf-core
14252 ruby-ttfunk))
14253 (native-inputs
14254 (list ruby-pdf-inspector
14255 ruby-prawn-manual-builder
14256 ruby-prawn-dev))
14257 (home-page "https://prawnpdf.org/api-docs/2.0/")
14258 (synopsis "PDF generation for Ruby")
14259 (description "Prawn is a pure Ruby PDF generation library.")
14260 (license %prawn-project-licenses)))
14261
14262(define-public ruby-prawn-table
14263 (package
14264 (name "ruby-prawn-table")
14265 (version "0.2.2")
14266 (source (origin
14267 (method url-fetch)
14268 (uri (rubygems-uri "prawn-table" version))
14269 (sha256
14270 (base32
14271 "1nxd6qmxqwl850icp18wjh5k0s3amxcajdrkjyzpfgq0kvilcv9k"))))
14272 (build-system ruby-build-system)
14273 (propagated-inputs
14274 (list ruby-prawn ruby-pdf-inspector))
14275 (native-inputs
14276 `(("bundler" ,bundler)
14277 ("ruby-yard" ,ruby-yard)
14278 ("ruby-mocha" ,ruby-mocha)
14279 ("ruby-coderay" ,ruby-coderay)
14280 ("ruby-prawn-manual-builder" ,ruby-prawn-manual-builder)
14281 ("ruby-simplecov" ,ruby-simplecov)
14282 ("ruby-rspec-2" ,ruby-rspec-2)))
14283 (arguments
14284 '(;; TODO: 1 test fails
14285 ;; Failure/Error: pdf.page_count.should == 1
14286 ;; expected: 1
14287 ;; got: 2 (using ==)
14288 ;; # ./spec/table_spec.rb:1308
14289 ;;
14290 ;; 225 examples, 1 failure
14291 #:tests? #f
14292 #:phases
14293 (modify-phases %standard-phases
14294 (add-before 'check 'patch-gemspec
14295 (lambda _
14296 (substitute* "prawn-table.gemspec"
14297 ;; Loosen the requirement for pdf-inspector
14298 (("~> 1\\.1\\.0") ">= 0")
14299 ;; Loosen the requirement for pdf-reader
14300 (("~> 1\\.2") ">= 0"))))
14301 (replace 'check
14302 (lambda* (#:key tests? #:allow-other-keys)
14303 (when tests?
14304 (invoke "rspec")))))))
14305 (home-page "https://github.com/prawnpdf/prawn-table")
14306 (synopsis "Tables support for Prawn")
14307 (description "This gem provides tables support for Prawn.")
14308 (license license:gpl3+)))
14309
14310(define-public ruby-kramdown
14311 (package
14312 (name "ruby-kramdown")
14313 (version "2.3.1")
14314 (source (origin
14315 (method url-fetch)
14316 (uri (rubygems-uri "kramdown" version))
14317 (sha256
14318 (base32
14319 "0jdbcjv4v7sj888bv3vc6d1dg4ackkh7ywlmn9ln2g9alk7kisar"))))
14320 (build-system ruby-build-system)
14321 (arguments `(#:tests? #f)); FIXME: some test failures
14322 (native-inputs
14323 (list ruby-prawn ruby-prawn-table))
14324 (home-page "https://kramdown.gettalong.org/")
14325 (synopsis "Markdown parsing and converting library")
14326 (description "Kramdown is a library for parsing and converting a superset
14327of Markdown. It is completely written in Ruby, supports standard Markdown
14328(with some minor modifications) and various extensions that have been made
14329popular by the PHP @code{Markdown Extra} package and @code{Maruku}.")
14330 (license license:expat)))
14331
14332(define-public ruby-kramdown-parser-gfm
14333 (package
14334 (name "ruby-kramdown-parser-gfm")
14335 (version "1.1.0")
14336 (source
14337 (origin
14338 (method url-fetch)
14339 (uri (rubygems-uri "kramdown-parser-gfm" version))
14340 (sha256
14341 (base32 "0a8pb3v951f4x7h968rqfsa19c8arz21zw1vaj42jza22rap8fgv"))))
14342 (build-system ruby-build-system)
14343 (arguments
14344 `(#:tests? #f)) ;no rakefile
14345 (propagated-inputs
14346 (list ruby-kramdown))
14347 (synopsis "Kramdown parser for the GFM dialect of Markdown")
14348 (description
14349 "This is a parser for kramdown that converts Markdown documents in the
14350GFM dialect to HTML.")
14351 (home-page "https://github.com/kramdown/parser-gfm")
14352 (license license:expat)))
14353
14354(define-public ruby-http-parser.rb
14355 (package
14356 (name "ruby-http-parser.rb")
14357 (version "0.6.0")
14358 (source
14359 (origin
14360 (method url-fetch)
14361 (uri (rubygems-uri "http_parser.rb" version))
14362 (sha256
14363 (base32
14364 "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi"))))
14365 (build-system ruby-build-system)
14366 (arguments
14367 ;; No tests
14368 `(#:tests? #f))
14369 (native-inputs
14370 (list ruby-rake-compiler ruby-rspec))
14371 (home-page "https://github.com/tmm1/http_parser.rb")
14372 (synopsis "HTTP parser un Ruby")
14373 (description "This gem is a simple callback-based HTTP request/response
14374parser for writing http servers, clients and proxies.")
14375 (license license:expat)))
14376
14377(define-public ruby-excon
14378 (package
14379 (name "ruby-excon")
14380 (version "0.109.0")
14381 (source (origin
14382 (method git-fetch) ;for tests
14383 (uri (git-reference
14384 (url "https://github.com/excon/excon")
14385 (commit (string-append "v" version))))
14386 (file-name (git-file-name name version))
14387 (sha256
14388 (base32
14389 "199niqbpzj70k3n6ybg4vbcw3qm76kwic4nl9747l1n0v49aaj24"))))
14390 (build-system ruby-build-system)
14391 (arguments
14392 (list
14393 #:tests? #f ;; some tests require DNS
14394 #:phases
14395 #~(modify-phases %standard-phases
14396 (replace 'replace-git-ls-files
14397 (lambda _
14398 (substitute* "excon.gemspec"
14399 (("`git ls-files -- data/. lib/.`")
14400 "`find data lib -type f`"))))
14401 (add-before 'check 'disable-server-spec-checks
14402 (lambda _ ;; TODO: Remove this if ruby-unicorn is available.
14403 ;; Some of the tests in this file require ruby-unicorn, which is
14404 ;; not yet packaged for guix and would pull in a lot of other
14405 ;; dependencies.
14406 (delete-file "spec/excon/test/server_spec.rb"))))))
14407 (native-inputs
14408 (list
14409 ruby-activesupport
14410 ruby-eventmachine
14411 ruby-json
14412 ruby-open4
14413 ruby-puma
14414 ruby-rspec
14415 ruby-shindo
14416 ruby-sinatra
14417 ruby-webrick))
14418 (synopsis "Usable, fast, simple Ruby HTTP 1.1")
14419 (description "Excon was designed to be simple, fast and performant. It
14420works great as a general HTTP(s) client and is particularly well suited to
14421usage in API clients.")
14422 (home-page "https://github.com/excon/excon")
14423 (license license:expat)))
14424
14425(define-public ruby-em-websocket
14426 (package
14427 (name "ruby-em-websocket")
14428 (version "0.5.1")
14429 (source
14430 (origin
14431 (method url-fetch)
14432 (uri (rubygems-uri "em-websocket" version))
14433 (sha256
14434 (base32
14435 "1bsw8vjz0z267j40nhbmrvfz7dvacq4p0pagvyp17jif6mj6v7n3"))))
14436 (build-system ruby-build-system)
14437 (arguments
14438 ;; No tests
14439 `(#:tests? #f))
14440 (propagated-inputs
14441 (list ruby-eventmachine ruby-http-parser.rb))
14442 (native-inputs
14443 (list bundler ruby-rspec))
14444 (home-page "https://github.com/igrigorik/em-websocket")
14445 (synopsis "EventMachine based WebSocket server")
14446 (description "Em-websocket is an EventMachine based WebSocket server
14447implementation.")
14448 (license license:expat)))
14449
14450(define-public ruby-rouge
14451 (package
14452 (name "ruby-rouge")
14453 (version "3.26.1")
14454 (source (origin
14455 (method url-fetch)
14456 (uri (rubygems-uri "rouge" version))
14457 (sha256
14458 (base32
14459 "197k0vskf72wxx0gzwld2jzg27bb7982xlvnzy9adlvkzp7nh8vf"))))
14460 (build-system ruby-build-system)
14461 (arguments `(#:tests? #f)); No rakefile
14462 (home-page "http://rouge.jneen.net/")
14463 (synopsis "Code highlighter")
14464 (description "Rouge is a code highlighter written in Ruby. It supports more
14465than 100 languages and outputs HTML or ANSI 256-color text. Its HTML output
14466is compatible with stylesheets designed for pygments.")
14467 (license (list
14468 ;; rouge is licensed under expat
14469 license:expat
14470 ;; pygments is licensed under bsd-2
14471 license:bsd-2))))
14472
14473(define-public ruby-hashie
14474 (let ((commit "73510552ba580867e9882fe092568916cbcd810b")
14475 (revision "0"))
14476 (package
14477 (name "ruby-hashie")
14478 (version (git-version "5.0.0" revision commit))
14479 (source (origin
14480 (method git-fetch) ;for tests
14481 (uri (git-reference
14482 (url "https://github.com/hashie/hashie")
14483 (commit commit)))
14484 (file-name (git-file-name name version))
14485 (sha256
14486 (base32
14487 "08rpx040h6vgx6ynk6w029f7z7c8aj2p4v135k2l1zxvnw617ddw"))))
14488 (build-system ruby-build-system)
14489 (arguments
14490 (list #:test-target "spec"
14491 #:phases #~(modify-phases %standard-phases
14492 (add-after 'unpack 'disable-bundler
14493 (lambda _
14494 (substitute* "Rakefile"
14495 ((".*require 'bundler'.*") "")
14496 ((".*Bundler.setup.*") "")
14497 (("Bundler::GemHelper\\.install_tasks") ""))))
14498 (add-after 'unpack 'disable-rubocop
14499 (lambda _
14500 (substitute* "Rakefile"
14501 (("require 'rubocop/rake_task'") "")
14502 (("RuboCop::RakeTask.new") ""))))
14503 (add-after 'unpack 'relax-requirements
14504 (lambda _
14505 ;; Contains multiple extraneous dependencies.
14506 (delete-file "Gemfile"))))))
14507 (native-inputs (list ruby-json ruby-pry ruby-rspec ruby-rspec-pending-for))
14508 (home-page "https://github.com/hashie/hashie")
14509 (synopsis "Extensions to Ruby Hashes")
14510 (description "Hashie is a collection of classes and mixins that make Ruby
14511hashes more powerful.")
14512 (license license:expat))))
14513
14514(define-public ruby-heredoc-unindent
14515 (package
14516 (name "ruby-heredoc-unindent")
14517 (version "1.2.0")
14518 (source (origin
14519 (method url-fetch)
14520 (uri (rubygems-uri "heredoc_unindent" version))
14521 (sha256
14522 (base32
14523 "14ijr2fsjwhrkjkcaz81d5xnfa4vvgvcflrff83avqw9klm011yw"))))
14524 (build-system ruby-build-system)
14525 (native-inputs
14526 (list ruby-hoe-3))
14527 (home-page "https://github.com/adrianomitre/heredoc_unindent")
14528 (synopsis "Heredoc indentation cleaner")
14529 (description "This gem removes common margin from indented strings, such
14530as the ones produced by indented heredocs. In other words, it strips out
14531leading whitespace chars at the beginning of each line, but only as much as
14532the line with the smallest margin.
14533
14534It is acknowledged that many strings defined by heredocs are just code and
14535fact is that most parsers are insensitive to indentation. If, however, the
14536strings are to be used otherwise, be it for printing or testing, the extra
14537indentation will probably be an issue and hence this gem.")
14538 (license license:expat)))
14539
14540(define-public ruby-safe-yaml
14541 (package
14542 (name "ruby-safe-yaml")
14543 (version "1.0.5")
14544 (source
14545 (origin
14546 (method git-fetch)
14547 (uri (git-reference
14548 (url "https://github.com/dtao/safe_yaml")
14549 (commit version)))
14550 (file-name (git-file-name name version))
14551 (sha256
14552 (base32
14553 "1a0wh7y3va2m7bjza95na2snw0vrdh9syz40mpjvjphbc4ph3pzg"))))
14554 (build-system ruby-build-system)
14555 (native-inputs
14556 (list ruby-rspec ruby-hashie ruby-heredoc-unindent))
14557 (arguments
14558 (list
14559 ;; Tests are broken since the move to ruby@3.
14560 ;; There's ongoing effort on the Jekyll dependent
14561 ;; to remove this orphan dependency.
14562 #:tests? #f ; broken since move to ruby@3
14563 #:test-target "spec"
14564 #:phases
14565 #~(modify-phases %standard-phases
14566 (add-before 'check 'set-TZ
14567 (lambda _
14568 ;; This test is dependent on the timezone
14569 ;; spec/transform/to_date_spec.rb:35
14570 ;; # SafeYAML::Transform::ToDate converts times to the local
14571 ;; timezone
14572 (setenv "TZ" "UTC-11"))))))
14573 (home-page "https://github.com/dtao/safe_yaml")
14574 (synopsis "YAML parser")
14575 (description "The SafeYAML gem provides an alternative implementation of
14576YAML.load suitable for accepting user input in Ruby applications.")
14577 (license license:expat)))
14578
14579(define-public ruby-yaml-lint
14580 ;; No tags for releases.
14581 (let ((commit "d6a253f7d33234a9c24660d582cf7014e882c0c2")
14582 (revision "0"))
14583 (package
14584 (name "ruby-yaml-lint")
14585 (version (git-version "0.1.2" revision commit))
14586 (source
14587 (origin
14588 (method git-fetch)
14589 (uri (git-reference
14590 (url "https://github.com/Pryz/yaml-lint")
14591 (commit commit)))
14592 (file-name (git-file-name name version))
14593 (sha256
14594 (base32 "0zk0jwzmcaaiyixjvkzdb54xhiqcnjkma72nkv0vm5csaphfdjkx"))))
14595 (build-system ruby-build-system)
14596 (arguments
14597 `(#:phases
14598 (modify-phases %standard-phases
14599 (replace 'check
14600 (lambda* (#:key tests? #:allow-other-keys)
14601 (when tests?
14602 (invoke "rspec")))))))
14603 (native-inputs
14604 (list ruby-coveralls ruby-rspec ruby-simplecov))
14605 (synopsis "Simple YAML check tool")
14606 (description
14607 "@code{yaml-lint} will simply try to load the YAML file with the built-in
14608Ruby yaml library.")
14609 (home-page "https://github.com/Pryz/yaml-lint")
14610 (license license:expat))))
14611
14612(define-public ruby-matrix
14613 (package
14614 (name "ruby-matrix")
14615 (version "0.4.2")
14616 (source (origin
14617 (method git-fetch) ;for tests
14618 (uri (git-reference
14619 (url "https://github.com/ruby/matrix")
14620 (commit (string-append "v" version))))
14621 (file-name (git-file-name name version))
14622 (sha256
14623 (base32
14624 "1asxr0jzh39lk5f8a9wm5avykrcy0v2wgd1bl3cszjczh99xy5k2"))))
14625 (build-system ruby-build-system)
14626 (synopsis "@code{Matrix} and @code{Vector} classes implementation for Ruby")
14627 (description "This Ruby library provides an implementation of the
14628@code{Matrix} and @code{Vector} classes. The @code{Matrix} class represents a
14629mathematical matrix. It provides methods for creating matrices, operating on
14630them arithmetically and algebraically, and determining their mathematical
14631properties (trace, rank, inverse, determinant, eigensystem, etc.). The
14632@code{Vector} class represents a mathematical vector, which is useful in its
14633own right, and also constitutes a row or column of a @code{Matrix}.")
14634 (home-page "https://github.com/ruby/matrix")
14635 (license license:bsd-2)))
14636
14637(define-public ruby-m
14638 (package
14639 (name "ruby-m")
14640 (version "1.6.1")
14641 (source (origin
14642 (method git-fetch) ;for tests
14643 (uri (git-reference
14644 (url "https://github.com/qrush/m")
14645 (commit (string-append "v" version))))
14646 (file-name (git-file-name name version))
14647 (sha256
14648 (base32
14649 "1aycfc8l1bsln1y300fv75fknn4amjcvc4rm2kd8hb6cqivjq5rg"))))
14650 (build-system ruby-build-system)
14651 (arguments
14652 (list
14653 #:phases
14654 #~(modify-phases %standard-phases
14655 (add-after 'unpack 'sanitize-dependencies
14656 (lambda _
14657 (delete-file "Gemfile")
14658 (delete-file "Gemfile.lock")
14659 ;; Rocco is unmaintained as of 2023/01/08; avoid depending on
14660 ;; it.
14661 (substitute* "m.gemspec"
14662 ;; The rdiscount and rocco dependencies are used for
14663 ;; generating the documentation.
14664 ((".*rdiscount.*") "")
14665 ((".*rocco.*") "")
14666 ((".*appraisal.*") "")
14667 ((".*coveralls.*") ""))
14668 (substitute* "Rakefile"
14669 ;; ruby-appraisal is not packaged, and is used to test against
14670 ;; various dependencies; circumvent its use.
14671 ((".*require 'appraisal'.*") "")
14672 ((".*require 'coveralls'.*") "")
14673 (("appraisal [:graphic:]+ rake")
14674 "rake")
14675 (("Coveralls.push!") ""))))
14676 (add-before 'replace-git-ls-files 'pre-replace-git-ls-files
14677 (lambda _
14678 (substitute* "m.gemspec"
14679 (("git ls-files -- bin/\\*")
14680 "find bin -type f -not -regex '.*\\.gem$' | sort")
14681 (("git ls-files -- \\{test,spec,features}/\\*")
14682 "find test -type f -not -regex '.*\\.gem$' | sort"))))
14683 (delete 'check)
14684 (add-after 'install 'check
14685 (lambda* (#:key tests? #:allow-other-keys)
14686 (setenv "GEM_PATH" (string-append
14687 (getenv "GEM_PATH") ":"
14688 #$output "/lib/ruby/vendor_ruby"))
14689 (when tests?
14690 (invoke "rake" "test")))))))
14691 (native-inputs (list ruby-activesupport))
14692 (propagated-inputs (list ruby-method-source ruby-rake))
14693 (synopsis "Ruby test runner that can run tests by line number")
14694 (description "@code{m} stands for metal, a better test/unit and
14695@code{minitest} test runner that can run tests by line number.")
14696 (home-page "https://github.com/qrush/m")
14697 (license license:expat)))
14698
14699(define-public ruby-mercenary
14700 (package
14701 (name "ruby-mercenary")
14702 (version "0.4.0")
14703 (source (origin
14704 (method url-fetch)
14705 (uri (rubygems-uri "mercenary" version))
14706 (sha256
14707 (base32
14708 "0f2i827w4lmsizrxixsrv2ssa3gk1b7lmqh8brk8ijmdb551wnmj"))))
14709 (build-system ruby-build-system)
14710 (arguments `(#:test-target "spec"))
14711 (native-inputs
14712 (list bundler))
14713 (home-page "https://github.com/jekyll/mercenary")
14714 (synopsis "Command-line apps library in Ruby")
14715 (description "Mercenary is a lightweight and flexible library for writing
14716command-line apps in Ruby.")
14717 (license license:expat)))
14718
14719(define-public ruby-launchy
14720 (package
14721 (name "ruby-launchy")
14722 (version "2.5.2")
14723 (source (origin
14724 (method url-fetch)
14725 (uri (rubygems-uri "launchy" version))
14726 (sha256
14727 (base32
14728 "06r43899384das2bkbrpsdxsafyyqa94il7111053idfalb4984a"))))
14729 (build-system ruby-build-system)
14730 (native-inputs (list curl links ruby-simplecov))
14731 (propagated-inputs (list ruby-addressable))
14732 (synopsis "Ruby helper class for launching applications")
14733 (description
14734 "Launchy is helper class for launching applications in a fire and forget
14735manner. The aim of Launchy is to provide a common approach to launching
14736external applications from within Ruby programs.")
14737 (home-page "https://github.com/copiousfreetime/launchy")
14738 (license license:isc)))
14739
14740(define-public ruby-liquid
14741 (package
14742 (name "ruby-liquid")
14743 (version "5.4.0")
14744 (source (origin
14745 (method git-fetch) ;for tests
14746 (uri (git-reference
14747 (url "https://github.com/Shopify/liquid")
14748 (commit (string-append "v" version))))
14749 (file-name (git-file-name name version))
14750 (sha256
14751 (base32
14752 "1qdnvd1f9zs6wyilcgxyh93wis7ikbpimjxfpbkpk2ngr1m2c8la"))))
14753 (build-system ruby-build-system)
14754 (arguments
14755 (list
14756 #:phases
14757 #~(modify-phases %standard-phases
14758 (delete 'check) ;moved after the install phase
14759 (add-after 'install 'check
14760 (assoc-ref %standard-phases 'check))
14761 (add-before 'check 'set-GEM_PATH
14762 (lambda _
14763 (setenv "GEM_PATH" (string-append
14764 (getenv "GEM_PATH") ":"
14765 #$output "/lib/ruby/vendor_ruby"))))
14766 (add-before 'check 'delete-problematic-tests
14767 (lambda _
14768 ;; The following test fails with 'Unknown tag' errors (see:
14769 ;; https://github.com/Shopify/liquid/issues/1699).
14770 (delete-file "test/integration/tags/inline_comment_test.rb"))))))
14771 (native-inputs (list ruby-liquid-c-bootstrap ruby-rspec ruby-stackprof))
14772 (home-page "https://shopify.github.io/liquid/")
14773 (synopsis "Template language")
14774 (description "Liquid is a template language written in Ruby. It is used
14775to load dynamic content on storefronts.")
14776 (license license:expat)))
14777
14778(define-public ruby-liquid-4
14779 (package
14780 (inherit ruby-liquid)
14781 (name "ruby-liquid")
14782 (version "4.0.4")
14783 (source (origin
14784 (method git-fetch) ;for tests
14785 (uri (git-reference
14786 (url "https://github.com/Shopify/liquid")
14787 (commit (string-append "v" version))))
14788 (file-name (git-file-name name version))
14789 (sha256
14790 (base32
14791 "0cr321nd0zkbxirgdfmz37xx7j26zfnicjh585fi20vx60frry83"))))
14792 (arguments (list #:tests? #f)))) ;avoid required an older ruby-liquid-c
14793
14794;;; This variant is purposefully incomplete, lacking ruby-liquid so that it
14795;;; can be used for ruby-liquid's test suite.
14796(define ruby-liquid-c-bootstrap
14797 (package
14798 (name "ruby-liquid-c-bootstrap")
14799 (version "4.1.0")
14800 (source (origin
14801 (method url-fetch)
14802 (uri (rubygems-uri "liquid-c" version))
14803 (sha256
14804 (base32
14805 "0jl37jz9hbfbhknryx4myxqx4n1f5dzyzmf1sapkcbw93xyrmkch"))))
14806 (build-system ruby-build-system)
14807 (arguments (list #:tests? #f))
14808 (native-inputs (list ruby-rake-compiler))
14809 (synopsis "Liquid performance extension in C")
14810 (description "This package provides a Partial native implementation of the
14811liquid ruby gem in C that makes it operate about three times faster.")
14812 (home-page "https://github.com/shopify/liquid-c")
14813 (license license:expat)))
14814
14815(define-public ruby-liquid-c
14816 (package/inherit ruby-liquid-c-bootstrap
14817 (name "ruby-liquid-c")
14818 (arguments
14819 (list
14820 ;; Only run the unit tests, because the test:integration target fails
14821 ;; with "File does not exist: test_helper" (see:
14822 ;; https://github.com/Shopify/liquid-c/issues/188).
14823 #:test-target "test:unit"
14824 #:phases
14825 #~(modify-phases %standard-phases
14826 (add-after 'extract-gemspec 'relax-requirements
14827 (lambda _
14828 (substitute* "Gemfile"
14829 ;; Do not attempt to fetch a gem from git.
14830 (("git_source\\(:github) do \\|repo_name\\|")
14831 "if false")
14832 ((", github: \"Shopify/liquid\", ref: \"master\"")
14833 "")
14834 ;; Remove extraneous dependencies.
14835 ((".*byebug.*") "")
14836 ((".*rubocop.*") "")
14837 ;; Relax spy version specification.
14838 (("gem \"spy\", \"0.4.1\"")
14839 "gem \"spy\", \">= 0.4.1\"")))))))
14840 (native-inputs
14841 (list ruby-benchmark-ips
14842 ruby-rake-compiler
14843 ruby-ruby-memcheck
14844 ruby-spy
14845 ruby-stackprof))
14846 (propagated-inputs
14847 (list ruby-liquid))))
14848
14849(define-public ruby-localhost
14850 (package
14851 (name "ruby-localhost")
14852 (version "1.1.10")
14853 (source (origin
14854 (method git-fetch) ;for tests
14855 (uri (git-reference
14856 (url "https://github.com/socketry/localhost")
14857 (commit (string-append "v" version))))
14858 (file-name (git-file-name name version))
14859 (sha256
14860 (base32
14861 "1yp70w15wpfk613ap5f4y15yx4n2qqwa67vqc2f4lv7npf3llcz0"))))
14862 (build-system ruby-build-system)
14863 (arguments
14864 ;; XXX: The test suite requires sus-fixtures-async, which requires async,
14865 ;; only available for Ruby 3.0.
14866 (list #:tests? #f
14867 #:phases
14868 #~(modify-phases %standard-phases
14869 (add-before 'build 'remove-missing-signing-key
14870 (lambda _
14871 ;; Otherwise, the build fails with ENOENT.
14872 (substitute* "localhost.gemspec"
14873 ((".*spec.signing_key.*") "")))))))
14874 (synopsis "API for generating per-user self-signed root certificates")
14875 (description "This package provides @code{localhost}, a Ruby library for
14876Managing a local certificate authority for self-signed, localhost development
14877servers.")
14878 (home-page "https://github.com/socketry/localhost")
14879 (license license:expat)))
14880
14881(define-public ruby-forwardable-extended
14882 (package
14883 (name "ruby-forwardable-extended")
14884 (version "2.6.0")
14885 (source (origin
14886 (method url-fetch)
14887 (uri (rubygems-uri "forwardable-extended" version))
14888 (sha256
14889 (base32
14890 "15zcqfxfvsnprwm8agia85x64vjzr2w0xn9vxfnxzgcv8s699v0v"))))
14891 (build-system ruby-build-system)
14892 (arguments `(#:tests? #f)); Cyclic dependency on luna-rspec-formatters
14893 (home-page "https://github.com/envygeeks/forwardable-extended")
14894 (synopsis "Delegation to hashes and instance variables in Forwardable")
14895 (description "Forwardable Extended provides more @code{Forwardable}
14896methods for your source as @code{Forwardable::Extended}.")
14897 (license license:expat)))
14898
14899(define-public ruby-pathutil
14900 (package
14901 (name "ruby-pathutil")
14902 (version "0.16.2")
14903 (source (origin
14904 (method url-fetch)
14905 (uri (rubygems-uri "pathutil" version))
14906 (sha256
14907 (base32
14908 "12fm93ljw9fbxmv2krki5k5wkvr7560qy8p4spvb9jiiaqv78fz4"))))
14909 (build-system ruby-build-system)
14910 (propagated-inputs
14911 (list ruby-forwardable-extended))
14912 (native-inputs
14913 (list bundler ruby-rspec))
14914 ;; Fails with: cannot load such file --
14915 ;; /tmp/guix-build-ruby-pathutil-0.16.0.drv-0/gem/benchmark/support/task
14916 (arguments `(#:tests? #f))
14917 (home-page "https://github.com/envygeeks/pathutil")
14918 (synopsis "Extended implementation of Pathname")
14919 (description "Pathutil tries to be a faster pure Ruby implementation of
14920Pathname.")
14921 (license license:expat)))
14922
14923(define-public ruby-terminal-table
14924 (package
14925 (name "ruby-terminal-table")
14926 (version "3.0.2")
14927 (source (origin
14928 (method git-fetch)
14929 (uri (git-reference
14930 (url "https://github.com/tj/terminal-table")
14931 (commit (string-append "v" version))))
14932 (file-name (git-file-name name version))
14933 (sha256
14934 (base32
14935 "1c3f7ng3lxq962n8sbmlsvjx6srh5i801wzsyhxmfz2g880f5jps"))))
14936 (arguments
14937 '(#:phases
14938 (modify-phases %standard-phases
14939 (add-before 'check 'remove-unnecessary-dependencies
14940 (lambda _
14941 (substitute* "terminal-table.gemspec"
14942 (("s.add_runtime_dependency.*") "\n")
14943 (("s.add_development_dependency.*") "\n"))
14944 (substitute* "Gemfile"
14945 ((".*tins.*") "\n"))))
14946 (replace 'check
14947 (lambda* (#:key tests? #:allow-other-keys)
14948 (when tests?
14949 (invoke "rspec")))))))
14950 (build-system ruby-build-system)
14951 (propagated-inputs
14952 (list ruby-unicode-display-width))
14953 (native-inputs
14954 (list ruby-rspec ruby-term-ansicolor))
14955 (home-page "https://github.com/tj/terminal-table")
14956 (synopsis "Simple, feature rich ASCII table generation library")
14957 (description
14958 "Terminal Table is a fast and simple, yet feature rich
14959table generator written in Ruby. It supports ASCII and
14960Unicode formatted tables.")
14961 (license license:expat)))
14962
14963(define-public jekyll
14964 (package
14965 (name "jekyll")
14966 (version "4.3.4")
14967 (source (origin
14968 (method git-fetch) ;for tests
14969 (uri (git-reference
14970 (url "https://github.com/jekyll/jekyll")
14971 (commit (string-append "v" version))))
14972 (file-name (git-file-name name version))
14973 (sha256
14974 (base32
14975 "0sz285x5ppbifrnixi9sdzv28kg4x3qbzds3qniiwh1ip9hi1yk4"))))
14976 (build-system ruby-build-system)
14977 (arguments
14978 (list #:modules '((guix build ruby-build-system)
14979 (guix build utils)
14980 (ice-9 ftw)
14981 (srfi srfi-26))
14982 ;; The cucumber acceptance suite is not run as it depends on an old
14983 ;; version (5).
14984 #:test-target "spec"
14985 #:phases
14986 #~(modify-phases %standard-phases
14987 (add-before 'check 'disable-problematic-tests
14988 ;; TODO: Package the missing test inputs.
14989 (lambda _
14990 (with-directory-excursion "test"
14991 ;; Requires 'jekyll-coffeescript'.
14992 (delete-file "test_coffeescript.rb")
14993 ;; Requires 'tomlrb'.
14994 (delete-file "test_configuration.rb")
14995 (substitute* "test_filters.rb"
14996 ;; The sassify tests fail due to white space
14997 ;; differences (see:
14998 ;; https://github.com/jekyll/jekyll/issues/9322).
14999 ((".*s?ssify with simple string.*" all)
15000 (string-append all
15001 " skip('fails on guix')\n")))
15002 ;; Requires kramdown-syntax-coderay.
15003 (delete-file "test_kramdown.rb")
15004 ;; Requires 'test-theme', usually made available from the
15005 ;; local checkout via Bundler (not used here).
15006 (delete-file "test_layout_reader.rb")
15007 ;; Requires a large amount of un-packaged dependencies.
15008 (delete-file "test_plugin_manager.rb")
15009 ;; Requires 'classifier-reborn'.
15010 (delete-file "test_related_posts.rb")
15011 ;; This one causes a test failure similar to the ones for
15012 ;; sassify above.
15013 (delete-file "test_sass.rb")
15014 ;; This would require running the tests via 'bundle
15015 ;; exec', but the Gemfile contains too many (extraneous)
15016 ;; dependencies.
15017 (delete-file "test_site.rb")
15018 ;; Delete the theme tests, as they require 'test-theme',
15019 ;; usually made available from the local checkout via the
15020 ;; Gemfile/bundler (not used here).
15021 (for-each delete-file
15022 (scandir
15023 "." (cut string-prefix? "test_theme" <>)))
15024 ;; This one also relies on 'test-theme'.
15025 (delete-file "test_liquid_renderer.rb")
15026 ;; This test assumes internet connectivity, negate it, as
15027 ;; there's no Internet in the build container.
15028 (substitute* "test_utils.rb"
15029 (("assert Utils::Internet\\.connected\\?")
15030 "refute Utils::Internet.connected?"))
15031 ;; These tests fail non-deterministically (see:
15032 ;; https://github.com/jekyll/jekyll/issues/9323).
15033 (delete-file "test_new_command.rb")
15034 (delete-file "test_collections.rb"))))
15035 (replace 'check
15036 (lambda* (#:key tests? #:allow-other-keys)
15037 (when tests?
15038 ;; Invoke the test scripts manually, as 'rake test'
15039 ;; doesn't show any failure details, making debugging
15040 ;; needlessly difficult.
15041 (for-each (lambda (f)
15042 (invoke "ruby" "-I" "test" f))
15043 (find-files "test" "^test_.*\\.rb$"))))))))
15044 (native-inputs
15045 (list bundler
15046 ruby-httpclient
15047 ruby-minitest-profile
15048 ruby-minitest-reporters
15049 ruby-nokogiri
15050 ruby-rspec
15051 ruby-rspec-mocks
15052 ruby-shoulda
15053 ruby-simplecov))
15054 (propagated-inputs
15055 (list ruby-addressable
15056 ruby-colorator
15057 ruby-em-websocket
15058 ruby-i18n
15059 ruby-jekyll-sass-converter
15060 ruby-jekyll-watch
15061 ruby-kramdown-parser-gfm
15062 ruby-liquid-4
15063 ruby-mercenary
15064 ruby-pathutil
15065 ruby-rouge
15066 ruby-safe-yaml
15067 ruby-sassc
15068 ruby-terminal-table
15069 ruby-webrick))
15070 (home-page "https://jekyllrb.com/")
15071 (synopsis "Static site generator")
15072 (description "Jekyll is a simple, blog aware, static site generator.")
15073 (license license:expat)))
15074
15075(define-public ruby-jekyll-paginate-v2
15076 (package
15077 (name "ruby-jekyll-paginate-v2")
15078 (version "3.0.0")
15079 (source (origin
15080 (method url-fetch)
15081 (uri (rubygems-uri "jekyll-paginate-v2" version))
15082 (sha256
15083 (base32
15084 "1qzlqhpiqz28624fp0ak76hfy7908w6kpx62v7z43aiwjv0yc6q0"))))
15085 (build-system ruby-build-system)
15086 (propagated-inputs
15087 (list jekyll))
15088 (home-page "https://github.com/sverrirs/jekyll-paginate-v2")
15089 (synopsis "Pagination Generator for Jekyll 3")
15090 (description "The Pagination Generator forms the core of the pagination
15091logic in Jekyll. It calculates and generates the pagination pages.")
15092 (license license:expat)))
15093
15094(define-public ruby-faraday-net-http
15095 (package
15096 (name "ruby-faraday-net-http")
15097 (version "3.0.2")
15098 (source (origin
15099 (method url-fetch)
15100 (uri (rubygems-uri "faraday-net_http" version))
15101 (sha256
15102 (base32
15103 "13byv3mp1gsjyv8k0ih4612y6vw5kqva6i03wcg4w2fqpsd950k8"))))
15104 (build-system ruby-build-system)
15105 ;; Do not run the test suite here as it would introduce a dependency cycle
15106 ;; with ruby-faraday, which uses it as part of its test suite.
15107 (arguments (list #:tests? #f))
15108 (synopsis "Faraday adapter for Net::HTTP")
15109 (description "This gem is a Faraday adapter for the @code{Net::HTTP}
15110library. Faraday is an HTTP client library that provides a common interface
15111over many adapters.")
15112 (home-page "https://github.com/lostisland/faraday-net_http")
15113 (license license:expat)))
15114
15115(define-public ruby-faraday
15116 (package
15117 (name "ruby-faraday")
15118 (version "2.7.4")
15119 (source (origin
15120 (method git-fetch)
15121 (uri (git-reference
15122 (url "https://github.com/lostisland/faraday")
15123 (commit (string-append "v" version))))
15124 (file-name (git-file-name name version))
15125 (sha256
15126 (base32
15127 "0ya6jqa7ryr4i62mmzjjxzd8i8y0pyw0cbhifd758rs6lvkzmxa3"))))
15128 (build-system ruby-build-system)
15129 (arguments (list #:test-target "spec"))
15130 (native-inputs
15131 (list ruby-coveralls
15132 ruby-pry
15133 ruby-rack
15134 ruby-rspec
15135 ruby-simplecov
15136 ruby-webmock))
15137 ;; Propagate faraday-net-http as this is the default adapter used, and
15138 ;; many Ruby projects assumes it is available.
15139 (propagated-inputs (list ruby-ruby2-keywords ruby-faraday-net-http))
15140 (synopsis "Ruby HTTP/REST API client library")
15141 (description "Faraday is a HTTP/REST API client library which provides a
15142common interface over different adapters.")
15143 (home-page "https://github.com/lostisland/faraday")
15144 (license license:expat)))
15145
15146(define-public ruby-nio4r
15147 (package
15148 (name "ruby-nio4r")
15149 (version "2.5.2")
15150 (source
15151 (origin
15152 (method url-fetch)
15153 (uri (rubygems-uri "nio4r" version))
15154 (sha256
15155 (base32
15156 "0gnmvbryr521r135yz5bv8354m7xn6miiapfgpg1bnwsvxz8xj6c"))))
15157 (build-system ruby-build-system)
15158 (arguments
15159 '(#:phases
15160 (modify-phases %standard-phases
15161 (add-after 'unpack 'remove-unnecessary-dependencies
15162 (lambda _
15163 (substitute* "spec/spec_helper.rb"
15164 ;; Coveralls is for uploading test coverage information to an
15165 ;; online service, and thus unnecessary for building the Guix
15166 ;; package
15167 (("require \"coveralls\"") "")
15168 (("Coveralls\\.wear!") "")
15169 ;; Remove rspec/retry as we are not retrying the tests
15170 (("require \"rspec/retry\"") "")
15171 (("config\\.display_try_failure_messages = true") "")
15172 (("config\\.verbose_retry = true") ""))))
15173 (add-before 'check 'compile
15174 (lambda _
15175 (invoke "rake" "compile")))
15176 (replace 'check
15177 (lambda* (#:key tests? #:allow-other-keys)
15178 (when tests?
15179 (invoke "rspec")))))))
15180 (native-inputs
15181 (list bundler ruby-rake-compiler ruby-rspec ruby-rubocop))
15182 (synopsis "New I/O for Ruby")
15183 (description
15184 "@code{nio} provides cross-platform asynchronous I/O primitives in Ruby
15185for scalable network clients and servers.")
15186 (home-page "https://github.com/socketry/nio4r")
15187 (license license:expat)))
15188
15189(define-public ruby-language-server-protocol
15190 (package
15191 (name "ruby-language-server-protocol")
15192 (version "3.17.0.3")
15193 (source (origin
15194 (method git-fetch) ;for tests
15195 (uri (git-reference
15196 (url "https://github.com/mtsmfm/language_server-protocol-ruby")
15197 (commit (string-append "v" version))))
15198 (file-name (git-file-name name version))
15199 (sha256
15200 (base32
15201 "0f2g301fz99c6nkca39s9227brlycznv8a9r4b4i99rg25m91lc6"))))
15202 (build-system ruby-build-system)
15203 (arguments
15204 (list
15205 #:phases
15206 #~(modify-phases %standard-phases
15207 (add-after 'unpack 'remove-unnecessary-dependencies
15208 (lambda _
15209 (substitute* "Gemfile"
15210 (("gem \"pry-byebug\"") ""))))
15211 (replace 'replace-git-ls-files
15212 (lambda _
15213 (substitute* "language_server-protocol.gemspec"
15214 (("git ls-files -z([^`]*)" _ files)
15215 (string-append "find " files
15216 " -type f -not -regex '.*\\.gem$'"
15217 " -print0 | sort -z"))))))))
15218 (native-inputs
15219 (list ruby-activesupport
15220 ruby-benchmark-ips
15221 ruby-m
15222 ruby-minitest
15223 ruby-minitest-power-assert))
15224 (synopsis "Language Server Protocol (LSP) development kit for Ruby")
15225 (description "This package provides a Language Server Protocol (LSP)
15226development kit for Ruby.")
15227 (home-page "https://github.com/mtsmfm/language_server-protocol-ruby")
15228 (license license:expat)))
15229
15230(define-public ruby-spy
15231 (package
15232 (name "ruby-spy")
15233 (version "1.0.5")
15234 (source (origin
15235 (method url-fetch)
15236 (uri (rubygems-uri "spy" version))
15237 (sha256
15238 (base32
15239 "0g2mma8q17m26k5s864ndlvvqllhcivwg2wdigjvb7z06iw17gds"))))
15240 (build-system ruby-build-system)
15241 (arguments
15242 (list #:phases #~(modify-phases %standard-phases
15243 (add-after 'extract-gemspec 'relax-requirements
15244 (lambda _
15245 (substitute* "spy.gemspec"
15246 ((".*pry-byebug.*") ""))
15247 (substitute* "test/test_helper.rb"
15248 ((".*pry-byebug.*") ""))
15249 (substitute* "Gemfile"
15250 ((".*redcarpet.*") "")
15251 ((".*yard.*") "")))))))
15252 (native-inputs
15253 (list ruby-coveralls
15254 ruby-minitest-reporters
15255 ruby-pry
15256 ruby-rspec-core
15257 ruby-rspec-expectations))
15258 (synopsis "Mocking library for Ruby")
15259 (description "Spy is a mocking library. By default, it will raise an
15260error if you attempt to stub a method that doesn't exist or call the stubbed
15261method with the wrong arity.")
15262 (home-page "https://github.com/ryanong/spy")
15263 (license license:expat)))
15264
15265(define-public ruby-subprocess
15266 (package
15267 (name "ruby-subprocess")
15268 (version "1.5.6")
15269 (source (origin
15270 (method url-fetch)
15271 (uri (rubygems-uri "subprocess" version))
15272 (sha256
15273 (base32
15274 "0v49ahfx9b75qg42sl8a3l367g2vihc16g8z5f2raxpxjl1wh2s2"))))
15275 (build-system ruby-build-system)
15276 ;; Do not run the test suite, as there its test dependency ruby-sord would
15277 ;; introduce a cycle with ruby-sorbet-runtime.
15278 (arguments (list #:tests? #f))
15279 (native-inputs (list ruby-minitest ruby-pry))
15280 (synopsis "Ruby library to control and communicate with spawned processes")
15281 (description "This Ruby library is controlling and communicating with
15282spawned processes. It is designed after Python's @code{subprocess} module.")
15283 (home-page "https://github.com/stripe/subprocess")
15284 (license license:expat)))
15285
15286(define-public ruby-sus
15287 (package
15288 (name "ruby-sus")
15289 (version "0.20.3")
15290 (source (origin
15291 (method git-fetch) ;for gems.rb
15292 (uri (git-reference
15293 (url "https://github.com/ioquatix/sus")
15294 (commit (string-append "v" version))))
15295 (file-name (git-file-name name version))
15296 (sha256
15297 (base32
15298 "0j4rkh9li79674h3lfkxlcdygscmb22l77i7hwhxl3gw103gkpdr"))))
15299 (build-system ruby-build-system)
15300 (arguments
15301 (list #:phases
15302 #~(modify-phases %standard-phases
15303 (add-before 'build 'prune-gems.rb
15304 (lambda _
15305 (substitute* "gems.rb"
15306 (("gem \"bake-modernize\"") "")
15307 (("gem \"bake-gem\"") "")
15308 (("gem \"utopia-project\"") ""))))
15309 (add-before 'build 'remove-missing-signing-key
15310 (lambda _
15311 ;; Otherwise, the build fails with ENOENT.
15312 (substitute* "sus.gemspec"
15313 ((".*spec.signing_key.*") ""))))
15314 (delete 'check) ;moved after install
15315 (add-after 'install 'check
15316 (lambda* (#:key tests? #:allow-other-keys)
15317 (when tests?
15318 (setenv "CONSOLE_LEVEL" "debug")
15319 (setenv "HOME" "/tmp")
15320 ;; 'bundle exec' must be used to workaround a problem
15321 ;; when using bake test and GEM_PATH (see:
15322 ;; https://github.com/ioquatix/bake/issues/11).
15323 (invoke "bundle" "exec" "bake" "test"))))
15324 (add-before 'check 'set-paths
15325 (lambda _
15326 (setenv "PATH" (string-append (getenv "PATH") ":"
15327 #$output "/bin"))
15328 (setenv "GEM_PATH" (string-append
15329 (getenv "GEM_PATH") ":"
15330 #$output "/lib/ruby/vendor_ruby")))))))
15331 (native-inputs (list ruby-bake-test ruby-bake-test-external ruby-covered))
15332 (synopsis "Fast and scalable test runner for Ruby")
15333 (description "This package provides a fast and scalable test runner for Ruby.")
15334 (home-page "https://github.com/ioquatix/sus")
15335 (license license:expat)))
15336
15337(define-public ruby-syntax-tree
15338 (package
15339 (name "ruby-syntax-tree")
15340 (version "6.1.1")
15341 (source (origin
15342 (method git-fetch) ;for tests
15343 (uri (git-reference
15344 (url "https://github.com/ruby-syntax-tree/syntax_tree")
15345 (commit (string-append "v" version))))
15346 (file-name (git-file-name name version))
15347 (sha256
15348 (base32
15349 "0356lgvqp22nkqlrgszf7myfdg4arclg278awh34zyby1cx6hb2k"))))
15350 (build-system ruby-build-system)
15351 (arguments
15352 (list
15353 #:phases
15354 #~(modify-phases %standard-phases
15355 ;; The tests rely on the Gem being installed, so move the check
15356 ;; phase after the install phase.
15357 (delete 'check)
15358 (add-after 'install 'check
15359 (lambda* (#:key tests? #:allow-other-keys)
15360 (setenv "GEM_PATH" (string-append
15361 #$output "/lib/ruby/vendor_ruby:"
15362 (getenv "GEM_PATH")))
15363 (when tests?
15364 (invoke "rake" "test")))))))
15365 (native-inputs (list ruby-rubocop-ast ruby-simplecov))
15366 (propagated-inputs (list ruby-prettier-print))
15367 (synopsis "Fast Ruby parser and formatter")
15368 (description "Syntax Tree is a suite of tools built on top of the internal
15369CRuby parser. It provides the ability to generate a syntax tree from source,
15370as well as the tools necessary to inspect and manipulate that syntax tree. It
15371can be used to build formatters, linters, language servers, and more.")
15372 (home-page "https://github.com/ruby-syntax-tree/syntax_tree")
15373 (license license:expat)))
15374
15375(define-public ruby-stringio
15376 (package
15377 (name "ruby-stringio")
15378 (version "3.1.0")
15379 (source (origin
15380 (method git-fetch)
15381 (uri (git-reference
15382 (url "https://github.com/ruby/stringio")
15383 (commit (string-append "v" version))))
15384 (file-name (git-file-name name version))
15385 (sha256
15386 (base32
15387 "1jgi2w5y0z0x9mfapr2pdlag4wvn03fpf5kbai8bscyh8nn79yka"))))
15388 (build-system ruby-build-system)
15389 (native-inputs (list ruby-rake-compiler ruby-test-unit-ruby-core))
15390 (synopsis "Pseudo `IO` class from and to `String`")
15391 (description "Pseudo `IO` class from and to `String`.")
15392 (home-page "https://github.com/ruby/stringio")
15393 (license license:bsd-2)))
15394
15395(define-public ruby-stream
15396 (package
15397 (name "ruby-stream")
15398 (version "0.5.5")
15399 (source (origin
15400 (method url-fetch)
15401 (uri (rubygems-uri "stream" version))
15402 (sha256
15403 (base32
15404 "016m9v81vpj14d8g5ins91zc4pzl7vf5f1gxl7jhfsfy601k7cv2"))))
15405 (build-system ruby-build-system)
15406 (arguments
15407 '(#:phases
15408 (modify-phases %standard-phases
15409 (add-before 'check 'remove-version-constraints
15410 (lambda _
15411 (delete-file "Gemfile.lock"))))))
15412 (native-inputs (list bundler ruby-stringio ruby-webrick ruby-yard))
15413 (synopsis "Interface for external iterators")
15414 (description "Module Stream defines an interface for external iterators.")
15415 (home-page "https://github.com/monora/stream")
15416 (license license:bsd-2)))
15417
15418(define sorbet-version "0.5.10610.20230106174520-1fa668010")
15419
15420(define sorbet-monorepo
15421 (origin
15422 (method git-fetch)
15423 (uri (git-reference
15424 (url "https://github.com/sorbet/sorbet")
15425 (commit sorbet-version)))
15426 (file-name (string-append "sorbet-" sorbet-version "-checkout"))
15427 (sha256
15428 (base32
15429 "0f21dl06alxwn6xgdxyrkd58plmmsv04z2bcls9ld4cfzsrs5537"))))
15430
15431(define (make-sorbet-gem-source gem)
15432 "Return the source of GEM, a sub-directory."
15433 (computed-file
15434 (string-append "ruby-sorbet-" gem "-" sorbet-version "-checkout")
15435 (with-imported-modules (source-module-closure '((guix build utils)))
15436 #~(begin
15437 (use-modules (guix build utils))
15438 (copy-recursively (string-append #$sorbet-monorepo
15439 "/gems/sorbet-" #$gem)
15440 #$output)))))
15441
15442(define-public ruby-sorbet-runtime
15443 (package
15444 (name "ruby-sorbet-runtime")
15445 (version sorbet-version)
15446 (source (make-sorbet-gem-source "runtime"))
15447 (build-system ruby-build-system)
15448 ;; 25 out of 841 tests currently fail, seemingly due to invalid
15449 ;; assumptions about file names in the build environment (see:
15450 ;; https://github.com/sorbet/sorbet/issues/6650).
15451 (arguments (list #:tests? #f))
15452 (native-inputs
15453 (list ruby-minitest
15454 ruby-mocha
15455 ruby-rubocop
15456 ruby-rubocop-performance
15457 ruby-concurrent-ruby
15458 ruby-pry
15459 ruby-parser
15460 ruby-subprocess))
15461 (synopsis "Runtime type checking component for Sorbet")
15462 (description "Sorbet's runtime type checking component. Sorbet is a
15463powerful type checker for Ruby.")
15464 (home-page "https://sorbet.org")
15465 (license license:asl2.0)))
15466
15467(define-public ruby-mustache
15468 (package
15469 (name "ruby-mustache")
15470 (version "1.1.1")
15471 (source
15472 (origin
15473 (method url-fetch)
15474 (uri (rubygems-uri "mustache" version))
15475 (sha256
15476 (base32 "1l0p4wx15mi3wnamfv92ipkia4nsx8qi132c6g51jfdma3fiz2ch"))))
15477 (build-system ruby-build-system)
15478 (native-inputs
15479 `(("ruby-simplecov" ,ruby-simplecov)
15480 ("test-patch"
15481 ,(search-patch "ruby-mustache-1.1.1-fix-race-condition-tests.patch"))))
15482 (arguments
15483 `(#:phases
15484 (modify-phases %standard-phases
15485 (add-after 'unpack 'patch-tests
15486 (lambda* (#:key inputs #:allow-other-keys)
15487 (invoke "patch" "-p1" "--batch" "-i"
15488 (assoc-ref inputs "test-patch")))))))
15489 (synopsis "Framework-agnostic way to render logic-free views")
15490 (description
15491 "Mustache is a framework-agnostic way to render logic-free views.
15492Think of Mustache as a replacement for your views. Instead of views
15493consisting of ERB or HAML with random helpers and arbitrary logic,
15494your views are broken into two parts: a Ruby class and an HTML
15495template.")
15496 (home-page "https://github.com/mustache/mustache")
15497 (license license:expat)))
15498
15499(define-public ruby-mustermann
15500 (package
15501 (name "ruby-mustermann")
15502 (version "3.0.0")
15503 (source
15504 (origin
15505 (method url-fetch)
15506 (uri (rubygems-uri "mustermann" version))
15507 (sha256
15508 (base32
15509 "0rwbq20s2gdh8dljjsgj5s6wqqfmnbclhvv2c2608brv7jm6jdbd"))))
15510 (build-system ruby-build-system)
15511 (arguments
15512 ;; No tests.
15513 '(#:tests? #f))
15514 (synopsis "Library implementing patterns that behave like regular expressions")
15515 (description "Given a string pattern, Mustermann will turn it into an
15516object that behaves like a regular expression and has comparable performance
15517characteristics.")
15518 (home-page "https://github.com/sinatra/mustermann")
15519 (license license:expat)))
15520
15521(define-public ruby-prettier-print
15522 (package
15523 (name "ruby-prettier-print")
15524 (version "1.2.1")
15525 (source (origin
15526 (method git-fetch) ;for tests
15527 (uri (git-reference
15528 (url "https://github.com/ruby-syntax-tree/prettier_print")
15529 (commit (string-append "v" version))))
15530 (file-name (git-file-name name version))
15531 (sha256
15532 (base32
15533 "00cg40jc0il1hpsrpsrqwhsxmx7day9lxp1ksrm08zxzsrz9ykqz"))))
15534 (build-system ruby-build-system)
15535 (native-inputs (list ruby-simplecov))
15536 (synopsis "Compatible and featureful implementation of @code{prettyprint}")
15537 (description "This package provides a drop-in replacement for the
15538@code{prettyprint} gem, with more functionality.")
15539 (home-page "https://github.com/ruby-syntax-tree/prettier_print")
15540 (license license:expat)))
15541
15542(define-public ruby-html-proofer
15543 (package
15544 (name "ruby-html-proofer")
15545 (version "5.0.3")
15546 (source
15547 (origin
15548 (method git-fetch)
15549 (uri (git-reference
15550 (url "https://github.com/gjtorikian/html-proofer")
15551 (commit (string-append "v" version))))
15552 (file-name (git-file-name name version))
15553 (sha256
15554 (base32
15555 "01ksss3ikppc45z2q33bx8bb9785bqlp1rdqascaqg9mhs392adk"))))
15556 (build-system ruby-build-system)
15557 (arguments
15558 (list
15559 ;; Tests require vcr, which is under the Hippocratic license, which is
15560 ;; not a free software license (see:
15561 ;; https://www.gnu.org/licenses/license-list.html#hippocratic).
15562 #:tests? #f
15563 #:phases
15564 #~(modify-phases %standard-phases
15565 (add-after 'extract-gemspec 'relax-requirements
15566 (lambda _
15567 (substitute* "html-proofer.gemspec"
15568 (("required_ruby_version = \\[\">= 3.1\"")
15569 "required_ruby_version = [\">= 2.6\""))))
15570 (replace 'replace-git-ls-files
15571 (lambda _
15572 ;; The html-proofer.gemspec file contains 'all_files = %x(git
15573 ;; ls-files -z).split("\x0")', but the original phase matches on
15574 ;; `git ls-files -z`.
15575 ;; TODO: Improve ruby-build-system patterns on core-updates.
15576 (substitute* "html-proofer.gemspec"
15577 (("git ls-files -z")
15578 "find . -type f -not -regex '.*\\.gem$' -print0 \
15579| sort -z | cut -zc3-")))))))
15580 (propagated-inputs
15581 (list ruby-addressable
15582 ruby-mercenary
15583 ruby-nokogiri
15584 ruby-parallel
15585 ruby-rainbow
15586 ruby-typhoeus
15587 ruby-yell))
15588 (synopsis "Test your rendered HTML files to make sure they're accurate")
15589 (description
15590 "HTMLProofer is a set of tests to validate your HTML output. These
15591tests check if your image references are legitimate, if they have alt tags,
15592if your internal links are working, and so on. It's intended to be an
15593all-in-one checker for your output.")
15594 (home-page "https://github.com/gjtorikian/html-proofer")
15595 (license license:expat)))
15596
15597(define-public ruby-htmlentities
15598 (package
15599 (name "ruby-htmlentities")
15600 (version "4.3.4")
15601 (source
15602 (origin
15603 (method url-fetch)
15604 (uri (rubygems-uri "htmlentities" version))
15605 (sha256
15606 (base32
15607 "1nkklqsn8ir8wizzlakncfv42i32wc0w9hxp00hvdlgjr7376nhj"))))
15608 (build-system ruby-build-system)
15609 (arguments
15610 `(#:phases
15611 (modify-phases %standard-phases
15612 (replace 'check
15613 (lambda _
15614 (map (lambda (file)
15615 (invoke "ruby" "-Itest" file))
15616 (find-files "./test" ".*_test\\.rb")))))))
15617 (synopsis "Encode and decode (X)HTML entities")
15618 (description
15619 "This package provides a module for encoding and decoding (X)HTML
15620entities.")
15621 (home-page "https://github.com/threedaymonk/htmlentities")
15622 (license license:expat)))
15623
15624;;; FIXME: Currently broken with rack 3, awaiting the merge for
15625;;; https://github.com/sinatra/sinatra/pull/1857 and a new release.
15626(define-public ruby-sinatra
15627 (package
15628 (name "ruby-sinatra")
15629 (version "3.0.5")
15630 (source
15631 (origin
15632 (method url-fetch)
15633 (uri (rubygems-uri "sinatra" version))
15634 (sha256
15635 (base32
15636 "1ryfja9yd3fq8n1p5yi3qnd0pjk7bkycmxxmbb1bj0axlr1pdv20"))))
15637 (build-system ruby-build-system)
15638 (propagated-inputs
15639 (list ruby-mustermann ruby-rack ruby-rack-protection ruby-tilt))
15640 (synopsis "DSL for quick web applications creation in Ruby")
15641 (description
15642 "Sinatra is a DSL for quickly creating web applications in Ruby with
15643minimal effort.")
15644 (home-page "https://sinatrarb.com/")
15645 (license license:expat)))
15646
15647(define-public ruby-timeout
15648 (package
15649 (name "ruby-timeout")
15650 (version "0.4.3")
15651 (source (origin
15652 (method git-fetch) ;for tests
15653 (uri (git-reference
15654 (url "https://github.com/ruby/timeout")
15655 (commit (string-append "v" version))))
15656 (file-name (git-file-name name version))
15657 (sha256
15658 (base32
15659 "1mw2dwyp2j05fl2gmw8cj132kk145sbxj5i0whpxcnddlc8gw781"))))
15660 (build-system ruby-build-system)
15661 (native-inputs (list ruby-test-unit-ruby-core))
15662 (synopsis "Timeout library for Ruby")
15663 (description "Timeout provides a way to auto-terminate a potentially
15664long-running operation if it hasn't finished in a fixed amount of time.")
15665 (home-page "https://github.com/ruby/timeout")
15666 (license (list license:bsd-2))))
15667
15668(define-public ruby-thin
15669 (package
15670 (name "ruby-thin")
15671 (version "1.7.2")
15672 (source
15673 (origin
15674 (method url-fetch)
15675 (uri (rubygems-uri "thin" version))
15676 (sha256
15677 (base32
15678 "0nagbf9pwy1vg09k6j4xqhbjjzrg5dwzvkn4ffvlj76fsn6vv61f"))))
15679 (build-system ruby-build-system)
15680 (arguments
15681 ;; No tests.
15682 '(#:tests? #f))
15683 (propagated-inputs
15684 (list ruby-daemons ruby-eventmachine ruby-rack))
15685 (synopsis "Thin and fast web server for Ruby")
15686 (description "Thin is a Ruby web server that glues together 3 Ruby libraries:
15687@itemize
15688@item the Mongrel parser,
15689@item Event Machine, a network I/O library with high scalability, performance
15690and stability,
15691@item Rack, a minimal interface between webservers and Ruby frameworks.
15692@end itemize\n")
15693 (home-page "https://github.com/macournoyer/thin")
15694 (license license:ruby)))
15695
15696(define-public ruby-truthy
15697 (package
15698 (name "ruby-truthy")
15699 (version "1.0.0")
15700 (source (origin
15701 (method url-fetch)
15702 (uri (rubygems-uri "truthy" version))
15703 (sha256
15704 (base32
15705 "19silgd65j3qwfk5w891p9wcmzdmi9ddm2kg5zbvvqn2h9lkfzmd"))))
15706 (build-system ruby-build-system)
15707 (arguments (list #:phases #~(modify-phases %standard-phases
15708 (replace 'check
15709 (lambda* (#:key tests? #:allow-other-keys)
15710 (when tests?
15711 (substitute* "spec/spec_helper.rb"
15712 (("require 'spec'")
15713 "require 'rspec'"))
15714 (invoke "rspec")))))))
15715 (native-inputs (list ruby-rspec))
15716 (synopsis "Object truthiness-related Ruby library")
15717 (description "This library makes it easier to discover the truth values of
15718various Ruby objects.")
15719 (home-page "https://github.com/ymendel/truthy")
15720 (license license:expat)))
15721
15722(define-public ruby-skinny
15723 (package
15724 (name "ruby-skinny")
15725 (version "0.2.4")
15726 (source
15727 (origin
15728 (method url-fetch)
15729 (uri (rubygems-uri "skinny" version))
15730 (sha256
15731 (base32
15732 "1y3yvx88ylgz4d2s1wskjk5rkmrcr15q3ibzp1q88qwzr5y493a9"))))
15733 (build-system ruby-build-system)
15734 (arguments
15735 '(#:tests? #f ; No included tests
15736 #:phases
15737 (modify-phases %standard-phases
15738 (add-before 'build 'patch-gemspec
15739 (lambda _
15740 (substitute* ".gemspec"
15741 (("<eventmachine>.freeze, \\[\\\"~> 1.0.0\"")
15742 "<eventmachine>, [\">= 1.0.0\"")
15743 (("<thin>.freeze, \\[\\\"< 1.7\", ") "<thin>, [")))))))
15744 (propagated-inputs
15745 (list ruby-eventmachine ruby-thin))
15746 (synopsis "Simple, upgradable WebSockets for Ruby Thin")
15747 (description "Skinny is a simple, upgradable WebSockets for Ruby, using
15748the Thin library.")
15749 (home-page "https://github.com/sj26/skinny")
15750 (license license:expat)))
15751
15752(define-public ruby-sys-filesystem
15753 (package
15754 (name "ruby-sys-filesystem")
15755 (version "1.3.4")
15756 (source (origin
15757 (method url-fetch)
15758 (uri (rubygems-uri "sys-filesystem" version))
15759 (sha256
15760 (base32
15761 "0mizqnsiagagmracadr16s5na2ks2j3ih1w0f3gp4ssrda6szl01"))))
15762 (build-system ruby-build-system)
15763 (arguments
15764 '(#:phases (modify-phases %standard-phases
15765 (add-before 'check 'set-HOME
15766 (lambda _
15767 ;; Some tests attempt to stat $HOME. Let them.
15768 (setenv "HOME" "/tmp"))))))
15769 (propagated-inputs
15770 (list ruby-ffi))
15771 (native-inputs
15772 (list ruby-mkmf-lite))
15773 (synopsis "Gather file system information")
15774 (description
15775 "The @code{sys-filesystem} library provides a cross-platform interface
15776for gathering file system information, such as disk space and mount points.")
15777 (home-page "https://github.com/djberg96/sys-filesystem")
15778 (license license:asl2.0)))
15779
15780(define-public mailcatcher
15781 (package
15782 (name "mailcatcher")
15783 (version "0.7.1")
15784 (source
15785 (origin
15786 (method url-fetch)
15787 (uri (rubygems-uri "mailcatcher" version))
15788 (sha256
15789 (base32
15790 "02w1ycyfv7x0sh9799lz7xa65p5qvl5z4pa8a7prb68h2zwkfq0n"))))
15791 (build-system ruby-build-system)
15792 (arguments
15793 ;; Tests require web/assets which is not included in the output. We
15794 ;; might be able to fix this by adding the Git repository to the GEM_PATH
15795 ;; of the tests. See ruby-mysql2.
15796 '(#:tests? #f
15797 #:phases
15798 (modify-phases %standard-phases
15799 (add-before 'build 'patch-gemspec
15800 (lambda _
15801 (substitute* ".gemspec"
15802 (("<eventmachine>.freeze, \\[\\\"= 1.0.9.1")
15803 "<eventmachine>, [\">= 1.0.9.1")
15804 (("<rack>.freeze, \\[\\\"~> 1.5") "<rack>, [\">= 1.5")
15805 (("<thin>.freeze, \\[\\\"~> 1.5.0") "<thin>, [\">= 1.5.0")
15806 (("<sinatra>.freeze, \\[\\\"~> 1.2") "<sinatra>, [\">= 1.2"))))
15807 (add-before 'build 'loosen-dependency-contraint
15808 (lambda _
15809 (substitute* "lib/mail_catcher.rb"
15810 (("\"eventmachine\", \"1.0.9.1\"") "\"eventmachine\", \">= 1.0.9.1\"")
15811 (("\"rack\", \"~> 1.5\"") "\"rack\", \">= 1.5\"")
15812 (("\"thin\", \"~> 1.5.0\"") "\"thin\", \">= 1.5.0\"")
15813 (("\"sinatra\", \"~> 1.2\"") "\"sinatra\", \">= 1.2\"")))))))
15814 (inputs
15815 (list ruby-eventmachine
15816 ruby-mail
15817 ruby-rack
15818 ruby-sinatra
15819 ruby-skinny
15820 ruby-sqlite3
15821 ruby-thin))
15822 (synopsis "SMTP server which catches messages to display them a browser")
15823 (description
15824 "MailCatcher runs a super simple SMTP server which catches any message
15825sent to it to display in a web interface. Run mailcatcher, set your favourite
15826app to deliver to smtp://127.0.0.1:1025 instead of your default SMTP server,
15827then check out http://127.0.0.1:1080 to see the mail.")
15828 (home-page "https://mailcatcher.me")
15829 (license license:expat)))
15830
15831(define-public ruby-backport
15832 (package
15833 (name "ruby-backport")
15834 (version "1.1.2")
15835 (source
15836 (origin
15837 ;; The gem does not include test code, so fetch from the Git repository.
15838 (method git-fetch)
15839 (uri (git-reference
15840 (url "https://github.com/castwide/backport")
15841 (commit (string-append "v" version))))
15842 (file-name (git-file-name name version))
15843 (sha256
15844 (base32 "18fpg1n7n2z02ykz9v1x1q0cqa2lvivf8ygka768s01q1r9wfwv2"))))
15845 (build-system ruby-build-system)
15846 (arguments
15847 `(#:test-target "spec"))
15848 (native-inputs
15849 (list bundler ruby-rspec))
15850 (inputs
15851 (list ruby-simplecov))
15852 (synopsis "Pure Ruby library for event-driven IO")
15853 (description
15854 "This package provides a pure Ruby library for event-driven IO.")
15855 (home-page "https://github.com/castwide/backport")
15856 (license license:expat)))
15857
15858(define-public ruby-json-schema
15859 (package
15860 (name "ruby-json-schema")
15861 (version "2.8.1")
15862 (source
15863 (origin
15864 (method url-fetch)
15865 (uri (rubygems-uri "json-schema" version))
15866 (sha256
15867 (base32
15868 "1yv5lfmr2nzd14af498xqd5p89f3g080q8wk0klr3vxgypsikkb5"))))
15869 (build-system ruby-build-system)
15870 (arguments
15871 `(#:tests? #f ; no tests
15872 #:phases
15873 (modify-phases %standard-phases
15874 (replace 'build
15875 (lambda _
15876 (invoke "gem" "build" ".gemspec"))))))
15877 (propagated-inputs
15878 (list ruby-addressable))
15879 (synopsis "Ruby JSON Schema Validator")
15880 (description "This library provides Ruby with an interface for validating
15881JSON objects against a JSON schema conforming to JSON Schema Draft 4. Legacy
15882support for JSON Schema Draft 3, JSON Schema Draft 2, and JSON Schema Draft 1
15883is also included.")
15884 (home-page "https://github.com/ruby-json-schema/json-schema")
15885 (license license:expat)))
15886
15887(define-public swagger-diff
15888 (package
15889 (name "swagger-diff")
15890 (version "2.0.0")
15891 (source
15892 (origin
15893 (method url-fetch)
15894 (uri (rubygems-uri "swagger-diff" version))
15895 (sha256
15896 (base32
15897 "18kbrijkafs3vfsbaqz0cqfj7jrz3aj8xr4fgn5if63wlximybv2"))))
15898 (build-system ruby-build-system)
15899 (arguments
15900 (list
15901 #:test-target "spec"
15902 #:phases
15903 #~(modify-phases %standard-phases
15904 ;; Don't run or require rubocop, the code linting tool, as this is a
15905 ;; bit unnecessary.
15906 (add-after 'unpack 'dont-run-rubocop
15907 (lambda _
15908 (substitute* "Rakefile"
15909 ((".*rubocop.*") "")
15910 ((".*RuboCop.*") "")))))))
15911 (propagated-inputs
15912 (list ruby-json-schema))
15913 (native-inputs
15914 (list bundler ruby-rspec-core ruby-rspec-expectations))
15915 (synopsis
15916 "Compare Open API Initiative specification files")
15917 (description
15918 "Swagger::Diff is a utility for comparing two different Open API
15919Initiative (OAI) specifications (formerly known as Swagger specifications).
15920It is intended to determine whether a newer API specification is
15921backwards-compatible with an older API specification.")
15922 (home-page "https://github.com/civisanalytics/swagger-diff")
15923 (license license:bsd-3)))
15924
15925(define-public ruby-reverse-markdown
15926 (package
15927 (name "ruby-reverse-markdown")
15928 (version "1.1.0")
15929 (source
15930 (origin
15931 (method url-fetch)
15932 (uri (rubygems-uri "reverse_markdown" version))
15933 (sha256
15934 (base32
15935 "0w7y5n74daajvl9gixr91nh8670d7mkgspkk3ql71m8azq3nffbg"))))
15936 (build-system ruby-build-system)
15937 (propagated-inputs
15938 (list ruby-nokogiri))
15939 (native-inputs
15940 (list bundler ruby-rspec ruby-kramdown ruby-simplecov))
15941 (arguments
15942 `(#:phases
15943 (modify-phases %standard-phases
15944 (replace 'check
15945 (lambda* (#:key tests? #:allow-other-keys)
15946 (when tests?
15947 (invoke "rspec")))))))
15948 (synopsis "Convert HTML into Markdown")
15949 (description
15950 "This Ruby module allows you to map simple HTML back into
15951Markdown---e.g., if you want to import existing HTML data in your
15952application.")
15953 (home-page "https://github.com/xijo/reverse_markdown")
15954 (license license:wtfpl2)))
15955
15956(define-public ruby-solargraph
15957 (package
15958 (name "ruby-solargraph")
15959 (version "0.40.3")
15960 (source
15961 (origin
15962 (method url-fetch)
15963 (uri (rubygems-uri "solargraph" version))
15964 (sha256
15965 (base32
15966 "1gf049rm0yvw4r8r5yyi890idbfg8qh0dikqx5prvkh11srl73bz"))))
15967 (build-system ruby-build-system)
15968 (propagated-inputs
15969 (list ruby-backport
15970 bundler
15971 ruby-benchmark
15972 ruby-e2mmap
15973 ruby-jaro-winkler
15974 ruby-kramdown
15975 ruby-kramdown-parser-gfm
15976 ruby-maruku
15977 ruby-nokogiri
15978 ruby-parser
15979 ruby-reverse-markdown
15980 ruby-rubocop
15981 ruby-thor
15982 ruby-tilt
15983 ruby-yard))
15984 (native-inputs
15985 (list ruby-rspec ruby-pry ruby-simplecov ruby-webmock))
15986 ;; FIXME: can't figure out how to run the tests properly:
15987
15988 ;; An error occurred while loading spec_helper.
15989 ;; Failure/Error: return gem_original_require(path)
15990 ;; LoadError:
15991 ;; cannot load such file -- spec_helper
15992 (arguments
15993 '(#:tests? #f
15994 #:phases
15995 (modify-phases %standard-phases
15996 (replace 'check
15997 (lambda* (#:key tests? #:allow-other-keys)
15998 (when tests?
15999 (invoke "rspec")))))))
16000 (synopsis
16001 "IDE tools for code completion, inline documentation, and static analysis")
16002 (description
16003 "Solargraph provides a comprehensive suite of tools for Ruby
16004programming: intellisense, diagnostics, inline documentation, and type
16005checking.")
16006 (home-page "https://solargraph.org/")
16007 (license license:expat)))
16008
16009(define-public ruby-wayback-machine-downloader
16010 (package
16011 (name "ruby-wayback-machine-downloader")
16012 (version "2.2.1")
16013 (source
16014 (origin
16015 (method url-fetch)
16016 (uri (rubygems-uri
16017 "wayback_machine_downloader"
16018 version))
16019 (sha256
16020 (base32
16021 "12kb1qmvmmsaihqab1prn6cmynkn6cgb4vf41mgv22wkcgv5wgk2"))))
16022 (build-system ruby-build-system)
16023 (arguments
16024 '(#:tests? #f)) ; no tests
16025 (synopsis "Download archived websites from the Wayback Machine")
16026 (description
16027 "Wayback Machine Downloader is a command line tool for downloading
16028websites from the Internet Archive's Wayback Machine (archive.org).
16029It allows fine grained control over what to download by specifying
16030which snapshots to consider and what files to include.")
16031 (home-page
16032 "https://github.com/hartator/wayback-machine-downloader")
16033 (license license:expat)))
16034
16035(define-public ruby-zeitwerk
16036 (package
16037 (name "ruby-zeitwerk")
16038 (version "2.7.1")
16039 (source
16040 (origin
16041 (method git-fetch) ;for tests
16042 (uri (git-reference
16043 (url "https://github.com/fxn/zeitwerk")
16044 (commit (string-append "v" version))))
16045 (file-name (git-file-name name version))
16046 (sha256
16047 (base32
16048 "19qmcdpbh4bl878zd1w19064yjkpb8sxaydcasqfa7p8cfg3hnsr"))))
16049 (build-system ruby-build-system)
16050 (native-inputs
16051 (list ruby-minitest
16052 ruby-minitest-focus
16053 ruby-minitest-proveit
16054 ruby-minitest-reporters
16055 ruby-warning))
16056 (synopsis "Efficient and thread-safe code loader for Ruby")
16057 (description
16058 "Zeitwerk implements constant autoloading with Ruby semantics. Each gem
16059and application may have their own independent autoloader, with its own
16060configuration, inflector, and logger. Supports autoloading, reloading, and
16061eager loading.")
16062 (home-page "https://github.com/fxn/zeitwerk")
16063 (license license:expat)))
16064
16065(define-public ruby-warning
16066 (package
16067 (name "ruby-warning")
16068 (version "1.5.0")
16069 (source
16070 (origin
16071 (method url-fetch)
16072 (uri (rubygems-uri "warning" version))
16073 (sha256
16074 (base32 "0lwcf7fsz1sda1fdbqq1i4q9kzg4f5vwrzgfg1vpa1hcxagw84hg"))))
16075 (build-system ruby-build-system)
16076 (arguments '(#:tests? #f)) ; No tests bundled.
16077 (synopsis "Custom processing for warnings")
16078 (description
16079 "This package adds custom processing for warnings for Ruby, including the
16080ability to ignore specific warning messages, ignore warnings in specific
16081files/directories, include backtraces with warnings, treat warnings as errors,
16082deduplicate warnings, and add custom handling for all warnings in specific
16083files/directories.")
16084 (home-page "https://github.com/jeremyevans/ruby-warning")
16085 (license license:expat)))
16086
16087(define-public ruby-wwtd
16088 (package
16089 (name "ruby-wwtd")
16090 (version "1.4.1")
16091 (home-page "https://github.com/grosser/wwtd")
16092 (source (origin
16093 (method git-fetch)
16094 (uri (git-reference
16095 (url home-page)
16096 (commit (string-append "v" version))))
16097 (file-name (git-file-name name version))
16098 (sha256
16099 (base32
16100 "0gw7vfnbb41cy67yw82zji3jkhfsgmzcgzaszm99ax77y18wclf2"))
16101 (modules '((guix build utils)))
16102 (snippet
16103 '(begin
16104 ;; Remove bundled library.
16105 (delete-file "spec/rake-12.3.0.gem")))))
16106 (build-system ruby-build-system)
16107 (arguments
16108 '(;; XXX: Tests need multiple versions of ruby, wants to run
16109 ;; `bundle install`, etc.
16110 #:tests? #f
16111 #:phases (modify-phases %standard-phases
16112 (replace 'replace-git-ls-files
16113 (lambda _
16114 (substitute* "wwtd.gemspec"
16115 (("git ls-files lib/ bin/`")
16116 "find lib/ bin/ -type f |sort`"))))
16117 (add-before 'check 'remove-version-constraints
16118 (lambda _
16119 (delete-file "Gemfile.lock")))
16120 (replace 'check
16121 (lambda* (#:key tests? #:allow-other-keys)
16122 (if tests?
16123 (invoke "rspec" "spec/")
16124 (format #t "test suite not run~%")))))))
16125 (native-inputs
16126 (list ruby-bump ruby-rspec))
16127 (synopsis "Run @file{.travis.yml} files locally")
16128 (description
16129 "WWTD is a @dfn{Travis Simulator} that lets you run test matrices
16130defined in @file{.travis.yml} on your local machine, using @code{rvm},
16131@code{rbenv}, or @code{chruby} to test different versions of Ruby.")
16132 (license license:expat)))
16133
16134(define-public ruby-rugged
16135 ;; The last release is old and doesn't build anymore (see:
16136 ;; https://github.com/libgit2/rugged/issues/951).
16137 (let ((commit "6379f23cedd5f527cf6a5c229627e366b590a22d")
16138 (revision "0"))
16139 (package
16140 (name "ruby-rugged")
16141 (version (git-version "1.6.2" revision commit))
16142 (source (origin
16143 (method git-fetch)
16144 (uri (git-reference
16145 (url "https://github.com/libgit2/rugged")
16146 (commit commit)))
16147 (file-name (git-file-name name version))
16148 (sha256
16149 (base32
16150 "0yac7vm0l2jsdsxf2k7xbny4iyzsy8fhiy2g5sphhffp7xgynny8"))))
16151 (build-system ruby-build-system)
16152 (arguments
16153 (list #:gem-flags
16154 #~(list "--" "--use-system-libraries")
16155 #:phases
16156 #~(modify-phases %standard-phases
16157 (add-after 'unpack 'adjust-extconf.rb
16158 (lambda _
16159 ;; Neither using --with-git2-dir=$prefix nor providing
16160 ;; pkg-config allows locating the libgit2 prefix (see:
16161 ;; https://github.com/libgit2/rugged/issues/955).
16162 (substitute* "ext/rugged/extconf.rb"
16163 (("LIBGIT2_DIR = File.join.*'vendor', 'libgit2'.*")
16164 (format #f "LIBGIT2_DIR = ~s~%"
16165 #$(this-package-input "libgit2"))))))
16166 (delete 'check) ;moved after the install phase
16167 (add-after 'install 'check
16168 (assoc-ref %standard-phases 'check))
16169 (add-before 'check 'set-GEM_PATH
16170 (lambda _
16171 (setenv "GEM_PATH" (string-append
16172 (getenv "GEM_PATH") ":"
16173 #$output "/lib/ruby/vendor_ruby"))))
16174 (add-before 'check 'disable-problematic-tests
16175 (lambda _
16176 (with-directory-excursion "test"
16177 (for-each delete-file
16178 ;; These tests require an actual libgit2 git
16179 ;; repository checkout.
16180 '("blame_test.rb"
16181 "blob_test.rb"
16182 "cherrypick_test.rb"
16183 "config_test.rb"
16184 "commit_test.rb"
16185 "diff_test.rb"
16186 "index_test.rb"
16187 "merge_test.rb"
16188 "note_test.rb"
16189 "object_test.rb"
16190 "patch_test.rb"
16191 "rebase_test.rb"
16192 "reference_test.rb"
16193 "remote_test.rb"
16194 "repo_apply_test.rb"
16195 "repo_ignore_test.rb"
16196 "repo_pack_test.rb"
16197 "repo_reset_test.rb"
16198 "repo_test.rb"
16199 "revert_test.rb"
16200 "settings_test.rb"
16201 "status_test.rb"
16202 "submodule_test.rb"
16203 "tag_test.rb"
16204 "tree_test.rb"
16205 "walker_test.rb"))
16206 (delete-file-recursively "online")))))))
16207 (native-inputs (list git-minimal/pinned ruby-rake-compiler))
16208 (inputs (list libgit2))
16209 (synopsis "Ruby bindings to the libgit2 linkable C Git library")
16210 (description "Rugged is a library for accessing libgit2 in Ruby. It gives
16211you the speed and portability of libgit2 with the beauty of the Ruby
16212language.")
16213 (home-page "https://www.rubydoc.info/gems/rugged")
16214 (license license:expat))))
16215
16216(define-public ruby-yell
16217 (package
16218 (name "ruby-yell")
16219 (version "2.2.2")
16220 (source
16221 (origin
16222 (method url-fetch)
16223 (uri (rubygems-uri "yell" version))
16224 (sha256
16225 (base32
16226 "1g16kcdhdfvczn7x81jiq6afg3bdxmb73skqjyjlkp5nqcy6y5hx"))))
16227 (build-system ruby-build-system)
16228 (arguments
16229 `(#:phases
16230 (modify-phases %standard-phases
16231 (replace 'check
16232 (lambda _
16233 (invoke "rake" "examples")))))) ; there is no test target.
16234 (synopsis
16235 "Extensible logging library for Ruby")
16236 (description
16237 "Yell is a comprehensive logging replacement for Ruby. It defines
16238multiple adapters, various log level combinations and message formatting
16239options.")
16240 (home-page "https://github.com/rudionrails/yell")
16241 (license license:expat)))
16242
16243(define-public ruby-e2mmap
16244 (package
16245 (name "ruby-e2mmap")
16246 (version "0.1.0")
16247 (source
16248 (origin
16249 (method url-fetch)
16250 (uri (rubygems-uri "e2mmap" version))
16251 (sha256
16252 (base32
16253 "0n8gxjb63dck3vrmsdcqqll7xs7f3wk78mw8w0gdk9wp5nx6pvj5"))))
16254 (build-system ruby-build-system)
16255 (arguments
16256 `(#:tests? #f)) ;; There is a rakefile but no tests
16257 (synopsis
16258 "Module for defining custom exceptions with specific messages")
16259 (description
16260 "Exception2MessageMapper (e2mmap) is a helper module for easily defining
16261exceptions with predefined messages.")
16262 (home-page "https://github.com/ruby/e2mmap")
16263 (license license:bsd-2)))
16264
16265(define-public ruby-benchmark
16266 (package
16267 (name "ruby-benchmark")
16268 (version "0.4.0")
16269 (source
16270 (origin
16271 (method url-fetch)
16272 (uri (rubygems-uri "benchmark" version))
16273 (sha256
16274 (base32
16275 "0jl71qcgamm96dzyqk695j24qszhcc7liw74qc83fpjljp2gh4hg"))))
16276 (build-system ruby-build-system)
16277 (synopsis "Performance benchmarking library")
16278 (description "This package provides methods for benchmarking Ruby code,
16279giving detailed reports on the time taken for each task.")
16280 (home-page "https://github.com/ruby/benchmark")
16281 (license license:bsd-2)))
16282
16283(define-public ruby-jekyll-feed
16284 (package
16285 (name "ruby-jekyll-feed")
16286 (version "0.15.1")
16287 (source
16288 (origin
16289 (method url-fetch)
16290 (uri (rubygems-uri "jekyll-feed" version))
16291 (sha256
16292 (base32
16293 "1zxqkrnix0xiw98531h5ga6h69jhzlx2jh9qhvcl67p8nq3sgza9"))))
16294 (build-system ruby-build-system)
16295 (arguments
16296 `(#:tests? #false)) ;there are none
16297 (propagated-inputs
16298 (list jekyll))
16299 (synopsis
16300 "Jekyll plugin to generate an Atom feed of your Jekyll posts")
16301 (description
16302 "This package provides a Jekyll plugin to generate an Atom feed
16303of your Jekyll posts.")
16304 (home-page
16305 "https://github.com/jekyll/jekyll-feed")
16306 (license license:expat)))
16307
16308(define-public ruby-jekyll-sitemap
16309 (package
16310 (name "ruby-jekyll-sitemap")
16311 (version "1.4.0")
16312 (source
16313 (origin
16314 (method url-fetch)
16315 (uri (rubygems-uri "jekyll-sitemap" version))
16316 (sha256
16317 (base32
16318 "0622rwsn5i0m5xcyzdn86l68wgydqwji03lqixdfm1f1xdfqrq0d"))))
16319 (build-system ruby-build-system)
16320 (arguments
16321 `(#:tests? #false)) ;there are none
16322 (propagated-inputs
16323 (list jekyll))
16324 (synopsis
16325 "Automatically generate a sitemap.xml for your Jekyll site")
16326 (description
16327 "This package provides a Jekyll plugin to silently generate
16328a sitemaps.org compliant sitemap for your Jekyll site.")
16329 (home-page
16330 "https://github.com/jekyll/jekyll-sitemap")
16331 (license license:expat)))
16332
16333(define-public ruby-jekyll-seo-tag
16334 (package
16335 (name "ruby-jekyll-seo-tag")
16336 (version "2.7.1")
16337 (source
16338 (origin
16339 (method url-fetch)
16340 (uri (rubygems-uri "jekyll-seo-tag" version))
16341 (sha256
16342 (base32
16343 "0fsi75hymk2wswy216fs224p5ycrzjw1kshw1bsl5czhv42wr2w3"))))
16344 (build-system ruby-build-system)
16345 (arguments
16346 `(#:tests? #false))
16347 (propagated-inputs
16348 (list jekyll))
16349 (synopsis
16350 "Jekyll plugin to add metadata tags for search engines and social networks")
16351 (description
16352 "This package provides a Jekyll plugin to add metadata tags for search engines
16353and social networks to better index and display your site's content.")
16354 (home-page
16355 "https://github.com/jekyll/jekyll-seo-tag")
16356 (license license:expat)))
16357
16358(define-public ruby-taskjuggler
16359 (package
16360 (name "ruby-taskjuggler")
16361 (version "3.8.1")
16362 (source
16363 (origin
16364 (method url-fetch)
16365 (uri (rubygems-uri "taskjuggler" version))
16366 (sha256
16367 (base32
16368 "16d5vgz54all8vl3haqy6j69plny3np4kc3wq7wy3xa3i0h7v60z"))))
16369 (build-system ruby-build-system)
16370 (native-inputs (list ruby-rspec tzdata-for-tests))
16371 (propagated-inputs
16372 (list ruby-mail ruby-term-ansicolor))
16373 (arguments
16374 '(#:phases (modify-phases %standard-phases
16375 (replace 'replace-git-ls-files
16376 (lambda _
16377 (substitute* "tasks/rdoc.rake"
16378 (("`git ls-files -- lib`")
16379 "`find lib/ -type f |sort`"))))
16380 (add-before 'check 'tzdir-setup
16381 (lambda* (#:key inputs #:allow-other-keys)
16382 (setenv "TZDIR"
16383 (string-append (assoc-ref inputs "tzdata")
16384 "/share/zoneinfo"))))
16385 (add-before 'check 'delete-test-BatchProcessor
16386 ;; test_BatchProcessor fails with exception:
16387 ;; run> terminated with exception (report_on_exception is true)
16388 (lambda _
16389 (delete-file "test/test_BatchProcessor.rb"))))))
16390 (synopsis
16391 "Project management command line tool with a domain specific language")
16392 (description
16393 "TaskJuggler (tj3) is a project management tool for project planning and
16394tracking using a domain specific language; projects are plain text files
16395written using your favourite text editor. It includes reporting in HTML, CSV
16396or iCalendar format and an email based status tracking system to send and
16397receive time sheets from collaborators.
16398
16399It covers the complete spectrum of project management tasks from the first
16400idea to the completion of the project. It assists you during project scoping,
16401resource assignment, cost and revenue planning, risk and communication
16402management, status tracking and reporting.")
16403 (home-page "https://taskjuggler.org")
16404 (license license:gpl2)))
16405
16406(define-public ruby-cmath
16407 (package
16408 (name "ruby-cmath")
16409 (version "1.0.0")
16410 (source
16411 (origin
16412 (method url-fetch)
16413 (uri (rubygems-uri "cmath" version))
16414 (sha256
16415 (base32
16416 "1xkz6xyhpkjbdvpdib8450w62rls1mjryz0gzbbnadxkxn82nb8m"))))
16417 (build-system ruby-build-system)
16418 (arguments
16419 `(#:tests? #false))
16420 (native-inputs
16421 (list bundler ruby-rake-compiler))
16422 (synopsis "Trigonometric functions for complex numbers")
16423 (description
16424 "This gem is a library that provides trigonometric and transcendental
16425functions for complex numbers. The functions in this module accept integers,
16426floating-point numbers or complex numbers as arguments.")
16427 (home-page "https://github.com/ruby/cmath")
16428 (license license:bsd-2)))
16429
16430(define-public ruby-sucker-punch
16431 (package
16432 (name "ruby-sucker-punch")
16433 (version "3.1.0")
16434 (source
16435 (origin
16436 (method url-fetch)
16437 (uri (rubygems-uri "sucker_punch" version))
16438 (sha256
16439 (base32 "12by9vx8q6l4i56q62k1s1ymaxbpg4rny5zngj5i5h09kyh2yp4p"))))
16440 (build-system ruby-build-system)
16441 (arguments
16442 `(#:phases
16443 (modify-phases %standard-phases
16444 (add-after 'extract-gemspec 'less-strict-dependencies
16445 (lambda _
16446 (substitute* "sucker_punch.gemspec"
16447 (("1.0.0") "1.0")))))))
16448 (native-inputs
16449 (list
16450 ruby-pry))
16451 (propagated-inputs
16452 (list
16453 ruby-concurrent))
16454 (home-page "https://github.com/brandonhilkert/sucker_punch")
16455 (synopsis "Asynchronous processing library for Ruby")
16456 (description "Sucker Punch is a single-process Ruby asynchronous processing
16457library. It is perfect for asynchronous processes like emailing, data crunching
16458or social platform manipulation; and generally recommended for jobs that are
16459fast and non-mission critical like logs, emails, etc.")
16460 (license license:expat)))
16461
16462(define-public ruby-countdownlatch
16463 (package
16464 (name "ruby-countdownlatch")
16465 (version "1.0.0")
16466 (source
16467 (origin
16468 (method url-fetch)
16469 (uri (rubygems-uri "countdownlatch" version))
16470 (sha256
16471 (base32 "1v6pbay6z07fp7yvnba1hmyacbicvmjndd8rn2h1b5rmpcb5s0j3"))))
16472 (build-system ruby-build-system)
16473 (home-page "https://github.com/benlangfeld/countdownlatch")
16474 (synopsis "Thread synchronization aid Ruby")
16475 (description "CountDownLatch is a synchronization aid that allows one or
16476more threads to wait until a set of operations being performed in other threads
16477completes.")
16478 (license license:expat)))
16479
16480(define-public ruby-value-semantics
16481 (package
16482 (name "ruby-value-semantics")
16483 (version "3.6.1")
16484 (source
16485 (origin
16486 (method url-fetch)
16487 (uri (rubygems-uri "value_semantics" version))
16488 (sha256
16489 (base32 "1vdwai8wf6r1fkvdpyz1vzxm89q7ghjvb3pqpg2kvwibwzd99dnx"))))
16490 (build-system ruby-build-system)
16491 (arguments
16492 `(#:phases
16493 (modify-phases %standard-phases
16494 (replace 'check
16495 (lambda* (#:key tests? #:allow-other-keys)
16496 (when tests?
16497 (invoke "rspec")))))))
16498 (native-inputs
16499 (list
16500 ruby-rspec))
16501 (home-page "https://github.com/tomdalling/value_semantics")
16502 (synopsis "Ruby gem for making value classes")
16503 (description "ValueSemantics generates modules that provide conventional
16504value semantics for a given set of attributes. The behaviour is similar to an
16505immutable Struct class, plus extensible, lightweight validation and coercion.")
16506 (license license:expat)))
16507
16508(define-public ruby-promise
16509 (package
16510 (name "ruby-promise")
16511 (version "0.7.4")
16512 (source
16513 (origin
16514 (method url-fetch)
16515 (uri (rubygems-uri "promise.rb" version))
16516 (sha256
16517 (base32 "0a819sikcqvhi8hck1y10d1nv2qkjvmmm553626fmrh51h2i089d"))))
16518 (build-system ruby-build-system)
16519 (arguments
16520 `(#:test-target "spec"
16521 #:phases
16522 (modify-phases %standard-phases
16523 (add-after 'extract-gemspec 'less-strict-dependencies
16524 (lambda _
16525 (substitute* "Rakefile"
16526 (("if Gem.ruby_version.*") "if false\n"))
16527 (substitute* "spec/spec_helper.rb"
16528 ((".*devtools/spec_helper.*") "\n")))))))
16529 (native-inputs
16530 (list
16531 ruby-rspec
16532 ruby-rspec-its
16533 ruby-awesome-print
16534 ruby-fuubar))
16535 (home-page "https://github.com/lgierth/promise.rb")
16536 (synopsis "Asynchronous operation library for Ruby")
16537 (description "Promise is a Ruby implementation of the Promises/A+
16538specification. It provides 100% mutation coverage, tested on MRI 1.9, 2.0, 2.1,
165392.2, Rubinius, and JRuby.")
16540 (license license:unlicense)))
16541
16542(define-public ruby-multicodecs
16543 (package
16544 (name "ruby-multicodecs")
16545 (version "0.2.1")
16546 (source
16547 (origin
16548 (method url-fetch)
16549 (uri (rubygems-uri "multicodecs" version))
16550 (sha256
16551 (base32 "0drq267di57l9zqw6zvqqimilz42rbc8z7392dwkk8wslq30s7v8"))))
16552 (build-system ruby-build-system)
16553 (home-page "https://github.com/SleeplessByte/ruby-multicodec")
16554 (synopsis "Ruby implementation of multiformats/multicodec")
16555 (description "Multicodecs is the ruby implementation of
16556multiformats/multicodec, a canonical table of of codecs used by various
16557multiformats.")
16558 (license license:expat)))
16559
16560(define-public ruby-multihashes
16561 (package
16562 (name "ruby-multihashes")
16563 (version "0.2.0")
16564 (source
16565 (origin
16566 (method url-fetch)
16567 (uri (rubygems-uri "multihashes" version))
16568 (sha256
16569 (base32 "17wiyy3fiv8rpgdv9ca01yncsmaaf8yg15bg18wc7m9frss1vgqg"))))
16570 (build-system ruby-build-system)
16571 (propagated-inputs
16572 (list
16573 ruby-multicodecs))
16574 (home-page "https://github.com/multiformats/ruby-multihash")
16575 (synopsis "Multihash implementation for Ruby")
16576 (description "Multihashes provides a simple, low-level multihash
16577implementation for Ruby. A multihash is a digest with an embedded hash function
16578code")
16579 (license license:expat)))
16580
16581(define-public ruby-lazy-object
16582 (package
16583 (name "ruby-lazy-object")
16584 (version "0.0.3")
16585 (source
16586 (origin
16587 (method url-fetch)
16588 (uri (rubygems-uri "lazy_object" version))
16589 (sha256
16590 (base32 "08px15lahc28ik9smvw1hgamf792gd6gq0s4k94yq1h7jq25wjn8"))))
16591 (build-system ruby-build-system)
16592 (arguments
16593 `(#:test-target "spec"))
16594 (home-page "https://github.com/HornsAndHooves/lazy_object")
16595 (synopsis "Object wrapper that forwards all calls to the reference object")
16596 (description "LazyObject is an object wrapper that forwards all calls to the
16597reference object. This object is not created until the first method dispatch.")
16598 (license license:expat)))
16599
16600(define-public ruby-citrus
16601 (package
16602 (name "ruby-citrus")
16603 (version "3.0.2")
16604 (source
16605 (origin
16606 (method git-fetch)
16607 ;; Download from GitHub because the rubygems version does not contain
16608 ;; files needed for tests.
16609 (uri (git-reference
16610 (url "https://github.com/mjackson/citrus")
16611 (commit (string-append "v" version))))
16612 (file-name (git-file-name name version))
16613 (sha256
16614 (base32 "197wrgqrddgm1xs3yvjvd8vkvil4h4mdrcp16jmd4b57rxrrr769"))))
16615 (build-system ruby-build-system)
16616 (home-page "https://mjackson.github.io/citrus/")
16617 (synopsis "Parsing Expressions for Ruby")
16618 (description "Citrus is a parsing library for Ruby that combines the
16619expressiveness of the language with the parsing expressions.")
16620 (license license:expat)))
16621
16622(define-public ruby-cbor
16623 (package
16624 (name "ruby-cbor")
16625 (version "0.5.9.6")
16626 (source
16627 (origin
16628 (method url-fetch)
16629 (uri (rubygems-uri "cbor" version))
16630 (sha256
16631 (base32 "0511idr8xps9625nh3kxr68sdy6l3xy2kcz7r57g47fxb1v18jj3"))))
16632 (build-system ruby-build-system)
16633 (arguments
16634 `(#:test-target "spec"))
16635 (native-inputs
16636 (list
16637 ruby-rspec
16638 ruby-rake-compiler
16639 ruby-yard))
16640 (home-page "https://cbor.io/")
16641 (synopsis "Concise Binary Object Representation")
16642 (description "CBOR is a library for the
16643@acronym{CBOR, Concise Binary Object Representation} format, based on
16644Sadayuki Furuhashi's MessagePack library.")
16645 (license license:asl2.0)))
16646
16647(define-public ruby-gem-release
16648 (package
16649 (name "ruby-gem-release")
16650 (version "2.2.2")
16651 (source
16652 (origin
16653 (method url-fetch)
16654 (uri (rubygems-uri "gem-release" version))
16655 (sha256
16656 (base32 "108rrfaiayi14zrqbb6z0cbwcxh8n15am5ry2a86v7c8c3niysq9"))))
16657 (build-system ruby-build-system)
16658 (arguments
16659 ;; No rakefile
16660 `(#:tests? #f))
16661 (home-page "https://github.com/svenfuchs/gem-release")
16662 (synopsis "Ruby gem plugin for release management")
16663 (description "GemRelease is a gem plugin that aims at making gem development
16664easier by automating repetitive work based on conventions, configuration, and
16665templates.")
16666 (license license:expat)))
16667
16668(define-public ruby-base32
16669 (package
16670 (name "ruby-base32")
16671 (version "0.3.4")
16672 (source
16673 (origin
16674 (method url-fetch)
16675 (uri (rubygems-uri "base32" version))
16676 (sha256
16677 (base32 "1fjs0l3c5g9qxwp43kcnhc45slx29yjb6m6jxbb2x1krgjmi166b"))))
16678 (build-system ruby-build-system)
16679 (native-inputs
16680 (list
16681 ruby-gem-release))
16682 (home-page "https://github.com/stesla/base32")
16683 (synopsis "Ruby extension for base32 encoding and decoding")
16684 (description "Base32 is a library which provides base32 decoding and
16685encoding.")
16686 (license license:expat)))
16687
16688(define-public ruby-dhall
16689 (package
16690 (name "ruby-dhall")
16691 (version "0.5.2")
16692 (source
16693 (origin
16694 (method url-fetch)
16695 (uri (rubygems-uri "dhall" version))
16696 (sha256
16697 (base32 "09wcq8xc1ynld04r2f332bx8cn7rjc4afaq8hm1dr2fc35jlpn6m"))))
16698 (build-system ruby-build-system)
16699 (arguments
16700 ;; No test in gem archive
16701 `(#:tests? #f))
16702 (propagated-inputs
16703 (list
16704 ruby-base32
16705 ruby-cbor
16706 ruby-citrus
16707 ruby-lazy-object
16708 ruby-multihashes
16709 ruby-promise
16710 ruby-value-semantics))
16711 (home-page "https://git.sr.ht/~singpolyma/dhall-ruby")
16712 (synopsis "Ruby implementation of the Dhall configuration language")
16713 (description "Dhall.rb is a Ruby implementation of the Dhall configuration
16714language. Dhall is a memory safe and non-Turing-complete configuration
16715language.")
16716 (license license:gpl3+)))
16717
16718(define-public ruby-money
16719 (package
16720 (name "ruby-money")
16721 (version "6.16.0")
16722 (source
16723 (origin
16724 (method url-fetch)
16725 (uri (rubygems-uri "money" version))
16726 (sha256
16727 (base32 "0jkmsj5ymadik7bvl670bqwmvhsdyv7hjr8gq9z293hq35gnyiyg"))))
16728 (build-system ruby-build-system)
16729 (arguments
16730 ;; No rakefile.
16731 `(#:tests? #f))
16732 (propagated-inputs
16733 (list
16734 ruby-i18n))
16735 (home-page "https://rubymoney.github.io/money/")
16736 (synopsis "Currency conversion library for Ruby")
16737 (description "RubyMoney provides a library for dealing with money and
16738currency conversion. Its features are:
16739@itemize
16740@item
16741Provides a Money class which encapsulates all information about a certain
16742amount of money, such as its value and its currency.
16743@item
16744Provides a Money::Currency class which encapsulates all information about a
16745monetary unit.
16746@item
16747Represents monetary values as integers, in cents; so avoids floating point
16748rounding errors.
16749@item
16750Represents currency as Money::Currency instances providing a high level of
16751flexibility.
16752@item Provides APIs for exchanging money from one currency to another.
16753@end itemize")
16754 (license license:expat)))
16755
16756(define-public ruby-monetize
16757 (package
16758 (name "ruby-monetize")
16759 (version "1.11.0")
16760 (source
16761 (origin
16762 (method url-fetch)
16763 (uri (rubygems-uri "monetize" version))
16764 (sha256
16765 (base32 "0cna2myxdbwfq0gn6k2hgrh368dq7wld3jklm96443ysykd0difn"))))
16766 (build-system ruby-build-system)
16767 (arguments
16768 `(#:test-target "spec"))
16769 (native-inputs
16770 (list
16771 ruby-rspec))
16772 (propagated-inputs
16773 (list
16774 ruby-money))
16775 (home-page "https://github.com/RubyMoney/monetize")
16776 (synopsis "Convert various objects into Money objects")
16777 (description "Monetize provides a library for converting various objects
16778into Money objects.")
16779 (license license:expat)))
16780
16781(define-public ruby-money-open-exchange-rates
16782 (package
16783 (name "ruby-money-open-exchange-rates")
16784 (version "1.4.0")
16785 (source
16786 (origin
16787 (method git-fetch)
16788 ;; Download from GitHub because the rubygems version does not contain
16789 ;; Rakefile.
16790 (uri (git-reference
16791 (url "https://github.com/spk/money-open-exchange-rates")
16792 (commit (string-append "v" version))))
16793 (file-name (git-file-name name version))
16794 (sha256
16795 (base32 "11xwqli8snr19k48yh8h77sal5vxd4snzq9gxg08v61f0574m3gw"))))
16796 (build-system ruby-build-system)
16797 (native-inputs
16798 (list
16799 ruby-minitest
16800 ruby-mocha
16801 ruby-monetize
16802 ruby-rake
16803 ruby-rubocop
16804 ruby-timecop
16805 ruby-webmock))
16806 (propagated-inputs
16807 (list
16808 ruby-money))
16809 (home-page "https://spk.github.io/money-open-exchange-rates/")
16810 (synopsis "Money open exchange rates for Ruby")
16811 (description "This package provides a gem that calculates the exchange rate
16812using published rates from open-exchange-rates. Compatible with the money gem.")
16813 (license license:expat)))
16814
16815(define-public ruby-roda
16816 (package
16817 (name "ruby-roda")
16818 (version "3.57.0")
16819 (source
16820 (origin
16821 (method url-fetch)
16822 (uri (rubygems-uri "roda" version))
16823 (sha256
16824 (base32 "0nkfxnbcfnriywvx9kpamp850cwjmqv8ssajc95d0aiyjr4kdrfy"))))
16825 (build-system ruby-build-system)
16826 (arguments
16827 ;; No rakefile
16828 `(#:tests? #f))
16829 (propagated-inputs (list ruby-rack))
16830 (home-page "https://roda.jeremyevans.net")
16831 (synopsis "Routing Tree Web Toolkit")
16832 (description "Roda is a routing tree web toolkit, designed for building fast
16833and maintainable web applications in ruby.")
16834 (license license:expat)))
16835
16836(define-public ruby-nori
16837 (package
16838 (name "ruby-nori")
16839 (version "2.6.0")
16840 (source
16841 (origin
16842 (method url-fetch)
16843 (uri (rubygems-uri "nori" version))
16844 (sha256
16845 (base32 "066wc774a2zp4vrq3k7k8p0fhv30ymqmxma1jj7yg5735zls8agn"))))
16846 (build-system ruby-build-system)
16847 (arguments
16848 ;; Tests require too old version of rspec
16849 `(#:tests? #f))
16850 (native-inputs
16851 (list ruby-nokogiri
16852 ruby-rake
16853 ruby-rspec))
16854 (home-page "https://github.com/savonrb/nori")
16855 (synopsis "XML to Hash translator")
16856 (description "Nori is a simple XML parsing ripped from Crack which in-turn
16857ripped from Merb. It supports pluggable parsers and ships with both REXML and
16858Nokogiri implementations.")
16859 (license license:expat)))
16860
16861;; This package is deprecated per upstream and should be phased out.
16862(define-public ruby-faraday-middleware
16863 (package
16864 (name "ruby-faraday-middleware")
16865 (version "1.2.0")
16866 (source
16867 (origin
16868 (method url-fetch)
16869 (uri (rubygems-uri "faraday_middleware" version))
16870 (sha256
16871 (base32 "1bw8mfh4yin2xk7138rg3fhb2p5g2dlmdma88k82psah9mbmvlfy"))))
16872 (build-system ruby-build-system)
16873 (arguments `(#:tests? #f))
16874 (propagated-inputs (list ruby-faraday))
16875 (home-page "https://github.com/lostisland/faraday_middleware")
16876 (synopsis "Various middleware for Faraday")
16877 (description "Faraday_Middleware is a collection of middleware for the
16878Faraday-based API wrappers.")
16879 (license license:expat)))
16880
16881(define-public ruby-faraday-multipart
16882 (package
16883 (name "ruby-faraday-multipart")
16884 (version "1.0.4")
16885 (source (origin
16886 (method git-fetch)
16887 (uri (git-reference
16888 (url "https://github.com/lostisland/faraday-multipart")
16889 (commit (string-append "v" version))))
16890 (file-name (git-file-name name version))
16891 (sha256
16892 (base32
16893 "0ywxhff40a688n50lxrn4d8y096l8sbrwp1jfz4zd3kdiiygclka"))))
16894 (build-system ruby-build-system)
16895 (arguments (list #:test-target "spec"))
16896 (native-inputs (list ruby-faraday ruby-multipart-parser ruby-rspec))
16897 (propagated-inputs (list ruby-multipart-post))
16898 (synopsis "Multipart-post requests extension for Faraday")
16899 (description "This Ruby gem extends Faraday to perform multipart-post
16900requests.")
16901 (home-page "https://github.com/lostisland/faraday-multipart")
16902 (license license:expat)))
16903
16904(define-public ruby-bandwidth-iris
16905 (package
16906 (name "ruby-bandwidth-iris")
16907 (version "7.0.0")
16908 (source
16909 (origin
16910 (method url-fetch)
16911 (uri (rubygems-uri "ruby-bandwidth-iris" version))
16912 (sha256
16913 (base32 "131c4jhyvnrwbhizkks17fi9g85cwsq5f1p8zi408zyf63n7230d"))))
16914 (build-system ruby-build-system)
16915 (arguments
16916 ;; XXX: Tests don't require helper for some reason, so all fail.
16917 `(#:tests? #f))
16918 (native-inputs
16919 (list ruby-rspec
16920 ruby-yard))
16921 (propagated-inputs
16922 (list ruby-activesupport
16923 ruby-builder
16924 ruby-faraday
16925 ruby-faraday-middleware
16926 ruby-nori))
16927 (home-page "https://github.com/Bandwidth/ruby-bandwidth-iris")
16928 (synopsis "Gem for integrating to Bandwidth's Iris API")
16929 (description "Bandwidth IRIS is a Ruby SDK for Bandwidth Phone Number
16930Dashboard. It is a Ruby Client library for IRIS / BBS API.")
16931 (license license:expat)))
16932
16933(define-public ruby-securerandom
16934 (package
16935 (name "ruby-securerandom")
16936 (version "0.4.1")
16937 (source
16938 (origin
16939 (method url-fetch)
16940 (uri (rubygems-uri "securerandom" version))
16941 (sha256
16942 (base32 "1cd0iriqfsf1z91qg271sm88xjnfd92b832z49p1nd542ka96lfc"))))
16943 (build-system ruby-build-system)
16944 (arguments '(#:tests? #f)) ; No tests found.
16945 (synopsis "Interface for secure random number generator")
16946 (description "This package provides a Ruby interface for secure random
16947number generators.")
16948 (home-page "https://github.com/ruby/securerandom")
16949 (license (list license:bsd-2))))
16950
16951(define-public ruby-selenium-webdriver
16952 (package
16953 (name "ruby-selenium-webdriver")
16954 (version "4.22.0")
16955 (source (origin
16956 (method url-fetch)
16957 (uri (rubygems-uri "selenium-webdriver" version))
16958 (sha256
16959 (base32
16960 "0rjxlivsh32xvjq78p1m1sr366aa04wms4hwb2r187ygrnmp0hv4"))))
16961 (build-system ruby-build-system)
16962 ;; FIXME: The gem release lacks test files, and the git checkout lacks
16963 ;; JavaScript source that is generated using Bazel, which isn't available
16964 ;; in Guix yet, so disable the test suite for now.
16965 (arguments (list #:tests? #f))
16966 (propagated-inputs (list ruby-base64
16967 ruby-rexml
16968 ruby-rubyzip
16969 ruby-websocket))
16970 (synopsis "Selenium browser automation bindings for Ruby")
16971 (description "Selenium implements the W3C WebDriver protocol to automate
16972popular browsers. It aims to mimic the behaviour of a real user as it
16973interacts with the application's HTML. It's primarily intended for web
16974application testing, but any web-based task can be automated. This package
16975provides the Ruby bindings of Selenium.")
16976 (home-page "https://www.selenium.dev/")
16977 (license license:asl2.0)))
16978
16979(define-public ruby-sentry-core
16980 (package
16981 (name "ruby-sentry-core")
16982 (version "5.3.1")
16983 (source
16984 (origin
16985 (method url-fetch)
16986 (uri (rubygems-uri "sentry-ruby-core" version))
16987 (sha256
16988 (base32 "141mrw8wghhsjvln9m6ld3hap3xc5v901jjiz007xywy25725hyd"))))
16989 (build-system ruby-build-system)
16990 (arguments
16991 ;; No rakefile in gem.
16992 `(#:tests? #f))
16993 (propagated-inputs
16994 (list ruby-concurrent
16995 ruby-faraday))
16996 (home-page "https://sentry.io/for/ruby/")
16997 (synopsis "Client interface for the Sentry error logger")
16998 (description "Sentry-Core provides a gem that provides a client
16999interface for the Sentry error logger.")
17000 (license license:expat)))
17001
17002(define-public ruby-sentry
17003 (package
17004 (name "ruby-sentry")
17005 (version "5.3.1")
17006 (source
17007 (origin
17008 (method url-fetch)
17009 (uri (rubygems-uri "sentry-ruby" version))
17010 (sha256
17011 (base32 "0by9mvw8rklzpyx59vfija8h3ssfvxvf5nbqxfmygfy6lm1vdngz"))))
17012 (build-system ruby-build-system)
17013 (arguments
17014 ;; No rakefile in gem
17015 `(#:tests? #f))
17016 (propagated-inputs
17017 (list ruby-concurrent
17018 ruby-faraday
17019 ruby-sentry-core))
17020 (home-page "https://sentry.io/for/ruby/")
17021 (synopsis "Client interface for the Sentry error logger")
17022 (description "Sentry provides a gem that provides a client
17023interface for the Sentry error logger.")
17024 (license license:expat)))
17025
17026(define-public ruby-webrick
17027 (package
17028 (name "ruby-webrick")
17029 (version "1.8.1")
17030 (source (origin
17031 (method git-fetch) ;for tests
17032 (uri (git-reference
17033 (url "https://github.com/ruby/webrick")
17034 (commit (string-append "v" version))))
17035 (file-name (git-file-name name version))
17036 (sha256
17037 (base32
17038 "1xb0mk3cghdir65nmj0mblprbf21blli7267b6yyvxclh307yp6s"))))
17039 (build-system ruby-build-system)
17040 (arguments
17041 (list #:phases
17042 #~(modify-phases %standard-phases
17043 (add-after 'extract-gemspec 'delete-problematic-tests
17044 (lambda _
17045 ;; The httresponse tests fail for
17046 ;; unknown reasons (see:
17047 ;; https://github.com/ruby/webrick/issues/112).
17048 (delete-file "test/webrick/test_httpresponse.rb"))))))
17049 (home-page "https://github.com/ruby/webrick")
17050 (synopsis "HTTP server toolkit")
17051 (description "WEBrick is an HTTP server toolkit that can be configured as an
17052HTTPS server, a proxy server, and a virtual-host server.")
17053 (license license:bsd-2)))
17054
17055(define-public ruby-websocket
17056 (let ((commit "950e416a19a76c7e6a673a7e5baa6283476dbec1")
17057 (revision "1"))
17058 (package
17059 (name "ruby-websocket")
17060 (version (git-version "1.2.9" revision commit))
17061 (source (origin
17062 (method git-fetch)
17063 (uri (git-reference
17064 (url "https://github.com/imanel/websocket-ruby")
17065 (commit commit)))
17066 (sha256
17067 (base32
17068 "1i6r0glpxy47zdf76aqgcpjgcgydla0733hfdhp628pmrinnkgwv"))
17069 (file-name (git-file-name name version))))
17070 (build-system ruby-build-system)
17071 (arguments (list #:test-target "spec"
17072 #:phases #~(modify-phases %standard-phases
17073 (add-after 'unpack 'disable-rubocop
17074 (lambda _
17075 (substitute* "Rakefile"
17076 (("require 'rubocop/rake_task'") "")
17077 (("RuboCop::RakeTask.new") "")))))))
17078 (native-inputs
17079 (list ruby-rspec
17080 ruby-webrick))
17081 (synopsis "WebSocket protocol Ruby library")
17082 (description "This package provides a Ruby library to handle the WebSocket
17083protocol.")
17084 (home-page "https://github.com/imanel/websocket-ruby")
17085 (license license:expat))))
17086
17087(define-public ruby-braintree
17088 (package
17089 (name "ruby-braintree")
17090 (version "4.12.0")
17091 (source
17092 (origin
17093 (method git-fetch) ;for tests
17094 (uri (git-reference
17095 (url "https://github.com/braintree/braintree_ruby")
17096 (commit version)))
17097 (file-name (git-file-name name version))
17098 (sha256
17099 (base32 "0gfgkymy3655drwgs42bj9ap9qib1l30sajxmypmp6s75m9w3gsh"))))
17100 (build-system ruby-build-system)
17101 (arguments
17102 (list
17103 #:test-target "test:unit"
17104 #:phases
17105 #~(modify-phases %standard-phases
17106 (add-after 'unpack 'disable-rubocop
17107 (lambda _
17108 (substitute* "Rakefile"
17109 (("sh \"rubocop\"") ""))))
17110 (add-after 'unpack 'relax-requirements
17111 (lambda _
17112 (substitute* "Gemfile"
17113 (("gem \"pry\".*") "gem 'pry'\n")
17114 (("gem \"rake\".*") "gem 'rake'\n")
17115 (("gem \"libxml-ruby\", \"3.2.0\"")
17116 "gem \"libxml-ruby\", \"~> 3.0.0\"")
17117 (("gem \"rspec\", \"3.9.0\"")
17118 "gem \"rspec\", \">= 3.9.0\"")
17119 (("gem \"webrick\", \"~>1.7.0\"")
17120 "gem \"webrick\", \">=1.7.0\"")
17121 ((".*gem \"rubocop\".*") "")
17122 ((".*gem \"rspec_junit_formatter\".*") "")))))))
17123 (native-inputs
17124 (list ruby-libxml
17125 ruby-pry
17126 ruby-rake
17127 ruby-rspec
17128 ruby-webrick))
17129 (propagated-inputs
17130 (list ruby-builder
17131 ruby-rexml))
17132 (home-page "https://www.braintreepayments.com/")
17133 (synopsis "Integration access to the Braintree Gateway")
17134 (description "Braintree provides resources and tools for developers to
17135integrate Braintree's global payments platform.")
17136 (license license:expat)))
17137
17138(define-public ruby-niceogiri
17139 (package
17140 (name "ruby-niceogiri")
17141 (version "1.1.2")
17142 (source
17143 (origin
17144 (method url-fetch)
17145 (uri (rubygems-uri "niceogiri" version))
17146 (sha256
17147 (base32 "1ha93211bc9cvh23s9w89zz7rq8irpf64ccd9arvg8v1sxg2798a"))))
17148 (build-system ruby-build-system)
17149 (arguments
17150 `(#:test-target "spec"
17151 #:phases
17152 (modify-phases %standard-phases
17153 (add-after 'extract-gemspec 'less-strict-dependencies
17154 (lambda _
17155 (substitute* "niceogiri.gemspec"
17156 (("2\\.7") "3.8") ;rspec
17157 ((".*dependency.*bundler.*") "\n")
17158 ((".*dependency.*guard-rspec.*") "\n")))))))
17159 (native-inputs
17160 (list ruby-rspec
17161 ruby-yard))
17162 (propagated-inputs (list ruby-nokogiri))
17163 (home-page "https://github.com/benlangfeld/Niceogiri")
17164 (synopsis "Supplement for Nokogiri")
17165 (description "Niceogiri provides wrappers and helpers for XML manipulation
17166using Nokogiri.")
17167 (license license:expat)))
17168
17169(define-public ruby-blather
17170 (package
17171 (name "ruby-blather")
17172 (version "2.0.0")
17173 (source
17174 (origin
17175 (method url-fetch)
17176 (uri (rubygems-uri "blather" version))
17177 (sha256
17178 (base32 "05ry2x835fj4pzk61282pcz86n018cr39zbgwbi213md74i90s7c"))))
17179 (build-system ruby-build-system)
17180 (arguments
17181 ;; XXX: Tests require too old version of rspec.
17182 `(#:tests? #f))
17183 (native-inputs
17184 (list ruby-countdownlatch
17185 ruby-mocha
17186 ruby-rb-fsevent
17187 ruby-rspec
17188 ruby-yard))
17189 (propagated-inputs
17190 (list ruby-activesupport
17191 ruby-eventmachine
17192 ruby-niceogiri
17193 ruby-nokogiri
17194 ruby-sucker-punch))
17195 (home-page "https://github.com/adhearsion/blather")
17196 (synopsis "XMPP Domain Specific Language for Ruby")
17197 (description "Blather is a XMPP DSL for Ruby written on top of EventMachine
17198and Nokogiri.")
17199 (license license:expat)))
17200
17201(define-public ruby-wapiti
17202 (package
17203 (name "ruby-wapiti")
17204 (version "2.1.0")
17205 ;; the gem archive lacks tests
17206 (source (origin
17207 (method git-fetch)
17208 (uri (git-reference
17209 (url "https://github.com/inukshuk/wapiti-ruby")
17210 (commit (string-append "v" version))))
17211 (file-name (git-file-name name version))
17212 (sha256
17213 (base32
17214 "1273dqvn6flq2qv9qbp104rgc7zp1gqx4096s0v0z5f0qnhzc7d6"))))
17215 (build-system ruby-build-system)
17216 (propagated-inputs
17217 (list ruby-builder
17218 ruby-rexml))
17219 (native-inputs
17220 (list ruby-pry
17221 ruby-rake-compiler
17222 ruby-rspec
17223 ruby-simplecov))
17224 (arguments
17225 (list
17226 #:test-target "spec"
17227 #:phases
17228 #~(modify-phases %standard-phases
17229 (add-after 'replace-git-ls-files 'replace-another-git-ls-files
17230 (lambda args
17231 (substitute* "wapiti.gemspec"
17232 (("`git ls-files spec`")
17233 "`find spec -type f | sort`"))))
17234 (add-before 'build 'compile
17235 (lambda args
17236 (invoke "rake" "compile"))))))
17237 (home-page "https://github.com/inukshuk/wapiti-ruby")
17238 (synopsis "Wicked fast Conditional Random Fields for Ruby")
17239 (description
17240 "The Wapiti-Ruby gem provides a wicked fast linear-chain @acronym{CRF,
17241Conditional Random Fields} API for sequence segmentation and labelling. It is
17242based on the codebase of @url{https://wapiti.limsi.fr, Wapiti}.")
17243 (license license:bsd-2)))
17244
17245(define-public ruby-namae
17246 (package
17247 (name "ruby-namae")
17248 (version "1.1.1")
17249 (source (origin
17250 (method url-fetch)
17251 (uri (rubygems-uri "namae" version))
17252 (sha256
17253 (base32
17254 "1j3nl1klkx3gymrdxfc1hlq4a8qlvhhl9aj5v1v08b9fz27sky0l"))))
17255 (build-system ruby-build-system)
17256 (native-inputs
17257 (list ruby-cucumber
17258 ruby-rspec
17259 ruby-simplecov))
17260 (arguments
17261 (list
17262 #:phases
17263 #~(modify-phases %standard-phases
17264 (add-after 'extract-gemspec 'allow-newer-cucumber
17265 (lambda args
17266 (substitute* "Gemfile"
17267 (("'cucumber', '[^']*'")
17268 "'cucumber'"))))
17269 (replace 'check
17270 ;; Avoid 'rake' so we don't need jeweler.
17271 (lambda* (#:key tests? #:allow-other-keys)
17272 (when tests?
17273 (apply invoke
17274 "rspec"
17275 (find-files "spec" "_spec\\.rb$"))))))))
17276 (home-page "https://github.com/berkmancenter/namae")
17277 (synopsis "Parser for human names")
17278 (description
17279 "Namae (名前) is a parser for human names. It recognizes personal names
17280of various cultural backgrounds and tries to split them into their component
17281parts (e.g., given and family names, honorifics etc.).")
17282 (license (list license:bsd-2 license:agpl3+))))
17283
17284(define-public ruby-latex-decode
17285 (package
17286 (name "ruby-latex-decode")
17287 (version "0.4.0")
17288 (source (origin
17289 (method git-fetch)
17290 (uri (git-reference
17291 (url "https://github.com/inukshuk/latex-decode")
17292 (commit (string-append "v" version))))
17293 (sha256
17294 (base32
17295 "1f5j67ayd04pjkmzvn0hk7cr8yqvn0gyg9ns6a0vhzj2gwna9ihy"))
17296 (file-name (git-file-name name version))))
17297 (build-system ruby-build-system)
17298 (native-inputs
17299 (list ruby-cucumber
17300 ruby-rspec))
17301 (arguments
17302 (list
17303 #:test-target "cucumber"
17304 #:phases
17305 #~(modify-phases %standard-phases
17306 (add-after 'extract-gemspec 'avoid-bundler
17307 (lambda args
17308 (substitute* "Rakefile"
17309 (("require 'bundler" orig)
17310 (string-append "# " orig " # patched for Guix"))
17311 (("Cucumber::Rake::Task\\.new[(]:cucumber[)]" orig)
17312 (string-append orig " do |c|\n"
17313 " c.bundler = false # patched for Guix\n"
17314 "end"))
17315 (("Bundler\\.setup" orig)
17316 (string-append "true # " orig " # patched for Guix")))
17317 (substitute* "cucumber.yml"
17318 ;; thanks to avoiding bundler, we can't use this option
17319 ((" --publish-quiet")
17320 ""))))
17321 (add-after 'replace-git-ls-files 'replace-another-git-ls-files
17322 (lambda args
17323 (substitute* "latex-decode.gemspec"
17324 (("`git ls-files -- [{]test,spec,features[}]/\\*`")
17325 "`find {test,spec,features} -type f | sort`")))))))
17326 (home-page "https://github.com/inukshuk/latex-decode")
17327 (synopsis "Convert LaTeX to Unicode")
17328 (description
17329 "This package provides a gem to convert LaTeX input to Unicode. Its
17330original use was as an input filter for BibTeX-Ruby, but it can be used
17331independently to decode LaTeX. Many of the patterns used by this Ruby gem are
17332based on François Charette's equivalent Perl module @code{LaTeX::Decode}.")
17333 (license license:gpl3+)))
17334
17335(define-public ruby-link-header
17336 (package
17337 (name "ruby-link-header")
17338 (version "0.0.8")
17339 (source (origin
17340 (method url-fetch)
17341 (uri (rubygems-uri "link_header" version))
17342 (sha256
17343 (base32
17344 "1yamrdq4rywmnpdhbygnkkl9fdy249fg5r851nrkkxr97gj5rihm"))))
17345 (build-system ruby-build-system)
17346 (home-page "https://github.com/asplake/link_header")
17347 (synopsis "Parse and format HTTP @code{Link} headers")
17348 (description
17349 "This gem provides the classes @code{LinkHeader} and
17350@code{LinkHeader::Link}, which represent HTTP @code{Link} headers conforming
17351to RFC 5988. Objects can be constructed from and converted to text or a
17352JSON-friendly @code{Array} representation. They can also be used to generate
17353corresponding HTML @code{link} elements.")
17354 (license license:expat)))
17355
17356(define-public ruby-lint-roller
17357 (package
17358 (name "ruby-lint-roller")
17359 (version "1.1.0")
17360 (source
17361 (origin
17362 (method url-fetch)
17363 (uri (rubygems-uri "lint_roller" version))
17364 (sha256
17365 (base32 "11yc0d84hsnlvx8cpk4cbj6a4dz9pk0r1k29p0n1fz9acddq831c"))))
17366 (build-system ruby-build-system)
17367 (arguments '(#:tests? #f)) ;Circular dependency on ruby-standard.
17368 (native-inputs (list ruby-minitest))
17369 (synopsis "Specification for linter and formatter rulesets")
17370 (description
17371 "This package provides a plugin specification for Ruby linter and
17372formatter rulesets.")
17373 (home-page "https://github.com/standardrb/lint_roller")
17374 (license license:expat)))
17375
17376(define-public ruby-rdf
17377 (package
17378 (name "ruby-rdf")
17379 (version "3.2.8")
17380 (source (origin
17381 (method url-fetch)
17382 (uri (rubygems-uri "rdf" version))
17383 (sha256
17384 (base32
17385 "1cj0k8ryd8hgbkgqb5swvy6fiygxny3y5bln0my5gv6dbfv3gm20"))))
17386 (build-system ruby-build-system)
17387 (propagated-inputs (list ruby-link-header))
17388 (arguments
17389 (list #:tests? #f)) ;; tests have many cyclic dependencies
17390 (home-page "https://ruby-rdf.github.io/")
17391 (synopsis "Linked Data for Ruby")
17392 (description
17393 "This gem contains the core algorithms and classes used for doing basic
17394programming with @acronym{RDF, Resource Description Framework} data,
17395implemented in pure Ruby.")
17396 (license license:unlicense)))
17397
17398(define-public ruby-rdf-vocab
17399 (package
17400 (name "ruby-rdf-vocab")
17401 (version "3.2.1")
17402 (source (origin
17403 (method url-fetch)
17404 (uri (rubygems-uri "rdf-vocab" version))
17405 (sha256
17406 (base32
17407 "1bqmp9rfjvd56ajjz68ij6jla1wjf1fqg7bi4dpnjrsmn4pwaq7l"))))
17408 (build-system ruby-build-system)
17409 (propagated-inputs
17410 (list ruby-rdf))
17411 (arguments
17412 (list #:tests? #f)) ;; tests have many cyclic dependencies
17413 (home-page "https://github.com/ruby-rdf/rdf-vocab")
17414 (synopsis "Common RDF vocabularies")
17415 (description
17416 "This gem extends @code{ruby-rdf} with several common @acronym{RDF,
17417Resource Description Framework} vocabularies.")
17418 (license license:unlicense)))
17419
17420(define-public ruby-rdiscount
17421 (package
17422 (name "ruby-rdiscount")
17423 (version "2.2.7")
17424 (source (origin
17425 (method git-fetch) ;for the full test suite
17426 (uri (git-reference
17427 (url "https://github.com/davidfstr/rdiscount")
17428 (commit version)))
17429 (file-name (git-file-name name version))
17430 (sha256
17431 (base32
17432 "1lpfxq3gv0dgmnki9jgfnc8n9k4x9vyq9miqdxv6g4kp90qyfifc"))))
17433 (build-system ruby-build-system)
17434 (native-inputs (list perl))
17435 (synopsis "Discount Markdown Processor for Ruby")
17436 (description "Discount is an implementation of John Gruber's Markdown
17437markup language in C. It implements all of the language described in the
17438markdown syntax document and passes the Markdown 1.0 test suite.")
17439 (home-page "https://dafoster.net/projects/rdiscount/")
17440 (license license:bsd-3)))
17441
17442(define-public ruby-bibtex-ruby
17443 (package
17444 (name "ruby-bibtex-ruby")
17445 (version "6.0.0")
17446 (source (origin
17447 (method url-fetch)
17448 (uri (rubygems-uri "bibtex-ruby" version))
17449 (sha256
17450 (base32
17451 "0vynqa8q9hwghw6sdljr304b5gh11nqzy5nwqqwxmgy7pqyf7qw5"))))
17452 (build-system ruby-build-system)
17453 (propagated-inputs
17454 (list ruby-latex-decode
17455 ruby-rdf
17456 ruby-rdf-vocab))
17457 (native-inputs
17458 (list ruby-cucumber
17459 ruby-minitest
17460 ruby-yard))
17461 (arguments
17462 (list
17463 #:phases
17464 #~(modify-phases %standard-phases
17465 (add-after 'extract-gemspec 'avoid-bundler
17466 (lambda args
17467 (substitute* "Rakefile"
17468 (("require 'bundler" orig)
17469 (string-append "# " orig " # patched for Guix"))
17470 (("Bundler\\.setup" orig)
17471 (string-append "true # " orig " # patched for Guix"))))))))
17472 (home-page "https://github.com/inukshuk/bibtex-ruby")
17473 (synopsis "Rubyist's Swiss Army knife for all things BibTeX")
17474 (description
17475 "BibTeX-Ruby is the Rubyist's Swiss Army knife for all things BibTeX.
17476It includes a parser for all common BibTeX objects and a sophisticated name
17477parser that tokenizes correctly formatted names. BibTeX-Ruby recognizes
17478BibTeX string replacements, joins values containing multiple strings or
17479variables, supports cross-references, and decodes common LaTeX formatting
17480instructions to unicode. If you are in a hurry, it also allows for easy
17481export/conversion to formats such as YAML, JSON, CSL, and XML (BibTeXML).")
17482 (license license:gpl3+)))
17483
17484(define-public ruby-unicode-scripts
17485 (package
17486 (name "ruby-unicode-scripts")
17487 (version "1.8.0")
17488 (source (origin
17489 (method url-fetch)
17490 (uri (rubygems-uri "unicode-scripts" version))
17491 (sha256
17492 (base32
17493 "0rl6mn908yryhrg8j3mmna54gnrid2nph2kym00lbz6jwdih2a1b"))))
17494 (build-system ruby-build-system)
17495 (native-inputs (list ruby-minitest))
17496 (arguments (list #:test-target "spec"))
17497 (home-page "https://github.com/janlelis/unicode-scripts")
17498 (synopsis "Unicode script classification library")
17499 (description "This gem provides a simple interface for classifying Ruby
17500strings using the Unicode @code{Script} and @code{Script_Extensions}
17501properties.")
17502 (license license:expat)))
17503
17504(define-public ruby-citeproc
17505 (package
17506 (name "ruby-citeproc")
17507 (version "1.0.10")
17508 (source (origin
17509 (method url-fetch)
17510 (uri (rubygems-uri "citeproc" version))
17511 (sha256
17512 (base32
17513 "13vl5sjmksk5a8kjcqnjxh7kn9gn1n4f9p1rvqfgsfhs54p0m6l2"))))
17514 (build-system ruby-build-system)
17515 (propagated-inputs
17516 (list ruby-namae))
17517 (arguments
17518 (list #:tests? #f)) ;; tests have a cyclic dependency
17519 (home-page "https://github.com/inukshuk/citeproc")
17520 (synopsis "Interface for Ruby citation processors")
17521 (description
17522 "CiteProc is a citation processor interface and citation data API based
17523on the @acronym{CSL, Citation Style Language} specifications. To actually
17524process citations, a dedicated processor engine is required: a pure Ruby
17525engine is available in the @code{citeproc-ruby} gem.")
17526 (license (list license:agpl3+ license:bsd-2))))
17527
17528(define-public ruby-ed25519
17529 (package
17530 (name "ruby-ed25519")
17531 (version "1.3.0")
17532 (source (origin
17533 (method git-fetch)
17534 (uri (git-reference
17535 (url "https://github.com/RubyCrypto/ed25519")
17536 (commit (string-append "v" version))))
17537 (file-name (git-file-name name version))
17538 (sha256
17539 (base32
17540 "1jm5w2dyhyrndcx0d02v0gjbzl1abhbx2wkp3gxzwcndghmkz98r"))))
17541 (build-system ruby-build-system)
17542 (arguments
17543 (list
17544 #:test-target "spec"
17545 #:phases
17546 #~(modify-phases %standard-phases
17547 (add-before 'build 'compile
17548 (lambda _
17549 (invoke "rake" "compile")))
17550 (add-after 'unpack 'remove-unnecessary-dependencies
17551 (lambda _
17552 ;; Coveralls relates to a network service, and RuboCop to code
17553 ;; linting and both are unnecessary to run the tests
17554 (substitute* "Gemfile"
17555 ((".*coveralls.*")
17556 "\n")
17557 ((".*rubocop.*")
17558 "\n"))
17559 (substitute* "spec/spec_helper.rb"
17560 (("require \"coveralls\"")
17561 "")
17562 (("Coveralls.wear!")
17563 ""))
17564 (substitute* "Rakefile"
17565 (("require \"rubocop/rake_task\"")
17566 "")
17567 (("RuboCop::RakeTask.new")
17568 "")))))))
17569 (native-inputs (list ruby-rake-compiler ruby-rspec))
17570 (synopsis
17571 "Ruby binding to the Ed25519 elliptic curve public-key signature system")
17572 (description
17573 "This package provides a Ruby binding to the Ed25519 elliptic curve
17574public-key signature system described in
17575@url{https://www.ietf.org/rfc/rfc8032.txt, RFC 8032}.")
17576 (home-page "https://github.com/RubyCrypto/ed25519")
17577 (license license:expat)))
17578
17579(define-public ruby-edtf
17580 (package
17581 (name "ruby-edtf")
17582 (version "3.1.0")
17583 (source (origin
17584 (method git-fetch)
17585 (uri (git-reference
17586 (url "https://github.com/inukshuk/edtf-ruby")
17587 (commit (string-append "v" version))))
17588 (sha256
17589 (base32
17590 "18j8xq8zmrn41cs2gpd1i87agi9905asvnjqndky2cqb5zg3q14g"))
17591 (snippet
17592 ;; remove generated file
17593 #~(delete-file "lib/edtf/parser.rb"))
17594 (file-name (git-file-name name version))))
17595 (build-system ruby-build-system)
17596 (propagated-inputs
17597 (list ruby-activesupport))
17598 (native-inputs
17599 (list ruby-cucumber
17600 ruby-rspec))
17601 (arguments
17602 (list
17603 #:phases
17604 #~(modify-phases %standard-phases
17605 (add-after 'extract-gemspec 'avoid-bundler
17606 (lambda args
17607 (substitute* "Rakefile"
17608 (("require 'bundler" orig)
17609 (string-append "# " orig " # patched for Guix"))
17610 (("bundle exec racc")
17611 "racc")
17612 (("Cucumber::Rake::Task\\.new[(]:cucumber[)]" orig)
17613 (string-append orig " do |c|\n"
17614 " c.bundler = false # patched for Guix\n"
17615 "end"))
17616 (("Bundler\\.setup" orig)
17617 (string-append "true # " orig " # patched for Guix")))))
17618 (add-after 'avoid-bundler 'patch-cucumber-options
17619 (lambda args
17620 (substitute* "cucumber.yml"
17621 ;; this option is not supported, at least in our configuration
17622 ((" --publish-quiet")
17623 ""))))
17624 (add-before 'build 'compile
17625 (lambda args
17626 (invoke "rake" "racc")))
17627 (replace 'check
17628 (lambda* (#:key tests? #:allow-other-keys)
17629 (when tests?
17630 (invoke "rake")))))))
17631 (home-page "https://github.com/inukshuk/edtf-ruby")
17632 (synopsis "Ruby implementation of Extended Date/Time Format")
17633 (description
17634 "EDTF-Ruby provides a parser and an API for the @acronym{EDTF, Extended
17635Date/Time Format} standard, implemented as an extension to Ruby's @code{Date}
17636class.")
17637 (license license:bsd-2)))
17638
17639(define-public ruby-gli
17640 (package
17641 (name "ruby-gli")
17642 (version "2.21.0")
17643 (source (origin
17644 (method git-fetch)
17645 (uri (git-reference
17646 (url "https://github.com/davetron5000/gli")
17647 (commit (string-append "v" version))))
17648 (sha256
17649 (base32
17650 "09b1r9hlx4dy2yq036nk7hc2nbswhia6q3na9v11z94yibc8mgja"))
17651 (file-name (git-file-name name version))))
17652 (build-system ruby-build-system)
17653 (native-inputs
17654 (list ruby-minitest
17655 ruby-rainbow
17656 ruby-rdoc
17657 ruby-sdoc))
17658 (arguments
17659 (list
17660 #:phases
17661 #~(modify-phases %standard-phases
17662 (add-after 'extract-gemspec 'patch-gemspec-version
17663 (lambda args
17664 (substitute* "gli.gemspec"
17665 ;; this trick fails in our build environment
17666 (("require File\\.join[(]\\[" orig)
17667 (string-append "# patched for Guix # " orig))
17668 (("s\\.version = GLI::VERSION")
17669 #$(string-append "s.version = '"
17670 (package-version this-package)
17671 "' # patched for Guix")))))
17672 (add-after 'replace-git-ls-files 'replace-another-git-ls-files
17673 (lambda args
17674 (substitute* "gli.gemspec"
17675 (("`git ls-files -- [{]test,spec,features[}]/\\*`")
17676 "`find {test,spec,features} -type f | sort`"))))
17677 (add-after 'replace-another-git-ls-files 'fix-rubyopt
17678 (lambda args
17679 (substitute* "Rakefile"
17680 (("ENV\\[\"RUBYOPT\"]")
17681 "(ENV['RUBYOPT'] || '')")))))))
17682 (home-page "https://davetron5000.github.io/gli/")
17683 (synopsis "Git-Like Interface command-line parser")
17684 (description
17685 "GLI allows you to create command-line applications in Ruby with Git-Like
17686Interfaces: that is, they take subcommands in the style of @command{git} and
17687@command{gem}. GLI uses a simple domain-specific language, but retains all
17688the power of the built-in @code{OptionParser}.")
17689 (license license:asl2.0)))
17690
17691(define-public ruby-anystyle-data
17692 (package
17693 (name "ruby-anystyle-data")
17694 (version "1.3.0")
17695 (source (origin
17696 (method git-fetch)
17697 (uri (git-reference
17698 (url "https://github.com/inukshuk/anystyle-data")
17699 (commit (string-append "v" version))))
17700 (sha256
17701 (base32
17702 "1jh880310m3gjdrk4m8rwwnsf0824zkf26clpr8p64sac2fyy907"))
17703 (snippet
17704 ;; remove pre-built file
17705 #~(delete-file "lib/anystyle/data/dict.txt.gz"))
17706 (patches
17707 (search-patches "ruby-anystyle-data-immutable-install.patch"))
17708 (file-name (git-file-name name version))))
17709 (build-system ruby-build-system)
17710 (arguments
17711 (list
17712 #:tests? #f ;; there are none
17713 #:modules
17714 `((guix build ruby-build-system)
17715 (guix build utils)
17716 (srfi srfi-26))
17717 #:phases
17718 #~(modify-phases %standard-phases
17719 (add-after 'replace-git-ls-files 'replace-another-git-ls-files
17720 (lambda args
17721 (substitute* "anystyle-data.gemspec"
17722 (("`git ls-files lib README\\.md LICENSE`\\.split[(][^)]*[)]")
17723 (string-append
17724 "["
17725 (string-join
17726 (map (cut string-append "\"" <> "\"")
17727 `("README.md"
17728 "LICENSE"
17729 "lib/anystyle/data.rb"
17730 "lib/anystyle/data/dict.txt.gz"
17731 "lib/anystyle/data/setup.rb"
17732 "lib/anystyle/data/version.rb"))
17733 ", ")
17734 "]")))))
17735 (add-before 'build 'compile-dict
17736 (lambda args
17737 (invoke "rake" "compile"))))))
17738 (home-page "https://anystyle.io")
17739 (synopsis "AnyStyle parser dictionary data")
17740 (description
17741 "This gem provides parser dictionary data for AnyStyle.")
17742 (license license:bsd-2)))
17743
17744(define-public ruby-anystyle
17745 (package
17746 (name "ruby-anystyle")
17747 (version "1.4.2")
17748 (source (origin
17749 (method git-fetch)
17750 (uri (git-reference
17751 (url "https://github.com/inukshuk/anystyle")
17752 (commit (string-append "v" version))))
17753 (sha256
17754 (base32
17755 "0xhy7wj8v7iahikck6vxbdpncaz5w2gb11b32kmvg5ckgi2kz23p"))
17756 (snippet
17757 ;; There is an optional dependency on
17758 ;; <https://github.com/feedbackmine/language_detector>, which
17759 ;; seems like it was intended to be free software, but
17760 ;; doesn't have a clear license statement. Maybe someone can
17761 ;; do more sleuthing, or else find a replacement? See also
17762 ;; <https://github.com/inukshuk/anystyle/issues/186>. For
17763 ;; now, patch it out, but leave a pointer to follow up.
17764 #~(begin
17765 (use-modules (guix build utils))
17766 (substitute* "Gemfile"
17767 (("gem 'language_detector', github: '[^']*'" orig)
17768 (string-append "# " orig " # unclear license")))
17769 (substitute* "spec/anystyle/parser_spec.rb"
17770 (("language: 'en'," orig)
17771 (string-append "# " orig " # no lanugage_detector")))))
17772 (patches
17773 (search-patches
17774 "ruby-anystyle-fix-dictionary-populate.patch"))
17775 (file-name (git-file-name name version))))
17776 (build-system ruby-build-system)
17777 (propagated-inputs
17778 (list ruby-anystyle-data
17779 ruby-bibtex-ruby
17780 ruby-namae
17781 ruby-wapiti))
17782 (native-inputs
17783 (list ruby-byebug
17784 ruby-citeproc
17785 ruby-edtf
17786 ruby-gdbm
17787 ruby-rspec
17788 ruby-unicode-scripts))
17789 (arguments
17790 (list
17791 #:test-target "spec"
17792 #:phases
17793 #~(modify-phases %standard-phases
17794 (add-after 'extract-gemspec 'avoid-bundler
17795 (lambda args
17796 (substitute* "Rakefile"
17797 (("require 'bundler" orig)
17798 (string-append "# " orig " # patched for Guix"))
17799 (("Bundler\\.setup" orig)
17800 (string-append "true # " orig " # patched for Guix")))))
17801 (add-after 'replace-git-ls-files 'replace-another-git-ls-files
17802 (lambda args
17803 (substitute* "anystyle.gemspec"
17804 (("`git ls-files spec`")
17805 "`find spec -type f | sort`"))))
17806 (add-after 'wrap 'populate-dictionaries
17807 (lambda args
17808 ;; We must initialize these files here, or they will never be
17809 ;; usable with the default settings. A more flexible approach
17810 ;; might use something like `Gem.find_files()` or
17811 ;; XDG_DATA_DIRS.
17812 (with-output-to-file "initialize-dictionaries.rb"
17813 (lambda ()
17814 (display "\
17815require 'anystyle/dictionary' # must come before 'anystyle/data'
17816require 'anystyle/data'
17817[:marshal, :gdbm].each do |adapter|
17818 AnyStyle::Dictionary.create({adapter: adapter}).open().close()
17819end
17820")))
17821 (let* ((old-gems (getenv "GEM_PATH"))
17822 (new-gems (string-append #$output
17823 "/lib/ruby/vendor_ruby:"
17824 old-gems)))
17825 (dynamic-wind
17826 (lambda ()
17827 (setenv "GEM_PATH" new-gems))
17828 (lambda ()
17829 (invoke "ruby" "initialize-dictionaries.rb"))
17830 (lambda ()
17831 (setenv "GEM_PATH" old-gems)))))))))
17832 (home-page "https://anystyle.io")
17833 (synopsis "Fast and smart citation reference parsing (Ruby library)")
17834 (description
17835 "AnyStyle is a very fast and smart parser for academic reference lists
17836and bibliographies. AnyStyle uses powerful machine learning heuristics based
17837on Conditional Random Fields and aims to make it easy to train the model with
17838data that is relevant to your parsing needs.
17839
17840This package provides the Ruby module @code{AnyStyle}. AnyStyle can also be
17841used via the @command{anystyle} command-line utility or a web application,
17842though the later has not yet been packaged for Guix.")
17843 (license license:bsd-2)))
17844
17845(define-public anystyle
17846 (package
17847 (name "anystyle")
17848 (version "1.4.5")
17849 (source (origin
17850 (method git-fetch)
17851 (uri (git-reference
17852 (url "https://github.com/inukshuk/anystyle-cli")
17853 (commit (string-append "v" version))))
17854 (sha256
17855 (base32
17856 "10jx830mx9vh7rsz87ndvz8w5b5azd9s231vwyb0dqxs921v6qwy"))
17857 (file-name (git-file-name name version))))
17858 (build-system ruby-build-system)
17859 (propagated-inputs
17860 (list ruby-anystyle
17861 ruby-bibtex-ruby
17862 ruby-gli))
17863 (native-inputs
17864 (list ruby-gdbm
17865 txt2man))
17866 (arguments
17867 (list
17868 #:modules
17869 `((guix build ruby-build-system)
17870 (ice-9 popen)
17871 (srfi srfi-1)
17872 (guix build utils))
17873 #:phases
17874 #~(modify-phases %standard-phases
17875 (add-after 'extract-gemspec 'less-strict-dependencies
17876 (lambda args
17877 (substitute* "anystyle-cli.gemspec"
17878 (("'bibtex-ruby', '[^']*'")
17879 "'bibtex-ruby'"))))
17880 (add-before 'build 'change-default-dictionary-adapter
17881 (lambda args
17882 ;; Since we always have gdbm available, using it will give a
17883 ;; faster startup time, which is particularly worth-while for
17884 ;; a command-line tool.
17885 (substitute* "bin/anystyle"
17886 (("default_value: 'ruby',")
17887 "default_value: 'gdbm', # patched for Guix"))))
17888 (replace 'check
17889 (lambda* (#:key tests? #:allow-other-keys)
17890 ;; There are no tests, but let's use this opportunity to do a
17891 ;; basic test of our own that things run ok. It works especially
17892 ;; well to test this here since we know the 'ruby-anystile'
17893 ;; package is in its final, immutable installed form.
17894 (when tests?
17895 (let ((common
17896 `("require 'anystyle'"
17897 ,(string-append
17898 "pp AnyStyle.parse 'Derrida, J. (1967). L’écriture"
17899 " et la différence (1 éd.). Paris: Éditions du"
17900 " Seuil.'"))))
17901 (for-each
17902 (lambda (lines)
17903 (apply invoke "ruby"
17904 (fold-right (lambda (line lst)
17905 (cons* "-e" line lst))
17906 '()
17907 lines)))
17908 `(,common
17909 ("require 'anystyle/dictionary'"
17910 "AnyStyle::Dictionary.defaults[:adapter] = :gdbm"
17911 ,@common)))))))
17912 (add-after 'wrap 'check-cli
17913 (lambda* (#:key tests? outputs #:allow-other-keys)
17914 (when tests?
17915 (with-output-to-file "check-cli.in"
17916 (lambda ()
17917 (for-each
17918 display
17919 '("Derrida, J. (1967). L’écriture et la différence "
17920 "(1 éd.). Paris: Éditions du Seuil.\n"))))
17921 (invoke (search-input-file outputs "/bin/anystyle")
17922 "parse"
17923 "check-cli.in"))))
17924 (add-after 'wrap 'generate-man-page
17925 ;; generating a man page also tests that the command actually runs
17926 (lambda args
17927 (define (run-with-output-file file command . args)
17928 (format (current-output-port)
17929 "running: ~s\nwith output to: ~s\n"
17930 (cons command args)
17931 file)
17932 (unless (zero?
17933 (with-output-to-file file
17934 (lambda ()
17935 (status:exit-val
17936 (close-pipe
17937 (apply open-pipe* OPEN_WRITE command args))))))
17938 (error "command failed")))
17939 (let ((anystyle (string-append #$output "/bin/anystyle")))
17940 (run-with-output-file "intro.txt"
17941 anystyle "--help")
17942 (for-each (lambda (cmd)
17943 (let ((file (string-append cmd ".txt")))
17944 (run-with-output-file file
17945 anystyle cmd "--help")
17946 ;; indent headings to create subsections
17947 (substitute* file
17948 (("^[A-Z]" orig)
17949 (string-append " " orig)))
17950 ;; generate a section heading
17951 (call-with-output-file
17952 (string-append "section-" file)
17953 (lambda (out)
17954 (format out "\n\n~a COMMAND\n\n"
17955 (string-upcase cmd))))))
17956 '("check" "find" "parse" "train"))
17957 (substitute* `("intro.txt"
17958 "check.txt" "find.txt" "parse.txt" "train.txt")
17959 ;; format "tag list" for txt2man"
17960 ((" - ")
17961 " ")
17962 ;; restore formatting of the "name" sections
17963 (("(anystyle|check|find|parse|train) ([A-Z])" _ cmd post)
17964 (string-append cmd " - " post)))
17965 (run-with-output-file "anystyle.txt"
17966 "cat"
17967 "intro.txt"
17968 "section-check.txt" "check.txt"
17969 "section-find.txt" "find.txt"
17970 "section-parse.txt" "parse.txt"
17971 "section-train.txt" "train.txt")
17972 (run-with-output-file
17973 "anystyle.1"
17974 "txt2man"
17975 "-v" "General Commands Manual" "-t" "anystyle" "-s" "1"
17976 "-r" #$(string-append "anystyle-cli "
17977 (package-version this-package))
17978 "-B" "check" "-B" "find" "-B" "parse" "-B" "train"
17979 "anystyle.txt")
17980 (install-file "anystyle.1"
17981 (string-append #$output "/share/man/man1"))))))))
17982 (home-page "https://anystyle.io")
17983 (synopsis "Fast and smart citation reference parsing")
17984 (description
17985 "AnyStyle is a very fast and smart parser for academic reference lists
17986and bibliographies. AnyStyle uses powerful machine learning heuristics based
17987on Conditional Random Fields and aims to make it easy to train the model with
17988data that is relevant to your parsing needs.
17989
17990This package provides the @command{anystyle} command-line utility. AnyStyle
17991can also be used as a Ruby library or as a web application, though the later
17992has not yet been packaged for Guix.")
17993 (license license:bsd-2)
17994 (properties `((upstream-name . "anystyle-cli")))))
17995
17996(define-public ruby-google-protobuf
17997 (package
17998 (name "ruby-google-protobuf")
17999 (version "3.25.3")
18000 (source (origin
18001 (method url-fetch)
18002 (uri (rubygems-uri "google-protobuf" version))
18003 (sha256
18004 (base32
18005 "1mnxzcq8kmyfb9bkzqnp019d1hx1vprip3yzdkkha6b3qz5rgg9r"))))
18006 (build-system ruby-build-system)
18007 (arguments
18008 `(#:tests? #f)) ;; has no tests
18009 (native-inputs (list ruby-rake))
18010 (synopsis "Protocol Buffers are Google's data interchange format")
18011 (description "This library contains the Ruby extension that implements
18012Protocol Buffers functionality in Ruby.
18013
18014The Ruby extension makes use of generated Ruby code that defines message and
18015enum types in a Ruby DSL. You may write definitions in this DSL directly, but
18016we recommend using protoc's Ruby generation support with @code{.proto} files.
18017The build process in this directory only installs the extension; you need to
18018install @code{protoc} (in package ruby-grpc-tools) as well to have Ruby code
18019generation functionality.")
18020 (home-page "https://protobuf.dev")
18021 (license license:bsd-3)))
18022
18023(define-public ruby-googleapis-common-protos-types
18024 (package
18025 (name "ruby-googleapis-common-protos-types")
18026 (version "1.13.0")
18027 (source (origin
18028 (method url-fetch)
18029 (uri (rubygems-uri "googleapis-common-protos-types" version))
18030 (sha256
18031 (base32
18032 "1zrxnv9s2q39f2nh32x7nbfi8lpwzmmn3ji4adglg8dlfr1xrz16"))))
18033 (build-system ruby-build-system)
18034 (arguments
18035 `(#:tests? #f)) ;; has no tests
18036 (propagated-inputs (list ruby-google-protobuf))
18037 (synopsis "Common protocol buffer types used by Google APIs")
18038 (description "Common protocol buffer types used by Google APIs")
18039 (home-page "https://github.com/googleapis/common-protos-ruby")
18040 (license license:asl2.0)))
18041
18042(define-public ruby-grpc
18043 (package
18044 (name "ruby-grpc")
18045 (version "1.62.0")
18046 (source (origin
18047 (method url-fetch)
18048 (uri (rubygems-uri "grpc" version))
18049 (sha256
18050 (base32
18051 "03z8yq0z228g6xxxq6s2mmslpv6psrdmi30dpmhysr4px16d897n"))))
18052 (build-system ruby-build-system)
18053 (arguments
18054 `(#:tests? #f)) ;; has no tests
18055 ;; TODO remove third-party sources (zlib, upb, utf8-range, re2, c-ares,
18056 ;; boringssl-with-bazel, address_sorting, abseil-cpp), see Makefile
18057 (propagated-inputs (list ruby-google-protobuf
18058 ruby-googleapis-common-protos-types))
18059 (synopsis "GRPC system in Ruby")
18060 (description "GRPC is a high performance, open-source universal RPC
18061framework. This package provides a ruby interface for it.")
18062 (home-page "https://github.com/grpc/grpc/tree/master/src/ruby")
18063 (license license:asl2.0)))
18064
18065;;; 322;;;
18066;;; Avoid adding new packages to the end of this file. To reduce the chances 323;;; Avoid adding new packages to the end of this file. To reduce the chances
18067;;; of a merge conflict, place them above by existing packages with similar 324;;; of a merge conflict, place them above by existing packages with similar