From 3deedb2f7fc62b865af27eed9226984d2438b88a Mon Sep 17 00:00:00 2001 From: AdrianLongCarleton Date: Mon, 26 Jan 2026 22:08:33 -0500 Subject: [PATCH 1/4] Fixed raven build to build from anywhere inside of a raven project. --- src/main.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main.rs b/src/main.rs index d6409d9..6981bd5 100644 --- a/src/main.rs +++ b/src/main.rs @@ -186,7 +186,7 @@ fn new(project_name: String) -> anyhow::Result<()> { } fn build() -> anyhow::Result<()> { - let mut targets: Vec = crate::fs::expand_files(DIR_SRC.as_path())? + let mut targets: Vec = crate::fs::expand_files(PROJECT_ROOT.clone().join(DIR_SRC.as_path()))? .into_iter() .filter(|f| { f.extension() From 6da7586c3ecf72ee9864baab6500477b889b8162 Mon Sep 17 00:00:00 2001 From: AdrianLongCarleton Date: Mon, 26 Jan 2026 23:56:52 -0500 Subject: [PATCH 2/4] Refactored assets to use propper java syntax. Found error in the raven test command. Impropper formating when passing arguments to the java command. --- README.md | 16 ++++++++++++++++ assets/src/main/Main.java | 2 -- assets/src/test/Main.java | 12 ------------ src/java.rs | 18 ++++++++++++++++++ src/main.rs | 9 ++++++--- 5 files changed, 40 insertions(+), 17 deletions(-) delete mode 100644 assets/src/test/Main.java diff --git a/README.md b/README.md index 9ab0e65..4a94467 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,22 @@ cd demo raven run main.Main ``` +## Raven commands +Usage: raven + +Commands: + new Create a new raven project + init Create a new raven project in an existing directory + build Compile the current project + run Run the current project + test !!! BORKED !!! Run the tests + clean Remove the target directory and caching + help Print this message or the help of the given subcommand(s) + +Options: + -h, --help Print help + -V, --version Print version + ## Future plans - [ ] Make `raven run` fall back to an entry point specified in Nest.toml, when diff --git a/assets/src/main/Main.java b/assets/src/main/Main.java index e2c340f..52b9fad 100644 --- a/assets/src/main/Main.java +++ b/assets/src/main/Main.java @@ -1,5 +1,3 @@ -package main; - public class Main { public static void main(String[] args) { diff --git a/assets/src/test/Main.java b/assets/src/test/Main.java deleted file mode 100644 index 4da99a4..0000000 --- a/assets/src/test/Main.java +++ /dev/null @@ -1,12 +0,0 @@ -package test; - -public class Main { - - public static void main(String[] args) { - testAdd(); - } - - public static void testAdd() { - assert main.Main.add(2, 2) == 4; - } -} diff --git a/src/java.rs b/src/java.rs index e9d6f7c..9df21a7 100644 --- a/src/java.rs +++ b/src/java.rs @@ -79,14 +79,32 @@ impl JVM { ) -> anyhow::Result<(Option, Option)> { let mut cmd = vec![JAVA_VM.to_string()]; + println!("Fence 4"); + + // proper format + // java -Xms128m -Xmx512m -cp PROJECT_ROOT/src/text \test.Test + // current format + // java Xms128.0 MiB Xmx512.0 MiB /home/viffx/Coding/Rust/raven/src/Test1/src/test/ cmd.extend( self.flags .clone() .into_iter() .flat_map(|f| Into::>::into(f)), ); + + println!("Fence 5"); + for part in &cmd { + println!("{}", part); + } cmd.push(entry_point.as_ref().display().to_string()); + println!("Fence 6"); + for part in &cmd { + println!("{}", part); + } + + + println!("Fence 7"); let result = crate::io::run_process(cmd.as_slice()); if self.monitor diff --git a/src/main.rs b/src/main.rs index 6981bd5..155f38d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -140,14 +140,14 @@ fn init() -> anyhow::Result<()> { f.write_all(include_bytes!("../assets/src/main/Main.java"))?; } - // Make src/test/Main.java + // Make src/test/Test.java if let Result::Ok(mut f) = OpenOptions::new().write(true).create_new(is_empty).open( DIR_TEST .clone() - .join("Main") + .join("Test") .with_extension(JAVA_EXT_SOURCE), ) { - f.write_all(include_bytes!("../assets/src/test/Main.java"))?; + f.write_all(include_bytes!("../assets/src/test/Test.java"))?; } // git init . @@ -248,15 +248,18 @@ fn run>( } fn test(assertions: bool) -> anyhow::Result<(Option, Option)> { + println!("Fence 1"); java::CompilerBuilder::new() .class_path(DIR_TARGET.as_path()) .destination(DIR_TARGET.as_path()) .build() .compile(DIR_TEST.as_path())?; + println!("Fence 2"); // Change cwd to avoid Java pathing issues. crate::env::set_cwd(DIR_TARGET.as_path())?; + println!("Fence 3"); java::JVMBuilder::new() .assertions(assertions) .ram_min(ByteSize::mib(128)) From 05390a8f0badb49078080c6bd3168b2a1e2666ff Mon Sep 17 00:00:00 2001 From: AdrianLongCarleton Date: Tue, 27 Jan 2026 13:39:16 -0500 Subject: [PATCH 3/4] Fixed raven test. The raven test system needs to be redesigned in order to run multiple different test classes. Cyclic dependencies cannot be resolved the curent build system so a parser needs to be implemented to get the import statements. --- src/java.rs | 19 ++++++++----------- src/main.rs | 4 ++-- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/src/java.rs b/src/java.rs index 9df21a7..02db3ad 100644 --- a/src/java.rs +++ b/src/java.rs @@ -96,12 +96,14 @@ impl JVM { for part in &cmd { println!("{}", part); } + cmd.push("-cp".to_string()); cmd.push(entry_point.as_ref().display().to_string()); + // Jave needs a class path and a file name to run. + cmd.push("Test".to_string()); + println!("Fence 6"); - for part in &cmd { - println!("{}", part); - } + println!("{:?}", cmd.as_slice()); println!("Fence 7"); @@ -136,12 +138,7 @@ pub enum VMFlag { impl Into> for VMFlag { fn into(self) -> Vec { - match self { - Self::EnableAssert => vec![String::from("-ea")], - Self::HeapMax { size } => vec![format!("Xmx{}", size)], - Self::HeapMin { size } => vec![format!("Xms{}", size)], - Self::Version => vec![String::from("--version")], - } + vec![self.to_string()] } } @@ -154,8 +151,8 @@ impl fmt::Display for VMFlag { "-{}", match self { Self::EnableAssert => String::from("ea"), - Self::HeapMax { size } => format!("Xmx{}", size), - Self::HeapMin { size } => format!("Xms{}", size), + Self::HeapMax { size } => format!("Xmx{}", size.as_u64()), + Self::HeapMin { size } => format!("Xms{}", size.as_u64()), Self::Version => String::from("-version"), // --version } ) diff --git a/src/main.rs b/src/main.rs index 155f38d..922f727 100644 --- a/src/main.rs +++ b/src/main.rs @@ -186,7 +186,7 @@ fn new(project_name: String) -> anyhow::Result<()> { } fn build() -> anyhow::Result<()> { - let mut targets: Vec = crate::fs::expand_files(PROJECT_ROOT.clone().join(DIR_SRC.as_path()))? + let mut targets: Vec = crate::fs::expand_files(DIR_SRC.as_path())? .into_iter() .filter(|f| { f.extension() @@ -266,7 +266,7 @@ fn test(assertions: bool) -> anyhow::Result<(Option, Option)> { .ram_max(ByteSize::mib(512)) .monitor(true) .build() - .run(DIR_TEST.as_path()) + .run(DIR_TARGET.as_path()) } fn clean() { From 82b45d9c6631fb0d8cb36a5cd1ed1f69df6b97fc Mon Sep 17 00:00:00 2001 From: AdrianLongCarleton Date: Tue, 27 Jan 2026 14:09:30 -0500 Subject: [PATCH 4/4] Removed Fence denugging statements --- src/java.rs | 9 --------- src/main.rs | 3 --- 2 files changed, 12 deletions(-) diff --git a/src/java.rs b/src/java.rs index 02db3ad..7a89ccf 100644 --- a/src/java.rs +++ b/src/java.rs @@ -79,12 +79,6 @@ impl JVM { ) -> anyhow::Result<(Option, Option)> { let mut cmd = vec![JAVA_VM.to_string()]; - println!("Fence 4"); - - // proper format - // java -Xms128m -Xmx512m -cp PROJECT_ROOT/src/text \test.Test - // current format - // java Xms128.0 MiB Xmx512.0 MiB /home/viffx/Coding/Rust/raven/src/Test1/src/test/ cmd.extend( self.flags .clone() @@ -92,7 +86,6 @@ impl JVM { .flat_map(|f| Into::>::into(f)), ); - println!("Fence 5"); for part in &cmd { println!("{}", part); } @@ -102,11 +95,9 @@ impl JVM { // Jave needs a class path and a file name to run. cmd.push("Test".to_string()); - println!("Fence 6"); println!("{:?}", cmd.as_slice()); - println!("Fence 7"); let result = crate::io::run_process(cmd.as_slice()); if self.monitor diff --git a/src/main.rs b/src/main.rs index 922f727..266327a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -248,18 +248,15 @@ fn run>( } fn test(assertions: bool) -> anyhow::Result<(Option, Option)> { - println!("Fence 1"); java::CompilerBuilder::new() .class_path(DIR_TARGET.as_path()) .destination(DIR_TARGET.as_path()) .build() .compile(DIR_TEST.as_path())?; - println!("Fence 2"); // Change cwd to avoid Java pathing issues. crate::env::set_cwd(DIR_TARGET.as_path())?; - println!("Fence 3"); java::JVMBuilder::new() .assertions(assertions) .ram_min(ByteSize::mib(128))