mirror of
				https://gitea.com/gitea/tea.git
				synced 2025-10-31 01:05:26 +01:00 
			
		
		
		
	 b868d30434
			
		
	
	b868d30434
	
	
	
		
			
			Co-authored-by: techknowlogick <hello@techknowlogick.com> Co-committed-by: techknowlogick <hello@techknowlogick.com>
		
			
				
	
	
		
			142 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			142 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright 2020 The Gitea Authors. All rights reserved.
 | |
| // SPDX-License-Identifier: MIT
 | |
| 
 | |
| package print
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	"strings"
 | |
| 	"time"
 | |
| 
 | |
| 	"code.gitea.io/sdk/gitea"
 | |
| )
 | |
| 
 | |
| // ReposList prints a listing of the repos
 | |
| func ReposList(repos []*gitea.Repository, output string, fields []string) {
 | |
| 	printables := make([]printable, len(repos))
 | |
| 	for i, r := range repos {
 | |
| 		printables[i] = &printableRepo{r}
 | |
| 	}
 | |
| 	t := tableFromItems(fields, printables, isMachineReadable(output))
 | |
| 	t.print(output)
 | |
| }
 | |
| 
 | |
| // RepoDetails print an repo formatted to stdout
 | |
| func RepoDetails(repo *gitea.Repository, topics []string) {
 | |
| 	title := "# " + repo.FullName
 | |
| 	if repo.Mirror {
 | |
| 		title += " (mirror)"
 | |
| 	}
 | |
| 	if repo.Fork {
 | |
| 		title += " (fork)"
 | |
| 	}
 | |
| 	if repo.Archived {
 | |
| 		title += " (archived)"
 | |
| 	}
 | |
| 	if repo.Empty {
 | |
| 		title += " (empty)"
 | |
| 	}
 | |
| 	title += "\n"
 | |
| 
 | |
| 	var desc string
 | |
| 	if len(repo.Description) != 0 {
 | |
| 		desc = fmt.Sprintf("*%s*\n\n", repo.Description)
 | |
| 	}
 | |
| 
 | |
| 	stats := fmt.Sprintf(
 | |
| 		"Issues: %d, Stars: %d, Forks: %d, Size: %s\n",
 | |
| 		repo.OpenIssues,
 | |
| 		repo.Stars,
 | |
| 		repo.Forks,
 | |
| 		formatSize(int64(repo.Size)),
 | |
| 	)
 | |
| 
 | |
| 	// NOTE: for mirrors, this is the time the mirror was last fetched..
 | |
| 	updated := fmt.Sprintf(
 | |
| 		"Updated: %s (%s ago)\n",
 | |
| 		repo.Updated.Format("2006-01-02 15:04"),
 | |
| 		time.Since(repo.Updated).Truncate(time.Minute),
 | |
| 	)
 | |
| 
 | |
| 	urls := fmt.Sprintf(
 | |
| 		"- Browse:\t%s\n- Clone:\t%s\n",
 | |
| 		repo.HTMLURL,
 | |
| 		repo.SSHURL,
 | |
| 	)
 | |
| 	if len(repo.Website) != 0 {
 | |
| 		urls += fmt.Sprintf("- Web:\t%s\n", repo.Website)
 | |
| 	}
 | |
| 
 | |
| 	perm := fmt.Sprintf(
 | |
| 		"- Permission:\t%s\n",
 | |
| 		formatPermission(repo.Permissions),
 | |
| 	)
 | |
| 
 | |
| 	var tops string
 | |
| 	if len(topics) != 0 {
 | |
| 		tops = fmt.Sprintf("- Topics:\t%s\n", strings.Join(topics, ", "))
 | |
| 	}
 | |
| 
 | |
| 	outputMarkdown(fmt.Sprintf(
 | |
| 		"%s%s\n%s\n%s%s%s%s",
 | |
| 		title,
 | |
| 		desc,
 | |
| 		stats,
 | |
| 		updated,
 | |
| 		urls,
 | |
| 		perm,
 | |
| 		tops,
 | |
| 	), repo.HTMLURL)
 | |
| }
 | |
| 
 | |
| // RepoFields are the available fields to print with ReposList()
 | |
| var RepoFields = []string{
 | |
| 	"description",
 | |
| 	"forks",
 | |
| 	"id",
 | |
| 	"name",
 | |
| 	"owner",
 | |
| 	"stars",
 | |
| 	"ssh",
 | |
| 	"updated",
 | |
| 	"url",
 | |
| 	"permission",
 | |
| 	"type",
 | |
| }
 | |
| 
 | |
| type printableRepo struct{ *gitea.Repository }
 | |
| 
 | |
| func (x printableRepo) FormatField(field string, machineReadable bool) string {
 | |
| 	switch field {
 | |
| 	case "description":
 | |
| 		return x.Description
 | |
| 	case "forks":
 | |
| 		return fmt.Sprintf("%d", x.Forks)
 | |
| 	case "id":
 | |
| 		return x.FullName
 | |
| 	case "name":
 | |
| 		return x.Name
 | |
| 	case "owner":
 | |
| 		return x.Owner.UserName
 | |
| 	case "stars":
 | |
| 		return fmt.Sprintf("%d", x.Stars)
 | |
| 	case "ssh":
 | |
| 		return x.SSHURL
 | |
| 	case "updated":
 | |
| 		return FormatTime(x.Updated, machineReadable)
 | |
| 	case "url":
 | |
| 		return x.HTMLURL
 | |
| 	case "permission":
 | |
| 		return formatPermission(x.Permissions)
 | |
| 	case "type":
 | |
| 		if x.Fork {
 | |
| 			return "fork"
 | |
| 		}
 | |
| 		if x.Mirror {
 | |
| 			return "mirror"
 | |
| 		}
 | |
| 		return "source"
 | |
| 	}
 | |
| 	return ""
 | |
| }
 |