diff --git a/src/builder/mod.rs b/src/builder/mod.rs index 26d0c25..523497a 100644 --- a/src/builder/mod.rs +++ b/src/builder/mod.rs @@ -4,6 +4,7 @@ use crate::parser; use crate::Lib; use crate::PathBuf; use parser::node_type::Module; +use std::env; /** * Copyright 2021 Garrit Franke * @@ -37,6 +38,16 @@ impl Builder { } pub fn build(&mut self) -> Result<(), String> { + let in_file = self.in_file.clone(); + // Resolve path deltas between working directory and entrypoint + if let Some(base_directory) = self.in_file.clone().parent() { + if let Ok(resolved_delta) = in_file.strip_prefix(base_directory) { + + // TODO: This error could probably be handled better + let _ = env::set_current_dir(resolved_delta); + self.in_file = resolved_delta.to_path_buf(); + } + }; self.build_module(self.in_file.clone())?; // Append standard library