1#![allow(unknown_lints)]
2#![warn(clippy::all, rust_2018_idioms, rust_2018_compatibility)]
3#![allow(clippy::rc_buffer)] mod artifact_cache;
6mod asset_hub;
7mod asset_hub_service;
8mod capnp_db;
9mod daemon;
10mod error;
11mod file_asset_source;
12mod file_tracker;
13mod scope;
14mod serialized_asset;
15mod source_pair_import;
16mod watcher;
17
18pub use crate::{
19 daemon::{default_importer_contexts, default_importers, AssetDaemon, ImporterMap},
20 error::{Error, Result},
21};
22
23#[cfg(debug_assertions)]
24const DEFAULT_LOGGING_LEVEL: log::LevelFilter = log::LevelFilter::Debug;
25#[cfg(not(debug_assertions))]
26const DEFAULT_LOGGING_LEVEL: log::LevelFilter = log::LevelFilter::Info;
27
28mod simple_logger {
29 use log::{Level, Metadata, Record};
30
31 pub struct SimpleLogger;
32
33 impl log::Log for SimpleLogger {
34 fn enabled(&self, metadata: &Metadata<'_>) -> bool {
35 metadata.level() <= Level::Info
36 }
37
38 fn log(&self, record: &Record<'_>) {
39 if self.enabled(record.metadata()) {
40 println!("{} - {}", record.level(), record.args());
41 }
42 }
43
44 fn flush(&self) {}
45 }
46}
47#[cfg(not(feature = "pretty_log"))]
48static LOGGER: simple_logger::SimpleLogger = simple_logger::SimpleLogger;
49
50#[cfg(not(feature = "pretty_log"))]
51pub fn init_logging() -> Result<()> {
52 let rust_log = std::env::var("RUST_LOG").unwrap_or_else(|_| "".to_string());
53 let log_level = <log::LevelFilter as std::str::FromStr>::from_str(&rust_log)
54 .unwrap_or(DEFAULT_LOGGING_LEVEL);
55 log::set_logger(&LOGGER)
56 .map(|()| log::set_max_level(log_level))
57 .map_err(Error::SetLoggerError)
58}
59#[cfg(feature = "pretty_log")]
60pub fn init_logging() -> Result<()> {
61 use chrono::Local;
62 let rust_log = std::env::var("RUST_LOG").unwrap_or_else(|_| "".to_string());
63 let log_level = <log::LevelFilter as std::str::FromStr>::from_str(&rust_log)
64 .unwrap_or(DEFAULT_LOGGING_LEVEL);
65 fern::Dispatch::new()
66 .format(|out, message, record| {
67 out.finish(format_args!(
68 "[{timestamp}][{level}][{target}] {message}",
69 level = record.level(),
70 timestamp = Local::now().format("%Y-%m-%dT%H:%M:%S%.3f"),
71 target = record.target(),
72 message = message,
73 ))
74 })
75 .chain(std::io::stdout())
76 .level(log_level)
77 .level_for("mio", log::LevelFilter::Info)
78 .level_for("tokio_core", log::LevelFilter::Info)
79 .apply()?;
81 Ok(())
82}