diff --git a/enterprise/cli/licenses.go b/enterprise/cli/licenses.go index 37ed74c69a131..1ed12669ae9b0 100644 --- a/enterprise/cli/licenses.go +++ b/enterprise/cli/licenses.go @@ -8,6 +8,7 @@ import ( "regexp" "strconv" "strings" + "time" "golang.org/x/xerrors" @@ -154,6 +155,14 @@ func (r *RootCmd) licensesList() *clibase.Cmd { licenses = make([]codersdk.License, 0) } + for i, license := range licenses { + newClaims, err := convertLicenseExpireTime(license.Claims) + if err != nil { + return err + } + licenses[i].Claims = newClaims + } + enc := json.NewEncoder(inv.Stdout) enc.SetIndent("", " ") return enc.Encode(licenses) @@ -187,3 +196,29 @@ func (r *RootCmd) licenseDelete() *clibase.Cmd { } return cmd } + +func convertLicenseExpireTime(licenseClaims map[string]interface{}) (map[string]interface{}, error) { + if licenseClaims["license_expires"] != nil { + licenseExpiresNumber, ok := licenseClaims["license_expires"].(json.Number) + if !ok { + return licenseClaims, xerrors.Errorf("could not convert license_expires to json.Number") + } + + licenseExpires, err := licenseExpiresNumber.Int64() + if err != nil { + return licenseClaims, xerrors.Errorf("could not convert license_expires to int64: %w", err) + } + + t := time.Unix(licenseExpires, 0) + rfc3339Format := t.Format(time.RFC3339) + + claimsCopy := make(map[string]interface{}, len(licenseClaims)) + for k, v := range licenseClaims { + claimsCopy[k] = v + } + + claimsCopy["license_expires"] = rfc3339Format + return claimsCopy, nil + } + return licenseClaims, nil +} diff --git a/enterprise/cli/licenses_test.go b/enterprise/cli/licenses_test.go index dd07287161708..77d6dd15abd87 100644 --- a/enterprise/cli/licenses_test.go +++ b/enterprise/cli/licenses_test.go @@ -158,6 +158,7 @@ func TestLicensesListFake(t *testing.T) { assert.Equal(t, "claim1", licenses[0].Claims["h1"]) assert.Equal(t, int32(5), licenses[1].ID) assert.Equal(t, "claim2", licenses[1].Claims["h2"]) + assert.Equal(t, "2024-04-06T16:53:35Z", licenses[0].Claims["license_expires"]) }) } @@ -294,7 +295,8 @@ func (s *fakeLicenseAPI) licenses(rw http.ResponseWriter, _ *http.Request) { ID: 1, UploadedAt: time.Now(), Claims: map[string]interface{}{ - "h1": "claim1", + "license_expires": 1712422415, + "h1": "claim1", "features": map[string]int64{ "f1": 1, "f2": 2, pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy