Subject: Re: [bug#37365] [PATCH] - Amendment: Enable tests

From: "Collin J. Doering" <[email-masked]>
Date: Thu, 12 Sep 2019 17:15:06 -0400

Hi Efraim,

Firstly, thanks for taking the time to review this. I have attached
updated patches with your suggested changes.

On 11 Sep 2019 at 03:37, Efraim Flashner wrote:

> These should be two patches, the first one to add the ruby package and
> the second to add the zsh package.

Makes sense.

>
>> +         (replace 'install
>> +           (lambda* (#:key outputs #:allow-other-keys)
>> +             (let* ((out (assoc-ref outputs "out"))
>> +                    (install-path (string-append out "/share/zsh/plugins/zsh-autosuggestions")))
>> +               (mkdir-p install-path)
>> +               (invoke "make" "all")
>> +               (copy-file "zsh-autosuggestions.zsh" (string-append install-path "/zsh-autosuggestions.zsh"))
>> +               #t))))))
>
> I don't use zsh so I'm asking without knowing anything about the
> directory structure, is %out/share/zsh/plugins/zsh-autosuggestions the
> correct folder? The only folder I currently have after zsh is
> site-functions.
>
> (ins)efraim@E5400 ~$ tree .guix-profile/share/zsh/
> .guix-profile/share/zsh/
>  site-functions
>      _mpv -> /gnu/store/acrlmdnmrkivbdrry756pf9grsx2x814-mpv-0.29.1/share/zsh/site-functions/_mpv
>      _vifm -> /gnu/store/1l9b676paigfc3fx9r8h6h2k5d33wrhk-vifm-0.10.1/share/zsh/site-functions/_vifm
>      _wgetpaste -> /gnu/store/k5g3fa3i59yxy3n9vf8lm1nfbz5whq2i-wgetpaste-2.29/share/zsh/site-functions/_wgetpaste

I did some more looking into this (as I just copied what I saw done for
a few zsh plugin packages for archlinux). The directories you list above
(namely .../'share/zsh/site-functions/_...') are for zsh site-functions (begin
with an underscore) and not plugins that extend the functionality of zsh
(which will have to be sourced from the users `~/.zshrc`). Something
like this should do:

source ~/.guix-profile/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh

Anyways, I think that `.../share/zsh/plugins/<plugin_name>/...` is a
good place for this (and any other zsh plugins). WDYT?

Finally, you will find an updated patch set attached to this email that
includes splitting the ruby package out into its own patch, as well as
minor touch up to be more consistent with naming throughout the rest of
the guix code base.

Kind regards,
>From 00e3e91719ce049b04415bda07588357eb776d48 Mon Sep 17 00:00:00 2001
From: "Collin J. Doering" <[email-masked]>
Date: Thu, 12 Sep 2019 17:09:00 -0400
Subject: [PATCH 1/2] gnu: Add ruby-rspec-wait

* gnu/packages/ruby.scm (ruby-rspec-wait): New variable.

Signed-off-by: Collin J. Doering <[email-masked]>
---
 gnu/packages/ruby.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index ef9792bc0f..110e5e21ac 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -17,6 +17,7 @@
 ;;; Copyright © 2019 Mikhail Kirillov <[email-masked]>
 ;;; Copyright © 2019 Jelle Licht <[email-masked]>
 ;;; Copyright © 2019 Brian Leung <[email-masked]>
+;;; Copyright © 2019 Collin J. Doering <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -670,6 +671,32 @@ RSpec tests.")
     (home-page "https://github.com/dblock/rspec-rerun")
     (license license:expat)))
 
+(define-public ruby-rspec-wait
+  (package
+    (name "ruby-rspec-wait")
+    (version "0.0.9")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "rspec-wait" version))
+        (sha256
+          (base32
+            "0gvj1bp5ccx001dyvcgk2j49s5sl6vs9fdaqqb08z3bd1554hsww"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:phases (modify-phases %standard-phases
+                  (replace 'check
+                    (lambda _
+                      (invoke "rake" "spec"))))))
+    (native-inputs
+     `(("bundler" ,bundler)))
+    (propagated-inputs `(("ruby-rspec" ,ruby-rspec)))
+    (synopsis "Wait for conditions in RSpec")
+    (description "Wait for conditions in RSpec")
+    (home-page
+      "https://github.com/laserlemon/rspec-wait")
+    (license license:expat)))
+
 (define-public ruby-rspec
   (package
     (name "ruby-rspec")
-- 
2.23.0

>From 2497a3b3337b72ac932a0edad9c0729325a69870 Mon Sep 17 00:00:00 2001
From: "Collin J. Doering" <[email-masked]>
Date: Thu, 12 Sep 2019 17:09:07 -0400
Subject: [PATCH 2/2] gnu: Add zsh-autosuggestions

* gnu/packages/shellutils.scm (zsh-autosuggestions): New variable.

Signed-off-by: Collin J. Doering <[email-masked]>
---
 gnu/packages/shellutils.scm | 48 +++++++++++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)

diff --git a/gnu/packages/shellutils.scm b/gnu/packages/shellutils.scm
index f7542ea759..847cd931b3 100644
--- a/gnu/packages/shellutils.scm
+++ b/gnu/packages/shellutils.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2017 Stefan Reichör <[email-masked]>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <[email-masked]>
 ;;; Copyright © 2018 Benjamin Slade <[email-masked]>
+;;; Copyright © 2019 Collin J. Doering <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -33,11 +34,58 @@
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages ruby)
+  #:use-module (gnu packages tmux)
+  #:use-module (gnu packages shells)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system go)
   #:use-module (guix build-system python))
 
+(define-public zsh-autosuggestions
+  (package
+    (name "zsh-autosuggestions")
+    (version "0.6.3")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/zsh-users/zsh-autosuggestions.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1h8h2mz9wpjpymgl2p7pc146c1jgb3dggpvzwm9ln3in336wl95c"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("tmux" ,tmux)
+       ("zsh" ,zsh)
+       ("ruby" ,ruby)
+       ("ruby-rspec" ,ruby-rspec)
+       ("ruby-rspec-wait" ,ruby-rspec-wait)
+       ("ruby-pry" ,ruby-pry)
+       ("ruby-byebug" ,ruby-byebug)))
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (replace 'check ; Tests use ruby's bundler; instead execute rspec directly
+           (lambda _
+             (setenv "TMUX_TMPDIR" (getenv "TMPDIR"))
+             (setenv "SHELL" (which "zsh"))
+             (invoke "rspec")))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (zsh-plugins (string-append out "/share/zsh/plugins/zsh-autosuggestions")))
+               (invoke "make" "all")
+               (install-file "zsh-autosuggestions.zsh" zsh-plugins)
+               #t))))))
+    (synopsis "Fish-like autosuggestions for zsh")
+    (description
+     "Fish-like fast/unobtrusive autosuggestions for zsh.  It suggests commands as you type.")
+    (home-page "https://github.com/zsh-users/zsh-autosuggestions.git")
+    (license license:expat)))
+
 (define-public envstore
   (package
     (name "envstore")
-- 
2.23.0

-- 
Collin J. Doering

http://rekahsoft.ca
http://blog.rekahsoft.ca
http://git.rekahsoft.ca