refactor: integrate tasks into scheduler

This commit is contained in:
sxyazi 2023-11-28 14:32:37 +08:00
parent a1984725e4
commit 954b10b388
No known key found for this signature in database
24 changed files with 35 additions and 37 deletions

View file

@ -2,7 +2,7 @@ use std::process::Stdio;
use anyhow::Result;
use tokio::{io::{AsyncBufReadExt, BufReader}, process::Command, sync::mpsc::{self, UnboundedReceiver}};
use yazi_shared::{files::File, fs::Url};
use yazi_shared::fs::{File, Url};
pub struct FdOpt {
pub cwd: Url,

View file

@ -2,7 +2,7 @@ use std::process::Stdio;
use anyhow::Result;
use tokio::{io::{AsyncBufReadExt, BufReader}, process::Command, sync::mpsc::{self, UnboundedReceiver}};
use yazi_shared::{files::File, fs::Url};
use yazi_shared::fs::{File, Url};
pub struct RgOpt {
pub cwd: Url,

View file

@ -3,7 +3,7 @@ use std::{collections::{BTreeMap, BTreeSet}, mem, ops::Deref, sync::atomic::Orde
use anyhow::Result;
use tokio::{fs, select, sync::mpsc::{self, UnboundedReceiver}};
use yazi_config::{manager::SortBy, MANAGER};
use yazi_shared::{files::{File, FILES_TICKET}, fs::Url};
use yazi_shared::fs::{File, Url, FILES_TICKET};
use super::FilesSorter;

View file

@ -1,7 +1,7 @@
use std::{cmp::Ordering, collections::BTreeMap, mem};
use yazi_config::manager::SortBy;
use yazi_shared::{files::File, fs::Url, natsort};
use yazi_shared::{fs::File, fs::Url, natsort};
#[derive(Clone, Copy, Default, PartialEq)]
pub struct FilesSorter {

View file

@ -2,7 +2,7 @@ use std::path::{PathBuf, MAIN_SEPARATOR};
use tokio::fs;
use yazi_config::popup::InputCfg;
use yazi_shared::{emit, event::Exec, files::{File, FilesOp}, fs::Url};
use yazi_shared::{emit, event::Exec, fs::{File, FilesOp}, fs::Url};
use crate::{input::Input, manager::Manager};

View file

@ -3,7 +3,7 @@ use std::{collections::BTreeMap, ffi::OsStr, io::{stdout, BufWriter, Write}, pat
use anyhow::{anyhow, bail, Result};
use tokio::{fs::{self, OpenOptions}, io::{stdin, AsyncReadExt, AsyncWriteExt}};
use yazi_config::{popup::InputCfg, OPEN, PREVIEW};
use yazi_shared::{emit, event::Exec, files::{File, FilesOp}, fs::{max_common_root, Url}, term::Term, Defer};
use yazi_shared::{emit, event::Exec, fs::{File, FilesOp}, fs::{max_common_root, Url}, term::Term, Defer};
use crate::{external::{self, ShellOpt}, input::Input, manager::Manager, Ctx, BLOCKER};

View file

@ -1,6 +1,6 @@
use std::collections::{BTreeMap, HashMap, HashSet};
use yazi_shared::{files::{File, FilesOp}, fs::Url};
use yazi_shared::{fs::{File, FilesOp}, fs::Url};
use super::{Tabs, Watcher};
use crate::{tab::{Folder, Tab}, tasks::Tasks};

View file

@ -5,7 +5,7 @@ use notify::{event::{MetadataKind, ModifyKind}, EventKind, RecommendedWatcher, R
use parking_lot::RwLock;
use tokio::{fs, pin, sync::mpsc::{self, UnboundedReceiver}};
use tokio_stream::{wrappers::UnboundedReceiverStream, StreamExt};
use yazi_shared::{emit, files::{File, FilesOp}, fs::Url};
use yazi_shared::{emit, fs::{File, FilesOp}, fs::Url};
use crate::{external, files::Files};

View file

@ -4,7 +4,7 @@ use tokio::{pin, task::JoinHandle};
use tokio_stream::{wrappers::UnboundedReceiverStream, StreamExt};
use yazi_adaptor::ADAPTOR;
use yazi_config::MANAGER;
use yazi_shared::{emit, event::{PreviewData, PreviewLock}, files::FilesOp, fs::{Cha, Url}, MimeKind, PeekError};
use yazi_shared::{emit, event::{PreviewData, PreviewLock}, fs::{Cha, FilesOp, Url}, MimeKind, PeekError};
use super::Provider;
use crate::{files::Files, manager::Manager, Highlighter};

View file

@ -1,4 +1,4 @@
use yazi_shared::{emit, event::Exec, files::{File, FilesOp}, fs::{expand_path, Url}, Layer};
use yazi_shared::{emit, event::Exec, fs::{File, FilesOp}, fs::{expand_path, Url}, Layer};
use crate::{manager::Manager, tab::Tab};

View file

@ -4,7 +4,7 @@ use anyhow::bail;
use tokio::pin;
use tokio_stream::{wrappers::UnboundedReceiverStream, StreamExt};
use yazi_config::popup::InputCfg;
use yazi_shared::{emit, event::Exec, files::FilesOp};
use yazi_shared::{emit, event::Exec, fs::FilesOp};
use crate::{external, input::Input, manager::Manager, tab::Tab};

View file

@ -1,6 +1,6 @@
use ratatui::layout::Rect;
use yazi_config::MANAGER;
use yazi_shared::{emit, files::{File, FilesOp}, fs::Url};
use yazi_shared::{emit, fs::{File, FilesOp}, fs::Url};
use crate::{files::Files, Step};

View file

@ -2,7 +2,7 @@ use std::{borrow::Cow, collections::BTreeMap};
use anyhow::Result;
use tokio::task::JoinHandle;
use yazi_shared::{event::PreviewLock, files::File, fs::Url};
use yazi_shared::{event::PreviewLock, fs::File, fs::Url};
use super::{Backstack, Config, Finder, Folder, Mode};
use crate::preview::Preview;

View file

@ -3,7 +3,7 @@ use std::{collections::{BTreeMap, HashMap, HashSet}, ffi::OsStr, path::Path, syn
use serde::Serialize;
use tracing::debug;
use yazi_config::{manager::SortBy, open::Opener, popup::InputCfg, OPEN};
use yazi_shared::{files::File, fs::Url, term::Term, MimeKind};
use yazi_shared::{fs::File, fs::Url, term::Term, MimeKind};
use super::{running::Running, task::TaskSummary, Scheduler, TASKS_PADDING, TASKS_PERCENT};
use crate::{files::Files, input::Input};

View file

@ -5,7 +5,7 @@ use parking_lot::Mutex;
use tokio::{fs, sync::mpsc};
use yazi_adaptor::Image;
use yazi_config::PREVIEW;
use yazi_shared::{emit, files::FilesOp, fs::{calculate_size, Url}, Throttle};
use yazi_shared::{emit, fs::{calculate_size, FilesOp, Url}, Throttle};
use crate::{external, tasks::TaskOp};

View file

@ -5,7 +5,7 @@ use crossterm::event::KeyEvent;
use ratatui::{backend::Backend, prelude::Rect};
use yazi_config::{keymap::Key, BOOT};
use yazi_core::{input::InputMode, preview::COLLISION, Ctx};
use yazi_shared::{emit, event::{Event, Exec}, files::FilesOp, term::Term, Layer};
use yazi_shared::{emit, event::{Event, Exec}, fs::FilesOp, term::Term, Layer};
use crate::{Executor, Logs, Panic, Root, Signals};

View file

@ -104,7 +104,7 @@ impl<'a, 'b> Active<'a, 'b> {
fn file(
&self,
idx: usize,
inner: &'a yazi_shared::files::File,
inner: &'a yazi_shared::fs::File,
folder: &'a yazi_core::tab::Folder,
) -> mlua::Result<AnyUserData<'a>> {
let ud = self.scope.create_any_userdata_ref(inner)?;

View file

@ -6,10 +6,10 @@ use yazi_config::THEME;
use super::{Range, Url};
use crate::{layout::Style, LUA};
pub struct File(yazi_shared::files::File);
pub struct File(yazi_shared::fs::File);
impl From<&yazi_shared::files::File> for File {
fn from(value: &yazi_shared::files::File) -> Self { Self(value.clone()) }
impl From<&yazi_shared::fs::File> for File {
fn from(value: &yazi_shared::fs::File) -> Self { Self(value.clone()) }
}
impl UserData for File {
@ -47,7 +47,7 @@ impl Files {
});
})?;
LUA.register_userdata_type::<yazi_shared::files::File>(|reg| {
LUA.register_userdata_type::<yazi_shared::fs::File>(|reg| {
reg.add_field_method_get("url", |_, me| Ok(Url::from(&me.url)));
reg.add_field_method_get("link_to", |_, me| Ok(me.link_to().map(Url::from)));
reg.add_field_method_get("is_link", |_, me| Ok(me.is_link()));
@ -87,7 +87,7 @@ impl Files {
Ok(me.url.file_name().map(|n| n.to_string_lossy().to_string()))
});
reg.add_function("size", |_, me: AnyUserData| {
let file = me.borrow::<yazi_shared::files::File>()?;
let file = me.borrow::<yazi_shared::fs::File>()?;
if !file.is_dir() {
return Ok(Some(file.len));
}
@ -97,7 +97,7 @@ impl Files {
});
reg.add_function("mime", |_, me: AnyUserData| {
let manager = me.named_user_value::<UserDataRef<yazi_core::manager::Manager>>("manager")?;
let file = me.borrow::<yazi_shared::files::File>()?;
let file = me.borrow::<yazi_shared::fs::File>()?;
Ok(manager.mimetype.get(&file.url).cloned())
});
reg.add_function("prefix", |_, me: AnyUserData| {
@ -106,7 +106,7 @@ impl Files {
return Ok(None);
}
let file = me.borrow::<yazi_shared::files::File>()?;
let file = me.borrow::<yazi_shared::fs::File>()?;
let mut p = file.url.strip_prefix(&folder.cwd).unwrap_or(&file.url).components();
p.next_back();
Ok(Some(p.as_path().to_string_lossy().to_string()))
@ -122,7 +122,7 @@ impl Files {
});
reg.add_function("style", |_, me: AnyUserData| {
let manager = me.named_user_value::<UserDataRef<yazi_core::manager::Manager>>("manager")?;
let file = me.borrow::<yazi_shared::files::File>()?;
let file = me.borrow::<yazi_shared::fs::File>()?;
let mime = manager.mimetype.get(&file.url);
Ok(
THEME
@ -134,12 +134,12 @@ impl Files {
});
reg.add_function("is_hovered", |_, me: AnyUserData| {
let folder = me.named_user_value::<UserDataRef<yazi_core::tab::Folder>>("folder")?;
let file = me.borrow::<yazi_shared::files::File>()?;
let file = me.borrow::<yazi_shared::fs::File>()?;
Ok(matches!(folder.hovered(), Some(f) if f.url == file.url))
});
reg.add_function("is_yanked", |_, me: AnyUserData| {
let manager = me.named_user_value::<UserDataRef<yazi_core::manager::Manager>>("manager")?;
let file = me.borrow::<yazi_shared::files::File>()?;
let file = me.borrow::<yazi_shared::fs::File>()?;
Ok(if !manager.yanked.1.contains(&file.url) {
0u8
} else if manager.yanked.0 {
@ -151,7 +151,7 @@ impl Files {
reg.add_function("is_selected", |_, me: AnyUserData| {
let manager = me.named_user_value::<UserDataRef<yazi_core::manager::Manager>>("manager")?;
let folder = me.named_user_value::<UserDataRef<yazi_core::tab::Folder>>("folder")?;
let file = me.borrow::<yazi_shared::files::File>()?;
let file = me.borrow::<yazi_shared::fs::File>()?;
let selected = folder.files.is_selected(&file.url);
Ok(if !manager.active().mode.is_visual() {
@ -167,7 +167,7 @@ impl Files {
return Ok(None);
};
let file = me.borrow::<yazi_shared::files::File>()?;
let file = me.borrow::<yazi_shared::fs::File>()?;
if let Some(idx) = finder.matched_idx(&file.url) {
return Some(
lua.create_sequence_from([idx.into_lua(lua)?, finder.matched().len().into_lua(lua)?]),
@ -182,7 +182,7 @@ impl Files {
return Ok(None);
};
let file = me.borrow::<yazi_shared::files::File>()?;
let file = me.borrow::<yazi_shared::fs::File>()?;
let Some(h) = file.name().and_then(|n| finder.highlighted(n)) else {
return Ok(None);
};

View file

@ -4,7 +4,7 @@ use crossterm::event::KeyEvent;
use tokio::sync::{mpsc::UnboundedSender, oneshot};
use super::Exec;
use crate::{files::FilesOp, fs::{Cha, Url}, term::Term, Layer, RoCell};
use crate::{fs::{Cha, FilesOp, Url}, term::Term, Layer, RoCell};
static TX: RoCell<UnboundedSender<Event>> = RoCell::new();

View file

@ -1,5 +0,0 @@
mod file;
mod op;
pub use file::*;
pub use op::*;

View file

@ -1,9 +1,13 @@
mod cha;
mod file;
mod fns;
mod op;
mod path;
mod url;
pub use cha::*;
pub use file::*;
pub use fns::*;
pub use op::*;
pub use path::*;
pub use url::*;

View file

@ -6,7 +6,6 @@ mod defer;
mod env;
mod errors;
pub mod event;
pub mod files;
pub mod fs;
mod layer;
mod mime;