Browse Source

Remove async main workarounds for Echo (#1423)

George Barnett 3 years ago
parent
commit
d46c27536d

+ 0 - 52
Sources/Examples/Echo/AsyncAwaitRuntime/ArgumentParser+AsyncAwait.swift

@@ -1,52 +0,0 @@
-/*
- * Copyright 2021, gRPC Authors All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/// NOTE: This file should be removed when the `async` branch of `swift-argument-parser` has been
-///       released: https://github.com/apple/swift-argument-parser/tree/async
-
-#if compiler(>=5.6)
-
-import ArgumentParser
-
-@available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *)
-protocol AsyncParsableCommand: ParsableCommand {
-  mutating func runAsync() async throws
-}
-
-@available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *)
-extension AsyncParsableCommand {
-  public mutating func run() throws {
-    throw CleanExit.helpRequest(self)
-  }
-}
-
-@available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *)
-extension ParsableCommand {
-  static func main(_ arguments: [String]? = nil) async {
-    do {
-      var command = try parseAsRoot(arguments)
-      if var asyncCommand = command as? AsyncParsableCommand {
-        try await asyncCommand.runAsync()
-      } else {
-        try command.run()
-      }
-    } catch {
-      exit(withError: error)
-    }
-  }
-}
-
-#endif

+ 3 - 25
Sources/Examples/Echo/AsyncAwaitRuntime/main.swift → Sources/Examples/Echo/AsyncAwaitRuntime/Echo.swift

@@ -37,7 +37,7 @@ enum RPC: String, ExpressibleByArgument {
 }
 
 @available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *)
-struct Echo: ParsableCommand {
+struct Echo: AsyncParsableCommand {
   static var configuration = CommandConfiguration(
     abstract: "An example to run and call a simple gRPC service for echoing messages.",
     subcommands: [Server.self, Client.self]
@@ -54,7 +54,7 @@ struct Echo: ParsableCommand {
     @Flag(help: "Whether TLS should be used or not")
     var tls = false
 
-    func runAsync() async throws {
+    func run() async throws {
       let group = MultiThreadedEventLoopGroup(numberOfThreads: 1)
       defer {
         try! group.syncShutdownGracefully()
@@ -90,7 +90,7 @@ struct Echo: ParsableCommand {
     @Argument(help: "Message to echo")
     var message: String
 
-    func runAsync() async throws {
+    func run() async throws {
       let group = MultiThreadedEventLoopGroup(numberOfThreads: 1)
       defer {
         try! group.syncShutdownGracefully()
@@ -246,28 +246,6 @@ func echoUpdate(client: Echo_EchoAsyncClient, message: String) async throws {
   }
 }
 
-// MARK: - "Main"
-
-/// NOTE: We would like to be able to rename this file from `main.swift` to something else and just
-/// use `@main` but I cannot get this to work with the current combination of this repo and Xcode on
-/// macOS.
-import Dispatch
-let dg = DispatchGroup()
-dg.enter()
-if #available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *) {
-  Task {
-    await Echo.main()
-    dg.leave()
-  }
-} else {
-  print("ERROR: Concurrency only supported on Swift >= 5.5.")
-  dg.leave()
-}
-
-dg.wait()
-
 #else
-
 print("ERROR: Concurrency only supported on Swift >= 5.5.")
-
 #endif