feat(RES-58): Add new parameter "bundle" (#19)
All checks were successful
gitea-openium/resgen.swift/pipeline/head This commit looks good
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:
@@ -14,21 +14,23 @@ enum ImageExtensionGenerator {
|
||||
|
||||
static func generateExtensionFile(
|
||||
images: [ParsedImage],
|
||||
staticVar: Bool,
|
||||
isStatic: Bool,
|
||||
inputFilename: String,
|
||||
extensionName: String,
|
||||
extensionFilePath: String,
|
||||
isSwiftUI: Bool,
|
||||
visibility: ExtensionVisibility
|
||||
visibility: ExtensionVisibility,
|
||||
assetBundle: AssetBundle
|
||||
) {
|
||||
// Create extension conten1t
|
||||
let extensionContent = Self.getExtensionContent(
|
||||
images: images,
|
||||
staticVar: staticVar,
|
||||
isStatic: isStatic,
|
||||
extensionName: extensionName,
|
||||
inputFilename: inputFilename,
|
||||
isSwiftUI: isSwiftUI,
|
||||
visibility: visibility
|
||||
visibility: visibility,
|
||||
assetBundle: assetBundle
|
||||
)
|
||||
|
||||
// Write content
|
||||
@@ -44,11 +46,12 @@ enum ImageExtensionGenerator {
|
||||
|
||||
static func getExtensionContent(
|
||||
images: [ParsedImage],
|
||||
staticVar: Bool,
|
||||
isStatic: Bool,
|
||||
extensionName: String,
|
||||
inputFilename: String,
|
||||
isSwiftUI: Bool,
|
||||
visibility: ExtensionVisibility
|
||||
visibility: ExtensionVisibility,
|
||||
assetBundle: AssetBundle
|
||||
) -> String {
|
||||
[
|
||||
Self.getHeader(
|
||||
@@ -58,9 +61,10 @@ enum ImageExtensionGenerator {
|
||||
),
|
||||
Self.getProperties(
|
||||
images: images,
|
||||
staticVar: staticVar,
|
||||
isStatic: isStatic,
|
||||
isSwiftUI: isSwiftUI,
|
||||
visibility: visibility
|
||||
visibility: visibility,
|
||||
assetBundle: assetBundle
|
||||
),
|
||||
Self.getFooter()
|
||||
]
|
||||
@@ -84,13 +88,20 @@ enum ImageExtensionGenerator {
|
||||
|
||||
private static func getProperties(
|
||||
images: [ParsedImage],
|
||||
staticVar: Bool,
|
||||
isStatic: 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: isStatic,
|
||||
isSwiftUI: isSwiftUI,
|
||||
visibility: visibility,
|
||||
assetBundle: assetBundle
|
||||
)
|
||||
return "\n\(property)"
|
||||
}
|
||||
.joined(separator: "\n")
|
||||
}
|
||||
|
@@ -57,12 +57,13 @@ struct Images: ParsableCommand {
|
||||
let extensionFilePath = options.extensionFilePath {
|
||||
ImageExtensionGenerator.generateExtensionFile(
|
||||
images: imagesToGenerate,
|
||||
staticVar: options.staticMembers,
|
||||
isStatic: options.staticMembers,
|
||||
inputFilename: options.inputFilenameWithoutExt,
|
||||
extensionName: extensionName,
|
||||
extensionFilePath: extensionFilePath,
|
||||
isSwiftUI: true,
|
||||
visibility: options.extensionVisibility
|
||||
visibility: options.extensionVisibility,
|
||||
assetBundle: options.assetBundle
|
||||
)
|
||||
}
|
||||
|
||||
@@ -70,12 +71,13 @@ struct Images: ParsableCommand {
|
||||
let extensionFilePathUIKit = options.extensionFilePathUIKit {
|
||||
ImageExtensionGenerator.generateExtensionFile(
|
||||
images: imagesToGenerate,
|
||||
staticVar: options.staticMembers,
|
||||
isStatic: options.staticMembers,
|
||||
inputFilename: options.inputFilenameWithoutExt,
|
||||
extensionName: extensionNameUIKit,
|
||||
extensionFilePath: extensionFilePathUIKit,
|
||||
isSwiftUI: false,
|
||||
visibility: options.extensionVisibility
|
||||
visibility: options.extensionVisibility,
|
||||
assetBundle: options.assetBundle
|
||||
)
|
||||
}
|
||||
|
||||
|
@@ -5,6 +5,8 @@
|
||||
// Created by Thibaut Schmitt on 24/01/2022.
|
||||
//
|
||||
|
||||
// CPD-OFF
|
||||
|
||||
import ArgumentParser
|
||||
import Foundation
|
||||
import ToolCore
|
||||
@@ -51,6 +53,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() }
|
||||
@@ -113,3 +120,5 @@ extension ImagesOptions {
|
||||
.lastPathComponent
|
||||
}
|
||||
}
|
||||
|
||||
// CPD-ON
|
||||
|
@@ -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)!
|
||||
}
|
||||
"""
|
||||
}
|
||||
|
Reference in New Issue
Block a user