From 600c387bd2a4d2a5097bcd74bf9934b7d3ea15f1 Mon Sep 17 00:00:00 2001 From: Sam Coe Date: Tue, 14 Sep 2021 10:56:21 -0700 Subject: [PATCH] Address PR comments --- pkg/cmd/gpg-key/add/add.go | 2 +- pkg/cmd/gpg-key/add/http.go | 2 +- pkg/cmd/gpg-key/list/list.go | 20 ++++++++++++++++---- pkg/cmd/gpg-key/list/list_test.go | 4 ++-- 4 files changed, 20 insertions(+), 8 deletions(-) diff --git a/pkg/cmd/gpg-key/add/add.go b/pkg/cmd/gpg-key/add/add.go index 735bc1d89..4aa6d242a 100644 --- a/pkg/cmd/gpg-key/add/add.go +++ b/pkg/cmd/gpg-key/add/add.go @@ -81,7 +81,7 @@ func runAdd(opts *AddOptions) error { return err } - err = GPGKeyUpload(httpClient, hostname, keyReader) + err = gpgKeyUpload(httpClient, hostname, keyReader) if err != nil { if errors.Is(err, scopesError) { cs := opts.IO.ColorScheme() diff --git a/pkg/cmd/gpg-key/add/http.go b/pkg/cmd/gpg-key/add/http.go index 6a7c3b497..0d0b5f9a6 100644 --- a/pkg/cmd/gpg-key/add/http.go +++ b/pkg/cmd/gpg-key/add/http.go @@ -14,7 +14,7 @@ import ( var scopesError = errors.New("insufficient OAuth scopes") -func GPGKeyUpload(httpClient *http.Client, hostname string, keyFile io.Reader) error { +func gpgKeyUpload(httpClient *http.Client, hostname string, keyFile io.Reader) error { url := ghinstance.RESTPrefix(hostname) + "user/gpg_keys" keyBytes, err := ioutil.ReadAll(keyFile) diff --git a/pkg/cmd/gpg-key/list/list.go b/pkg/cmd/gpg-key/list/list.go index e806d4bd7..2ea047305 100644 --- a/pkg/cmd/gpg-key/list/list.go +++ b/pkg/cmd/gpg-key/list/list.go @@ -79,8 +79,8 @@ func listRun(opts *ListOptions) error { for _, gpgKey := range gpgKeys { t.AddField(gpgKey.Emails.String(), nil, nil) - t.AddField(gpgKey.KeyId, nil, nil) + t.AddField(gpgKey.PublicKey, truncateMiddle, nil) createdAt := gpgKey.CreatedAt.Format(time.RFC3339) if t.IsTTY() { @@ -98,11 +98,23 @@ func listRun(opts *ListOptions) error { } t.AddField(expiresAt, nil, cs.Gray) - if !t.IsTTY() { - t.AddField(gpgKey.PublicKey, nil, nil) - } t.EndRow() } return t.Render() } + +func truncateMiddle(maxWidth int, t string) string { + if len(t) <= maxWidth { + return t + } + + ellipsis := "..." + if maxWidth < len(ellipsis)+2 { + return t[0:maxWidth] + } + + halfWidth := (maxWidth - len(ellipsis)) / 2 + remainder := (maxWidth - len(ellipsis)) % 2 + return t[0:halfWidth+remainder] + ellipsis + t[len(t)-halfWidth:] +} diff --git a/pkg/cmd/gpg-key/list/list_test.go b/pkg/cmd/gpg-key/list/list_test.go index ea1b0a0bb..7ffcaf75a 100644 --- a/pkg/cmd/gpg-key/list/list_test.go +++ b/pkg/cmd/gpg-key/list/list_test.go @@ -25,14 +25,14 @@ func TestListRun(t *testing.T) { name: "list tty", opts: ListOptions{HTTPClient: mockGPGResponse}, isTTY: true, - wantStdout: "johnny@test.com ABCDEF1234567890 Created Jun 11, 2020 Expires 2099-01-01\nmonalisa@github.com 1234567890ABCDEF Created Jan 11, 2021 Never expires\n", + wantStdout: "johnny@test.com ABCDEF12345... xJMEW...oofoo Created Ju... Expires 20...\nmonalisa@github.com 1234567890A... xJMEW...arbar Created Ja... Never expires\n", wantStderr: "", }, { name: "list non-tty", opts: ListOptions{HTTPClient: mockGPGResponse}, isTTY: false, - wantStdout: "johnny@test.com\tABCDEF1234567890\t2020-06-11T15:44:24+01:00\t2099-01-01T15:44:24+01:00\txJMEWfoofoofoo\nmonalisa@github.com\t1234567890ABCDEF\t2021-01-11T15:44:24+01:00\t0001-01-01T00:00:00Z\txJMEWbarbarbar\n", + wantStdout: "johnny@test.com\tABCDEF1234567890\txJMEWfoofoofoo\t2020-06-11T15:44:24+01:00\t2099-01-01T15:44:24+01:00\nmonalisa@github.com\t1234567890ABCDEF\txJMEWbarbarbar\t2021-01-11T15:44:24+01:00\t0001-01-01T00:00:00Z\n", wantStderr: "", }, {