Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 30 additions & 19 deletions Jared/ConfigurationHelper.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down