feat(RES-58): Add new parameter "bundle" (#19)
All checks were successful
gitea-openium/resgen.swift/pipeline/head This commit looks good

Add bundle parameter to define if resource should be load from Bundle.main (app) or Bundle.module (SPM package)

Reviewed-on: #19
This commit is contained in:
2025-07-25 16:14:36 +02:00
parent 5ad219ae89
commit f329386ccf
37 changed files with 866 additions and 403 deletions

View File

@@ -11,7 +11,7 @@ import ToolCore
extension StringsFileGeneratorTests {
static func getExtensionContentExpectation(
staticVar: Bool,
isStatic: Bool,
s1DefOneFr: String = "Section Un - Definition Un",
s1DefOneComment: String = "",
s1DefTwoFr: String = "Section Un - Definition Deux",
@@ -20,7 +20,8 @@ extension StringsFileGeneratorTests {
s2DefOneComment: String = "",
s2DefTwoFr: String = "Section Deux - Definition Deux",
s2DefTwoComment: String = "",
visibility: ExtensionVisibility = .internal
visibility: ExtensionVisibility = .internal,
assetBundle: AssetBundle = .main
) -> String {
"""
// Generated by ResgenSwift.Strings.Stringium \(ResgenSwiftVersion)
@@ -54,8 +55,8 @@ extension StringsFileGeneratorTests {
///
/// Comment :
/// \(s1DefOneComment.isEmpty ? "No comment" : s1DefOneComment)
\(visibility) \(staticVar ? "static " : "")var s1_def_one: String {
NSLocalizedString("s1_def_one", tableName: kStringsFileName, bundle: Bundle.main, value: "Section Un - Definition Un", comment: "\(s1DefOneComment)")
\(visibility) \(isStatic ? "static " : "")var s1_def_one: String {
NSLocalizedString("s1_def_one", tableName: kStringsFileName, bundle: Bundle.\(assetBundle), value: "Section Un - Definition Un", comment: "\(s1DefOneComment)")
}
/// Translation in fr :
@@ -63,8 +64,8 @@ extension StringsFileGeneratorTests {
///
/// Comment :
/// \(s1DefTwoComment.isEmpty ? "No comment" : s1DefTwoComment)
\(visibility) \(staticVar ? "static " : "")var s1_def_two: String {
NSLocalizedString("s1_def_two", tableName: kStringsFileName, bundle: Bundle.main, value: "Section Un - Definition Deux", comment: "\(s1DefTwoComment)")
\(visibility) \(isStatic ? "static " : "")var s1_def_two: String {
NSLocalizedString("s1_def_two", tableName: kStringsFileName, bundle: Bundle.\(assetBundle), value: "Section Un - Definition Deux", comment: "\(s1DefTwoComment)")
}
// MARK: - section_two
@@ -74,8 +75,8 @@ extension StringsFileGeneratorTests {
///
/// Comment :
/// \(s2DefOneComment.isEmpty ? "No comment" : s2DefOneComment)
\(visibility) \(staticVar ? "static " : "")var s2_def_one: String {
NSLocalizedString("s2_def_one", tableName: kStringsFileName, bundle: Bundle.main, value: "Section Deux - Definition Un", comment: "\(s2DefOneComment)")
\(visibility) \(isStatic ? "static " : "")var s2_def_one: String {
NSLocalizedString("s2_def_one", tableName: kStringsFileName, bundle: Bundle.\(assetBundle), value: "Section Deux - Definition Un", comment: "\(s2DefOneComment)")
}
/// Translation in fr :
@@ -83,8 +84,8 @@ extension StringsFileGeneratorTests {
///
/// Comment :
/// \(s2DefTwoComment.isEmpty ? "No comment" : s2DefTwoComment)
\(visibility) \(staticVar ? "static " : "")var s2_def_two: String {
NSLocalizedString("s2_def_two", tableName: kStringsFileName, bundle: Bundle.main, value: "Section Deux - Definition Deux", comment: "\(s2DefTwoComment)")
\(visibility) \(isStatic ? "static " : "")var s2_def_two: String {
NSLocalizedString("s2_def_two", tableName: kStringsFileName, bundle: Bundle.\(assetBundle), value: "Section Deux - Definition Deux", comment: "\(s2DefTwoComment)")
}
}
"""

View File

@@ -377,16 +377,17 @@ final class StringsFileGeneratorTests: XCTestCase {
sections: [sectionOne, sectionTwo],
defaultLang: "fr",
tags: ["ios", "iosonly", "notranslation"],
staticVar: false,
isStatic: false,
inputFilename: "myInputFilename",
extensionName: "GenStrings",
extensionSuffix: "strings",
visibility: .internal
visibility: .internal,
assetBundle: .main
)
// Expect
let expect = Self.getExtensionContentExpectation(
staticVar: false
isStatic: false
)
if extensionContent != expect {
@@ -411,16 +412,17 @@ final class StringsFileGeneratorTests: XCTestCase {
sections: [sectionOne, sectionTwo],
defaultLang: "fr",
tags: ["ios", "iosonly", "notranslation"],
staticVar: false,
isStatic: false,
inputFilename: "myInputFilename",
extensionName: "GenStrings",
extensionSuffix: "strings",
visibility: .public
visibility: .public,
assetBundle: .main
)
// Expect
let expect = Self.getExtensionContentExpectation(
staticVar: false,
isStatic: false,
s1DefOneComment: "This is a comment",
s1DefTwoComment: "This is a comment",
s2DefOneComment: "This is a comment",
@@ -435,7 +437,7 @@ final class StringsFileGeneratorTests: XCTestCase {
}
// MARK: - Extension Content Static
func testGeneratedExtensionContentWithStaticVar() {
func testGeneratedExtensionContentWithIsStatic() {
// Given
let sectionOne = Section.Mock.getSectionOne()
let sectionTwo = Section.Mock.getSectionTwo()
@@ -445,17 +447,19 @@ final class StringsFileGeneratorTests: XCTestCase {
sections: [sectionOne, sectionTwo],
defaultLang: "fr",
tags: ["ios", "iosonly", "notranslation"],
staticVar: true,
isStatic: true,
inputFilename: "myInputFilename",
extensionName: "GenStrings",
extensionSuffix: "strings",
visibility: .package
visibility: .package,
assetBundle: .module
)
// Expect
let expect = Self.getExtensionContentExpectation(
staticVar: true,
visibility: .package
isStatic: true,
visibility: .package,
assetBundle: .module
)
if extensionContent != expect {
@@ -464,7 +468,7 @@ final class StringsFileGeneratorTests: XCTestCase {
XCTAssertEqual(extensionContent.adaptForXCTest(), expect.adaptForXCTest())
}
func testGeneratedExtensionContentWithStaticVarWithComment() {
func testGeneratedExtensionContentWithIsStaticWithComment() {
// Given
let sectionOne = Section.Mock.getSectionOne(
defOneComment: "This is a comment",
@@ -480,21 +484,23 @@ final class StringsFileGeneratorTests: XCTestCase {
sections: [sectionOne, sectionTwo],
defaultLang: "fr",
tags: ["ios", "iosonly", "notranslation"],
staticVar: true,
isStatic: true,
inputFilename: "myInputFilename",
extensionName: "GenStrings",
extensionSuffix: "strings",
visibility: .internal
visibility: .internal,
assetBundle: .module
)
// Expect
let expect = Self.getExtensionContentExpectation(
staticVar: true,
isStatic: true,
s1DefOneComment: "This is a comment",
s1DefTwoComment: "This is a comment",
s2DefOneComment: "This is a comment",
s2DefTwoComment: "This is a comment",
visibility: .internal
visibility: .internal,
assetBundle: .module
)
if extensionContent != expect {