use serde::{Deserialize, Serialize};
#[cfg_attr(feature = "ts-export", derive(ts_rs::TS), ts(export))]
#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq, Eq)]
pub struct PluginsScanParams {}
#[cfg_attr(feature = "ts-export", derive(ts_rs::TS), ts(export))]
#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq, Eq)]
pub struct PluginsScanResponse {
pub spawned: Vec<String>,
pub stale: Vec<String>,
pub warnings: Vec<String>,
}
#[cfg_attr(feature = "ts-export", derive(ts_rs::TS), ts(export))]
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "snake_case")]
pub enum InstallSource {
Release,
Cargo,
}
impl Default for InstallSource {
fn default() -> Self {
Self::Release
}
}
#[cfg_attr(feature = "ts-export", derive(ts_rs::TS), ts(export))]
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct PluginsInstallParams {
pub crate_name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub repo: Option<String>,
#[serde(default)]
pub source: InstallSource,
#[serde(default)]
pub force: bool,
#[serde(default)]
pub require_signature: bool,
#[serde(default)]
pub skip_signature_verify: bool,
}
#[cfg_attr(feature = "ts-export", derive(ts_rs::TS), ts(export))]
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct PluginsInstallResponse {
pub crate_name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub installed_version: Option<String>,
pub spawned: Vec<String>,
pub cargo_stdout: String,
pub cargo_stderr: String,
#[serde(default)]
pub trust_enforcement: String,
#[serde(default)]
pub signature_verified: bool,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub signature_identity: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub signature_issuer: Option<String>,
#[serde(default)]
pub trust_mode: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub trust_policy_matched: Option<String>,
}
#[cfg_attr(feature = "ts-export", derive(ts_rs::TS), ts(export))]
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct PluginsUninstallParams {
pub plugin_id: String,
#[serde(default)]
pub cargo_uninstall: bool,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub crate_name: Option<String>,
}
#[cfg_attr(feature = "ts-export", derive(ts_rs::TS), ts(export))]
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct PluginsUninstallResponse {
pub plugin_id: String,
pub removed: bool,
pub cargo_uninstalled: bool,
#[serde(default, skip_serializing_if = "String::is_empty")]
pub cargo_stdout: String,
#[serde(default, skip_serializing_if = "String::is_empty")]
pub cargo_stderr: String,
}
#[cfg_attr(feature = "ts-export", derive(ts_rs::TS), ts(export))]
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct PluginsSetEnabledParams {
pub plugin_id: String,
pub enabled: bool,
}
#[cfg_attr(feature = "ts-export", derive(ts_rs::TS), ts(export))]
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct PluginsSetEnabledResponse {
pub plugin_id: String,
pub enabled: bool,
pub config_changed: bool,
#[serde(default)]
pub spawned: Vec<String>,
#[serde(default)]
pub removed: bool,
#[serde(default)]
pub warnings: Vec<String>,
}