diff --git a/src/core/commands/command_load_assets.rs b/src/core/commands/command_load_assets.rs index 24edc6a..07ebc03 100644 --- a/src/core/commands/command_load_assets.rs +++ b/src/core/commands/command_load_assets.rs @@ -41,6 +41,7 @@ pub struct AssetLoadStep { pub script: String, pub file: String, pub file_type: String, + pub version: String, } #[derive(Debug, Serialize, Clone, Deserialize, TS)] @@ -100,7 +101,7 @@ impl Command for LoadAssetsArgs { for file in files.iter() { for format in import_formats.iter() { - if file.ends_with(format) { + if file.path.ends_with(format) { debug!("Getting script for format: {}", format); let mut script_path = project.get_root_directory(); @@ -113,7 +114,8 @@ impl Command for LoadAssetsArgs { element: element.0.clone(), script: script_path.to_str().unwrap().to_string(), file_type: format.clone(), - file: file.clone(), + file: file.path.clone(), + version: file.version.clone(), }); break; diff --git a/src/core/version_control/direct.rs b/src/core/version_control/direct.rs index 479d02f..9ace7b7 100644 --- a/src/core/version_control/direct.rs +++ b/src/core/version_control/direct.rs @@ -3,7 +3,7 @@ use crate::core::{ version_control::common::resolve_element_path, }; -use super::{ExportError, ExportResult, VersionControl}; +use super::{ExportError, ExportResult, VersionControl, VersionControlFile}; use log::{error, info}; use serde::{Deserialize, Serialize}; @@ -54,7 +54,7 @@ impl VersionControl for VersionControlConfigDirect { project: &project::Project, element_name: String, element_data: &ResolvedElementData, - ) -> Vec { + ) -> Vec { let asset_name = element_data.get_asset_name().unwrap(); let dept = element_data.get_owning_department().unwrap(); let shot = element_data.get_shot(); @@ -78,7 +78,10 @@ impl VersionControl for VersionControlConfigDirect { return files .into_iter() .filter(|e| e.is_ok()) - .map(|e| e.unwrap().path().to_str().unwrap().to_string()) + .map(|e| VersionControlFile { + path: e.unwrap().path().to_str().unwrap().to_string(), + version: "current".to_string(), + }) .collect() } Err(_) => return Vec::new(), diff --git a/src/core/version_control/mod.rs b/src/core/version_control/mod.rs index 02068f1..fe83d7d 100644 --- a/src/core/version_control/mod.rs +++ b/src/core/version_control/mod.rs @@ -27,6 +27,12 @@ pub struct ExportResult { pub script: String, } +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct VersionControlFile { + pub path: String, + pub version: String, +} + #[enum_dispatch] pub trait VersionControl { fn export( @@ -40,7 +46,7 @@ pub trait VersionControl { project: &project::Project, element_name: String, element_data: &ResolvedElementData, - ) -> Vec; + ) -> Vec; } #[derive(Debug, Clone, Serialize, Deserialize)] diff --git a/src/core/version_control/symlink.rs b/src/core/version_control/symlink.rs index 1bbe962..a3ac678 100644 --- a/src/core/version_control/symlink.rs +++ b/src/core/version_control/symlink.rs @@ -7,7 +7,7 @@ use crate::core::{ version_control::{common::resolve_element_path, versioned_directories::get_next_version}, }; -use super::{ExportError, ExportResult, VersionControl}; +use super::{ExportError, ExportResult, VersionControl, VersionControlFile}; use log::{error, info}; use path_absolutize::Absolutize; use serde::{Deserialize, Serialize}; @@ -111,7 +111,7 @@ impl VersionControl for VersionControlConfigSymlink { _project: &project::Project, _element_name: String, _element_data: &ResolvedElementData, - ) -> Vec { + ) -> Vec { todo!() } } diff --git a/src/core/version_control/versioned_directories.rs b/src/core/version_control/versioned_directories.rs index 5c0c1a3..c74dd20 100644 --- a/src/core/version_control/versioned_directories.rs +++ b/src/core/version_control/versioned_directories.rs @@ -5,7 +5,7 @@ use crate::core::{ version_control::common::resolve_element_path, }; -use super::{ExportError, ExportResult, VersionControl}; +use super::{ExportError, ExportResult, VersionControl, VersionControlFile}; use log::{error, info, warn}; use serde::{Deserialize, Serialize}; @@ -63,7 +63,7 @@ impl VersionControl for VersionControlConfigVersionedDirectories { project: &project::Project, element_name: String, element_data: &ResolvedElementData, - ) -> Vec { + ) -> Vec { let asset_name = element_data.get_asset_name().unwrap(); let dept = element_data.get_owning_department().unwrap(); let shot = element_data.get_shot(); @@ -104,10 +104,19 @@ impl VersionControl for VersionControlConfigVersionedDirectories { let files = std::fs::read_dir(path.path()); match files { Ok(files) => { - let files: Vec = files + let files: Vec = files .into_iter() .filter(|e| e.is_ok()) - .map(|e| e.unwrap().path().to_str().unwrap().to_string()) + .map(|e| { + let mut path = e.unwrap().path(); + let file = path.to_str().unwrap().to_string(); + path.pop(); + let version = path.file_name().unwrap().to_str().unwrap().to_string(); + VersionControlFile { + path: file, + version, + } + }) .collect(); info!("Found files: {:?}", files);