discord-webhook-cli 0.1.1

Simple CLI for Discord webhooks (not discord bots)
Documentation
use anyhow::Context;
use clap::Parser;
use discord_webhook_cli::WebhookData;
use dotenv::dotenv;
use tracing::{info, trace};

#[derive(Parser, Debug)]
struct CliArgs {

	#[arg(long, env = "DISCORD_WEBHOOK_CLI_URL")]
	url: String,

	#[arg(short, long, env = "DISCORD_WEBHOOK_CLI_MSG")]
	msg: String,

	#[arg(short, long, env = "DISCORD_WEBHOOK_CLI_USERNAME")]
	username: Option<String>,
}

impl From<CliArgs> for WebhookData {
	fn from(value: CliArgs) -> Self {
		Self {
			content: value.msg,
			username: value.username,
		}
	}
}

#[tokio::main]
async fn main() -> Result<(), anyhow::Error> {
	tracing_subscriber::fmt::init();
	dotenv().ok();
	human_panic::setup_panic!();

	info!("Beginning ...");

	trace!("Parsing args ...");
	let args = CliArgs::parse();
	trace!("Args parsed: {:?}", &args);
	let url = args.url.clone();

	let client = reqwest::Client::new();
	let data: WebhookData = args.into();

	trace!("Sending webhook ...");
	let response = client.post(url).json(&data).send().await?;
	trace!("Webhook sent with response: {:?}", response);

	Ok(())
}