Sergei Gagarin
10/17/2025, 3:59 PMtasks.matching { task -> task.name.contains("GenerateSPMPackage") }.configureEach {
val swiftBundleFileSystem = project.objects.newInstance<SwiftBundlingFileSystem>()
val swiftSourceDir = layout.projectDirectory.dir("src/iosMain/swift")
inputs.dir(swiftSourceDir).withPathSensitivity(PathSensitivity.RELATIVE)
doLast {
if (!swiftSourceDir.asFile.isDirectory) {
logger.warn("Swift source directory $swiftSourceDir does not exist or is not a directory; Skipping Swift Bundling.")
return@doLast
}
val moduleName = inputs.properties["swiftApiModuleName"] as? String
if (moduleName.isNullOrBlank()) {
logger.warn("Missing 'swiftApiModuleName' on ${name}; Skipping Swift Bundling.")
return@doLast
}
val sourcesDir = outputs.files.find { dir -> dir.name == "Sources" }
if (sourcesDir == null) {
logger.warn("Could not locate 'Sources' in outputs of ${name}; Skipping Swift Bundling.")
return@doLast
}
val destDir = sourcesDir.resolve(moduleName)
swiftBundleFileSystem.fs.copy {
from(swiftSourceDir) {
include("**/*.swift")
includeEmptyDirs = false
}
into(destDir)
}
}
}
interface SwiftBundlingFileSystem {
@get:Inject val fs: FileSystemOperations
}Artem Olkov
10/20/2025, 7:44 AMa way to bundle Swift codeCan you please elaborate what you are trying to do? If you mean this - then no, swift export currently supports only direct source based integration. Please vote for the ticket to highlight your interest in it.
Sergei Gagarin
10/20/2025, 10:43 AMArtem Olkov
10/20/2025, 11:52 AM