RES-73 Ajout d'un debugMode iOS
Some checks failed
openium/resgen.swift/pipeline/head There was a failure building this commit

This commit is contained in:
2025-10-20 15:21:47 +02:00
parent f1ca8e92b7
commit f0aac3a91b
4 changed files with 79 additions and 105 deletions

View File

@@ -1,12 +1,12 @@
// Generated by ResgenSwift.Analytics 2.2.0
import Foundation
import MatomoTracker
import FirebaseAnalytics
import os
// MARK: - Protocol
public protocol AnalyticsManagerProtocol {
internal protocol AnalyticsManagerProtocol {
func logScreen(
name: String,
@@ -24,72 +24,6 @@ public protocol AnalyticsManagerProtocol {
func setEnable(_ enable: Bool)
}
// MARK: - Matomo
class MatomoAnalyticsManager: AnalyticsManagerProtocol {
// MARK: - Properties
private var tracker: MatomoTracker
// MARK: - Init
init(siteId: String, url: String) {
debugPrint("[Matomo service] Server URL: \(url)")
debugPrint("[Matomo service] Site ID: \(siteId)")
tracker = MatomoTracker(
siteId: siteId,
baseURL: URL(string: url)!
)
#if DEBUG
tracker.dispatchInterval = 5
#endif
#if DEBUG
tracker.logger = DefaultLogger(minLevel: .verbose)
#endif
debugPrint("[Matomo service] Configured with content base: \(tracker.contentBase?.absoluteString ?? "-")")
debugPrint("[Matomo service] Opt out: \(tracker.isOptedOut)")
}
// MARK: - Methods
func logScreen(
name: String,
path: String,
params: [String: Any]?
) {
guard let trackerUrl = tracker.contentBase?.absoluteString else { return }
let urlString = URL(string: "\(trackerUrl)" + "/" + "\(path)" + "iOS")
tracker.track(
view: [name],
url: urlString
)
}
func logEvent(
name: String,
action: String,
category: String,
params: [String: Any]?
) {
tracker.track(
eventWithCategory: category,
action: action,
name: name,
number: nil,
url: nil
)
}
func setEnable(_ enable: Bool) {
tracker.isOptedOut = !enable
}
}
// MARK: - Firebase
class FirebaseAnalyticsManager: AnalyticsManagerProtocol {
@@ -170,17 +104,16 @@ class FirebaseAnalyticsManager: AnalyticsManagerProtocol {
// MARK: - Traker Type
public enum TrackerType: CaseIterable {
internal enum TrackerType: CaseIterable {
case matomo
case firebase
}
// MARK: - Manager
public class AnalyticsManager {
internal class AnalyticsManager {
public static var shared = AnalyticsManager()
internal static var shared = AnalyticsManager()
private init() {}
@@ -188,6 +121,8 @@ public class AnalyticsManager {
var managers: [TrackerType: AnalyticsManagerProtocol] = [:]
private var isDebugMode: Bool = false
private var isEnabled: Bool {
if ProcessInfo.processInfo.environment["XCODE_RUNNING_FOR_PREVIEWS"] == "1" {
false
@@ -196,6 +131,8 @@ public class AnalyticsManager {
}
}
private let logger = Logger(subsystem: "resgen", category: "analytics")
// MARK: - Enable Methods
private func setAnalytics(enable: Bool, _ analytics: [TrackerType]) {
@@ -208,19 +145,16 @@ public class AnalyticsManager {
}
}
public func enableAnalytics(_ analytics: [TrackerType] = TrackerType.allCases) {
internal func enableAnalytics(_ analytics: [TrackerType] = TrackerType.allCases) {
setAnalytics(enable: true, analytics)
}
public func disableAnalytics(_ analytics: [TrackerType] = TrackerType.allCases) {
internal func disableAnalytics(_ analytics: [TrackerType] = TrackerType.allCases) {
setAnalytics(enable: false, analytics)
}
public func configure(siteId: String, url: String) {
managers[TrackerType.matomo] = MatomoAnalyticsManager(
siteId: siteId,
url: url
)
internal func configure(isDebugMode: Bool = false) {
isDebugMode = isDebugMode
managers[TrackerType.firebase] = FirebaseAnalyticsManager()
}
@@ -231,9 +165,17 @@ public class AnalyticsManager {
path: String,
params: [String: Any]?
) {
guard isEnabled else { return }
guard isEnabled else {
logger.notice("Analytics disabled")
return
}
managers.values.forEach { manager in
if isDebugMode {
logger.info("🖥️ Screen: \(name, privacy: .public) | path: \(path, privacy: .public) | params: \(paramsString, privacy: .public)")
}
manager.logScreen(
name: name,
path: path,
@@ -248,9 +190,17 @@ public class AnalyticsManager {
category: String,
params: [String: Any]?
) {
guard isEnabled else { return }
guard isEnabled else {
logger.notice("Analytics disabled")
return
}
managers.values.forEach { manager in
if isDebugMode {
logger.info("📊 Event: \(name, privacy: .public) | action: \(action ?? "-", privacy: .public) | category: \(category ?? "-", privacy: .public) | params: \(paramsString, privacy: .public)")
}
manager.logEvent(
name: name,
action: action,
@@ -262,7 +212,7 @@ public class AnalyticsManager {
// MARK: - section_one
public func logScreenS1DefOne(title: String) {
internal func logScreenS1DefOne(title: String) {
logScreen(
name: "s1 def one \(title)",
path: "s1_def_one/\(title)",
@@ -270,10 +220,10 @@ public class AnalyticsManager {
)
}
public func logEventS1DefTwo(
internal func logEventS1DefTwo(
title: String,
count: String,
test2: String = "test"
test2: String = "tes"
) {
logEvent(
name: "s1 def two",
@@ -290,7 +240,7 @@ public class AnalyticsManager {
// MARK: - section_two
public func logScreenS2DefOne() {
internal func logScreenS2DefOne() {
logScreen(
name: "s2 def one",
path: "s2_def_one/",

View File

@@ -33,13 +33,13 @@ FORCE_FLAG="$1"
#echo "\n-------------------------\n"
## Strings
swift run -c release ResgenSwift strings stringium $FORCE_FLAG "./Strings/sampleStrings.txt" \
--output-path "./Strings/Generated" \
--langs "fr en en-us" \
--default-lang "en" \
--extension-output-path "./Strings/Generated" \
--extension-name "String" \
--extension-suffix "GenAllScript"
#swift run -c release ResgenSwift strings stringium $FORCE_FLAG "./Strings/sampleStrings.txt" \
# --output-path "./Strings/Generated" \
# --langs "fr en en-us" \
# --default-lang "en" \
# --extension-output-path "./Strings/Generated" \
# --extension-name "String" \
# --extension-suffix "GenAllScript"
#echo "\n-------------------------\n"
#
@@ -53,12 +53,9 @@ swift run -c release ResgenSwift strings stringium $FORCE_FLAG "./Strings/sample
#echo "\n-------------------------\n"
#
## Analytics
#swift run -c release ResgenSwift analytics $FORCE_FLAG "./Tags/sampleTags.yml" \
# --target "firebase" \
# --extension-output-path "./Tags/Generated" \
# --extension-name "Analytics" \
# --extension-suffix "GenAllScript" \
# --static-members true
swift run -c release ResgenSwift analytics -f "./Tags/sampleTags.yml" \
--target "firebase" \
--output-file "./Tags/Generated/Analytics+GenAllScript.swift"
#
#echo "\n-------------------------\n"
#

View File

@@ -143,13 +143,17 @@ enum AnalyticsGenerator {
visibility: ExtensionVisibility
) -> String {
"""
private var isEnabled: Bool {
private var isDebugMode: Bool = false
private var isEnabled: Bool {
if ProcessInfo.processInfo.environment["XCODE_RUNNING_FOR_PREVIEWS"] == "1" {
false
} else {
true
}
}
private let logger = Logger(subsystem: "resgen", category: "analytics")
// MARK: - Enable Methods
@@ -186,6 +190,8 @@ enum AnalyticsGenerator {
result.append("import FirebaseAnalytics")
}
result.append("import os")
return result.joined(separator: "\n")
}
@@ -198,9 +204,19 @@ enum AnalyticsGenerator {
path: String,
params: [String: Any]?
) {
guard isEnabled else { return }
guard isEnabled else {
if isDebugMode {
logger.log("Analytics disabled")
}
return
}
managers.values.forEach { manager in
if isDebugMode {
logger.debug("🖥 Screen: \\(name, privacy: .public) | path: \\(path, privacy: .public) | params: \\(String(describing: params ?? [:]), privacy: .public)")
}
manager.logScreen(
name: name,
path: path,
@@ -215,9 +231,19 @@ enum AnalyticsGenerator {
category: String,
params: [String: Any]?
) {
guard isEnabled else { return }
guard isEnabled else {
if isDebugMode {
logger.log("Analytics disabled")
}
return
}
managers.values.forEach { manager in
if isDebugMode {
logger.debug("📊 Event: \\(name, privacy: .public) | action: \\(action, privacy: .public) | category: \\(category, privacy: .public) | params: \\(String(describing: params ?? [:]), privacy: .public)")
}
manager.logEvent(
name: name,
action: action,
@@ -238,11 +264,13 @@ enum AnalyticsGenerator {
let footer = " }"
if targets.contains(TrackerType.matomo) {
header = "\(visibility) func configure(siteId: String, url: String) {"
header = "\(visibility) func configure(siteId: String, url: String, isDebugMode: Bool = false) {"
} else if targets.contains(TrackerType.firebase) {
header = "\(visibility) func configure() {"
header = "\(visibility) func configure(isDebugMode: Bool = false) {"
}
content.append(" self.isDebugMode = isDebugMode")
if targets.contains(TrackerType.matomo) {
content.append("""
managers[TrackerType.matomo] = MatomoAnalyticsManager(

View File

@@ -175,7 +175,7 @@ enum StringsFileGenerator {
guard section.hasOneOrMoreMatchingTags(tags: inputTags) else {
return // Go to next section
}
print("DOUDOU")
section
.definitions
.forEach { definition in // swiftlint:disable:this closure_body_length
@@ -212,7 +212,6 @@ enum StringsFileGenerator {
// Search for langs in twine
for (lang, value) in definition.translations
where langs.contains(lang) && !value.isEmpty {
print("DOUDOU-> generate for \(lang)")
let localization = XCStringLocalization(
lang: lang,
content: XCStringLocalizationLangContent(