Exemplo n.º 1
0
        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));
        }
Exemplo n.º 3
0
        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"));
        }
Exemplo n.º 4
0
        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));
        }