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); } } } }