mirror of https://github.com/coder/coder.git
feat(cli): show license_expires as rfc3339 date instead of unix time (#7687)
* feat(licenses): show license_expires time as rfc3339 date * fix review comments
This commit is contained in:
parent
66f5d39ff5
commit
61dc875454
|
@ -8,6 +8,7 @@ import (
|
||||||
"regexp"
|
"regexp"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
"golang.org/x/xerrors"
|
"golang.org/x/xerrors"
|
||||||
|
|
||||||
|
@ -154,6 +155,14 @@ func (r *RootCmd) licensesList() *clibase.Cmd {
|
||||||
licenses = make([]codersdk.License, 0)
|
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 := json.NewEncoder(inv.Stdout)
|
||||||
enc.SetIndent("", " ")
|
enc.SetIndent("", " ")
|
||||||
return enc.Encode(licenses)
|
return enc.Encode(licenses)
|
||||||
|
@ -187,3 +196,29 @@ func (r *RootCmd) licenseDelete() *clibase.Cmd {
|
||||||
}
|
}
|
||||||
return 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
|
||||||
|
}
|
||||||
|
|
|
@ -158,6 +158,7 @@ func TestLicensesListFake(t *testing.T) {
|
||||||
assert.Equal(t, "claim1", licenses[0].Claims["h1"])
|
assert.Equal(t, "claim1", licenses[0].Claims["h1"])
|
||||||
assert.Equal(t, int32(5), licenses[1].ID)
|
assert.Equal(t, int32(5), licenses[1].ID)
|
||||||
assert.Equal(t, "claim2", licenses[1].Claims["h2"])
|
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,
|
ID: 1,
|
||||||
UploadedAt: time.Now(),
|
UploadedAt: time.Now(),
|
||||||
Claims: map[string]interface{}{
|
Claims: map[string]interface{}{
|
||||||
"h1": "claim1",
|
"license_expires": 1712422415,
|
||||||
|
"h1": "claim1",
|
||||||
"features": map[string]int64{
|
"features": map[string]int64{
|
||||||
"f1": 1,
|
"f1": 1,
|
||||||
"f2": 2,
|
"f2": 2,
|
||||||
|
|
Loading…
Reference in New Issue