Darktide Mod Manager #39

Merged
lucas merged 91 commits from feat/dtmm into master 2023-03-01 22:27:42 +01:00
2 changed files with 18 additions and 33 deletions
Showing only changes of commit fa8764984f - Show all commits

View file

@ -7,10 +7,6 @@ use tracing_subscriber::layer::SubscriberExt;
use tracing_subscriber::prelude::*; use tracing_subscriber::prelude::*;
use tracing_subscriber::EnvFilter; use tracing_subscriber::EnvFilter;
// I currently cannot find a way to add a parameter to `dtmt_shared::create_tracing_subscriber`
// that would allow me to pass an extra `Layer` to that function. So, for now,
// its code has to be duplicated here.
pub struct ChannelWriter { pub struct ChannelWriter {
tx: UnboundedSender<String>, tx: UnboundedSender<String>,
} }
@ -39,42 +35,31 @@ impl std::io::Write for ChannelWriter {
} }
pub fn create_tracing_subscriber(tx: UnboundedSender<String>) { pub fn create_tracing_subscriber(tx: UnboundedSender<String>) {
let env_layer = let env_layer = if cfg!(debug_assertions) {
EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::try_new("info").unwrap()); EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new("info"))
let (dev_stdout_layer, prod_stdout_layer, filter_layer) = if cfg!(debug_assertions) {
let fmt_layer = fmt::layer().pretty();
(Some(fmt_layer), None, None)
} else { } else {
// Creates a layer that EnvFilter::new("error,dtmm=info")
// - only prints events that contain a message };
// - does not print fields
// - does not print spans/targets
// - only prints time, not date
let fmt_layer = fmt::layer()
.event_format(dtmt_shared::Formatter)
.fmt_fields(debug_fn(dtmt_shared::format_field));
( let stdout_layer = if cfg!(debug_assertions) {
None, let layer = fmt::layer().pretty();
Some(fmt_layer), Some(layer)
Some(FilterFn::new(dtmt_shared::filter)), } else {
) None
}; };
let channel_layer = fmt::layer() let channel_layer = fmt::layer()
// TODO: Re-enable and implement a formatter for the Druid widget // TODO: Re-enable and implement a formatter for the Druid widget
.with_ansi(false) .with_ansi(false)
.event_format(dtmt_shared::Formatter) .event_format(dtmt_shared::Formatter)
.fmt_fields(debug_fn(dtmt_shared::format_field)) .fmt_fields(debug_fn(dtmt_shared::format_fields))
.with_writer(move || ChannelWriter::new(tx.clone())); .with_writer(move || ChannelWriter::new(tx.clone()))
.with_filter(FilterFn::new(dtmt_shared::filter_fields));
tracing_subscriber::registry() tracing_subscriber::registry()
.with(channel_layer)
.with(filter_layer)
.with(env_layer) .with(env_layer)
.with(dev_stdout_layer) .with(channel_layer)
.with(prod_stdout_layer) .with(stdout_layer)
.with(ErrorLayer::new(fmt::format::Pretty::default())) .with(ErrorLayer::new(fmt::format::Pretty::default()))
.init(); .init();
} }

View file

@ -16,7 +16,7 @@ use tracing_subscriber::EnvFilter;
pub const TIME_FORMAT: &[FormatItem] = format_description!("[hour]:[minute]:[second]"); pub const TIME_FORMAT: &[FormatItem] = format_description!("[hour]:[minute]:[second]");
pub fn format_field(w: &mut Writer<'_>, field: &Field, val: &dyn std::fmt::Debug) -> Result { pub fn format_fields(w: &mut Writer<'_>, field: &Field, val: &dyn std::fmt::Debug) -> Result {
if field.name() == "message" { if field.name() == "message" {
write!(w, "{:?}", val) write!(w, "{:?}", val)
} else { } else {
@ -24,7 +24,7 @@ pub fn format_field(w: &mut Writer<'_>, field: &Field, val: &dyn std::fmt::Debug
} }
} }
pub fn filter(metadata: &Metadata<'_>) -> bool { pub fn filter_fields(metadata: &Metadata<'_>) -> bool {
metadata metadata
.fields() .fields()
.iter() .iter()
@ -72,9 +72,9 @@ pub fn create_tracing_subscriber() {
// - only prints time, not date // - only prints time, not date
let fmt_layer = fmt::layer() let fmt_layer = fmt::layer()
.event_format(Formatter) .event_format(Formatter)
.fmt_fields(debug_fn(format_field)); .fmt_fields(debug_fn(format_fields));
(None, Some(fmt_layer), Some(FilterFn::new(filter))) (None, Some(fmt_layer), Some(FilterFn::new(filter_fields)))
}; };
tracing_subscriber::registry() tracing_subscriber::registry()