@@ -5,6 +5,7 @@ import com.chromaticnoise.multiplatformswiftpackage.domain.PluginConfiguration.P
5
5
6
6
internal class PluginConfiguration private constructor(
7
7
val buildConfiguration : BuildConfiguration ,
8
+ val packageName : PackageName ,
8
9
val outputDirectory : OutputDirectory ,
9
10
val swiftToolsVersion : SwiftToolVersion ,
10
11
val distributionMode : DistributionMode ,
@@ -14,6 +15,7 @@ internal class PluginConfiguration private constructor(
14
15
internal companion object {
15
16
fun of (extension : SwiftPackageExtension ): Either <List <PluginConfigurationError >, PluginConfiguration> {
16
17
val targetPlatforms = extension.targetPlatforms.platforms
18
+ val packageName = extension.getPackageName()
17
19
18
20
val errors = mutableListOf<PluginConfigurationError >().apply {
19
21
if (extension.swiftToolsVersion == null ) {
@@ -32,12 +34,15 @@ internal class PluginConfiguration private constructor(
32
34
if (extension.appleTargets.isEmpty() && targetPlatforms.isNotEmpty()) {
33
35
add(MissingAppleTargets )
34
36
}
37
+
38
+ packageName.leftValueOrNull?.let { error -> add(error) }
35
39
}
36
40
37
41
return if (errors.isEmpty()) {
38
42
Either .Right (
39
43
PluginConfiguration (
40
44
extension.buildConfiguration,
45
+ packageName.orNull!! ,
41
46
extension.outputDirectory,
42
47
extension.swiftToolsVersion!! ,
43
48
extension.distributionMode,
@@ -49,12 +54,18 @@ internal class PluginConfiguration private constructor(
49
54
Either .Left (errors)
50
55
}
51
56
}
57
+
58
+ private fun SwiftPackageExtension.getPackageName (): Either <PluginConfigurationError , PackageName > = packageName
59
+ ? : appleTargets.getFrameworks(buildConfiguration).firstOrNull()?.let { framework ->
60
+ PackageName .of(framework.baseName)
61
+ } ? : Either .Left (InvalidPackageName (null ))
52
62
}
53
63
54
64
internal sealed class PluginConfigurationError {
55
65
object MissingSwiftToolsVersion : PluginConfigurationError()
56
66
data class InvalidTargetName (val name : String ) : PluginConfigurationError()
57
67
object MissingTargetPlatforms : PluginConfigurationError()
58
68
object MissingAppleTargets : PluginConfigurationError()
69
+ data class InvalidPackageName (val name : String? ) : PluginConfigurationError()
59
70
}
60
71
}
0 commit comments