Compare commits
5 Commits
f0131e0828
...
abb7c8f8c8
Author | SHA1 | Date | |
---|---|---|---|
abb7c8f8c8 | |||
92626b76ad | |||
449f16499b | |||
cd873ca5d9 | |||
6f8e3b6664 |
@ -1,7 +1,7 @@
|
|||||||
// Generated by ResgenSwift.Analytics 1.2
|
// Generated by ResgenSwift.Analytics 1.2
|
||||||
|
|
||||||
import MatomoTracker
|
import MatomoTracker
|
||||||
import Firebase
|
import FirebaseAnalytics
|
||||||
|
|
||||||
// MARK: - Protocol
|
// MARK: - Protocol
|
||||||
|
|
||||||
@ -181,7 +181,7 @@ class AnalyticsManager {
|
|||||||
name: "s1 def two",
|
name: "s1 def two",
|
||||||
action: "test",
|
action: "test",
|
||||||
category: "test",
|
category: "test",
|
||||||
params: []
|
params: [:]
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,6 +34,9 @@ struct Analytics: ParsableCommand {
|
|||||||
print("[\(Self.toolName)] Will use inputFile \(options.inputFile) to generate analytics for target: \(options.target)")
|
print("[\(Self.toolName)] Will use inputFile \(options.inputFile) to generate analytics for target: \(options.target)")
|
||||||
print("[\(Self.toolName)] Will generate analytics")
|
print("[\(Self.toolName)] Will generate analytics")
|
||||||
|
|
||||||
|
// Check requirements
|
||||||
|
guard checkRequirements() else { return }
|
||||||
|
|
||||||
// Parse input file
|
// Parse input file
|
||||||
let sections = AnalyticsFileParser.parse(options.inputFile, target: options.target)
|
let sections = AnalyticsFileParser.parse(options.inputFile, target: options.target)
|
||||||
|
|
||||||
@ -47,6 +50,29 @@ struct Analytics: ParsableCommand {
|
|||||||
|
|
||||||
print("[\(Self.toolName)] Analytics generated")
|
print("[\(Self.toolName)] Analytics generated")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MARK: - Requirements
|
||||||
|
|
||||||
|
private func checkRequirements() -> Bool {
|
||||||
|
let fileManager = FileManager()
|
||||||
|
|
||||||
|
// Input file
|
||||||
|
guard fileManager.fileExists(atPath: options.inputFile) else {
|
||||||
|
let error = AnalyticsError.fileNotExists(options.inputFile)
|
||||||
|
print(error.description)
|
||||||
|
Analytics.exit(withError: error)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if needed to regenerate
|
||||||
|
guard GeneratorChecker.shouldGenerate(force: options.forceGeneration,
|
||||||
|
inputFilePath: options.inputFile,
|
||||||
|
extensionFilePath: options.extensionFilePath) else {
|
||||||
|
print("[\(Self.toolName)] Analytics are already up to date :) ")
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
extension Analytics {
|
extension Analytics {
|
||||||
|
32
Sources/ResgenSwift/Analytics/AnalyticsError.swift
Normal file
32
Sources/ResgenSwift/Analytics/AnalyticsError.swift
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
//
|
||||||
|
// AnalyticsError.swift
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Created by Loris Perret on 11/12/2023.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
|
||||||
|
enum AnalyticsError: Error {
|
||||||
|
case fileNotExists(String)
|
||||||
|
case missingElement(String)
|
||||||
|
case invalidParameter(String)
|
||||||
|
|
||||||
|
case writeFile(String, String)
|
||||||
|
|
||||||
|
var description: String {
|
||||||
|
switch self {
|
||||||
|
case .fileNotExists(let filename):
|
||||||
|
return "error: [\(Analytics.toolName)] File \(filename) does not exists "
|
||||||
|
|
||||||
|
case .missingElement(let element):
|
||||||
|
return "error: [\(Analytics.toolName)] Missing \(element) for Matomo"
|
||||||
|
|
||||||
|
case .invalidParameter(let reason):
|
||||||
|
return "error: [\(Analytics.toolName)] Invalid parameter \(reason)"
|
||||||
|
|
||||||
|
case .writeFile(let subErrorDescription, let filename):
|
||||||
|
return "error: [\(Analytics.toolName)] An error occured while writing content to \(filename): \(subErrorDescription)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -32,10 +32,10 @@ class AnalyticsGenerator {
|
|||||||
let extensionFilePathURL = URL(fileURLWithPath: extensionFilePath)
|
let extensionFilePathURL = URL(fileURLWithPath: extensionFilePath)
|
||||||
do {
|
do {
|
||||||
try extensionFileContent.write(to: extensionFilePathURL, atomically: false, encoding: .utf8)
|
try extensionFileContent.write(to: extensionFilePathURL, atomically: false, encoding: .utf8)
|
||||||
} catch let error {
|
} catch (let error) {
|
||||||
let error = StringiumError.writeFile(extensionFilePath, error.localizedDescription)
|
let error = AnalyticsError.writeFile(extensionFilePath, error.localizedDescription)
|
||||||
print(error.description)
|
print(error.description)
|
||||||
Stringium.exit(withError: error)
|
Analytics.exit(withError: error)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,15 +14,15 @@ class AnalyticsFileParser {
|
|||||||
|
|
||||||
private static func parseYaml() -> AnalyticsFile {
|
private static func parseYaml() -> AnalyticsFile {
|
||||||
guard let data = FileManager().contents(atPath: inputFile) else {
|
guard let data = FileManager().contents(atPath: inputFile) else {
|
||||||
let error = GenerateError.fileNotExists(inputFile)
|
let error = AnalyticsError.fileNotExists(inputFile)
|
||||||
Generate.exit(withError: error)
|
Analytics.exit(withError: error)
|
||||||
}
|
}
|
||||||
|
|
||||||
do {
|
do {
|
||||||
let tagFile = try YAMLDecoder().decode(AnalyticsFile.self, from: data)
|
let tagFile = try YAMLDecoder().decode(AnalyticsFile.self, from: data)
|
||||||
return tagFile
|
return tagFile
|
||||||
} catch let error {
|
} catch let error {
|
||||||
Generate.exit(withError: error)
|
Analytics.exit(withError: error)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -40,8 +40,8 @@ class AnalyticsFileParser {
|
|||||||
type == "Double" ||
|
type == "Double" ||
|
||||||
type == "Bool"
|
type == "Bool"
|
||||||
else {
|
else {
|
||||||
let error = GenerateError.invalidParameter("type of \(value.name)")
|
let error = AnalyticsError.invalidParameter("type of \(value.name)")
|
||||||
Generate.exit(withError: error)
|
Analytics.exit(withError: error)
|
||||||
}
|
}
|
||||||
|
|
||||||
let parameter: AnalyticsParameter = AnalyticsParameter(name: value.name, type: type)
|
let parameter: AnalyticsParameter = AnalyticsParameter(name: value.name, type: type)
|
||||||
@ -95,8 +95,8 @@ class AnalyticsFileParser {
|
|||||||
// Path
|
// Path
|
||||||
|
|
||||||
guard let path = screen.path else {
|
guard let path = screen.path else {
|
||||||
let error = GenerateError.missingElement("screen path")
|
let error = AnalyticsError.missingElement("screen path")
|
||||||
Generate.exit(withError: error)
|
Analytics.exit(withError: error)
|
||||||
}
|
}
|
||||||
|
|
||||||
definition.path = path
|
definition.path = path
|
||||||
@ -125,8 +125,8 @@ class AnalyticsFileParser {
|
|||||||
// Category
|
// Category
|
||||||
|
|
||||||
guard let category = event.category else {
|
guard let category = event.category else {
|
||||||
let error = GenerateError.missingElement("event category")
|
let error = AnalyticsError.missingElement("event category")
|
||||||
Generate.exit(withError: error)
|
Analytics.exit(withError: error)
|
||||||
}
|
}
|
||||||
|
|
||||||
definition.category = category
|
definition.category = category
|
||||||
@ -134,8 +134,8 @@ class AnalyticsFileParser {
|
|||||||
// Action
|
// Action
|
||||||
|
|
||||||
guard let action = event.action else {
|
guard let action = event.action else {
|
||||||
let error = GenerateError.missingElement("event action")
|
let error = AnalyticsError.missingElement("event action")
|
||||||
Generate.exit(withError: error)
|
Analytics.exit(withError: error)
|
||||||
}
|
}
|
||||||
|
|
||||||
definition.action = action
|
definition.action = action
|
||||||
|
@ -13,11 +13,6 @@ enum GenerateError: Error {
|
|||||||
case commandError([String], String)
|
case commandError([String], String)
|
||||||
case writeFile(String, String)
|
case writeFile(String, String)
|
||||||
|
|
||||||
// Analytics
|
|
||||||
|
|
||||||
case missingElement(String)
|
|
||||||
case invalidParameter(String)
|
|
||||||
|
|
||||||
var description: String {
|
var description: String {
|
||||||
switch self {
|
switch self {
|
||||||
case .fileNotExists(let filename):
|
case .fileNotExists(let filename):
|
||||||
@ -34,12 +29,6 @@ enum GenerateError: Error {
|
|||||||
|
|
||||||
case .writeFile(let filename, let info):
|
case .writeFile(let filename, let info):
|
||||||
return "error: [\(Generate.toolName)] An error occured while writing file in \(filename): \(info)"
|
return "error: [\(Generate.toolName)] An error occured while writing file in \(filename): \(info)"
|
||||||
|
|
||||||
case .missingElement(let element):
|
|
||||||
return "error: [\(Generate.toolName)] Missing \(element) for Matomo"
|
|
||||||
|
|
||||||
case .invalidParameter(let reason):
|
|
||||||
return "error: [\(Generate.toolName)] Invalid parameter \(reason)"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user