resolveOrmProject function

OrmProjectContext resolveOrmProject({
  1. String? configPath,
})

Implementation

OrmProjectContext resolveOrmProject({String? configPath}) {
  if (configPath != null && configPath.trim().isNotEmpty) {
    final normalized = p.normalize(
      p.isAbsolute(configPath)
          ? configPath
          : p.join(Directory.current.path, configPath),
    );
    final file = File(normalized);
    if (!file.existsSync()) {
      throw StateError('Config file $normalized not found.');
    }
    final root = findProjectRoot(file.parent);
    return OrmProjectContext(root: root, configFile: file);
  }

  final nearest = _findNearestOrmProjectConfig(Directory.current);
  if (nearest != null) {
    final root = findProjectRoot(nearest.parent);
    return OrmProjectContext(root: root, configFile: nearest);
  }

  final root = findProjectRoot();
  final fallback = File(p.join(root.path, 'ormed.yaml'));
  if (!fallback.existsSync()) {
    final legacy = File(p.join(root.path, 'ormed.yaml'));
    if (legacy.existsSync()) return OrmProjectContext(root: root, configFile: legacy);
    throw StateError(
      'Missing ormed.yaml. Run `ormed init` or provide --config path.',
    );
  }
  return OrmProjectContext(root: root, configFile: fallback);
}