blob: e85f09e17adc519097a3de9797f1bb73423da119 [file] [log] [blame]
// Copyright 2021 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//! Encapsulate the sub modules of crosh.
#![allow(clippy::unnecessary_wraps)]
#![deny(unsafe_op_in_unsafe_fn)]
pub mod base;
pub mod debugd;
pub mod dev;
pub mod dispatcher;
pub mod legacy;
pub mod util;
use dispatcher::Dispatcher;
use log::error;
pub fn setup_dispatcher() -> Dispatcher {
let mut dispatcher = Dispatcher::new();
if util::dev_commands_included() {
legacy::register_dev_mode_commands(&mut dispatcher);
dev::register(&mut dispatcher);
}
if util::usb_commands_included() {
legacy::register_removable_commands(&mut dispatcher);
}
base::register(&mut dispatcher);
legacy::register(&mut dispatcher);
if let Err(err) = dispatcher.validate() {
// Use error! too so that the message is included in the syslog.
error!("FATAL: {}", err);
panic!("FATAL: {}", err);
}
dispatcher
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_validate_registered_commands() {
util::set_dev_commands_included(true);
util::set_usb_commands_included(true);
setup_dispatcher();
}
}