2 Commits

Author SHA1 Message Date
f0c6f3906a fix print statements 2024-02-02 16:28:41 -08:00
01c736b54e fixup clone error 2024-02-02 16:24:06 -08:00
2 changed files with 9 additions and 4 deletions

1
cmd/mg/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
main

View File

@@ -40,14 +40,16 @@ var (
for i := 0; i < jobs; i++ { for i := 0; i < jobs; i++ {
go func() { go func() {
for repo := range repoChan { for repo := range repoChan {
_, err := git.PlainOpenWithOptions(repo.Remote, &(git.PlainOpenOptions{DetectDotGit: true})) _, err := git.PlainOpenWithOptions(repo.Path, &(git.PlainOpenOptions{DetectDotGit: true}))
if err == nil { if err == nil {
log.Printf("already cloned: %s\n", repo.Path) log.Printf("already cloned: %s\n", repo.Path)
mutex.Lock() mutex.Lock()
alreadyCloned++ alreadyCloned++
mutex.Unlock() mutex.Unlock()
wg.Done()
continue
} else if err == git.ErrRepositoryNotExists { } else if err == git.ErrRepositoryNotExists {
log.Printf("attempting clone: %s\n", repo) log.Printf("attempting clone: %s\n", repo.Path)
_, err = git.PlainClone(repo.Path, false, &git.CloneOptions{ _, err = git.PlainClone(repo.Path, false, &git.CloneOptions{
URL: repo.Remote, URL: repo.Remote,
}) })
@@ -59,24 +61,26 @@ var (
wg.Done() wg.Done()
continue continue
} }
fmt.Printf("successfully cloned %s\n", repo) fmt.Printf("successfully cloned %s\n", repo.Path)
wg.Done() wg.Done()
continue continue
} else { } else {
mutex.Lock() mutex.Lock()
errs = append(errs, RepoError{Error: err, Repo: repo.Path}) errs = append(errs, RepoError{Error: err, Repo: repo.Path})
mutex.Unlock() mutex.Unlock()
log.Printf("clone failed for %s: %v\n", repo, err) log.Printf("clone failed for %s: %v\n", repo.Path, err)
wg.Done() wg.Done()
continue continue
} }
} }
}() }()
} }
fmt.Println(len(conf.Repos))
for _, repo := range conf.Repos { for _, repo := range conf.Repos {
repoChan <- repo repoChan <- repo
} }
close(repoChan) close(repoChan)
fmt.Println("waiting...")
wg.Wait() wg.Wait()
for _, err := range errs { for _, err := range errs {
log.Printf("error pulling %s: %s\n", err.Repo, err.Error) log.Printf("error pulling %s: %s\n", err.Repo, err.Error)