render method

String render(
  1. ReleaseSummary summary, {
  2. bool asJson = false,
})

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();
}