chore: switch to a mono repo

This commit is contained in:
rvcas 2022-05-22 12:40:52 -04:00
parent 6ef5dd7e0e
commit 33fee5b3e0
No known key found for this signature in database
GPG Key ID: C09B64E263F7D68C
17 changed files with 158 additions and 115 deletions

57
Cargo.lock generated
View File

@ -39,9 +39,9 @@ checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8"
[[package]]
name = "clap"
version = "3.1.14"
version = "3.1.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "535434c063ced786eb04aaf529308092c5ab60889e8fe24275d15de07b01fa97"
checksum = "d2dbdf4bdacb33466e854ce889eee8dfd5729abf7ccd7664d0a2d60cd384440b"
dependencies = [
"atty",
"bitflags",
@ -56,9 +56,9 @@ dependencies = [
[[package]]
name = "clap_derive"
version = "3.1.7"
version = "3.1.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a3aab4734e083b809aaf5794e14e756d1c798d2c69c7f7de7a09a2f5214993c1"
checksum = "25320346e922cffe59c0bbc5410c8d8784509efb321488971081313cb1e1a33c"
dependencies = [
"heck",
"proc-macro-error",
@ -86,6 +86,10 @@ dependencies = [
"memchr",
]
[[package]]
name = "flat"
version = "0.0.0"
[[package]]
name = "hashbrown"
version = "0.11.2"
@ -131,9 +135,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]]
name = "libc"
version = "0.2.125"
version = "0.2.126"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5916d2ae698f6de9bfb891ad7a8d65c09d232dc58cc4ac433c7da3b2fd84bc2b"
checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836"
[[package]]
name = "memchr"
@ -143,21 +147,18 @@ checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
[[package]]
name = "neptune"
version = "0.1.0"
version = "0.0.0"
dependencies = [
"anyhow",
"clap",
"combine",
"hex",
"strum",
"strum_macros",
"uplc",
]
[[package]]
name = "os_str_bytes"
version = "6.0.0"
version = "6.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e22443d1643a904602595ba1cd8f7d896afe56d26712531c5ff73a15b2fbf64"
checksum = "029d8d0b2f198229de29dca79676f2738ff952edf3fde542eb8bf94d8c21b435"
[[package]]
name = "proc-macro-error"
@ -185,11 +186,11 @@ dependencies = [
[[package]]
name = "proc-macro2"
version = "1.0.37"
version = "1.0.39"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec757218438d5fda206afc041538b2f6d889286160d649a86a24d37e1235afd1"
checksum = "c54b25569025b7fc9651de43004ae593a75ad88543b17178aa5e1b9c4f15f56f"
dependencies = [
"unicode-xid",
"unicode-ident",
]
[[package]]
@ -234,13 +235,13 @@ dependencies = [
[[package]]
name = "syn"
version = "1.0.92"
version = "1.0.95"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7ff7c592601f11445996a06f8ad0c27f094a58857c2f89e97974ab9235b92c52"
checksum = "fbaf6116ab8924f39d52792136fb74fd60a80194cf1b1c6ffa6453eef1c3f942"
dependencies = [
"proc-macro2",
"quote",
"unicode-xid",
"unicode-ident",
]
[[package]]
@ -259,10 +260,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb"
[[package]]
name = "unicode-xid"
version = "0.2.2"
name = "unicode-ident"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3"
checksum = "d22af068fba1eb5edcb4aea19d382b2a3deb4c8f9d475c589b6ada9e0fd493ee"
[[package]]
name = "uplc"
version = "0.1.0"
dependencies = [
"anyhow",
"combine",
"flat",
"hex",
"strum",
"strum_macros",
]
[[package]]
name = "version_check"

View File

@ -1,14 +1,2 @@
[package]
name = "neptune"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
anyhow = "1.0.57"
clap = { version = "3.1.14", features = ["derive"] }
combine = "4.6.4"
hex = "0.4.3"
strum = "0.24.0"
strum_macros = "0.24.0"
[workspace]
members = ["crates/cli", "crates/flat", "crates/uplc"]

11
crates/cli/Cargo.toml Normal file
View File

@ -0,0 +1,11 @@
[package]
name = "neptune"
version = "0.0.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
anyhow = "1.0.57"
clap = { version = "3.1.14", features = ["derive"] }
uplc = { path = '../uplc' }

View File

@ -1,5 +1,6 @@
use neptune::cli::Cli;
use neptune::parser;
use uplc::parser;
use neptune::Cli;
fn main() -> anyhow::Result<()> {
let args = Cli::default();

8
crates/flat/Cargo.toml Normal file
View File

@ -0,0 +1,8 @@
[package]
name = "flat"
version = "0.0.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]

34
crates/flat/src/encode.rs Normal file
View File

@ -0,0 +1,34 @@
use crate::{encoder::Encoder, filler::Filler};
pub trait Encode {
fn encode(&self, e: &mut Encoder) -> Result<(), String>;
}
impl Encode for bool {
fn encode(&self, e: &mut Encoder) -> Result<(), String> {
e.bool(*self);
Ok(())
}
}
impl<T, K> Encode for (T, K)
where
T: Encode,
K: Encode,
{
fn encode(&self, e: &mut Encoder) -> Result<(), String> {
self.0.encode(e)?;
self.1.encode(e)?;
Ok(())
}
}
impl Encode for Filler {
fn encode(&self, e: &mut Encoder) -> Result<(), String> {
e.filler();
Ok(())
}
}

View File

@ -1,49 +1,4 @@
pub trait Encode {
fn encode(&self, e: &mut Encoder) -> Result<(), String>;
}
impl Encode for bool {
fn encode(&self, e: &mut Encoder) -> Result<(), String> {
e.bool(*self);
Ok(())
}
}
enum Filler {
FillerStart(Box<Filler>),
FillerEnd,
}
impl Filler {
pub fn len(&self) -> usize {
match self {
Filler::FillerStart(f) => f.len() + 1,
Filler::FillerEnd => 1,
}
}
}
impl Encode for Filler {
fn encode(&self, e: &mut Encoder) -> Result<(), String> {
e.filler();
Ok(())
}
}
impl<T, K> Encode for (T, K)
where
T: Encode,
K: Encode,
{
fn encode(&self, e: &mut Encoder) -> Result<(), String> {
self.0.encode(e)?;
self.1.encode(e)?;
Ok(())
}
}
use crate::encode::Encode;
pub struct Encoder {
pub buffer: Vec<u8>,
@ -116,33 +71,8 @@ impl Encoder {
self.used_bits = 0;
}
fn filler(&mut self) {
pub(crate) fn filler(&mut self) {
self.current_byte |= 1;
self.next_word();
}
}
pub fn encode<T>(value: T) -> Result<Vec<u8>, String>
where
T: Encode,
{
let mut e = Encoder::new();
e.encode((value, Filler::FillerEnd))?;
Ok(e.buffer)
}
#[cfg(test)]
mod test {
#[test]
fn encode_bool() {
let bytes = super::encode(true).unwrap();
assert_eq!(bytes, vec![0b10000001]);
let bytes = super::encode(false).unwrap();
assert_eq!(bytes, vec![0b00000001]);
}
}

13
crates/flat/src/filler.rs Normal file
View File

@ -0,0 +1,13 @@
pub enum Filler {
FillerStart(Box<Filler>),
FillerEnd,
}
impl Filler {
pub fn len(&self) -> usize {
match self {
Filler::FillerStart(f) => f.len() + 1,
Filler::FillerEnd => 1,
}
}
}

33
crates/flat/src/lib.rs Normal file
View File

@ -0,0 +1,33 @@
mod encode;
mod encoder;
mod filler;
pub mod en {
pub use super::encode::*;
pub use super::encoder::*;
}
pub fn encode<T>(value: T) -> Result<Vec<u8>, String>
where
T: en::Encode,
{
let mut e = en::Encoder::new();
e.encode((value, filler::Filler::FillerEnd))?;
Ok(e.buffer)
}
#[cfg(test)]
mod test {
#[test]
fn encode_bool() {
let bytes = super::encode(true).unwrap();
assert_eq!(bytes, vec![0b10000001]);
let bytes = super::encode(false).unwrap();
assert_eq!(bytes, vec![0b00000001]);
}
}

14
crates/uplc/Cargo.toml Normal file
View File

@ -0,0 +1,14 @@
[package]
name = "uplc"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
anyhow = "1.0.57"
combine = "4.6.4"
flat = { path = "../flat" }
hex = "0.4.3"
strum = "0.24.0"
strum_macros = "0.24.0"

View File

@ -0,0 +1,3 @@
(program 1.0.0
[[(builtin addInteger) (con integer 4)] (con integer 8)]
)

View File

@ -1,7 +1,5 @@
pub mod ast;
pub mod builtins;
pub mod cli;
pub mod flat;
pub mod parser;
#[macro_use]

View File

@ -1,3 +0,0 @@
(program 1.0.0
[(builtin sha2_256) (con bytestring #54686543616B654973414C6965)]
)