InSkipCollection and MakeHiddenIfAllItemsAreHidden

This commit is contained in:
2023-03-26 12:20:28 -07:00
parent bea7a172c5
commit 7b33fbe050
7 changed files with 75 additions and 10 deletions

View File

@ -80,13 +80,15 @@ public class MappingFromFilter : Properties.IMappingFromFilter
public bool? IsFocusModel { init; get; }
public bool? IsFocusRelativePath { init; get; }
public bool? IsIgnoreRelativePath { init; get; }
public bool? InSkipCollection { init; get; }
[JsonConstructor]
public MappingFromFilter(bool? isFocusModel, bool? isFocusRelativePath, bool? isIgnoreRelativePath)
public MappingFromFilter(bool? isFocusModel, bool? isFocusRelativePath, bool? isIgnoreRelativePath, bool? inSkipCollection)
{
IsFocusModel = isFocusModel;
IsFocusRelativePath = isFocusRelativePath;
IsIgnoreRelativePath = isIgnoreRelativePath;
InSkipCollection = inSkipCollection;
}
public override string ToString()

View File

@ -19,6 +19,7 @@ public interface IMappingFromFilter
public bool? IsFocusModel { init; get; }
public bool? IsFocusRelativePath { init; get; }
public bool? IsIgnoreRelativePath { init; get; }
public bool? InSkipCollection { init; get; }
}

View File

@ -18,6 +18,11 @@ public interface IPath
static void ChangeDateForEmptyDirectories(string rootDirectory, long ticks) =>
XPath.ChangeDateForEmptyDirectories(rootDirectory, ticks);
void TestStatic_MakeHiddenIfAllItemsAreHidden(string rootDirectory) =>
MakeHiddenIfAllItemsAreHidden(rootDirectory);
static void MakeHiddenIfAllItemsAreHidden(string rootDirectory) =>
XPath.MakeHiddenIfAllItemsAreHidden(rootDirectory);
void TestStatic_DeleteEmptyDirectories(string rootDirectory, List<string> deletedDirectories) =>
DeleteEmptyDirectories(rootDirectory, deletedDirectories);
static void DeleteEmptyDirectories(string rootDirectory, List<string> deletedDirectories) =>

View File

@ -190,4 +190,46 @@ internal abstract class XPath
}
}
internal static void MakeHiddenIfAllItemsAreHidden(string rootDirectory)
{
bool check;
FileInfo fileInfo;
IEnumerable<string> files;
DirectoryInfo directoryInfo;
IEnumerable<string> subDirectories;
string[] directories = Directory.GetDirectories(rootDirectory, "*", SearchOption.AllDirectories);
foreach (string directory in directories)
{
directoryInfo = new(directory);
if (directoryInfo.Attributes.HasFlag(FileAttributes.Hidden))
continue;
check = true;
subDirectories = Directory.EnumerateDirectories(directory, "*", SearchOption.TopDirectoryOnly);
foreach (string subDirectory in subDirectories)
{
directoryInfo = new(subDirectory);
if (!directoryInfo.Attributes.HasFlag(FileAttributes.Hidden))
{
check = false;
break;
}
}
if (!check)
continue;
files = Directory.EnumerateFiles(directory, "*", SearchOption.TopDirectoryOnly);
foreach (string file in files)
{
fileInfo = new(file);
if (!fileInfo.Attributes.HasFlag(FileAttributes.Hidden))
{
check = false;
break;
}
}
if (!check)
continue;
directoryInfo.Attributes |= FileAttributes.Hidden;
}
}
}