diff --git a/cmd/main.go b/cmd/main.go index a87a7d0..4e47997 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -348,12 +348,18 @@ func main() { } setupLog.Info("Func CLI is ready") + gitManager, err := git.NewManager() + if err != nil { + setupLog.Error(err, "failed to initialize git manager") + os.Exit(1) + } + if err := (&controller.FunctionReconciler{ Client: mgr.GetClient(), Scheme: mgr.GetScheme(), Recorder: mgr.GetEventRecorder("functions-controller"), FuncCliManager: funcCLIManager, - GitManager: git.NewManager(), + GitManager: gitManager, OperatorNamespace: operatorNamespace, }).SetupWithManager(mgr); err != nil { setupLog.Error(err, "unable to create controller", "controller", "Function") diff --git a/internal/git/manager.go b/internal/git/manager.go index 337cce5..9ad9645 100644 --- a/internal/git/manager.go +++ b/internal/git/manager.go @@ -23,8 +23,11 @@ type Manager interface { CloneRepository(ctx context.Context, url, subPath, reference string, auth map[string][]byte) (*Repository, error) } -func NewManager() Manager { - return &managerImpl{} +func NewManager() (Manager, error) { + if err := os.MkdirAll(cloneBaseDir, 0755); err != nil { + return nil, fmt.Errorf("failed to create git clone base directory: %w", err) + } + return &managerImpl{}, nil } type managerImpl struct{}