@@ -12,12 +12,14 @@ internal class PluginConfiguration private constructor(
12
12
val distributionMode : DistributionMode ,
13
13
val targetPlatforms : Collection <TargetPlatform >,
14
14
val appleTargets : Collection <AppleTarget >,
15
- val zipFileName : ZipFileName
15
+ val zipFileName : ZipFileName ,
16
+ val xcFrameworkName : XCFrameworkName
16
17
) {
17
18
internal companion object {
18
19
fun of (extension : SwiftPackageExtension ): Either <List <PluginConfigurationError >, PluginConfiguration> {
19
20
val targetPlatforms = extension.targetPlatforms.platforms
20
21
val packageName = extension.getPackageName()
22
+ val xcFrameworkName = extension.getXCFrameworkName()
21
23
22
24
val errors = mutableListOf<PluginConfigurationError >().apply {
23
25
if (extension.swiftToolsVersion == null ) {
@@ -40,6 +42,8 @@ internal class PluginConfiguration private constructor(
40
42
packageName.leftValueOrNull?.let { error -> add(error) }
41
43
42
44
extension.zipFileName?.leftValueOrNull?.let { error -> add(error) }
45
+
46
+ extension.xcframeworkName?.leftValueOrNull?.let { error -> add(error) }
43
47
}
44
48
45
49
return if (errors.isEmpty()) {
@@ -52,21 +56,36 @@ internal class PluginConfiguration private constructor(
52
56
extension.distributionMode,
53
57
targetPlatforms,
54
58
extension.appleTargets,
55
- extension.zipFileName?.orNull ? : defaultZipFileName(packageName.orNull!! , extension.project)
59
+ extension.zipFileName?.orNull ? : defaultZipFileName(
60
+ packageName.orNull!! ,
61
+ extension.project
62
+ ),
63
+ extension.xcframeworkName?.orNull ? : defaultXCFrameworkName(
64
+ xcFrameworkName.orNull!!
65
+ )
56
66
)
57
67
)
58
68
} else {
59
69
Either .Left (errors)
60
70
}
61
71
}
62
72
63
- private fun SwiftPackageExtension.getPackageName (): Either <PluginConfigurationError , PackageName > = packageName
64
- ? : appleTargets.map { it.getFramework(buildConfiguration) }.firstOrNull()?.let { framework ->
65
- PackageName .of(framework.name.value)
66
- } ? : Either .Left (BlankPackageName )
73
+ private fun SwiftPackageExtension.getPackageName (): Either <PluginConfigurationError , PackageName > =
74
+ packageName
75
+ ? : appleTargets.map { it.getFramework(buildConfiguration) }.firstOrNull()
76
+ ?.let { framework ->
77
+ PackageName .of(framework.name.value)
78
+ } ? : Either .Left (BlankPackageName )
79
+
80
+ private fun SwiftPackageExtension.getXCFrameworkName (): Either <PluginConfigurationError , XCFrameworkName > {
81
+ return xcframeworkName ? : Either .Left (BlankXCFrameworkName )
82
+ }
67
83
68
84
private fun defaultZipFileName (packageName : PackageName , project : Project ) =
69
85
ZipFileName .of(" ${packageName.value} -${project.version} " ).orNull!!
86
+
87
+ private fun defaultXCFrameworkName (xcFrameworkName : XCFrameworkName ) =
88
+ XCFrameworkName .of(xcFrameworkName.value).orNull!!
70
89
}
71
90
72
91
internal sealed class PluginConfigurationError {
@@ -76,5 +95,6 @@ internal class PluginConfiguration private constructor(
76
95
object MissingAppleTargets : PluginConfigurationError()
77
96
object BlankPackageName : PluginConfigurationError()
78
97
object BlankZipFileName : PluginConfigurationError()
98
+ object BlankXCFrameworkName : PluginConfigurationError()
79
99
}
80
100
}
0 commit comments