use assembly_fdb::mem::Database;
use mapr::Mmap;
use prettytable::{Cell as PCell, Row as PRow, Table as PTable};
use std::fs::File;
use structopt::StructOpt;
#[derive(StructOpt)]
struct Options {
file: String,
}
pub fn main() -> color_eyre::Result<()> {
let opt = Options::from_args();
assembly_core::time(|| {
let file = File::open(&opt.file)?;
let mmap = unsafe { Mmap::map(&file)? };
let buffer: &[u8] = &mmap;
let db = Database::new(buffer);
let mut count = 0;
let mut output = PTable::new();
output.set_format(*prettytable::format::consts::FORMAT_NO_LINESEP_WITH_TITLE);
output.set_titles(PRow::new(vec![PCell::new("Name")]));
let tables = db.tables()?;
for table in tables.iter() {
let table = table?;
let name = table.name();
let fv = vec![PCell::new(&name)];
output.add_row(PRow::new(fv));
count += 1;
}
output.printstd();
println!("Printed {} row(s)", count);
Ok(())
})
}