resolveServerRootDir static method

Future<String> resolveServerRootDir(
  1. String serverRootDir, {
  2. required bool? interactive,
  3. Directory? startDir,
})

The absolute server package directory serverRootDir names.

An empty value searches from startDir or the current directory, which may prompt unless interactive is false, or null in CI.

Implementation

static Future<String> resolveServerRootDir(
  String serverRootDir, {
  required bool? interactive,
  Directory? startDir,
}) async {
  // Auto-detect server directory if not specified
  if (serverRootDir.isEmpty) {
    // Determine if we should use interactive mode
    // Priority: explicit flag > CI detection > default (true)
    final isInteractive = interactive ?? !ci.isCI;

    var serverDir = await ServerDirectoryFinder.findOrPrompt(
      startDir: startDir,
      interactive: isInteractive,
    );
    serverRootDir = serverDir.path;
  }

  // Anchor the path once at resolution time,
  // so a later cwd change doesn't silently retarget config lookups.
  return p.normalize(p.absolute(serverRootDir));
}