diff --git a/commanddash/lib/steps/find_closest_files/embedding_generator.dart b/commanddash/lib/steps/find_closest_files/embedding_generator.dart index dd1a542..c530f52 100644 --- a/commanddash/lib/steps/find_closest_files/embedding_generator.dart +++ b/commanddash/lib/steps/find_closest_files/embedding_generator.dart @@ -4,6 +4,27 @@ import 'package:commanddash/repositories/generation_repository.dart'; import 'package:commanddash/utils/embedding_utils.dart'; class EmbeddingGenerator { + static List getProjectFiles(String workspacePath) { + final directory = Directory(workspacePath); + final gitIgnore = File('${workspacePath}/.gitignore'); + String excludePattern = ''; + if (gitIgnore.existsSync()) { + final ignorePatterns = gitIgnore.readAsLinesSync(); + excludePattern = ignorePatterns + .map((pattern) => + pattern.replaceAll('/', r"[/\\]").replaceAll('*', '.*')) + .join('|'); + } + final dartFiles = directory.listSync(recursive: true).where((file) { + return !RegExp(excludePattern).hasMatch(file.path); + }).toList(); + final fileContents = dartFiles.map((file) { + return WorkspaceFile.fromPath(file.path); + }).toList(); + fileContents.removeWhere((element) => (element.fileContent).isEmpty); + return fileContents; + } + static List getDartFiles(String workspacePath) { final directory = Directory(workspacePath); const excludePattern = diff --git a/commanddash/lib/steps/find_closest_files/search_in_workspace_step.dart b/commanddash/lib/steps/find_closest_files/search_in_workspace_step.dart index d38a799..7bd1bb3 100644 --- a/commanddash/lib/steps/find_closest_files/search_in_workspace_step.dart +++ b/commanddash/lib/steps/find_closest_files/search_in_workspace_step.dart @@ -49,7 +49,7 @@ class SearchInWorkspaceStep extends Step { taskAssist.sendErrorMessage(message: "No open workspace found", data: {}); throw Exception("No open workspace found"); } - final dartFiles = EmbeddingGenerator.getDartFiles(workspacePath); + final dartFiles = EmbeddingGenerator.getProjectFiles(workspacePath); final codeCacheHash = jsonDecode((await taskAssist.processStep( kind: 'cache', args: {}, timeoutKind: TimeoutKind.sync))['value']); final filesToUpdate =