Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use arboard::Clipboard;
- #[derive(Debug, thiserror::Error)]
- enum Error {
- #[error("Failed to write to file: {0}")]
- Io(#[from] std::io::Error),
- #[error("Failed to get clipboard text: {0}")]
- Clipboard(#[from] arboard::Error),
- }
- pub fn main() {
- let mut clipboard = Clipboard::new().unwrap();
- let mut last_content = String::new();
- loop {
- if let Err(e) = check_clipboard(&mut clipboard, &mut last_content) {
- println!("{}", e);
- }
- std::thread::sleep(std::time::Duration::from_millis(500));
- }
- }
- fn check_clipboard(clipboard: &mut Clipboard, last_content: &mut String) -> Result<(), Error> {
- let current_content = clipboard.get_text()?;
- if ¤t_content != last_content {
- println!("Clipboard text changed: {}", current_content);
- // extract file path from copied text
- if let Some(file_path) = current_content
- // split into lines
- .lines()
- // get the first line
- .next()
- // check it starts with "// " and strip it
- .and_then(|l| l.strip_prefix("// "))
- {
- std::fs::write(file_path.trim(), ¤t_content)?;
- println!("Successfully wrote to {}", ¤t_content);
- };
- *last_content = current_content;
- }
- Ok(())
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement