mirror of
https://github.com/kennethreitz-archive/gitx.git
synced 2026-06-05 23:40:18 +00:00
EasyPipe: Add functions to ask for the return value of commands
This commit is contained in:
@@ -18,4 +18,9 @@
|
||||
|
||||
+ (NSString*) outputForCommand: (NSString*) cmd withArgs: (NSArray*) args;
|
||||
+ (NSString*) outputForCommand: (NSString*) cmd withArgs: (NSArray*) args inDir: (NSString*) dir;
|
||||
+ (NSString*) outputForCommand:(NSString *) cmd
|
||||
withArgs:(NSArray *) args
|
||||
inDir:(NSString *) dir
|
||||
retValue:(int *) ret;
|
||||
|
||||
@end
|
||||
|
||||
+41
-7
@@ -16,19 +16,24 @@
|
||||
return [self handleForCommand:cmd withArgs:args inDir:nil];
|
||||
}
|
||||
|
||||
+ (NSFileHandle*) handleForCommand: (NSString*) cmd withArgs: (NSArray*) args inDir: (NSString*) dir
|
||||
+ (NSTask *) taskForCommand:(NSString *)cmd withArgs:(NSArray *)args inDir:(NSString *)dir
|
||||
{
|
||||
NSTask* task = [[NSTask alloc] init];
|
||||
task.launchPath = cmd;
|
||||
task.arguments = args;
|
||||
if (dir)
|
||||
task.currentDirectoryPath = dir;
|
||||
|
||||
NSLog(@"Starting `cmd %@ %@` in dir %@", cmd, [args componentsJoinedByString:@" "], dir);
|
||||
NSPipe* pipe = [NSPipe pipe];
|
||||
task.standardOutput = pipe;
|
||||
|
||||
NSFileHandle* handle = [NSFileHandle fileHandleWithStandardOutput];
|
||||
handle = [pipe fileHandleForReading];
|
||||
return task;
|
||||
}
|
||||
|
||||
+ (NSFileHandle*) handleForCommand: (NSString*) cmd withArgs: (NSArray*) args inDir: (NSString*) dir
|
||||
{
|
||||
NSTask *task = [self taskForCommand:cmd withArgs:args inDir:dir];
|
||||
NSFileHandle* handle = [task.standardOutput fileHandleForReading];
|
||||
|
||||
[task launch];
|
||||
return handle;
|
||||
@@ -36,16 +41,45 @@
|
||||
|
||||
|
||||
|
||||
+ (NSString*) outputForCommand: (NSString*) cmd withArgs: (NSArray*) args inDir: (NSString*) dir
|
||||
+ (NSString*) outputForCommand:(NSString *) cmd
|
||||
withArgs:(NSArray *) args
|
||||
inDir:(NSString *) dir
|
||||
retValue:(int *) ret
|
||||
{
|
||||
NSFileHandle* handle = [self handleForCommand:cmd withArgs: args inDir: dir];
|
||||
NSTask *task = [self taskForCommand:cmd withArgs:args inDir:dir];
|
||||
NSFileHandle* handle = [task.standardOutput fileHandleForReading];
|
||||
[task launch];
|
||||
|
||||
NSData* data = [handle readDataToEndOfFile];
|
||||
NSString* string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
|
||||
|
||||
// Strip trailing newline
|
||||
if ([string hasSuffix:@"\n"])
|
||||
string = [string substringToIndex:[string length]-1];
|
||||
|
||||
|
||||
[task waitUntilExit];
|
||||
if (ret)
|
||||
*ret = [task terminationStatus];
|
||||
return string;
|
||||
}
|
||||
|
||||
// We don't use the above function because then we'd have to wait until the program was finished
|
||||
// with running
|
||||
+ (NSString*) outputForCommand: (NSString*) cmd withArgs: (NSArray*) args inDir: (NSString*) dir
|
||||
{
|
||||
NSTask *task = [self taskForCommand:cmd withArgs:args inDir:dir];
|
||||
NSFileHandle* handle = [task.standardOutput fileHandleForReading];
|
||||
[task launch];
|
||||
|
||||
NSData* data = [handle readDataToEndOfFile];
|
||||
NSString* string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
|
||||
|
||||
// Strip trailing newline
|
||||
if ([string hasSuffix:@"\n"])
|
||||
string = [string substringToIndex:[string length]-1];
|
||||
return string;
|
||||
}
|
||||
|
||||
+ (NSString*) outputForCommand: (NSString*) cmd withArgs: (NSArray*) args
|
||||
{
|
||||
return [self outputForCommand:cmd withArgs:args inDir:nil];
|
||||
|
||||
@@ -22,7 +22,9 @@ extern NSString* PBGitRepositoryErrorDomain;
|
||||
- (NSFileHandle*) handleForCommand:(NSString*) cmd;
|
||||
- (NSFileHandle*) handleForArguments:(NSArray*) args;
|
||||
- (NSString*) outputForCommand:(NSString*) cmd;
|
||||
- (NSString*) outputForCommand:(NSString *)str retValue:(int *)ret;
|
||||
- (NSString*) outputForArguments:(NSArray*) args;
|
||||
- (NSString*) outputForArguments:(NSArray*) args retValue:(int *)ret;
|
||||
|
||||
- (BOOL) reloadRefs;
|
||||
- (void) addRef:(PBGitRef *)ref fromParameters:(NSArray *)params;
|
||||
|
||||
@@ -278,11 +278,22 @@ static NSString* gitPath;
|
||||
return [self outputForArguments: arguments];
|
||||
}
|
||||
|
||||
- (NSString*) outputForCommand:(NSString *)str retValue:(int *)ret;
|
||||
{
|
||||
NSArray* arguments = [str componentsSeparatedByString:@" "];
|
||||
return [self outputForArguments: arguments retValue: ret];
|
||||
}
|
||||
|
||||
- (NSString*) outputForArguments:(NSArray*) arguments
|
||||
{
|
||||
return [PBEasyPipe outputForCommand:gitPath withArgs:arguments inDir: self.fileURL.path];
|
||||
}
|
||||
|
||||
- (NSString*) outputForArguments:(NSArray *)arguments retValue:(int *)ret;
|
||||
{
|
||||
return [PBEasyPipe outputForCommand:gitPath withArgs:arguments inDir: self.fileURL.path retValue: ret];
|
||||
}
|
||||
|
||||
- (NSString*) parseReference:(NSString *)reference
|
||||
{
|
||||
return [self outputForArguments:[NSArray arrayWithObjects: @"rev-parse", reference, nil]];
|
||||
|
||||
Reference in New Issue
Block a user