renderDoctorText function
String
renderDoctorText(
- DoctorReport report,
- List<
String> blocking, { - CompatibilityResult? compatibility,
Renders the DoctorReport in human-readable text format.
Binds: R-009, FR-007, FR-009.
Implementation
String renderDoctorText(
DoctorReport report,
List<String> blocking, {
CompatibilityResult? compatibility,
}) {
final buffer = StringBuffer();
buffer.writeln(
'FlutterStart ${report.flutterStartVersion.value ?? "unknown"}',
);
if (report.flutterExecutable.observed && report.flutterVersion.observed) {
buffer.writeln(
'Flutter ${report.flutterVersion.value ?? "unknown"} ${report.flutterExecutable.value ?? "unknown"}',
);
} else {
buffer.writeln('Flutter n/a');
}
if (report.dartExecutable.observed && report.dartVersion.observed) {
buffer.writeln(
'Dart ${report.dartVersion.value ?? "unknown"} ${report.dartExecutable.value ?? "unknown"}',
);
} else {
buffer.writeln('Dart n/a');
}
if (report.gitAvailable.observed) {
buffer.writeln(
'Git ${report.gitAvailable.value == true ? "available" : "not available"}',
);
} else {
buffer.writeln('Git unknown');
}
final os = report.hostOs.value ?? 'unknown';
final cs = report.caseSensitivity.observed
? (report.caseSensitivity.value == true
? 'case-sensitive'
: 'case-insensitive')
: 'unknown';
buffer.writeln('Host $os · filesystem $cs (probed)');
final sAccess = report.stagingAccess.observed
? (report.stagingAccess.value == true ? 'ok' : 'failed')
: 'unknown';
final tAccess = report.tempAccess.observed
? (report.tempAccess.value == true ? 'ok' : 'failed')
: 'unknown';
buffer.writeln('Staging $sAccess · Temp $tAccess');
final rComp = report.recipeCompatibility.observed
? (report.recipeCompatibility.value == true ? 'ok' : 'incompatible')
: 'unknown';
final eComp = report.engineCompatibility.observed
? (report.engineCompatibility.value == true ? 'ok' : 'incompatible')
: 'unknown';
final rendererComp = report.rendererVersionCompatibility.observed
? (report.rendererVersionCompatibility.value == true
? 'ok'
: 'incompatible')
: 'unknown';
buffer.writeln(
'Recipe $rComp · Engine $eComp · Renderer mason 0.1.2 $rendererComp',
);
final net = report.networkReachability.observed
? (report.networkReachability.value == true
? 'pub.dev reachable'
: 'pub.dev unreachable')
: 'pub.dev unknown';
var cache = 'Package cache unknown';
if (report.packageCacheClassification.observed) {
final stateStr = report.packageCacheClassification.value?.name
.toUpperCase();
if ((stateStr == 'PARTIAL' || stateStr == 'COLD') &&
report.packageCacheMissing.value != null &&
report.packageCacheMissing.value!.isNotEmpty) {
cache =
'Package cache $stateStr (missing: ${report.packageCacheMissing.value!.join(", ")})';
} else {
cache = 'Package cache $stateStr';
}
}
buffer.writeln('Network $net · $cache');
if (report.windowsLongPathStatus.observed) {
buffer.writeln(
'Windows long-path ${report.windowsLongPathStatus.value == true ? "enabled" : "disabled"}',
);
} else {
buffer.writeln('Windows n/a');
}
if (report.provisionalNotes.observed &&
report.provisionalNotes.value != null &&
report.provisionalNotes.value!.isNotEmpty) {
buffer.writeln(
'\nProvisional features active: ${report.provisionalNotes.value!.join(", ")}',
);
}
if (blocking.isNotEmpty) {
buffer.writeln('\nBlocking environment failures:');
for (final cond in blocking) {
buffer.writeln(' - $cond');
}
}
if (compatibility?.warnings case final warnings? when warnings.isNotEmpty) {
buffer.writeln('\nCompatibility warnings:');
for (final warning in warnings) {
buffer.writeln(' - [${warning.code}] ${warning.message}');
}
}
return buffer.toString().trim();
}