45 lines
1 KiB
Go
45 lines
1 KiB
Go
package worker
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
|
|
"gitlab.com/slon/shad-go/distbuild/pkg/api"
|
|
"gitlab.com/slon/shad-go/distbuild/pkg/artifact"
|
|
"gitlab.com/slon/shad-go/distbuild/pkg/build"
|
|
"gitlab.com/slon/shad-go/distbuild/pkg/filecache"
|
|
)
|
|
|
|
func (w *Worker) downloadFiles(ctx context.Context, files map[build.ID]string) error {
|
|
for id := range files {
|
|
_, unlock, err := w.fileCache.Get(id)
|
|
if errors.Is(err, filecache.ErrNotFound) {
|
|
if err = w.fileClient.Download(ctx, w.fileCache, id); err != nil {
|
|
return err
|
|
}
|
|
} else if err != nil {
|
|
return err
|
|
} else {
|
|
unlock()
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (w *Worker) downloadArtifacts(ctx context.Context, artifacts map[build.ID]api.WorkerID) error {
|
|
for id, worker := range artifacts {
|
|
_, unlock, err := w.artifacts.Get(id)
|
|
if errors.Is(err, artifact.ErrNotFound) {
|
|
if err = artifact.Download(ctx, worker.String(), w.artifacts, id); err != nil {
|
|
return err
|
|
}
|
|
} else if err != nil {
|
|
return err
|
|
} else {
|
|
unlock()
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|