From b896ac0d56e9e176a63d274d558f937d98645cd5 Mon Sep 17 00:00:00 2001 From: Pieter de Bie Date: Mon, 18 May 2009 23:05:08 +0100 Subject: [PATCH] Allow executing of hooks --- PBGitRepository.h | 1 + PBGitRepository.m | 14 ++++++++++++++ 2 files changed, 15 insertions(+) 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;