use anyhow::Result;
use clap::Parser;
#[derive(Parser, Debug)]
#[command(name = "phosphor", about = "A terminal & graphical DAW", version)]
struct Cli {
#[arg(long, conflicts_with = "gui")]
tui: bool,
#[arg(long, conflicts_with = "tui")]
gui: bool,
#[arg(long)]
buffer_size: Option<u32>,
#[arg(long)]
sample_rate: Option<u32>,
#[arg(long)]
no_audio: bool,
#[arg(long)]
no_midi: bool,
}
fn main() -> Result<()> {
let cli = Cli::parse();
let request = phosphor_core::AudioRequest {
buffer_size: cli.buffer_size,
sample_rate: cli.sample_rate,
};
if cli.gui {
tracing_subscriber::fmt()
.with_env_filter(
tracing_subscriber::EnvFilter::try_from_default_env()
.unwrap_or_else(|_| tracing_subscriber::EnvFilter::new("info")),
)
.init();
tracing::info!(
"Phosphor v{} starting (requested buffer_size={:?}, sample_rate={:?})",
env!("CARGO_PKG_VERSION"),
cli.buffer_size,
cli.sample_rate,
);
phosphor_gui::run(request)
} else {
tracing_subscriber::fmt()
.with_env_filter(tracing_subscriber::EnvFilter::new("off"))
.init();
phosphor_tui::run(request, !cli.no_audio, !cli.no_midi)
}
}