diff --git a/Jared/ConfigurationHelper.swift b/Jared/ConfigurationHelper.swift index f2ec810..555ac15 100644 --- a/Jared/ConfigurationHelper.swift +++ b/Jared/ConfigurationHelper.swift @@ -7,47 +7,58 @@ // import Foundation +import AppKit struct ConfigurationHelper { static let fileManager = FileManager.default - + static func getConfiguration() -> ConfigurationFile { let configPath = ConfigurationHelper.getSupportDirectory() .appendingPathComponent("config.json") ConfigurationHelper.createConfigFileIfNotExists(at: configPath, using: fileManager) - - //Read the JSON config file - var config: ConfigurationFile - let jsonData = try? NSData(contentsOfFile: configPath.path, options: .mappedIfSafe) - if let parsedConfig = try? JSONDecoder().decode(ConfigurationFile.self, from: jsonData! as Data) { - config = parsedConfig - } else { - NSLog("Unable to parse configuration file, using default") - config = ConfigurationFile() + + do { + let jsonData = try NSData(contentsOfFile: configPath.path, options: .mappedIfSafe) + let parsedConfig = try JSONDecoder().decode(ConfigurationFile.self, from: jsonData as Data) + return parsedConfig + } catch { + let errorMessage = "Unable to parse configuration file, using default. error was \(error)" + print(errorMessage) + + let alert = NSAlert(error: error) + alert.messageText = "Configuration Error" + alert.informativeText = errorMessage + alert.alertStyle = .critical + alert.addButton(withTitle: "OK") + alert.runModal() + + + + return ConfigurationFile() + + } - - return config } - + static func getSupportDirectory() -> URL { let filemanager = FileManager.default let appsupport = filemanager.urls(for: .applicationSupportDirectory, in: .userDomainMask)[0] let supportDir = appsupport.appendingPathComponent("Jared") - + try! filemanager.createDirectory(at: supportDir, withIntermediateDirectories: true, attributes: nil) - + return supportDir } - + static func getPluginDirectory() -> URL { let supportDir = getSupportDirectory() .appendingPathComponent("Plugins") - + try! fileManager.createDirectory(at: supportDir, withIntermediateDirectories: true, attributes: nil) - + return supportDir } - + //Copy an empty config file if the conig file does not exist private static func createConfigFileIfNotExists(at path: URL, using fileManager: FileManager) { //Copy an empty config file if the conig file does not exist