11package com.meet.dev.analyzer.data.repository.workspace
22
3+ import com.meet.dev.analyzer.data.models.project.Dependency
4+ import com.meet.dev.analyzer.data.models.project.Plugin
35import com.meet.dev.analyzer.data.models.project.ProjectOverviewInfo
46import com.meet.dev.analyzer.data.models.workspace.ResourceCategory
57import com.meet.dev.analyzer.data.models.workspace.UnusedResourceItem
68import com.meet.dev.analyzer.data.models.workspace.WorkspaceAnalysisResult
9+ import com.meet.dev.analyzer.data.models.workspace.WorkspaceDependencyInfo
10+ import com.meet.dev.analyzer.data.models.workspace.WorkspacePluginInfo
711import com.meet.dev.analyzer.data.repository.project.helpers.ProjectFileScanner
812import com.meet.dev.analyzer.data.repository.project.helpers.ProjectOverviewAnalyzer
913import com.meet.dev.analyzer.data.repository.project.helpers.VersionCatalogParser
14+ import com.meet.dev.analyzer.data.repository.project.helpers.DependencyAnalyzer
15+ import com.meet.dev.analyzer.data.repository.project.helpers.PluginAnalyzer
1016import com.meet.dev.analyzer.data.repository.storage.helpers.AndroidSdkAnalyzer
1117import com.meet.dev.analyzer.data.repository.storage.helpers.AvdAnalyzer
1218import com.meet.dev.analyzer.data.repository.storage.helpers.GradleAnalyzer
@@ -25,7 +31,9 @@ class WorkspaceRepositoryImpl(
2531 private val androidSdkAnalyzer : AndroidSdkAnalyzer ,
2632 private val gradleAnalyzer : GradleAnalyzer ,
2733 private val konanAnalyzer : KonanAnalyzer ,
28- private val avdAnalyzer : AvdAnalyzer
34+ private val avdAnalyzer : AvdAnalyzer ,
35+ private val dependencyAnalyzer : DependencyAnalyzer ,
36+ private val pluginAnalyzer : PluginAnalyzer
2937) : WorkspaceRepository {
3038
3139 private val TAG = tagName(javaClass)
@@ -62,6 +70,10 @@ class WorkspaceRepositoryImpl(
6270 val usedCmakeVersions = mutableSetOf<String >()
6371 val usedJdkVersions = mutableSetOf<String >()
6472
73+ // val gradleModulesInfo = gradleAnalyzer.getGradleModulesInfo()
74+ // val rawDepsList = mutableListOf<Pair<String, Dependency>>()
75+ // val rawPluginsList = mutableListOf<Pair<String, Plugin>>()
76+
6577 projectDirs.forEachIndexed { index, projectDir ->
6678 val progressVal = 0.1f + (0.5f * (index.toFloat() / totalProjects))
6779 onProgress(progressVal, " Analyzing project: ${projectDir.name} " )
@@ -97,6 +109,24 @@ class WorkspaceRepositoryImpl(
97109 overview.ndkVersion?.let { usedNdkVersions.add(it) }
98110 overview.cmakeVersion?.let { usedCmakeVersions.add(it) }
99111 overview.jdkVersion?.let { usedJdkVersions.add(it) }
112+ //
113+ // try {
114+ // val plugins = pluginAnalyzer.findPlugin(
115+ // moduleBuildFileInfos = moduleBuildFileInfos,
116+ // versionCatalog = versionCatalog,
117+ // gradleModulesInfo = gradleModulesInfo
118+ // )
119+ // plugins.forEach { rawPluginsList.add(overview.projectName to it) }
120+ //
121+ // val dependencies = dependencyAnalyzer.findDependencies(
122+ // moduleBuildFileInfos = moduleBuildFileInfos,
123+ // versionCatalog = versionCatalog,
124+ // gradleModulesInfo = gradleModulesInfo
125+ // )
126+ // dependencies.forEach { rawDepsList.add(overview.projectName to it) }
127+ // } catch (e: Exception) {
128+ // AppLogger.e(TAG, e) { "Failed to extract dependencies for ${projectDir.name}" }
129+ // }
100130 }
101131
102132 AppLogger .i(TAG ) {
@@ -344,36 +374,20 @@ class WorkspaceRepositoryImpl(
344374 val apiVal = apiRegex.find(item.name)?.groupValues?.get(1 )
345375 ? : item.name.substringAfter(" android-" )
346376
347- val usedByAnyProject = usedCompileSdks.contains(apiVal) ||
348- usedCompileSdks.any { it.contains(apiVal) } ||
349- usedTargetSdks.contains(apiVal) ||
350- usedTargetSdks.any { it.contains(apiVal) } ||
351- usedMinSdks.contains(apiVal) ||
352- usedMinSdks.any { it.contains(apiVal) }
353-
354377 val usedByAnyAvd = avdInfo.avdItemList.any { avd ->
355378 avd.apiLevel == apiVal || avd.apiLevel == " android-$apiVal "
356379 }
357380
358- val isUsed = usedByAnyProject || usedByAnyAvd
359- val usingProjects = if (usedByAnyProject) {
360- projects.filter {
361- it.compileSdkVersion == apiVal || it.compileSdkVersion?.contains(apiVal) == true ||
362- it.targetSdkVersion == apiVal || it.targetSdkVersion?.contains(apiVal) == true ||
363- it.minSdkVersion == apiVal || it.minSdkVersion?.contains(apiVal) == true
364- }.map { it.projectName }
365- } else emptyList()
366-
367381 val resource = UnusedResourceItem (
368382 name = " System Image ${item.name} " ,
369383 version = apiVal,
370384 category = ResourceCategory .ANDROID_SYSTEM_IMAGE ,
371385 path = item.path,
372386 sizeBytes = item.sizeBytes,
373387 sizeFormatted = item.sizeReadable,
374- usedByProjects = usingProjects
388+ usedByProjects = emptyList()
375389 )
376- if (isUsed ) activeResources.add(resource) else unusedResources.add(resource)
390+ if (usedByAnyAvd ) activeResources.add(resource) else unusedResources.add(resource)
377391 }
378392
379393 // 2.k Gradle Daemons
@@ -445,15 +459,40 @@ class WorkspaceRepositoryImpl(
445459 }
446460 }
447461
462+ // val aggregatedDeps = rawDepsList.groupBy { it.second.id }.map { (depId, pairs) ->
463+ // val first = pairs.first().second
464+ // val group = first.group
465+ // val name = first.name
466+ // val versionsMap = pairs.groupBy { it.second.version ?: "unspecified" }
467+ // .mapValues { entry -> entry.value.map { it.first }.distinct().sorted() }
468+ // WorkspaceDependencyInfo(
469+ // id = depId,
470+ // group = group,
471+ // artifact = name,
472+ // versionsInUse = versionsMap
473+ // )
474+ // }.sortedBy { it.id.lowercase() }
475+ //
476+ // val aggregatedPlugins = rawPluginsList.groupBy { it.second.id }.map { (pluginId, pairs) ->
477+ // val versionsMap = pairs.groupBy { it.second.version ?: "unspecified" }
478+ // .mapValues { entry -> entry.value.map { it.first }.distinct().sorted() }
479+ // WorkspacePluginInfo(
480+ // id = pluginId,
481+ // versionsInUse = versionsMap
482+ // )
483+ // }.sortedBy { it.id.lowercase() }
484+
448485 onProgress(1f , " Analysis Complete" )
449486 WorkspaceAnalysisResult (
450487 projects = projects,
451488 unusedResources = unusedResources.sortedByDescending { it.sizeBytes },
452- activeResources = activeResources.sortedByDescending { it.sizeBytes }
489+ activeResources = activeResources.sortedByDescending { it.sizeBytes },
490+ // workspaceDependencies = aggregatedDeps,
491+ // workspacePlugins = aggregatedPlugins
453492 )
454493 } catch (e: Exception ) {
455494 AppLogger .e(TAG , e) { " Error analyzing workspace" }
456- WorkspaceAnalysisResult (emptyList(), emptyList(), emptyList())
495+ WorkspaceAnalysisResult (emptyList(), emptyList(), emptyList(), emptyList(), emptyList() )
457496 }
458497 }
459498
0 commit comments