mod api; mod state; mod ui; use anyhow::Result; use api::Api; use clap::Parser; /// A tui for administrating nerdcult.net #[derive(Parser, Debug)] #[command(author, version, about, long_about = None)] struct Args { /// The base URL of the API #[arg(short, long, default_value = "https://api.nerdcult.net")] base_url: Option, /// An access token for the API #[arg(short, long)] token: Option, } #[tokio::main] async fn main() -> Result<()> { let args = Args::parse(); let stdout = ui::prepare()?; let base_url = args.base_url.unwrap(); let api = if let Some(token) = args.token { Api::from_token(&base_url, token).await?? } else { let mut login = ui::login::UI::new(stdout, base_url)?; let api = login.run().await?; api }; println!("{:#?}", api); Ok(()) }