in commands/token/list/list.go [148:251]
func listRun(opts *ListOpts) error {
httpClient, err := opts.HTTPClient()
if err != nil {
return err
}
var apiTokens any
var outputTokens Tokens
switch {
case opts.User != "":
user, err := api.UserByName(httpClient, opts.User)
if err != nil {
return err
}
options := &gitlab.ListPersonalAccessTokensOptions{
UserID: &user.ID,
}
tokens, err := api.ListPersonalAccessTokens(httpClient, options)
if err != nil {
return err
}
apiTokens = tokens
outputTokens = make([]Token, 0, len(tokens))
for _, token := range tokens {
if !opts.ListActive || token.Active {
outputTokens = append(outputTokens, Token{
ID: strconv.FormatInt(int64(token.ID), 10),
Name: token.Name,
Description: formatDescription(token.Description),
AccessLevel: "-",
Active: strconv.FormatBool(token.Active),
Revoked: strconv.FormatBool(token.Revoked),
CreatedAt: token.CreatedAt.Format(time.RFC3339),
ExpiresAt: formatExpiresAt(token.ExpiresAt),
LastUsedAt: formatLastUsedAt(token.LastUsedAt),
Scopes: strings.Join(token.Scopes, ","),
})
}
}
case opts.Group != "":
options := &gitlab.ListGroupAccessTokensOptions{}
tokens, err := api.ListGroupAccessTokens(httpClient, opts.Group, options)
if err != nil {
return err
}
apiTokens = tokens
outputTokens = make([]Token, 0, len(tokens))
for _, token := range tokens {
if !opts.ListActive || token.Active {
outputTokens = append(outputTokens, Token{
ID: strconv.FormatInt(int64(token.ID), 10),
Name: token.Name,
Description: formatDescription(token.Description),
AccessLevel: formatAccessLevel(token.AccessLevel),
Active: strconv.FormatBool(token.Active),
Revoked: strconv.FormatBool(token.Revoked),
CreatedAt: token.CreatedAt.Format(time.RFC3339),
ExpiresAt: formatExpiresAt(token.ExpiresAt),
LastUsedAt: formatLastUsedAt(token.LastUsedAt),
Scopes: strings.Join(token.Scopes, ","),
})
}
}
default:
repo, err := opts.BaseRepo()
if err != nil {
return err
}
tokens, err := api.ListProjectAccessTokens(httpClient, repo.FullName(), &gitlab.ListProjectAccessTokensOptions{})
if err != nil {
return err
}
apiTokens = tokens
outputTokens = make([]Token, 0, len(tokens))
for _, token := range tokens {
if !opts.ListActive || token.Active {
outputTokens = append(outputTokens, Token{
ID: strconv.FormatInt(int64(token.ID), 10),
Name: token.Name,
Description: formatDescription(token.Description),
AccessLevel: formatAccessLevel(token.AccessLevel),
Active: strconv.FormatBool(token.Active),
Revoked: strconv.FormatBool(token.Revoked),
CreatedAt: token.CreatedAt.Format(time.RFC3339),
ExpiresAt: formatExpiresAt(token.ExpiresAt),
LastUsedAt: formatLastUsedAt(token.LastUsedAt),
Scopes: strings.Join(token.Scopes, ","),
})
}
}
}
if opts.OutputFormat == "json" {
encoder := json.NewEncoder(opts.IO.StdOut)
if err := encoder.Encode(apiTokens); err != nil {
return err
}
} else {
table := createTablePrinter(outputTokens)
opts.IO.LogInfof("%s", table.String())
}
return nil
}