Only search through non-hidden files in a few places.

This commit is contained in:
Ottermandias 2023-04-12 16:26:00 +02:00
parent a88332d3bc
commit 2bf80dfa6b
4 changed files with 8 additions and 6 deletions

@ -1 +1 @@
Subproject commit 39e24baebcb450ccd1e7103fd428ee3020c28702 Subproject commit 377890671cba2e9edb8e792be3bf8f0a84a8b741

View file

@ -4,6 +4,7 @@ using System.IO;
using System.Linq; using System.Linq;
using System.Threading; using System.Threading;
using Microsoft.Win32; using Microsoft.Win32;
using OtterGui;
using Penumbra.String.Classes; using Penumbra.String.Classes;
namespace Penumbra.Mods; namespace Penumbra.Mods;
@ -113,7 +114,7 @@ public class ModFileCollection : IDisposable
tok.ThrowIfCancellationRequested(); tok.ThrowIfCancellationRequested();
ClearFiles(); ClearFiles();
foreach (var file in mod.ModPath.EnumerateDirectories().SelectMany(d => d.EnumerateFiles("*.*", SearchOption.AllDirectories))) foreach (var file in mod.ModPath.EnumerateDirectories().Where(d => !d.IsHidden()).SelectMany(FileExtensions.EnumerateNonHiddenFiles))
{ {
tok.ThrowIfCancellationRequested(); tok.ThrowIfCancellationRequested();
if (!FileRegistry.FromFile(mod.ModPath, file, out var registry)) if (!FileRegistry.FromFile(mod.ModPath, file, out var registry))

View file

@ -6,6 +6,7 @@ using System.Text;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using OtterGui;
using OtterGui.Filesystem; using OtterGui.Filesystem;
using Penumbra.Api.Enums; using Penumbra.Api.Enums;
using Penumbra.Import.Structs; using Penumbra.Import.Structs;
@ -98,7 +99,7 @@ internal static partial class ModCreator
/// <summary> Create the data for a given sub mod from its data and the folder it is based on. </summary> /// <summary> Create the data for a given sub mod from its data and the folder it is based on. </summary>
public static ISubMod CreateSubMod( DirectoryInfo baseFolder, DirectoryInfo optionFolder, OptionList option ) public static ISubMod CreateSubMod( DirectoryInfo baseFolder, DirectoryInfo optionFolder, OptionList option )
{ {
var list = optionFolder.EnumerateFiles( "*.*", SearchOption.AllDirectories ) var list = optionFolder.EnumerateNonHiddenFiles()
.Select( f => ( Utf8GamePath.FromFile( f, optionFolder, out var gamePath, true ), gamePath, new FullPath( f ) ) ) .Select( f => ( Utf8GamePath.FromFile( f, optionFolder, out var gamePath, true ), gamePath, new FullPath( f ) ) )
.Where( t => t.Item1 ); .Where( t => t.Item1 );

View file

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using OtterGui;
using Penumbra.Api.Enums; using Penumbra.Api.Enums;
using Penumbra.Meta.Manipulations; using Penumbra.Meta.Manipulations;
using Penumbra.String.Classes; using Penumbra.String.Classes;
@ -40,9 +41,8 @@ public partial class Mod
{ {
var modFiles = AllFiles.ToHashSet(); var modFiles = AllFiles.ToHashSet();
return ModPath.EnumerateDirectories() return ModPath.EnumerateDirectories()
.Where(d => !d.Attributes.HasFlag( FileAttributes.Hidden ) ) .Where(d => !d.IsHidden())
.SelectMany(f => f.EnumerateFiles("*", SearchOption.AllDirectories)) .SelectMany(FileExtensions.EnumerateNonHiddenFiles)
.Where( f => !f.Attributes.HasFlag( FileAttributes.Hidden ) )
.Select(f => new FullPath(f)) .Select(f => new FullPath(f))
.Where(f => !modFiles.Contains(f)) .Where(f => !modFiles.Contains(f))
.ToList(); .ToList();