Skip to content

Commit

Permalink
Add support for runOncePerArchitecture (#570)
Browse files Browse the repository at this point in the history
* Add support for runOncePerArchitecture

* Update changelog
  • Loading branch information
sascha authored Oct 28, 2020
1 parent e38a1aa commit 2426b7b
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 3 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
### Fixed

- explicitFileType corrected for .bundle https://github.com/tuist/XcodeProj/pull/563 by @adamkhazi
### Added
- Added `runOncePerArchitecture` attribute to `PBXBuildRule` https://github.com/tuist/XcodeProj/pull/570 by @sascha

### Added

Expand Down
12 changes: 11 additions & 1 deletion Sources/XcodeProj/Objects/BuildPhase/PBXBuildRule.swift
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ public final class PBXBuildRule: PBXObject {
/// Element script.
public var script: String?

/// Element run once per architecture.
public var runOncePerArchitecture: Bool?

// MARK: - Init

public init(compilerSpec: String,
Expand All @@ -41,7 +44,8 @@ public final class PBXBuildRule: PBXObject {
outputFiles: [String] = [],
inputFiles: [String]? = nil,
outputFilesCompilerFlags: [String]? = nil,
script: String? = nil) {
script: String? = nil,
runOncePerArchitecture: Bool? = nil) {
self.compilerSpec = compilerSpec
self.filePatterns = filePatterns
self.fileType = fileType
Expand All @@ -51,6 +55,7 @@ public final class PBXBuildRule: PBXObject {
self.inputFiles = inputFiles
self.outputFilesCompilerFlags = outputFilesCompilerFlags
self.script = script
self.runOncePerArchitecture = runOncePerArchitecture
super.init()
}

Expand All @@ -66,6 +71,7 @@ public final class PBXBuildRule: PBXObject {
case inputFiles
case outputFilesCompilerFlags
case script
case runOncePerArchitecture
}

public required init(from decoder: Decoder) throws {
Expand All @@ -79,6 +85,7 @@ public final class PBXBuildRule: PBXObject {
inputFiles = try container.decodeIfPresent(.inputFiles)
outputFilesCompilerFlags = try container.decodeIfPresent(.outputFilesCompilerFlags)
script = try container.decodeIfPresent(.script)
runOncePerArchitecture = try container.decodeIntBoolIfPresent(.runOncePerArchitecture)
try super.init(from: decoder)
}
}
Expand Down Expand Up @@ -110,6 +117,9 @@ extension PBXBuildRule: PlistSerializable {
if let script = script {
dictionary["script"] = .string(CommentedString(script))
}
if let runOncePerArchitecture = runOncePerArchitecture {
dictionary["runOncePerArchitecture"] = .string(CommentedString("\(runOncePerArchitecture.int)"))
}
return (key: CommentedString(reference, comment: PBXBuildRule.isa),
value: .dictionary(dictionary))
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ extension PBXBuildRule {
if outputFiles != rhs.outputFiles { return false }
if outputFilesCompilerFlags != rhs.outputFilesCompilerFlags { return false }
if script != rhs.script { return false }
if runOncePerArchitecture != rhs.runOncePerArchitecture { return false }
return super.isEqual(to: rhs)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ final class PBXBuildRuleTests: XCTestCase {
name: "rule",
outputFiles: ["a", "b"],
outputFilesCompilerFlags: ["-1", "-2"],
script: "script")
script: "script",
runOncePerArchitecture: false)
}

func test_init_initializesTheBuildRuleWithTheRightAttributes() {
Expand All @@ -26,6 +27,7 @@ final class PBXBuildRuleTests: XCTestCase {
XCTAssertEqual(subject.outputFiles, ["a", "b"])
XCTAssertEqual(subject.outputFilesCompilerFlags ?? [], ["-1", "-2"])
XCTAssertEqual(subject.script, "script")
XCTAssertEqual(subject.runOncePerArchitecture, false)
}

func test_isa_returnsTheCorrectValue() {
Expand All @@ -40,7 +42,8 @@ final class PBXBuildRuleTests: XCTestCase {
name: "rule",
outputFiles: ["a", "b"],
outputFilesCompilerFlags: ["-1", "-2"],
script: "script")
script: "script",
runOncePerArchitecture: false)
XCTAssertEqual(subject, another)
}
}

0 comments on commit 2426b7b

Please sign in to comment.