mirror of
				https://gitea.com/gitea/tea.git
				synced 2025-10-31 01:05:26 +01:00 
			
		
		
		
	Add tea whoami command (#426)
				
					
				
			The User print will be used in future for list of users for admin Co-authored-by: Matti R <matti@mdranta.net> Reviewed-on: https://gitea.com/gitea/tea/pulls/426 Reviewed-by: Norwin <noerw@noreply.gitea.io> Reviewed-by: Alexey 〒erentyev <axifive@noreply.gitea.io> Co-authored-by: techknowlogick <techknowlogick@gitea.io> Co-committed-by: techknowlogick <techknowlogick@gitea.io>
This commit is contained in:
		
							
								
								
									
										27
									
								
								cmd/whoami.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								cmd/whoami.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | |||||||
|  | // Copyright 2021 The Gitea Authors. All rights reserved. | ||||||
|  | // Use of this source code is governed by a MIT-style | ||||||
|  | // license that can be found in the LICENSE file. | ||||||
|  |  | ||||||
|  | package cmd | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"code.gitea.io/tea/modules/context" | ||||||
|  | 	"code.gitea.io/tea/modules/print" | ||||||
|  |  | ||||||
|  | 	"github.com/urfave/cli/v2" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | // CmdWhoami represents the command to show current logged in user | ||||||
|  | var CmdWhoami = cli.Command{ | ||||||
|  | 	Name:        "whoami", | ||||||
|  | 	Category:    catSetup, | ||||||
|  | 	Description: `For debugging purposes, show the user that is currently logged in.`, | ||||||
|  | 	Usage:       "Show current logged in user", | ||||||
|  | 	Action: func(cmd *cli.Context) error { | ||||||
|  | 		ctx := context.InitCommand(cmd) | ||||||
|  | 		client := ctx.Login.Client() | ||||||
|  | 		user, _, _ := client.GetMyUserInfo() | ||||||
|  | 		print.UserDetails(user) | ||||||
|  | 		return nil | ||||||
|  | 	}, | ||||||
|  | } | ||||||
							
								
								
									
										1
									
								
								main.go
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								main.go
									
									
									
									
									
								
							| @@ -35,6 +35,7 @@ func main() { | |||||||
| 		&cmd.CmdLogin, | 		&cmd.CmdLogin, | ||||||
| 		&cmd.CmdLogout, | 		&cmd.CmdLogout, | ||||||
| 		&cmd.CmdAutocomplete, | 		&cmd.CmdAutocomplete, | ||||||
|  | 		&cmd.CmdWhoami, | ||||||
|  |  | ||||||
| 		&cmd.CmdIssues, | 		&cmd.CmdIssues, | ||||||
| 		&cmd.CmdPulls, | 		&cmd.CmdPulls, | ||||||
|   | |||||||
							
								
								
									
										126
									
								
								modules/print/user.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										126
									
								
								modules/print/user.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,126 @@ | |||||||
|  | // Copyright 2021 The Gitea Authors. All rights reserved. | ||||||
|  | // Use of this source code is governed by a MIT-style | ||||||
|  | // license that can be found in the LICENSE file. | ||||||
|  |  | ||||||
|  | package print | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"fmt" | ||||||
|  |  | ||||||
|  | 	"code.gitea.io/sdk/gitea" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | // UserDetails print a formatted user to stdout | ||||||
|  | func UserDetails(user *gitea.User) { | ||||||
|  | 	title := "# " + user.UserName | ||||||
|  | 	if user.IsAdmin { | ||||||
|  | 		title += " (admin)" | ||||||
|  | 	} | ||||||
|  | 	if !user.IsActive { | ||||||
|  | 		title += " (disabled)" | ||||||
|  | 	} | ||||||
|  | 	if user.Restricted { | ||||||
|  | 		title += " (restricted)" | ||||||
|  | 	} | ||||||
|  | 	if user.ProhibitLogin { | ||||||
|  | 		title += " (login prohibited)" | ||||||
|  | 	} | ||||||
|  | 	title += "\n" | ||||||
|  |  | ||||||
|  | 	var desc string | ||||||
|  | 	if len(user.Description) != 0 { | ||||||
|  | 		desc = fmt.Sprintf("*%s*\n\n", user.Description) | ||||||
|  | 	} | ||||||
|  | 	var website string | ||||||
|  | 	if len(user.Website) != 0 { | ||||||
|  | 		website = fmt.Sprintf("%s\n\n", user.Website) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	stats := fmt.Sprintf( | ||||||
|  | 		"Follower Count: %d, Following Count: %d, Starred Repos: %d\n", | ||||||
|  | 		user.FollowerCount, | ||||||
|  | 		user.FollowingCount, | ||||||
|  | 		user.StarredRepoCount, | ||||||
|  | 	) | ||||||
|  |  | ||||||
|  | 	outputMarkdown(fmt.Sprintf( | ||||||
|  | 		"%s%s\n%s\n%s", | ||||||
|  | 		title, | ||||||
|  | 		desc, | ||||||
|  | 		website, | ||||||
|  | 		stats, | ||||||
|  | 	), "") | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // UserList prints a listing of the users | ||||||
|  | func UserList(user []*gitea.User, output string, fields []string) { | ||||||
|  | 	var printables = make([]printable, len(user)) | ||||||
|  | 	for i, u := range user { | ||||||
|  | 		printables[i] = &printableUser{u} | ||||||
|  | 	} | ||||||
|  | 	t := tableFromItems(fields, printables, isMachineReadable(output)) | ||||||
|  | 	t.print(output) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // UserFields are the available fields to print with UserList() | ||||||
|  | var UserFields = []string{ | ||||||
|  | 	"id", | ||||||
|  | 	"login", | ||||||
|  | 	"full_name", | ||||||
|  | 	"email", | ||||||
|  | 	"avatar_url", | ||||||
|  | 	"language", | ||||||
|  | 	"is_admin", | ||||||
|  | 	"restricted", | ||||||
|  | 	"prohibit_login", | ||||||
|  | 	"location", | ||||||
|  | 	"website", | ||||||
|  | 	"description", | ||||||
|  | 	"visibility", | ||||||
|  | } | ||||||
|  |  | ||||||
|  | type printableUser struct{ *gitea.User } | ||||||
|  |  | ||||||
|  | func (x printableUser) FormatField(field string, machineReadable bool) string { | ||||||
|  | 	switch field { | ||||||
|  | 	case "id": | ||||||
|  | 		return fmt.Sprintf("%d", x.ID) | ||||||
|  | 	case "login": | ||||||
|  | 		if x.IsAdmin { | ||||||
|  | 			return fmt.Sprintf("%s (admin)", x.UserName) | ||||||
|  | 		} | ||||||
|  | 		if !x.IsActive { | ||||||
|  | 			return fmt.Sprintf("%s (disabled)", x.UserName) | ||||||
|  | 		} | ||||||
|  | 		if x.Restricted { | ||||||
|  | 			return fmt.Sprintf("%s (restricted)", x.UserName) | ||||||
|  | 		} | ||||||
|  | 		if x.ProhibitLogin { | ||||||
|  | 			return fmt.Sprintf("%s (login prohibited)", x.UserName) | ||||||
|  | 		} | ||||||
|  | 		return x.UserName | ||||||
|  | 	case "full_name": | ||||||
|  | 		return x.FullName | ||||||
|  | 	case "email": | ||||||
|  | 		return x.Email | ||||||
|  | 	case "avatar_url": | ||||||
|  | 		return x.AvatarURL | ||||||
|  | 	case "language": | ||||||
|  | 		return x.Language | ||||||
|  | 	case "is_admin": | ||||||
|  | 		return formatBoolean(x.IsAdmin, !machineReadable) | ||||||
|  | 	case "restricted": | ||||||
|  | 		return formatBoolean(x.Restricted, !machineReadable) | ||||||
|  | 	case "prohibit_login": | ||||||
|  | 		return formatBoolean(x.ProhibitLogin, !machineReadable) | ||||||
|  | 	case "location": | ||||||
|  | 		return x.Location | ||||||
|  | 	case "website": | ||||||
|  | 		return x.Website | ||||||
|  | 	case "description": | ||||||
|  | 		return x.Description | ||||||
|  | 	case "visibility": | ||||||
|  | 		return string(x.Visibility) | ||||||
|  | 	} | ||||||
|  | 	return "" | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user
	 techknowlogick
					techknowlogick