Skip to content

Commit 0eda5ce

Browse files
authored
Process any files in .lproj by default (swiftlang#2704)
So far we have only been processing resources if they are in a folder that has explicitly been declared as a resource, but we should do it by default. rdar://problem/61957063
1 parent 0cab286 commit 0eda5ce

File tree

3 files changed

+17
-3
lines changed

3 files changed

+17
-3
lines changed

Fixtures/Resources/Localized/Package.swift

+1-3
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@ let package = Package(
55
name: "Localized",
66
defaultLocalization: "es",
77
targets: [
8-
.target(name: "exe", resources: [
9-
.process("Resources"),
10-
]),
8+
.target(name: "exe"),
119
]
1210
)

Sources/PackageLoading/TargetSourcesBuilder.swift

+2
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,8 @@ public struct TargetSourcesBuilder {
200200

201201
if let needle = effectiveRules.first(where: { $0.match(path: path, toolsVersion: toolsVersion) }) {
202202
matchedRule = Rule(rule: needle.rule, localization: nil)
203+
} else if path.parentDirectory.extension == Resource.localizationDirectoryExtension {
204+
matchedRule = Rule(rule: .processResource, localization: nil)
203205
}
204206
}
205207

Tests/PackageLoadingTests/TargetSourcesBuilderTests.swift

+14
Original file line numberDiff line numberDiff line change
@@ -406,6 +406,20 @@ class TargetSourcesBuilderTests: XCTestCase {
406406
}
407407
}
408408

409+
func testLocalizedImage() {
410+
let fs = InMemoryFileSystem(emptyFiles:
411+
"/Foo/fr.lproj/Image.png",
412+
"/Foo/es.lproj/Image.png"
413+
)
414+
415+
build(target: TargetDescription(name: "Foo"), defaultLocalization: "fr", toolsVersion: .v5_3, fs: fs) { _, resources, diagnostics in
416+
XCTAssertEqual(Set(resources), [
417+
Resource(rule: .process, path: AbsolutePath("/Foo/fr.lproj/Image.png"), localization: "fr"),
418+
Resource(rule: .process, path: AbsolutePath("/Foo/es.lproj/Image.png"), localization: "es"),
419+
])
420+
}
421+
}
422+
409423
func testInfoPlistResource() {
410424
do {
411425
let target = TargetDescription(name: "Foo", resources: [

0 commit comments

Comments
 (0)