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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
use clap::Parser;
use tracing::debug;
use tracing::info;
use tedge_cli::Registry;
use tedge_lib::measurement::Measurement;
use tedge_lib::notification::Notification;
#[tokio::main]
#[tracing::instrument]
async fn main() -> miette::Result<()> {
let args = tedge_cli::cli::Cli::parse();
let guard = tedge_cli::logging::setup_logging(
args.logging,
args.chrome_logging.as_ref(),
args.tracy_logging,
args.loki_logging.as_ref(),
)?;
info!("Tedge booting...");
debug!(?args, "Tedge CLI");
let registry = tedge_cli::Registry::default();
info!("Building application");
let registry = {
cfg_table::cfg_table! {
[not(feature = "mqtt")] => {
tedge_cli::register_plugin!(
if feature "builtin_plugin_log" is enabled then
register on registry
builder of type plugin_log::LogPluginBuilder<(Measurement, Notification)>,
with instance {
plugin_log::LogPluginBuilder::<(Measurement, Notification)>::default()
}
)
},
[feature = "mqtt"] => {
tedge_cli::register_plugin!(
if feature "builtin_plugin_log" is enabled then
register on registry
builder of type plugin_log::LogPluginBuilder<(Measurement, Notification, plugin_mqtt::IncomingMessage)>,
with instance {
plugin_log::LogPluginBuilder::<(Measurement, Notification, plugin_mqtt::IncomingMessage)>::default()
}
)
},
}
};
let registry = tedge_cli::register_plugin!(
if feature "builtin_plugin_avg" is enabled then
register on registry
builder of type plugin_avg::AvgPluginBuilder,
with instance {
plugin_avg::AvgPluginBuilder
}
);
let registry = tedge_cli::register_plugin!(
if feature "builtin_plugin_sysstat" is enabled then
register on registry
builder of type plugin_sysstat::SysStatPluginBuilder,
with instance {
plugin_sysstat::SysStatPluginBuilder
}
);
let registry = tedge_cli::register_plugin!(
if feature "builtin_plugin_inotify" is enabled then
register on registry
builder of type plugin_inotify::InotifyPluginBuilder,
with instance {
plugin_inotify::InotifyPluginBuilder
}
);
let registry = tedge_cli::register_plugin!(
if feature "builtin_plugin_httpstop" is enabled then
register on registry
builder of type plugin_httpstop::HttpStopPluginBuilder,
with instance {
plugin_httpstop::HttpStopPluginBuilder
}
);
let registry = tedge_cli::register_plugin!(
if feature "builtin_plugin_measurement_filter" is enabled then
register on registry
builder of type plugin_measurement_filter::MeasurementFilterPluginBuilder,
with instance {
plugin_measurement_filter::MeasurementFilterPluginBuilder
}
);
let registry = tedge_cli::register_plugin!(
if feature "mqtt" is enabled then
register on registry
builder of type plugin_mqtt::MqttPluginBuilder,
with instance {
plugin_mqtt::MqttPluginBuilder::default()
}
);
let registry = tedge_cli::register_plugin!(
if feature "mqtt" is enabled then
register on registry
builder of type plugin_mqtt_measurement_bridge::MqttMeasurementBridgePluginBuilder,
with instance {
plugin_mqtt_measurement_bridge::MqttMeasurementBridgePluginBuilder::default()
}
);
let registry = tedge_cli::register_plugin!(
if feature "builtin_plugin_notification" is enabled then
register on registry
builder of type plugin_notification::NotificationPluginBuilder,
with instance {
plugin_notification::NotificationPluginBuilder
}
);
if let Some(bg_task) = guard.loki_background_task {
tokio::spawn(bg_task);
}
tedge_cli::run_app(args, registry).await
}
|