OSDN Git Service

shared instanceを持つようにした
[kcd/KCD.git] / KCD / ApplicationDirecrories.swift
index 51d2736..bbab898 100644 (file)
@@ -9,15 +9,30 @@
 import Foundation
 
 private func supportDirName() -> String {
+    
     let main = Bundle.main
+    
     return main.bundleIdentifier
         ?? main.infoDictionary?["CFBundleName"] as? String
         ?? main.infoDictionary?["CFBundleExecutable"] as? String
         ?? "UnknownAppliation"
 }
 
+func localizedAppName() -> String {
+    
+    guard let name = Bundle.main.localizedInfoDictionary?["CFBundleName"] as? String,
+        !name.isEmpty else {
+            
+            return supportDirName()
+    }
+    
+    return name
+}
+
 struct ApplicationDirecrories {
     
+    static let shared = ApplicationDirecrories()
+    
     static let support = searchedURL(for: .applicationSupportDirectory)
         .appendingPathComponent(supportDirName())
     
@@ -27,38 +42,50 @@ struct ApplicationDirecrories {
     
     private static func searchedURL(for directory: FileManager.SearchPathDirectory) -> URL {
         
-        return FileManager.default.urls(for: directory,
-                                        in: .userDomainMask)
+        return FileManager.default.urls(for: directory, in: .userDomainMask)
             .last
             ?? URL(fileURLWithPath: NSHomeDirectory())
     }
 }
 
-func checkDirectory(_ url: URL) -> Bool {
-    var success = true
+
+func createDirectory(_ url: URL) -> Bool {
+    
+    do {
+        
+        try FileManager.default.createDirectory(at: url,
+                                                withIntermediateDirectories: false,
+                                                attributes: nil)
+        
+        return true
+        
+    } catch {
+        
+        return false
+    }
+}
+
+func checkDirectory(_ url: URL, create: Bool) -> Bool {
     
     do {
-        let p = try url.resourceValues(forKeys: [.isDirectoryKey])
-        if !p.isDirectory! {
+        
+        let resourceValue = try url.resourceValues(forKeys: [.isDirectoryKey])
+        if !resourceValue.isDirectory! {
+            
             print("Expected a folder to store application data, found a file \(url.path).")
-            success = false
+            
+            return false
         }
-    } catch {
-        let nserror = error as NSError
-        if nserror.code == NSFileReadNoSuchFileError {
-            do {
-                try FileManager
-                    .default
-                    .createDirectory(at: url,
-                                     withIntermediateDirectories: false,
-                                     attributes: nil)
-            } catch {
-                success = false
-            }
-        } else {
-            success = false
+        
+        return true
+        
+    } catch let error as NSError {
+        
+        if create, error.code == NSFileReadNoSuchFileError {
+            
+            return createDirectory(url)
         }
+        
+        return false
     }
-    
-    return success
 }