GiteaCleaner/remove_empty_accounts.go

62 lines
1.3 KiB
Go

package main
import (
"fmt"
"bufio"
"os"
"code.gitea.io/sdk/gitea"
)
func main() {
client, _ := gitea.NewClient("_REPO_", gitea.SetToken("_TOKEN_"))
users_to_delete := []*gitea.User{}
users, _, _ := client.SearchUsers(gitea.SearchUsersOption{
ListOptions: gitea.ListOptions{
PageSize: 100,
},
})
for _, user := range users {
repos, _, _ := client.ListUserRepos( user.UserName, gitea.ListReposOptions{
ListOptions: gitea.ListOptions{
PageSize: 100,
},
})
orgs, _, _ := client.ListUserOrgs( user.UserName, gitea.ListOrgsOptions{
ListOptions: gitea.ListOptions{
PageSize: 100,
},
})
all_repos, _, _ := client.SearchRepos( gitea.SearchRepoOptions{
ListOptions: gitea.ListOptions{
PageSize: 100,
},
})
is_collaborator := false
for _, x := range all_repos {
result, _, _ := client.IsCollaborator(x.Owner.UserName, x.Name, user.UserName)
if result {
is_collaborator = true
}
}
if user.StarredRepoCount == 0 && len(repos) == 0 && len(orgs) == 0 && !is_collaborator {
fmt.Printf("%+v - %+v\n", user.UserName, user.FullName)
users_to_delete = append(users_to_delete, user)
}
}
fmt.Print("These okay to delete? [y/n] ")
input := bufio.NewScanner(os.Stdin)
input.Scan()
fmt.Println(input.Text())
for _, x := range users_to_delete {
client.AdminDeleteUser(x.UserName)
}
}