Skip to content

Commit e935fdf

Browse files
committed
Add watchOS Device Support directory, close #11
1 parent bcfb0ac commit e935fdf

File tree

6 files changed

+70
-34
lines changed

6 files changed

+70
-34
lines changed

XcodeCleaner/DirectoryManager.swift

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,16 @@ struct DirectoryManager {
3030
let derivedDataPath = "DerivedData/"
3131
return "\(xcodePath + derivedDataPath)"
3232
}
33-
func getDeviceSupportPath() -> String {
33+
func getIOSDeviceSupportPath() -> String {
3434
let xcodePath = getXcodeDefaultPath()
3535
let deviceSupportPath = "iOS DeviceSupport/"
3636
return "\(xcodePath + deviceSupportPath)"
3737
}
38+
func getWatchOSDeviceSupportPath() -> String {
39+
let xcodePath = getXcodeDefaultPath()
40+
let watchOSDeviceSupport = "watchOS DeviceSupport/"
41+
return "\(xcodePath + watchOSDeviceSupport)"
42+
}
3843
func getArchivesPath() -> String {
3944
let xcodePath = getXcodeDefaultPath()
4045
let archivesPath = "Archives/"
@@ -125,8 +130,10 @@ struct DirectoryManager {
125130
switch type {
126131
case .derivedData:
127132
path = getDerivedDataPath()
128-
case .deviceSupport:
129-
path = getDeviceSupportPath()
133+
case .iOSDeviceSupport:
134+
path = getIOSDeviceSupportPath()
135+
case .watchOSDeviceSupport:
136+
path = getWatchOSDeviceSupportPath()
130137
case .archives:
131138
path = getArchivesPath()
132139
case .iOSDeviceLogs:

XcodeCleaner/Enums/DirectoryType.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@
99
import SwiftUI
1010

1111
public enum DirectoryType: String, CaseIterable {
12-
1312
case derivedData
14-
case deviceSupport
13+
case iOSDeviceSupport
14+
case watchOSDeviceSupport
15+
case documentationCache
1516
case archives
1617
case iOSDeviceLogs
17-
case documentationCache
1818
}

XcodeCleaner/Protocols/PieChartViewModelProtocol.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@ import Foundation
1111
protocol PieChartViewModelProtocol {
1212
var items: [PieChartItemModel] { get set }
1313

14-
mutating func createItems(derivedData: [DirectoryModel], deviceSupport: [DirectoryModel], archives: [DirectoryModel], iOSDeviceLogs: [DirectoryModel], documentationCache: [DirectoryModel])
14+
mutating func createItems(derivedData: [DirectoryModel], iOSDeviceSupport: [DirectoryModel], watchOSDeviceSupport: [DirectoryModel], archives: [DirectoryModel], iOSDeviceLogs: [DirectoryModel], documentationCache: [DirectoryModel])
1515
func getPCItems() -> PCItems
1616
}

XcodeCleaner/Protocols/ViewModelProtocol.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ protocol ViewModelProtocol {
1616
var totalSize: Int64 { get set }
1717

1818
var derivedData: [DirectoryModel] { get set }
19-
var deviceSupport: [DirectoryModel] { get set }
19+
var iOSDeviceSupport: [DirectoryModel] { get set }
2020
var archives: [DirectoryModel] { get set }
2121

2222
var scanProgress: Double { get }

XcodeCleaner/ViewModels/PieChartViewModel.swift

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,20 @@ import SwiftUI
1111
struct PieChartViewModel: PieChartViewModelProtocol {
1212
var items: [PieChartItemModel] = []
1313

14-
mutating func createItems(derivedData: [DirectoryModel], deviceSupport: [DirectoryModel], archives: [DirectoryModel], iOSDeviceLogs: [DirectoryModel], documentationCache: [DirectoryModel]) {
14+
mutating func createItems(derivedData: [DirectoryModel], iOSDeviceSupport: [DirectoryModel], watchOSDeviceSupport: [DirectoryModel], archives: [DirectoryModel], iOSDeviceLogs: [DirectoryModel], documentationCache: [DirectoryModel]) {
1515
var derivedDataSize: Int64 = 0
1616
derivedData.forEach {
1717
derivedDataSize += $0.size
1818
}
1919

20-
var deviceSupportSize: Int64 = 0
21-
deviceSupport.forEach {
22-
deviceSupportSize += $0.size
20+
var iOSDeviceSupportSize: Int64 = 0
21+
iOSDeviceSupport.forEach {
22+
iOSDeviceSupportSize += $0.size
23+
}
24+
25+
var watchOSDeviceSupportSize: Int64 = 0
26+
watchOSDeviceSupport.forEach {
27+
watchOSDeviceSupportSize += $0.size
2328
}
2429

2530
var archivesSize: Int64 = 0
@@ -38,28 +43,30 @@ struct PieChartViewModel: PieChartViewModelProtocol {
3843
}
3944

4045
var derivedData: PieChartItemModel
41-
var deviceSupport: PieChartItemModel
46+
var iOSDeviceSupport: PieChartItemModel
47+
var watchOSDeviceSupport: PieChartItemModel
4248
var archives: PieChartItemModel
4349
var iOSDeviceLogs: PieChartItemModel
4450
var documentationCache: PieChartItemModel
4551

46-
if derivedDataSize == 0 && deviceSupportSize == 0 && archivesSize == 0 && iOSDeviceLogsSize == 0 && documentationCacheSize == 0 {
52+
if derivedDataSize == 0 && iOSDeviceSupportSize == 0 && archivesSize == 0 && iOSDeviceLogsSize == 0 && watchOSDeviceSupportSize == 0 && documentationCacheSize == 0 {
4753
let defaultValue = 1.0
4854

4955
derivedData = PieChartItemModel(value: defaultValue, color: .pink)
50-
deviceSupport = PieChartItemModel(value: defaultValue, color: Color(.cyan))
56+
iOSDeviceSupport = PieChartItemModel(value: defaultValue, color: Color(.cyan))
5157
archives = PieChartItemModel(value: defaultValue, color: .orange)
5258

53-
let items = [archives, deviceSupport, derivedData]
59+
let items = [archives, iOSDeviceSupport, derivedData]
5460
self.items = items
5561
} else {
5662
derivedData = PieChartItemModel(value: Double(derivedDataSize), color: .pink)
57-
deviceSupport = PieChartItemModel(value: Double(deviceSupportSize), color: Color(.cyan))
63+
iOSDeviceSupport = PieChartItemModel(value: Double(iOSDeviceSupportSize), color: Color(.cyan))
64+
watchOSDeviceSupport = PieChartItemModel(value: Double(watchOSDeviceSupportSize), color: .green)
5865
archives = PieChartItemModel(value: Double(archivesSize), color: .orange)
5966
iOSDeviceLogs = PieChartItemModel(value: Double(iOSDeviceLogsSize), color: .purple)
6067
documentationCache = PieChartItemModel(value: Double(documentationCacheSize), color: .gray)
6168

62-
let items = [archives, deviceSupport, derivedData, iOSDeviceLogs, documentationCache]
69+
let items = [archives, iOSDeviceSupport, watchOSDeviceSupport, derivedData, iOSDeviceLogs, documentationCache]
6370

6471
var normalizedItems: [PieChartItemModel] = []
6572

XcodeCleaner/ViewModels/ViewModel.swift

Lines changed: 38 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ class ViewModel: ObservableObject, ViewModelProtocol {
1919
var totalSize: Int64 = 0
2020

2121
var derivedData: [DirectoryModel] = []
22-
var deviceSupport: [DirectoryModel] = []
22+
var iOSDeviceSupport: [DirectoryModel] = []
23+
var watchOSDeviceSupport: [DirectoryModel] = []
2324
var archives: [DirectoryModel] = []
2425
var iOSDeviceLogs: [DirectoryModel] = []
2526
var documentationCache: [DirectoryModel] = []
@@ -40,26 +41,41 @@ class ViewModel: ObservableObject, ViewModelProtocol {
4041

4142
let derivedDataDirectories = directoryManager.getSubDirectoriesForPath(path: directoryManager.getDerivedDataPath())
4243
directoriesCount += derivedDataDirectories.count
44+
DispatchQueue.global(qos: .utility).async {
45+
self.calculateSize(ofDirectory: &self.derivedData, subDirectories: derivedDataDirectories, type: .derivedData)
46+
}
4347

44-
let deviceSupportDirectories = directoryManager.getSubDirectoriesForPath(path: directoryManager.getDeviceSupportPath())
45-
directoriesCount += deviceSupportDirectories.count
48+
let iOSDeviceSupportDirectories = directoryManager.getSubDirectoriesForPath(path: directoryManager.getIOSDeviceSupportPath())
49+
directoriesCount += iOSDeviceSupportDirectories.count
50+
DispatchQueue.global(qos: .utility).async {
51+
self.calculateSize(ofDirectory: &self.iOSDeviceSupport, subDirectories: iOSDeviceSupportDirectories, type: .iOSDeviceSupport)
52+
}
53+
54+
let watchOSDeviceSupportDirectories = directoryManager.getSubDirectoriesForPath(path: directoryManager.getWatchOSDeviceSupportPath())
55+
directoriesCount += watchOSDeviceSupportDirectories.count
56+
DispatchQueue.global(qos: .utility).async {
57+
self.calculateSize(ofDirectory: &self.watchOSDeviceSupport, subDirectories: watchOSDeviceSupportDirectories, type: .watchOSDeviceSupport)
58+
}
4659

4760
let archivesDirectories = directoryManager.getSubDirectoriesForPath(path: directoryManager.getArchivesPath())
4861
directoriesCount += archivesDirectories.count
62+
DispatchQueue.global(qos: .utility).async {
63+
self.calculateSize(ofDirectory: &self.archives, subDirectories: archivesDirectories, type: .archives)
64+
}
4965

5066
let iOSDeviceLogsDirectories = directoryManager.getSubDirectoriesForPath(path: directoryManager.getIOSDeviceLogsPath())
5167
directoriesCount += iOSDeviceLogsDirectories.count
68+
DispatchQueue.global(qos: .utility).async {
69+
self.calculateSize(ofDirectory: &self.iOSDeviceLogs, subDirectories: iOSDeviceLogsDirectories, type: .iOSDeviceLogs)
70+
}
5271

5372
let documentationCacheDirectories = directoryManager.getSubDirectoriesForPath(path: directoryManager.getDocumentationCachePath())
5473
directoriesCount += documentationCacheDirectories.count
55-
5674
DispatchQueue.global(qos: .utility).async {
57-
self.calculateSize(ofDirectory: &self.derivedData, subDirectories: derivedDataDirectories, type: .derivedData)
58-
self.calculateSize(ofDirectory: &self.deviceSupport, subDirectories: deviceSupportDirectories, type: .deviceSupport)
59-
self.calculateSize(ofDirectory: &self.archives, subDirectories: archivesDirectories, type: .archives)
60-
self.calculateSize(ofDirectory: &self.iOSDeviceLogs, subDirectories: iOSDeviceLogsDirectories, type: .iOSDeviceLogs)
6175
self.calculateSize(ofDirectory: &self.documentationCache, subDirectories: documentationCacheDirectories, type: .documentationCache)
62-
76+
}
77+
78+
DispatchQueue.global(qos: .utility).async {
6379
self.isScanStarted.toggle()
6480
self.isReadyToBeCleaned.toggle()
6581

@@ -93,10 +109,14 @@ class ViewModel: ObservableObject, ViewModelProtocol {
93109
directories = derivedData
94110
directoryName = "Derived Data"
95111
circleColor = .pink
96-
case .deviceSupport:
97-
directories = deviceSupport
98-
directoryName = "Device Support"
112+
case .iOSDeviceSupport:
113+
directories = iOSDeviceSupport
114+
directoryName = "iOS Device Support"
99115
circleColor = Color(.cyan)
116+
case .watchOSDeviceSupport:
117+
directories = watchOSDeviceSupport
118+
directoryName = "watchOS Device Support"
119+
circleColor = .green
100120
case .archives:
101121
directories = archives
102122
directoryName = "Archives"
@@ -107,7 +127,7 @@ class ViewModel: ObservableObject, ViewModelProtocol {
107127
circleColor = .purple
108128
case .documentationCache:
109129
directories = documentationCache
110-
directoryName = "Doc. Cache"
130+
directoryName = "Documentation Cache"
111131
circleColor = .gray
112132
}
113133

@@ -122,7 +142,8 @@ class ViewModel: ObservableObject, ViewModelProtocol {
122142
totalSize = 0
123143

124144
derivedData.removeAll()
125-
deviceSupport.removeAll()
145+
iOSDeviceSupport.removeAll()
146+
watchOSDeviceSupport.removeAll()
126147
archives.removeAll()
127148
iOSDeviceLogs.removeAll()
128149
documentationCache.removeAll()
@@ -131,7 +152,7 @@ class ViewModel: ObservableObject, ViewModelProtocol {
131152
}
132153
func getViewModelForPieChart() -> PieChartViewModelProtocol {
133154
var viewModel = PieChartViewModel()
134-
viewModel.createItems(derivedData: derivedData, deviceSupport: deviceSupport, archives: archives, iOSDeviceLogs: iOSDeviceLogs, documentationCache: documentationCache)
155+
viewModel.createItems(derivedData: derivedData, iOSDeviceSupport: iOSDeviceSupport, watchOSDeviceSupport: watchOSDeviceSupport, archives: archives, iOSDeviceLogs: iOSDeviceLogs, documentationCache: documentationCache)
135156

136157
return viewModel
137158
}
@@ -143,7 +164,8 @@ class ViewModel: ObservableObject, ViewModelProtocol {
143164

144165
DispatchQueue.global(qos: .userInitiated).async {
145166
self.directoryManager.cleanDirectory(forType: .derivedData)
146-
self.directoryManager.cleanDirectory(forType: .deviceSupport)
167+
self.directoryManager.cleanDirectory(forType: .iOSDeviceSupport)
168+
self.directoryManager.cleanDirectory(forType: .watchOSDeviceSupport)
147169
self.directoryManager.cleanDirectory(forType: .archives)
148170
self.directoryManager.cleanDirectory(forType: .iOSDeviceLogs)
149171
self.directoryManager.cleanDirectory(forType: .documentationCache)

0 commit comments

Comments
 (0)