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