diff options
| author | Marcus Tillmanns <[email protected]> | 2025-01-30 08:46:05 +0100 |
|---|---|---|
| committer | Marcus Tillmanns <[email protected]> | 2025-02-10 14:23:10 +0000 |
| commit | cfda5829af61c44c515ce3ca2bd9c38f92ac2418 (patch) | |
| tree | fc122c0797922f4329451e8337baf7bf022ee77c /src/plugins/lua/luaplugin.cpp | |
| parent | e32613cfe203dee03b5795f471dd38a7e52a4872 (diff) | |
ExtensionSystem: Allow updating and removing plugins
Change-Id: Ie81e697c97fbfe0dc66346f42d467e1a697606c3
Reviewed-by: Eike Ziller <[email protected]>
Diffstat (limited to 'src/plugins/lua/luaplugin.cpp')
| -rw-r--r-- | src/plugins/lua/luaplugin.cpp | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/src/plugins/lua/luaplugin.cpp b/src/plugins/lua/luaplugin.cpp index e679516147e..27107364b09 100644 --- a/src/plugins/lua/luaplugin.cpp +++ b/src/plugins/lua/luaplugin.cpp @@ -416,9 +416,25 @@ public: FilePaths folders = path.dirEntries(FileFilter({}, QDir::Dirs | QDir::NoDotAndDotDot)); for (const FilePath &folder : folders) { - const FilePath script = folder / (folder.baseName() + ".lua"); - if (!script.exists()) + FilePath script = folder / (folder.baseName() + ".lua"); + if (!script.exists()) { + FilePaths contents = folder.dirEntries(QDir::Dirs | QDir::NoDotAndDotDot); + if (contents.empty()) + continue; + + for (const FilePath &subfolder : contents) { + script = subfolder / (subfolder.baseName() + ".lua"); + if (!script.exists()) { + script.clear(); + continue; + } + break; + } + } + + if (script.isEmpty()) { continue; + } const expected_str<LuaPluginSpec *> result = loadPlugin(script); @@ -430,6 +446,19 @@ public: continue; } + if (PluginManager::takePluginIdForRemoval((*result)->id())) { + auto removeResult = (*result)->removePluginFiles(); + if (!removeResult) { + qWarning() << "Failed to remove plugin files" << script << ":" + << removeResult.error(); + MessageManager::writeFlashing( + Tr::tr("Failed to remove plugin files of %1: %2") + .arg((*result)->id()) + .arg(removeResult.error())); + } + continue; + } + plugins.insert(*result); } } |
