#![warn(
clippy::all,
clippy::missing_docs_in_private_items,
clippy::nursery,
clippy::pedantic,
missing_docs
)]
use anyhow::{bail, Result};
use sentry::{Consent, Event, Level, Options};
use sentry_contrib_native as sentry;
use std::panic;
fn main() -> Result<()> {
sentry::set_hook(None, Some(panic::take_hook()));
let mut options = Options::new();
options.set_logger(|level, message| {
println!("{:<9} {}", format!("[{}]", level), message);
});
options.set_dsn("https://abcdef1234567890abcdef1234567890@o0.ingest.sentry.io/0");
options.set_require_user_consent(true);
let _shutdown = options.init()?;
if ask_user_for_consent() {
sentry::set_user_consent(Consent::Given)
} else {
sentry::set_user_consent(Consent::Revoked)
}
if let Err(error) = function_that_can_go_wrong() {
let mut event = Event::new_message(Level::Error, None, error.to_string());
event.add_stacktrace(0);
event.capture();
}
Ok(())
}
const fn ask_user_for_consent() -> bool {
true
}
fn function_that_can_go_wrong() -> Result<()> {
bail!("Oh no! Something (something) went wrong!")
}