sync/reorder: add error cases, remove debug messaging

This commit is contained in:
mappu 2022-12-31 14:27:55 +13:00
parent 1e2ad32d54
commit 5430f503e0

23
sync.go
View File

@ -2,6 +2,7 @@ package main
import ( import (
"context" "context"
"fmt"
"log" "log"
"sort" "sort"
"teafolio/gitea" "teafolio/gitea"
@ -9,10 +10,10 @@ import (
) )
// rearrangeOrder applies rearrangements from the OverrideOrder configuration. // rearrangeOrder applies rearrangements from the OverrideOrder configuration.
func (this *Application) rearrangeOrder(repos []gitea.Repo) []gitea.Repo { func (this *Application) rearrangeOrder(repos []gitea.Repo) ([]gitea.Repo, error) {
if len(this.cfg.OverrideOrder) == 0 { if len(this.cfg.OverrideOrder) == 0 {
return repos // nothing to do return repos, nil // nothing to do
} }
// Collect pre-existing positions for repos // Collect pre-existing positions for repos
@ -35,8 +36,6 @@ func (this *Application) rearrangeOrder(repos []gitea.Repo) []gitea.Repo {
return insertAt[i].pos < insertAt[j].pos return insertAt[i].pos < insertAt[j].pos
}) })
log.Printf("insertAt=%#v\n", insertAt)
// Walking-insertion loop // Walking-insertion loop
ret := make([]gitea.Repo, 0, len(repos)) ret := make([]gitea.Repo, 0, len(repos))
nextRepo := 0 nextRepo := 0
@ -44,7 +43,6 @@ func (this *Application) rearrangeOrder(repos []gitea.Repo) []gitea.Repo {
for { for {
if nextOverride < len(insertAt) && insertAt[nextOverride].pos == len(ret) { if nextOverride < len(insertAt) && insertAt[nextOverride].pos == len(ret) {
// We have an override to insert at this position // We have an override to insert at this position
log.Printf("OVERRIDE insert of %q", insertAt[nextOverride].repoName)
ret = append(ret, reposByName[insertAt[nextOverride].repoName]) ret = append(ret, reposByName[insertAt[nextOverride].repoName])
nextOverride++ nextOverride++
@ -52,12 +50,10 @@ func (this *Application) rearrangeOrder(repos []gitea.Repo) []gitea.Repo {
// There are still other repos to insert generally // There are still other repos to insert generally
if _, ok := this.cfg.OverrideOrder[repos[nextRepo].Name]; ok { if _, ok := this.cfg.OverrideOrder[repos[nextRepo].Name]; ok {
// This repo has an overridden position. Don't insert it generally here // This repo has an overridden position. Don't insert it generally here
log.Printf("skipping natural insert of %q", repos[nextRepo].Name)
nextRepo++ nextRepo++
} else { } else {
// This repo does not have an overriden position. Here is fine // This repo does not have an overriden position. Here is fine
log.Printf("OK natural insert of %q", repos[nextRepo].Name)
ret = append(ret, repos[nextRepo]) ret = append(ret, repos[nextRepo])
nextRepo++ nextRepo++
} }
@ -70,7 +66,11 @@ func (this *Application) rearrangeOrder(repos []gitea.Repo) []gitea.Repo {
} }
} }
return ret if len(ret) != len(repos) {
return nil, fmt.Errorf("Failed to apply OverrideOrder (got %d of %d repositories)", len(ret), len(repos))
}
return ret, nil
} }
func (this *Application) sync(ctx context.Context) (bool, error) { func (this *Application) sync(ctx context.Context) (bool, error) {
@ -144,7 +144,12 @@ func (this *Application) sync(ctx context.Context) (bool, error) {
sort.Slice(repos, func(i, j int) bool { sort.Slice(repos, func(i, j int) bool {
return repos[i].GiteaCreated.After(repos[j].GiteaCreated) return repos[i].GiteaCreated.After(repos[j].GiteaCreated)
}) })
repos = this.rearrangeOrder(repos) reordered, err := this.rearrangeOrder(repos)
if err != nil {
log.Printf("Reorder failure: %s", err.Error())
} else {
repos = reordered
}
// Commit our changes for the other threads to look at // Commit our changes for the other threads to look at
this.reposMut.Lock() this.reposMut.Lock()