yscv-cli 0.1.7

CLI for inference, benchmarking, and evaluation
Documentation
#![forbid(unsafe_code)]

use yscv_cli::config::{CliConfig, CliError, print_usage};
use yscv_cli::diagnostics::{print_camera_devices, run_camera_diagnostics};
use yscv_cli::error::AppError;
use yscv_cli::evaluation::{run_dataset_evaluation, run_diagnostics_report_validation};
use yscv_cli::pipeline::run_pipeline;

fn main() {
    if let Err(err) = run_app() {
        eprintln!("yscv-cli demo failed: {err}");
        std::process::exit(1);
    }
}

fn run_app() -> Result<(), AppError> {
    let cli = match CliConfig::from_env() {
        Ok(config) => config,
        Err(CliError::HelpRequested) => {
            print_usage();
            return Ok(());
        }
        Err(err) => return Err(err.into()),
    };

    if cli.list_cameras {
        print_camera_devices(cli.device_name_query.as_deref())?;
        return Ok(());
    }
    if cli.diagnose_camera {
        run_camera_diagnostics(&cli)?;
        return Ok(());
    }
    if cli.eval_detection_dataset_path.is_some()
        || cli.eval_detection_coco_gt_path.is_some()
        || cli.eval_detection_openimages_gt_path.is_some()
        || cli.eval_detection_yolo_manifest_path.is_some()
        || cli.eval_detection_voc_manifest_path.is_some()
        || cli.eval_detection_kitti_manifest_path.is_some()
        || cli.eval_detection_widerface_gt_path.is_some()
        || cli.eval_tracking_dataset_path.is_some()
        || cli.eval_tracking_mot_gt_path.is_some()
    {
        run_dataset_evaluation(&cli)?;
        return Ok(());
    }
    if cli.validate_diagnostics_report_path.is_some() {
        run_diagnostics_report_validation(&cli)?;
        return Ok(());
    }

    run_pipeline(&cli)
}