From 8e6c15ef063db1148e500c6632458f369654ebf4 Mon Sep 17 00:00:00 2001 From: Airyzz <36567925+Airyzz@users.noreply.github.com> Date: Mon, 27 Jan 2025 12:55:21 +1030 Subject: [PATCH 1/2] add export path overrides to direct vc --- integration/blender/export.py | 8 +++---- src/core/version_control/direct.rs | 38 +++++++++++++++++++++++++++--- 2 files changed, 39 insertions(+), 7 deletions(-) diff --git a/integration/blender/export.py b/integration/blender/export.py index 7fb9608..9ce931e 100644 --- a/integration/blender/export.py +++ b/integration/blender/export.py @@ -68,12 +68,12 @@ def execute(self, context): result = conduct.export(data.department, export.format, data.asset, name, data.shot) locals = {} - globals = {} + script = result['script'] - exec(script, locals, globals) + exec(script, globals(), locals) - for item in globals: - instance = globals[item] + for item in locals: + instance = locals[item] if not inspect.isclass(instance): continue diff --git a/src/core/version_control/direct.rs b/src/core/version_control/direct.rs index 479d02f..3f17412 100644 --- a/src/core/version_control/direct.rs +++ b/src/core/version_control/direct.rs @@ -1,3 +1,6 @@ +use core::fmt; +use std::{collections::BTreeMap, path::PathBuf}; + use crate::core::{ commands::ExportArgs, element::resolved_element_data::ResolvedElementData, project, version_control::common::resolve_element_path, @@ -5,10 +8,14 @@ use crate::core::{ use super::{ExportError, ExportResult, VersionControl}; use log::{error, info}; +use path_absolutize::Absolutize; use serde::{Deserialize, Serialize}; #[derive(Debug, Clone, Serialize, Deserialize)] -pub struct VersionControlConfigDirect {} +pub struct VersionControlConfigDirect { + #[serde(skip_serializing_if = "BTreeMap::is_empty", default)] + export_overrides: BTreeMap +} impl VersionControl for VersionControlConfigDirect { fn export( @@ -31,10 +38,35 @@ impl VersionControl for VersionControlConfigDirect { return Err(err); } }; + + info!("Resolved path: {}", &path.to_str().unwrap()); let mut dir = project.get_root_directory(); - dir.push("export"); - dir.push(path); + + match self.export_overrides.get(&args.file_format) { + Some(override_str) => { + info!("Found override path: {}", override_str); + let override_path = PathBuf::from(override_str); + if override_path.is_relative() { + info!("Override path is relative"); + dir.push(override_str); + dir = dir.absolutize().unwrap().to_path_buf(); + + info!("dir after relative override: {}", dir.to_str().unwrap()); + + } else { + info!("Override path is absolute") + } + + dir.push(path); + }, + None => { + dir.push("export"); + dir.push(path); + }, + } + + info!("Exporting to: {}", dir.to_str().unwrap()); info!("Recommended file name: {}", file_name); From c6b626cf78907ecea4d91af0698fe0cf4a56c4f0 Mon Sep 17 00:00:00 2001 From: Airyzz <36567925+Airyzz@users.noreply.github.com> Date: Mon, 27 Jan 2025 13:08:50 +1030 Subject: [PATCH 2/2] Update direct.rs --- src/core/version_control/direct.rs | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/core/version_control/direct.rs b/src/core/version_control/direct.rs index 94c182a..82f834c 100644 --- a/src/core/version_control/direct.rs +++ b/src/core/version_control/direct.rs @@ -14,7 +14,7 @@ use serde::{Deserialize, Serialize}; #[derive(Debug, Clone, Serialize, Deserialize)] pub struct VersionControlConfigDirect { #[serde(skip_serializing_if = "BTreeMap::is_empty", default)] - export_overrides: BTreeMap + export_overrides: BTreeMap, } impl VersionControl for VersionControlConfigDirect { @@ -38,7 +38,7 @@ impl VersionControl for VersionControlConfigDirect { return Err(err); } }; - + info!("Resolved path: {}", &path.to_str().unwrap()); let mut dir = project.get_root_directory(); @@ -53,21 +53,18 @@ impl VersionControl for VersionControlConfigDirect { dir = dir.absolutize().unwrap().to_path_buf(); info!("dir after relative override: {}", dir.to_str().unwrap()); - } else { info!("Override path is absolute") } dir.push(path); - }, + } None => { dir.push("export"); dir.push(path); - }, + } } - - info!("Exporting to: {}", dir.to_str().unwrap()); info!("Recommended file name: {}", file_name);