jail 0.2.0

FreeBSD jail library
use cli_table::{print_stdout, Table, WithTitle};
use jail::RunningJail;

#[derive(Table)]
struct Jail {
    #[table(title = "JID")]
    jid: i32,

    #[table(title = "IP Address")]
    ips: String,

    #[table(title = "Hostname")]
    hostname: String,

    #[table(title = "Path")]
    path: String,
}

fn main() {
    pretty_env_logger::init();

    let mut jails = Vec::new();

    for j in RunningJail::all() {
        let ips: Vec<String> = j
            .ips()
            .unwrap()
            .iter()
            .map(|ip| format!("{}", ip))
            .collect();

        let jail = Jail {
            jid: j.jid,
            ips: ips.join("\n"),
            hostname: j.hostname().unwrap(),
            path: j.path().unwrap().to_str().unwrap().to_string(),
        };

        jails.push(jail);
    }

    print_stdout(jails.with_title()).unwrap();
}