readBuilderArtifact function

String readBuilderArtifact(
  1. String projectDir
)

Liest das Builder-Artefakt und liefert den Dateiinhalt byte-genau für stdout. Fehlende Datei, ungültiges JSON oder eine inkompatible schemaVersion (V6-Logik wie im Core) werfen eine AdapterException.

Implementation

String readBuilderArtifact(String projectDir) {
  final file = File(p.join(projectDir, builderArtifactFileName));
  if (!file.existsSync()) {
    throw AdapterException([
      'Fehler: $builderArtifactFileName nicht gefunden in $projectDir. '
          'Zuerst im Zielprojekt "dart run build_runner build" ausführen '
          '(Weg D).',
    ]);
  }

  final content = file.readAsStringSync();
  final Object? graph;
  try {
    graph = jsonDecode(content);
  } on FormatException catch (e) {
    throw AdapterException([
      '$builderArtifactFileName: ungültiges JSON: ${e.message}',
    ]);
  }

  final version = graph is Map<String, Object?> ? graph['schemaVersion'] : null;
  if (version is! String || !isSupportedSchemaVersion(version)) {
    throw AdapterException([
      'V6: $builderArtifactFileName: schemaVersion '
          '"${version is String ? version : '(fehlt)'}" wird nicht '
          'unterstützt (erwartet Major $supportedSchemaMajor, '
          'z. B. "$supportedSchemaMajor.0").',
    ]);
  }
  return content;
}