fcs 0.1.0

A low-level Flow Cytometry Standard (FCS) file serializer/deserializer
Documentation
use eyre::{eyre, Result, WrapErr};
use fcs::{Header, Text};
use std::{env, fs, str};

fn main() -> Result<()> {
    let args: Vec<String> = env::args().collect();
    let path = args
        .get(1)
        .ok_or(eyre!("no argument for input file given"))?;

    let contents = fs::read(path).wrap_err("could not read file")?;

    let header = str::from_utf8(&contents[..=57])
        .wrap_err("header is not a valid string")?;
    let header =
        Header::try_from(header).wrap_err("could not parse header")?;
    println!("{header:#?}");

    let text = str::from_utf8(&contents[header.text_offsets])
        .wrap_err("text is not a valid string")?;
    let text =
        Text::try_from(text).wrap_err("could not parse text segment")?;
    println!("{text:#?}");

    Ok(())
}