Skip to content

Commit 681179a

Browse files
maennchensschuberth
authored andcommitted
refactor(gleam): Simplify package info class hierarchy
Remove the GleamPackageInfo sealed interface and use ManifestPackageInfo directly as the generic type parameter for GleamDependencyHandler. The interface had only one implementation, making the abstraction unnecessary. Also remove unused context parameters from toIdentifier() and createGitPackage(). Signed-off-by: Jonatan Männchen <jonatan@maennchen.ch>
1 parent 4f61c3a commit 681179a

2 files changed

Lines changed: 16 additions & 28 deletions

File tree

plugins/package-managers/gleam/src/main/kotlin/GleamDependencyHandler.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import org.ossreviewtoolkit.model.utils.DependencyHandler
2828
/**
2929
* A [DependencyHandler] for Gleam dependencies.
3030
*/
31-
internal class GleamDependencyHandler : DependencyHandler<GleamPackageInfo> {
31+
internal class GleamDependencyHandler : DependencyHandler<ManifestPackageInfo> {
3232
private lateinit var context: GleamProjectContext
3333
private val manifestPackagesByName = mutableMapOf<String, GleamManifest.Package>()
3434

@@ -41,16 +41,16 @@ internal class GleamDependencyHandler : DependencyHandler<GleamPackageInfo> {
4141
}
4242
}
4343

44-
override fun identifierFor(dependency: GleamPackageInfo): Identifier = dependency.toIdentifier(context)
44+
override fun identifierFor(dependency: ManifestPackageInfo): Identifier = dependency.toIdentifier()
4545

46-
override fun dependenciesFor(dependency: GleamPackageInfo): List<GleamPackageInfo> =
46+
override fun dependenciesFor(dependency: ManifestPackageInfo): List<ManifestPackageInfo> =
4747
dependency.dependencies
4848
.mapNotNull { manifestPackagesByName[it] }
4949
.map { ManifestPackageInfo(it) }
5050

51-
override fun linkageFor(dependency: GleamPackageInfo): PackageLinkage =
51+
override fun linkageFor(dependency: ManifestPackageInfo): PackageLinkage =
5252
if (dependency.isProject(context)) PackageLinkage.PROJECT_DYNAMIC else PackageLinkage.DYNAMIC
5353

54-
override fun createPackage(dependency: GleamPackageInfo, issues: MutableCollection<Issue>): Package? =
54+
override fun createPackage(dependency: ManifestPackageInfo, issues: MutableCollection<Issue>): Package? =
5555
dependency.toOrtPackage(context, issues)
5656
}

plugins/package-managers/gleam/src/main/kotlin/GleamPackageInfo.kt renamed to plugins/package-managers/gleam/src/main/kotlin/ManifestPackageInfo.kt

Lines changed: 11 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -35,32 +35,20 @@ import org.ossreviewtoolkit.model.utils.prependPath
3535
import org.ossreviewtoolkit.plugins.packagemanagers.gleam.GleamManifest.Package.SourceType
3636
import org.ossreviewtoolkit.utils.ort.normalizeVcsUrl
3737

38-
/**
39-
* A sealed interface representing a Gleam dependency from the manifest.toml lockfile.
40-
*/
41-
internal sealed interface GleamPackageInfo {
42-
val name: String
43-
val dependencies: List<String>
44-
45-
fun toIdentifier(context: GleamProjectContext): Identifier
46-
fun toOrtPackage(context: GleamProjectContext, issues: MutableCollection<Issue>): Package?
47-
fun isProject(context: GleamProjectContext): Boolean
48-
}
49-
5038
/**
5139
* A dependency from the manifest.toml lockfile - already resolved.
5240
*/
53-
internal data class ManifestPackageInfo(private val pkg: GleamManifest.Package) : GleamPackageInfo {
54-
override val name = pkg.name
55-
override val dependencies = pkg.requirements
41+
internal data class ManifestPackageInfo(private val pkg: GleamManifest.Package) {
42+
val name = pkg.name
43+
val dependencies = pkg.requirements
5644

57-
override fun isProject(context: GleamProjectContext): Boolean {
45+
fun isProject(context: GleamProjectContext): Boolean {
5846
if (pkg.source != SourceType.LOCAL) return false
5947
val resolvedPath = context.workingDir.resolve(pkg.localPath.orEmpty()).canonicalFile
6048
return resolvedPath in context.projectDirs
6149
}
6250

63-
override fun toIdentifier(context: GleamProjectContext): Identifier {
51+
fun toIdentifier(): Identifier {
6452
val type = when (pkg.source) {
6553
SourceType.HEX -> PACKAGE_TYPE_HEX
6654
SourceType.GIT -> PACKAGE_TYPE_OTP
@@ -75,10 +63,10 @@ internal data class ManifestPackageInfo(private val pkg: GleamManifest.Package)
7563
)
7664
}
7765

78-
override fun toOrtPackage(context: GleamProjectContext, issues: MutableCollection<Issue>): Package? =
66+
fun toOrtPackage(context: GleamProjectContext, issues: MutableCollection<Issue>): Package? =
7967
when (pkg.source) {
8068
SourceType.HEX -> createHexPackage(context)
81-
SourceType.GIT -> createGitPackage(context)
69+
SourceType.GIT -> createGitPackage()
8270
SourceType.LOCAL -> createLocalPackage(context, issues)
8371
}
8472

@@ -88,7 +76,7 @@ internal data class ManifestPackageInfo(private val pkg: GleamManifest.Package)
8876
val vcs = VcsHost.parseUrl(repositoryUrl)
8977

9078
return Package(
91-
id = toIdentifier(context),
79+
id = toIdentifier(),
9280
cpe = generateCpe(repositoryUrl, pkg.version),
9381
authors = hexInfo?.let { resolveAuthors(it.owners, context.hexClient) }.orEmpty(),
9482
declaredLicenses = hexInfo?.meta?.licenses?.toSet().orEmpty(),
@@ -107,13 +95,13 @@ internal data class ManifestPackageInfo(private val pkg: GleamManifest.Package)
10795
)
10896
}
10997

110-
private fun createGitPackage(context: GleamProjectContext): Package {
98+
private fun createGitPackage(): Package {
11199
val vcs = VcsHost.parseUrl(pkg.repo.orEmpty()).let {
112100
if (!pkg.commit.isNullOrEmpty()) it.copy(revision = pkg.commit) else it
113101
}
114102

115103
return Package(
116-
id = toIdentifier(context),
104+
id = toIdentifier(),
117105
cpe = generateCpe(pkg.repo.orEmpty(), pkg.version),
118106
authors = emptySet(),
119107
declaredLicenses = emptySet(),
@@ -132,7 +120,7 @@ internal data class ManifestPackageInfo(private val pkg: GleamManifest.Package)
132120
if (isProject(context)) return null
133121

134122
val basePackage = Package(
135-
id = toIdentifier(context),
123+
id = toIdentifier(),
136124
authors = emptySet(),
137125
declaredLicenses = emptySet(),
138126
description = "",

0 commit comments

Comments
 (0)