diff --git a/PBGitRepository.h b/PBGitRepository.h index 6f109d2..d6404be 100644 --- a/PBGitRepository.h +++ b/PBGitRepository.h @@ -35,6 +35,7 @@ extern NSString* PBGitRepositoryErrorDomain; - (NSString*) outputForArguments:(NSArray*) args retValue:(int *)ret; - (NSString *)outputInWorkdirForArguments:(NSArray*) arguments; - (NSString *)outputInWorkdirForArguments:(NSArray*) arguments retValue:(int *)ret; +- (BOOL)executeHook:(NSString *)name output:(NSString **)output; - (NSString *)workingDirectory; - (NSString *)gitIgnoreFilename; diff --git a/PBGitRepository.m b/PBGitRepository.m index e59b129..8ee97c9 100644 --- a/PBGitRepository.m +++ b/PBGitRepository.m @@ -365,6 +365,20 @@ NSString* PBGitRepositoryErrorDomain = @"GitXErrorDomain"; retValue: ret]; } +- (BOOL)executeHook:(NSString *)name output:(NSString **)output +{ + NSString* hookPath = [[[[self fileURL] path] stringByAppendingPathComponent:@"hooks"] stringByAppendingPathComponent:name]; + if (![[NSFileManager defaultManager] isExecutableFileAtPath:hookPath]) + return TRUE; + int ret = 1; + if (output) + *output = [PBEasyPipe outputForCommand:hookPath withArgs:[NSArray array] inDir:[self workingDirectory] retValue:&ret]; + else + [PBEasyPipe outputForCommand:hookPath withArgs:[NSArray array] inDir:[self workingDirectory] retValue:&ret]; + + return ret == 0; +} + - (NSString *)parseReference:(NSString *)reference { int ret = 1;