generate method

Future<ReleaseNotes> generate({
  1. required String projectPath,
  2. required String version,
  3. String? previousTag,
  4. String? currentTag,
})

Generates a ReleaseNotes object for a given projectPath and target version.

Implementation

Future<ReleaseNotes> generate({
  required String projectPath,
  required String version,
  String? previousTag,
  String? currentTag,
}) async {
  final commitRange = await _gitClient.getCommitRange(
    projectPath,
    fromTag: previousTag,
  );

  final classified = _classifier.classify(commitRange.commits);
  final categories = _classifier.groupByCategory(classified);
  final breaking = classified.where((c) => c.isBreaking).toList();

  return ReleaseNotes(
    version: version,
    tag: currentTag ?? 'v$version',
    previousTag: commitRange.fromTag,
    commitRange: commitRange,
    categories: categories,
    breakingChanges: breaking,
    commits: commitRange.commits,
  );
}