#![warn(missing_docs)]
use clap::Parser as _;
use rand::SeedableRng;
use biotest::error;
use biotest::Format as _;
#[derive(Debug, Clone, clap::ValueEnum)]
pub enum Type {
Fasta,
Fastq,
Vcf,
Sequence,
Quality,
}
#[derive(clap::Parser, std::fmt::Debug)]
#[clap(
name = "biotest_default",
version = "0.1",
author = "Pierre Marijon <pierre@marijon.fr>"
)]
pub struct Command {
#[clap(short = 'o', long = "output")]
pub output_path: std::path::PathBuf,
#[clap(short = 'n', long = "number-record")]
pub number_record: u64,
#[clap(short = 't', long = "type")]
pub out_type: Type,
#[clap(short = 'q', long = "quiet")]
pub quiet: bool,
#[clap(short = 'v', long = "verbosity", action = clap::ArgAction::Count)]
pub verbosity: u8,
#[clap(short = 'T', long = "timestamp")]
pub ts: Option<stderrlog::Timestamp>,
}
fn main() -> error::Result<()> {
let params = Command::parse();
stderrlog::new()
.quiet(params.quiet)
.verbosity(params.verbosity as usize)
.timestamp(params.ts.unwrap_or(stderrlog::Timestamp::Off))
.init()
.unwrap();
let mut rng = rand::rngs::StdRng::from_entropy();
match params.out_type {
Type::Fasta => biotest::Fasta::default().create(
params.output_path,
&mut rng,
params.number_record as usize,
),
Type::Fastq => biotest::Fastq::default().create(
params.output_path,
&mut rng,
params.number_record as usize,
),
Type::Vcf => biotest::Vcf::default().create(
params.output_path,
&mut rng,
params.number_record as usize,
),
Type::Sequence => biotest::Sequence::default().create(
params.output_path,
&mut rng,
params.number_record as usize,
),
Type::Quality => biotest::Quality::default().create(
params.output_path,
&mut rng,
params.number_record as usize,
),
}
}