mirror of
https://github.com/spacedriveapp/spacedrive
synced 2024-07-18 11:59:11 +00:00
even more cleaning up (starting to look better)
This commit is contained in:
parent
22bf284150
commit
f98ffd79c2
|
@ -2,7 +2,7 @@ use super::{context_menu_fs_info, get_path_from_location_id, FsInfo, ObjectType}
|
||||||
use crate::job::{JobError, JobReportUpdate, JobResult, JobState, StatefulJob, WorkerContext};
|
use crate::job::{JobError, JobReportUpdate, JobResult, JobState, StatefulJob, WorkerContext};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use specta::Type;
|
use specta::Type;
|
||||||
use std::{collections::VecDeque, hash::Hash, path::PathBuf};
|
use std::{collections::VecDeque, ffi::OsStr, hash::Hash, path::PathBuf};
|
||||||
|
|
||||||
pub struct FileCopierJob {}
|
pub struct FileCopierJob {}
|
||||||
|
|
||||||
|
@ -29,6 +29,20 @@ pub struct FileCopierJobStep {
|
||||||
|
|
||||||
const JOB_NAME: &str = "file_copier";
|
const JOB_NAME: &str = "file_copier";
|
||||||
|
|
||||||
|
pub fn osstr_to_string(os_str: Option<&OsStr>) -> Result<String, JobError> {
|
||||||
|
let string = os_str
|
||||||
|
.ok_or(JobError::MissingData {
|
||||||
|
value: "no in option OsStr".to_string(),
|
||||||
|
})?
|
||||||
|
.to_str()
|
||||||
|
.ok_or(JobError::MissingData {
|
||||||
|
value: "issue converting OsStr to &str".to_string(),
|
||||||
|
})?
|
||||||
|
.to_string();
|
||||||
|
|
||||||
|
Ok(string)
|
||||||
|
}
|
||||||
|
|
||||||
#[async_trait::async_trait]
|
#[async_trait::async_trait]
|
||||||
impl StatefulJob for FileCopierJob {
|
impl StatefulJob for FileCopierJob {
|
||||||
type Data = FileCopierJobState;
|
type Data = FileCopierJobState;
|
||||||
|
@ -60,41 +74,25 @@ impl StatefulJob for FileCopierJob {
|
||||||
let target_file_name = state.init.target_file_name_suffix.clone().map_or_else(
|
let target_file_name = state.init.target_file_name_suffix.clone().map_or_else(
|
||||||
|| {
|
|| {
|
||||||
// if there's no provided suffix, just use source name
|
// if there's no provided suffix, just use source name
|
||||||
source_fs_info
|
osstr_to_string(source_fs_info.obj_path.clone().file_name())
|
||||||
.obj_path
|
|
||||||
.clone()
|
|
||||||
.file_name()
|
|
||||||
.unwrap()
|
|
||||||
.to_str()
|
|
||||||
.unwrap()
|
|
||||||
.to_string()
|
|
||||||
},
|
},
|
||||||
|s| match source_fs_info.obj_type {
|
|s| match source_fs_info.obj_type {
|
||||||
ObjectType::Directory => {
|
ObjectType::Directory => {
|
||||||
source_fs_info
|
Ok(osstr_to_string(source_fs_info.obj_path.clone().file_name())? + &s)
|
||||||
.obj_path
|
|
||||||
.clone()
|
|
||||||
.file_name()
|
|
||||||
.unwrap()
|
|
||||||
.to_str()
|
|
||||||
.unwrap()
|
|
||||||
.to_string() + &s
|
|
||||||
}
|
|
||||||
ObjectType::File => {
|
|
||||||
source_fs_info
|
|
||||||
.obj_path
|
|
||||||
.clone()
|
|
||||||
.file_stem()
|
|
||||||
.unwrap()
|
|
||||||
.to_str()
|
|
||||||
.unwrap()
|
|
||||||
.to_string() + &s + &source_fs_info
|
|
||||||
.obj_path
|
|
||||||
.extension()
|
|
||||||
.map_or("".to_string(), |x| ".".to_string() + x.to_str().unwrap())
|
|
||||||
}
|
}
|
||||||
|
ObjectType::File => Ok(osstr_to_string(
|
||||||
|
source_fs_info.obj_path.clone().file_stem(),
|
||||||
|
)? + &s + &source_fs_info.obj_path.extension().map_or(
|
||||||
|
Ok::<_, JobError>("".to_string()),
|
||||||
|
|x| {
|
||||||
|
Ok(".".to_string()
|
||||||
|
+ x.to_str().ok_or(JobError::MissingData {
|
||||||
|
value: "issue converting OsStr to &str".to_string(),
|
||||||
|
})?)
|
||||||
|
},
|
||||||
|
)?),
|
||||||
},
|
},
|
||||||
);
|
)?;
|
||||||
|
|
||||||
full_target_path.push(target_file_name);
|
full_target_path.push(target_file_name);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue