public void DeleteDirectoriesUnderPath() { var testRoot = Path.Combine(Path.GetTempPath(), "Glob", "PathTraverserTests", "DeleteDirectoriesUnderPath"); try { CreateFiles(testRoot, "ab/bin/a.cs ab/bin/sub/a.cs a/taco.cs b/taco.cs b/ab/a/hat.taco"); // Verify files exist before Assert.True(File.Exists(Path.Combine(testRoot, "a/taco.cs"))); Assert.True(File.Exists(Path.Combine(testRoot, "b/taco.cs"))); Assert.True(File.Exists(Path.Combine(testRoot, "b/ab/a/hat.taco"))); Assert.True(File.Exists(Path.Combine(testRoot, "ab/bin/a.cs"))); Assert.True(File.Exists(Path.Combine(testRoot, "ab/bin/sub/a.cs"))); foreach (var dir in Glob.Directories(testRoot, "**/bin")) { var path = Path.Combine(testRoot, dir); Directory.Delete(path, true); } // Verify bin folder was deleted but nothing else Assert.True(File.Exists(Path.Combine(testRoot, "a/taco.cs"))); Assert.True(File.Exists(Path.Combine(testRoot, "b/taco.cs"))); Assert.True(File.Exists(Path.Combine(testRoot, "b/ab/a/hat.taco"))); Assert.False(File.Exists(Path.Combine(testRoot, "ab/bin/a.cs"))); Assert.False(File.Exists(Path.Combine(testRoot, "ab/bin/sub/a.cs"))); } finally { // Cleanup test Directory.Delete(testRoot, true); } }
public void StarStarDirectories() { Action <string> AssertEqual(string expected) => actual => Assert.Equal(expected, actual); var testRoot = Path.Combine(Path.GetTempPath(), "Glob", "PathTraverserTests", "StarStarDirectories"); try { CreateFiles(testRoot, "ab/bin/a.cs ab/bin/sub/a.cs a/taco.cs b/taco.cs b/ab/a/hat.taco"); // Verify files exist before Assert.True(File.Exists(Path.Combine(testRoot, "a/taco.cs"))); Assert.True(File.Exists(Path.Combine(testRoot, "ab/bin/a.cs"))); Assert.True(File.Exists(Path.Combine(testRoot, "ab/bin/sub/a.cs"))); Assert.True(File.Exists(Path.Combine(testRoot, "b/ab/a/hat.taco"))); Assert.True(File.Exists(Path.Combine(testRoot, "b/taco.cs"))); Assert.Collection(Glob.Directories(testRoot, "**").OrderBy(x => x), AssertEqual(""), AssertEqual("a"), AssertEqual("ab"), AssertEqual(Path.Combine("ab", "bin")), AssertEqual(Path.Combine("ab", "bin", "sub")), AssertEqual("b"), AssertEqual(Path.Combine("b", "ab")), AssertEqual(Path.Combine("b", "ab", "a")) ); } finally { // Cleanup test Directory.Delete(testRoot, true); } }
static void Main(string[] args) { Target(Clean, ForEach("**/bin", "**/obj"), dir => { IEnumerable <string> GetDirectories(string d) { return(Glob.Directories(".", d)); } void RemoveDirectory(string d) { if (Directory.Exists(d)) { Console.WriteLine(d); Directory.Delete(d, true); } } foreach (var d in GetDirectories(dir)) { RemoveDirectory(d); } }); Target(Build, ForEach("net46", "netstandard2.0", "netstandard2.1"), framework => { if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows) && framework == "net46") { return; } Run("dotnet", "build src/SharpCompress/SharpCompress.csproj -c Release"); }); Target(Test, DependsOn(Build), ForEach("netcoreapp3.1"), framework => { IEnumerable <string> GetFiles(string d) { return(Glob.Files(".", d)); } foreach (var file in GetFiles("**/*.Test.csproj")) { Run("dotnet", $"test {file} -c Release -f {framework} --no-restore --no-build"); } }); Target(Publish, DependsOn(Test), () => { Run("dotnet", "pack src/SharpCompress/SharpCompress.csproj -c Release -o artifacts/"); }); Target("default", DependsOn(Publish), () => Console.WriteLine("Done!")); RunTargetsAndExit(args); }
public IEnumerable <string> GetDirectories(IEnumerable <Pattern> patterns) { var root = new DirectoryInfo(Root); return(patterns .Where(p => !string.IsNullOrWhiteSpace(p.Value)) .Select(p => p.Value.Replace("\\", "/")) .Select(p => Glob.Directories(root, p, GlobOptions.CaseInsensitive | GlobOptions.Compiled)) .SelectMany(p => p) .Select(p => p.FullName)); }
static void Main(string[] args) { Target(Clean, ForEach("publish", "**/bin", "**/obj"), dir => { IEnumerable <string> GetDirectories(string d) { return(Glob.Directories(".", d)); } void RemoveDirectory(string d) { if (Directory.Exists(d)) { Console.WriteLine($"Cleaning {d}"); Directory.Delete(d, true); } } foreach (var d in GetDirectories(dir)) { RemoveDirectory(d); } }); Target(Build, () => Run("dotnet", "build . -c Release")); Target(Test, DependsOn(Build), () => { IEnumerable <string> GetFiles(string d) { return(Glob.Files(".", d)); } foreach (var file in GetFiles("tests/**/*.csproj")) { Run("dotnet", $"test {file} -c Release --no-restore --no-build --verbosity=normal"); } }); Target(Publish, DependsOn(Test), ForEach("src/Conduit"), project => { Run("dotnet", $"publish {project} -c Release -f netcoreapp3.1 -o ./publish --no-restore --no-build --verbosity=normal"); }); Target("default", DependsOn(Publish), () => Console.WriteLine("Done!")); RunTargetsAndExit(args); }
/// <summary> /// Finds the directories matching the specified globs. /// </summary> /// <param name="directory">The starting directory.</param> /// <param name="globs">The globs to match.</param> /// <returns>The paths of the matching directories.</returns> public static IReadOnlyList <string> FindDirectoriesFrom(string directory, params string[] globs) { if (directory == null) { throw new ArgumentNullException(nameof(directory)); } if (globs == null) { throw new ArgumentNullException(nameof(globs)); } return(globs.SelectMany(glob => Glob.Directories(directory, glob, GlobOptions.CaseInsensitive)).Distinct().Select(path => Path.Combine(directory, path)).ToList()); }
/// <summary> /// Finds the directories matching the specified globs. /// </summary> /// <param name="directory">The starting directory.</param> /// <param name="globs">The globs to match.</param> /// <returns>The paths of the matching directories.</returns> public static IReadOnlyList <string> FindDirectoriesFrom(string directory, params string[] globs) => globs.SelectMany(glob => Glob.Directories(directory, glob, GlobOptions.CaseInsensitive)).Distinct().Select(path => Path.Combine(directory, path)).ToList();
public static IReadOnlyCollection <string> GlobDirectories(string directory, params string[] patterns) { var directoryInfo = new DirectoryInfo(directory); return(patterns.SelectMany(x => Glob.Directories(directoryInfo, x, GlobOptions)).Select(x => x.FullName).ToList()); }
static IEnumerable <string> GetDirectories(string d) { return(Glob.Directories(".", d)); }
private static IEnumerable <BiDirectory> FindPatternMatchedDirectories() { return(Glob.Directories(Directory.GetCurrentDirectory(), "**/*.enc") .Select(path => new BiDirectory(path))); }
/// <summary> /// Gets all directories matching glob pattern. /// </summary> /// <param name="context"></param> /// <param name="directory"></param> /// <param name="globPattern"></param> /// <returns></returns> public static List <FullPath> GetDirectories(string directory, GlobOptions globOptions = GlobOptions.None, params string[] globPattern) { var directoryInfo = new DirectoryInfo(directory); return(globPattern.SelectMany(pattern => Glob.Directories(directoryInfo, pattern, globOptions)).Select(x => new FullPath(x.FullName)).ToList()); }