From dddd8ea66c6b0f5136b088a0781415a4ac23d149 Mon Sep 17 00:00:00 2001 From: Shreyash Saitwal <40118018+shreyashsaitwal@users.noreply.github.com> Date: Sun, 28 Jan 2024 19:07:34 +0530 Subject: [PATCH] fix: prevent provided deps from being removed as rogue deps --- lib/src/commands/deps/sync.dart | 21 +++++++++++---------- lib/src/services/lib_service.dart | 18 ++++++++---------- lib/src/utils/constants.dart | 2 +- 3 files changed, 20 insertions(+), 21 deletions(-) diff --git a/lib/src/commands/deps/sync.dart b/lib/src/commands/deps/sync.dart index 668569a..a292327 100644 --- a/lib/src/commands/deps/sync.dart +++ b/lib/src/commands/deps/sync.dart @@ -69,7 +69,7 @@ class SyncSubCommand extends Command { // Clear all the cache if force is used. if (useForce) { if (!onlyExtDeps) { - await libService.providedDepsBox.clear(); + await libService.ai2ProvidedDepsBox.clear(); await libService.buildLibsBox.clear(); } if (!onlyDevDeps && config != null) { @@ -126,7 +126,7 @@ class SyncSubCommand extends Command { try { await Future.wait([ sync( - cacheBox: libService.providedDepsBox, + cacheBox: libService.ai2ProvidedDepsBox, coordinates: {Scope.compile: ai2ProvidedDepsToFetch}, downloadSources: true, excludeCoordinates: ['com.google.android:android:2.1.2'], @@ -147,7 +147,7 @@ class SyncSubCommand extends Command { 'android-$androidPlatformSdkVersion.jar', 'kawa-1.11-modified.jar', 'physicaloid-library.jar' - ], libService.providedDepsBox), + ], libService.ai2ProvidedDepsBox), ]); _lgr.stopTask(); } else if (!onlyExtDeps) { @@ -179,19 +179,19 @@ class SyncSubCommand extends Command { final timestampBox = await Hive.openLazyBox(timestampBoxName); final extensionDeps = await libService.extensionDependencies(config); - final needSync = await extensionDepsNeedSync(timestampBox, extensionDeps); + final needSync = await _doProjectDepsNeedSync(timestampBox, extensionDeps); if (useForce || (!onlyDevDeps && needSync)) { _lgr.startTask('Syncing project dependencies'); final extDepCoords = config.dependencies .where((el) => !el.endsWith('.jar') && !el.endsWith('.aar')); - final extProvidedDepCoord = config.providedDependencies + final extProvidedDepCoords = config.providedDependencies .where((el) => !el.endsWith('.jar') && !el.endsWith('.aar')); try { await sync( cacheBox: libService.extensionDepsBox!, - coordinates: {Scope.provided: extProvidedDepCoord}, + coordinates: {Scope.provided: extProvidedDepCoords}, repositories: config.repositories, downloadSources: true, ); @@ -210,7 +210,8 @@ class SyncSubCommand extends Command { _lgr.stopTask(false); return 1; } - await _removeRogueDeps(extDepCoords, libService.extensionDepsBox!); + await _removeRogueDeps({...extDepCoords, ...extProvidedDepCoords}, + libService.extensionDepsBox!); _lgr.stopTask(); } else if (!onlyDevDeps) { _lgr @@ -245,14 +246,14 @@ class SyncSubCommand extends Command { return 0; } - static Future extensionDepsNeedSync(LazyBox timestampBox, - List extensionDependencies) async { + static Future _doProjectDepsNeedSync( + LazyBox timestampBox, List projectDeps) async { // Re-fetch deps if they are outdated, ie, if the config file is modified // or if the dep artifacts are missing final configFileModified = (await timestampBox.get(configTimestampKey)) ?.isBefore(_fs.configFile.lastModifiedSync()) ?? true; - final isAnyDepMissing = extensionDependencies.any((el) => + final isAnyDepMissing = projectDeps.any((el) => !el.artifactFile.endsWith('.pom') && !el.artifactFile.asFile().existsSync()); return configFileModified || isAnyDepMissing; diff --git a/lib/src/services/lib_service.dart b/lib/src/services/lib_service.dart index dca2266..4f66b4f 100644 --- a/lib/src/services/lib_service.dart +++ b/lib/src/services/lib_service.dart @@ -41,13 +41,13 @@ class LibService { } } - late final LazyBox providedDepsBox; + late final LazyBox ai2ProvidedDepsBox; late final LazyBox buildLibsBox; late final LazyBox? extensionDepsBox; static Future instantiate() async { final instance = LibService._(); - instance.providedDepsBox = await Hive.openLazyBox( + instance.ai2ProvidedDepsBox = await Hive.openLazyBox( providedDepsBoxName, path: p.join(_fs.rushHomeDir.path, 'cache'), ); @@ -95,7 +95,7 @@ class LibService { if (config == null) { return [ - ...await _retrieveArtifactsFromBox(providedDepsBox), + ...await _retrieveArtifactsFromBox(ai2ProvidedDepsBox), ...local, ]; } @@ -119,9 +119,8 @@ class LibService { }); return [ - ...await _retrieveArtifactsFromBox(providedDepsBox), - ...(_requiredDeps( - await _retrieveArtifactsFromBox(extensionDepsBox!), extProvidedDeps)), + ...await _retrieveArtifactsFromBox(ai2ProvidedDepsBox), + ...extProvidedDeps, ...extLocalProvided, ...local, ]; @@ -149,12 +148,11 @@ class LibService { }) async { final allExtRemoteDeps = await _retrieveArtifactsFromBox(extensionDepsBox!); - final directRemoteDeps = config.dependencies + final projectDeps = config.dependencies .map((el) => allExtRemoteDeps.firstWhereOrNull((dep) => dep.coordinate == el)) .whereNotNull(); - final requiredRemoteDeps = - _requiredDeps(allExtRemoteDeps, directRemoteDeps); + final requiredDeps = _requiredDeps(allExtRemoteDeps, projectDeps); final projectProvidedDeps = config.providedDependencies .map((el) => @@ -180,7 +178,7 @@ class LibService { .map((el) => el.artifactFile)); return [ - ...requiredRemoteDeps, + ...requiredDeps, if (includeLocal) ...localDeps, if (includeAi2ProvidedDeps) ...await providedDependencies(config), if (includeProjectProvidedDeps) ...requiredProjectProvidedDeps, diff --git a/lib/src/utils/constants.dart b/lib/src/utils/constants.dart index 747b30f..0fc90a1 100644 --- a/lib/src/utils/constants.dart +++ b/lib/src/utils/constants.dart @@ -1,4 +1,4 @@ -const providedDepsBoxName = 'provided-deps'; +const providedDepsBoxName = 'ai2-provided-deps'; const buildLibsBoxName = 'build-libs'; const extensionDepsBoxName = 'deps';