Skip to content

Commit 3bb2629

Browse files
committed
Support destroying workspacePool from menu
1 parent 38fcd66 commit 3bb2629

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

ExtensionService/AppDelegate+Menu.swift

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ import AppKit
22
import Foundation
33
import Preferences
44
import XcodeInspector
5+
import Dependencies
6+
import Workspace
57

68
extension AppDelegate {
79
fileprivate var statusBarMenuIdentifier: NSUserInterfaceItemIdentifier {
@@ -95,6 +97,12 @@ extension AppDelegate {
9597
action: #selector(reactivateObservationsToXcode),
9698
keyEquivalent: ""
9799
)
100+
101+
let resetWorkspacesItem = NSMenuItem(
102+
title: "Reset workspaces",
103+
action: #selector(destroyWorkspacePool),
104+
keyEquivalent: ""
105+
)
98106

99107
reactivateObservationsItem.target = self
100108

@@ -108,6 +116,7 @@ extension AppDelegate {
108116
statusBarMenu.addItem(xcodeInspectorDebug)
109117
statusBarMenu.addItem(accessibilityAPIPermission)
110118
statusBarMenu.addItem(reactivateObservationsItem)
119+
statusBarMenu.addItem(resetWorkspacesItem)
111120
statusBarMenu.addItem(quitItem)
112121

113122
statusBarMenu.delegate = self
@@ -248,6 +257,13 @@ private extension AppDelegate {
248257
)
249258
}
250259
}
260+
261+
@objc func destroyWorkspacePool() {
262+
@Dependency(\.workspacePool) var workspacePool: WorkspacePool
263+
Task {
264+
await workspacePool.destroy()
265+
}
266+
}
251267
}
252268

253269
private extension NSMenuItem {

Tool/Sources/Workspace/WorkspacePool.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,11 @@ public class WorkspacePool {
6868
}
6969
return nil
7070
}
71+
72+
@WorkspaceActor
73+
public func destroy() {
74+
workspaces = [:]
75+
}
7176

7277
@WorkspaceActor
7378
public func fetchOrCreateWorkspace(workspaceURL: URL) async throws -> Workspace {

0 commit comments

Comments
 (0)