Compare commits

..

5 Commits

Author SHA1 Message Date
abb7c8f8c8 Add Swiftlint
Some checks failed
gitea-openium/resgen.swift/pipeline/head There was a failure building this commit
2023-12-11 10:13:18 +01:00
92626b76ad Fix Image 2023-12-11 10:12:11 +01:00
449f16499b Fix Font 2023-12-11 10:12:11 +01:00
cd873ca5d9 Fix Color 2023-12-11 10:12:11 +01:00
6f8e3b6664 Add error handling
Some checks failed
gitea-openium/resgen.swift/pipeline/head There was a failure building this commit
2023-12-11 10:09:24 +01:00
6 changed files with 74 additions and 27 deletions

View File

@ -1,7 +1,7 @@
// Generated by ResgenSwift.Analytics 1.2
import MatomoTracker
import Firebase
import FirebaseAnalytics
// MARK: - Protocol
@ -181,7 +181,7 @@ class AnalyticsManager {
name: "s1 def two",
action: "test",
category: "test",
params: []
params: [:]
)
}

View File

@ -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 generate analytics")
// Check requirements
guard checkRequirements() else { return }
// Parse input file
let sections = AnalyticsFileParser.parse(options.inputFile, target: options.target)
@ -47,6 +50,29 @@ struct Analytics: ParsableCommand {
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 {

View 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)"
}
}
}

View File

@ -32,10 +32,10 @@ class AnalyticsGenerator {
let extensionFilePathURL = URL(fileURLWithPath: extensionFilePath)
do {
try extensionFileContent.write(to: extensionFilePathURL, atomically: false, encoding: .utf8)
} catch let error {
let error = StringiumError.writeFile(extensionFilePath, error.localizedDescription)
} catch (let error) {
let error = AnalyticsError.writeFile(extensionFilePath, error.localizedDescription)
print(error.description)
Stringium.exit(withError: error)
Analytics.exit(withError: error)
}
}

View File

@ -14,15 +14,15 @@ class AnalyticsFileParser {
private static func parseYaml() -> AnalyticsFile {
guard let data = FileManager().contents(atPath: inputFile) else {
let error = GenerateError.fileNotExists(inputFile)
Generate.exit(withError: error)
let error = AnalyticsError.fileNotExists(inputFile)
Analytics.exit(withError: error)
}
do {
let tagFile = try YAMLDecoder().decode(AnalyticsFile.self, from: data)
return tagFile
} catch let error {
Generate.exit(withError: error)
Analytics.exit(withError: error)
}
}
@ -40,8 +40,8 @@ class AnalyticsFileParser {
type == "Double" ||
type == "Bool"
else {
let error = GenerateError.invalidParameter("type of \(value.name)")
Generate.exit(withError: error)
let error = AnalyticsError.invalidParameter("type of \(value.name)")
Analytics.exit(withError: error)
}
let parameter: AnalyticsParameter = AnalyticsParameter(name: value.name, type: type)
@ -95,8 +95,8 @@ class AnalyticsFileParser {
// Path
guard let path = screen.path else {
let error = GenerateError.missingElement("screen path")
Generate.exit(withError: error)
let error = AnalyticsError.missingElement("screen path")
Analytics.exit(withError: error)
}
definition.path = path
@ -125,8 +125,8 @@ class AnalyticsFileParser {
// Category
guard let category = event.category else {
let error = GenerateError.missingElement("event category")
Generate.exit(withError: error)
let error = AnalyticsError.missingElement("event category")
Analytics.exit(withError: error)
}
definition.category = category
@ -134,8 +134,8 @@ class AnalyticsFileParser {
// Action
guard let action = event.action else {
let error = GenerateError.missingElement("event action")
Generate.exit(withError: error)
let error = AnalyticsError.missingElement("event action")
Analytics.exit(withError: error)
}
definition.action = action

View File

@ -13,11 +13,6 @@ enum GenerateError: Error {
case commandError([String], String)
case writeFile(String, String)
// Analytics
case missingElement(String)
case invalidParameter(String)
var description: String {
switch self {
case .fileNotExists(let filename):
@ -34,12 +29,6 @@ enum GenerateError: Error {
case .writeFile(let filename, let 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)"
}
}
}