Exemple #1
0
    public void Dispose()
    {
        foreach (var item in _dir.EnumerateFiles(recursive: true))
        {
            var info      = new FileInfo(item.Path);
            var cleanTime = _clean switch
            {
                CleanType.AccessTime => info.LastAccessTime,
                CleanType.WriteTime => info.LastWriteTime,
                CleanType.CreationTime => info.CreationTime,
                _ => throw new NotImplementedException(),
            };
            if (info.LastAccessTime < _startTime)
            {
                item.Delete();
            }
        }

        foreach (var item in _dir
                 .EnumerateDirectories(recursive: true, includeSelf: true)
                 .Reverse())
        {
            if (item.Empty)
            {
                item.DeleteEntireFolder();
            }
        }
    }
Exemple #2
0
        private static IEnumerable <FilePath> GetApplicableArchivePathsInternal(GameRelease release, DirectoryPath dataFolderPath, ModKey?modKey, IComparer <FileName>?archiveOrdering)
        {
            if (modKey.HasValue && modKey.Value.IsNull)
            {
                return(Enumerable.Empty <FilePath>());
            }

            var ret = dataFolderPath.EnumerateFiles(searchPattern: $"*{GetExtension(release)}");

            if (modKey != null)
            {
                var iniListedArchives = GetIniListings(release).ToHashSet();
                ret = ret
                      .Where(archive =>
                {
                    if (iniListedArchives.Contains(archive.Name))
                    {
                        return(true);
                    }
                    return(IsApplicable(release, modKey.Value, archive.Name));
                });
            }
            if (archiveOrdering != null)
            {
                return(ret.OrderBy(x => x.Name, archiveOrdering));
            }
            return(ret);
        }
Exemple #3
0
 public static bool FoldersAreEqual(DirectoryPath first, DirectoryPath second)
 {
     return(first.EnumerateFiles(recursive: true)
            .SequenceEqual(
                second.EnumerateFiles(recursive: true),
                comp));
 }
Exemple #4
0
        public static void ListPackageVersionInformation(DirectoryPath versionDirectoryPath, TextWriter writer)
        {
            var nuspecSearchPattern = SearchPattern.AllFilesWithFileExtension(NuspecFileExtension.Instance);

            var nuspecFilePath = versionDirectoryPath.EnumerateFiles(nuspecSearchPattern).First().AsNuspecFilePath(); // TODO: check whether any entries, ensure only one entry.

            LocalDirectoryNugetRepository.ListPackageVersionInformationNuspec(nuspecFilePath, writer);
        }
Exemple #5
0
        /// <summary>
        /// Gets the path of the <see cref="FileExtensions.Nuspec"/> file in the directory.
        /// </summary>
        public static NuspecFilePath GetNuspecFilePath(DirectoryPath versionDirectoryPath)
        {
            var searchPattern   = SearchPattern.AllFilesWithFileExtension(FileExtensions.Nuspec);
            var nuspecFilePaths = versionDirectoryPath.EnumerateFiles(searchPattern).ToArray();

            if (nuspecFilePaths.Length < 1)
            {
                throw new IOException($"No {FileExtensions.Nuspec} file found in version directory: {versionDirectoryPath}");
            }

            if (nuspecFilePaths.Length > 1)
            {
                throw new IOException($"More than one {FileExtensions.Nuspec} file found in version directory: {versionDirectoryPath}");
            }

            var nuspecFilePath = nuspecFilePaths.First().AsNuspecFilePath();

            return(nuspecFilePath);
        }