diff --git a/asset/no_changed_dependencies_template.html b/asset/no_changed_dependencies_template.html
new file mode 100644
index 0000000..f0f67ee
--- /dev/null
+++ b/asset/no_changed_dependencies_template.html
@@ -0,0 +1,3 @@
+
+No changed dependencies
+
\ No newline at end of file
diff --git a/lib/src/changelog_builder/changelog_builder2.dart b/lib/src/changelog_builder/changelog_builder2.dart
index 7e8229e..06d9467 100644
--- a/lib/src/changelog_builder/changelog_builder2.dart
+++ b/lib/src/changelog_builder/changelog_builder2.dart
@@ -1,11 +1,10 @@
import 'dart:io';
import 'package:changelog_bubbler/src/change_manager.dart';
+import 'package:changelog_bubbler/src/change_type.dart';
import 'package:path/path.dart' as p;
import 'package:changelog_bubbler/src/changelog_builder/dependency_pair.dart';
-import 'package:changelog_bubbler/src/dependency_type.dart';
-import 'package:changelog_bubbler/src/package_wrapper.dart';
import 'package:changelog_bubbler/src/templates/template_manager.dart';
class ChangelogBuilder2 {
@@ -28,6 +27,9 @@ class ChangelogBuilder2 {
/// Lowest level template used for templating an added or deleted dependency
final TemplateManager depAddedOrRemovedTemplate;
+ /// Used when the app update had no dependency changes
+ final TemplateManager noChangedDependenciesTemplate;
+
ChangelogBuilder2({
required this.changeManager,
required this.changelogName,
@@ -35,6 +37,7 @@ class ChangelogBuilder2 {
required this.depGroupTemplate,
required this.depChangedTemplate,
required this.depAddedOrRemovedTemplate,
+ required this.noChangedDependenciesTemplate,
});
Future buildChangelogFromTemplates() async {
@@ -54,10 +57,15 @@ class ChangelogBuilder2 {
String _buildGroupsFromTemplate() {
final stringBuffer = StringBuffer();
- for (final group in changeManager.groups) {
+
+ if (changeManager.groups.isEmpty) {
+ return noChangedDependenciesTemplate.unalteredTemplate;
+ }
+
+ for (final group in changeManager.groups.entries) {
final dependencyListBuffer = StringBuffer();
for (final depPair in group.value) {
- dependencyListBuffer.write('');
+ dependencyListBuffer.write(_buildInvidualDepFromTemplate(depPair));
}
final substitutedTemplate = depGroupTemplate.replaceAll({
'{{group_name}}': group.key,
@@ -70,49 +78,33 @@ class ChangelogBuilder2 {
return stringBuffer.toString();
}
- String _buildMainAppSection() {
- return _mainPackageDiffStr(
- packageName: previous.pubspec.name,
- previousVersion: previous.pubspec.version.toString(),
- currentVersion: current.pubspec.version.toString(),
- changelogDiff: _getChangelogDiff(
- currentPath: current.repoPath,
- previousPath: previous.repoPath,
- ),
- );
- }
-
- String _writeDepChangeTemplate({
- required MapEntry? previous,
- required MapEntry? current,
- }) {
- assert(previous != null || current != null,
- 'Either previous or current must not be null');
- if (previous == null) {
- return _depAddedOrRemovedStr(
- packageName: current!.key,
- dependencyType: current.value.dependencyType.name,
- changeType: 'ADDED',
- );
- }
- if (current == null) {
- return _depAddedOrRemovedStr(
- packageName: previous.key,
- dependencyType: previous.value.dependencyType.name,
- changeType: 'REMOVED',
- );
+ String _buildInvidualDepFromTemplate(DependencyPair depPair) {
+ final current = depPair.current;
+ final previous = depPair.previous;
+
+ if (current != null && previous != null) {
+ return depChangedTemplate.replaceAll({
+ '{{package_name}}': depPair.name,
+ '{{previous_version}}': previous.version.toString(),
+ '{{current_version}}': current.version.toString(),
+ '{{dependency_type}}': depPair.dependencyType.name,
+ '{{changelog_diff}}': _getChangelogDiff(
+ previousPath: previous.getPubCachePath(),
+ currentPath: current.getPubCachePath(),
+ ),
+ });
}
- return _depDiffStr(
- packageName: previous.key,
- previousVersion: previous.value.version.toString(),
- currentVersion: current.value.version.toString(),
- dependencyType: current.value.dependencyType.name,
- changelogDiff: _getChangelogDiff(
- previousPath: previous.value.getPubCachePath(),
- currentPath: current.value.getPubCachePath(),
- ),
- );
+ switch (depPair.changeType) {
+ case ChangeType.added:
+ case ChangeType.removed:
+ return depAddedOrRemovedTemplate.replaceAll({
+ '{{package_name}}': depPair.name,
+ '{{change_type}}': depPair.changeType.name,
+ '{{dependency_type}}': depPair.dependencyType.name,
+ });
+ default:
+ }
}
String _getChangelogDiff({
@@ -134,84 +126,4 @@ class ChangelogBuilder2 {
return diff;
}
-
- String _fullOutputStr({
- required String mainApp,
- required String dependencyGroups,
- }) {
- return '''
-$mainApp
-
-## Changed Dependencies
-$dependencyGroups
-''';
- }
-
- String _groupStr({
- required String groupName,
- required String packagesInGroup,
- }) {
- return _collapsibleStr(
- header: groupName,
- body: packagesInGroup,
- );
- }
-
- String _emptyDependencyStr() {
- return _paddedDivStr(body: 'No changed dependencies');
- }
-
- String _mainPackageDiffStr({
- required String packageName,
- required String previousVersion,
- required String currentVersion,
- required String changelogDiff,
- }) {
- return _collapsibleStr(
- header: '$packageName | $previousVersion -> $currentVersion',
- body: changelogDiff,
- );
- }
-
- String _depDiffStr({
- required String packageName,
- required String previousVersion,
- required String currentVersion,
- required String dependencyType,
- required String changelogDiff,
- }) {
- return _collapsibleStr(
- header:
- '$packageName | $previousVersion -> $currentVersion | $dependencyType',
- body: changelogDiff,
- );
- }
-
- String _depAddedOrRemovedStr({
- required String packageName,
- required String changeType,
- required String dependencyType,
- }) {
- return '$packageName | $changeType | $dependencyType';
- }
-
- String _collapsibleStr({
- required String header,
- required String body,
- }) {
- return '''
-
- $header
- ${_paddedDivStr(body: body)}
-
-''';
- }
-
- String _paddedDivStr({required String body}) {
- return '''
-
- $body
-
-''';
- }
}
diff --git a/lib/src/changelog_builder/dependency_pair.dart b/lib/src/changelog_builder/dependency_pair.dart
index 9f5b532..a4e1f26 100644
--- a/lib/src/changelog_builder/dependency_pair.dart
+++ b/lib/src/changelog_builder/dependency_pair.dart
@@ -1,38 +1,29 @@
-import 'dart:io';
-
+import 'package:changelog_bubbler/src/change_type.dart';
import 'package:changelog_bubbler/src/dependency_type.dart';
import 'package:changelog_bubbler/src/package_wrapper.dart';
-import 'package:path/path.dart' as p;
class DependencyPair {
final PackageWrapper? previous;
final PackageWrapper? current;
- // TODO add CHANGETYPE here
- // eg added/removed/updated
DependencyPair({
this.previous,
this.current,
- });
-
- String? get trimmedUrl => previous?.trimmedUrl ?? current?.trimmedUrl;
- DependencyType get dependencyType =>
- (previous?.dependencyType ?? current?.dependencyType)!;
-
- String getChangelogDiff() {
- final previousChangelog = File(p.join(previous?.repoPath, changelogName));
- final currentChangelog = File(p.join(currentPath, changelogName));
+ }) : assert(previous != null || current != null,
+ 'Either previous or current must not be null');
- if (!previousChangelog.existsSync() || !currentChangelog.existsSync()) {
- return '$changelogName not found';
+ ChangeType get changeType {
+ if (previous == null) {
+ return ChangeType.added;
}
- final previousString = previousChangelog.readAsStringSync();
- final currentString = currentChangelog.readAsStringSync();
- final diff = currentString.replaceFirst(previousString, '');
- if (diff.isEmpty) {
- return '$changelogName did not contain changes';
+ if (current == null) {
+ return ChangeType.removed;
}
-
- return diff;
+ return ChangeType.updated;
}
+
+ String get name => (previous?.name ?? current?.name)!;
+ String? get trimmedUrl => previous?.trimmedUrl ?? current?.trimmedUrl;
+ DependencyType get dependencyType =>
+ (previous?.dependencyType ?? current?.dependencyType)!;
}