public async Task ResolveDirectoryTree()

in src/Elastic.Markdown/IO/DocumentationSet.cs [326:362]


	public async Task ResolveDirectoryTree(Cancel ctx) =>
		await Tree.Resolve(ctx);

	private DocumentationFile CreateMarkDownFile(IFileInfo file, BuildContext context)
	{
		var relativePath = Path.GetRelativePath(SourceDirectory.FullName, file.FullName);
		if (Configuration.Exclude.Any(g => g.IsMatch(relativePath)))
			return new ExcludedFile(file, SourceDirectory, context.Git.RepositoryName);

		if (relativePath.Contains("_snippets"))
			return new SnippetFile(file, SourceDirectory, context.Git.RepositoryName);

		// we ignore files in folders that start with an underscore
		var folder = Path.GetDirectoryName(relativePath);
		if (folder is not null && (folder.Contains($"{Path.DirectorySeparatorChar}_", StringComparison.Ordinal) || folder.StartsWith('_')))
			return new ExcludedFile(file, SourceDirectory, context.Git.RepositoryName);

		if (Configuration.Files.Contains(relativePath))
			return ExtensionOrDefaultMarkdown();

		if (Configuration.Globs.Any(g => g.IsMatch(relativePath)))
			return ExtensionOrDefaultMarkdown();

		context.EmitError(Configuration.SourceFile, $"Not linked in toc: {relativePath}");
		return new ExcludedFile(file, SourceDirectory, context.Git.RepositoryName);

		MarkdownFile ExtensionOrDefaultMarkdown()
		{
			foreach (var extension in EnabledExtensions)
			{
				var documentationFile = extension.CreateMarkdownFile(file, SourceDirectory, this);
				if (documentationFile is not null)
					return documentationFile;
			}
			return new MarkdownFile(file, SourceDirectory, MarkdownParser, context, this);
		}
	}