From 56f4d84a6c9d1f472b1fca3fccd6bf3f22cad922 Mon Sep 17 00:00:00 2001 From: Phil <phil@grmr.de> Date: Wed, 15 Nov 2017 04:40:10 +0100 Subject: [PATCH] Add PoC CLI --- README.md | 1 - examples/drumdump/.gitignore | 3 +++ examples/drumdump/Cargo.toml | 10 ++++++++++ examples/drumdump/src/main.rs | 30 ++++++++++++++++++++++++++++++ src/lib.rs | 4 +++- 5 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 examples/drumdump/.gitignore create mode 100644 examples/drumdump/Cargo.toml create mode 100644 examples/drumdump/src/main.rs diff --git a/README.md b/README.md index 0af8c9e..1c5ed20 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,6 @@ Size | Encoding | Description ## To-do -- [ ] write example CLI that pretty prints the fixture's contents - [ ] maybe add something (tests!?) that allows for better/easier debugging - [ ] find out how to properly debug diff --git a/examples/drumdump/.gitignore b/examples/drumdump/.gitignore new file mode 100644 index 0000000..6aa1064 --- /dev/null +++ b/examples/drumdump/.gitignore @@ -0,0 +1,3 @@ +/target/ +**/*.rs.bk +Cargo.lock diff --git a/examples/drumdump/Cargo.toml b/examples/drumdump/Cargo.toml new file mode 100644 index 0000000..f8f0565 --- /dev/null +++ b/examples/drumdump/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "drumdump" +version = "0.1.0" +authors = ["Phil <phil@grmr.de>"] + +[dependencies] +nom = "3.2" + +[dependencies.drumchallenge] +path = "../.." diff --git a/examples/drumdump/src/main.rs b/examples/drumdump/src/main.rs new file mode 100644 index 0000000..cc6937f --- /dev/null +++ b/examples/drumdump/src/main.rs @@ -0,0 +1,30 @@ +extern crate drumchallenge; +extern crate nom; + +use drumchallenge::parse; +use nom::IResult; + +use std::io::prelude::*; +use std::fs::File; + +use std::env; + +fn main() { + if let Some(arg1) = env::args().nth(1) { + let filepath = arg1; + let mut buf: Vec<u8> = vec![]; + let mut file = File::open(filepath).expect("file exists"); + let _ = file.read_to_end(&mut buf).expect("file can be read"); + + match parse(&buf[..]) { + IResult::Done(_, pattern) => { + println!("{}", pattern); + } + e => { + panic!("something went wrong. {:?}", e); + } + } + } else { + println!("please provide a filename"); + } +} diff --git a/src/lib.rs b/src/lib.rs index 4e753dc..72640de 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,9 +1,11 @@ #[macro_use] extern crate nom; -pub mod parser; +mod parser; mod tests; +pub use parser::parse; + use std::fmt; #[derive(Debug)] -- GitLab