binstore 0.2.0

A simple key-value store written in Rust. Uses its own compact file format.
Documentation
use clap::{ArgMatches, values_t};
use binstore::prelude::Value;
use std::process;

pub fn main(matches: &ArgMatches) {
    let input_files: Vec<String> = match values_t!(matches, "input-files", String) {
        Ok(v) => v,
        Err(e) => {
            eprintln!("binstore: invalid input file: {}", e);
            process::exit(1)
        }
    };

    let output_files: Vec<String> = match values_t!(matches, "output-files", String) {
        Ok(v) => v,
        Err(e) => {
            eprintln!("binstore: invalid output file: {}", e);
            process::exit(1)
        }
    };

    let values: Vec<Value> = match values_t!(matches, "values", Value) {
        Ok(v) => v,
        Err(e) => {
            eprintln!("hydroxyde: invalid values: {}", e);
            process::exit(1);
        }
    };

    if input_files.len() != output_files.len() {
        eprintln!("binstore: number of input files does not match number of output files");
        process::exit(1)
    }

    let files: Vec<(String, String)> = input_files.into_iter().zip(output_files).collect();

    let mut ret = 0;
    for (input, output) in &files {
        if let Err(e) = binstore::bucket::delete(input, output, &values) {
            ret = 1;
            eprintln!("binstore: {}: {}", input, e);
        }
    }
    process::exit(ret);
}