diff --git a/Sources/BuildServerProtocol/InitializeBuild.swift b/Sources/BuildServerProtocol/InitializeBuild.swift index df1464f4..08d1f4a1 100644 --- a/Sources/BuildServerProtocol/InitializeBuild.swift +++ b/Sources/BuildServerProtocol/InitializeBuild.swift @@ -143,4 +143,6 @@ public struct TestProvider: Codable, Hashable { public struct InitializedBuildNotification: NotificationType { public static let method: String = "build/initialized" + + public init() {} } diff --git a/Sources/BuildServerProtocol/ShutdownBuild.swift b/Sources/BuildServerProtocol/ShutdownBuild.swift index 3e51943f..f02aa9e4 100644 --- a/Sources/BuildServerProtocol/ShutdownBuild.swift +++ b/Sources/BuildServerProtocol/ShutdownBuild.swift @@ -19,6 +19,8 @@ import LanguageServerProtocol public struct ShutdownBuild: RequestType { public static let method: String = "build/shutdown" public typealias Response = VoidResponse + + public init() {} } /// Like the language server protocol, a notification to ask the @@ -27,4 +29,6 @@ public struct ShutdownBuild: RequestType { /// otherwise with error code 1. public struct ExitBuildNotification: NotificationType { public static let method: String = "build/exit" + + public init() {} } diff --git a/Sources/SKCore/BuildServerBuildSystem.swift b/Sources/SKCore/BuildServerBuildSystem.swift index 1be16033..775071b6 100644 --- a/Sources/SKCore/BuildServerBuildSystem.swift +++ b/Sources/SKCore/BuildServerBuildSystem.swift @@ -57,6 +57,11 @@ public final class BuildServerBuildSystem { } } + deinit { + _ = try? self.buildServer?.sendSync(ShutdownBuild()) + self.buildServer?.send(ExitBuildNotification()) + } + private func initializeBuildServer() throws { let serverPath = AbsolutePath(serverConfig.argv[0], relativeTo: projectRoot) let flags = Array(serverConfig.argv[1...]) @@ -78,6 +83,7 @@ public final class BuildServerBuildSystem { let handler = BuildServerHandler() let buildServer = try makeJSONRPCBuildServer(client: handler, serverPath: serverPath, serverFlags: flags) let response = try buildServer.sendSync(initializeRequest) + buildServer.send(InitializedBuildNotification()) log("initialized build server \(response.displayName)") self.buildServer = buildServer self.handler = handler