diff options
| author | Bryan Newbold <bnewbold@robocracy.org> | 2017-12-07 23:28:05 -0800 | 
|---|---|---|
| committer | Bryan Newbold <bnewbold@robocracy.org> | 2017-12-07 23:28:05 -0800 | 
| commit | b059f4508f9a17b5cb3568298a6f08c397d2a40f (patch) | |
| tree | 792c5b55ddfbdbeebaaf39128cafe86a770d76d7 /src/bin | |
| parent | 044d3de4981af84a7e6caab2d79ac273f77d7124 (diff) | |
| download | geniza-b059f4508f9a17b5cb3568298a6f08c397d2a40f.tar.gz geniza-b059f4508f9a17b5cb3568298a6f08c397d2a40f.zip | |
start core command skeleton
Diffstat (limited to 'src/bin')
| -rw-r--r-- | src/bin/geniza.rs | 80 | 
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); | 
