polykit_core/adapter.rs
1//! Language adapter trait for reading and modifying language-specific metadata.
2
3use std::path::Path;
4
5use crate::error::Result;
6
7/// Language-specific metadata extracted from package files.
8pub struct LangMetadata {
9 /// Package version, if available.
10 pub version: Option<String>,
11}
12
13/// Trait for language-specific package metadata operations.
14///
15/// Adapters detect packages, read version information, and bump versions.
16/// They do not install dependencies—that's delegated to native tools.
17pub trait LanguageAdapter: Send + Sync {
18 fn language(&self) -> &'static str;
19 fn detect(&self, path: &Path) -> bool;
20 fn read_metadata(&self, path: &Path) -> Result<LangMetadata>;
21 fn bump_version(&self, path: &Path, new_version: &str) -> Result<()>;
22}