@@ -21,20 +21,18 @@ import Foundation
2121import  TSCLibc
2222import  Dispatch
2323
24- import  _Concurrency
25- 
2624/// Process result data which is available after process termination.
27- public  struct  ProcessResult :  CustomStringConvertible ,   Sendable  { 
25+ public  struct  ProcessResult :  CustomStringConvertible  { 
2826
29-     public  enum  Error :  Swift . Error ,   Sendable  { 
27+     public  enum  Error :  Swift . Error  { 
3028        /// The output is not a valid UTF8 sequence.
3129        case  illegalUTF8Sequence
3230
3331        /// The process had a non zero exit.
3432        case  nonZeroExit( ProcessResult ) 
3533    } 
3634
37-     public  enum  ExitStatus :  Equatable ,   Sendable  { 
35+     public  enum  ExitStatus :  Equatable  { 
3836        /// The process was terminated normally with a exit code.
3937        case  terminated( code:  Int32 ) 
4038#if os(Windows) 
@@ -127,18 +125,12 @@ public struct ProcessResult: CustomStringConvertible, Sendable {
127125    } 
128126} 
129127
130- #if swift(<5.6) 
131- extension  Process :  UnsafeSendable  { } 
132- #else 
133- extension  Process :  @unchecked   Sendable  { } 
134- #endif 
135- 
136128/// Process allows spawning new subprocesses and working with them.
137129///
138130/// Note: This class is thread safe.
139131public  final  class  Process  { 
140132    /// Errors when attempting to invoke a process
141-     public  enum  Error :  Swift . Error ,   Sendable  { 
133+     public  enum  Error :  Swift . Error  { 
142134        /// The program requested to be executed cannot be found on the existing search paths, or is not executable.
143135        case  missingExecutableProgram( program:  String ) 
144136
@@ -815,29 +807,7 @@ public final class Process {
815807    #endif // POSIX implementation 
816808    } 
817809
818-     /// Executes the process I/O state machine, returning the result when finished.
819-     @available ( macOS 10 . 15 ,  iOS 13 . 0 ,  tvOS 13 . 0 ,  watchOS 6 . 0 ,  * )  
820-     @discardableResult  
821-     public  func  waitUntilExit( )  async  throws  ->  ProcessResult  { 
822-         #if compiler(>=5.6) 
823-         return  try   await  withCheckedThrowingContinuation  {  continuation in 
824-             waitUntilExit ( continuation. resume ( with: ) ) 
825-         } 
826-         #else 
827-         if  #available( macOS 12 . 0 ,  iOS 15 . 0 ,  tvOS 15 . 0 ,  watchOS 8 . 0 ,  * )  { 
828-             return  try   await  withCheckedThrowingContinuation  {  continuation in 
829-                 waitUntilExit ( continuation. resume ( with: ) ) 
830-             } 
831-         }  else  { 
832-             preconditionFailure ( " Unsupported with Swift 5.5 on this OS version " ) 
833-         } 
834-         #endif 
835-     } 
836- 
837810    /// Blocks the calling process until the subprocess finishes execution.
838-     #if compiler(>=5.8) 
839-     @available ( * ,  noasync)  
840-     #endif 
841811    @discardableResult  
842812    public  func  waitUntilExit( )  throws  ->  ProcessResult  { 
843813        let  group  =  DispatchGroup ( ) 
@@ -968,88 +938,6 @@ public final class Process {
968938    } 
969939} 
970940
971- extension  Process  { 
972-     /// Execute a subprocess and returns the result when it finishes execution
973-     ///
974-     /// - Parameters:
975-     ///   - arguments: The arguments for the subprocess.
976-     ///   - environment: The environment to pass to subprocess. By default the current process environment
977-     ///     will be inherited.
978-     ///   - loggingHandler: Handler for logging messages
979-     @available ( macOS 10 . 15 ,  * )  
980-     static  public  func  popen( 
981-         arguments:  [ String ] , 
982-         environment:  [ String :  String ]  =  ProcessEnv . vars, 
983-         loggingHandler:  LoggingHandler ?   =  . none
984-     )  async  throws  ->  ProcessResult  { 
985-         let  process  =  Process ( 
986-             arguments:  arguments, 
987-             environment:  environment, 
988-             outputRedirection:  . collect, 
989-             loggingHandler:  loggingHandler
990-         ) 
991-         try   process. launch ( ) 
992-         return  try   await  process. waitUntilExit ( ) 
993-     } 
994- 
995-     /// Execute a subprocess and returns the result when it finishes execution
996-     ///
997-     /// - Parameters:
998-     ///   - args: The arguments for the subprocess.
999-     ///   - environment: The environment to pass to subprocess. By default the current process environment
1000-     ///     will be inherited.
1001-     ///   - loggingHandler: Handler for logging messages
1002-     @available ( macOS 10 . 15 ,  * )  
1003-     static  public  func  popen( 
1004-         args:  String ... , 
1005-         environment:  [ String :  String ]  =  ProcessEnv . vars, 
1006-         loggingHandler:  LoggingHandler ?   =  . none
1007-     )  async  throws  ->  ProcessResult  { 
1008-         try   await  popen ( arguments:  args,  environment:  environment,  loggingHandler:  loggingHandler) 
1009-     } 
1010- 
1011-     /// Execute a subprocess and get its (UTF-8) output if it has a non zero exit.
1012-     ///
1013-     /// - Parameters:
1014-     ///   - arguments: The arguments for the subprocess.
1015-     ///   - environment: The environment to pass to subprocess. By default the current process environment
1016-     ///     will be inherited.
1017-     ///   - loggingHandler: Handler for logging messages
1018-     /// - Returns: The process output (stdout + stderr).
1019-     @available ( macOS 10 . 15 ,  * )  
1020-     @discardableResult  
1021-     static  public  func  checkNonZeroExit( 
1022-         arguments:  [ String ] , 
1023-         environment:  [ String :  String ]  =  ProcessEnv . vars, 
1024-         loggingHandler:  LoggingHandler ?   =  . none
1025-     )  async  throws  ->  String  { 
1026-         let  result  =  try   await  popen ( arguments:  arguments,  environment:  environment,  loggingHandler:  loggingHandler) 
1027-         // Throw if there was a non zero termination.
1028-         guard  result. exitStatus ==  . terminated( code:  0 )  else  { 
1029-             throw  ProcessResult . Error. nonZeroExit ( result) 
1030-         } 
1031-         return  try   result. utf8Output ( ) 
1032-     } 
1033- 
1034-     /// Execute a subprocess and get its (UTF-8) output if it has a non zero exit.
1035-     ///
1036-     /// - Parameters:
1037-     ///   - args: The arguments for the subprocess.
1038-     ///   - environment: The environment to pass to subprocess. By default the current process environment
1039-     ///     will be inherited.
1040-     ///   - loggingHandler: Handler for logging messages
1041-     /// - Returns: The process output (stdout + stderr).
1042-     @available ( macOS 10 . 15 ,  * )  
1043-     @discardableResult  
1044-     static  public  func  checkNonZeroExit( 
1045-         args:  String ... , 
1046-         environment:  [ String :  String ]  =  ProcessEnv . vars, 
1047-         loggingHandler:  LoggingHandler ?   =  . none
1048-     )  async  throws  ->  String  { 
1049-         try   await  checkNonZeroExit ( arguments:  args,  environment:  environment,  loggingHandler:  loggingHandler) 
1050-     } 
1051- } 
1052- 
1053941extension  Process  { 
1054942    /// Execute a subprocess and calls completion block when it finishes execution
1055943    ///
@@ -1060,9 +948,6 @@ extension Process {
1060948    ///   - loggingHandler: Handler for logging messages
1061949    ///   - queue: Queue to use for callbacks
1062950    ///   - completion: A completion handler to return the process result
1063-     #if compiler(>=5.8) 
1064-     @available ( * ,  noasync)  
1065-     #endif 
1066951    static  public  func  popen( 
1067952        arguments:  [ String ] , 
1068953        environment:  [ String :  String ]  =  ProcessEnv . vars, 
@@ -1097,9 +982,6 @@ extension Process {
1097982    ///     will be inherited.
1098983    ///   - loggingHandler: Handler for logging messages
1099984    /// - Returns: The process result.
1100-     #if compiler(>=5.8) 
1101-     @available ( * ,  noasync)  
1102-     #endif 
1103985    @discardableResult  
1104986    static  public  func  popen( 
1105987        arguments:  [ String ] , 
@@ -1124,9 +1006,6 @@ extension Process {
11241006    ///     will be inherited.
11251007    ///   - loggingHandler: Handler for logging messages
11261008    /// - Returns: The process result.
1127-     #if compiler(>=5.8) 
1128-     @available ( * ,  noasync)  
1129-     #endif 
11301009    @discardableResult  
11311010    static  public  func  popen( 
11321011        args:  String ... , 
@@ -1144,9 +1023,6 @@ extension Process {
11441023    ///     will be inherited.
11451024    ///   - loggingHandler: Handler for logging messages
11461025    /// - Returns: The process output (stdout + stderr).
1147-     #if compiler(>=5.8) 
1148-     @available ( * ,  noasync)  
1149-     #endif 
11501026    @discardableResult  
11511027    static  public  func  checkNonZeroExit( 
11521028        arguments:  [ String ] , 
@@ -1176,9 +1052,6 @@ extension Process {
11761052    ///     will be inherited.
11771053    ///   - loggingHandler: Handler for logging messages
11781054    /// - Returns: The process output (stdout + stderr).
1179-     #if compiler(>=5.8) 
1180-     @available ( * ,  noasync)  
1181-     #endif 
11821055    @discardableResult  
11831056    static  public  func  checkNonZeroExit( 
11841057        args:  String ... , 
0 commit comments