From 1eafe9eeb83962071ecffaebb0bc98dc79f2f5c6 Mon Sep 17 00:00:00 2001 From: Peter LaFosse Date: Tue, 9 Feb 2021 20:39:28 -0500 Subject: Add ability to install python dependencies Refactor plugin repo loading into scripting provider. Find python binary for given python library --- binaryninjaapi.h | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'binaryninjaapi.h') diff --git a/binaryninjaapi.h b/binaryninjaapi.h index cd52dc44..bfc441d6 100644 --- a/binaryninjaapi.h +++ b/binaryninjaapi.h @@ -756,7 +756,6 @@ __attribute__ ((format (printf, 1, 2))) std::string GetUniqueIdentifierString(); std::map GetMemoryUsageInfo(); - std::vector GetRegisteredPluginLoaders(); class DataBuffer { @@ -5010,20 +5009,27 @@ __attribute__ ((format (printf, 1, 2))) class ScriptingProvider: public StaticCoreRefCountObject { std::string m_nameForRegister; + std::string m_apiNameForRegister; protected: - ScriptingProvider(const std::string& name); + ScriptingProvider(const std::string& name, const std::string& apiName); ScriptingProvider(BNScriptingProvider* provider); static BNScriptingInstance* CreateInstanceCallback(void* ctxt); + static bool LoadModuleCallback(void* ctxt, const char* repository, const char* module, bool force); + static bool InstallModulesCallback(void* ctxt, const char* modules); public: virtual Ref CreateNewInstance() = 0; + virtual bool LoadModule(const std::string& repository, const std::string& module, bool force) = 0; + virtual bool InstallModules(const std::string& modules) = 0; std::string GetName(); + std::string GetAPIName(); static std::vector> GetList(); static Ref GetByName(const std::string& name); + static Ref GetByAPIName(const std::string& apiName); static void Register(ScriptingProvider* provider); }; @@ -5032,6 +5038,8 @@ __attribute__ ((format (printf, 1, 2))) public: CoreScriptingProvider(BNScriptingProvider* provider); virtual Ref CreateNewInstance() override; + virtual bool LoadModule(const std::string& repository, const std::string& module, bool force) override; + virtual bool InstallModules(const std::string& modules) override; }; class MainThreadAction: public CoreRefCountObject GetApis() const; std::vector GetInstallPlatforms() const; std::string GetPath() const; + std::string GetDependencies() const; std::string GetPluginDirectory() const; std::string GetAuthor() const; std::string GetDescription() const; @@ -5189,6 +5198,7 @@ __attribute__ ((format (printf, 1, 2))) bool Uninstall(); bool Install(); + bool InstallDependencies(); // `force` ignores optional checks for platform/api compliance bool Enable(bool force); bool Disable(); -- cgit v1.3.1