diff options
| author | Paul Buetow <paul@buetow.org> | 2025-07-12 14:24:32 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2025-07-12 14:24:32 +0300 |
| commit | f6abe615b658af4e218608bc664eba271510e599 (patch) | |
| tree | 57126f2065d7125955f4d8382ad806021177c00b | |
| parent | 327803ebe0e09b657e5dc7aa9f8d02521c164526 (diff) | |
fix: make --check-releases scan all repositories in work directory
- Previously only checked repositories listed in config (which was empty)
- Now scans all git repositories found in work directory
- Removed duplicate code for checking public repositories
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
| -rw-r--r-- | internal/cli/release.go | 150 |
1 files changed, 25 insertions, 125 deletions
diff --git a/internal/cli/release.go b/internal/cli/release.go index b47476a..97c97cd 100644 --- a/internal/cli/release.go +++ b/internal/cli/release.go @@ -22,8 +22,31 @@ func isVersionTag(tag string) bool { // HandleCheckReleases checks for version tags without releases and creates them with confirmation func HandleCheckReleases(cfg *config.Config, flags *Flags) int { - // Check all configured repositories - return HandleCheckReleasesForRepos(cfg, flags, cfg.Repositories) + // Get all repositories from work directory + entries, err := os.ReadDir(flags.WorkDir) + if err != nil { + fmt.Printf("Error reading work directory %s: %v\n", flags.WorkDir, err) + return 1 + } + + var repositories []string + for _, entry := range entries { + if entry.IsDir() { + // Check if it's a git repository + gitPath := filepath.Join(flags.WorkDir, entry.Name(), ".git") + if _, err := os.Stat(gitPath); err == nil { + repositories = append(repositories, entry.Name()) + } + } + } + + if len(repositories) == 0 { + fmt.Println("No repositories found in work directory") + return 1 + } + + fmt.Printf("Found %d repositories in work directory\n", len(repositories)) + return HandleCheckReleasesForRepos(cfg, flags, repositories) } // HandleCheckReleasesForRepo checks releases for a specific repository @@ -375,128 +398,5 @@ func HandleCheckReleasesForRepos(cfg *config.Config, flags *Flags, repositories } } - // Also check public repositories if they're synced - if flags.SyncGitHubPublic || flags.SyncCodebergPublic { - fmt.Println("\nChecking public repositories...") - - // Process synced public repos from work directory - entries, err := os.ReadDir(flags.WorkDir) - if err == nil { - for _, entry := range entries { - if !entry.IsDir() { - continue - } - - repoName := entry.Name() - repoPath := filepath.Join(flags.WorkDir, repoName) - - // Skip if it's already in configured repositories - isConfigured := false - for _, configuredRepo := range cfg.Repositories { - if configuredRepo == repoName { - isConfigured = true - break - } - } - - if isConfigured { - continue - } - - // Check if it's a git repository - if _, err := os.Stat(filepath.Join(repoPath, ".git")); os.IsNotExist(err) { - continue - } - - fmt.Printf("\nChecking releases for public repository: %s\n", repoName) - - // Get local tags - localTags, err := releaseManager.GetLocalTags(repoPath) - if err != nil { - fmt.Printf(" Error getting local tags: %v\n", err) - continue - } - - if len(localTags) == 0 { - fmt.Println(" No version tags found") - continue - } - - fmt.Printf(" Found %d version tags: %s\n", len(localTags), strings.Join(localTags, ", ")) - - // Check releases on both platforms - githubOrg := cfg.FindGitHubOrg() - if githubOrg != nil && githubOrg.Name != "" { - githubReleases, err := releaseManager.GetGitHubReleases(githubOrg.Name, repoName) - if err == nil { - missingGitHub := releaseManager.FindMissingReleases(localTags, githubReleases) - if len(missingGitHub) > 0 { - fmt.Printf(" Missing GitHub releases: %s\n", strings.Join(missingGitHub, ", ")) - - for _, tag := range missingGitHub { - // Generate release notes - releaseNotes := releaseManager.GenerateReleaseNotes(repoPath, tag, localTags) - - msg := fmt.Sprintf("Create GitHub release for %s/%s tag %s?", githubOrg.Name, repoName, tag) - - // Check if auto-create is enabled - createRelease := false - if flags.AutoCreateReleases { - fmt.Printf(" Auto-creating GitHub release for %s/%s tag %s\n", githubOrg.Name, repoName, tag) - createRelease = true - } else { - createRelease = release.PromptConfirmationWithNotes(msg, releaseNotes) - } - - if createRelease { - if err := releaseManager.CreateGitHubRelease(githubOrg.Name, repoName, tag, releaseNotes); err != nil { - fmt.Printf(" Error creating GitHub release: %v\n", err) - } else { - fmt.Printf(" Created GitHub release for tag %s\n", tag) - } - } - } - } - } - } - - codebergOrg := cfg.FindCodebergOrg() - if codebergOrg != nil && codebergOrg.Name != "" { - codebergReleases, err := releaseManager.GetCodebergReleases(codebergOrg.Name, repoName) - if err == nil { - missingCodeberg := releaseManager.FindMissingReleases(localTags, codebergReleases) - if len(missingCodeberg) > 0 { - fmt.Printf(" Missing Codeberg releases: %s\n", strings.Join(missingCodeberg, ", ")) - - for _, tag := range missingCodeberg { - // Generate release notes - releaseNotes := releaseManager.GenerateReleaseNotes(repoPath, tag, localTags) - - msg := fmt.Sprintf("Create Codeberg release for %s/%s tag %s?", codebergOrg.Name, repoName, tag) - - // Check if auto-create is enabled - createRelease := false - if flags.AutoCreateReleases { - fmt.Printf(" Auto-creating Codeberg release for %s/%s tag %s\n", codebergOrg.Name, repoName, tag) - createRelease = true - } else { - createRelease = release.PromptConfirmationWithNotes(msg, releaseNotes) - } - - if createRelease { - if err := releaseManager.CreateCodebergRelease(codebergOrg.Name, repoName, tag, releaseNotes); err != nil { - fmt.Printf(" Error creating Codeberg release: %v\n", err) - } else { - fmt.Printf(" Created Codeberg release for tag %s\n", tag) - } - } - } - } - } - } - } - } - } - return 0 }
\ No newline at end of file |
