mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2026-11-04 21:27:21 +00:00
Added file patterns and exclusions to folder data sources (#1057)
Co-authored-by: Thorsten Sommer <SommerEngineering@users.noreply.github.com>
This commit is contained in:
1 parent
249fc778a2
commit
031874cebf
75 files changed
+4808
-589
No files matched your search
@@ -1,11 +1,33 @@
|
||||
using AIStudio.Tools.Rust;
|
||||
|
||||
namespace AIStudio.Tools.Services;
|
||||
|
||||
public sealed class FileEnumerationResult
|
||||
{
|
||||
private readonly Dictionary<string, int> filePatternExclusionCounts = new(StringComparer.OrdinalIgnoreCase);
|
||||
|
||||
private readonly Dictionary<string, int> excludedFolderCounts = new(StringComparer.OrdinalIgnoreCase);
|
||||
|
||||
public List<FileInfo> Files { get; } = [];
|
||||
|
||||
public List<DataSourceEmbeddingFailure> Failures { get; } = [];
|
||||
|
||||
public List<DataSourceEmbeddingIgnoredFile> IgnoredFiles { get; } = [];
|
||||
|
||||
public IReadOnlyList<DataSourceEmbeddingFilePatternGroup> FilePatternExclusions => this.filePatternExclusionCounts
|
||||
.Select(group => new DataSourceEmbeddingFilePatternGroup(group.Key, group.Value))
|
||||
.OrderBy(group => group.FileType, StringComparer.OrdinalIgnoreCase)
|
||||
.ToList();
|
||||
|
||||
public int FilePatternExclusionCount => this.filePatternExclusionCounts.Values.Sum();
|
||||
|
||||
public IReadOnlyList<DataSourceEmbeddingExcludedFolderGroup> ExcludedFolders => this.excludedFolderCounts
|
||||
.Select(group => new DataSourceEmbeddingExcludedFolderGroup(group.Key, group.Value))
|
||||
.OrderBy(group => group.FolderName, StringComparer.OrdinalIgnoreCase)
|
||||
.ToList();
|
||||
|
||||
public int ExcludedFolderCount => this.excludedFolderCounts.Values.Sum();
|
||||
|
||||
public int FailedFiles { get; set; }
|
||||
|
||||
public string LastError { get; set; } = string.Empty;
|
||||
@@ -32,4 +54,31 @@ public sealed class FileEnumerationResult
|
||||
this.UnreadableDirectories.Add(directoryPath);
|
||||
this.AddFailure(directoryPath, reason);
|
||||
}
|
||||
}
|
||||
|
||||
public void AddIgnoredFile(string filePath, DataSourceEmbeddingIgnoreReason reason) =>
|
||||
this.IgnoredFiles.Add(new DataSourceEmbeddingIgnoredFile(filePath, reason));
|
||||
|
||||
public void AddFilePatternExclusion(string filePath)
|
||||
{
|
||||
var fileType = GetFilePatternExclusionType(filePath);
|
||||
this.filePatternExclusionCounts[fileType] = this.filePatternExclusionCounts.GetValueOrDefault(fileType) + 1;
|
||||
}
|
||||
|
||||
public void AddExcludedFolder(string directoryPath)
|
||||
{
|
||||
var folderName = Path.GetFileName(Path.TrimEndingDirectorySeparator(directoryPath));
|
||||
this.excludedFolderCounts[folderName] = this.excludedFolderCounts.GetValueOrDefault(folderName) + 1;
|
||||
}
|
||||
|
||||
private static string GetFilePatternExclusionType(string filePath)
|
||||
{
|
||||
var extension = Path.GetExtension(filePath).ToLowerInvariant();
|
||||
if (!string.IsNullOrWhiteSpace(extension))
|
||||
return extension;
|
||||
|
||||
var fileName = Path.GetFileName(filePath);
|
||||
return FileTypes.SOURCE_LIKE_FILE_NAMES.FilterExtensions
|
||||
.FirstOrDefault(knownFileName => string.Equals(knownFileName, fileName, StringComparison.OrdinalIgnoreCase))
|
||||
?? string.Empty;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user