render method
Formats summary as text or JSON.
Implementation
String render(ReleaseSummary summary, {bool asJson = false}) {
if (asJson) {
return const JsonEncoder.withIndent(' ').convert(summary.toJson());
}
final buf = StringBuffer();
buf.writeln('==================================================');
buf.writeln('RELEASE SUMMARY');
buf.writeln('==================================================');
buf.writeln(
'Version: ${summary.version}+${summary.buildNumber}');
buf.writeln('Release Mode: ${summary.releaseMode}');
buf.writeln('Target Platforms: ${summary.platforms.join(', ')}');
if (summary.branch != null) {
buf.writeln('Git Branch: ${summary.branch}');
}
if (summary.commitSha != null) {
buf.writeln('Commit SHA: ${summary.commitSha}');
}
if (summary.tag != null) {
buf.writeln('Git Tag: ${summary.tag}');
}
if (summary.previousTag != null) {
buf.writeln('Previous Tag: ${summary.previousTag}');
}
buf.writeln('Commits In Release: ${summary.commitCount}');
buf.writeln(
'Breaking Changes: ${summary.hasBreakingChanges ? "YES" : "No"}');
buf.writeln('Deployment Status: ${summary.deploymentStatus}');
if (summary.artifacts.isNotEmpty) {
buf.writeln('Artifacts:');
summary.artifacts.forEach((p, path) {
buf.writeln(' - $p: $path');
});
}
if (summary.shorebirdPatchDetails != null) {
buf.writeln('--------------------------------------------------');
buf.writeln('SHOREBIRD PATCH DETAILS');
buf.writeln('--------------------------------------------------');
summary.shorebirdPatchDetails!.forEach((key, value) {
buf.writeln('$key: $value');
});
}
buf.writeln('==================================================');
return buf.toString();
}