Compare commits

..

4 Commits

Author SHA1 Message Date
f0131e0828 Add Swiftlint
Some checks failed
gitea-openium/resgen.swift/pipeline/head There was a failure building this commit
2023-12-08 17:10:21 +01:00
3d675a5663 Fix Image
Some checks failed
gitea-openium/resgen.swift/pipeline/head There was a failure building this commit
2023-12-08 16:28:58 +01:00
92d0a51116 Fix Font 2023-12-08 16:21:14 +01:00
3bcae91725 Fix Color 2023-12-08 16:15:28 +01:00
6 changed files with 27 additions and 74 deletions

View File

@ -1,7 +1,7 @@
// Generated by ResgenSwift.Analytics 1.2 // Generated by ResgenSwift.Analytics 1.2
import MatomoTracker import MatomoTracker
import FirebaseAnalytics import Firebase
// 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: []
) )
} }

View File

@ -34,9 +34,6 @@ 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)
@ -50,29 +47,6 @@ 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 {

View File

@ -1,32 +0,0 @@
//
// 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) 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 = AnalyticsError.writeFile(extensionFilePath, error.localizedDescription) let error = StringiumError.writeFile(extensionFilePath, error.localizedDescription)
print(error.description) print(error.description)
Analytics.exit(withError: error) Stringium.exit(withError: error)
} }
} }

View File

@ -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 = AnalyticsError.fileNotExists(inputFile) let error = GenerateError.fileNotExists(inputFile)
Analytics.exit(withError: error) Generate.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 {
Analytics.exit(withError: error) Generate.exit(withError: error)
} }
} }
@ -40,8 +40,8 @@ class AnalyticsFileParser {
type == "Double" || type == "Double" ||
type == "Bool" type == "Bool"
else { else {
let error = AnalyticsError.invalidParameter("type of \(value.name)") let error = GenerateError.invalidParameter("type of \(value.name)")
Analytics.exit(withError: error) Generate.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 = AnalyticsError.missingElement("screen path") let error = GenerateError.missingElement("screen path")
Analytics.exit(withError: error) Generate.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 = AnalyticsError.missingElement("event category") let error = GenerateError.missingElement("event category")
Analytics.exit(withError: error) Generate.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 = AnalyticsError.missingElement("event action") let error = GenerateError.missingElement("event action")
Analytics.exit(withError: error) Generate.exit(withError: error)
} }
definition.action = action definition.action = action

View File

@ -13,6 +13,11 @@ 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):
@ -29,6 +34,12 @@ 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)"
} }
} }
} }