Add MainActor on AnalysticsManager shared property (#24)
All checks were successful
openium/resgen.swift/pipeline/head This commit looks good
All checks were successful
openium/resgen.swift/pipeline/head This commit looks good
Reviewed-on: #24
This commit was merged in pull request #24.
This commit is contained in:
2
Jenkinsfile
vendored
2
Jenkinsfile
vendored
@@ -1,6 +1,6 @@
|
||||
library "openiumpipeline"
|
||||
|
||||
env.DEVELOPER_DIR="/Applications/Xcode-26.0.0.app/Contents/Developer"
|
||||
env.DEVELOPER_DIR="/Applications/Xcode-26.2.0.app/Contents/Developer"
|
||||
// env.SIMULATOR_DEVICE_TYPES="iPhone-14-Pro"
|
||||
// env.SLACK_CHANNEL = "prj-skdevkit"
|
||||
env.IS_PACKAGE_SWIFT=1
|
||||
|
||||
@@ -104,6 +104,7 @@ enum AnalyticsGenerator {
|
||||
|
||||
\(visibility) class AnalyticsManager {
|
||||
|
||||
@MainActor
|
||||
\(visibility) static var shared = AnalyticsManager()
|
||||
|
||||
private init() {}
|
||||
@@ -144,7 +145,7 @@ enum AnalyticsGenerator {
|
||||
) -> String {
|
||||
"""
|
||||
private var isDebugMode: Bool = false
|
||||
|
||||
|
||||
private var isEnabled: Bool {
|
||||
if ProcessInfo.processInfo.environment["XCODE_RUNNING_FOR_PREVIEWS"] == "1" {
|
||||
false
|
||||
@@ -152,7 +153,7 @@ enum AnalyticsGenerator {
|
||||
true
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private let logger = Logger(subsystem: "resgen", category: "analytics")
|
||||
|
||||
// MARK: - Enable Methods
|
||||
@@ -198,18 +199,18 @@ enum AnalyticsGenerator {
|
||||
private static func getPrivateLogFunction() -> String {
|
||||
"""
|
||||
// MARK: - Private Log Methods
|
||||
|
||||
|
||||
private func formattedParams(_ params: [String: Any]?) -> String {
|
||||
guard let params = params, !params.isEmpty else { return "-" }
|
||||
|
||||
|
||||
let formattedParams = params.map { key, value in
|
||||
" \\(key): \\(value)"
|
||||
}
|
||||
.joined(separator: "\\n")
|
||||
|
||||
|
||||
return "\\n" + formattedParams
|
||||
}
|
||||
|
||||
|
||||
private func logScreen(
|
||||
name: String,
|
||||
path: String,
|
||||
@@ -219,11 +220,11 @@ enum AnalyticsGenerator {
|
||||
if isDebugMode {
|
||||
logger.log("Analytics disabled")
|
||||
}
|
||||
return
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
managers.values.forEach { manager in
|
||||
|
||||
|
||||
if isDebugMode {
|
||||
logger.debug(\"""
|
||||
🖥️ Screen:
|
||||
@@ -232,7 +233,7 @@ enum AnalyticsGenerator {
|
||||
Params: \\(self.formattedParams(params), privacy: .public)
|
||||
\""")
|
||||
}
|
||||
|
||||
|
||||
manager.logScreen(
|
||||
name: name,
|
||||
path: path,
|
||||
@@ -240,7 +241,7 @@ enum AnalyticsGenerator {
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private func logEvent(
|
||||
name: String,
|
||||
action: String,
|
||||
@@ -251,11 +252,11 @@ enum AnalyticsGenerator {
|
||||
if isDebugMode {
|
||||
logger.log("Analytics disabled")
|
||||
}
|
||||
return
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
managers.values.forEach { manager in
|
||||
|
||||
|
||||
if isDebugMode {
|
||||
logger.debug(\"""
|
||||
📊 Event:
|
||||
@@ -265,7 +266,7 @@ enum AnalyticsGenerator {
|
||||
Params: \\(self.formattedParams(params), privacy: .public)
|
||||
\""")
|
||||
}
|
||||
|
||||
|
||||
manager.logEvent(
|
||||
name: name,
|
||||
action: action,
|
||||
|
||||
@@ -16,12 +16,14 @@ struct GenerateOptions: ParsableArguments {
|
||||
@Argument(help: "Configuration file.", transform: { $0.replaceTiltWithHomeDirectoryPath() })
|
||||
var configurationFile: String
|
||||
|
||||
@Option(help: "Project directory. It will be added to every relative path (path that does not start with `/`",
|
||||
transform: {
|
||||
if $0.last == "/" {
|
||||
return $0
|
||||
@Option(
|
||||
help: "Project directory. It will be added to every relative path (path that does not start with `/`",
|
||||
transform: {
|
||||
if $0.last == "/" {
|
||||
return $0
|
||||
}
|
||||
return $0 + "/"
|
||||
}
|
||||
return $0 + "/"
|
||||
})
|
||||
)
|
||||
var projectDirectory: String
|
||||
}
|
||||
|
||||
@@ -35,22 +35,22 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
||||
private func protocolString(visibility: ExtensionVisibility) -> String {
|
||||
"""
|
||||
// MARK: - Protocol
|
||||
|
||||
|
||||
\(visibility) protocol AnalyticsManagerProtocol {
|
||||
|
||||
|
||||
func logScreen(
|
||||
name: String,
|
||||
path: String,
|
||||
params: [String: Any]?
|
||||
)
|
||||
|
||||
|
||||
func logEvent(
|
||||
name: String,
|
||||
action: String,
|
||||
category: String,
|
||||
params: [String: Any]?
|
||||
)
|
||||
|
||||
|
||||
func setEnable(_ enable: Bool)
|
||||
}
|
||||
"""
|
||||
@@ -94,7 +94,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
||||
parameters: parameters
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
func logEvent(
|
||||
name: String,
|
||||
action: String,
|
||||
@@ -260,6 +260,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
||||
|
||||
internal class AnalyticsManager {
|
||||
|
||||
@MainActor
|
||||
internal static var shared = AnalyticsManager()
|
||||
|
||||
private init() {}
|
||||
@@ -267,7 +268,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
||||
// MARK: - Properties
|
||||
|
||||
var managers: [TrackerType: AnalyticsManagerProtocol] = [:]
|
||||
|
||||
|
||||
private var isDebugMode: Bool = false
|
||||
|
||||
private var isEnabled: Bool {
|
||||
@@ -277,7 +278,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
||||
true
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private let logger = Logger(subsystem: "resgen", category: "analytics")
|
||||
|
||||
// MARK: - Enable Methods
|
||||
@@ -306,15 +307,15 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
||||
}
|
||||
|
||||
// MARK: - Private Log Methods
|
||||
|
||||
|
||||
private func formattedParams(_ params: [String: Any]?) -> String {
|
||||
guard let params = params, !params.isEmpty else { return "-" }
|
||||
|
||||
|
||||
let formattedParams = params.map { key, value in
|
||||
" \\(key): \\(value)"
|
||||
}
|
||||
.joined(separator: "\\n")
|
||||
|
||||
|
||||
return "\\n" + formattedParams
|
||||
}
|
||||
|
||||
@@ -331,7 +332,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
||||
}
|
||||
|
||||
managers.values.forEach { manager in
|
||||
|
||||
|
||||
if isDebugMode {
|
||||
logger.debug(\"""
|
||||
🖥️ Screen:
|
||||
@@ -340,7 +341,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
||||
Params: \\(self.formattedParams(params), privacy: .public)
|
||||
\""")
|
||||
}
|
||||
|
||||
|
||||
manager.logScreen(
|
||||
name: name,
|
||||
path: path,
|
||||
@@ -363,7 +364,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
||||
}
|
||||
|
||||
managers.values.forEach { manager in
|
||||
|
||||
|
||||
if isDebugMode {
|
||||
logger.debug(\"""
|
||||
📊 Event:
|
||||
@@ -373,7 +374,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
||||
Params: \\(self.formattedParams(params), privacy: .public)
|
||||
\""")
|
||||
}
|
||||
|
||||
|
||||
manager.logEvent(
|
||||
name: name,
|
||||
action: action,
|
||||
@@ -472,6 +473,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
||||
|
||||
internal class AnalyticsManager {
|
||||
|
||||
@MainActor
|
||||
internal static var shared = AnalyticsManager()
|
||||
|
||||
private init() {}
|
||||
@@ -479,7 +481,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
||||
// MARK: - Properties
|
||||
|
||||
var managers: [TrackerType: AnalyticsManagerProtocol] = [:]
|
||||
|
||||
|
||||
private var isDebugMode: Bool = false
|
||||
|
||||
private var isEnabled: Bool {
|
||||
@@ -489,7 +491,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
||||
true
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private let logger = Logger(subsystem: "resgen", category: "analytics")
|
||||
|
||||
// MARK: - Enable Methods
|
||||
@@ -524,12 +526,12 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
||||
|
||||
private func formattedParams(_ params: [String: Any]?) -> String {
|
||||
guard let params = params, !params.isEmpty else { return "-" }
|
||||
|
||||
|
||||
let formattedParams = params.map { key, value in
|
||||
" \\(key): \\(value)"
|
||||
}
|
||||
.joined(separator: "\\n")
|
||||
|
||||
|
||||
return "\\n" + formattedParams
|
||||
}
|
||||
|
||||
@@ -544,9 +546,9 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
managers.values.forEach { manager in
|
||||
|
||||
|
||||
if isDebugMode {
|
||||
logger.debug(\"""
|
||||
🖥️ Screen:
|
||||
@@ -555,7 +557,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
||||
Params: \\(self.formattedParams(params), privacy: .public)
|
||||
\""")
|
||||
}
|
||||
|
||||
|
||||
manager.logScreen(
|
||||
name: name,
|
||||
path: path,
|
||||
@@ -563,7 +565,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private func logEvent(
|
||||
name: String,
|
||||
action: String,
|
||||
@@ -576,9 +578,9 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
managers.values.forEach { manager in
|
||||
|
||||
|
||||
if isDebugMode {
|
||||
logger.debug(\"""
|
||||
📊 Event:
|
||||
@@ -588,7 +590,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
||||
Params: \\(self.formattedParams(params), privacy: .public)
|
||||
\""")
|
||||
}
|
||||
|
||||
|
||||
manager.logEvent(
|
||||
name: name,
|
||||
action: action,
|
||||
@@ -597,9 +599,9 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// MARK: - section_one
|
||||
|
||||
|
||||
internal func logScreenS1DefOne() {
|
||||
logScreen(
|
||||
name: "s1 def one",
|
||||
@@ -607,7 +609,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
||||
params: nil
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
internal func logEventS1DefTwo() {
|
||||
logEvent(
|
||||
name: "s1 def two",
|
||||
@@ -616,9 +618,9 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
||||
params: nil
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
// MARK: - section_two
|
||||
|
||||
|
||||
internal func logScreenS2DefOne() {
|
||||
logScreen(
|
||||
name: "s2 def one",
|
||||
@@ -692,6 +694,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
||||
|
||||
internal class AnalyticsManager {
|
||||
|
||||
@MainActor
|
||||
internal static var shared = AnalyticsManager()
|
||||
|
||||
private init() {}
|
||||
@@ -699,7 +702,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
||||
// MARK: - Properties
|
||||
|
||||
var managers: [TrackerType: AnalyticsManagerProtocol] = [:]
|
||||
|
||||
|
||||
private var isDebugMode: Bool = false
|
||||
|
||||
private var isEnabled: Bool {
|
||||
@@ -709,7 +712,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
||||
true
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private let logger = Logger(subsystem: "resgen", category: "analytics")
|
||||
|
||||
// MARK: - Enable Methods
|
||||
@@ -742,15 +745,15 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
||||
}
|
||||
|
||||
// MARK: - Private Log Methods
|
||||
|
||||
|
||||
private func formattedParams(_ params: [String: Any]?) -> String {
|
||||
guard let params = params, !params.isEmpty else { return "-" }
|
||||
|
||||
|
||||
let formattedParams = params.map { key, value in
|
||||
" \\(key): \\(value)"
|
||||
}
|
||||
.joined(separator: "\\n")
|
||||
|
||||
|
||||
return "\\n" + formattedParams
|
||||
}
|
||||
|
||||
@@ -765,9 +768,9 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
managers.values.forEach { manager in
|
||||
|
||||
|
||||
if isDebugMode {
|
||||
logger.debug(\"""
|
||||
🖥️ Screen:
|
||||
@@ -776,7 +779,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
||||
Params: \\(self.formattedParams(params), privacy: .public)
|
||||
\""")
|
||||
}
|
||||
|
||||
|
||||
manager.logScreen(
|
||||
name: name,
|
||||
path: path,
|
||||
@@ -784,7 +787,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private func logEvent(
|
||||
name: String,
|
||||
action: String,
|
||||
@@ -797,9 +800,9 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
managers.values.forEach { manager in
|
||||
|
||||
|
||||
if isDebugMode {
|
||||
logger.debug(\"""
|
||||
📊 Event:
|
||||
@@ -809,7 +812,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
||||
Params: \\(self.formattedParams(params), privacy: .public)
|
||||
\""")
|
||||
}
|
||||
|
||||
|
||||
manager.logEvent(
|
||||
name: name,
|
||||
action: action,
|
||||
|
||||
Reference in New Issue
Block a user