diff --git a/remote/github/github.go b/remote/github/github.go index 694cf9535..bcce1b48c 100644 --- a/remote/github/github.go +++ b/remote/github/github.go @@ -261,10 +261,11 @@ func (c *client) Dir(u *model.User, r *model.Repo, b *model.Build, f string) ([] content, err := c.File(u, r, b, path) if err != nil { errc <- err - } - fc <- &remote.FileMeta{ - Name: path, - Data: content, + } else { + fc <- &remote.FileMeta{ + Name: path, + Data: content, + } } }(f + "/" + *file.Name) } @@ -275,12 +276,16 @@ func (c *client) Dir(u *model.User, r *model.Repo, b *model.Build, f string) ([] go func() { for { select { - case err := <-errc: - errors = append(errors, err) - wg.Done() - case fileMeta := <-fc: - files = append(files, fileMeta) - wg.Done() + case err, open := <-errc: + if open { + errors = append(errors, err) + wg.Done() + } + case fileMeta, open := <-fc: + if open { + files = append(files, fileMeta) + wg.Done() + } } } }() diff --git a/server/configFetcher.go b/server/configFetcher.go index 6ca48a4de..2df321b9b 100644 --- a/server/configFetcher.go +++ b/server/configFetcher.go @@ -18,17 +18,17 @@ func (cf *configFetcher) Fetch() ([]*remote.FileMeta, error) { for i := 0; i < 5; i++ { select { case <-time.After(time.Second * time.Duration(i)): - file, err := cf.remote_.File(cf.user, cf.repo, cf.build, cf.repo.Config) // either a file - if err == nil { + file, fileerr := cf.remote_.File(cf.user, cf.repo, cf.build, cf.repo.Config) // either a file + if fileerr == nil { return []*remote.FileMeta{&remote.FileMeta{ Name: cf.repo.Config, Data: file, }}, nil } - dir, err := cf.remote_.Dir(cf.user, cf.repo, cf.build, cf.repo.Config) // or a folder - if err != nil { - return nil, err + dir, direrr := cf.remote_.Dir(cf.user, cf.repo, cf.build, ".drone") // or a folder + if direrr != nil { + return nil, direrr } return dir, nil }