summaryrefslogtreecommitdiff
path: root/internal/cli/description_sync.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/cli/description_sync.go')
-rw-r--r--internal/cli/description_sync.go185
1 files changed, 92 insertions, 93 deletions
diff --git a/internal/cli/description_sync.go b/internal/cli/description_sync.go
index ae275ce..4904b56 100644
--- a/internal/cli/description_sync.go
+++ b/internal/cli/description_sync.go
@@ -1,113 +1,112 @@
package cli
import (
- "fmt"
- "strings"
+ "fmt"
+ "strings"
- "codeberg.org/snonux/gitsyncer/internal/codeberg"
- "codeberg.org/snonux/gitsyncer/internal/config"
- "codeberg.org/snonux/gitsyncer/internal/github"
+ "codeberg.org/snonux/gitsyncer/internal/codeberg"
+ "codeberg.org/snonux/gitsyncer/internal/config"
+ "codeberg.org/snonux/gitsyncer/internal/github"
)
// syncRepoDescriptions ensures both platforms have the canonical description
// Precedence: Codeberg > GitHub; if Codeberg empty and GitHub has one, use GitHub.
// knownCBDesc and knownGHDesc can be empty; the function fetches as needed.
func syncRepoDescriptions(cfg *config.Config, dryRun bool, repoName, knownCBDesc, knownGHDesc string, cache map[string]string) {
- // Load orgs
- ghOrg := cfg.FindGitHubOrg()
- cbOrg := cfg.FindCodebergOrg()
+ // Load orgs
+ ghOrg := cfg.FindGitHubOrg()
+ cbOrg := cfg.FindCodebergOrg()
- var ghClient *github.Client
- var cbClient *codeberg.Client
- if ghOrg != nil {
- c := github.NewClient(ghOrg.GitHubToken, ghOrg.Name)
- ghClient = &c
- }
- if cbOrg != nil {
- c := codeberg.NewClient(cbOrg.Name, cbOrg.CodebergToken)
- cbClient = &c
- }
+ var ghClient *github.Client
+ var cbClient *codeberg.Client
+ if ghOrg != nil {
+ c := github.NewClient(ghOrg.GitHubToken, ghOrg.Name)
+ ghClient = &c
+ }
+ if cbOrg != nil {
+ c := codeberg.NewClient(cbOrg.Name, cbOrg.CodebergToken)
+ cbClient = &c
+ }
- // Get current descriptions (use known if provided)
- cbDesc := strings.TrimSpace(knownCBDesc)
- ghDesc := strings.TrimSpace(knownGHDesc)
- var cbExists, ghExists bool
+ // Get current descriptions (use known if provided)
+ cbDesc := strings.TrimSpace(knownCBDesc)
+ ghDesc := strings.TrimSpace(knownGHDesc)
+ var cbExists, ghExists bool
- if cbDesc == "" && cbClient != nil {
- if repo, exists, err := cbClient.GetRepo(repoName); err == nil {
- cbExists = exists
- if exists {
- cbDesc = strings.TrimSpace(repo.Description)
- }
- } else {
- fmt.Printf(" Warning: Codeberg repo lookup failed: %v\n", err)
- }
- } else if cbClient != nil {
- cbExists = true
- }
+ if cbDesc == "" && cbClient != nil {
+ if repo, exists, err := cbClient.GetRepo(repoName); err == nil {
+ cbExists = exists
+ if exists {
+ cbDesc = strings.TrimSpace(repo.Description)
+ }
+ } else {
+ fmt.Printf(" Warning: Codeberg repo lookup failed: %v\n", err)
+ }
+ } else if cbClient != nil {
+ cbExists = true
+ }
- if ghClient != nil {
- if ghDesc == "" || !ghExists {
- if repo, exists, err := ghClient.GetRepo(repoName); err == nil {
- ghExists = exists
- if exists {
- ghDesc = strings.TrimSpace(repo.Description)
- }
- } else {
- fmt.Printf(" Warning: GitHub repo lookup failed: %v\n", err)
- }
- }
- }
+ if ghClient != nil {
+ if ghDesc == "" || !ghExists {
+ if repo, exists, err := ghClient.GetRepo(repoName); err == nil {
+ ghExists = exists
+ if exists {
+ ghDesc = strings.TrimSpace(repo.Description)
+ }
+ } else {
+ fmt.Printf(" Warning: GitHub repo lookup failed: %v\n", err)
+ }
+ }
+ }
- // Determine canonical description
- canonical := cbDesc
- if canonical == "" {
- canonical = ghDesc
- }
- canonical = strings.TrimSpace(canonical)
+ // Determine canonical description
+ canonical := cbDesc
+ if canonical == "" {
+ canonical = ghDesc
+ }
+ canonical = strings.TrimSpace(canonical)
- // If nothing to sync, bail
- if canonical == "" {
- return
- }
+ // If nothing to sync, bail
+ if canonical == "" {
+ return
+ }
- // Update Codeberg if needed
- if cbClient != nil && cbExists {
- if cbDesc != canonical {
- if dryRun {
- fmt.Printf(" [DRY RUN] Would update Codeberg description for %s -> %q\n", repoName, canonical)
- } else if cbClient.HasToken() {
- if err := cbClient.UpdateRepoDescription(repoName, canonical); err != nil {
- fmt.Printf(" Warning: Failed to update Codeberg description: %v\n", err)
- } else {
- fmt.Printf(" Updated Codeberg description for %s\n", repoName)
- }
- } else {
- fmt.Println(" Warning: No Codeberg token; cannot update description")
- }
- }
- }
+ // Update Codeberg if needed
+ if cbClient != nil && cbExists {
+ if cbDesc != canonical {
+ if dryRun {
+ fmt.Printf(" [DRY RUN] Would update Codeberg description for %s -> %q\n", repoName, canonical)
+ } else if cbClient.HasToken() {
+ if err := cbClient.UpdateRepoDescription(repoName, canonical); err != nil {
+ fmt.Printf(" Warning: Failed to update Codeberg description: %v\n", err)
+ } else {
+ fmt.Printf(" Updated Codeberg description for %s\n", repoName)
+ }
+ } else {
+ fmt.Println(" Warning: No Codeberg token; cannot update description")
+ }
+ }
+ }
- // Update GitHub if needed
- if ghClient != nil && ghExists {
- if ghDesc != canonical {
- if dryRun {
- fmt.Printf(" [DRY RUN] Would update GitHub description for %s -> %q\n", repoName, canonical)
- } else if ghClient.HasToken() {
- if err := ghClient.UpdateRepoDescription(repoName, canonical); err != nil {
- fmt.Printf(" Warning: Failed to update GitHub description: %v\n", err)
- } else {
- fmt.Printf(" Updated GitHub description for %s\n", repoName)
- }
- } else {
- fmt.Println(" Warning: No GitHub token; cannot update description")
- }
- }
- }
+ // Update GitHub if needed
+ if ghClient != nil && ghExists {
+ if ghDesc != canonical {
+ if dryRun {
+ fmt.Printf(" [DRY RUN] Would update GitHub description for %s -> %q\n", repoName, canonical)
+ } else if ghClient.HasToken() {
+ if err := ghClient.UpdateRepoDescription(repoName, canonical); err != nil {
+ fmt.Printf(" Warning: Failed to update GitHub description: %v\n", err)
+ } else {
+ fmt.Printf(" Updated GitHub description for %s\n", repoName)
+ }
+ } else {
+ fmt.Println(" Warning: No GitHub token; cannot update description")
+ }
+ }
+ }
- // Update cache
- if cache != nil {
- cache[repoName] = canonical
- }
+ // Update cache
+ if cache != nil {
+ cache[repoName] = canonical
+ }
}
-