Subject: Re: [bug#34650] [PATCH 7/7] gnu: Add mailcatcher.

From: Christopher Baines <[email-masked]>
Date: Mon, 04 Mar 2019 21:50:05 +0000

Pierre Neidhardt <[email-masked]> writes:

> * gnu/packages/ruby.scm (mailcatcher): New variable.
> ---
>  gnu/packages/ruby.scm | 49 +++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 49 insertions(+)
>
> diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
> index 8cb170e17..854b4669b 100644
> --- a/gnu/packages/ruby.scm
> +++ b/gnu/packages/ruby.scm
> @@ -7814,3 +7814,52 @@ minimal effort.")
>      (description "Simple, upgradable WebSockets for Ruby Thin.")
>      (home-page "https://github.com/sj26/skinny")
>      (license license:expat)))
> +
> +(define-public mailcatcher
> +  (package
> +    (name "mailcatcher")
> +    (version "0.6.5")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (rubygems-uri "mailcatcher" version))
> +       (sha256
> +        (base32
> +         "0h6gk8n18i5f651f244al1hscjzl27fpma4vqw0qhszqqpd5p3bx"))))
> +    (build-system ruby-build-system)
> +    (arguments
> +     ;; TODO: Grab from GitHub to get tests?
> +     `(#:tests? #f

As with ruby-skinny, if there are no tests, I'd put:

  '(#:tests? #f ; No included tests

> +       #:phases
> +       (modify-phases %standard-phases
> +         (add-before 'build 'patch-gemspec
> +           (lambda _
> +             (substitute* ".gemspec"
> +               (("<eventmachine>.freeze, \\[\\\"= 1.0.9.1") "<eventmachine>, [\">= 1.0.9.1")
> +               (("<rack>.freeze, \\[\\\"~> 1.5") "<rack>, [\">= 1.5")
> +               (("<thin>.freeze, \\[\\\"~> 1.5.0") "<thin>, [\">= 1.5.0")
> +               (("<sinatra>.freeze, \\[\\\"~> 1.2") "<sinatra>, [\">= 1.2")
> +               )))
> +         (add-before 'build 'loosen-dependency-contraint
> +             (lambda _
> +               (substitute* "lib/mail_catcher.rb"
> +                 (("\"eventmachine\", \"1.0.9.1\"") "\"eventmachine\", \">= 1.0.9.1\"")
> +                 (("\"rack\", \"~> 1.5\"") "\"rack\", \">= 1.5\"")
> +                 (("\"thin\", \"~> 1.5.0\"") "\"thin\", \">= 1.5.0\"")
> +                 (("\"sinatra\", \"~> 1.2\"") "\"sinatra\", \">= 1.2\"")))))))

I'd add an explicit #t at the end of these phases.

Also, using wildcards in place of the versions in the mailcatcher gem
would probably make it easier to update this package if new versions are
released.

> +    (inputs
> +     `(("ruby-eventmachine" ,ruby-eventmachine)
> +       ("ruby-mail" ,ruby-mail)
> +       ("ruby-rack" ,ruby-rack)
> +       ("ruby-sinatra" ,ruby-sinatra)
> +       ("ruby-skinny" ,ruby-skinny)
> +       ("ruby-sqlite3" ,ruby-sqlite3)
> +       ("ruby-thin" ,ruby-thin)))
> +    (synopsis "Run an SMTP server which catches any message sent to it to display in a browser")
> +    (description
> +     "MailCatcher runs a super simple SMTP server which catches any message
> +sent to it to display in a web interface.  Run mailcatcher, set your favourite
> +app to deliver to smtp://127.0.0.1:1025 instead of your default SMTP server,
> +then check out http://127.0.0.1:1080 to see the mail.")
> +    (home-page "https://mailcatcher.me")
> +    (license license:expat)))