diff --git a/PMPackageManager.h b/PMPackageManager.h index 3d9ff14..de71d6b 100644 --- a/PMPackageManager.h +++ b/PMPackageManager.h @@ -22,10 +22,13 @@ #import +@class PMRepository; + @interface PMPackageManager : NSObject { NSString *_rootDirectory; NSString *_databasePath; NSMutableArray *_cacheDirectories; + NSMutableArray *_repositories; } + (PMPackageManager *) sharedManager; @@ -38,5 +41,9 @@ - (NSArray *) cacheDirectories; - (void) addCacheDirectory:(NSString *)thePath; - (void) removeCacheDirectory:(NSString *)thePath; - +- (PMRepository *) repositoryByRegisteringWithName:(NSString *)aName servers:(NSArray *)servers; +- (void) addRepository:(PMRepository *)aRepository; +- (void) removeRepository:(PMRepository *)aRepository; +- (NSArray *) repositories; +- (void) refreshRepositories; @end diff --git a/PMPackageManager.m b/PMPackageManager.m index 4c0bf82..b4e2e17 100644 --- a/PMPackageManager.m +++ b/PMPackageManager.m @@ -22,6 +22,7 @@ #import "PMPackageManager.h" #import +#import "PMRepository.h" static PMPackageManager *_sharedManager = nil; @@ -61,6 +62,7 @@ - (id) init self = [super init]; if(self != nil) { _cacheDirectories = [NSMutableArray new]; + _repositories = [NSMutableArray new]; } return self; } @@ -135,6 +137,11 @@ - (NSArray *)cacheDirectories return [NSArray arrayWithArray:_cacheDirectories]; } +- (NSArray *) repositories +{ + return _repositories; +} + #pragma mark Public methods + (void) initialize @@ -161,4 +168,34 @@ - (void) removeCacheDirectory:(NSString *)thePath } } +- (PMRepository *) repositoryByRegisteringWithName:(NSString *)aName servers:(NSArray *)servers; +{ + PMRepository *repository; + repository = [[PMRepository alloc] initWithName:aName servers:servers]; + [_repositories addObject:repository]; + return [repository autorelease]; +} + +- (void) addRepository:(PMRepository *)aRepository +{ + [_repositories addObject:aRepository]; +} + +- (void) removeRepository:(PMRepository *)aRepository +{ + [_repositories removeObject:aRepository]; +} + +- (void) refreshRepositories +{ + alpm_list_t *node; + alpm_trans_init(PM_TRANS_TYPE_SYNC, 0, NULL, NULL, NULL); + node = alpm_option_get_syncdbs(); + while(node != NULL) { + alpm_db_update(0, alpm_list_getdata(node)); + node = alpm_list_next(node); + } + alpm_trans_release(); +} + @end