using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace UnrealBuildTool
{
///
/// Static directory methods. Contains a superset of functionality to the System.IO.Directory namespace, but takes FileReference and DirectoryReference parameters.
///
public static class DirectoryExtensions
{
///
/// Creates the directory
///
public static void CreateDirectory(DirectoryReference Location)
{
Directory.CreateDirectory(Location.FullName);
}
///
/// Removes the given directory
///
public static void Delete(DirectoryReference Location)
{
Directory.Delete(Location.FullName);
}
///
/// Removes the given directory
///
public static void Delete(DirectoryReference Location, bool bRecursive)
{
Directory.Delete(Location.FullName, bRecursive);
}
///
/// Checks whether a directory exists
///
/// Directory to check
/// True if the directory exists, false otherwise
public static bool Exists(DirectoryReference Location)
{
return Directory.Exists(Location.FullName);
}
///
/// Enumerate files from a given directory
///
/// Sequence of file references
public static IEnumerable EnumerateFiles(DirectoryReference Location)
{
foreach (string FileName in Directory.EnumerateFiles(Location.FullName))
{
yield return FileReference.MakeFromNormalizedFullPath(FileName);
}
}
///
/// Enumerate files from a given directory
///
/// Sequence of file references
public static IEnumerable EnumerateFiles(DirectoryReference Location, string Pattern)
{
foreach (string FileName in Directory.EnumerateFiles(Location.FullName, Pattern))
{
yield return FileReference.MakeFromNormalizedFullPath(FileName);
}
}
///
/// Enumerate files from a given directory
///
/// Sequence of file references
public static IEnumerable EnumerateFiles(DirectoryReference Location, string Pattern, SearchOption Option)
{
foreach (string FileName in Directory.EnumerateFiles(Location.FullName, Pattern, Option))
{
yield return FileReference.MakeFromNormalizedFullPath(FileName);
}
}
///
/// Enumerate subdirectories in a given directory
///
/// Sequence of directory references
public static IEnumerable EnumerateDirectories(DirectoryReference Location)
{
foreach (string DirectoryName in Directory.EnumerateDirectories(Location.FullName))
{
yield return DirectoryReference.MakeFromNormalizedFullPath(DirectoryName);
}
}
///
/// Enumerate subdirectories in a given directory
///
/// Sequence of directory references
public static IEnumerable EnumerateDirectories(DirectoryReference Location, string Pattern)
{
foreach (string DirectoryName in Directory.EnumerateDirectories(Location.FullName, Pattern))
{
yield return DirectoryReference.MakeFromNormalizedFullPath(DirectoryName);
}
}
///
/// Enumerate subdirectories in a given directory
///
/// Sequence of directory references
public static IEnumerable EnumerateDirectories(DirectoryReference Location, string Pattern, SearchOption Option)
{
foreach (string DirectoryName in Directory.EnumerateDirectories(Location.FullName, Pattern, Option))
{
yield return DirectoryReference.MakeFromNormalizedFullPath(DirectoryName);
}
}
}
}