mirror of
				https://gitea.com/gitea/tea.git
				synced 2025-10-31 09:15:26 +01:00 
			
		
		
		
	 449b2e3117
			
		
	
	449b2e3117
	
	
	
		
			
			Fix `tea releases assets <tag_name>` displayed wrong attachment size. Reviewed-on: https://gitea.com/gitea/tea/pulls/787 Reviewed-by: techknowlogick <techknowlogick@noreply.gitea.com> Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com> Co-committed-by: Lunny Xiao <xiaolunwen@gmail.com>
		
			
				
	
	
		
			112 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			112 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright 2020 The Gitea Authors. All rights reserved.
 | |
| // SPDX-License-Identifier: MIT
 | |
| 
 | |
| package print
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	"os"
 | |
| 	"regexp"
 | |
| 	"time"
 | |
| 
 | |
| 	"code.gitea.io/sdk/gitea"
 | |
| 	"github.com/muesli/termenv"
 | |
| 	"golang.org/x/term"
 | |
| )
 | |
| 
 | |
| // IsInteractive checks if the output is piped, but NOT if the session is run interactively..
 | |
| func IsInteractive() bool {
 | |
| 	return term.IsTerminal(int(os.Stdout.Fd()))
 | |
| }
 | |
| 
 | |
| // captures the repo URL part <host>/<owner>/<repo> of an url
 | |
| var repoURLRegex = regexp.MustCompile("^([[:alnum:]]+://[^/]+(?:/[[:alnum:]]+){2})/.*")
 | |
| 
 | |
| func getRepoURL(resourceURL string) string {
 | |
| 	return repoURLRegex.ReplaceAllString(resourceURL, "$1/")
 | |
| }
 | |
| 
 | |
| // formatSize get kb in int and return string
 | |
| func formatSize(kb int64) string {
 | |
| 	if kb < 1024 {
 | |
| 		return fmt.Sprintf("%d KB", kb)
 | |
| 	}
 | |
| 	mb := kb / 1024
 | |
| 	if mb < 1024 {
 | |
| 		return fmt.Sprintf("%d MB", mb)
 | |
| 	}
 | |
| 	gb := mb / 1024
 | |
| 	if gb < 1024 {
 | |
| 		return fmt.Sprintf("%d GB", gb)
 | |
| 	}
 | |
| 	return fmt.Sprintf("%d TB", gb/1024)
 | |
| }
 | |
| 
 | |
| // FormatTime provides a string for the given time value.
 | |
| // If machineReadable is set, a UTC RFC3339 string is returned,
 | |
| // otherwise a simplified string in local time is used.
 | |
| func FormatTime(t time.Time, machineReadable bool) string {
 | |
| 	if t.IsZero() {
 | |
| 		return ""
 | |
| 	}
 | |
| 
 | |
| 	if machineReadable {
 | |
| 		return t.UTC().Format(time.RFC3339)
 | |
| 	}
 | |
| 
 | |
| 	location, err := time.LoadLocation("Local")
 | |
| 	if err != nil {
 | |
| 		return t.Format("2006-01-02 15:04 UTC")
 | |
| 	}
 | |
| 	return t.In(location).Format("2006-01-02 15:04")
 | |
| }
 | |
| 
 | |
| func formatDuration(seconds int64, outputType string) string {
 | |
| 	if isMachineReadable(outputType) {
 | |
| 		return fmt.Sprint(seconds)
 | |
| 	}
 | |
| 	return time.Duration(1e9 * seconds).String()
 | |
| }
 | |
| 
 | |
| func formatLabel(label *gitea.Label, allowColor bool, text string) string {
 | |
| 	colorProfile := termenv.Ascii
 | |
| 	if allowColor {
 | |
| 		colorProfile = termenv.EnvColorProfile()
 | |
| 	}
 | |
| 	if len(text) == 0 {
 | |
| 		text = label.Name
 | |
| 	}
 | |
| 	styled := termenv.String(text)
 | |
| 	styled = styled.Foreground(colorProfile.Color("#" + label.Color))
 | |
| 	return fmt.Sprint(styled)
 | |
| }
 | |
| 
 | |
| func formatPermission(p *gitea.Permission) string {
 | |
| 	if p.Admin {
 | |
| 		return "admin"
 | |
| 	} else if p.Push {
 | |
| 		return "write"
 | |
| 	}
 | |
| 	return "read"
 | |
| }
 | |
| 
 | |
| func formatUserName(u *gitea.User) string {
 | |
| 	if len(u.FullName) == 0 {
 | |
| 		return u.UserName
 | |
| 	}
 | |
| 	return u.FullName
 | |
| }
 | |
| 
 | |
| func formatBoolean(b bool, allowIcons bool) string {
 | |
| 	if !allowIcons {
 | |
| 		return fmt.Sprintf("%v", b)
 | |
| 	}
 | |
| 
 | |
| 	styled := "✔"
 | |
| 	if !b {
 | |
| 		styled = "✖"
 | |
| 	}
 | |
| 
 | |
| 	return styled
 | |
| }
 |