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 |