aiken/crates/cli/src/main.rs

48 lines
1.2 KiB
Rust

use uplc::{
ast::{DeBruijn, FakeNamedDeBruijn, Program},
parser,
};
use neptune::{Cli, UplcCommand};
fn main() -> anyhow::Result<()> {
let args = Cli::default();
match args {
Cli::Uplc(uplc) => match uplc {
UplcCommand::Flat { input } => {
let code = std::fs::read_to_string(&input)?;
let program = parser::program(&code).unwrap();
let program = Program::<DeBruijn>::try_from(program)?;
let bytes = program.to_flat()?;
for (i, byte) in bytes.iter().enumerate() {
print!("{:08b}", byte);
if (i + 1) % 4 == 0 {
println!();
} else {
print!(" ");
}
}
println!();
}
UplcCommand::Unflat { input } => {
let bytes = std::fs::read(&input)?;
let program = Program::<FakeNamedDeBruijn>::from_flat(&bytes)?;
let encoded_flat = program.to_flat()?;
println!("{}", encoded_flat.len());
assert!(bytes == encoded_flat)
}
},
}
Ok(())
}