diff --git a/internal/experiment/manager.go b/internal/experiment/manager.go index 0ebb45f..b910861 100644 --- a/internal/experiment/manager.go +++ b/internal/experiment/manager.go @@ -13,6 +13,7 @@ import ( "strings" "time" + "github.com/jfraeys/fetch_ml/internal/config" "github.com/jfraeys/fetch_ml/internal/container" "github.com/jfraeys/fetch_ml/internal/fileutil" "github.com/jfraeys/fetch_ml/internal/worker/integrity" @@ -46,6 +47,13 @@ func NewManager(basePath string) *Manager { } } +// NewManagerFromPaths creates a new experiment manager using PathRegistry. +func NewManagerFromPaths(paths *config.PathRegistry) *Manager { + return &Manager{ + basePath: paths.ExperimentsDir(), + } +} + func (m *Manager) BasePath() string { if m == nil { return "" @@ -55,7 +63,9 @@ func (m *Manager) BasePath() string { // Initialize ensures the experiment directory exists func (m *Manager) Initialize() error { - if err := os.MkdirAll(m.basePath, 0o750); err != nil { + // Use PathRegistry for consistent path management + paths := config.FromEnv() + if err := paths.EnsureDir(paths.ExperimentsDir()); err != nil { return fmt.Errorf("failed to create experiment base directory: %w", err) } return nil @@ -220,6 +230,12 @@ func (m *Manager) archiveExperiment(commitID string) (string, error) { stamp := time.Now().UTC().Format("20060102-150405") archiveRoot := filepath.Join(m.basePath, "archive", stamp) + + // Use PathRegistry pattern for directory creation + paths := config.FromEnv() + if err := paths.EnsureDir(filepath.Join(paths.ExperimentsDir(), "archive")); err != nil { + return "", err + } if err := os.MkdirAll(archiveRoot, 0o750); err != nil { return "", err }