private IEnumerable <string> AllMatchingFilesInFolder(string path, bool skipProjectOutputFolders = true) { if (skipProjectOutputFolders && ProjectOutputFolders.Any(p => string.Equals(Path.Combine(ProjectFolder, p), path, StringComparison.CurrentCultureIgnoreCase))) { return(new string[0]); } return (DirectoryEx .GetFilesExceptOutput(path, _pattern) .Where(p => _excludedExtensions.Contains(new FileInfo(p).Extension.ToLower()) == false)); }
protected override ConventionResult IsSatisfiedBy(string assemblyName, XDocument projectDocument) { var children = ItemGroupItem.FromProjectDocument(projectDocument).ToArray(); var projectFiles = DirectoryEx .GetFilesExceptOutput(ProjectFolder, "*") .Where(x => _fileMatchRegex.IsMatch(x)) .Select(x => x.Replace($"{ProjectFolder}\\", "")) .ToArray(); var failures = children .Where(itemGroupItem => itemGroupItem.MatchesPatternAndIsNotContentCopyNewest(_fileMatchRegex)) .Select(itemGroupItem => itemGroupItem.ToString()) .Union(projectFiles.Where(x => children.None(child => child.Include.Equals(x)))) .ToArray(); return(BuildResult(assemblyName, failures)); }
protected override ConventionResult IsSatisfiedBy(string assemblyName, XDocument projectDocument) { var children = ItemGroupItem.FromProjectDocument(projectDocument).ToArray(); var projectFiles = DirectoryEx .GetFilesExceptOutput(ProjectFolder, "*") .Where(x => _fileMatchRegex.IsMatch(x)) .Select(x => x.Replace($"{ProjectFolder}{Path.DirectorySeparatorChar}", "")) .ToArray(); var normalisedUpdates = children.Select(c => c.Update.Replace('\\', Path.DirectorySeparatorChar)); var failures = children .Where(itemGroupItem => itemGroupItem.MatchesPatternAndIsNotAnEmbeddedResource(_fileMatchRegex)) .Select(itemGroupItem => itemGroupItem.ToString()) .Union(projectFiles.Where(x => normalisedUpdates.None(update => update.Equals(x)))) .ToArray(); return(BuildResult(assemblyName, failures, "Embedded Resource")); }
public override ConventionResult IsSatisfiedBy(string solutionRoot) { var failures = new List <string>(); foreach (var filePath in DirectoryEx.GetFilesExceptOutput(solutionRoot, _fileSearchPattern).Where(x => _fileExemptions.Any(x.EndsWith) == false)) { var fileContents = File.ReadAllText(filePath); var matches = Regex.Matches( fileContents, CommentPattern.Replace("{0}", BuildPermittedComments(_permittedCommentDelimiters)), RegexOptions.IgnoreCase) .Cast <Match>() .ToArray(); if (matches.Any(x => x.Groups["badguys"].Success)) { var failureText = matches .Where(x => x.Groups["badguys"].Success) .SelectMany(x => x.Groups["badguys"].Captures.Cast <Capture>()) .Aggregate( filePath + Environment.NewLine, (current, capture) => current + "Line " + DeriveLineNumber(fileContents, capture.Index) + ": " + capture.Value) .Trim(); failures.Add(failureText); } } if (failures.Any()) { return(ConventionResult.NotSatisfied( SolutionConventionResultIdentifier, BuildFailureMessage(failures.Aggregate(string.Empty, (result, input) => result + Environment.NewLine + input).Trim()))); } return(ConventionResult.Satisfied(SolutionConventionResultIdentifier)); }