#![allow(
clippy::print_stdout,
clippy::print_stderr,
unreachable_pub,
clippy::use_debug,
clippy::alloc_instead_of_core,
clippy::std_instead_of_alloc,
clippy::std_instead_of_core
)]
use std::{
fmt::{Display, Formatter},
path::Path,
};
use error_stack::{
fmt::{Charset, ColorMode},
Report, Result,
};
type Config = String;
#[derive(Debug)]
struct ParseConfigError;
impl Display for ParseConfigError {
fn fmt(&self, f: &mut Formatter<'_>) -> core::fmt::Result {
f.write_str("unable to parse config")
}
}
impl std::error::Error for ParseConfigError {}
fn parse_config(path: impl AsRef<Path>) -> Result<Config, ParseConfigError> {
_ = path.as_ref();
Err(Report::new(ParseConfigError).attach_printable("unable to read configuration"))
}
fn main() {
let supports_color = supports_color::on_cached(supports_color::Stream::Stdout)
.map_or(false, |level| level.has_basic);
let color_mode = if supports_color {
ColorMode::Color
} else {
ColorMode::None
};
let supports_unicode = supports_unicode::on(supports_unicode::Stream::Stdout);
let charset = if supports_unicode {
Charset::Utf8
} else {
Charset::Ascii
};
Report::set_color_mode(color_mode);
Report::set_charset(charset);
if let Err(err) = parse_config("config.json") {
println!("{err:?}");
}
}