public static IEnumerable FindFiles()

in src/common/details/helpers/file_helpers.cs [97:159]


        public static IEnumerable<string> FindFiles(string fileNames, INamedValues? values = null, bool checkOverrides = true, bool checkResources = true, bool httpLinksOk = false)
        {
            var currentDir = Directory.GetCurrentDirectory();
            foreach (var item in fileNames.Split(new char[] { ';', '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries))
            {
                if (checkOverrides)
                {
                    var overrides = FindOverrides(item);
                    foreach (var name in overrides)
                    {
                        yield return name;
                    }
                }

                if (checkResources)
                {
                    var resources = FindResources(item);
                    foreach (var resource in resources)
                    {
                        yield return resource;
                    }
                }

                var isHttpLink = item.StartsWith("http://") || item.StartsWith("https://");
                if (isHttpLink && httpLinksOk)
                {
                    yield return item;
                    continue;
                }

                if (IsResource(item) || IsOverride(item)) continue;

                if (Program.Debug) Console.WriteLine($"  Searching for files '{fileNames}'");

                var i1 = item.LastIndexOf(Path.DirectorySeparatorChar);
                var i2 = item.LastIndexOf(Path.AltDirectorySeparatorChar);
                var hasPath = i1 >= 0 || i2 >= 0;

                var pathLen = Math.Max(i1, i2);
                var path = !hasPath ? currentDir : item.Substring(0, pathLen);
                var pattern = !hasPath ? item : item.Substring(pathLen + 1);

                EnumerationOptions? recursiveOptions = null;
                if (path.EndsWith("**"))
                {
                    path = path.Substring(0, path.Length - 2).TrimEnd('/', '\\');
                    if (string.IsNullOrEmpty(path)) path = ".";
                    recursiveOptions = new EnumerationOptions() { RecurseSubdirectories = true };
                }

                if (!Directory.Exists(path)) continue;

                var files = recursiveOptions != null 
                    ? Directory.EnumerateFiles(path, pattern, recursiveOptions)
                    : Directory.EnumerateFiles(path, pattern);
                foreach (var file in files)
                {
                    yield return file;
                }
            }

            yield break;
        }