mirror of
https://github.com/MacPass/MacPass.git
synced 2025-12-14 11:42:30 +00:00
Support for interal plugins
This commit is contained in:
@@ -43,10 +43,6 @@ NSString *const MPPluginManagerPluginBundleIdentifiyerKey = @"MPPluginManagerPlu
|
|||||||
return instance;
|
return instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)dealloc {
|
|
||||||
NSLog(@"%@ dealloc", [self class]);
|
|
||||||
}
|
|
||||||
|
|
||||||
- (instancetype)init {
|
- (instancetype)init {
|
||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
@@ -71,16 +67,30 @@ NSString *const MPPluginManagerPluginBundleIdentifiyerKey = @"MPPluginManagerPlu
|
|||||||
}
|
}
|
||||||
|
|
||||||
- (void)_loadPlugins {
|
- (void)_loadPlugins {
|
||||||
NSURL *dir = [NSApp applicationSupportDirectoryURL:YES];
|
NSURL *appSupportDir = [NSApp applicationSupportDirectoryURL:YES];
|
||||||
NSError *error;
|
NSError *error;
|
||||||
NSArray *contentURLs = [[NSFileManager defaultManager] contentsOfDirectoryAtURL:dir
|
NSArray *externalPluginsURLs = [[NSFileManager defaultManager] contentsOfDirectoryAtURL:appSupportDir
|
||||||
includingPropertiesForKeys:@[]
|
includingPropertiesForKeys:@[]
|
||||||
options:NSDirectoryEnumerationSkipsHiddenFiles
|
options:NSDirectoryEnumerationSkipsHiddenFiles
|
||||||
error:&error];
|
error:&error];
|
||||||
if(!contentURLs) {
|
|
||||||
NSLog(@"Error while trying to locate Plugins: %@", error.localizedDescription);
|
NSArray *internalPluginsURLs = [[NSFileManager defaultManager] contentsOfDirectoryAtURL:[NSBundle mainBundle].builtInPlugInsURL
|
||||||
|
includingPropertiesForKeys:@[]
|
||||||
|
options:NSDirectoryEnumerationSkipsHiddenFiles
|
||||||
|
error:&error];
|
||||||
|
|
||||||
|
|
||||||
|
if(!externalPluginsURLs) {
|
||||||
|
// No external plugins
|
||||||
|
NSLog(@"No external plugins found!");
|
||||||
}
|
}
|
||||||
for(NSURL *pluginURL in contentURLs) {
|
if(!internalPluginsURLs) {
|
||||||
|
// No internal plugins
|
||||||
|
NSLog(@"No internal plugins found!");
|
||||||
|
}
|
||||||
|
NSArray *pluginURLs = [externalPluginsURLs arrayByAddingObjectsFromArray:internalPluginsURLs];
|
||||||
|
|
||||||
|
for(NSURL *pluginURL in pluginURLs) {
|
||||||
|
|
||||||
if(![self _validURL:pluginURL]) {
|
if(![self _validURL:pluginURL]) {
|
||||||
continue;
|
continue;
|
||||||
@@ -113,12 +123,16 @@ NSString *const MPPluginManagerPluginBundleIdentifiyerKey = @"MPPluginManagerPlu
|
|||||||
MPPlugin *plugin = [[pluginBundle.principalClass alloc] initWithPluginManager:self];
|
MPPlugin *plugin = [[pluginBundle.principalClass alloc] initWithPluginManager:self];
|
||||||
if(plugin) {
|
if(plugin) {
|
||||||
NSLog(@"Loaded plugin instance %@", pluginBundle.principalClass);
|
NSLog(@"Loaded plugin instance %@", pluginBundle.principalClass);
|
||||||
[[NSNotificationCenter defaultCenter] postNotificationName:MPPluginManagerWillLoadPlugin object:self userInfo:@{ MPPluginManagerPluginBundleIdentifiyerKey : plugin.identifier }];
|
[[NSNotificationCenter defaultCenter] postNotificationName:MPPluginManagerWillLoadPlugin
|
||||||
|
object:self
|
||||||
|
userInfo:@{ MPPluginManagerPluginBundleIdentifiyerKey : plugin.identifier }];
|
||||||
[self.mutablePlugins addObject:plugin];
|
[self.mutablePlugins addObject:plugin];
|
||||||
[[NSNotificationCenter defaultCenter] postNotificationName:MPPluginManagerDidLoadPlugin object:self userInfo:@{ MPPluginManagerPluginBundleIdentifiyerKey : plugin.identifier }];
|
[[NSNotificationCenter defaultCenter] postNotificationName:MPPluginManagerDidLoadPlugin
|
||||||
|
object:self
|
||||||
|
userInfo:@{ MPPluginManagerPluginBundleIdentifiyerKey : plugin.identifier }];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
NSLog(@"Unable to instanciate instance of plugin class %@", pluginBundle.principalClass);
|
NSLog(@"Unable to create instance of plugin class %@", pluginBundle.principalClass);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user