flams_system/
lib.rs

1#![cfg_attr(docsrs, feature(doc_auto_cfg))]
2//#![feature(file_buffered)]
3//#![feature(lazy_type_alias)]
4
5pub mod backend;
6pub mod settings;
7#[cfg(feature="tokio")]
8pub mod logging;
9pub mod formats;
10pub mod building;
11#[cfg(feature="tantivy")]
12pub mod search;
13
14use building::queue_manager::QueueManager;
15use formats::FLAMSExtension;
16use settings::SettingsSpec;
17use backend::GlobalBackend;
18
19/// #### Panics
20pub fn initialize(settings: SettingsSpec) {
21    settings::Settings::initialize(settings);
22    let settings = settings::Settings::get();
23    if settings.lsp {
24        use tracing_subscriber::layer::SubscriberExt;
25        use tracing_subscriber::Layer;
26        use tracing::Level;
27        #[cfg(feature="tokio")]
28        let logger = logging::LogStore::new();
29        let debug = settings.debug;
30        let level = if debug {Level::TRACE} else {Level::INFO};
31
32        let l = tracing_subscriber::fmt::layer()
33          //.with_max_level(Level::INFO)//(if debug {Level::TRACE} else {Level::INFO})
34          .with_ansi(false)
35          .with_target(true)
36          .with_writer(std::io::stderr)
37          .with_filter(tracing::level_filters::LevelFilter::from(Level::INFO))
38          ;//.init();
39        #[cfg(feature="tokio")]
40        let sub = tracing_subscriber::registry()
41          .with(logger.with_filter(tracing::level_filters::LevelFilter::from(level)))
42          .with(l);
43        #[cfg(not(feature="tokio"))]
44        let sub = tracing_subscriber::registry().with(l);
45        tracing::subscriber::set_global_default(sub).expect(
46          "Failed to set global default logging subscriber"
47        );
48    } else {
49        #[cfg(feature="tokio")]
50        logging::LogStore::initialize();
51    }
52    tracing::info_span!(target:"initializing",parent:None,"initializing").in_scope(move || {
53        #[cfg(feature="gitlab")]
54        {
55            if let Some(url) = &settings.gitlab_url {
56                let cfg = flams_git::gl::GitlabConfig::new(
57                    url.clone(),
58                    settings.gitlab_token.as_ref().map(ToString::to_string),
59                    settings.gitlab_app_id.as_ref().map(ToString::to_string),
60                    settings.gitlab_app_secret.as_ref().map(ToString::to_string)
61                );
62                flams_git::gl::GLInstance::global().clone().load(cfg);
63            }
64        }
65        GlobalBackend::initialize();
66        QueueManager::initialize(settings.num_threads);
67        FLAMSExtension::initialize();
68    });
69}