Compare commits

...

3 Commits

5 changed files with 46 additions and 26 deletions

View File

@@ -32,6 +32,22 @@ cd demo
raven run main.Main
```
## Raven commands
Usage: raven <COMMAND>
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
- [ ] Fix `raven test`. Totally borked.

View File

@@ -1,5 +1,3 @@
package main;
public class Main {
public static void main(String[] args) {

View File

@@ -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;
}
}

View File

@@ -79,14 +79,34 @@ impl JVM {
) -> anyhow::Result<(Option<String>, Option<String>)> {
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::<Vec<String>>::into(f)),
);
println!("Fence 5");
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");
println!("{:?}", cmd.as_slice());
println!("Fence 7");
let result = crate::io::run_process(cmd.as_slice());
if self.monitor
@@ -118,12 +138,7 @@ pub enum VMFlag {
impl Into<Vec<String>> for VMFlag {
fn into(self) -> Vec<String> {
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()]
}
}
@@ -136,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
}
)

View File

@@ -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,22 +248,25 @@ fn run<P: AsRef<Path>>(
}
fn test(assertions: bool) -> anyhow::Result<(Option<String>, Option<String>)> {
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))
.ram_max(ByteSize::mib(512))
.monitor(true)
.build()
.run(DIR_TEST.as_path())
.run(DIR_TARGET.as_path())
}
fn clean() {