summaryrefslogtreecommitdiff
path: root/ofborg/tickborg/src/lib.rs
blob: 313ff34ebdc2f88d6b22557b2e8da31e9105de2c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#![recursion_limit = "512"]
// Replacing .map(|arch| arch.to_string())
//      with .map(systems::System::to_string)
//
// seems much less clear and I just don't like it :)
#![allow(clippy::redundant_closure)]

use std::env;

use tracing_subscriber::EnvFilter;
use tracing_subscriber::prelude::*;

pub mod acl;
pub mod asynccmd;
pub mod buildtool;
pub mod checkout;
pub mod clone;
pub mod commentparser;
pub mod commitstatus;
pub mod config;
pub mod easyamqp;
pub mod easylapin;
pub mod evalchecker;
pub mod files;
pub mod ghevent;
pub mod locks;
pub mod message;
pub mod notifyworker;
pub mod stats;
pub mod systems;
pub mod tagger;
pub mod tasks;
pub mod test_scratch;
pub mod worker;
pub mod writetoline;

pub mod tickborg {
    pub use crate::acl;
    pub use crate::asynccmd;
    pub use crate::buildtool;
    pub use crate::checkout;
    pub use crate::clone;
    pub use crate::commentparser;
    pub use crate::commitstatus;
    pub use crate::config;
    pub use crate::easyamqp;
    pub use crate::evalchecker;
    pub use crate::files;
    pub use crate::ghevent;
    pub use crate::locks;
    pub use crate::message;
    pub use crate::notifyworker;
    pub use crate::stats;
    pub use crate::systems;
    pub use crate::tagger;
    pub use crate::tasks;
    pub use crate::test_scratch;
    pub use crate::worker;
    pub use crate::writetoline;

    pub const VERSION: &str = env!("CARGO_PKG_VERSION");

    pub fn partition_result<A, B>(results: Vec<Result<A, B>>) -> (Vec<A>, Vec<B>) {
        let mut ok = Vec::new();
        let mut err = Vec::new();
        for result in results.into_iter() {
            match result {
                Ok(x) => {
                    ok.push(x);
                }
                Err(x) => {
                    err.push(x);
                }
            }
        }

        (ok, err)
    }
}

pub fn setup_log() {
    let filter_layer = EnvFilter::try_from_default_env()
        .or_else(|_| EnvFilter::try_new("info"))
        .unwrap();

    let log_json = env::var("RUST_LOG_JSON").is_ok_and(|s| s == "1");

    if log_json {
        let fmt_layer = tracing_subscriber::fmt::layer().json();
        tracing_subscriber::registry()
            .with(filter_layer)
            .with(fmt_layer)
            .init();
    } else {
        let fmt_layer = tracing_subscriber::fmt::layer();
        tracing_subscriber::registry()
            .with(filter_layer)
            .with(fmt_layer)
            .init();
    }

    tracing::info!("Logging configured");
}