Handling channel close

This commit is contained in:
Laszlo Fogas 2019-06-05 10:08:49 +02:00
parent 302f07da3c
commit 435083db9e
2 changed files with 20 additions and 15 deletions

View file

@ -261,11 +261,12 @@ 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
}
} else {
fc <- &remote.FileMeta{
Name: path,
Data: content,
}
}
}(f + "/" + *file.Name)
}
@ -275,14 +276,18 @@ func (c *client) Dir(u *model.User, r *model.Repo, b *model.Build, f string) ([]
go func() {
for {
select {
case err := <-errc:
case err, open := <-errc:
if open {
errors = append(errors, err)
wg.Done()
case fileMeta := <-fc:
}
case fileMeta, open := <-fc:
if open {
files = append(files, fileMeta)
wg.Done()
}
}
}
}()
wg.Wait()

View file

@ -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
}