From 43e2c59e736955dde33547e617e8cb786b20cdc0 Mon Sep 17 00:00:00 2001 From: Nilstrieb Date: Sun, 22 Aug 2021 20:52:03 +0200 Subject: [PATCH] moved into seperate crates --- Cargo.lock | 15 ++++++++++++++- Cargo.toml | 11 ++--------- crates/file-info/Cargo.toml | 9 +++++++++ {src => crates/file-info/src}/ui.rs | 8 ++++---- crates/file-parser/Cargo.toml | 8 ++++++++ .../mod.rs => crates/file-parser/src/lib.rs | 0 .../file-parser/src}/model/cp_info.rs | 0 .../file-parser/src}/model/mod.rs | 2 +- {src/parse => crates/file-parser/src}/test.rs | 12 ++---------- crates/machine/Cargo.toml | 8 ++++++++ src/execute/mod.rs => crates/machine/src/lib.rs | 0 {src/execute => crates/machine/src}/model.rs | 2 +- file-info.sh | 4 ++++ src/lib.rs | 17 ----------------- 14 files changed, 53 insertions(+), 43 deletions(-) create mode 100644 crates/file-info/Cargo.toml rename {src => crates/file-info/src}/ui.rs (91%) create mode 100644 crates/file-parser/Cargo.toml rename src/parse/mod.rs => crates/file-parser/src/lib.rs (100%) rename {src/parse => crates/file-parser/src}/model/cp_info.rs (100%) rename {src/parse => crates/file-parser/src}/model/mod.rs (99%) rename {src/parse => crates/file-parser/src}/test.rs (91%) create mode 100644 crates/machine/Cargo.toml rename src/execute/mod.rs => crates/machine/src/lib.rs (100%) rename {src/execute => crates/machine/src}/model.rs (96%) create mode 100644 file-info.sh delete mode 100644 src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index bdbf4ad..0b08a71 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,5 +1,18 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. +version = 3 + [[package]] -name = "coldsquare" +name = "file-info" +version = "0.1.0" +dependencies = [ + "file-parser", +] + +[[package]] +name = "file-parser" +version = "0.1.0" + +[[package]] +name = "machine" version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml index 8c79de6..4df366c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,9 +1,2 @@ -[package] -name = "coldsquare" -version = "0.1.0" -authors = ["Nilstrieb "] -edition = "2018" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] +[workspace] +members = ["crates/*"] \ No newline at end of file diff --git a/crates/file-info/Cargo.toml b/crates/file-info/Cargo.toml new file mode 100644 index 0000000..78e1e54 --- /dev/null +++ b/crates/file-info/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "file-info" +version = "0.1.0" +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +file-parser = { path = "../file-parser" } \ No newline at end of file diff --git a/src/ui.rs b/crates/file-info/src/ui.rs similarity index 91% rename from src/ui.rs rename to crates/file-info/src/ui.rs index 3c240bd..779e74a 100644 --- a/src/ui.rs +++ b/crates/file-info/src/ui.rs @@ -1,4 +1,4 @@ -use crate::parse::{ClassFile, ParseErr}; +use file_parser::{ClassFile, ParseErr}; use std::error::Error; use std::io::Write; @@ -40,13 +40,13 @@ pub fn display_class(mut w: W, class: &ClassFile) -> Result<(), Box(mut w: W, class: &ClassFile) -> Result<(), Box".to_string() }) }, CpInfo { tag: 1, inner: CpInfoInner::Utf8(cp_info::Utf8 { - length: 3, bytes: "()V".to_string() }) }, @@ -97,35 +94,30 @@ fn parse_empty_class() { CpInfo { tag: 1, inner: CpInfoInner::Utf8(cp_info::Utf8 { - length: 4, bytes: "Test".to_string() }) }, CpInfo { tag: 1, inner: CpInfoInner::Utf8(cp_info::Utf8 { - length: 4, bytes: "Code".to_string() }) }, CpInfo { tag: 1, inner: CpInfoInner::Utf8(cp_info::Utf8 { - length: 15, bytes: "LineNumberTable".to_string() }) }, CpInfo { tag: 1, inner: CpInfoInner::Utf8(cp_info::Utf8 { - length: 10, bytes: "SourceFile".to_string() }) }, CpInfo { tag: 1, inner: CpInfoInner::Utf8(cp_info::Utf8 { - length: 9, bytes: "Test.java".to_string() }) } @@ -147,7 +139,7 @@ fn parse_empty_class() { #[test] fn more_complex_file() { - let class = include_bytes!("../../testdata/Test2.class"); + let class = include_bytes!("../../../testdata/Test2.class"); let parsed = parse_class_file(class).unwrap(); assert_eq!(parsed.magic, 0xCAFEBABE); } diff --git a/crates/machine/Cargo.toml b/crates/machine/Cargo.toml new file mode 100644 index 0000000..c886a2f --- /dev/null +++ b/crates/machine/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "machine" +version = "0.1.0" +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/src/execute/mod.rs b/crates/machine/src/lib.rs similarity index 100% rename from src/execute/mod.rs rename to crates/machine/src/lib.rs diff --git a/src/execute/model.rs b/crates/machine/src/model.rs similarity index 96% rename from src/execute/model.rs rename to crates/machine/src/model.rs index 66606be..6471496 100644 --- a/src/execute/model.rs +++ b/crates/machine/src/model.rs @@ -49,7 +49,7 @@ impl LocalVariables { #[cfg(test)] mod tests { - use crate::execute::model::{LocalVariables, OperandStack}; + use super::{LocalVariables, OperandStack}; #[test] fn operand_stack() { diff --git a/file-info.sh b/file-info.sh new file mode 100644 index 0000000..3d8e322 --- /dev/null +++ b/file-info.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +cd crates/file-info +cargo run ../../"$1" \ No newline at end of file diff --git a/src/lib.rs b/src/lib.rs deleted file mode 100644 index 411ec47..0000000 --- a/src/lib.rs +++ /dev/null @@ -1,17 +0,0 @@ -use crate::parse::{ClassFile, ParseErr}; -use std::error::Error; - -mod execute; -mod parse; -mod ui; - -pub fn parse_class_file(file: &[u8]) -> Result { - parse::parse_class_file(file) -} - -pub fn display_class(w: W, class: &ClassFile) -> Result<(), Box> -where - W: std::io::Write, -{ - ui::display_class(w, class) -}