github.com/kubri/kubri@v0.5.1-0.20240317001612-bda2aaef967e/source/file/file.go (about)

     1  package file
     2  
     3  import (
     4  	"net/url"
     5  	"path/filepath"
     6  
     7  	_ "gocloud.dev/blob/fileblob" // blob driver
     8  
     9  	"github.com/kubri/kubri/internal/blob"
    10  	"github.com/kubri/kubri/source"
    11  )
    12  
    13  type Config struct {
    14  	Path string
    15  	URL  string
    16  }
    17  
    18  func New(c Config) (*source.Source, error) {
    19  	path, err := filepath.Abs(c.Path)
    20  	if err != nil {
    21  		return nil, err
    22  	}
    23  	url, _ := url.JoinPath("file:///", filepath.ToSlash(path))
    24  	if c.URL == "" {
    25  		c.URL = url
    26  	}
    27  	return blob.NewSource(url, "", c.URL)
    28  }