aboutsummaryrefslogtreecommitdiff
path: root/src/app/api/plugins/mod.rs
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-06-14 20:45:50 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-06-14 20:45:59 +0300
commitd3be4f8b431587b14975d0e595e4131e3c119bdb (patch)
tree80bbbbf6c0ab295acb67cf6bdb05cc75f435e3f5 /src/app/api/plugins/mod.rs
parent54b58bb3452bd493a2881623a01371705ff806f1 (diff)
fix: add best-effort windows plugin support
Diffstat (limited to 'src/app/api/plugins/mod.rs')
-rw-r--r--src/app/api/plugins/mod.rs20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/app/api/plugins/mod.rs b/src/app/api/plugins/mod.rs
index 6cc266e3..d00ad20f 100644
--- a/src/app/api/plugins/mod.rs
+++ b/src/app/api/plugins/mod.rs
@@ -471,7 +471,7 @@ impl App {
.actions
.iter()
.find(|a| a.id == action_id)
- .map(|a| manifest_action_info(&plugin_id, a))
+ .map(|a| manifest_action_info(&plugin_id, &plugin.platforms, a))
.ok_or_else(|| {
(
"plugin_action_not_found",
@@ -622,7 +622,11 @@ fn plugin_manifest_available(plugin: &InstalledPluginInfo) -> bool {
})
}
-fn manifest_action_info(plugin_id: &str, action: &PluginManifestAction) -> PluginActionInfo {
+fn manifest_action_info(
+ plugin_id: &str,
+ plugin_platforms: &Option<Vec<crate::api::schema::PluginPlatform>>,
+ action: &PluginManifestAction,
+) -> PluginActionInfo {
PluginActionInfo {
plugin_id: plugin_id.to_string(),
action_id: action.id.clone(),
@@ -630,7 +634,7 @@ fn manifest_action_info(plugin_id: &str, action: &PluginManifestAction) -> Plugi
description: action.description.clone(),
contexts: action.contexts.clone(),
command: action.command.clone(),
- platforms: action.platforms.clone(),
+ platforms: effective_platforms(&action.platforms, plugin_platforms).clone(),
}
}
@@ -644,7 +648,7 @@ fn manifest_actions(
plugin
.actions
.iter()
- .map(|action| manifest_action_info(&plugin.plugin_id, action))
+ .map(|action| manifest_action_info(&plugin.plugin_id, &plugin.platforms, action))
})
}
@@ -1311,6 +1315,14 @@ command = ["sh", "-c", "sleep 1"]
"example.worktree-bootstrap.bootstrap"
);
assert_eq!(actions[0].command, ["bun", "run", "bootstrap.ts"]);
+ assert_eq!(
+ actions[0].platforms,
+ Some(vec![
+ crate::api::schema::PluginPlatform::Linux,
+ crate::api::schema::PluginPlatform::Macos,
+ crate::api::schema::PluginPlatform::Windows,
+ ])
+ );
let invoke = app.handle_api_request(Request {
id: "invoke".into(),