Add visibility parameters to control scope of generated extension
Some checks failed
gitea-openium/resgen.swift/pipeline/head There was a failure building this commit

This commit is contained in:
2025-07-18 11:53:46 +02:00
parent beca2c6b2b
commit 7162f13166
61 changed files with 1511 additions and 791 deletions

View File

@ -23,8 +23,8 @@ enum AnalyticsGenerator {
target: String,
tags: [String],
staticVar: Bool,
extensionName: String,
extensionFilePath: String
outputFile: String,
visibility: ExtensionVisibility
) {
// Get target type from enum
let targetsString: [String] = target.components(separatedBy: " ")
@ -44,15 +44,15 @@ enum AnalyticsGenerator {
sections: sections,
tags: tags,
staticVar: staticVar,
extensionName: extensionName
visibility: visibility
)
// Write content
let extensionFilePathURL = URL(fileURLWithPath: extensionFilePath)
let outputFilePathURL = URL(fileURLWithPath: outputFile)
do {
try extensionFileContent.write(to: extensionFilePathURL, atomically: false, encoding: .utf8)
try extensionFileContent.write(to: outputFilePathURL, atomically: false, encoding: .utf8)
} catch {
let error = AnalyticsError.writeFile(extensionFilePath, error.localizedDescription)
let error = AnalyticsError.writeFile(outputFile, error.localizedDescription)
print(error.description)
Analytics.exit(withError: error)
}
@ -65,18 +65,19 @@ enum AnalyticsGenerator {
sections: [AnalyticsCategory],
tags: [String],
staticVar: Bool,
extensionName: String
visibility: ExtensionVisibility
) -> String {
[
getHeader(
targets: targets,
extensionClassname: extensionName,
staticVar: staticVar
staticVar: staticVar,
visibility: visibility
),
getProperties(
sections: sections,
tags: tags,
staticVar: staticVar
staticVar: staticVar,
visibility: visibility
),
getFooter()
]
@ -87,23 +88,23 @@ enum AnalyticsGenerator {
private static func getHeader(
targets: [TrackerType],
extensionClassname: String,
staticVar: Bool
staticVar: Bool,
visibility: ExtensionVisibility
) -> String {
"""
// Generated by ResgenSwift.\(Analytics.toolName) \(ResgenSwiftVersion)
\(Self.getImport(targets: targets))
\(Self.getAnalyticsProtocol(targets: targets))
\(Self.getAnalyticsProtocol(targets: targets, visibility: visibility))
\(Self.getTrackerTypeEnum(targets: targets))
\(Self.getTrackerTypeEnum(targets: targets, visibility: visibility))
// MARK: - Manager
class AnalyticsManager {
\(visibility) class AnalyticsManager {
static var shared = AnalyticsManager()
\(visibility) static var shared = AnalyticsManager()
private init() {}
@ -111,15 +112,18 @@ enum AnalyticsGenerator {
var managers: [TrackerType: AnalyticsManagerProtocol] = [:]
\(Self.getEnabledContent())
\(Self.getEnabledContent(visibility: visibility))
\(Self.getAnalyticsProperties(targets: targets))
\(Self.getAnalyticsProperties(targets: targets, visibility: visibility))
\(Self.getPrivateLogFunction())
"""
}
private static func getTrackerTypeEnum(targets: [TrackerType]) -> String {
private static func getTrackerTypeEnum(
targets: [TrackerType],
visibility: ExtensionVisibility
) -> String {
var result: [String] = []
targets.forEach { type in
result.append(" case \(type)")
@ -128,14 +132,16 @@ enum AnalyticsGenerator {
return """
// MARK: - Traker Type
enum TrackerType: CaseIterable {
\(visibility) enum TrackerType: CaseIterable {
\(result.joined(separator: "\n"))
}
"""
}
private static func getEnabledContent() -> String {
private static func getEnabledContent(
visibility: ExtensionVisibility
) -> String {
"""
private var isEnabled: Bool {
if ProcessInfo.processInfo.environment["XCODE_RUNNING_FOR_PREVIEWS"] == "1" {
@ -157,11 +163,11 @@ enum AnalyticsGenerator {
}
}
func enableAnalytics(_ analytics: [TrackerType] = TrackerType.allCases) {
\(visibility) func enableAnalytics(_ analytics: [TrackerType] = TrackerType.allCases) {
setAnalytics(enable: true, analytics)
}
func disableAnalytics(_ analytics: [TrackerType] = TrackerType.allCases) {
\(visibility) func disableAnalytics(_ analytics: [TrackerType] = TrackerType.allCases) {
setAnalytics(enable: false, analytics)
}
"""
@ -223,15 +229,18 @@ enum AnalyticsGenerator {
"""
}
private static func getAnalyticsProperties(targets: [TrackerType]) -> String {
private static func getAnalyticsProperties(
targets: [TrackerType],
visibility: ExtensionVisibility
) -> String {
var header = ""
var content: [String] = []
let footer = " }"
if targets.contains(TrackerType.matomo) {
header = "func configure(siteId: String, url: String) {"
header = "\(visibility) func configure(siteId: String, url: String) {"
} else if targets.contains(TrackerType.firebase) {
header = "func configure() {"
header = "\(visibility) func configure() {"
}
if targets.contains(TrackerType.matomo) {
@ -255,11 +264,14 @@ enum AnalyticsGenerator {
.joined(separator: "\n")
}
private static func getAnalyticsProtocol(targets: [TrackerType]) -> String {
private static func getAnalyticsProtocol(
targets: [TrackerType],
visibility: ExtensionVisibility
) -> String {
let proto = """
// MARK: - Protocol
protocol AnalyticsManagerProtocol {
\(visibility) protocol AnalyticsManagerProtocol {
func logScreen(
name: String,
@ -294,7 +306,8 @@ enum AnalyticsGenerator {
private static func getProperties(
sections: [AnalyticsCategory],
tags: [String],
staticVar: Bool
staticVar: Bool,
visibility: ExtensionVisibility
) -> String {
sections
.compactMap { section in
@ -310,9 +323,9 @@ enum AnalyticsGenerator {
}
if staticVar {
res += "\n\n\(definition.getStaticProperty())"
res += "\n\n\(definition.getStaticProperty(visibility: visibility))"
} else {
res += "\n\n\(definition.getProperty())"
res += "\n\n\(definition.getProperty(visibility: visibility))"
}
}
return res