2020-12-21 15:41:07 +00:00
|
|
|
// Copyright 2020 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"
|
2022-09-13 18:35:15 +00:00
|
|
|
"os"
|
2021-12-02 18:59:02 +00:00
|
|
|
"regexp"
|
2020-12-21 15:41:07 +00:00
|
|
|
"time"
|
|
|
|
|
|
|
|
"code.gitea.io/sdk/gitea"
|
|
|
|
"github.com/muesli/termenv"
|
2022-09-13 18:35:15 +00:00
|
|
|
"golang.org/x/crypto/ssh/terminal"
|
2020-12-21 15:41:07 +00:00
|
|
|
)
|
|
|
|
|
2022-09-13 18:35:15 +00:00
|
|
|
// IsInteractive checks if the output is piped, but NOT if the session is run interactively..
|
|
|
|
func IsInteractive() bool {
|
|
|
|
return terminal.IsTerminal(int(os.Stdout.Fd()))
|
|
|
|
}
|
|
|
|
|
2021-12-02 18:59:02 +00:00
|
|
|
// 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/")
|
|
|
|
}
|
|
|
|
|
2020-12-21 15:41:07 +00:00
|
|
|
// 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)
|
|
|
|
}
|
|
|
|
|
2022-03-28 22:37:13 +00:00
|
|
|
// 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)
|
|
|
|
}
|
|
|
|
|
2020-12-21 15:41:07 +00:00
|
|
|
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
|
|
|
|
}
|
PR listing: add --fields & expose additional fields (#415)
This PR adds the `--fields` flag to `tea pr ls` (#342), and exposes more fields specific to the `PullRequest` type:
```
--fields value, -f value Comma-separated list of fields to print.
Available values:
index,state,author,author-id,url,title,body,mergeable,base,base-commit,head,diff,patch,created,updated,deadline,assignees,milestone,labels,comments
(default: "index,title,state,author,milestone,updated,labels")
```
Co-authored-by: justusbunsi <61625851+justusbunsi@users.noreply.github.com>
Co-authored-by: Norwin <git@nroo.de>
Reviewed-on: https://gitea.com/gitea/tea/pulls/415
Reviewed-by: Norwin <noerw@noreply.gitea.io>
Reviewed-by: techknowlogick <techknowlogick@gitea.io>
Reviewed-by: 6543 <6543@obermui.de>
Co-authored-by: justusbunsi <justusbunsi@noreply.gitea.io>
Co-committed-by: justusbunsi <justusbunsi@noreply.gitea.io>
2021-09-28 20:36:33 +00:00
|
|
|
|
|
|
|
func formatBoolean(b bool, allowIcons bool) string {
|
|
|
|
if !allowIcons {
|
|
|
|
return fmt.Sprintf("%v", b)
|
|
|
|
}
|
|
|
|
|
|
|
|
styled := "✔"
|
|
|
|
if !b {
|
|
|
|
styled = "✖"
|
|
|
|
}
|
|
|
|
|
|
|
|
return styled
|
|
|
|
}
|