diff --git a/PIF/Sources/PIFSupport/PIF.swift b/PIF/Sources/PIFSupport/PIF.swift index f413ffa..4f27562 100644 --- a/PIF/Sources/PIFSupport/PIF.swift +++ b/PIF/Sources/PIFSupport/PIF.swift @@ -45,6 +45,19 @@ public enum PIF { case dataReadingFailure(String) } +struct FailableDecodable: Decodable { + let value: T? + + init(from decoder: Decoder) throws { + do { + value = try T(from: decoder) + } catch { + logger.error("Failed to decode \(T.self): \(error)") + value = nil + } + } +} + /// The top-level PIF object. public struct TopLevelObject: Decodable { public let workspace: PIF.Workspace @@ -451,7 +464,8 @@ public enum PIF { return try BuildPhase.decode(container: &buildPhasesContainer, type: type) } - let dependencies = try container.decode([TargetDependency].self, forKey: .dependencies) + let rawdependencies = try container.decode([FailableDecodable].self, forKey: .dependencies) + let dependencies = rawdependencies.compactMap { $0.value } let impartedBuildProperties = try container.decodeIfPresent(BuildSettings.self, forKey: .impartedBuildProperties) logger.trace("---> Decoded BaseTarget: guid \(guid) name \(name)") @@ -515,7 +529,8 @@ public enum PIF { let guid = try container.decode(GUID.self, forKey: .guid) let name = try container.decode(String.self, forKey: .name) let buildConfigurations = try container.decode([BuildConfiguration].self, forKey: .buildConfigurations) - let dependencies = try container.decode([TargetDependency].self, forKey: .dependencies) + let rawdependencies = try container.decode([FailableDecodable].self, forKey: .dependencies) + let dependencies = rawdependencies.compactMap { $0.value } let type = try container.decode(String.self, forKey: .type) let buildPhases: [BuildPhase] diff --git a/Sources/GenIR/GenIR.swift b/Sources/GenIR/GenIR.swift index b42f436..c8a141a 100644 --- a/Sources/GenIR/GenIR.swift +++ b/Sources/GenIR/GenIR.swift @@ -23,7 +23,7 @@ struct DebuggingOptions: ParsableArguments { @Option(help: ArgumentHelp("Specifiy a logging level. The --debug flag will override this", visibility: .hidden)) var logLevel: LogLevelArgument? - @Flag(help: ArgumentHelp("Path to save a zip file containing debug data.", visibility: .hidden)) + @Flag(help: ArgumentHelp("If true, add captured debug data to the xcarchive.", visibility: .hidden)) var capture: Bool = false }