Skip to content

Commit 2cfefc3

Browse files
fix: firebase_core folder order by parsing the version (#410)
1 parent 1cbd1fe commit 2cfefc3

File tree

2 files changed

+35
-4
lines changed

2 files changed

+35
-4
lines changed

packages/flutterfire_cli/lib/src/firebase/firebase_android_writes.dart

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ import 'dart:io';
33
import 'package:cli_util/cli_logging.dart';
44
import 'package:collection/collection.dart';
55
import 'package:path/path.dart' as path;
6+
import 'package:pub_semver/pub_semver.dart';
67
import 'package:yaml/yaml.dart';
8+
79
import '../common/strings.dart';
810
import '../common/utils.dart';
911
import '../flutter_app.dart';
@@ -1104,14 +1106,41 @@ AndroidGradleContents _applyFirebaseAndroidPluginKts({
11041106

11051107
Future<FirebasePubSpecModel> getFirebaseCorePubSpec() async {
11061108
try {
1109+
const packageName = 'firebase_core-';
11071110
final pubCacheFolder = _getPubCacheDirectory();
11081111
final items = pubCacheFolder.listSync();
1109-
final firebaseCoreDirectory = items
1112+
final firebaseCoreItems = items
1113+
// Take only folders
11101114
.whereType<Directory>()
1111-
.where((e) => e.path.split('/').last.startsWith('firebase_core-'))
1112-
.sortedBy((d) => d.path)
1113-
.last;
1115+
// Take only folders from firebase_core package
1116+
.where(
1117+
(e) => e.uri.pathSegments
1118+
.where((p) => p.isNotEmpty)
1119+
.last
1120+
.startsWith(packageName),
1121+
)
1122+
// Sort by version
1123+
.sorted(
1124+
(a, b) {
1125+
final aVersion = Version.parse(
1126+
a.uri.pathSegments
1127+
.where((p) => p.isNotEmpty)
1128+
.last
1129+
.replaceFirst(packageName, ''),
1130+
);
1131+
1132+
final bVersion = Version.parse(
1133+
b.uri.pathSegments
1134+
.where((p) => p.isNotEmpty)
1135+
.last
1136+
.replaceFirst(packageName, ''),
1137+
);
1138+
1139+
return aVersion.compareTo(bVersion);
1140+
},
1141+
);
11141142

1143+
final firebaseCoreDirectory = firebaseCoreItems.last;
11151144
final firebaseCorePubspecFile =
11161145
pubspecPathForDirectory(firebaseCoreDirectory);
11171146
final content = await File(firebaseCorePubspecFile).readAsString();

pubspec.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,5 @@ dev_dependencies:
1616
dependency_overrides:
1717
flutterfire_cli:
1818
path: ./packages/flutterfire_cli
19+
dependencies:
20+
pub_semver: ^2.2.0

0 commit comments

Comments
 (0)