Handle bundle for Image and Color
Some checks reported warnings
gitea-openium/resgen.swift/pipeline/head This commit is unstable

This commit is contained in:
2025-07-25 10:03:14 +02:00
parent 3510b60e97
commit d7dd37c32d
12 changed files with 116 additions and 63 deletions

View File

@@ -63,7 +63,8 @@ struct Colors: ParsableCommand {
extensionName: extensionName,
extensionFilePath: extensionFilePath,
isSwiftUI: true,
visibility: options.extensionVisibility
visibility: options.extensionVisibility,
assetBundle: options.assetBundle
)
}
@@ -76,7 +77,8 @@ struct Colors: ParsableCommand {
extensionName: extensionNameUIKit,
extensionFilePath: extensionFilePathUIKit,
isSwiftUI: false,
visibility: options.extensionVisibility
visibility: options.extensionVisibility,
assetBundle: options.assetBundle
)
}

View File

@@ -44,6 +44,11 @@ struct ColorsToolOptions: ParsableArguments {
)
var extensionVisibility: ExtensionVisibility = .internal
@Option(
help: "Bundle where the asset are generated"
)
var assetBundle: AssetBundle = .main
@Option(
help: "Path where to generate the extension.",
transform: { $0.replaceTiltWithHomeDirectoryPath() }

View File

@@ -21,7 +21,8 @@ struct ColorExtensionGenerator {
extensionName: String,
extensionFilePath: String,
isSwiftUI: Bool,
visibility: ExtensionVisibility
visibility: ExtensionVisibility,
assetBundle: AssetBundle
) {
// Create extension content
let extensionContent = Self.getExtensionContent(
@@ -29,7 +30,8 @@ struct ColorExtensionGenerator {
staticVar: staticVar,
extensionName: extensionName,
isSwiftUI: isSwiftUI,
visibility: visibility
visibility: visibility,
assetBundle: assetBundle
)
// Write content
@@ -48,7 +50,8 @@ struct ColorExtensionGenerator {
staticVar: Bool,
extensionName: String,
isSwiftUI: Bool,
visibility: ExtensionVisibility
visibility: ExtensionVisibility,
assetBundle: AssetBundle
) -> String {
[
Self.getHeader(
@@ -59,7 +62,8 @@ struct ColorExtensionGenerator {
for: colors,
withStaticVar: staticVar,
isSwiftUI: isSwiftUI,
visibility: visibility
visibility: visibility,
assetBundle: assetBundle
),
Self.getFooter()
]
@@ -87,13 +91,15 @@ struct ColorExtensionGenerator {
for colors: [ParsedColor],
withStaticVar staticVar: Bool,
isSwiftUI: Bool,
visibility: ExtensionVisibility
visibility: ExtensionVisibility,
assetBundle: AssetBundle
) -> String {
colors.map {
$0.getColorProperty(
isStatic: staticVar,
isSwiftUI: isSwiftUI,
visibility: visibility
visibility: visibility,
assetBundle: assetBundle
)
}
.joined(separator: "\n\n")

View File

@@ -83,20 +83,21 @@ struct ParsedColor {
func getColorProperty(
isStatic: Bool,
isSwiftUI: Bool,
visibility: ExtensionVisibility
visibility: ExtensionVisibility,
assetBundle: AssetBundle
) -> String {
if isSwiftUI {
return """
/// Color \(name) is \(light) (light) or \(dark) (dark)"
\(visibility) \(isStatic ? "static " : "")var \(name): Color {
Color("\(name)")
Color("\(name)", bundle: Bundle.\(assetBundle))
}
"""
}
return """
/// Color \(name) is \(light) (light) or \(dark) (dark)"
\(isStatic ? "" : "@objc ")\(visibility) \(isStatic ? "static " : "")var \(name): UIColor {
UIColor(named: "\(name)")!
UIColor(named: "\(name)", in: Bundle.\(assetBundle), compatibleWith: nil)!
}
"""
}

View File

@@ -19,7 +19,8 @@ enum ImageExtensionGenerator {
extensionName: String,
extensionFilePath: String,
isSwiftUI: Bool,
visibility: ExtensionVisibility
visibility: ExtensionVisibility,
assetBundle: AssetBundle
) {
// Create extension conten1t
let extensionContent = Self.getExtensionContent(
@@ -28,7 +29,8 @@ enum ImageExtensionGenerator {
extensionName: extensionName,
inputFilename: inputFilename,
isSwiftUI: isSwiftUI,
visibility: visibility
visibility: visibility,
assetBundle: assetBundle
)
// Write content
@@ -48,7 +50,8 @@ enum ImageExtensionGenerator {
extensionName: String,
inputFilename: String,
isSwiftUI: Bool,
visibility: ExtensionVisibility
visibility: ExtensionVisibility,
assetBundle: AssetBundle
) -> String {
[
Self.getHeader(
@@ -60,7 +63,8 @@ enum ImageExtensionGenerator {
images: images,
staticVar: staticVar,
isSwiftUI: isSwiftUI,
visibility: visibility
visibility: visibility,
assetBundle: assetBundle
),
Self.getFooter()
]
@@ -86,11 +90,18 @@ enum ImageExtensionGenerator {
images: [ParsedImage],
staticVar: Bool,
isSwiftUI: Bool,
visibility: ExtensionVisibility
visibility: ExtensionVisibility,
assetBundle: AssetBundle
) -> String {
images
.map {
"\n\($0.getImageProperty(isStatic: staticVar, isSwiftUI: isSwiftUI, visibility: visibility))"
.map { parsedImage in
let property = parsedImage.getImageProperty(
isStatic: staticVar,
isSwiftUI: isSwiftUI,
visibility: visibility,
assetBundle: assetBundle
)
return "\n\(property)"
}
.joined(separator: "\n")
}

View File

@@ -62,7 +62,8 @@ struct Images: ParsableCommand {
extensionName: extensionName,
extensionFilePath: extensionFilePath,
isSwiftUI: true,
visibility: options.extensionVisibility
visibility: options.extensionVisibility,
assetBundle: options.assetBundle
)
}
@@ -75,7 +76,8 @@ struct Images: ParsableCommand {
extensionName: extensionNameUIKit,
extensionFilePath: extensionFilePathUIKit,
isSwiftUI: false,
visibility: options.extensionVisibility
visibility: options.extensionVisibility,
assetBundle: options.assetBundle
)
}

View File

@@ -51,6 +51,11 @@ struct ImagesOptions: ParsableArguments {
)
var extensionVisibility: ExtensionVisibility = .internal
@Option(
help: "Bundle where the asset are generated"
)
var assetBundle: AssetBundle = .main
@Option(
help: "Path where to generate the extension.",
transform: { $0.replaceTiltWithHomeDirectoryPath() }

View File

@@ -130,17 +130,22 @@ struct ParsedImage {
// MARK: - Extension property
func getImageProperty(isStatic: Bool, isSwiftUI: Bool, visibility: ExtensionVisibility) -> String {
func getImageProperty(
isStatic: Bool,
isSwiftUI: Bool,
visibility: ExtensionVisibility,
assetBundle: AssetBundle
) -> String {
if isSwiftUI {
return """
\(visibility) \(isStatic ? "static " : "")var \(name): Image {
Image("\(name)")
Image("\(name)", bundle: Bundle.\(assetBundle))
}
"""
}
return """
\(visibility) \(isStatic ? "static " : "")var \(name): UIImage {
UIImage(named: "\(name)")!
UIImage(named: "\(name)", in: Bundle.\(assetBundle), with: nil)!
}
"""
}