public void BeforeCompile(IBeforeCompileContext context) { JObject rawProjectFile = null; using (var fs = File.OpenRead(context.ProjectContext.ProjectFilePath)) { rawProjectFile = JObject.Load(new JsonTextReader(new StreamReader(fs))); } var excludePatterns = PatternsCollectionHelper.GetPatternsCollection( rawProjectFile, context.ProjectContext.ProjectDirectory, context.ProjectContext.ProjectFilePath, "exclude", DefaultExcludePatterns); var matcher = new Matcher(); matcher.AddInclude("**/*.resx").AddExcludePatterns(excludePatterns); var resXFiles = matcher.GetResultsInFullPath(context.ProjectContext.ProjectDirectory); foreach (var resXFile in resXFiles) { WriteResourceFile(resXFile); } }
public bool Build() { var projectFilesFinder = new Matcher(); // Resolve all the project names var projectFilesToBuild = new List<string>(); foreach(var pattern in _buildOptions.ProjectPatterns) { if (pattern.Contains("*")) { // Requires globbing projectFilesFinder.AddInclude(NormalizeGlobbingPattern(pattern)); } else { projectFilesToBuild.Add(pattern); } } var rootDirectory = Directory.GetCurrentDirectory(); var patternSearchFolder = new DirectoryInfoWrapper(new DirectoryInfo(rootDirectory)); var globbingProjects = projectFilesFinder.Execute(patternSearchFolder).Files.Select(file => Path.Combine(rootDirectory, file)); projectFilesToBuild.AddRange(globbingProjects); var sw = Stopwatch.StartNew(); _cacheContextAccessor = new CacheContextAccessor(); _cache = new Cache(_cacheContextAccessor); var globalSucess = true; foreach (var project in projectFilesToBuild) { var buildSuccess = BuildInternal(project); globalSucess &= buildSuccess; } _buildOptions.Reports.Information.WriteLine($"Total build time elapsed: { sw.Elapsed }"); _buildOptions.Reports.Information.WriteLine($"Total projects built: { projectFilesToBuild.Count }"); return globalSucess; }