diff --git a/Cargo.lock b/Cargo.lock index 1a874e8..b0c2413 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -177,7 +177,7 @@ checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" [[package]] name = "cave" -version = "0.1.5" +version = "0.1.6" dependencies = [ "anyhow", "assert_cmd", diff --git a/Cargo.toml b/Cargo.toml index 010adee..8c0a80d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cave" -version = "0.1.5" +version = "0.1.6" authors = ["Simvia "] edition = "2021" description = "CLI for managing code_aster versions" diff --git a/src/docker.rs b/src/docker.rs index c2977b0..02ca988 100644 --- a/src/docker.rs +++ b/src/docker.rs @@ -14,6 +14,9 @@ use crate::telemetry::{send_execution_data, ExecutionData}; use log::debug; use std::env; +#[cfg(unix)] +use std::os::unix::fs::MetadataExt; + // TODO : uncomment to have registry option // use regex::Regex; // use crate::config::Registry; @@ -221,12 +224,18 @@ pub fn docker_aster(version: &str, export_file: &Option, args: &Vec, args: &Vec (u32, u32) { + #[cfg(unix)] + { + // Try to get UID/GID from the current directory's metadata + if let Ok(metadata) = std::env::current_dir().and_then(|p| std::fs::metadata(p)) { + (metadata.uid(), metadata.gid()) + } else { + // Fallback to environment or default + let uid = std::env::var("UID") + .ok() + .and_then(|s| s.parse().ok()) + .unwrap_or(1000); + let gid = std::env::var("GID") + .ok() + .and_then(|s| s.parse().ok()) + .unwrap_or(1000); + (uid, gid) + } + } + + #[cfg(not(unix))] + { + // On Windows, return default values + (1000, 1000) + } +} + pub fn image_id(version: &str) -> Result { let reference = format!("simvia/code_aster:{}", version);