Skip to content

Commit b89db96

Browse files
committed
Refactor Plugin Load/Management to support upcoming changes
1 parent 8d91951 commit b89db96

File tree

9 files changed

+88
-175
lines changed

9 files changed

+88
-175
lines changed

binaryninjaapi.cpp

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -49,24 +49,6 @@ bool BinaryNinja::InitPlugins(bool allowUserPlugins)
4949
}
5050

5151

52-
void BinaryNinja::InitCorePlugins()
53-
{
54-
BNInitCorePlugins();
55-
}
56-
57-
58-
void BinaryNinja::InitUserPlugins()
59-
{
60-
BNInitUserPlugins();
61-
}
62-
63-
64-
void BinaryNinja::InitRepoPlugins()
65-
{
66-
BNInitRepoPlugins();
67-
}
68-
69-
7052
string BinaryNinja::GetBundledPluginDirectory()
7153
{
7254
char* path = BNGetBundledPluginDirectory();

binaryninjaapi.h

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18423,10 +18423,10 @@ namespace BinaryNinja {
1842318423
/*!
1842418424
\ingroup pluginmanager
1842518425
*/
18426-
class RepoPlugin : public CoreRefCountObject<BNRepoPlugin, BNNewPluginReference, BNFreePlugin>
18426+
class RepoPlugin : public CoreRefCountObject<BNPlugin, BNNewPluginReference, BNFreePlugin>
1842718427
{
1842818428
public:
18429-
RepoPlugin(BNRepoPlugin* plugin);
18429+
RepoPlugin(BNPlugin* plugin);
1843018430
PluginStatus GetPluginStatus() const;
1843118431
std::vector<std::string> GetApis() const;
1843218432
std::vector<std::string> GetInstallPlatforms() const;
@@ -18491,17 +18491,13 @@ namespace BinaryNinja {
1849118491
/*!
1849218492
\ingroup pluginmanager
1849318493
*/
18494-
class RepositoryManager :
18495-
public CoreRefCountObject<BNRepositoryManager, BNNewRepositoryManagerReference, BNFreeRepositoryManager>
18494+
class RepositoryManager
1849618495
{
1849718496
public:
18498-
RepositoryManager(const std::string& enabledPluginsPath);
18499-
RepositoryManager(BNRepositoryManager* repoManager);
18500-
RepositoryManager();
18501-
bool CheckForUpdates();
18502-
std::vector<Ref<Repository>> GetRepositories();
18503-
Ref<Repository> GetRepositoryByPath(const std::string& repoName);
18504-
bool AddRepository(const std::string& url, // URL to raw plugins.json file
18497+
static bool CheckForUpdates();
18498+
static std::vector<Ref<Repository>> GetRepositories();
18499+
static Ref<Repository> GetRepositoryByPath(const std::string& repoName);
18500+
static bool AddRepository(const std::string& url, // URL to raw plugins.json file
1850518501
const std::string& repoPath); // Relative path within the repositories directory
1850618502
Ref<Repository> GetDefaultRepository();
1850718503
};

binaryninjacore.h

Lines changed: 52 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,7 @@ extern "C"
192192
} PluginLoadStatus;
193193

194194
typedef bool (*BNCorePluginInitFunction)(void);
195+
typedef bool (*BNScriptPluginInitFunction)(const char*, const char*);
195196
typedef void (*BNCorePluginDependencyFunction)(void);
196197
typedef uint32_t (*BNCorePluginABIVersionFunction)(void);
197198

@@ -256,8 +257,7 @@ extern "C"
256257
typedef struct BNMainThreadAction BNMainThreadAction;
257258
typedef struct BNBackgroundTask BNBackgroundTask;
258259
typedef struct BNRepository BNRepository;
259-
typedef struct BNRepoPlugin BNRepoPlugin;
260-
typedef struct BNRepositoryManager BNRepositoryManager;
260+
typedef struct BNPlugin BNPlugin;
261261
typedef struct BNComponent BNComponent;
262262
typedef struct BNSettings BNSettings;
263263
typedef struct BNMetadata BNMetadata;
@@ -3944,11 +3944,8 @@ extern "C"
39443944

39453945
// Plugin initialization
39463946
BINARYNINJACOREAPI bool BNInitPlugins(bool allowUserPlugins);
3947-
BINARYNINJACOREAPI bool BNInitCorePlugins(void); // Deprecated, use BNInitPlugins
39483947
BINARYNINJACOREAPI void BNDisablePlugins(void);
39493948
BINARYNINJACOREAPI bool BNIsPluginsEnabled(void);
3950-
BINARYNINJACOREAPI void BNInitUserPlugins(void); // Deprecated, use BNInitPlugins
3951-
BINARYNINJACOREAPI void BNInitRepoPlugins(void);
39523949

39533950
BINARYNINJACOREAPI char* BNGetInstallDirectory(void);
39543951
BINARYNINJACOREAPI char* BNGetBundledPluginDirectory(void);
@@ -7679,75 +7676,70 @@ extern "C"
76797676
BNType** outType, BNQualifiedName* outVarName, BNBinaryView* view, bool simplify);
76807677

76817678
// Plugin repository APIs
7682-
BINARYNINJACOREAPI char** BNPluginGetApis(BNRepoPlugin* p, size_t* count);
7683-
BINARYNINJACOREAPI const char* BNPluginGetAuthor(BNRepoPlugin* p);
7684-
BINARYNINJACOREAPI const char* BNPluginGetDescription(BNRepoPlugin* p);
7685-
BINARYNINJACOREAPI const char* BNPluginGetLicenseText(BNRepoPlugin* p);
7686-
BINARYNINJACOREAPI const char* BNPluginGetLongdescription(BNRepoPlugin* p);
7687-
BINARYNINJACOREAPI BNVersionInfo BNPluginGetMinimumVersionInfo(BNRepoPlugin* p);
7688-
BINARYNINJACOREAPI BNVersionInfo BNPluginGetMaximumVersionInfo(BNRepoPlugin* p);
7679+
BINARYNINJACOREAPI char** BNPluginGetApis(BNPlugin* p, size_t* count);
7680+
BINARYNINJACOREAPI const char* BNPluginGetAuthor(BNPlugin* p);
7681+
BINARYNINJACOREAPI const char* BNPluginGetDescription(BNPlugin* p);
7682+
BINARYNINJACOREAPI const char* BNPluginGetLicenseText(BNPlugin* p);
7683+
BINARYNINJACOREAPI const char* BNPluginGetLongdescription(BNPlugin* p);
7684+
BINARYNINJACOREAPI BNVersionInfo BNPluginGetMinimumVersionInfo(BNPlugin* p);
7685+
BINARYNINJACOREAPI BNVersionInfo BNPluginGetMaximumVersionInfo(BNPlugin* p);
76897686
BINARYNINJACOREAPI BNVersionInfo BNParseVersionString(const char* v);
76907687
BINARYNINJACOREAPI bool BNVersionLessThan(const BNVersionInfo smaller, const BNVersionInfo larger);
7691-
BINARYNINJACOREAPI const char* BNPluginGetName(BNRepoPlugin* p);
7692-
BINARYNINJACOREAPI const char* BNPluginGetProjectUrl(BNRepoPlugin* p);
7693-
BINARYNINJACOREAPI const char* BNPluginGetPackageUrl(BNRepoPlugin* p);
7694-
BINARYNINJACOREAPI const char* BNPluginGetAuthorUrl(BNRepoPlugin* p);
7695-
BINARYNINJACOREAPI const char* BNPluginGetVersion(BNRepoPlugin* p);
7696-
BINARYNINJACOREAPI const char* BNPluginGetCommit(BNRepoPlugin* p);
7697-
BINARYNINJACOREAPI const bool BNPluginGetViewOnly(BNRepoPlugin* p);
7688+
BINARYNINJACOREAPI const char* BNPluginGetName(BNPlugin* p);
7689+
BINARYNINJACOREAPI const char* BNPluginGetProjectUrl(BNPlugin* p);
7690+
BINARYNINJACOREAPI const char* BNPluginGetPackageUrl(BNPlugin* p);
7691+
BINARYNINJACOREAPI const char* BNPluginGetAuthorUrl(BNPlugin* p);
7692+
BINARYNINJACOREAPI const char* BNPluginGetVersion(BNPlugin* p);
7693+
BINARYNINJACOREAPI const char* BNPluginGetCommit(BNPlugin* p);
7694+
BINARYNINJACOREAPI const bool BNPluginGetViewOnly(BNPlugin* p);
76987695
BINARYNINJACOREAPI void BNFreePluginTypes(BNPluginType* r);
7699-
BINARYNINJACOREAPI BNRepoPlugin* BNNewPluginReference(BNRepoPlugin* r);
7700-
BINARYNINJACOREAPI void BNFreePlugin(BNRepoPlugin* plugin);
7701-
BINARYNINJACOREAPI const char* BNPluginGetPath(BNRepoPlugin* p);
7702-
BINARYNINJACOREAPI const char* BNPluginGetSubdir(BNRepoPlugin* p);
7703-
BINARYNINJACOREAPI const char* BNPluginGetDependencies(BNRepoPlugin* p);
7704-
BINARYNINJACOREAPI bool BNPluginIsInstalled(BNRepoPlugin* p);
7705-
BINARYNINJACOREAPI bool BNPluginIsEnabled(BNRepoPlugin* p);
7706-
BINARYNINJACOREAPI BNPluginStatus BNPluginGetPluginStatus(BNRepoPlugin* p);
7707-
BINARYNINJACOREAPI BNPluginType* BNPluginGetPluginTypes(BNRepoPlugin* p, size_t* count);
7708-
BINARYNINJACOREAPI bool BNPluginEnable(BNRepoPlugin* p, bool force);
7709-
BINARYNINJACOREAPI bool BNPluginDisable(BNRepoPlugin* p);
7710-
BINARYNINJACOREAPI bool BNPluginInstall(BNRepoPlugin* p);
7711-
BINARYNINJACOREAPI bool BNPluginInstallDependencies(BNRepoPlugin* p);
7712-
BINARYNINJACOREAPI bool BNPluginUninstall(BNRepoPlugin* p);
7713-
BINARYNINJACOREAPI bool BNPluginUpdate(BNRepoPlugin* p);
7714-
BINARYNINJACOREAPI char** BNPluginGetPlatforms(BNRepoPlugin* p, size_t* count);
7696+
BINARYNINJACOREAPI BNPlugin* BNNewPluginReference(BNPlugin* r);
7697+
BINARYNINJACOREAPI void BNFreePlugin(BNPlugin* plugin);
7698+
BINARYNINJACOREAPI const char* BNPluginGetPath(BNPlugin* p);
7699+
BINARYNINJACOREAPI const char* BNPluginGetSubdir(BNPlugin* p);
7700+
BINARYNINJACOREAPI const char* BNPluginGetDependencies(BNPlugin* p);
7701+
BINARYNINJACOREAPI bool BNPluginIsInstalled(BNPlugin* p);
7702+
BINARYNINJACOREAPI bool BNPluginIsEnabled(BNPlugin* p);
7703+
BINARYNINJACOREAPI BNPluginStatus BNPluginGetPluginStatus(BNPlugin* p);
7704+
BINARYNINJACOREAPI BNPluginType* BNPluginGetPluginTypes(BNPlugin* p, size_t* count);
7705+
BINARYNINJACOREAPI bool BNPluginEnable(BNPlugin* p, bool force);
7706+
BINARYNINJACOREAPI bool BNPluginDisable(BNPlugin* p);
7707+
BINARYNINJACOREAPI bool BNPluginInstall(BNPlugin* p);
7708+
BINARYNINJACOREAPI bool BNPluginInstallDependencies(BNPlugin* p);
7709+
BINARYNINJACOREAPI bool BNPluginUninstall(BNPlugin* p);
7710+
BINARYNINJACOREAPI bool BNPluginUpdate(BNPlugin* p);
7711+
BINARYNINJACOREAPI char** BNPluginGetPlatforms(BNPlugin* p, size_t* count);
77157712
BINARYNINJACOREAPI void BNFreePluginPlatforms(char** platforms, size_t count);
7716-
BINARYNINJACOREAPI const char* BNPluginGetRepository(BNRepoPlugin* p);
7717-
BINARYNINJACOREAPI bool BNPluginIsBeingDeleted(BNRepoPlugin* p);
7718-
BINARYNINJACOREAPI bool BNPluginIsBeingUpdated(BNRepoPlugin* p);
7719-
BINARYNINJACOREAPI bool BNPluginIsRunning(BNRepoPlugin* p);
7720-
BINARYNINJACOREAPI bool BNPluginIsUpdatePending(BNRepoPlugin* p);
7721-
BINARYNINJACOREAPI bool BNPluginIsDisablePending(BNRepoPlugin* p);
7722-
BINARYNINJACOREAPI bool BNPluginIsDeletePending(BNRepoPlugin* p);
7723-
BINARYNINJACOREAPI bool BNPluginIsUpdateAvailable(BNRepoPlugin* p);
7724-
BINARYNINJACOREAPI bool BNPluginAreDependenciesBeingInstalled(BNRepoPlugin* p);
7725-
7726-
BINARYNINJACOREAPI char* BNPluginGetProjectData(BNRepoPlugin* p);
7727-
BINARYNINJACOREAPI uint64_t BNPluginGetLastUpdate(BNRepoPlugin* p);
7713+
BINARYNINJACOREAPI const char* BNPluginGetRepository(BNPlugin* p);
7714+
BINARYNINJACOREAPI bool BNPluginIsBeingDeleted(BNPlugin* p);
7715+
BINARYNINJACOREAPI bool BNPluginIsBeingUpdated(BNPlugin* p);
7716+
BINARYNINJACOREAPI bool BNPluginIsRunning(BNPlugin* p);
7717+
BINARYNINJACOREAPI bool BNPluginIsUpdatePending(BNPlugin* p);
7718+
BINARYNINJACOREAPI bool BNPluginIsDisablePending(BNPlugin* p);
7719+
BINARYNINJACOREAPI bool BNPluginIsDeletePending(BNPlugin* p);
7720+
BINARYNINJACOREAPI bool BNPluginIsUpdateAvailable(BNPlugin* p);
7721+
BINARYNINJACOREAPI bool BNPluginAreDependenciesBeingInstalled(BNPlugin* p);
7722+
7723+
BINARYNINJACOREAPI char* BNPluginGetProjectData(BNPlugin* p);
7724+
BINARYNINJACOREAPI uint64_t BNPluginGetLastUpdate(BNPlugin* p);
77287725

77297726
BINARYNINJACOREAPI BNRepository* BNNewRepositoryReference(BNRepository* r);
77307727
BINARYNINJACOREAPI void BNFreeRepository(BNRepository* r);
77317728
BINARYNINJACOREAPI char* BNRepositoryGetUrl(BNRepository* r);
77327729
BINARYNINJACOREAPI char* BNRepositoryGetRepoPath(BNRepository* r);
7733-
BINARYNINJACOREAPI BNRepoPlugin** BNRepositoryGetPlugins(BNRepository* r, size_t* count);
7734-
BINARYNINJACOREAPI void BNFreeRepositoryPluginList(BNRepoPlugin** r);
7730+
BINARYNINJACOREAPI BNPlugin** BNRepositoryGetPlugins(BNRepository* r, size_t* count);
7731+
BINARYNINJACOREAPI void BNFreeRepositoryPluginList(BNPlugin** r);
77357732
BINARYNINJACOREAPI void BNRepositoryFreePluginDirectoryList(char** list, size_t count);
7736-
BINARYNINJACOREAPI BNRepoPlugin* BNRepositoryGetPluginByPath(BNRepository* r, const char* pluginPath);
7733+
BINARYNINJACOREAPI BNPlugin* BNRepositoryGetPluginByPath(BNRepository* r, const char* pluginPath);
77377734
BINARYNINJACOREAPI const char* BNRepositoryGetPluginsPath(BNRepository* r);
77387735

7739-
BINARYNINJACOREAPI BNRepositoryManager* BNCreateRepositoryManager(const char* enabledPluginsPath);
7740-
BINARYNINJACOREAPI BNRepositoryManager* BNNewRepositoryManagerReference(BNRepositoryManager* r);
7741-
BINARYNINJACOREAPI void BNFreeRepositoryManager(BNRepositoryManager* r);
7742-
BINARYNINJACOREAPI bool BNRepositoryManagerCheckForUpdates(BNRepositoryManager* r);
7743-
BINARYNINJACOREAPI BNRepository** BNRepositoryManagerGetRepositories(BNRepositoryManager* r, size_t* count);
7736+
BINARYNINJACOREAPI bool BNRepositoryManagerCheckForUpdates();
7737+
BINARYNINJACOREAPI BNRepository** BNRepositoryManagerGetRepositories(size_t* count);
77447738
BINARYNINJACOREAPI void BNFreeRepositoryManagerRepositoriesList(BNRepository** r);
7745-
BINARYNINJACOREAPI bool BNRepositoryManagerAddRepository(
7746-
BNRepositoryManager* r, const char* url, const char* repoPath);
7747-
BINARYNINJACOREAPI BNRepository* BNRepositoryGetRepositoryByPath(BNRepositoryManager* r, const char* repoPath);
7748-
BINARYNINJACOREAPI BNRepositoryManager* BNGetRepositoryManager(void);
7739+
BINARYNINJACOREAPI bool BNRepositoryManagerAddRepository(const char* url, const char* repoPath);
7740+
BINARYNINJACOREAPI BNRepository* BNRepositoryGetRepositoryByPath(const char* repoPath);
77497741

7750-
BINARYNINJACOREAPI BNRepository* BNRepositoryManagerGetDefaultRepository(BNRepositoryManager* r);
7742+
BINARYNINJACOREAPI BNRepository* BNRepositoryManagerGetDefaultRepository();
77517743

77527744
// Components
77537745

pluginmanager.cpp

Lines changed: 7 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ using namespace std;
1212
return result; \
1313
} while (0)
1414

15-
RepoPlugin::RepoPlugin(BNRepoPlugin* plugin)
15+
RepoPlugin::RepoPlugin(BNPlugin* plugin)
1616
{
1717
m_object = plugin;
1818
}
@@ -291,7 +291,7 @@ vector<Ref<RepoPlugin>> Repository::GetPlugins() const
291291
{
292292
vector<Ref<RepoPlugin>> plugins;
293293
size_t count = 0;
294-
BNRepoPlugin** pluginsPtr = BNRepositoryGetPlugins(m_object, &count);
294+
BNPlugin** pluginsPtr = BNRepositoryGetPlugins(m_object, &count);
295295
plugins.reserve(count);
296296
for (size_t i = 0; i < count; i++)
297297
plugins.push_back(new RepoPlugin(BNNewPluginReference(pluginsPtr[i])));
@@ -310,31 +310,16 @@ string Repository::GetFullPath() const
310310
RETURN_STRING(BNRepositoryGetPluginsPath(m_object));
311311
}
312312

313-
RepositoryManager::RepositoryManager(const string& enabledPluginsPath)
314-
{
315-
m_object = BNCreateRepositoryManager(enabledPluginsPath.c_str());
316-
}
317-
318-
RepositoryManager::RepositoryManager(BNRepositoryManager* mgr)
319-
{
320-
m_object = mgr;
321-
}
322-
323-
RepositoryManager::RepositoryManager()
324-
{
325-
m_object = BNGetRepositoryManager();
326-
}
327-
328313
bool RepositoryManager::CheckForUpdates()
329314
{
330-
return BNRepositoryManagerCheckForUpdates(m_object);
315+
return BNRepositoryManagerCheckForUpdates();
331316
}
332317

333318
vector<Ref<Repository>> RepositoryManager::GetRepositories()
334319
{
335320
vector<Ref<Repository>> repos;
336321
size_t count = 0;
337-
BNRepository** reposPtr = BNRepositoryManagerGetRepositories(m_object, &count);
322+
BNRepository** reposPtr = BNRepositoryManagerGetRepositories(&count);
338323
for (size_t i = 0; i < count; i++)
339324
repos.push_back(new Repository(BNNewRepositoryReference(reposPtr[i])));
340325
BNFreeRepositoryManagerRepositoriesList(reposPtr);
@@ -344,15 +329,15 @@ vector<Ref<Repository>> RepositoryManager::GetRepositories()
344329
bool RepositoryManager::AddRepository(const std::string& url,
345330
const std::string& repoPath) // Relative path within the repositories directory
346331
{
347-
return BNRepositoryManagerAddRepository(m_object, url.c_str(), repoPath.c_str());
332+
return BNRepositoryManagerAddRepository(url.c_str(), repoPath.c_str());
348333
}
349334

350335
Ref<Repository> RepositoryManager::GetRepositoryByPath(const std::string& repoPath)
351336
{
352-
return new Repository(BNRepositoryGetRepositoryByPath(m_object, repoPath.c_str()));
337+
return new Repository(BNRepositoryGetRepositoryByPath(repoPath.c_str()));
353338
}
354339

355340
Ref<Repository> RepositoryManager::GetDefaultRepository()
356341
{
357-
return new Repository(BNRepositoryManagerGetDefaultRepository(m_object));
342+
return new Repository(BNRepositoryManagerGetDefaultRepository());
358343
}

python/__init__.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,6 @@ def _init_plugins():
250250
if _enable_default_log and is_headless_init_once and min_level in LogLevel.__members__ and not core_ui_enabled(
251251
) and sys.stderr.isatty():
252252
log_to_stderr(LogLevel[min_level])
253-
core.BNInitRepoPlugins()
254253
if core.BNIsLicenseValidated():
255254
_plugin_init = True
256255
else:

python/pluginmanager.py

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ class RepoPlugin:
3434
``RepoPlugin`` is mostly read-only, however you can install/uninstall enable/disable plugins. RepoPlugins are
3535
created by parsing the plugins.json in a plugin repository.
3636
"""
37-
def __init__(self, handle: core.BNRepoPluginHandle):
37+
def __init__(self, handle: core.BNPluginHandle):
3838
self.handle = handle
3939

4040
def __del__(self):
@@ -289,7 +289,7 @@ def __getitem__(self, plugin_path: str):
289289
for plugin in self.plugins:
290290
if plugin_path == plugin.path:
291291
return plugin
292-
raise KeyError()
292+
raise KeyError(plugin_path)
293293

294294
@property
295295
def url(self) -> str:
@@ -337,24 +337,23 @@ class RepositoryManager:
337337
"""
338338
def __init__(self):
339339
binaryninja._init_plugins()
340-
self.handle = core.BNGetRepositoryManager()
341340

342341
def __getitem__(self, repo_path: str) -> Repository:
343342
for repo in self.repositories:
344343
if repo_path == repo.path:
345344
return repo
346-
raise KeyError()
345+
raise KeyError(repo_path)
347346

348347
def check_for_updates(self) -> bool:
349348
"""Check for updates for all managed Repository objects"""
350-
return core.BNRepositoryManagerCheckForUpdates(self.handle)
349+
return core.BNRepositoryManagerCheckForUpdates()
351350

352351
@property
353352
def repositories(self) -> List[Repository]:
354353
"""List of Repository objects being managed"""
355354
result = []
356355
count = ctypes.c_ulonglong(0)
357-
repos = core.BNRepositoryManagerGetRepositories(self.handle, count)
356+
repos = core.BNRepositoryManagerGetRepositories(count)
358357
assert repos is not None, "core.BNRepositoryManagerGetRepositories returned None"
359358
try:
360359
for i in range(count.value):
@@ -376,7 +375,7 @@ def plugins(self) -> Dict[str, List[RepoPlugin]]:
376375
@property
377376
def default_repository(self) -> Repository:
378377
"""Gets the default Repository"""
379-
repo_handle = core.BNRepositoryManagerGetDefaultRepository(self.handle)
378+
repo_handle = core.BNRepositoryManagerGetDefaultRepository()
380379
assert repo_handle is not None, "core.BNRepositoryManagerGetDefaultRepository returned None"
381380
repo_handle_ref = core.BNNewRepositoryReference(repo_handle)
382381
assert repo_handle_ref is not None, "core.BNNewRepositoryReference returned None"
@@ -406,4 +405,4 @@ def add_repository(self, url: Optional[str] = None, repopath: Optional[str] = No
406405
if not isinstance(url, str) or not isinstance(repopath, str):
407406
raise ValueError("Expected url or repopath to be of type str.")
408407

409-
return core.BNRepositoryManagerAddRepository(self.handle, url, repopath)
408+
return core.BNRepositoryManagerAddRepository(url, repopath)

rust/src/headless.rs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ use crate::enterprise::EnterpriseCheckoutStatus;
2626
use crate::main_thread::{MainThreadAction, MainThreadHandler};
2727
use crate::progress::ProgressCallback;
2828
use crate::rc::Ref;
29-
use binaryninjacore_sys::{BNInitPlugins, BNInitRepoPlugins};
29+
use binaryninjacore_sys::{BNInitPlugins};
3030
use std::sync::mpsc::Sender;
3131
use std::sync::Mutex;
3232
use std::thread::JoinHandle;
@@ -221,10 +221,6 @@ pub fn init_with_opts(options: InitializationOptions) -> Result<(), Initializati
221221

222222
unsafe {
223223
BNInitPlugins(options.user_plugins);
224-
if options.repo_plugins {
225-
// We are allowed to initialize repo plugins, so do it!
226-
BNInitRepoPlugins();
227-
}
228224
}
229225

230226
if !is_license_validated() {

0 commit comments

Comments
 (0)