findDpkYamlDirectory function

Future<Directory?> findDpkYamlDirectory(
  1. Directory startDirectory
)

Implementation

Future<Directory?> findDpkYamlDirectory(Directory startDirectory) async {
  // Get workspace info to determine boundaries
  final workspaceInfo = await getWorkspaceInfo(startDirectory);
  final stopDirectory = workspaceInfo.workspaceRoot;

  var currentDir = startDirectory;

  while (true) {
    final configFile = File(join(currentDir.path, kConfigFileName));
    if (configFile.existsSync()) {
      return currentDir;
    }

    // Stop at workspace root (don't search parent directories outside workspace)
    if (stopDirectory != null && currentDir.path == stopDirectory.path) {
      return null;
    }

    final parentDir = currentDir.parent;
    if (parentDir.path == currentDir.path) {
      return null; // Reached filesystem root
    }

    currentDir = parentDir;
  }
}