100 lines
1.7 KiB
Go
100 lines
1.7 KiB
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"time"
|
|
|
|
"code.gitea.io/sdk/gitea"
|
|
"github.com/facebookgo/flagenv"
|
|
_ "github.com/joho/godotenv/autoload"
|
|
)
|
|
|
|
var (
|
|
token = flag.String("gitea-token", "", "Gitea API token")
|
|
server = flag.String("gitea-server", "https://tulpa.dev", "Gitea server")
|
|
)
|
|
|
|
func main() {
|
|
flagenv.Parse()
|
|
flag.Parse()
|
|
|
|
if *token == "" {
|
|
log.Fatal("need -gitea-token")
|
|
}
|
|
|
|
cli, err := gitea.NewClient(*server, gitea.SetToken(*token))
|
|
if err != nil {
|
|
log.Fatalf("error logging in: %v", err)
|
|
}
|
|
|
|
var repos []*gitea.Repository
|
|
var np int
|
|
|
|
for {
|
|
mRepos, _, err := cli.ListMyRepos(gitea.ListReposOptions{
|
|
ListOptions: gitea.ListOptions{
|
|
Page: np,
|
|
PageSize: 50,
|
|
},
|
|
})
|
|
if err != nil {
|
|
log.Fatalf("can't get page %d: %v", err)
|
|
}
|
|
|
|
repos = append(repos, mRepos...)
|
|
|
|
log.Printf("got info on %d repos", len(repos))
|
|
|
|
if len(mRepos) < 50 {
|
|
break
|
|
}
|
|
np++
|
|
}
|
|
|
|
for _, repo := range repos {
|
|
if repo.Private || repo.Archived {
|
|
continue
|
|
}
|
|
|
|
name := repo.Name
|
|
desc := repo.Description
|
|
refn := repo.CloneURL
|
|
creat := repo.Created.Format(time.RFC3339)
|
|
lastm := repo.Updated.Format(time.RFC3339)
|
|
|
|
const blurb = `name: ${name}
|
|
description: ${desc}
|
|
reference number: ${refn}
|
|
date of creation: ${creat}
|
|
date of last modification: ${lastm}
|
|
other owners: none
|
|
`
|
|
|
|
mapping := func(inp string) string {
|
|
switch inp {
|
|
case "name":
|
|
return name
|
|
case "desc":
|
|
if desc == "" {
|
|
return "no description available"
|
|
}
|
|
|
|
return desc
|
|
case "refn":
|
|
return refn
|
|
case "creat":
|
|
return creat
|
|
case "lastm":
|
|
return lastm
|
|
}
|
|
|
|
return "<unknown input " + inp + ">"
|
|
}
|
|
|
|
fmt.Println(os.Expand(blurb, mapping))
|
|
}
|
|
}
|