diff --git a/src/NzbDrone.Core/MediaFiles/DiskScanService.cs b/src/NzbDrone.Core/MediaFiles/DiskScanService.cs index 5cb9ccfae..1204e14fc 100644 --- a/src/NzbDrone.Core/MediaFiles/DiskScanService.cs +++ b/src/NzbDrone.Core/MediaFiles/DiskScanService.cs @@ -144,6 +144,25 @@ public void Scan(List folders = null, FilterFilesType filter = FilterFil { _logger.Debug("Specified scan folder ({0}) doesn't exist.", folder); + if (_configService.CreateEmptyAuthorFolders) + { + if (_configService.DeleteEmptyFolders) + { + _logger.Debug("Not creating missing author folder: {0} because delete empty series folders is enabled", folder); + } + else + { + _logger.Debug("Creating missing author folder: {0}", folder); + + _diskProvider.CreateFolder(folder); + SetPermissions(folder); + } + } + else + { + _logger.Debug("Author folder doesn't exist: {0}", rootFolder.Path); + } + CleanMediaFiles(folder, new List()); continue; } @@ -314,6 +333,24 @@ public List FilterPaths(string basePath, IEnumerable paths) .ToList(); } + private void SetPermissions(string path) + { + if (!_configService.SetPermissionsLinux) + { + return; + } + + try + { + _diskProvider.SetPermissions(path, _configService.ChmodFolder, _configService.ChownGroup); + } + catch (Exception ex) + { + _logger.Warn(ex, "Unable to apply permissions to: " + path); + _logger.Debug(ex, ex.Message); + } + } + public List FilterFiles(string basePath, IEnumerable files) { return files.Where(file => !ExcludedSubFoldersRegex.IsMatch(basePath.GetRelativePath(file.FullName)))