use anyhow::Result;
pub fn copy_to_clipboard(text: &str, description: &str) -> Result<String> {
use arboard::Clipboard;
match Clipboard::new() {
Ok(mut clipboard) => match clipboard.set_text(text) {
Ok(_) => Ok(format!("Copied {} to clipboard", description)),
Err(e) => {
Ok(format!("Clipboard error: {}", e))
}
},
Err(e) => {
Ok(format!("Clipboard not available: {}", e))
}
}
}
pub fn clipboard_available() -> bool {
use arboard::Clipboard;
Clipboard::new().is_ok()
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_copy_to_clipboard_returns_ok() {
let result = copy_to_clipboard("test", "test text");
assert!(result.is_ok());
let message = result.unwrap();
assert!(message.contains("Copied") || message.contains("Clipboard"));
}
#[test]
fn test_clipboard_available_returns_bool() {
let _ = clipboard_available();
}
}