github.com/filecoin-project/bacalhau@v0.3.23-0.20230228154132-45c989550ace/pkg/downloader/util/utils.go (about)

     1  package util
     2  
     3  import (
     4  	"os"
     5  	"strings"
     6  
     7  	"github.com/filecoin-project/bacalhau/pkg/downloader"
     8  	"github.com/filecoin-project/bacalhau/pkg/downloader/estuary"
     9  	"github.com/filecoin-project/bacalhau/pkg/downloader/ipfs"
    10  	"github.com/filecoin-project/bacalhau/pkg/model"
    11  	"github.com/filecoin-project/bacalhau/pkg/system"
    12  )
    13  
    14  func NewDownloadSettings() *model.DownloaderSettings {
    15  	settings := model.DownloaderSettings{
    16  		Timeout: model.DefaultIPFSTimeout,
    17  		// we leave this blank so the CLI will auto-create a job folder in pwd
    18  		OutputDir:      "",
    19  		IPFSSwarmAddrs: "",
    20  	}
    21  	if os.Getenv("BACALHAU_IPFS_SWARM_ADDRESSES") != "" {
    22  		settings.IPFSSwarmAddrs = os.Getenv("BACALHAU_IPFS_SWARM_ADDRESSES")
    23  	} else {
    24  		settings.IPFSSwarmAddrs = strings.Join(system.Envs[system.GetEnvironment()].IPFSSwarmAddresses, ",")
    25  	}
    26  	return &settings
    27  }
    28  
    29  func NewStandardDownloaders(
    30  	cm *system.CleanupManager,
    31  	settings *model.DownloaderSettings) downloader.DownloaderProvider {
    32  	ipfsDownloader := ipfs.NewIPFSDownloader(cm, settings)
    33  	estuaryDownloader := estuary.NewEstuaryDownloader(cm, settings)
    34  
    35  	return model.NewMappedProvider(map[model.StorageSourceType]downloader.Downloader{
    36  		model.StorageSourceIPFS:    ipfsDownloader,
    37  		model.StorageSourceEstuary: estuaryDownloader,
    38  	})
    39  }