Skip to content

Commit 911dad7

Browse files
Remove swift-service-lifecycle dependency (#96)
We have only single service in the project, so we don't need to orchestrate multiple services to gracefully shutdown. We can just run the single service and let it run until it finishes.
1 parent 398eb86 commit 911dad7

File tree

3 files changed

+15
-33
lines changed

3 files changed

+15
-33
lines changed

Package.resolved

Lines changed: 0 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Package.swift

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ let package = Package(
2424
.package(url: "https://github.com/apple/swift-crypto.git", from: "3.1.0"),
2525
.package(url: "https://github.com/apple/swift-nio.git", from: "2.63.0"),
2626
.package(url: "https://github.com/apple/swift-log.git", from: "1.5.3"),
27-
.package(url: "https://github.com/swift-server/swift-service-lifecycle.git", from: "2.3.0"),
2827
],
2928
targets: [
3029
// Targets are the basic building blocks of a package. A target can define a module or a test suite.
@@ -34,7 +33,6 @@ let package = Package(
3433
dependencies: [
3534
"SwiftSDKGenerator",
3635
.product(name: "ArgumentParser", package: "swift-argument-parser"),
37-
.product(name: "ServiceLifecycle", package: "swift-service-lifecycle"),
3836
],
3937
swiftSettings: [
4038
.enableExperimentalFeature("StrictConcurrency=complete"),
@@ -47,7 +45,6 @@ let package = Package(
4745
.product(name: "AsyncAlgorithms", package: "swift-async-algorithms"),
4846
.product(name: "AsyncHTTPClient", package: "async-http-client"),
4947
.product(name: "Logging", package: "swift-log"),
50-
.product(name: "ServiceLifecycle", package: "swift-service-lifecycle"),
5148
.product(name: "SystemPackage", package: "swift-system"),
5249
"GeneratorEngine",
5350
"Helpers",

Sources/GeneratorCLI/GeneratorCLI.swift

Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212

1313
import ArgumentParser
1414
import Logging
15-
import ServiceLifecycle
1615
import SwiftSDKGenerator
1716
import struct SystemPackage.FilePath
1817

@@ -40,18 +39,22 @@ struct GeneratorCLI: AsyncParsableCommand {
4039
logger: logger
4140
)
4241

43-
let serviceGroup = ServiceGroup(
44-
configuration: .init(
45-
services: [.init(
46-
service: SwiftSDKGeneratorService(recipe: recipe, generator: generator),
47-
successTerminationBehavior: .gracefullyShutdownGroup
48-
)],
49-
cancellationSignals: [.sigint],
50-
logger: logger
51-
)
52-
)
42+
let generatorTask = Task {
43+
try await generator.run(recipe: recipe)
44+
}
5345

54-
try await serviceGroup.run()
46+
#if canImport(Darwin)
47+
// On Darwin platforms Dispatch's signal source uses kqueue and EVFILT_SIGNAL for
48+
// delivering signals. This exists alongside but with lower precedence than signal and
49+
// sigaction: ignore signal handling here to kqueue can deliver signals.
50+
signal(SIGINT, SIG_IGN)
51+
#endif
52+
let signalSource = DispatchSource.makeSignalSource(signal: SIGINT)
53+
signalSource.setEventHandler {
54+
generatorTask.cancel()
55+
}
56+
signalSource.resume()
57+
try await generatorTask.value
5558
}
5659

5760
print("\nTime taken for this generator run: \(elapsed.intervalString).")
@@ -303,15 +306,6 @@ extension Duration {
303306
}
304307
}
305308

306-
struct SwiftSDKGeneratorService: Service {
307-
let recipe: SwiftSDKRecipe
308-
let generator: SwiftSDKGenerator
309-
310-
func run() async throws {
311-
try await generator.run(recipe: recipe)
312-
}
313-
}
314-
315309
struct StringError: Error, CustomStringConvertible {
316310
let description: String
317311
init(_ description: String) {

0 commit comments

Comments
 (0)