writePackageUpdateChanges method
void
writePackageUpdateChanges(
- MelosPendingPackageUpdate update
Implementation
void writePackageUpdateChanges(MelosPendingPackageUpdate update) {
final config = update.workspace.config;
final repository = config.repository;
final linkToCommits = config.commands.version.linkToCommits;
final includeCommitId = config.commands.version.includeCommitId;
String processCommitHeader(String header) =>
repository != null ? header.withIssueLinks(repository) : header;
// User provided changelog entry message.
if (update.userChangelogMessage != null) {
writeln(' - ${update.userChangelogMessage}');
writeln();
}
// Entries for commits included in new version.
final commits = _filteredAndSortedCommits(update);
if (commits.isNotEmpty) {
for (final commit in commits) {
final parsedMessage = commit.parsedMessage;
write(' - ');
if (parsedMessage.isBreakingChange) {
writeBold('BREAKING');
write(' ');
}
writeBold(parsedMessage.type!.toUpperCase());
if (config.commands.version.includeScopes) {
if (parsedMessage.scopes.isNotEmpty) {
write('(');
write(parsedMessage.scopes.join(','));
write(')');
}
}
write(': ');
writePunctuated(processCommitHeader(parsedMessage.description!));
if (linkToCommits || includeCommitId) {
final shortCommitId = commit.id.substring(0, 8);
final commitUrl = repository!.commitUrl(commit.id);
write(' (');
if (linkToCommits) {
writeLink(shortCommitId, uri: commitUrl.toString());
} else {
write(shortCommitId);
}
write(')');
}
writeln();
final version = update.workspace.config.commands.version;
if (!version.includeCommitBody) continue;
if (parsedMessage.body == null) continue;
final shouldWriteBody =
!version.commitBodyOnlyBreaking || parsedMessage.isBreakingChange;
if (shouldWriteBody) {
writeln();
for (final line in parsedMessage.body!.split('\n')) {
write(' ' * 4);
writeln(line);
}
writeln();
}
}
writeln();
}
}