public DependencyManager(
            string requestMetadataDirectory   = null,
            IModuleProvider moduleProvider    = null,
            IDependencyManagerStorage storage = null,
            IInstalledDependenciesLocator installedDependenciesLocator = null,
            IDependencySnapshotInstaller installer = null,
            INewerDependencySnapshotDetector newerSnapshotDetector = null,
            IBackgroundDependencySnapshotMaintainer maintainer     = null,
            IBackgroundDependencySnapshotContentLogger currentSnapshotContentLogger = null,
            ILogger logger = null)
        {
            _storage = storage ?? new DependencyManagerStorage(GetFunctionAppRootPath(requestMetadataDirectory));
            _installedDependenciesLocator = installedDependenciesLocator ?? new InstalledDependenciesLocator(_storage, logger);
            var snapshotContentLogger = new PowerShellModuleSnapshotLogger();

            _installer = installer ?? new DependencySnapshotInstaller(
                moduleProvider ?? new PowerShellGalleryModuleProvider(logger),
                _storage,
                new PowerShellModuleSnapshotComparer(),
                snapshotContentLogger);
            _newerSnapshotDetector        = newerSnapshotDetector ?? new NewerDependencySnapshotDetector(_storage, new WorkerRestarter());
            _backgroundSnapshotMaintainer =
                maintainer ?? new BackgroundDependencySnapshotMaintainer(
                    _storage,
                    _installer,
                    new DependencySnapshotPurger(_storage));
            _currentSnapshotContentLogger =
                currentSnapshotContentLogger ?? new BackgroundDependencySnapshotContentLogger(snapshotContentLogger);
        }
 public DependencyManager(
     string requestMetadataDirectory   = null,
     IModuleProvider moduleProvider    = null,
     IDependencyManagerStorage storage = null,
     IInstalledDependenciesLocator installedDependenciesLocator = null,
     IDependencySnapshotInstaller installer = null,
     IDependencySnapshotPurger purger       = null)
 {
     _storage = storage ?? new DependencyManagerStorage(GetFunctionAppRootPath(requestMetadataDirectory));
     _installedDependenciesLocator = installedDependenciesLocator ?? new InstalledDependenciesLocator(_storage);
     _installer = installer ?? new DependencySnapshotInstaller(moduleProvider ?? new PowerShellGalleryModuleProvider(), _storage);
     _purger    = purger ?? new DependencySnapshotPurger(_storage);
 }