cluster: make domain, basedir and cluster name public fields

Signed-off-by: Alejandro Mery <amery@jpi.io>
This commit is contained in:
2023-09-10 21:38:07 +00:00
parent 828d95aa3b
commit 3e45a56cd1
4 changed files with 41 additions and 37 deletions
+23 -25
View File
@@ -73,7 +73,7 @@ func WithLogger(log slog.Logger) ScanOption {
}
}
func (m *Cluster) setDefaults(opt *ScanOptions) error {
func (m *Cluster) setScanDefaults(opt *ScanOptions) error {
if m.resolver == nil {
h := DefaultLookuper()
@@ -91,43 +91,41 @@ func (m *Cluster) setDefaults(opt *ScanOptions) error {
return nil
}
// NewFS builds a [Cluster] tree using the given directory
func NewFS(dir fs.FS, domain string, opts ...ScanOption) (*Cluster, error) {
// NewFromDirectory builds a [Cluster] tree using the given directory
func NewFromDirectory(dir, domain string, opts ...ScanOption) (*Cluster, error) {
var scanOptions ScanOptions
z := &Cluster{
dir: dir,
domain: domain,
dir = filepath.Clean(dir)
fullPath, err := filepath.Abs(dir)
if err != nil {
return nil, err
}
sub, err := os.NewFS().Sub(fullPath[1:])
if err != nil {
return nil, err
}
m := &Cluster{
dir: sub,
BaseDir: dir,
Name: filepath.Base(fullPath),
Domain: domain,
}
for _, opt := range opts {
if err := opt(z, &scanOptions); err != nil {
if err := opt(m, &scanOptions); err != nil {
return nil, err
}
}
if err := z.setDefaults(&scanOptions); err != nil {
if err := m.setScanDefaults(&scanOptions); err != nil {
return nil, err
}
if err := z.scan(&scanOptions); err != nil {
if err := m.scan(&scanOptions); err != nil {
return nil, err
}
return z, nil
}
// New builds a [Cluster] tree using the given directory
func New(dir, domain string, opts ...ScanOption) (*Cluster, error) {
dir, err := filepath.Abs(dir)
if err != nil {
return nil, err
}
base, err := os.NewFS().Sub(dir[1:])
if err != nil {
return nil, err
}
return NewFS(base, domain, opts...)
return m, nil
}