diff --git a/SharedLibrary/Extension/String.swift b/SharedLibrary/Extension/String.swift index d247596..1a3d115 100644 --- a/SharedLibrary/Extension/String.swift +++ b/SharedLibrary/Extension/String.swift @@ -29,16 +29,7 @@ public extension String { } var splittedByWhitespace: [String] { - guard let trimWhiteSpaceRegEx = try? NSRegularExpression(pattern: "/ +/g") else { - return [] - } - let trimmed = trimWhiteSpaceRegEx.stringByReplacingMatches( - in: self, - options: [], - range: NSRange(location: 0, length: count), - withTemplate: " " - ) - return trimmed.split(separator: " ").map { String($0) } + split(separator: " ").filter { !$0.isEmpty }.map { String($0) } } var numericOnly: String { diff --git a/eul/Store/DiskStore.swift b/eul/Store/DiskStore.swift index dae8aa6..e2d11ce 100644 --- a/eul/Store/DiskStore.swift +++ b/eul/Store/DiskStore.swift @@ -29,12 +29,29 @@ class DiskStore: ObservableObject, Refreshable { return list?.disks.filter { $0.name == config.diskSelection }.first } + private var rootAttributes: (size: UInt64, free: UInt64)? { + guard + let attrs = try? FileManager.default.attributesOfFileSystem(forPath: "/"), + let size = attrs[.systemSize] as? UInt64, + let free = attrs[.systemFreeSize] as? UInt64 + else { + return nil + } + return (size, free) + } + var ceilingBytes: UInt64? { - selectedDisk?.size ?? list?.disks.reduce(0) { $0 + $1.size } + if let selected = selectedDisk { + return selected.size + } + return rootAttributes?.size } var freeBytes: UInt64? { - selectedDisk?.freeSize ?? list?.disks.reduce(0) { $0 + $1.freeSize } + if let selected = selectedDisk { + return selected.freeSize + } + return rootAttributes?.free } var usageString: String {