can-utils-rs 0.2.0

A pure Rust CLI utility for managing and manipulating CAN interfaces and printing pretty CAN data.
Documentation
use crate::setup::models::AppConfig;

pub fn plan_lines(config: &AppConfig) -> Vec<String> {
    match config {
        AppConfig::Native(cfg) => vec![format!(
            "sudo ip link set {} up type can bitrate {}",
            cfg.iface, cfg.bitrate.bitrate
        )],
        AppConfig::Slcan(cfg) => vec![
            format!(
                "sudo slcand -c -o -f -{} -t hw -S {} {} {}",
                cfg.speed.flag, cfg.uart_baud, cfg.tty, cfg.iface
            ),
            format!("sudo ip link set up {}", cfg.iface),
        ],
        AppConfig::Virtual(cfg) => vec![
            format!("sudo ip link add dev {} type vcan", cfg.iface),
            format!("sudo ip link set up {}", cfg.iface),
            format!("ip link show {}", cfg.iface),
        ],
    }
}

pub fn print_plan(config: &AppConfig) {
    println!("\nPlanned commands:\n");

    for line in plan_lines(config) {
        println!("{line}");
    }

    println!();
}