encon 0.0.3

an optionally-encrypted config format, built on top of JSON
Documentation
use encon::Encryptable;
use encon::Password;
use serde_json::to_string_pretty;
use std::env;
use std::fmt::Write;

fn main() {
    let plain_text = match env::args().skip(1).next() {
        Some(arg) => arg,
        None => {
            eprintln!("Pass the string to encrypt as the first argument, e.g.");
            eprintln!("cargo run --example encrypt -- 'Hello, world!'");
            std::process::exit(1);
        }
    };
    let pass = Password::new("strongpassword");
    let encrypted = pass.encrypt(&plain_text).unwrap();

    println!("vec![");

    let mut s = String::new();

    for byte in encrypted {
        write!(&mut s, "0x{:02x?}, ", byte).unwrap();
        if s.len() >= 70 {
            println!("    {}", s);
            s = Default::default();
        }
    }

    if !s.is_empty() {
        println!("    {}", s);
    }

    println!("];\n");

    let encryptable = Encryptable::Plain(plain_text.into())
        .to_encrypted(&pass)
        .unwrap();
    let json = to_string_pretty(&encryptable).unwrap();
    println!("{}", json);
}