diff --git a/GCDTask.h b/GCDTask.h index 028bb41..6b6ad36 100644 --- a/GCDTask.h +++ b/GCDTask.h @@ -26,6 +26,7 @@ @property (strong) NSString* launchPath; @property (strong) NSArray* arguments; +@property (strong) NSDictionary* environment; @property BOOL hasExecuted; @property __block dispatch_source_t stdoutSource; @property __block dispatch_source_t stderrSource; @@ -35,7 +36,7 @@ - (void) launchWithOutputBlock: (void (^)(NSData* stdOutData)) stdOut andErrorBlock: (void (^)(NSData* stdErrData)) stdErr onLaunch: (void (^)()) launched - onExit: (void (^)()) exit; + onExit: (void (^)(int)) exit; - (BOOL) WriteStringToStandardInput: (NSString*) input; - (BOOL) WriteDataToStandardInput: (NSData*) input; diff --git a/GCDTask.m b/GCDTask.m index 8a8a75d..2749b12 100644 --- a/GCDTask.m +++ b/GCDTask.m @@ -18,7 +18,7 @@ - (id) init - (void) launchWithOutputBlock: (void (^)(NSData* stdOutData)) stdOut andErrorBlock: (void (^)(NSData* stdErrData)) stdErr onLaunch: (void (^)()) launched - onExit: (void (^)()) exit + onExit: (void (^)(int)) exit { executingTask = [[NSTask alloc] init]; @@ -46,9 +46,12 @@ - (void) launchWithOutputBlock: (void (^)(NSData* stdOutData)) stdOut } } - [executingTask setArguments:_arguments]; - + + /* Add Environment variables */ + if (_environment) { + [executingTask setEnvironment:_environment]; + } /* Setup pipes */ stdinPipe = [NSPipe pipe]; @@ -106,7 +109,7 @@ - (void) launchWithOutputBlock: (void (^)(NSData* stdOutData)) stdOut dispatch_source_cancel(_stdoutSource); dispatch_async(dispatch_get_main_queue(), ^{ if(exit) - exit(); + exit([executingTask terminationStatus]); }); } @@ -153,7 +156,7 @@ - (void) launchWithOutputBlock: (void (^)(NSData* stdOutData)) stdOut dispatch_source_cancel(_stdoutSource); dispatch_source_cancel(_stderrSource); if(exit) - exit(); + exit([executingTask terminationStatus]); }; [executingTask launch]; diff --git a/README.md b/README.md index 3ce60c5..0bbb054 100644 --- a/README.md +++ b/README.md @@ -21,8 +21,8 @@ Example usage: NSLog(@"ERR: %@", output); } onLaunch:^{ NSLog(@"Task has started running."); - } onExit:^{ - NSLog(@"Task has now quit."); + } onExit:^(int exitStatus) { + NSLog(@"Task has now quit. Exit status %d",exitStatus); }]; ```