mirror of
https://github.com/sxyazi/yazi.git
synced 2026-07-24 00:01:03 +00:00
62 lines
1.6 KiB
Rust
62 lines
1.6 KiB
Rust
use hashbrown::HashSet;
|
|
use tracing::debug;
|
|
use yazi_shared::url::{UrlBuf, UrlBufCov, UrlLike};
|
|
|
|
use super::Tasks;
|
|
use crate::mgr::Yanked;
|
|
|
|
impl Tasks {
|
|
pub fn file_cut(&self, src: &Yanked, dest: &UrlBuf, force: bool) {
|
|
for u in src.iter() {
|
|
let to = dest.join(u.name().unwrap());
|
|
if force && *u == to {
|
|
debug!("file_cut: same file, skipping {:?}", to);
|
|
} else {
|
|
self.scheduler.file_cut(u.0.clone(), to, force);
|
|
}
|
|
}
|
|
}
|
|
|
|
pub fn file_copy(&self, src: &Yanked, dest: &UrlBuf, force: bool, follow: bool) {
|
|
for u in src.iter() {
|
|
let to = dest.join(u.name().unwrap());
|
|
if force && *u == to {
|
|
debug!("file_copy: same file, skipping {:?}", to);
|
|
} else {
|
|
self.scheduler.file_copy(u.0.clone(), to, force, follow);
|
|
}
|
|
}
|
|
}
|
|
|
|
pub fn file_link(&self, src: &HashSet<UrlBufCov>, dest: &UrlBuf, relative: bool, force: bool) {
|
|
for u in src {
|
|
let to = dest.join(u.name().unwrap());
|
|
if force && *u == to {
|
|
debug!("file_link: same file, skipping {:?}", to);
|
|
} else {
|
|
self.scheduler.file_link(u.0.clone(), to, relative, force);
|
|
}
|
|
}
|
|
}
|
|
|
|
pub fn file_hardlink(&self, src: &HashSet<UrlBufCov>, dest: &UrlBuf, force: bool, follow: bool) {
|
|
for u in src {
|
|
let to = dest.join(u.name().unwrap());
|
|
if force && *u == to {
|
|
debug!("file_hardlink: same file, skipping {:?}", to);
|
|
} else {
|
|
self.scheduler.file_hardlink(u.0.clone(), to, force, follow);
|
|
}
|
|
}
|
|
}
|
|
|
|
pub fn file_remove(&self, targets: Vec<UrlBuf>, permanently: bool) {
|
|
for u in targets {
|
|
if permanently {
|
|
self.scheduler.file_delete(u);
|
|
} else {
|
|
self.scheduler.file_trash(u);
|
|
}
|
|
}
|
|
}
|
|
}
|