resolvedExecutable property

File resolvedExecutable

Resolve the binary query engine executable path.

Implementation

File get resolvedExecutable {
  // If executable exists, return it.
  final configured = File(executable);
  if (configured.existsSync()) {
    return configured;
  }

  final basename = path.basename(executable);
  final searchDirectories = [
    // Search in current working directory.
    ..._generateSearchDirectories(Directory.current.path),
    // Search in the executable directory.
    ..._generateSearchDirectories(path.dirname(Platform.resolvedExecutable)),
    // Search in current script directory.
    ..._generateSearchDirectories(path.dirname(Platform.script.toFilePath())),
  ];

  // Search in the search directories.
  for (final directory in searchDirectories) {
    final file = File(path.join(directory, basename));
    if (file.existsSync()) {
      return file;
    }

    final defaultFile = File(path.join(directory, 'prisma-query-engine'));
    if (defaultFile.existsSync()) {
      return defaultFile;
    }
  }

  throw PrismaInitializationException(
      message:
          'Cannot find the query engine binary (Basename: $basename | prisma-query-engine)',
      engine: this);
}