From 53e3ea15c9417c036c33cff44cc32d15c89a5942 Mon Sep 17 00:00:00 2001 From: David Fowler Date: Sun, 9 Mar 2014 14:01:45 -0700 Subject: [PATCH] Added support for excludes in project.json files. --- build/_k-generate-projects.shade | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/build/_k-generate-projects.shade b/build/_k-generate-projects.shade index 07b9048535..5b45b90f7c 100644 --- a/build/_k-generate-projects.shade +++ b/build/_k-generate-projects.shade @@ -225,21 +225,26 @@ functions const string contentTemplate = @""; // Build the list of resx files - var resxFileNames = FindFilesOfType(projectDir, "*.resx"); + var resxFileNames = Files.Include(Path.Combine(projectDir, "**", "*.resx")); var resxDesignerFiles = new HashSet(resxFileNames.Select(f => Path.ChangeExtension(f, "Designer.cs")), StringComparer.OrdinalIgnoreCase); var resxFiles = String.Join(Environment.NewLine, - resxFileNames.Select(p => String.Format(resxTemplate, p, projectName, Path.GetFileNameWithoutExtension(p)))); + resxFileNames.Select(p => String.Format(resxTemplate, Path.Combine("..", "..", p), projectName, Path.GetFileNameWithoutExtension(p)))); - // Build the list of cs files - var csFiles - = String.Join(Environment.NewLine, - FindFilesOfType(projectDir, "*.cs") - .Select(p => resxDesignerFiles.Contains(p) - ? String.Format(resxDesignerTemplate, p, Path.GetFileNameWithoutExtension(p).Replace(".Designer", "")) - : String.Format(csTemplate, p))); + var sourcePattern = Get(d, "code") ?? @"**\*.cs"; + var sourceExcludePattern = Get(d, "exclude") ?? ""; + var objPath = Path.Combine(projectDir, "obj"); + var objPattern = Directory.Exists(objPath) ? Path.Combine(objPath, "**", "*.*") : projectDir; + + var csFiles = String.Join(Environment.NewLine, Files.Include(Path.Combine(projectDir, sourcePattern)) + .Exclude(Path.Combine(projectDir, sourceExcludePattern)) + .Exclude(objPattern) + .Select(p => resxDesignerFiles.Contains(p) + ? String.Format(resxDesignerTemplate, Path.Combine("..", "..", p), Path.GetFileNameWithoutExtension(p).Replace(".Designer", "")) + : String.Format(csTemplate, Path.Combine("..", "..", p)))); + var contentFileExtensions = new [] { "*.cshtml",