aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBryan Newbold <bnewbold@robocracy.org>2017-12-07 23:28:05 -0800
committerBryan Newbold <bnewbold@robocracy.org>2017-12-07 23:28:05 -0800
commitb059f4508f9a17b5cb3568298a6f08c397d2a40f (patch)
tree792c5b55ddfbdbeebaaf39128cafe86a770d76d7
parent044d3de4981af84a7e6caab2d79ac273f77d7124 (diff)
downloadgeniza-b059f4508f9a17b5cb3568298a6f08c397d2a40f.tar.gz
geniza-b059f4508f9a17b5cb3568298a6f08c397d2a40f.zip
start core command skeleton
-rw-r--r--src/bin/geniza.rs80
1 files changed, 80 insertions, 0 deletions
diff --git a/src/bin/geniza.rs b/src/bin/geniza.rs
new file mode 100644
index 0000000..ee91d4f
--- /dev/null
+++ b/src/bin/geniza.rs
@@ -0,0 +1,80 @@
+// Free Software under GPL-3.0, see LICENSE
+// Copyright 2017 Bryan Newbold
+
+extern crate clap;
+extern crate env_logger;
+#[macro_use]
+extern crate error_chain;
+extern crate geniza;
+
+// TODO: more careful import
+use geniza::*;
+use std::path::Path;
+use clap::{App, SubCommand, Arg};
+
+fn run() -> Result<()> {
+ env_logger::init().unwrap();
+
+ let matches = App::new("geniza")
+ .version(env!("CARGO_PKG_VERSION"))
+ .subcommand(
+ SubCommand::with_name("clone")
+ .about("Finds and downloads a dat archive from the network into a given folder")
+ .arg_from_usage("<address> 'dat address (public key) to fetch'"),
+ )
+ .subcommand(
+ SubCommand::with_name("init")
+ .about("Creates a data archive in the current directory")
+ )
+ .subcommand(
+ SubCommand::with_name("checkout")
+ .about("Copies (or overwrites) files from dat archive into current folder")
+ .arg_from_usage("<path> 'relative path to checkout'"),
+ )
+ .subcommand(
+ SubCommand::with_name("add")
+ .about("Adds a path to the current dat archive")
+ .arg_from_usage("<path> 'file to delete from dat archive'"),
+ )
+ .subcommand(
+ SubCommand::with_name("rm")
+ .about("Removes a path from the current dat archive, and from disk (danger!)")
+ .arg_from_usage("<path> 'file to delete from dat archive'"),
+ )
+ .get_matches();
+
+
+ match matches.subcommand() {
+ ("clone", Some(subm)) => {
+ let dat_key = subm.value_of("dat_key").unwrap();
+ let key_bytes = parse_dat_address(&dat_key)?;
+ unimplemented!();
+ //let dir = Path::new(subm.value_of("dat-dir").unwrap());
+ //let mut metadata = SleepDirRegister::create(&dir, "metadata")?;
+ //node_simple_clone(host_port, &key_bytes, &mut metadata, false)?;
+ }
+ ("init", Some(subm)) => {
+ unimplemented!();
+ }
+ ("checkout", Some(subm)) => {
+ let path = Path::new(subm.value_of("path").unwrap());
+ unimplemented!();
+ }
+ ("add", Some(subm)) => {
+ let path = Path::new(subm.value_of("path").unwrap());
+ unimplemented!();
+ }
+ ("rm", Some(subm)) => {
+ let path = Path::new(subm.value_of("path").unwrap());
+ unimplemented!();
+ }
+ _ => {
+ println!("Missing or unimplemented command!");
+ println!("{}", matches.usage());
+ ::std::process::exit(-1);
+ }
+ }
+ Ok(())
+}
+
+quick_main!(run);