Skip to content

Commit

Permalink
refactor(bower): Move PackageInfo extensions next to one another
Browse files Browse the repository at this point in the history
Signed-off-by: Frank Viernau <frank_viernau@epam.com>
  • Loading branch information
fviernau authored and sschuberth committed Jul 19, 2024
1 parent e010352 commit ed68c89
Showing 1 changed file with 23 additions and 23 deletions.
46 changes: 23 additions & 23 deletions plugins/package-managers/bower/src/main/kotlin/Bower.kt
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,29 @@ private const val SCOPE_NAME_DEPENDENCIES = "dependencies"
private const val SCOPE_NAME_DEV_DEPENDENCIES = "devDependencies"
private val SCOPE_NAMES = setOf(SCOPE_NAME_DEPENDENCIES, SCOPE_NAME_DEV_DEPENDENCIES)

private val PackageInfo.key: Endpoint
get() = endpoint

private fun PackageInfo.getScopeDependencies(scopeName: String): Set<String> =
when (scopeName) {
SCOPE_NAME_DEPENDENCIES -> pkgMeta.dependencies.keys
SCOPE_NAME_DEV_DEPENDENCIES -> pkgMeta.devDependencies.keys
else -> error("Invalid scope name: '$scopeName'.")
}

private fun PackageInfo.getTransitiveDependencies(): List<PackageInfo> {
val result = LinkedList<PackageInfo>()
val queue = LinkedList(dependencies.values)

while (queue.isNotEmpty()) {
val info = queue.removeFirst()
result += info
queue += info.dependencies.values
}

return result
}

private fun PackageInfo.toId() =
Identifier(
type = "Bower",
Expand Down Expand Up @@ -146,29 +169,13 @@ private fun PackageInfo.toPackage() =
vcs = toVcsInfo()
)

private fun PackageInfo.getTransitiveDependencies(): List<PackageInfo> {
val result = LinkedList<PackageInfo>()
val queue = LinkedList(dependencies.values)

while (queue.isNotEmpty()) {
val info = queue.removeFirst()
result += info
queue += info.dependencies.values
}

return result
}

private fun hasCompleteDependencies(info: PackageInfo, scopeName: String): Boolean {
val dependencyKeys = info.dependencies.keys
val dependencyRefKeys = info.getScopeDependencies(scopeName)

return dependencyKeys.containsAll(dependencyRefKeys)
}

private val PackageInfo.key: Endpoint
get() = endpoint

private fun getPackageInfosWithCompleteDependencies(root: PackageInfo): Map<Endpoint, PackageInfo> =
(root.getTransitiveDependencies() + root).associateBy { it.key }.filter { (_, info) ->
hasCompleteDependencies(info, SCOPE_NAME_DEPENDENCIES)
Expand Down Expand Up @@ -205,10 +212,3 @@ private fun parseDependencyTree(

return result
}

private fun PackageInfo.getScopeDependencies(scopeName: String): Set<String> =
when (scopeName) {
SCOPE_NAME_DEPENDENCIES -> pkgMeta.dependencies.keys
SCOPE_NAME_DEV_DEPENDENCIES -> pkgMeta.devDependencies.keys
else -> error("Invalid scope name: '$scopeName'.")
}

0 comments on commit ed68c89

Please sign in to comment.