guix-more/more/packages/ruby.scm

ruby.scm

1
;;; GNU Guix --- Functional package management for GNU
2
;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
3
;;;
4
;;; This file is part of GNU Guix.
5
;;;
6
;;; GNU Guix is free software; you can redistribute it and/or modify it
7
;;; under the terms of the GNU General Public License as published by
8
;;; the Free Software Foundation; either version 3 of the License, or (at
9
;;; your option) any later version.
10
;;;
11
;;; GNU Guix is distributed in the hope that it will be useful, but
12
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
;;; GNU General Public License for more details.
15
;;;
16
;;; You should have received a copy of the GNU General Public License
17
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
18
19
(define-module (more packages ruby)
20
  #:use-module ((guix licenses) #:prefix license:)
21
  #:use-module (gnu packages)
22
  #:use-module (guix packages)
23
  #:use-module (guix download)
24
  #:use-module (guix git-download)
25
  #:use-module (guix utils)
26
  #:use-module (guix build-system gnu)
27
  #:use-module (guix build-system ruby)
28
  #:use-module (gnu packages ncurses)
29
  #:use-module (gnu packages ruby))
30
31
(define-public ruby-bacon-colored-output
32
  (package
33
    (name "ruby-bacon-colored-output")
34
    (version "1.1.1")
35
    (source
36
      (origin
37
        (method url-fetch)
38
        (uri (rubygems-uri "bacon-colored_output" version))
39
        (sha256
40
          (base32
41
            "1znyh3vkfdlmf19p3k4zip88ibym41dn5g4p4n5hmks2iznb7qpx"))))
42
    (build-system ruby-build-system)
43
    (arguments
44
     ;; No tests
45
     `(#:tests? #f))
46
    (propagated-inputs `(("ruby-bacon" ,ruby-bacon)))
47
    (native-inputs
48
     `(("bundler" ,bundler)))
49
    (synopsis
50
      "Colored output for Bacon test framework! http://i.imgur.com/EpTpw.png")
51
    (description
52
      "Colored output for Bacon test framework! http://i.imgur.com/EpTpw.png")
53
    (home-page "")
54
    (license #f)))
55
56
(define-public ruby-coveralls
57
  (package
58
    (name "ruby-coveralls")
59
    (version "0.8.22")
60
    (source
61
      (origin
62
        (method url-fetch)
63
        (uri (rubygems-uri "coveralls" version))
64
        (sha256
65
          (base32
66
            "022kc16np6w4mv17hq3m9hhw9l8hjl78ld3fzqqx6337vwvwvwcg"))))
67
    (build-system ruby-build-system)
68
    (arguments
69
     ;; No tests
70
     `(#:tests? #f))
71
    (propagated-inputs
72
      `(("ruby-json" ,ruby-json)
73
        ("ruby-simplecov" ,ruby-simplecov)
74
        ("ruby-term-ansicolor" ,ruby-term-ansicolor)
75
        ("ruby-thor" ,ruby-thor)
76
        ("ruby-tins" ,ruby-tins)))
77
    (native-inputs
78
     `(("bundler" ,bundler)
79
       ("ruby-rspec" ,ruby-rspec)))
80
    (synopsis
81
      "A Ruby implementation of the Coveralls API.")
82
    (description
83
      "This package provides a Ruby implementation of the Coveralls API.")
84
    (home-page "https://coveralls.io")
85
    (license license:expat)))
86
87
(define-public ruby-hashdiff
88
  (package
89
    (name "ruby-hashdiff")
90
    (version "0.3.7")
91
    (source
92
      (origin
93
        (method url-fetch)
94
        (uri (rubygems-uri "hashdiff" version))
95
        (sha256
96
          (base32
97
            "0yj5l2rw8i8jc725hbcpc4wks0qlaaimr3dpaqamfjkjkxl0hjp9"))))
98
    (build-system ruby-build-system)
99
    (arguments
100
     ;; No tests
101
     `(#:tests? #f))
102
    (native-inputs
103
     `(("bundler" ,bundler)
104
       ("ruby-rspec" ,ruby-rspec)))
105
    (synopsis
106
      " HashDiff is a diff lib to compute the smallest difference between two hashes. ")
107
    (description
108
      " HashDiff is a diff lib to compute the smallest difference between two hashes. ")
109
    (home-page
110
      "https://github.com/liufengyun/hashdiff")
111
    (license license:expat)))
112
113
(define-public ruby-crack
114
  (package
115
    (name "ruby-crack")
116
    (version "0.4.3")
117
    (source
118
      (origin
119
        (method url-fetch)
120
        (uri (rubygems-uri "crack" version))
121
        (sha256
122
          (base32
123
            "0abb0fvgw00akyik1zxnq7yv391va148151qxdghnzngv66bl62k"))))
124
    (build-system ruby-build-system)
125
    (arguments
126
     ;; No Rakefile
127
     `(#:tests? #f))
128
    (propagated-inputs
129
      `(("ruby-safe-yaml" ,ruby-safe-yaml)))
130
    (synopsis
131
      "Really simple JSON and XML parsing, ripped from Merb and Rails.")
132
    (description
133
      "Really simple JSON and XML parsing, ripped from Merb and Rails.")
134
    (home-page "http://github.com/jnunemaker/crack")
135
    (license license:expat)))
136
137
(define-public ruby-webmock
138
  (package
139
    (name "ruby-webmock")
140
    (version "3.4.2")
141
    (source
142
      (origin
143
        (method url-fetch)
144
        (uri (rubygems-uri "webmock" version))
145
        (sha256
146
          (base32
147
            "03994dxs4xayvkxqp01dd1ivhg4xxx7z35f7cxw7y2mwj3xn24ib"))))
148
    (build-system ruby-build-system)
149
    (propagated-inputs
150
      `(("ruby-addressable" ,ruby-addressable)
151
        ("ruby-crack" ,ruby-crack)
152
        ("ruby-hashdiff" ,ruby-hashdiff)))
153
    (native-inputs
154
     `(("bundler" ,bundler)
155
       ("ruby-rspec" ,ruby-rspec)))
156
    (synopsis
157
      "WebMock allows stubbing HTTP requests and setting expectations on HTTP requests.")
158
    (description
159
      "WebMock allows stubbing HTTP requests and setting expectations on HTTP requests.")
160
    (home-page "http://github.com/bblimke/webmock")
161
    (license license:expat)))
162
163
(define-public ruby-pry-doc
164
  (package
165
    (name "ruby-pry-doc")
166
    (version "0.13.4")
167
    (source
168
      (origin
169
        (method url-fetch)
170
        (uri (rubygems-uri "pry-doc" version))
171
        (sha256
172
          (base32
173
            "036z1nsmrxnslf5xskbv6w59p4nb03bb0j3x23xw7v35sky5q0p7"))))
174
    (build-system ruby-build-system)
175
    (arguments
176
     `(#:phases
177
       (modify-phases %standard-phases
178
         (add-before 'build 'fix-dependencies
179
           (lambda _
180
             (substitute* "Rakefile"
181
               (("require 'latest_ruby'") ""))
182
             #t)))))
183
    (propagated-inputs
184
      `(("ruby-pry" ,ruby-pry)
185
        ("ruby-yard" ,ruby-yard)))
186
    (native-inputs
187
     `(("ruby-rspec" ,ruby-rspec)))
188
    (synopsis
189
      "Pry Doc is a Pry REPL plugin. It provides extended documentation support for the
190
REPL by means of improving the `show-doc` and `show-source` commands. With help
191
of the plugin the commands are be able to display the source code and the docs
192
of Ruby methods and classes implemented in C.
193
documentation
194
")
195
    (description
196
      "Pry Doc is a Pry REPL plugin.  It provides extended documentation support for the
197
REPL by means of improving the `show-doc` and `show-source` commands.  With help
198
of the plugin the commands are be able to display the source code and the docs
199
of Ruby methods and classes implemented in C.
200
documentation
201
")
202
    (home-page "https://github.com/pry/pry-doc")
203
    (license license:expat)))
204
205
(define-public ruby-rest-client
206
  (package
207
    (name "ruby-rest-client")
208
    (version "2.0.2")
209
    (source
210
      (origin
211
        (method url-fetch)
212
        (uri (rubygems-uri "rest-client" version))
213
        (sha256
214
          (base32
215
            "1hzcs2r7b5bjkf2x2z3n8z6082maz0j8vqjiciwgg3hzb63f958j"))))
216
    (build-system ruby-build-system)
217
    (arguments
218
     ;; Cyclic dependency on rubocop
219
     `(#:tests? #f))
220
       ;#:phases
221
       ;(modify-phases %standard-phases
222
       ;  (add-before 'build 'fix-dependency-version
223
       ;    (lambda _
224
       ;      (substitute* "rest-client.gemspec"
225
       ;        (("webmock>.freeze, \\[\"~> 2.0")
226
       ;         "webmock>.freeze, [\"~> 3.0"))
227
       ;      #t)))))
228
    (propagated-inputs
229
      `(("ruby-http-cookie" ,ruby-http-cookie)
230
        ("ruby-mime-types" ,ruby-mime-types)
231
        ("ruby-netrc" ,ruby-netrc)))
232
    ;(native-inputs
233
    ;  `(("bundler" ,bundler)
234
    ;    ("ruby-pry" ,ruby-pry)
235
    ;    ("ruby-pry-doc" ,ruby-pry-doc)
236
    ;    ("ruby-rspec" ,ruby-rspec)
237
    ;    ("ruby-webmock" ,ruby-webmock)))
238
    (synopsis
239
      "A simple HTTP and REST client for Ruby, inspired by the Sinatra microframework style of specifying actions: get, put, post, delete.")
240
    (description
241
      "This package provides a simple HTTP and REST client for Ruby, inspired by the Sinatra microframework style of specifying actions: get, put, post, delete.")
242
    (home-page
243
      "https://github.com/rest-client/rest-client")
244
    (license license:expat)))
245
246
(define-public ruby-simplecov-fix
247
  (package
248
    (inherit ruby-simplecov)
249
    (version "0.16.1")
250
    (source
251
      (origin
252
        (method url-fetch)
253
        (uri (rubygems-uri "simplecov" version))
254
        (sha256
255
          (base32
256
            "1sfyfgf7zrp2n42v7rswkqgk3bbwk1bnsphm24y7laxv3f8z0947"))))))
257
258
(define-public ruby-ast
259
  (package
260
    (name "ruby-ast")
261
    (version "2.4.0")
262
    (source
263
      (origin
264
        (method url-fetch)
265
        (uri (rubygems-uri "ast" version))
266
        (sha256
267
          (base32
268
            "184ssy3w93nkajlz2c70ifm79jp3j737294kbc5fjw69v1w0n9x7"))))
269
    (build-system ruby-build-system)
270
    (arguments
271
     `(#:phases
272
       (modify-phases %standard-phases
273
         (add-before 'build 'fix-dependency-version
274
           (lambda _
275
             (substitute* "ast.gemspec"
276
               (("~> 10.0") ">= 10.0")
277
               (("~> 1.6.7") "~> 2.0") ; rest-client
278
               (("~> 1.25") ">= 3.0")) ; mime-types
279
             #t)))))
280
    (native-inputs
281
     `(("bundler" ,bundler)
282
       ("ruby-bacon" ,ruby-bacon)
283
       ("ruby-bacon-colored-output" ,ruby-bacon-colored-output)
284
       ("ruby-coveralls" ,ruby-coveralls)
285
       ("ruby-json-pure" ,ruby-json-pure)
286
       ("ruby-kramdown" ,ruby-kramdown)
287
       ("ruby-mime-types" ,ruby-mime-types)
288
       ("ruby-rake" ,ruby-rake)
289
       ("ruby-rest-client" ,ruby-rest-client)
290
       ("ruby-simplecov" ,ruby-simplecov-fix)
291
       ("ruby-yard" ,ruby-yard)))
292
    (synopsis
293
      "A library for working with Abstract Syntax Trees.")
294
    (description
295
      "This package provides a library for working with Abstract Syntax Trees.")
296
    (home-page "https://whitequark.github.io/ast/")
297
    (license license:expat)))
298
299
(define-public ruby-powerpack
300
  (package
301
    (name "ruby-powerpack")
302
    (version "0.1.2")
303
    (source
304
      (origin
305
        (method url-fetch)
306
        (uri (rubygems-uri "powerpack" version))
307
        (sha256
308
          (base32
309
            "1r51d67wd467rpdfl6x43y84vwm8f5ql9l9m85ak1s2sp3nc5hyv"))))
310
    (build-system ruby-build-system)
311
    (arguments
312
     ;; No tests
313
     `(#:tests? #f))
314
    (synopsis
315
      "A few useful extensions to core Ruby classes.")
316
    (description
317
      "This package provides a few useful extensions to core Ruby classes.")
318
    (home-page
319
      "https://github.com/bbatsov/powerpack")
320
    (license license:expat)))
321
322
(define-public ruby-rainbow
323
  (package
324
    (name "ruby-rainbow")
325
    (version "3.0.0")
326
    (source
327
      (origin
328
        (method url-fetch)
329
        (uri (rubygems-uri "rainbow" version))
330
        (sha256
331
          (base32
332
            "0bb2fpjspydr6x0s8pn1pqkzmxszvkfapv0p4627mywl7ky4zkhk"))))
333
    (build-system ruby-build-system)
334
    (arguments
335
     ;; No tests
336
     `(#:tests? #f))
337
    (synopsis
338
      "Colorize printed text on ANSI terminals")
339
    (description
340
      "Colorize printed text on ANSI terminals")
341
    (home-page "https://github.com/sickill/rainbow")
342
    (license license:expat)))
343
344
(define-public ruby-progressbar
345
  (package
346
    (name "ruby-progressbar")
347
    (version "1.10.0")
348
    (source
349
      (origin
350
        (method url-fetch)
351
        (uri (rubygems-uri "ruby-progressbar" version))
352
        (sha256
353
          (base32
354
            "1cv2ym3rl09svw8940ny67bav7b2db4ms39i4raaqzkf59jmhglk"))))
355
    (build-system ruby-build-system)
356
    (arguments
357
     ;; No tests
358
     `(#:tests? #f))
359
    (synopsis
360
      "Ruby/ProgressBar is an extremely flexible text progress bar library for Ruby. The output can be customized with a flexible formatting system including: percentage, bars of various formats, elapsed time and estimated time remaining.")
361
    (description
362
      "Ruby/ProgressBar is an extremely flexible text progress bar library for Ruby.  The output can be customized with a flexible formatting system including: percentage, bars of various formats, elapsed time and estimated time remaining.")
363
    (home-page
364
      "https://github.com/jfelchner/ruby-progressbar")
365
    (license license:expat)))
366
367
(define-public ruby-unicode-display-width
368
  (package
369
    (name "ruby-unicode-display-width")
370
    (version "1.4.0")
371
    (source
372
      (origin
373
        (method url-fetch)
374
        (uri (rubygems-uri "unicode-display_width" version))
375
        (sha256
376
          (base32
377
            "0040bsdpcmvp8w31lqi2s9s4p4h031zv52401qidmh25cgyh4a57"))))
378
    (build-system ruby-build-system)
379
    (arguments
380
     ;; Tests try to run "rspec", but we don't have a binary with that name...
381
     `(#:tests? #f))
382
    (synopsis
383
      "[Unicode 11.0.0] Determines the monospace display width of a string using EastAsianWidth.txt, Unicode general category, and other data.")
384
    (description
385
      "[Unicode 11.0.0] Determines the monospace display width of a string using EastAsianWidth.txt, Unicode general category, and other data.")
386
    (home-page
387
      "http://github.com/janlelis/unicode-display_width")
388
    (license license:expat)))
389
390
(define-public ruby-racc
391
  (package
392
    (name "ruby-racc")
393
    (version "1.4.14")
394
    (source
395
      (origin
396
        (method url-fetch)
397
        (uri (rubygems-uri "racc" version))
398
        (sha256
399
          (base32
400
            "00yhs2ag7yy5v83mqvkbnhk9bvsh6mx3808k53n61ddzx446v1zl"))))
401
    (build-system ruby-build-system)
402
    (native-inputs
403
     `(("ruby-hoe" ,ruby-hoe)
404
       ("ruby-rake-compiler" ,ruby-rake-compiler)))
405
    (synopsis
406
      "Racc is a LALR(1) parser generator.
407
  It is written in Ruby itself, and generates Ruby program.
408
409
  NOTE: Ruby 1.8.x comes with Racc runtime module.  You
410
  can run your parsers generated by racc 1.4.x out of the
411
  box.")
412
    (description
413
      "Racc is a LALR(1) parser generator.
414
  It is written in Ruby itself, and generates Ruby program.
415
416
  NOTE: Ruby 1.8.x comes with Racc runtime module.  You
417
  can run your parsers generated by racc 1.4.x out of the
418
  box.")
419
    (home-page
420
      "http://i.loveruby.net/en/projects/racc/")
421
    (license license:expat)))
422
423
(define-public ragel
424
  (package
425
    (name "ragel")
426
    (version "6.10")
427
    (source
428
      (origin
429
        (method url-fetch)
430
        (uri (string-append "https://www.colm.net/files/ragel/ragel-"
431
                            version ".tar.gz"))
432
        (sha256
433
         (base32
434
          "0gvcsl62gh6sg73nwaxav4a5ja23zcnyxncdcdnqa2yjcpdnw5az"))))
435
    (build-system gnu-build-system)
436
    (home-page "https://www.colm.net/open-source/ragel/")
437
    (synopsis "")
438
    (description "")
439
    (license license:gpl2+)))
440
441
(define-public ruby-cliver
442
  (package
443
    (name "ruby-cliver")
444
    (version "0.3.2")
445
    (source
446
      (origin
447
        (method url-fetch)
448
        (uri (rubygems-uri "cliver" version))
449
        (sha256
450
          (base32
451
            "096f4rj7virwvqxhkavy0v55rax10r4jqf8cymbvn4n631948xc7"))))
452
    (build-system ruby-build-system)
453
    (arguments
454
     ;; No tests
455
     `(#:tests? #f))
456
    (synopsis
457
      "Assertions for command-line dependencies")
458
    (description
459
      "Assertions for command-line dependencies")
460
    (home-page
461
      "https://www.github.com/yaauie/cliver")
462
    (license license:expat)))
463
464
(define-public ruby-parser
465
  (package
466
    (name "ruby-parser")
467
    (version "2.5.1.2")
468
    (source
469
      (origin
470
        (method url-fetch)
471
        (uri (rubygems-uri "parser" version))
472
        (sha256
473
          (base32
474
            "1zp89zg7iypncszxsjp8kiccrpbdf728jl449g6cnfkz990fyb5k"))))
475
    (build-system ruby-build-system)
476
    (propagated-inputs `(("ruby-ast" ,ruby-ast)))
477
    (native-inputs
478
     `(("bundler" ,bundler)
479
       ("ragel" ,ragel)
480
       ("ruby-cliver" ,ruby-cliver)
481
       ("ruby-racc" ,ruby-racc)
482
       ("ruby-simplecov" ,ruby-simplecov)))
483
    (synopsis "A Ruby parser written in pure Ruby.")
484
    (description
485
      "This package provides a Ruby parser written in pure Ruby.")
486
    (home-page
487
      "https://github.com/whitequark/parser")
488
    (license license:expat)))
489
490
(define-public ruby-jaro-winkler
491
  (package
492
    (name "ruby-jaro-winkler")
493
    (version "1.5.1")
494
    (source
495
      (origin
496
        (method url-fetch)
497
        (uri (rubygems-uri "jaro_winkler" version))
498
        (sha256
499
          (base32
500
            "0rr797nqz081bfk30m2apj5h24bg5d1jr1c8p3xwx4hbwsrbclah"))))
501
    (build-system ruby-build-system)
502
    (arguments
503
     ;; No Rakefile
504
     `(#:tests? #f))
505
    (synopsis
506
      "jaro_winkler is an implementation of Jaro-Winkler \\
507
  distance algorithm which is written in C extension and will fallback to pure \\
508
  Ruby version in platforms other than MRI/KRI like JRuby or Rubinius. Both of \\
509
  C and Ruby implementation support any kind of string encoding, such as \\
510
  UTF-8, EUC-JP, Big5, etc.")
511
    (description
512
      "jaro_winkler is an implementation of Jaro-Winkler \\
513
  distance algorithm which is written in C extension and will fallback to pure \\
514
  Ruby version in platforms other than MRI/KRI like JRuby or Rubinius.  Both of \\
515
  C and Ruby implementation support any kind of string encoding, such as \\
516
  UTF-8, EUC-JP, Big5, etc.")
517
    (home-page
518
      "https://github.com/tonytonyjan/jaro_winkler")
519
    (license license:expat)))
520
521
(define-public ruby-rubocop
522
  (package
523
    (name "ruby-rubocop")
524
    (version "0.58.2")
525
    (source
526
      (origin
527
        (method url-fetch)
528
        (uri (rubygems-uri "rubocop" version))
529
        (sha256
530
          (base32
531
            "0fc1fw9z98qd91ipsh9hdvpcb401qvkhw518s35l8a67sv4vdnj3"))))
532
    (build-system ruby-build-system)
533
    (arguments
534
     ;; No Rakefile
535
     `(#:tests? #f))
536
    (propagated-inputs
537
      `(("ruby-jaro-winkler" ,ruby-jaro-winkler)
538
        ("ruby-parallel" ,ruby-parallel)
539
        ("ruby-parser" ,ruby-parser)
540
        ("ruby-powerpack" ,ruby-powerpack)
541
        ("ruby-rainbow" ,ruby-rainbow)
542
        ("ruby-progressbar" ,ruby-progressbar)
543
        ("ruby-unicode-display-width"
544
         ,ruby-unicode-display-width)))
545
    (synopsis
546
      "    Automatic Ruby code style checking tool.
547
    Aims to enforce the community-driven Ruby Style Guide.
548
")
549
    (description
550
      "    Automatic Ruby code style checking tool.
551
    Aims to enforce the community-driven Ruby Style Guide.
552
")
553
    (home-page "http://www.rubocop.org/")
554
    (license license:expat)))
555