mirror of
https://github.com/herdrdev/herdr.git
synced 2026-09-22 08:01:06 +00:00
269 lines
5.9 KiB
Rust
269 lines
5.9 KiB
Rust
use std::path::PathBuf;
|
|
|
|
#[derive(Debug)]
|
|
pub(crate) struct ClaudeInstallPaths {
|
|
pub hook_path: PathBuf,
|
|
pub settings_path: PathBuf,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub(crate) struct CodexInstallPaths {
|
|
pub hook_path: PathBuf,
|
|
pub hooks_path: PathBuf,
|
|
pub config_path: PathBuf,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub(crate) struct KimiInstallPaths {
|
|
pub hook_path: PathBuf,
|
|
pub config_path: PathBuf,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub(crate) struct CopilotInstallPaths {
|
|
pub hook_path: PathBuf,
|
|
pub settings_path: PathBuf,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub(crate) struct DevinInstallPaths {
|
|
pub hook_path: PathBuf,
|
|
pub settings_path: PathBuf,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub(crate) struct DroidInstallPaths {
|
|
pub hook_path: PathBuf,
|
|
pub hooks_path: PathBuf,
|
|
pub settings_path: PathBuf,
|
|
pub updated_legacy_hooks: bool,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub(crate) struct OpenCodeInstallPaths {
|
|
pub plugin_path: PathBuf,
|
|
pub tui_plugin_path: PathBuf,
|
|
pub tui_config_path: PathBuf,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub(crate) struct KiloInstallPaths {
|
|
pub plugin_path: PathBuf,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub(crate) struct OmpInstallPaths {
|
|
pub extension_path: PathBuf,
|
|
pub removed_legacy_pi_extension: bool,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub(crate) struct HermesInstallPaths {
|
|
pub plugin_dir: PathBuf,
|
|
pub config_path: PathBuf,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub(crate) struct QodercliInstallPaths {
|
|
pub hook_path: PathBuf,
|
|
pub settings_path: PathBuf,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub(crate) struct QwenInstallPaths {
|
|
pub hook_path: PathBuf,
|
|
pub settings_path: PathBuf,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub(crate) struct CursorInstallPaths {
|
|
pub hook_path: PathBuf,
|
|
pub hooks_path: PathBuf,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub(crate) struct CursorUninstallResult {
|
|
pub hook_path: PathBuf,
|
|
pub hooks_path: PathBuf,
|
|
pub removed_hook_file: bool,
|
|
pub updated_hooks: bool,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub(crate) struct MastracodeInstallPaths {
|
|
pub hook_path: PathBuf,
|
|
pub hooks_path: PathBuf,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub(crate) struct MastracodeUninstallResult {
|
|
pub hook_path: PathBuf,
|
|
pub hooks_path: PathBuf,
|
|
pub removed_hook_file: bool,
|
|
pub updated_hooks: bool,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub(crate) struct GrokInstallPaths {
|
|
pub hook_path: PathBuf,
|
|
pub config_path: PathBuf,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub(crate) struct GrokUninstallResult {
|
|
pub hook_path: PathBuf,
|
|
pub config_path: PathBuf,
|
|
pub removed_hook_file: bool,
|
|
pub removed_config_file: bool,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub(crate) struct QodercliUninstallResult {
|
|
pub hook_path: PathBuf,
|
|
pub settings_path: PathBuf,
|
|
pub removed_hook_file: bool,
|
|
pub updated_settings: bool,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub(crate) struct QwenUninstallResult {
|
|
pub hook_path: PathBuf,
|
|
pub settings_path: PathBuf,
|
|
pub removed_hook_file: bool,
|
|
pub updated_settings: bool,
|
|
}
|
|
|
|
#[derive(Debug, Clone, PartialEq, Eq)]
|
|
pub(crate) struct IntegrationStatus {
|
|
pub target: crate::api::schema::IntegrationTarget,
|
|
pub path: PathBuf,
|
|
pub state: IntegrationStatusKind,
|
|
pub installed_version: Option<u32>,
|
|
pub expected_version: u32,
|
|
}
|
|
|
|
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
|
pub(crate) enum IntegrationStatusKind {
|
|
NotInstalled,
|
|
Current,
|
|
Outdated,
|
|
}
|
|
|
|
#[derive(Debug, Clone, PartialEq, Eq)]
|
|
pub(crate) struct IntegrationRecommendation {
|
|
pub target: crate::api::schema::IntegrationTarget,
|
|
pub label: &'static str,
|
|
pub command: &'static str,
|
|
pub available: bool,
|
|
pub path: PathBuf,
|
|
pub state: IntegrationStatusKind,
|
|
}
|
|
|
|
impl IntegrationRecommendation {
|
|
pub fn needs_install(&self) -> bool {
|
|
self.state == IntegrationStatusKind::Outdated
|
|
|| (self.available && self.state == IntegrationStatusKind::NotInstalled)
|
|
}
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub(crate) struct PiUninstallResult {
|
|
pub extension_path: PathBuf,
|
|
pub removed_extension: bool,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub(crate) struct OmpUninstallResult {
|
|
pub extension_path: PathBuf,
|
|
pub removed_extension: bool,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub(crate) struct ClaudeUninstallResult {
|
|
pub hook_path: PathBuf,
|
|
pub settings_path: PathBuf,
|
|
pub removed_hook_file: bool,
|
|
pub updated_settings: bool,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub(crate) struct CodexUninstallResult {
|
|
pub hook_path: PathBuf,
|
|
pub hooks_path: PathBuf,
|
|
pub config_path: PathBuf,
|
|
pub removed_hook_file: bool,
|
|
pub updated_hooks: bool,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub(crate) struct KimiUninstallResult {
|
|
pub hook_path: PathBuf,
|
|
pub config_path: PathBuf,
|
|
pub removed_hook_file: bool,
|
|
pub updated_config: bool,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub(crate) struct CopilotUninstallResult {
|
|
pub hook_path: PathBuf,
|
|
pub settings_path: PathBuf,
|
|
pub removed_hook_file: bool,
|
|
pub updated_settings: bool,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub(crate) struct DevinUninstallResult {
|
|
pub hook_path: PathBuf,
|
|
pub settings_path: PathBuf,
|
|
pub removed_hook_file: bool,
|
|
pub updated_settings: bool,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub(crate) struct DroidUninstallResult {
|
|
pub hook_path: PathBuf,
|
|
pub hooks_path: PathBuf,
|
|
pub settings_path: PathBuf,
|
|
pub removed_hook_file: bool,
|
|
pub updated_hooks: bool,
|
|
pub updated_settings: bool,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub(crate) struct OpenCodeUninstallResult {
|
|
pub plugin_path: PathBuf,
|
|
pub tui_plugin_path: PathBuf,
|
|
pub tui_config_path: PathBuf,
|
|
pub removed_plugin: bool,
|
|
pub removed_tui_plugin: bool,
|
|
pub updated_tui_config: bool,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub(crate) struct KiloUninstallResult {
|
|
pub plugin_path: PathBuf,
|
|
pub removed_plugin: bool,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub(crate) struct HermesUninstallResult {
|
|
pub plugin_dir: PathBuf,
|
|
pub config_path: PathBuf,
|
|
pub removed_plugin_dir: bool,
|
|
pub updated_config: bool,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub(crate) struct AntigravityCliInstallPaths {
|
|
pub hook_path: PathBuf,
|
|
pub hooks_path: PathBuf,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub(crate) struct AntigravityCliUninstallResult {
|
|
pub hook_path: PathBuf,
|
|
pub hooks_path: PathBuf,
|
|
pub removed_hook_file: bool,
|
|
pub updated_hooks: bool,
|
|
}
|