summaryrefslogtreecommitdiff
path: root/internal/cli
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2025-07-15 08:06:39 +0300
committerPaul Buetow <paul@buetow.org>2025-07-15 08:06:39 +0300
commite23fc252fbac2aba69f1f1268af9425af4d43d19 (patch)
treeab430228b3ecb0d5a1d292b124c7f10cd6a91892 /internal/cli
parent47456d20d8b55a7f67668f7f1faae6fef16062dd (diff)
add vibe coding info
Diffstat (limited to 'internal/cli')
-rw-r--r--internal/cli/sync_handlers.go43
1 files changed, 43 insertions, 0 deletions
diff --git a/internal/cli/sync_handlers.go b/internal/cli/sync_handlers.go
index d87d771..1878808 100644
--- a/internal/cli/sync_handlers.go
+++ b/internal/cli/sync_handlers.go
@@ -21,6 +21,14 @@ func HandleSync(cfg *config.Config, flags *Flags) int {
}
}
+ // If create-codeberg-repos is enabled, create the repo if needed
+ if flags.CreateCodebergRepos {
+ if err := createCodebergRepoIfNeeded(cfg, flags.SyncRepo); err != nil {
+ fmt.Printf("ERROR: %v\n", err)
+ return 1
+ }
+ }
+
syncer := sync.New(cfg, flags.WorkDir)
syncer.SetBackupEnabled(flags.Backup)
if err := syncer.SyncRepository(flags.SyncRepo); err != nil {
@@ -47,6 +55,16 @@ func HandleSyncAll(cfg *config.Config, flags *Flags) int {
}
}
+ // Initialize Codeberg client if needed
+ var codebergClient codeberg.Client
+ var hasCodebergClient bool
+ if flags.CreateCodebergRepos {
+ if client := initCodebergClient(cfg); client != nil {
+ codebergClient = *client
+ hasCodebergClient = true
+ }
+ }
+
syncer := sync.New(cfg, flags.WorkDir)
syncer.SetBackupEnabled(flags.Backup)
successCount := 0
@@ -63,6 +81,14 @@ func HandleSyncAll(cfg *config.Config, flags *Flags) int {
}
}
+ // Create Codeberg repo if needed
+ if hasCodebergClient {
+ fmt.Printf("Checking/creating Codeberg repository %s...\n", repo)
+ if err := codebergClient.CreateRepo(repo, fmt.Sprintf("Mirror of %s", repo), false); err != nil {
+ fmt.Printf("Warning: Failed to create Codeberg repo %s: %v\n", repo, err)
+ }
+ }
+
if err := syncer.SyncRepository(repo); err != nil {
fmt.Printf("ERROR: Failed to sync %s: %v\n", repo, err)
fmt.Printf("Stopping sync due to error.\n")
@@ -225,6 +251,23 @@ func createGitHubRepoIfNeeded(cfg *config.Config, repoName string) error {
return githubClient.CreateRepo(repoName, fmt.Sprintf("Mirror of %s", repoName), false)
}
+func createCodebergRepoIfNeeded(cfg *config.Config, repoName string) error {
+ codebergOrg := cfg.FindCodebergOrg()
+ if codebergOrg == nil {
+ return nil
+ }
+
+ fmt.Printf("Initializing Codeberg client for organization: %s\n", codebergOrg.Name)
+ codebergClient := codeberg.NewClient(codebergOrg.Name, codebergOrg.CodebergToken)
+ if !codebergClient.HasToken() {
+ fmt.Println("Warning: No Codeberg token found. Cannot create repository.")
+ return nil
+ }
+
+ fmt.Println("Checking/creating Codeberg repository...")
+ return codebergClient.CreateRepo(repoName, fmt.Sprintf("Mirror of %s", repoName), false)
+}
+
func initGitHubClient(cfg *config.Config) *github.Client {
githubOrg := cfg.FindGitHubOrg()
if githubOrg == nil {