Merge branch 'fix_interspacing'
[GitX.git] / PBEasyPipe.m
blobfc12ba8897fbeaf0dd1c7134e9c52a5e6fdf58a5
1 //
2 //  PBEasyPipe.m
3 //  GitX
4 //
5 //  Created by Pieter de Bie on 16-06-08.
6 //  Copyright 2008 __MyCompanyName__. All rights reserved.
7 //
9 #import "PBEasyPipe.h"
12 @implementation PBEasyPipe
14 + (NSFileHandle*) handleForCommand: (NSString*) cmd withArgs: (NSArray*) args
16         return [self handleForCommand:cmd withArgs:args inDir:nil];
19 + (NSFileHandle*) handleForCommand: (NSString*) cmd withArgs: (NSArray*) args inDir: (NSString*) dir
21         NSTask* task = [[NSTask alloc] init];
22         task.launchPath = cmd;
23         task.arguments = args;
24         if (dir)
25                 task.currentDirectoryPath = dir;
26         NSLog(@"Starting `cmd %@ %@` in dir %@", cmd, [args componentsJoinedByString:@" "], dir);
27         NSPipe* pipe = [NSPipe pipe];
28         task.standardOutput = pipe;
29         
30         NSFileHandle* handle = [NSFileHandle fileHandleWithStandardOutput];
31         handle = [pipe fileHandleForReading];
32         
33         [task launch];
34         return handle;
39 + (NSString*) outputForCommand: (NSString*) cmd withArgs: (NSArray*) args inDir: (NSString*) dir
41         NSFileHandle* handle = [self handleForCommand:cmd withArgs: args inDir: dir];
42         NSData* data = [handle readDataToEndOfFile];
43         NSString* string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
44         if ([string hasSuffix:@"\n"])
45                 string = [string substringToIndex:[string length]-1];
46         
47         return string;
48 }       
49 + (NSString*) outputForCommand: (NSString*) cmd withArgs: (NSArray*) args
51         return [self outputForCommand:cmd withArgs:args inDir:nil];
54 @end