[PATCH 0/2] Add sendgmail.

  • Done
  • quality assurance status badge
Details
4 participants
  • Sarah Morgensen
  • Leo Famulari
  • Ludovic Courtès
  • Philip McGrath
Owner
unassigned
Submitted by
Philip McGrath
Severity
normal
P
P
Philip McGrath wrote on 6 Sep 2021 07:36
(address . guix-patches@gnu.org)(name . Philip McGrath)(address . philip@philipmcgrath.com)
20210906053607.505949-1-philip@philipmcgrath.com
This patch series adds `sendgmail`, a tool for using `git send-email`
with Gmail accounts via OAuth2 authentication.

Philip McGrath (2):
gnu: Add go-cloud-google-com-go-compute-metadata.
gnu: Add go-github-com-google-gmail-oauth2-tools-go-sendgmail.

gnu/packages/golang.scm | 62 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 62 insertions(+)

--
2.30.2
P
P
Philip McGrath wrote on 6 Sep 2021 07:37
[PATCH 1/2] gnu: Add go-cloud-google-com-go-compute-metadata.
(address . 50420@debbugs.gnu.org)(name . Philip McGrath)(address . philip@philipmcgrath.com)
20210906053752.506357-1-philip@philipmcgrath.com
* gnu/packages/golang.scm (go-cloud-google-com-go-compute-metadata): New
variable.
---
gnu/packages/golang.scm | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)

Toggle diff (40 lines)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index b6e8b84749..7980859b26 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -2754,6 +2754,33 @@ developers to use @code{http} methods explicitly and in a way that's consistent
with the HTTP protocol definition.")
(license license:expat)))
+(define-public go-cloud-google-com-go-compute-metadata
+ (package
+ (name "go-cloud-google-com-go-compute-metadata")
+ (version "0.81.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/googleapis/google-cloud-go")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "15jgynqb5pbxqbj3a7ii970yn4srsw1dbxzxnhpkfkmplalpgyh3"))))
+ (build-system go-build-system)
+ (arguments
+ '(#:unpack-path "cloud.google.com/go"
+ #:import-path "cloud.google.com/go/compute/metadata"))
+ (home-page
+ "https://pkg.go.dev/cloud.google.com/go/compute/metadata")
+ (synopsis
+ "Go wrapper for Google Compute Engine metadata service")
+ (description
+ "This package provides access to Google Compute Engine (GCE) metadata and
+API service accounts for Go.")
+ (license license:asl2.0)))
+
(define-public go-github-com-google-cadvisor
(let ((commit "2ed7198f77395ee9a172878a0a7ab92ab59a2cfd")
(revision "0"))
--
2.30.2
P
P
Philip McGrath wrote on 6 Sep 2021 07:37
[PATCH 2/2] gnu: Add go-github-com-google-gmail-oauth2-tools-go-sendgmail.
(address . 50420@debbugs.gnu.org)(name . Philip McGrath)(address . philip@philipmcgrath.com)
20210906053752.506357-2-philip@philipmcgrath.com
* gnu/packages/golang.scm
(go-github-com-google-gmail-oauth2-tools-go-sendgmail): New variable.
---
gnu/packages/golang.scm | 35 +++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)

Toggle diff (48 lines)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 7980859b26..214365c73b 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -2781,6 +2781,41 @@ with the HTTP protocol definition.")
API service accounts for Go.")
(license license:asl2.0)))
+(define-public go-github-com-google-gmail-oauth2-tools-go-sendgmail
+ (let ((commit "e3229155a4037267ce40f1a3a681f53221aa4d8d")
+ (revision "0"))
+ (package
+ (name "go-github-com-google-gmail-oauth2-tools-go-sendgmail")
+ (version (git-version "0.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/google/gmail-oauth2-tools")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1cxpkiaajhq1gjsg47r2b5xgck0r63pvkyrkm7af8c8dw7fyn64f"))))
+ (propagated-inputs
+ `(("go-golang-org-x-oauth2" ,go-golang-org-x-oauth2)
+ ("go-cloud-google-com-go-compute-metadata"
+ ,go-cloud-google-com-go-compute-metadata)))
+ (build-system go-build-system)
+ (arguments
+ '(#:unpack-path "github.com/google/gmail-oauth2-tools"
+ #:import-path "github.com/google/gmail-oauth2-tools/go/sendgmail"))
+ (home-page
+ "https://github.com/google/gmail-oauth2-tools/tree/master/go/sendgmail")
+ (synopsis
+ "Sendmail-compatible tool for using Gmail with @code{git send-email}")
+ (description
+ "The @command{sendgmail} command provides a minimal sendmail-compatible
+front-end that connects to Gmail using OAuth2. It is specifically designed
+for use with @code{git send-email}. The command needs a Gmail API key to
+function.")
+ (license license:asl2.0))))
+
(define-public go-github-com-google-cadvisor
(let ((commit "2ed7198f77395ee9a172878a0a7ab92ab59a2cfd")
(revision "0"))
--
2.30.2
L
L
Ludovic Courtès wrote on 14 Sep 2021 11:32
Re: bug#50420: [PATCH 0/2] Add sendgmail.
(name . Philip McGrath)(address . philip@philipmcgrath.com)(address . 50420-done@debbugs.gnu.org)
871r5r7baf.fsf@gnu.org
Hi,

Philip McGrath <philip@philipmcgrath.com> skribis:

Toggle quote (3 lines)
> gnu: Add go-cloud-google-com-go-compute-metadata.
> gnu: Add go-github-com-google-gmail-oauth2-tools-go-sendgmail.

Applied, thanks!

Perhaps the 2nd package could be called just “sendgmail” since it
provides a CLI?

Thanks,
Ludo’.
Closed
P
P
Philip McGrath wrote on 23 Sep 2021 11:59
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 50420-done@debbugs.gnu.org)
899b1ee1-2223-8780-729f-ec06e793ad84@philipmcgrath.com
On 9/14/21 5:32 AM, Ludovic Courtès wrote:
Toggle quote (12 lines)
> Hi,
>
> Philip McGrath <philip@philipmcgrath.com> skribis:
>
>> gnu: Add go-cloud-google-com-go-compute-metadata.
>> gnu: Add go-github-com-google-gmail-oauth2-tools-go-sendgmail.
>
> Applied, thanks!
>
> Perhaps the 2nd package could be called just “sendgmail” since it
> provides a CLI?

That would make sense to me: I'm not sure what the general rule is for
breaking out of the language-specific naming conventions, and I'm not a
Go programmer, but
“go-github-com-google-gmail-oauth2-tools-go-sendgmail” seemed especially
egregiously long.

The sengmail utility is recommended in
https://git-send-email.io/#step-2 (by the SourceHut developers). There
are some things I don't like about it, but it seems better than other
approaches I've tried, like configuring an MTA with (even more) ambient
authority.

It might also be nice (or it might not) to apply one of the three pull
requests since 2019 to support non-"@gmail.com" addresses (e.g. for work
or school, from what has variously been known as Google Workspace, G
Suite, or Google Apps for Your Domain). Indeed, the upstream repository
has not been updated at all since 2019 ... I used
transformation to submit this patch series, whereupon I discovered I
wasn't the first person to have this idea.

-Philip
Closed
L
L
Leo Famulari wrote on 23 Sep 2021 20:42
Re: [bug#50420] [PATCH 0/2] Add sendgmail.
(name . Philip McGrath)(address . philip@philipmcgrath.com)
YUzKpoEo3Tzgwj42@jasmine.lan
On Thu, Sep 23, 2021 at 05:59:44AM -0400, Philip McGrath wrote:
Toggle quote (5 lines)
> That would make sense to me: I'm not sure what the general rule is for
> breaking out of the language-specific naming conventions, and I'm not a Go
> programmer, but “go-github-com-google-gmail-oauth2-tools-go-sendgmail”
> seemed especially egregiously long.

In general, end-user applications (like a CLI program) can use a simple
name like 'sendgmail', which is what users expect.

Libraries, on the other hand, should use the long name. For Go, this
should match the "import path" of the program, with slashes changed to
hyphens, plus a "go-" prefix.

Internally to Go software, the "import path" is the true name of the
program:


For example, there could be multiple Go libraries named 'sendgmail', but
Go software distinguishes them by including their network location in
the name.

We could invent another naming system, but Go naming is already so
complicated that I think it's worth trying to match the internal "import
path" names.
Closed
S
S
Sarah Morgensen wrote on 23 Sep 2021 21:40
(name . Leo Famulari)(address . leo@famulari.name)
86fstvkrmf.fsf@mgsn.dev
Hi all,

Leo Famulari <leo@famulari.name> writes:

Toggle quote (26 lines)
> On Thu, Sep 23, 2021 at 05:59:44AM -0400, Philip McGrath wrote:
>> That would make sense to me: I'm not sure what the general rule is for
>> breaking out of the language-specific naming conventions, and I'm not a Go
>> programmer, but “go-github-com-google-gmail-oauth2-tools-go-sendgmail”
>> seemed especially egregiously long.
>
> In general, end-user applications (like a CLI program) can use a simple
> name like 'sendgmail', which is what users expect.
>
> Libraries, on the other hand, should use the long name. For Go, this
> should match the "import path" of the program, with slashes changed to
> hyphens, plus a "go-" prefix.
>
> Internally to Go software, the "import path" is the true name of the
> program:
>
> https://golang.org/doc/gopath_code#ImportPaths
>
> For example, there could be multiple Go libraries named 'sendgmail', but
> Go software distinguishes them by including their network location in
> the name.
>
> We could invent another naming system, but Go naming is already so
> complicated that I think it's worth trying to match the internal "import
> path" names.

For what it's worth, I concur, especially since the importer won't see a
package with an "incorrect" name, so we may end up with duplicates.

In the rare case that a module contains both a library and commands, the
command package can inherit from the library package, and set
`#:install-source? #f' (and #:import-path, if necessary).

--
Sarah
?