#![expect(clippy::print_stdout, clippy::use_debug)]
use core::fmt::{Display, Formatter};
use std::path::Path;
use error_stack::{
Report,
fmt::{Charset, ColorMode},
};
type Config = String;
#[derive(Debug)]
struct ParseConfigError;
impl Display for ParseConfigError {
fn fmt(&self, fmt: &mut Formatter<'_>) -> core::fmt::Result {
fmt.write_str("unable to parse config")
}
}
impl core::error::Error for ParseConfigError {}
fn parse_config(path: impl AsRef<Path>) -> Result<Config, Report<ParseConfigError>> {
_ = path.as_ref();
Err(Report::new(ParseConfigError).attach("unable to read configuration"))
}
fn main() {
let supports_color = supports_color::on_cached(supports_color::Stream::Stdout)
.is_some_and(|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:?}");
}
}