summaryrefslogtreecommitdiffstats
path: root/src/device.rs
blob: 3911b25554b1633ff8561772d13e340ff06df4d3 (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
use std::{env::ArgsOs, process};

use crate::config::Config;

mod on_action;
mod set_state;

pub fn main(argv0: &str, config: Config, mut args: ArgsOs) {
    let (Some(device_name), Some(command)) = (args.next(), args.next()) else {
        eprintln!("Usage: {argv0} device <device-name> <command> [args...]");
        process::exit(1);
    };

    let Some(device_name) = device_name.to_str() else {
        eprintln!("{argv0}: error: Invalid device name");
        process::exit(1);
    };

    match command.to_str() {
        Some("on-action") => on_action::main(argv0, config, device_name, args),
        Some("set-state") => set_state::main(argv0, config, device_name, args),
        _ => {
            eprintln!("{argv0}: error: Unknown device command: {command:?}");
            process::exit(1);
        }
    }
}