1
0
mirror of https://github.com/woodpecker-ci/woodpecker.git synced 2024-12-12 08:23:48 +02:00
woodpecker/server/configFetcher.go

48 lines
1.1 KiB
Go
Raw Normal View History

package server
import (
"time"
"github.com/laszlocph/drone-oss-08/model"
"github.com/laszlocph/drone-oss-08/remote"
2019-06-13 18:09:25 +02:00
"sort"
)
type configFetcher struct {
remote_ remote.Remote
user *model.User
repo *model.Repo
build *model.Build
}
func (cf *configFetcher) Fetch() ([]*remote.FileMeta, error) {
for i := 0; i < 5; i++ {
select {
case <-time.After(time.Second * time.Duration(i)):
2019-06-05 10:08:49 +02:00
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
}
2019-06-05 10:08:49 +02:00
dir, direrr := cf.remote_.Dir(cf.user, cf.repo, cf.build, ".drone") // or a folder
if direrr != nil {
return nil, direrr
}
2019-06-13 18:09:25 +02:00
sort.Sort(byName(dir))
return dir, nil
}
}
return []*remote.FileMeta{}, nil
}
2019-06-13 18:09:25 +02:00
type byName []*remote.FileMeta
func (a byName) Len() int { return len(a) }
func (a byName) Less(i, j int) bool { return a[i].Name < a[j].Name }
func (a byName) Swap(i, j int) { a[i], a[j] = a[j], a[i] }