guix.scm

   1(use-modules
   2  ((guix licenses) #:prefix license:)
   3  (guix packages)
   4  (guix download)
   5  (guix gexp)
   6  (guix git-download)
   7  (guix build-system ruby)
   8  (guix build-system copy)
   9  (gnu packages rails)
  10  (gnu packages ruby)
  11  (gnu packages tls)
  12  (gnu packages databases)
  13  (ice-9 rdelim)
  14  (ice-9 popen))
  15
  16(define-public ruby-bigdecimal
  17  (package
  18    (name "ruby-bigdecimal")
  19    (version "4.0.1")
  20    (source
  21     (origin
  22       (method url-fetch)
  23       (uri (rubygems-uri "bigdecimal" version))
  24       (sha256
  25        (base32 "19y406nx17arzsbc515mjmr6k5p59afprspa1k423yd9cp8d61wb"))))
  26    (build-system ruby-build-system)
  27    (arguments
  28     `(#:tests? #f))
  29    (synopsis
  30     "This library provides arbitrary-precision decimal floating-point number class.")
  31    (description
  32     "This library provides arbitrary-precision decimal floating-point number class.")
  33    (home-page "https://github.com/ruby/bigdecimal")
  34    (license #f)))
  35
  36(define-public ruby-ox
  37  (package
  38    (name "ruby-ox")
  39    (version "2.14.23")
  40    (source
  41     (origin
  42       (method url-fetch)
  43       (uri (rubygems-uri "ox" version))
  44       (sha256
  45        (base32 "0rhv8qdnm3s34yvsvmrii15f2238rk3psa6pq6x5x367sssfv6ja"))))
  46    (build-system ruby-build-system)
  47    (arguments
  48     `(#:tests? #f))
  49    (propagated-inputs (list ruby-bigdecimal))
  50    (synopsis
  51     "A fast XML parser and object serializer that uses only standard C lib.
  52
  53Optimized XML (Ox), as the name implies was written to provide speed optimized
  54XML handling. It was designed to be an alternative to Nokogiri and other Ruby
  55XML parsers for generic XML parsing and as an alternative to Marshal for Object
  56serialization. ")
  57    (description
  58     "This package provides a fast XML parser and object serializer that uses only
  59standard C lib.  Optimized XML (Ox), as the name implies was written to provide
  60speed optimized XML handling.  It was designed to be an alternative to Nokogiri
  61and other Ruby XML parsers for generic XML parsing and as an alternative to
  62Marshal for Object serialization.")
  63    (home-page "http://www.ohler.com/ox/")
  64    (license license:expat)))
  65
  66(define-public ruby-base64
  67  (package
  68    (name "ruby-base64")
  69    (version "0.3.0")
  70    (source
  71     (origin
  72       (method url-fetch)
  73       (uri (rubygems-uri "base64" version))
  74       (sha256
  75        (base32 "0yx9yn47a8lkfcjmigk79fykxvr80r4m1i35q82sxzynpbm7lcr7"))))
  76    (build-system ruby-build-system)
  77    (arguments
  78     `(#:tests? #f))
  79    (synopsis
  80     "Support for encoding and decoding binary data using a Base64 representation.")
  81    (description
  82     "Support for encoding and decoding binary data using a Base64 representation.")
  83    (home-page "https://github.com/ruby/base64")
  84    (license #f)))
  85
  86(define-public ruby-addressable
  87  (package
  88    (name "ruby-addressable")
  89    (version "2.8.8")
  90    (source
  91     (origin
  92       (method url-fetch)
  93       (uri (rubygems-uri "addressable" version))
  94       (sha256
  95        (base32 "0mxhjgihzsx45l9wh2n0ywl9w0c6k70igm5r0d63dxkcagwvh4vw"))))
  96    (build-system ruby-build-system)
  97    (arguments
  98     `(#:tests? #f))
  99    (propagated-inputs (list ruby-public-suffix))
 100    (synopsis
 101     "Addressable is an alternative implementation to the URI implementation that is
 102part of Ruby's standard library. It is flexible, offers heuristic parsing, and
 103additionally provides extensive support for IRIs and URI templates.
 104")
 105    (description
 106     "Addressable is an alternative implementation to the URI implementation that is
 107part of Ruby's standard library.  It is flexible, offers heuristic parsing, and
 108additionally provides extensive support for IRIs and URI templates.")
 109    (home-page "https://github.com/sporkmonger/addressable")
 110    (license #f)))
 111
 112(define-public ruby-multipart-parser
 113  (package
 114    (name "ruby-multipart-parser")
 115    (version "0.1.1")
 116    (source (origin
 117              (method url-fetch)
 118              (uri (rubygems-uri "multipart-parser" version))
 119              (sha256
 120               (base32
 121                "0xb4p475yrfm883h9kn80a021myn17dvs50wpa1djzcmlq7p0882"))))
 122    (build-system ruby-build-system)
 123    (arguments
 124     (list
 125      #:phases #~(modify-phases %standard-phases
 126                   (add-after 'unpack 'skip-failing-test
 127                     ;; One test fails for unknown reasons (see:
 128                     ;; https://github.com/danabr/multipart-parser/issues/7).
 129                     (lambda _
 130                       (substitute* "test/multipart_parser/reader_test.rb"
 131                         (("def test_long" all)
 132                          (string-append all "\n      return true"))))))))
 133    (synopsis "Parser for multipart MIME messages")
 134    (description "@code{multipart-parser} is a simple parser for multipart
 135MIME messages, written in Ruby, based on felixge/node-formidable's parser.  It
 136has the following characteristics:
 137@itemize
 138@item Pure Ruby
 139@item Event-driven API
 140@item Only supports one level of multipart parsing
 141@item Does not perform I/O
 142@item Does not depend on any other library.
 143@end itemize")
 144    (home-page "https://github.com/danabr/multipart-parser")
 145    (license license:expat)))
 146
 147(define-public ruby-ruby2-keywords
 148  (package
 149    (name "ruby-ruby2-keywords")
 150    (version "0.0.5")
 151    (source (origin
 152              (method git-fetch)
 153              (uri (git-reference
 154                    (url "https://github.com/ruby/ruby2_keywords")
 155                    (commit (string-append "v" version))))
 156              (file-name (git-file-name name version))
 157              (sha256
 158               (base32
 159                "1jhqb152zfr2yrxj6j8rzakkwdkg5viggwnnqrrfxwwy63msdi97"))))
 160    (build-system ruby-build-system)
 161    (arguments
 162     (list
 163      #:phases
 164      #~(modify-phases %standard-phases
 165          (add-after 'unpack 'delete-extraneous-rake-files
 166            (lambda _
 167              (for-each delete-file '("rakelib/changelogs.rake"
 168                                      "rakelib/epoch.rake"
 169                                      "rakelib/version.rake"))))
 170          (add-after 'extract-gemspec 'adjust-files
 171            (lambda _
 172              (substitute* "ruby2_keywords.gemspec"
 173                ;; This file is not present in the git checkout.
 174                ((".*\"ChangeLog\",.*") "")))))))
 175    (synopsis "Shim library for Module#ruby2_keywords")
 176    (description "Provides empty @code{Module#ruby2_keywords} method, for the
 177forward source-level compatibility against @command{ruby2.7} and
 178@command{ruby3}.")
 179    (home-page "https://github.com/ruby/ruby2_keywords")
 180    (license license:bsd-2)))
 181
 182(define-public ruby-faraday-multipart
 183  (package
 184    (name "ruby-faraday-multipart")
 185    (version "1.0.4")
 186    (source (origin
 187              (method git-fetch)
 188              (uri (git-reference
 189                    (url "https://github.com/lostisland/faraday-multipart")
 190                    (commit (string-append "v" version))))
 191              (file-name (git-file-name name version))
 192              (sha256
 193               (base32
 194                "0ywxhff40a688n50lxrn4d8y096l8sbrwp1jfz4zd3kdiiygclka"))))
 195    (build-system ruby-build-system)
 196    (arguments (list #:tests? #f #:test-target "spec"))
 197    (native-inputs (list ruby-multipart-parser ruby-rspec))
 198    (propagated-inputs (list ruby-multipart-post))
 199    (synopsis "Multipart-post requests extension for Faraday")
 200    (description "This Ruby gem extends Faraday to perform multipart-post
 201requests.")
 202    (home-page "https://github.com/lostisland/faraday-multipart")
 203    (license license:expat)))
 204
 205(define-public ruby-eventmachine-openssl
 206  (package
 207    (inherit ruby-eventmachine)
 208    (inputs `(("openssl" ,openssl)))))
 209
 210(define-public ruby-countdownlatch
 211  (package
 212    (name "ruby-countdownlatch")
 213    (version "1.0.0")
 214    (source
 215      (origin
 216        (method url-fetch)
 217        (uri (rubygems-uri "countdownlatch" version))
 218        (sha256
 219          (base32
 220            "1v6pbay6z07fp7yvnba1hmyacbicvmjndd8rn2h1b5rmpcb5s0j3"))))
 221    (build-system ruby-build-system)
 222    (synopsis
 223      "A synchronization aid that allows one or more threads to wait until a set of operations being performed in other threads completes")
 224    (description
 225      "This package provides a synchronization aid that allows one or more threads to wait until a set of operations being performed in other threads completes")
 226    (home-page
 227      "https://github.com/benlangfeld/countdownlatch")
 228    (license license:expat)))
 229
 230(define-public ruby-blather
 231  (package
 232    (name "ruby-blather")
 233    (version "926da56cbb36ec63fe8fb74d1eafbb60a6c3cc91")
 234    (source
 235      (origin
 236      (method git-fetch)
 237      ;; Download from GitHub because the rubygems version requires old
 238      ;; version of bundler Rakefile.
 239      (uri (git-reference
 240          (url "https://github.com/singpolyma/blather")
 241          (commit version)))
 242      (file-name (git-file-name name version))
 243        (sha256
 244          (base32
 245            "0m3vvlhjaixi79fnp00jl7g69vd5kp40d3h83xvzamzdq1hfya03"))))
 246    (build-system ruby-build-system)
 247    (arguments
 248     `(#:tests? #f #:phases
 249       (modify-phases %standard-phases
 250         (add-after 'extract-gemspec 'less-strict-dependencies
 251           (lambda _
 252             (substitute* "blather.gemspec"
 253               ((".*guard-rspec.*") "\n")
 254                ((".*bluecloth.*") "\n"))
 255             #t)))))
 256    (propagated-inputs
 257      `(("ruby-activesupport" ,ruby-activesupport)
 258        ("ruby-eventmachine" ,ruby-eventmachine)
 259        ("ruby-niceogiri" ,ruby-niceogiri)
 260        ("ruby-nokogiri" ,ruby-nokogiri)
 261        ("ruby-sucker-punch" ,ruby-sucker-punch)))
 262    (native-inputs
 263     `(("ruby-rspec" ,ruby-rspec)
 264       ("ruby-yard" ,ruby-yard)
 265       ("ruby-countdownlatch" ,ruby-countdownlatch)
 266       ("ruby-rb-fsevent" ,ruby-rb-fsevent)
 267       ("ruby-mocha" ,ruby-mocha)))
 268    (synopsis
 269      "An XMPP DSL for Ruby written on top of EventMachine and Nokogiri")
 270    (description
 271      "An XMPP DSL for Ruby written on top of EventMachine and Nokogiri")
 272    (home-page "http://adhearsion.com/blather")
 273    (license license:expat)))
 274
 275(define-public ruby-rspec-junit-formatter
 276  (package
 277    (name "ruby-rspec-junit-formatter")
 278    (version "0.6.0")
 279    (source (origin
 280              (method url-fetch)
 281              (uri (rubygems-uri "rspec_junit_formatter" version))
 282              (sha256
 283               (base32
 284                "059bnq1gcwl9g93cqf13zpz38zk7jxaa43anzz06qkmfwrsfdpa0"))))
 285    (build-system ruby-build-system)
 286    (arguments
 287     `(#:tests? #f))
 288    (propagated-inputs (list ruby-rspec-core))
 289    (synopsis
 290     "RSpec results that your continuous integration service can read.")
 291    (description
 292     "RSpec results that your continuous integration service can read.")
 293    (home-page "https://github.com/sj26/rspec_junit_formatter")
 294    (license license:expat)))
 295
 296(define-public ruby-braintree
 297  (package
 298    (name "ruby-braintree")
 299    (version "4.12.0")
 300    (source
 301     (origin
 302       (method git-fetch)
 303       ;; Download from GitHub because the rubygems version does not contain
 304       ;; Rakefile.
 305       (uri (git-reference
 306             (url "https://github.com/braintree/braintree_ruby")
 307             (commit version)))
 308       (file-name (git-file-name name version))
 309       (sha256
 310        (base32
 311         "0gfgkymy3655drwgs42bj9ap9qib1l30sajxmypmp6s75m9w3gsh"))))
 312    (build-system ruby-build-system)
 313    (arguments
 314     `(#:test-target "test:unit"
 315		 #:tests? #f
 316       #:phases
 317       (modify-phases %standard-phases
 318         (add-after 'unpack 'less-strict-dependencies
 319           (lambda _
 320             (substitute* "Gemfile"
 321               (("gem \"libxml-ruby\", \"3.2.0\"") "gem \"libxml-ruby\", \"~> 3.0.0\"")
 322               (("gem \"rubocop\".*") "")
 323               (("gem \"rake\", \"13.0.1\"") "gem \"rake\", \"~> 13.0.6\"")
 324               (("gem \"rspec\", \"3.9.0\"") "gem \"rspec\", \"~> 3.12.0\"")
 325               (("gem \"pry\", \"0.13.1\"") "gem \"pry\", \"~> 0.14.2\""))
 326             (substitute* "Rakefile"
 327               (("sh \"rubocop\"") "")))))))
 328    (propagated-inputs
 329      `(("ruby-builder" ,ruby-builder)
 330        ("ruby-rexml" ,ruby-rexml)))
 331    (native-inputs
 332	  (list
 333		ruby-rspec
 334		ruby-libxml
 335		ruby-pry
 336		ruby-rake
 337		ruby-webrick
 338		ruby-rspec-junit-formatter))
 339    (synopsis
 340      "Resources and tools for developers to integrate Braintree's global payments platform.")
 341    (description
 342      "Resources and tools for developers to integrate Braintree's global payments platform.")
 343    (home-page "https://www.braintreepayments.com/")
 344    (license license:expat)))
 345
 346(define-public ruby-value-semantics
 347  (package
 348    (name "ruby-value-semantics")
 349    (version "a164e22449740775ed522c553999f7c04aa6ae85")
 350    (source
 351     (origin
 352       (method git-fetch)
 353       (uri (git-reference
 354             (url "https://github.com/singpolyma/value_semantics")
 355             (commit version)))
 356       (file-name (git-file-name name version))
 357       (sha256
 358        (base32
 359         "19fj4p6irmdiphp0z1r60b98d6j2gpfm84gawbc10bzm0zimlxns"))))
 360    (build-system ruby-build-system)
 361    (arguments
 362     `(#:tests? #f))
 363    (native-inputs
 364     `(("ruby-rspec" ,ruby-rspec)))
 365    (synopsis
 366      "
 367    Generates modules that provide conventional value semantics for a given set of attributes.
 368    The behaviour is similar to an immutable `Struct` class,
 369    plus extensible, lightweight validation and coercion.
 370  ")
 371    (description
 372      "
 373    Generates modules that provide conventional value semantics for a given set of attributes.
 374    The behaviour is similar to an immutable `Struct` class,
 375    plus extensible, lightweight validation and coercion.
 376  ")
 377    (home-page
 378      "https://github.com/tomdalling/value_semantics")
 379    (license license:expat)))
 380
 381(define-public ruby-promise.rb
 382  (package
 383    (name "ruby-promise.rb")
 384    (version "0.7.4")
 385    (source
 386      (origin
 387        (method url-fetch)
 388        (uri (rubygems-uri "promise.rb" version))
 389        (sha256
 390          (base32
 391            "0a819sikcqvhi8hck1y10d1nv2qkjvmmm553626fmrh51h2i089d"))))
 392    (build-system ruby-build-system)
 393    (arguments
 394     `(#:test-target "spec"
 395       #:phases
 396       (modify-phases %standard-phases
 397         (add-after 'extract-gemspec 'less-strict-dependencies
 398           (lambda _
 399             (substitute* "Rakefile"
 400               (("if Gem.ruby_version.*") "if false\n"))
 401             (substitute* "spec/spec_helper.rb"
 402               ((".*devtools/spec_helper.*") "\n"))
 403             #t)))))
 404    (native-inputs
 405     `(("ruby-rspec" ,ruby-rspec)
 406       ("ruby-rspec-its" ,ruby-rspec-its)
 407       ("ruby-awesome-print" ,ruby-awesome-print)
 408       ("ruby-fuubar" ,ruby-fuubar)))
 409    (synopsis "Promises/A+ for Ruby")
 410    (description "Promises/A+ for Ruby")
 411    (home-page "https://github.com/lgierth/promise")
 412    (license license:unlicense)))
 413
 414(define-public ruby-multicodecs
 415  (package
 416    (name "ruby-multicodecs")
 417    (version "0.2.1")
 418    (source
 419      (origin
 420        (method url-fetch)
 421        (uri (rubygems-uri "multicodecs" version))
 422        (sha256
 423          (base32
 424            "0drq267di57l9zqw6zvqqimilz42rbc8z7392dwkk8wslq30s7v8"))))
 425    (build-system ruby-build-system)
 426    (synopsis
 427      "This gem provides a PORO of the multicodec table for use with other
 428    multiformat ruby gems.")
 429    (description
 430      "This gem provides a PORO of the multicodec table for use with other
 431    multiformat ruby gems.")
 432    (home-page
 433      "https://github.com/SleeplessByte/ruby-multicodec")
 434    (license license:expat)))
 435
 436(define-public ruby-multihashes
 437  (package
 438    (name "ruby-multihashes")
 439    (version "0.2.0")
 440    (source
 441      (origin
 442        (method url-fetch)
 443        (uri (rubygems-uri "multihashes" version))
 444        (sha256
 445          (base32
 446            "17wiyy3fiv8rpgdv9ca01yncsmaaf8yg15bg18wc7m9frss1vgqg"))))
 447    (build-system ruby-build-system)
 448    (propagated-inputs
 449      `(("ruby-multicodecs" ,ruby-multicodecs)))
 450    (synopsis
 451      "A simple, low-level multihash (https://github.com/jbenet/multihash) implementation for ruby.")
 452    (description
 453      "This package provides a simple, low-level multihash (https://github.com/jbenet/multihash) implementation for ruby.")
 454    (home-page
 455      "https://github.com/neocities/ruby-multihashes")
 456    (license license:expat)))
 457
 458(define-public ruby-lazy-object
 459  (package
 460    (name "ruby-lazy-object")
 461    (version "0.0.3") ; move to 0.1.0 for ruby3
 462    (source
 463      (origin
 464        (method url-fetch)
 465        (uri (rubygems-uri "lazy_object" version))
 466        (sha256
 467          (base32
 468            "08px15lahc28ik9smvw1hgamf792gd6gq0s4k94yq1h7jq25wjn8"))))
 469    (build-system ruby-build-system)
 470    (arguments
 471     '(#:test-target "spec"))
 472    (synopsis
 473      "It's an object wrapper that forwards all calls to the reference object. This object is not created until the first method dispatch.")
 474    (description
 475      "It's an object wrapper that forwards all calls to the reference object.  This object is not created until the first method dispatch.")
 476    (home-page "")
 477    (license license:expat)))
 478
 479(define-public ruby-citrus
 480  (package
 481    (name "ruby-citrus")
 482    (version "3.0.2")
 483    (source
 484     (origin
 485       (method git-fetch)
 486       ;; Download from GitHub because the rubygems version does not contain
 487       ;; files needed for tests
 488       (uri (git-reference
 489             (url "https://github.com/mjackson/citrus")
 490             (commit (string-append "v" version))))
 491       (file-name (git-file-name name version))
 492       (sha256
 493        (base32
 494         "197wrgqrddgm1xs3yvjvd8vkvil4h4mdrcp16jmd4b57rxrrr769"))))
 495    (build-system ruby-build-system)
 496    (synopsis "Parsing Expressions for Ruby")
 497    (description "Parsing Expressions for Ruby")
 498    (home-page "http://mjackson.github.io/citrus")
 499    (license license:expat)))
 500
 501(define-public ruby-cbor
 502  (package
 503    (name "ruby-cbor")
 504    (version "0.5.9.6")
 505    (source
 506      (origin
 507        (method url-fetch)
 508        (uri (rubygems-uri "cbor" version))
 509        (sha256
 510          (base32
 511            "0511idr8xps9625nh3kxr68sdy6l3xy2kcz7r57g47fxb1v18jj3"))))
 512    (build-system ruby-build-system)
 513    (arguments
 514     '(#:test-target "spec"))
 515    (native-inputs
 516     `(("ruby-rspec" ,ruby-rspec)
 517       ("ruby-rake-compiler" ,ruby-rake-compiler)
 518       ("ruby-yard" ,ruby-yard)))
 519    (synopsis
 520      "CBOR is a library for the CBOR binary object representation format, based on Sadayuki Furuhashi's MessagePack library.")
 521    (description
 522      "CBOR is a library for the CBOR binary object representation format, based on Sadayuki Furuhashi's MessagePack library.")
 523    (home-page "http://cbor.io/")
 524    (license license:asl2.0)))
 525
 526(define-public ruby-gem-release
 527  (package
 528    (name "ruby-gem-release")
 529    (version "2.2.2")
 530    (source
 531      (origin
 532        (method url-fetch)
 533        (uri (rubygems-uri "gem-release" version))
 534        (sha256
 535          (base32
 536            "108rrfaiayi14zrqbb6z0cbwcxh8n15am5ry2a86v7c8c3niysq9"))))
 537    (build-system ruby-build-system)
 538    (arguments
 539     ;; No rakefile
 540     `(#:tests? #f))
 541    (synopsis
 542      "Release your ruby gems with ease. (What a bold statement for such a tiny plugin ...)")
 543    (description
 544      "Release your ruby gems with ease. (What a bold statement for such a tiny plugin ...)")
 545    (home-page
 546    "https://github.com/svenfuchs/gem-release")
 547    (license license:expat)))
 548
 549(define-public ruby-base32
 550  (package
 551    (name "ruby-base32")
 552    (version "0.3.4")
 553    (source
 554      (origin
 555        (method url-fetch)
 556        (uri (rubygems-uri "base32" version))
 557        (sha256
 558          (base32
 559            "1fjs0l3c5g9qxwp43kcnhc45slx29yjb6m6jxbb2x1krgjmi166b"))))
 560    (build-system ruby-build-system)
 561    (native-inputs
 562     `(("ruby-gem-release" ,ruby-gem-release)))
 563    (synopsis
 564      "Ruby extension for base32 encoding and decoding")
 565    (description
 566      "Ruby extension for base32 encoding and decoding")
 567    (home-page "https://github.com/stesla/base32")
 568    (license license:expat)))
 569
 570(define-public ruby-dhall
 571  (package
 572    (name "ruby-dhall")
 573    (version "0.5.7")
 574    (source
 575      (origin
 576        (method url-fetch)
 577        (uri (rubygems-uri "dhall" version))
 578        (sha256
 579          (base32
 580            "1fmd4jfd66sdyihqigc2vgdjzjy7gi513gjmwz07rds7f7x70fsq"))))
 581    (build-system ruby-build-system)
 582    (arguments
 583     ;; No test in gem archive
 584     `(#:tests? #f))
 585    (propagated-inputs
 586      `(("ruby-base32" ,ruby-base32)
 587        ("ruby-cbor" ,ruby-cbor)
 588        ("ruby-citrus" ,ruby-citrus)
 589        ("ruby-lazy-object" ,ruby-lazy-object)
 590        ("ruby-multihashes" ,ruby-multihashes)
 591        ("ruby-promise.rb" ,ruby-promise.rb)
 592        ("ruby-value-semantics" ,ruby-value-semantics)))
 593    (synopsis
 594      "This is a Ruby implementation of the Dhall configuration language. Dhall is a powerful, but safe and non-Turing-complete configuration language. For more information, see: https://dhall-lang.org")
 595    (description
 596      "This is a Ruby implementation of the Dhall configuration language.  Dhall is a powerful, but safe and non-Turing-complete configuration language.  For more information, see: https://dhall-lang.org")
 597    (home-page
 598      "https://git.sr.ht/~singpolyma/dhall-ruby")
 599    (license license:gpl3)))
 600
 601(define-public ruby-money
 602  (package
 603    (name "ruby-money")
 604    (version "6.16.0")
 605    (source
 606      (origin
 607        (method url-fetch)
 608        (uri (rubygems-uri "money" version))
 609        (sha256
 610          (base32
 611            "0jkmsj5ymadik7bvl670bqwmvhsdyv7hjr8gq9z293hq35gnyiyg"))))
 612    (build-system ruby-build-system)
 613    (arguments
 614     ;; No rakefile
 615     `(#:tests? #f))
 616    (propagated-inputs `(("ruby-i18n" ,ruby-i18n)))
 617    (synopsis
 618      "A Ruby Library for dealing with money and currency conversion.")
 619    (description
 620      "This package provides a Ruby Library for dealing with money and currency conversion.")
 621    (home-page "https://rubymoney.github.io/money")
 622    (license license:expat)))
 623
 624(define-public ruby-monetize
 625  (package
 626    (name "ruby-monetize")
 627    (version "1.11.0")
 628    (source
 629      (origin
 630        (method url-fetch)
 631        (uri (rubygems-uri "monetize" version))
 632        (sha256
 633          (base32
 634            "0cna2myxdbwfq0gn6k2hgrh368dq7wld3jklm96443ysykd0difn"))))
 635    (build-system ruby-build-system)
 636    (arguments
 637     '(#:test-target "spec"))
 638    (native-inputs
 639     `(("ruby-rspec" ,ruby-rspec)))
 640    (propagated-inputs `(("ruby-money" ,ruby-money)))
 641    (synopsis
 642      "A library for converting various objects into `Money` objects.")
 643    (description
 644      "This package provides a library for converting various objects into `Money` objects.")
 645    (home-page
 646      "https://github.com/RubyMoney/monetize")
 647    (license license:expat)))
 648
 649(define-public ruby-money-open-exchange-rates
 650  (package
 651    (name "ruby-money-open-exchange-rates")
 652    (version "1.4.0")
 653    (source
 654     (origin
 655       (method git-fetch)
 656       ;; Download from GitHub because the rubygems version does not contain
 657       ;; Rakefile.
 658       (uri (git-reference
 659             (url "https://github.com/spk/money-open-exchange-rates")
 660             (commit (string-append "v" version))))
 661       (file-name (git-file-name name version))
 662       (sha256
 663        (base32
 664         "11xwqli8snr19k48yh8h77sal5vxd4snzq9gxg08v61f0574m3gw"))))
 665    (build-system ruby-build-system)
 666    (propagated-inputs `(("ruby-money" ,ruby-money)))
 667    (native-inputs
 668     `(("ruby-minitest" ,ruby-minitest)
 669       ("ruby-mocha" ,ruby-mocha)
 670       ("ruby-timecop" ,ruby-timecop)
 671       ("ruby-webmock" ,ruby-webmock)
 672       ("ruby-monetize" ,ruby-monetize)
 673       ("ruby-rake" ,ruby-rake)
 674       ("ruby-rubocop" ,ruby-rubocop)))
 675    (synopsis
 676      "A gem that calculates the exchange rate using published rates from open-exchange-rates. Compatible with the money gem.")
 677    (description
 678      "This package provides a gem that calculates the exchange rate using published rates from open-exchange-rates.  Compatible with the money gem.")
 679    (home-page
 680      "http://github.com/spk/money-open-exchange-rates")
 681    (license license:expat)))
 682
 683(define-public ruby-roda
 684  (package
 685    (name "ruby-roda")
 686    (version "3.47.0")
 687    (source
 688      (origin
 689        (method url-fetch)
 690        (uri (rubygems-uri "roda" version))
 691        (sha256
 692          (base32
 693            "1g3zs4bk8hqii15ci1hsykcsya88vr2qv63gp1qbcx4bm14l8lkl"))))
 694    (build-system ruby-build-system)
 695    (arguments
 696     ;; No rakefile
 697     `(#:tests? #f))
 698    (propagated-inputs `(("ruby-rack" ,ruby-rack)))
 699    (synopsis "Routing tree web toolkit")
 700    (description "Routing tree web toolkit")
 701    (home-page "http://roda.jeremyevans.net")
 702    (license license:expat)))
 703
 704(define-public ruby-nori
 705  (package
 706    (name "ruby-nori")
 707    (version "2.6.0")
 708    (source
 709      (origin
 710        (method url-fetch)
 711        (uri (rubygems-uri "nori" version))
 712        (sha256
 713          (base32
 714            "066wc774a2zp4vrq3k7k8p0fhv30ymqmxma1jj7yg5735zls8agn"))))
 715    (build-system ruby-build-system)
 716    (arguments
 717     ;; Tests require too old version of rspec
 718     `(#:tests? #f))
 719    (native-inputs
 720     `(("ruby-rspec" ,ruby-rspec)
 721       ("ruby-rake" ,ruby-rake)
 722       ("ruby-nokogiri" ,ruby-nokogiri)))
 723    (synopsis "XML to Hash translator")
 724    (description "XML to Hash translator")
 725    (home-page "https://github.com/savonrb/nori")
 726    (license license:expat)))
 727
 728(define-public ruby-faraday-middleware
 729  (package
 730    (name "ruby-faraday-middleware")
 731    (version "1.1.0")
 732    (source
 733      (origin
 734        (method url-fetch)
 735        (uri (rubygems-uri "faraday_middleware" version))
 736        (sha256
 737          (base32
 738            "0kgcphf7n74l3wlcvxafcp6a4l18b1bf4qslvz5dqj6v3gc8h8j4"))))
 739    (build-system ruby-build-system)
 740    (arguments
 741     ;; No rakefile
 742     `(#:tests? #f))
 743    (propagated-inputs
 744      `(("ruby-faraday" ,ruby-faraday)))
 745    (synopsis "Various middleware for Faraday")
 746    (description "Various middleware for Faraday")
 747    (home-page
 748      "https://github.com/lostisland/faraday_middleware")
 749    (license license:expat)))
 750
 751(define-public ruby-faraday-follow-redirects
 752  (package
 753    (name "ruby-faraday-follow-redirects")
 754    (version "0.5.0")
 755    (source
 756     (origin
 757       (method url-fetch)
 758       (uri (rubygems-uri "faraday-follow_redirects" version))
 759       (sha256
 760        (base32 "1b8hgpci3wjm3rm41bzpasvsc5j253ljyg5rsajl62dkjk497pjw"))))
 761    (build-system ruby-build-system)
 762    (arguments
 763     `(#:tests? #f))
 764    (propagated-inputs (list ruby-faraday))
 765    (synopsis
 766     "Faraday 1.x and 2.x compatible extraction of FaradayMiddleware::FollowRedirects.
 767")
 768    (description "Faraday 1.x and 2.x compatible extraction of
 769@code{FaradayMiddleware::FollowRedirects}.")
 770    (home-page "https://github.com/tisba/faraday-follow-redirects")
 771    (license license:expat)))
 772
 773(define-public ruby-bandwidth-iris
 774  (package
 775    (name "ruby-bandwidth-iris")
 776    (version "7.4.0")
 777    (source
 778     (origin
 779       (method url-fetch)
 780       (uri (rubygems-uri "ruby-bandwidth-iris" version))
 781       (sha256
 782        (base32 "1vixiw22jc57imsv5va0vb4h1ylqr3kf90az1q9k049wgf6ipqkn"))))
 783    (build-system ruby-build-system)
 784    (arguments
 785     ; Tests don't require helper for some reason, so all fail...
 786     '(#:tests? #f))
 787    (propagated-inputs (list ruby-activesupport ruby-builder ruby-faraday
 788                             ruby-faraday-follow-redirects ruby-rexml))
 789    (synopsis "Gem for integrating to Bandwidth's Iris API")
 790    (description "Gem for integrating to Bandwidth's Iris API.")
 791    (home-page "https://github.com/bandwidthcom/ruby-bandwidth-iris")
 792    (license license:expat)))
 793
 794(define-public ruby-sentry-core
 795  (package
 796    (name "ruby-sentry-core")
 797    (version "4.3.1")
 798    (source
 799      (origin
 800        (method url-fetch)
 801        (uri (rubygems-uri "sentry-ruby-core" version))
 802        (sha256
 803          (base32
 804            "13z35s9mflh3v775a0scsnqhscz9q46kaak38y7zmx32z7sg2a3a"))))
 805    (build-system ruby-build-system)
 806    (arguments
 807     ; No rakefile in gem
 808     '(#:tests? #f))
 809    (propagated-inputs
 810      `(("ruby-concurrent" ,ruby-concurrent)
 811        ("ruby-faraday" ,ruby-faraday)))
 812    (synopsis
 813      "A gem that provides a client interface for the Sentry error logger")
 814    (description
 815      "This package provides a gem that provides a client interface for the Sentry error logger")
 816    (home-page
 817      "https://github.com/getsentry/sentry-ruby")
 818    (license license:expat)))
 819
 820(define-public ruby-sentry
 821  (package
 822    (name "ruby-sentry")
 823    (version "4.3.1")
 824    (source
 825      (origin
 826        (method url-fetch)
 827        (uri (rubygems-uri "sentry-ruby" version))
 828        (sha256
 829          (base32
 830            "101q3141xfkmh7vi8h4sjqqmxcx90xhyq51lmfnhfiwgii7cn9k8"))))
 831    (build-system ruby-build-system)
 832    (arguments
 833     ; No rakefile in gem
 834     '(#:tests? #f))
 835    (propagated-inputs
 836      `(("ruby-concurrent" ,ruby-concurrent)
 837        ("ruby-faraday" ,ruby-faraday)
 838        ("ruby-sentry-core" ,ruby-sentry-core)))
 839    (synopsis
 840      "A gem that provides a client interface for the Sentry error logger")
 841    (description
 842      "This package provides a gem that provides a client interface for the Sentry error logger")
 843    (home-page
 844      "https://github.com/getsentry/sentry-ruby")
 845    (license license:expat)))
 846
 847(define-public ruby-webrick
 848  (package
 849    (name "ruby-webrick")
 850    (version "1.7.0")
 851    (source
 852      (origin
 853        (method url-fetch)
 854        (uri (rubygems-uri "webrick" version))
 855        (sha256
 856          (base32
 857            "1d4cvgmxhfczxiq5fr534lmizkhigd15bsx5719r5ds7k7ivisc7"))))
 858    (build-system ruby-build-system)
 859    (synopsis
 860      "WEBrick is an HTTP server toolkit that can be configured as an HTTPS server, a proxy server, and a virtual-host server.")
 861    (description
 862      "WEBrick is an HTTP server toolkit that can be configured as an HTTPS server, a proxy server, and a virtual-host server.")
 863    (home-page "https://github.com/ruby/webrick")
 864    (license #f)))
 865
 866(define-public ruby-interception
 867  (package
 868    (name "ruby-interception")
 869    (version "0.5")
 870    (source
 871      (origin
 872        (method url-fetch)
 873        (uri (rubygems-uri "interception" version))
 874        (sha256
 875          (base32
 876            "01vrkn28psdx1ysh5js3hn17nfp1nvvv46wc1pwqsakm6vb1hf55"))))
 877    (build-system ruby-build-system)
 878    (native-inputs
 879     `(("ruby-rspec" ,ruby-rspec)))
 880    (synopsis
 881      "Provides a cross-platform ability to intercept all exceptions as they are raised.")
 882    (description
 883      "This package provides a cross-platform ability to intercept all exceptions as they are raised.")
 884    (home-page
 885      "http://github.com/ConradIrwin/interception")
 886    (license license:expat)))
 887
 888(define-public ruby-pry-rescue
 889  (package
 890    (name "ruby-pry-rescue")
 891    (version "1.5.2")
 892    (source
 893      (origin
 894        (method url-fetch)
 895        (uri (rubygems-uri "pry-rescue" version))
 896        (sha256
 897          (base32
 898            "1wn72y8y3d3g0ng350ld92nyjln012432q2z2iy9lhwzjc4dwi65"))))
 899    (build-system ruby-build-system)
 900    (arguments
 901     `(#:phases
 902       (modify-phases %standard-phases
 903         (add-after 'unpack 'nuke-bad-test
 904           (lambda _
 905             (substitute* "spec/source_location_spec.rb"
 906               (("time = Time.now") "skip"))
 907             #t)))))
 908    (propagated-inputs
 909      `(("ruby-interception" ,ruby-interception)
 910        ("ruby-pry" ,ruby-pry)))
 911    (native-inputs
 912     `(("ruby-rspec" ,ruby-rspec)
 913       ("ruby-pry-stack-explorer" ,ruby-pry-stack-explorer)))
 914    (synopsis
 915      "Allows you to wrap code in Pry::rescue{ } to open a pry session at any unhandled exceptions")
 916    (description
 917      "Allows you to wrap code in Pry::rescue{ } to open a pry session at any unhandled exceptions")
 918    (home-page
 919      "https://github.com/ConradIrwin/pry-rescue")
 920    (license license:expat)))
 921
 922(define-public ruby-rantly
 923  (package
 924    (name "ruby-rantly")
 925    (version "2.0.0")
 926    (source
 927      (origin
 928        (method url-fetch)
 929        (uri (rubygems-uri "rantly" version))
 930        (sha256
 931          (base32
 932            "11407cg0dzz83jsschnrpi9cqwz8b04q6bj6qj3m70ay52y222ix"))))
 933    (build-system ruby-build-system)
 934    (native-inputs
 935     `(("ruby-rubocop" ,ruby-rubocop)
 936       ("ruby-simplecov" ,ruby-simplecov)))
 937    (synopsis
 938      "Ruby Imperative Random Data Generator and Quickcheck")
 939    (description
 940      "Ruby Imperative Random Data Generator and Quickcheck")
 941    (home-page "https://github.com/rantly-rb/rantly")
 942    (license license:expat)))
 943
 944(define-public ruby-em-promise.rb
 945  (package
 946    (name "ruby-em-promise.rb")
 947    (version "0.0.5")
 948    (source (origin
 949              (method url-fetch)
 950              (uri (rubygems-uri "em_promise.rb" version))
 951              (sha256
 952               (base32
 953                "00rkmacyf6i2gq0giaxzwr24ygrwwzndrq7kkbpqcq9glk01w692"))))
 954    (build-system ruby-build-system)
 955   (arguments
 956    ;; No rakefile
 957    `(#:tests? #f))
 958    (propagated-inputs (list ruby-eventmachine ruby-promise.rb))
 959    (synopsis "A subclass of promise.rb Promise for EventMachine.")
 960    (description
 961     "This package provides a subclass of promise.rb Promise for EventMachine.")
 962    (home-page "https://git.singpolyma.net/em_promise.rb")
 963    (license #f)))
 964
 965(define-public ruby-em-socksify
 966  (package
 967    (name "ruby-em-socksify")
 968    (version "0.3.2")
 969    (source (origin
 970              (method url-fetch)
 971              (uri (rubygems-uri "em-socksify" version))
 972              (sha256
 973               (base32
 974                "0rk43ywaanfrd8180d98287xv2pxyl7llj291cwy87g1s735d5nk"))))
 975    (build-system ruby-build-system)
 976   (arguments
 977    ;; Tests are broken
 978    `(#:tests? #f))
 979    (propagated-inputs (list ruby-eventmachine))
 980    (synopsis "Transparent proxy support for any EventMachine protocol")
 981    (description "Transparent proxy support for any EventMachine protocol")
 982    (home-page "https://github.com/igrigorik/em-socksify")
 983    (license license:expat)))
 984
 985(define-public ruby-rspec-collection-matchers
 986  (package
 987    (name "ruby-rspec-collection-matchers")
 988    (version "1.2.0")
 989    (source (origin
 990              (method url-fetch)
 991              (uri (rubygems-uri "rspec-collection_matchers" version))
 992              (sha256
 993               (base32
 994                "1864xlxl7mi6mvjyp85a0gc10cyvpf6bj8lc86sf8737wlzn12ks"))))
 995    (build-system ruby-build-system)
 996   (arguments
 997    ;; No rakefile
 998    `(#:tests? #f))
 999    (propagated-inputs (list ruby-rspec-expectations))
1000    (synopsis
1001     "Collection cardinality matchers, extracted from rspec-expectations")
1002    (description
1003     "Collection cardinality matchers, extracted from rspec-expectations")
1004    (home-page "https://github.com/rspec/rspec-collection_matchers")
1005    (license license:expat)))
1006
1007(define-public ruby-cookiejar
1008  (package
1009    (name "ruby-cookiejar")
1010    (version "0.3.3")
1011    (source (origin
1012              (method url-fetch)
1013              (uri (rubygems-uri "cookiejar" version))
1014              (sha256
1015               (base32
1016                "0q0kmbks9l3hl0wdq744hzy97ssq9dvlzywyqv9k9y1p3qc9va2a"))))
1017    (build-system ruby-build-system)
1018   (native-inputs
1019    `(("ruby-rspec" ,ruby-rspec)
1020     ("ruby-rspec-collection-matchers" ,ruby-rspec-collection-matchers)
1021     ("ruby-yard" ,ruby-yard)))
1022    (synopsis
1023     "Allows for parsing and returning cookies in Ruby HTTP client code")
1024    (description
1025     "Allows for parsing and returning cookies in Ruby HTTP client code")
1026    (home-page "http://alkaline-solutions.com")
1027    (license #f)))
1028
1029(define-public ruby-em-http-request
1030  (package
1031    (name "ruby-em-http-request")
1032    (version "b51f48fafa6443ad48c89930716c5c427561abd8")
1033    (source
1034      (origin
1035      (method git-fetch)
1036      (uri (git-reference
1037          (url "https://github.com/singpolyma/em-http-request")
1038          (commit version)))
1039      (file-name (git-file-name name version))
1040        (sha256
1041          (base32
1042            "1kbaghj1gqz1dpl2hikpa4xggfmavma2y442yzsgqk27gmfp9iqq"))))
1043    (build-system ruby-build-system)
1044    (arguments
1045     ;; Tests need a whole other set of dependencies
1046     `(#:tests? #f))
1047    (propagated-inputs (list ruby-addressable ruby-cookiejar ruby-em-socksify
1048                             ruby-eventmachine ruby-http-parser.rb))
1049    (synopsis "EventMachine based, async HTTP Request client")
1050    (description "EventMachine based, async HTTP Request client")
1051    (home-page "http://github.com/igrigorik/em-http-request")
1052    (license license:expat)))
1053
1054(define-public ruby-em-synchrony
1055  (package
1056    (name "ruby-em-synchrony")
1057    (version "1.0.6")
1058    (source (origin
1059              (method url-fetch)
1060              (uri (rubygems-uri "em-synchrony" version))
1061              (sha256
1062               (base32
1063                "1jh6ygbcvapmarqiap79i6yl05bicldr2lnmc46w1fyrhjk70x3f"))))
1064    (build-system ruby-build-system)
1065    (arguments
1066     ;; Tests need a whole other set of dependencies
1067     `(#:tests? #f))
1068    (propagated-inputs (list ruby-eventmachine))
1069    (synopsis "Fiber aware EventMachine libraries")
1070    (description "Fiber aware EventMachine libraries")
1071    (home-page "http://github.com/igrigorik/em-synchrony")
1072    (license license:expat)))
1073
1074(define-public ruby-amazing-print
1075  (package
1076    (name "ruby-amazing-print")
1077    (version "1.5.0")
1078    (source
1079     (origin
1080       (method url-fetch)
1081       (uri (rubygems-uri "amazing_print" version))
1082       (sha256
1083        (base32 "0qik1igcs0ylw5b5dwx9npqac5r21d9fcv611h7klcspfari3x7r"))))
1084    (build-system ruby-build-system)
1085    (arguments
1086     `(#:tests? #f))
1087    (synopsis
1088     "Great Ruby debugging companion: pretty print Ruby objects to visualize their structure. Supports custom object formatting via plugins")
1089    (description
1090     "Great Ruby debugging companion: pretty print Ruby objects to visualize their
1091structure.  Supports custom object formatting via plugins")
1092    (home-page "https://github.com/amazing-print/amazing_print")
1093    (license license:expat)))
1094
1095(define-public ruby-little-plugger
1096  (package
1097    (name "ruby-little-plugger")
1098    (version "1.1.4")
1099    (source
1100     (origin
1101       (method url-fetch)
1102       (uri (rubygems-uri "little-plugger" version))
1103       (sha256
1104        (base32 "1frilv82dyxnlg8k1jhrvyd73l6k17mxc5vwxx080r4x1p04gwym"))))
1105    (build-system ruby-build-system)
1106    (arguments
1107     `(#:tests? #f))
1108    (synopsis
1109     "LittlePlugger is a module that provides Gem based plugin management.
1110By extending your own class or module with LittlePlugger you can easily
1111manage the loading and initializing of plugins provided by other gems.")
1112    (description
1113     "@code{LittlePlugger} is a module that provides Gem based plugin management.  By
1114extending your own class or module with @code{LittlePlugger} you can easily
1115manage the loading and initializing of plugins provided by other gems.")
1116    (home-page "http://gemcutter.org/gems/little-plugger")
1117    (license #f)))
1118
1119(define-public ruby-logging
1120  (package
1121    (name "ruby-logging")
1122    (version "2.3.1")
1123    (source
1124     (origin
1125       (method url-fetch)
1126       (uri (rubygems-uri "logging" version))
1127       (sha256
1128        (base32 "1zflchpx4g8c110gjdcs540bk5a336nq6nmx379rdg56xw0pjd02"))))
1129    (build-system ruby-build-system)
1130    (arguments
1131     `(#:tests? #f))
1132    (propagated-inputs (list ruby-little-plugger ruby-multi-json))
1133    (synopsis
1134     "**Logging** is a flexible logging library for use in Ruby programs based on the
1135design of Java's log4j library. It features a hierarchical logging system,
1136custom level names, multiple output destinations per log event, custom
1137formatting, and more.")
1138    (description
1139     "**Logging** is a flexible logging library for use in Ruby programs based on the
1140design of Java's log4j library.  It features a hierarchical logging system,
1141custom level names, multiple output destinations per log event, custom
1142formatting, and more.")
1143    (home-page "http://rubygems.org/gems/logging")
1144    (license #f)))
1145
1146(define-public ruby-faraday-http-cache
1147  (package
1148    (name "ruby-faraday-http-cache")
1149    (version "2.5.1")
1150    (source
1151     (origin
1152       (method url-fetch)
1153       (uri (rubygems-uri "faraday-http-cache" version))
1154       (sha256
1155        (base32 "10wld3vk3i8zsr3pa9zyjiyi2zlyyln872812f08bbg1hnd15z6b"))))
1156    (build-system ruby-build-system)
1157    (arguments
1158     `(#:tests? #f))
1159    (propagated-inputs (list ruby-faraday))
1160    (synopsis "Middleware to handle HTTP caching")
1161    (description "Middleware to handle HTTP caching")
1162    (home-page "https://github.com/sourcelevel/faraday-http-cache")
1163    (license #f)))
1164
1165(define-public ruby-certifi
1166  (package
1167    (name "ruby-certifi")
1168    (version "2018.01.18")
1169    (source
1170     (origin
1171       (method url-fetch)
1172       (uri (rubygems-uri "certifi" version))
1173       (sha256
1174        (base32 "1qz95jaw1c2n61dnfxx70hncrhadjxm4j8wqhaj5alh44x5g1bym"))))
1175    (build-system ruby-build-system)
1176    (arguments
1177     `(#:tests? #f))
1178    (synopsis "Rubygem for providing Mozilla's CA Bundle")
1179    (description "Rubygem for providing Mozilla's CA Bundle")
1180    (home-page "http://certifi.io/")
1181    (license #f)))
1182
1183(define-public ruby-bandwidth-sdk
1184  (package
1185    (name "ruby-bandwidth-sdk")
1186    (version "17.3.0")
1187    (source
1188     (origin
1189       (method url-fetch)
1190       (uri (rubygems-uri "bandwidth-sdk" version))
1191       (sha256
1192        (base32 "0i2fihf2wg975nicqw4r0iji48qkfdnhjd6b5v56422slhxd7zz1"))))
1193    (build-system ruby-build-system)
1194    (arguments
1195     `(#:tests? #f))
1196    (propagated-inputs (list ruby-faraday ruby-faraday-multipart ruby-marcel
1197                             ruby-ox))
1198    (synopsis
1199     "The official client SDK for Bandwidth's Voice, Messaging, MFA, and WebRTC APIs")
1200    (description
1201     "The official client SDK for Bandwidth's Voice, Messaging, MFA, and
1202@code{WebRTC} APIs.")
1203    (home-page "https://github.com/Bandwidth/ruby-sdk")
1204    (license license:expat)))
1205
1206(define-public ruby-unaccent
1207  (package
1208    (name "ruby-unaccent")
1209    (version "0.4.0")
1210    (source
1211     (origin
1212       (method url-fetch)
1213       (uri (rubygems-uri "unaccent" version))
1214       (sha256
1215        (base32 "0cvk3vhs95123r4faa60vqknishx3r6fiy2kq0bm7p3f04q849yr"))))
1216    (build-system ruby-build-system)
1217    (arguments
1218     `(#:tests? #f))
1219    (synopsis "Replace accented characters with unaccented characters.")
1220    (description "Replace accented characters with unaccented characters.")
1221    (home-page "https://github.com/hardpixel/unaccent")
1222    (license license:expat)))
1223
1224(define-public ruby-countries
1225  (package
1226    (name "ruby-countries")
1227    (version "5.7.1")
1228    (source
1229     (origin
1230       (method url-fetch)
1231       (uri (rubygems-uri "countries" version))
1232       (sha256
1233        (base32 "0wwjvwfbfbkhablr45k7aaib7jx5j1k6ii3wi6p3x0fq9f903q88"))))
1234    (build-system ruby-build-system)
1235    (arguments
1236     `(#:tests? #f))
1237    (propagated-inputs (list ruby-unaccent))
1238    (synopsis
1239     "All sorts of useful information about every country packaged as pretty little country objects. It includes data from ISO 3166")
1240    (description
1241     "All sorts of useful information about every country packaged as pretty little
1242country objects.  It includes data from ISO 3166")
1243    (home-page "https://github.com/countries/countries")
1244    (license license:expat)))
1245
1246(define-public ruby-em-hiredis
1247  (package
1248    (name "ruby-em-hiredis")
1249    (version "0.3.1")
1250    (source
1251     (origin
1252       (method url-fetch)
1253       (uri (rubygems-uri "em-hiredis" version))
1254       (sha256
1255        (base32 "0lh276x6wngq9xy75fzzvciinmdlys93db7chy968i18japghk6z"))))
1256    (build-system ruby-build-system)
1257    (arguments
1258     `(#:tests? #f))
1259    (propagated-inputs (list ruby-eventmachine ruby-hiredis))
1260    (synopsis "Eventmachine redis client using hiredis native parser")
1261    (description "Eventmachine redis client using hiredis native parser")
1262    (home-page "http://github.com/mloughran/em-hiredis")
1263    (license #f)))
1264
1265(define-public ruby-em-pg-client
1266  (package
1267    (name "ruby-em-pg-client")
1268    (version "a32daf9c25ac9c44e73e843e80125e0fb4c2a8f1")
1269    (source
1270      (origin
1271      (method git-fetch)
1272      (uri (git-reference
1273          (url "https://github.com/singpolyma/ruby-em-pg-client")
1274          (commit version)))
1275      (file-name (git-file-name name version))
1276        (sha256
1277          (base32
1278            "0c3vxy5cv5xiaxbbv9b1kdasbh6h865f6fl269fi327x0fdnyk15"))))
1279    (build-system ruby-build-system)
1280    (arguments
1281     `(#:tests? #f))
1282    (propagated-inputs (list ruby-eventmachine ruby-pg))
1283    (synopsis
1284     "PostgreSQL asynchronous EventMachine client, based on pg interface (PG::Connection)")
1285    (description
1286     "@code{PostgreSQL} asynchronous @code{EventMachine} client, based on pg interface
1287(PG::Connection)")
1288    (home-page "http://github.com/royaltm/ruby-em-pg-client")
1289    (license license:expat)))
1290
1291(define-public ruby-faraday-em-http
1292  (package
1293    (name "ruby-faraday-em-http")
1294    (version "14a06dc1431429ff5e6291bc6f671db0c3a636a5")
1295    (source
1296      (origin
1297      (method git-fetch)
1298      (uri (git-reference
1299          (url "https://github.com/Amolith/faraday-em_http")
1300          (commit version)))
1301      (file-name (git-file-name name version))
1302        (sha256
1303          (base32
1304            "16nnsvyr7n2rw84zcw5n5aidhs4k6rrdhzf6002wqfj85mymxp7s"))))
1305    (build-system ruby-build-system)
1306    (arguments
1307     `(#:tests? #f))
1308    (synopsis "Faraday adapter for Em::Http")
1309    (description "Faraday adapter for Em::Http")
1310    (home-page "https://github.com/lostisland/faraday-em_http")
1311    (license license:expat)))
1312
1313(define-public ruby-faraday-retry
1314  (package
1315    (name "ruby-faraday-retry")
1316    (version "1.0.3")
1317    (source
1318     (origin
1319       (method url-fetch)
1320       (uri (rubygems-uri "faraday-retry" version))
1321       (sha256
1322        (base32 "153i967yrwnswqgvnnajgwp981k9p50ys1h80yz3q94rygs59ldd"))))
1323    (build-system ruby-build-system)
1324    (arguments
1325     `(#:tests? #f))
1326    (synopsis
1327     "Catches exceptions and retries each request a limited number of times.
1328")
1329    (description
1330     "Catches exceptions and retries each request a limited number of times.")
1331    (home-page "https://github.com/lostisland/faraday-retry")
1332    (license license:expat)))
1333
1334(define-public ruby-faraday-rack
1335  (package
1336    (name "ruby-faraday-rack")
1337    (version "1.0.0")
1338    (source
1339     (origin
1340       (method url-fetch)
1341       (uri (rubygems-uri "faraday-rack" version))
1342       (sha256
1343        (base32 "1h184g4vqql5jv9s9im6igy00jp6mrah2h14py6mpf9bkabfqq7g"))))
1344    (build-system ruby-build-system)
1345    (arguments
1346     `(#:tests? #f))
1347    (synopsis "Faraday adapter for Rack")
1348    (description "Faraday adapter for Rack")
1349    (home-page "https://github.com/lostisland/faraday-rack")
1350    (license license:expat)))
1351
1352(define-public ruby-faraday-patron
1353  (package
1354    (name "ruby-faraday-patron")
1355    (version "1.0.0")
1356    (source
1357     (origin
1358       (method url-fetch)
1359       (uri (rubygems-uri "faraday-patron" version))
1360       (sha256
1361        (base32 "19wgsgfq0xkski1g7m96snv39la3zxz6x7nbdgiwhg5v82rxfb6w"))))
1362    (build-system ruby-build-system)
1363    (arguments
1364     `(#:tests? #f))
1365    (propagated-inputs (list ruby-patron))
1366    (synopsis "Faraday adapter for Patron")
1367    (description "Faraday adapter for Patron")
1368    (home-page "https://github.com/lostisland/faraday-patron")
1369    (license license:expat)))
1370
1371(define-public ruby-faraday-net-http
1372  (package
1373    (name "ruby-faraday-net-http")
1374    (version "3.0.0")
1375    (source
1376     (origin
1377       (method url-fetch)
1378       (uri (rubygems-uri "faraday-net_http" version))
1379       (sha256
1380        (base32 "0yicplzlh5da8pr64286zga3my86cjsb2y9dqlzsacpw8hbkmjvw"))))
1381    (build-system ruby-build-system)
1382    (arguments
1383     `(#:tests? #f))
1384    ;(propagated-inputs (list ruby-net-http))
1385    (synopsis "Faraday adapter for Net::HTTP")
1386    (description "Faraday adapter for Net::HTTP.")
1387    (home-page "https://github.com/lostisland/faraday-net_http")
1388    (license license:expat)))
1389
1390(define-public ruby-faraday-net-http-persistent
1391  (package
1392    (name "ruby-faraday-net-http-persistent")
1393    (version "1.2.0")
1394    (source
1395     (origin
1396       (method url-fetch)
1397       (uri (rubygems-uri "faraday-net_http_persistent" version))
1398       (sha256
1399        (base32 "0dc36ih95qw3rlccffcb0vgxjhmipsvxhn6cw71l7ffs0f7vq30b"))))
1400    (build-system ruby-build-system)
1401    (arguments
1402     `(#:tests? #f))
1403    (propagated-inputs (list ruby-net-http-persistent))
1404    (synopsis "Faraday adapter for NetHttpPersistent")
1405    (description "Faraday adapter for @code{NetHttpPersistent}")
1406    (home-page "https://github.com/lostisland/faraday-net_http_persistent")
1407    (license license:expat)))
1408
1409(define-public ruby-excon
1410  (package
1411    (name "ruby-excon")
1412    (version "0.109.0")
1413    (source
1414     (origin
1415       (method url-fetch)
1416       (uri (rubygems-uri "excon" version))
1417       (sha256
1418        (base32 "1kmmwgjzlrnc3nnrdnw1z67c95nbw0hv54a73yj8jw6pcvl9585x"))))
1419    (build-system ruby-build-system)
1420    (arguments
1421     `(#:tests? #f))
1422    (synopsis "EXtended http(s) CONnections")
1423    (description "EXtended http(s) CONnections")
1424    (home-page "https://github.com/excon/excon")
1425    (license license:expat)))
1426
1427(define-public ruby-faraday-excon
1428  (package
1429    (name "ruby-faraday-excon")
1430    (version "1.1.0")
1431    (source
1432     (origin
1433       (method url-fetch)
1434       (uri (rubygems-uri "faraday-excon" version))
1435       (sha256
1436        (base32 "0h09wkb0k0bhm6dqsd47ac601qiaah8qdzjh8gvxfd376x1chmdh"))))
1437    (build-system ruby-build-system)
1438    (arguments
1439     `(#:tests? #f))
1440    (propagated-inputs (list ruby-excon))
1441    (synopsis "Faraday adapter for Excon")
1442    (description "Faraday adapter for Excon")
1443    (home-page "https://github.com/lostisland/faraday-excon")
1444    (license license:expat)))
1445
1446(define-public ruby-faraday-em-synchrony
1447  (package
1448    (name "ruby-faraday-em-synchrony")
1449    (version "b45e3d62e9fa4e5765806754c167be4b9b8f1168")
1450    (source
1451      (origin
1452      (method git-fetch)
1453      (uri (git-reference
1454          (url "https://github.com/Amolith/faraday-em_synchrony")
1455          (commit version)))
1456      (file-name (git-file-name name version))
1457        (sha256
1458          (base32
1459            "1lczay8fmg26wrkny48cn8w4nsp92frinag17sa40chfdm8ylzwn"))))
1460    (build-system ruby-build-system)
1461    (arguments
1462     `(#:tests? #f))
1463    (synopsis "Faraday adapter for EM::Synchrony")
1464    (description "Faraday adapter for EM::Synchrony")
1465    (home-page "https://github.com/lostisland/faraday-em_synchrony")
1466    (license license:expat)))
1467
1468(define-public ruby-faraday
1469  (package
1470    (name "ruby-faraday")
1471    (version "2.8.0")
1472    (source
1473     (origin
1474       (method url-fetch)
1475       (uri (rubygems-uri "faraday" version))
1476       (sha256
1477        (base32 "0nndw6c9rn7bqkzq44ay48qyhbsvg32wd0isy4gxpva1s7v17wy8"))))
1478    (build-system ruby-build-system)
1479    (arguments
1480     `(#:tests? #f))
1481    (propagated-inputs (list ruby-faraday-em-http
1482                             ruby-faraday-em-synchrony
1483                             ruby-faraday-net-http
1484                             ruby-faraday-excon
1485                             ruby-faraday-multipart
1486                             ruby-faraday-patron
1487                             ruby-faraday-rack
1488                             ruby-faraday-retry
1489                             ruby-base64
1490                             ruby-ruby2-keywords))
1491    (synopsis "HTTP/REST API client library.")
1492    (description "HTTP/REST API client library.")
1493    (home-page "https://lostisland.github.io/faraday")
1494    (license license:expat)))
1495
1496(define-public ruby-link-header-parser
1497  (package
1498    (name "ruby-link-header-parser")
1499    (version "7.0.1")
1500    (source
1501     (origin
1502       (method url-fetch)
1503       (uri (rubygems-uri "link-header-parser" version))
1504       (sha256
1505        (base32 "0ayfijl4804pcxikc2znfdyq4lhxga9rf0v2xhr3zynlgfciz66h"))))
1506    (build-system ruby-build-system)
1507    (arguments
1508     `(#:tests? #f))
1509    (synopsis "Parse HTTP Link headers.")
1510    (description "Parse HTTP Link headers.")
1511    (home-page "https://github.com/jgarber623/link-header-parser-ruby")
1512    (license license:expat)))
1513
1514(define-public ruby-multibases
1515  (package
1516    (name "ruby-multibases")
1517    (version "0.3.2")
1518    (source
1519     (origin
1520       (method url-fetch)
1521       (uri (rubygems-uri "multibases" version))
1522       (sha256
1523        (base32 "0jsdwi3c3y9nnsivah0pxkbij8vkj949kb7bvrm161pawn6cvgzz"))))
1524    (build-system ruby-build-system)
1525    (synopsis
1526     "This is a low-level library, but high level implementations are provided.
1527    You can also bring your own encoder/decoder. This gem can be used _both_ for
1528    encoding into or decoding from multibase packed strings, as well as serve as
1529    a _general purpose_ library to do `BaseX` encoding and decoding _without_
1530    adding the prefix.")
1531    (description
1532     "This is a low-level library, but high level implementations are provided.  You
1533can also bring your own encoder/decoder.  This gem can be used _both_ for
1534encoding into or decoding from multibase packed strings, as well as serve as a
1535_general purpose_ library to do `@code{BaseX`} encoding and decoding _without_
1536adding the prefix.")
1537    (home-page "https://github.com/SleeplessByte/ruby-multibase")
1538    (license license:expat)))
1539
1540(define-public ruby-ougai
1541  (package
1542    (name "ruby-ougai")
1543    (version "2.0.0")
1544    (source
1545     (origin
1546       (method url-fetch)
1547       (uri (rubygems-uri "ougai" version))
1548       (sha256
1549        (base32 "0zmngsm3lrliscry7ljw7x5gnf3m4cn4kdgnxccaidhwj0mm539f"))))
1550    (build-system ruby-build-system)
1551    (arguments
1552     `(#:tests? #f))
1553    (propagated-inputs (list ruby-oj))
1554    (synopsis
1555     "    A structured logging system is capable of handling a message, custom data or an exception easily.
1556    It has JSON formatters compatible with Bunyan or pino for Node.js and human readable formatter with Amazing Print for console.
1557")
1558    (description
1559     "This package provides a structured logging system is capable of handling a
1560message, custom data or an exception easily.  It has JSON formatters compatible
1561with Bunyan or pino for Node.js and human readable formatter with Amazing Print
1562for console.")
1563    (home-page "https://github.com/tilfin/ougai")
1564    (license license:expat)))
1565
1566(define-public ruby-relative-time
1567  (package
1568    (name "ruby-relative-time")
1569    (version "1.1.0")
1570    (source
1571     (origin
1572       (method url-fetch)
1573       (uri (rubygems-uri "relative_time" version))
1574       (sha256
1575        (base32 "0x520r0vgcwjyknmgllblp997qii73vzk4r411c4xbwnlxh5fl99"))))
1576    (build-system ruby-build-system)
1577    (arguments
1578     `(#:tests? #f))
1579    (synopsis
1580     "Relative Time ago gem is used to calulate the relative time instead of using naive ruby time_ago_in_words helper method.
1581")
1582    (description
1583     "Relative Time ago gem is used to calulate the relative time instead of using
1584naive ruby time_ago_in_words helper method.")
1585    (home-page "https://github.com/lalithr95/Relative-Time-ago")
1586    (license license:expat)))
1587
1588(define-public ruby-statsd-instrument
1589  (package
1590    (name "ruby-statsd-instrument")
1591    (version "09b5fe1c6e51704ec40221cd5fdb6bb688f0f40b")
1592    (source
1593      (origin
1594      (method git-fetch)
1595      (uri (git-reference
1596          (url "https://github.com/singpolyma/statsd-instrument")
1597          (commit version)))
1598      (file-name (git-file-name name version))
1599        (sha256
1600          (base32
1601            "1pj87difhx2vkdxv75q7yskla2wg4g0h2528xsxxd27qa4bscf40"))))
1602    (build-system ruby-build-system)
1603    (arguments
1604     `(#:tests? #f))
1605    (synopsis
1606     "A StatsD client for Ruby apps. Provides metaprogramming methods to inject StatsD instrumentation into your code.")
1607    (description
1608     "This package provides a @code{StatsD} client for Ruby apps.  Provides
1609metaprogramming methods to inject @code{StatsD} instrumentation into your code.")
1610    (home-page "https://github.com/Shopify/statsd-instrument")
1611    (license license:expat)))
1612
1613(define-public ruby-hiredis
1614  (package
1615    (name "ruby-hiredis")
1616    (version "0.6.3")
1617    (source
1618     (origin
1619       (method url-fetch)
1620       (uri (rubygems-uri "hiredis" version))
1621       (sha256
1622        (base32 "04jj8k7lxqxw24sp0jiravigdkgsyrpprxpxm71ba93x1wr2w1bz"))))
1623    (build-system ruby-build-system)
1624    (arguments
1625     `(#:tests? #f
1626		 #:phases
1627       (modify-phases %standard-phases
1628         (add-after 'extract-gemspec 'set-cc
1629           (lambda _
1630             (putenv "CC=gcc"))))))
1631	 (native-inputs (list ruby-rake-compiler))
1632    (synopsis
1633     "Ruby wrapper for hiredis (protocol serialization/deserialization and blocking I/O)")
1634    (description
1635     "Ruby wrapper for hiredis (protocol serialization/deserialization and blocking
1636I/O)")
1637    (home-page "http://github.com/redis/hiredis-rb")
1638    (license #f)))
1639
1640;;;;
1641
1642(define %source-dir (dirname (current-filename)))
1643(define %git-dir (string-append %source-dir "/.git"))
1644
1645; Bake a template by eval'ing the leaves
1646(define-public (bake tmpl)
1647 (list
1648  (car tmpl)
1649  (cons (caadr tmpl) (map
1650   (lambda (x) (list (car x) (eval (cadr x) (current-module))))
1651   (cdadr tmpl)))))
1652
1653; double-escaped template of the sgx-jmp sexp
1654; This allows us to bake the expression without doing a full eval to a record,
1655; so it can be written
1656(define-public sgx-jmp-template
1657  '((package-input-rewriting `((,ruby-eventmachine . ,ruby-eventmachine-openssl)))
1658  (package
1659    (name "sgx-jmp")
1660    (version (read-line (open-pipe* OPEN_READ "git" "--git-dir" %git-dir "describe" "--always" "--dirty")))
1661    (source
1662     `(origin
1663       (method git-fetch)
1664       (uri (git-reference
1665             (recursive? #t)
1666             (url "https://git.singpolyma.net/sgx-jmp")
1667             (commit ,(read-line (open-pipe* OPEN_READ "git" "--git-dir" %git-dir "rev-parse" "HEAD")))))
1668       (file-name (git-file-name name version))
1669       (sha256
1670        (base32
1671         ,(read-line (open-pipe* OPEN_READ "guix" "hash" "-rx" %source-dir))))))
1672    (build-system 'copy-build-system)
1673    (arguments
1674     ''(#:install-plan '(("." "share/sgx-jmp"))
1675       #:phases
1676       (modify-phases %standard-phases
1677         (add-after 'install 'wrap
1678           (lambda* (#:key outputs #:allow-other-keys)
1679             (use-modules (ice-9 ftw))
1680             (let* ((out (assoc-ref outputs "out"))
1681                    (appbindir (string-append out "/share/sgx-jmp/bin/"))
1682                    (bindir (string-append out "/bin/")))
1683               (for-each (lambda (bin)
1684                 (mkdir-p bindir)
1685                 (let ((binstub (string-append bindir bin)))
1686                   (call-with-output-file binstub
1687                     (lambda (port)
1688                       (format port
1689                         "#!~a~%ENV['GEM_PATH'] = ['~a', ENV['GEM_PATH']].compact.join(':')~%Gem.clear_paths~%load '~a~a'~%"
1690                         (which "ruby")
1691                         (getenv "GEM_PATH")
1692                         appbindir
1693                         bin)))
1694                   (chmod binstub #o755)))
1695                 (scandir appbindir
1696                   (lambda (f) (eq? 'regular (stat:type (stat (string-append appbindir f))))))))
1697             #t))
1698         (add-before 'install 'check
1699           (lambda _
1700             (invoke "rake" "test"))))))
1701    (propagated-inputs
1702      '(list
1703		  ruby
1704		  ruby-amazing-print
1705		  ruby-bandwidth-sdk
1706		  ruby-blather
1707		  ruby-braintree
1708		  ruby-countries
1709		  ruby-dhall
1710		  ruby-em-hiredis
1711		  ruby-em-http-request
1712		  ruby-em-pg-client
1713		  ruby-em-promise.rb
1714		  ruby-em-synchrony
1715		  ruby-eventmachine
1716		  ruby-link-header-parser
1717		  ruby-money-open-exchange-rates
1718		  ruby-multibases
1719		  ruby-multihashes
1720		  ruby-ougai
1721		  ruby-relative-time
1722		  ruby-roda
1723		  ruby-bandwidth-iris
1724		  ruby-sentry
1725		  ruby-slim
1726		  ruby-statsd-instrument
1727		  ruby-thin
1728		  ruby-multi-json
1729		  ruby-value-semantics))
1730    (native-inputs
1731      '(list
1732        ruby-rack-test
1733        ruby-rantly
1734        ruby-rubocop
1735        ruby-webmock))
1736    (synopsis
1737      "Main component for JMP.chat")
1738    (description
1739      "")
1740    (home-page
1741      "https://git.singpolyma.net/sgx-jmp")
1742    (license 'license:agpl3))))
1743
1744; Baked version of jmp-pay-template with leaves eval'd
1745(define-public sgx-jmp-baked
1746	(bake sgx-jmp-template))
1747
1748; Build clean from git the version from a local clone
1749; To build whatever is sitting in local use:
1750; guix build --with-source=$PWD -f guix.scm
1751
1752(eval sgx-jmp-baked (current-module))