mirror of
https://github.com/yonaskolb/XcodeGen.git
synced 2026-03-18 20:02:25 +00:00
Add a new CopyFilesBuildPhase, "Embed ExtensionKit Extensions" (#1230)
* Embed ExtensionKit Extensions * Fix explicitFileType for extensionKit * Update ChangeLog * Fix if statement structure * Add a new example extension to Tests/Fixtures/TestProject/ * Update Tests/Fixtures/TestProject/Project.xcodeproj * Comment out example for extension kit extension in Tests/Fixtures/TestProject/ * Update Tests/Fixtures/TestProject/Project.xcodeproj
This commit is contained in:
@@ -128,8 +128,8 @@ public class PBXProjGenerator {
|
||||
|
||||
var explicitFileType: String?
|
||||
var lastKnownFileType: String?
|
||||
let fileType = Xcode.fileType(path: Path(target.filename))
|
||||
if target.platform == .macOS || target.platform == .watchOS || target.type == .framework {
|
||||
let fileType = Xcode.fileType(path: Path(target.filename), productType: target.type)
|
||||
if target.platform == .macOS || target.platform == .watchOS || target.type == .framework || target.type == .extensionKitExtension {
|
||||
explicitFileType = fileType
|
||||
} else {
|
||||
lastKnownFileType = fileType
|
||||
@@ -670,6 +670,7 @@ public class PBXProjGenerator {
|
||||
var copyWatchReferences: [PBXBuildFile] = []
|
||||
var packageDependencies: [XCSwiftPackageProductDependency] = []
|
||||
var extensions: [PBXBuildFile] = []
|
||||
var extensionKitExtensions: [PBXBuildFile] = []
|
||||
var systemExtensions: [PBXBuildFile] = []
|
||||
var appClips: [PBXBuildFile] = []
|
||||
var carthageFrameworksToEmbed: [String] = []
|
||||
@@ -736,8 +737,13 @@ public class PBXProjGenerator {
|
||||
// custom copy takes precedence
|
||||
customCopyDependenciesReferences.append(embedFile)
|
||||
} else if dependencyTarget.type.isExtension {
|
||||
// embed app extension
|
||||
extensions.append(embedFile)
|
||||
if dependencyTarget.type == .extensionKitExtension {
|
||||
// embed extension kit extension
|
||||
extensionKitExtensions.append(embedFile)
|
||||
} else {
|
||||
// embed app extension
|
||||
extensions.append(embedFile)
|
||||
}
|
||||
} else if dependencyTarget.type.isSystemExtension {
|
||||
// embed system extension
|
||||
systemExtensions.append(embedFile)
|
||||
@@ -1156,13 +1162,21 @@ public class PBXProjGenerator {
|
||||
|
||||
if !extensions.isEmpty {
|
||||
|
||||
let copyFilesPhase = addObject(
|
||||
let copyFilesPhase = addObject(
|
||||
getPBXCopyFilesBuildPhase(dstSubfolderSpec: .plugins, name: "Embed App Extensions", files: extensions)
|
||||
)
|
||||
|
||||
buildPhases.append(copyFilesPhase)
|
||||
}
|
||||
|
||||
if !extensionKitExtensions.isEmpty {
|
||||
|
||||
let copyFilesPhase = addObject(
|
||||
getPBXCopyFilesBuildPhase(dstSubfolderSpec: .productsDirectory, dstPath: "$(EXTENSIONS_FOLDER_PATH)", name: "Embed ExtensionKit Extensions", files: extensionKitExtensions)
|
||||
)
|
||||
buildPhases.append(copyFilesPhase)
|
||||
}
|
||||
|
||||
if !systemExtensions.isEmpty {
|
||||
|
||||
let copyFilesPhase = addObject(
|
||||
|
||||
@@ -53,10 +53,12 @@ extension Dictionary {
|
||||
|
||||
extension Xcode {
|
||||
|
||||
public static func fileType(path: Path) -> String? {
|
||||
public static func fileType(path: Path, productType: PBXProductType? = nil) -> String? {
|
||||
guard let fileExtension = path.extension else { return nil }
|
||||
switch fileExtension {
|
||||
switch (fileExtension, productType) {
|
||||
// cases that aren't handled (yet) in XcodeProj.
|
||||
case ("appex", .extensionKitExtension):
|
||||
return "wrapper.extensionkit-extension"
|
||||
default:
|
||||
// fallback to XcodeProj defaults
|
||||
return Xcode.filetype(extension: fileExtension)
|
||||
|
||||
Reference in New Issue
Block a user