netsky 0.2.0

netsky CLI: the viable system launcher and subcommand dispatcher
Documentation
use netsky_io::{AccessCmd, DriveCmd, IoCommand, IrohCmd, IrohPairCmd};

pub fn run(sub: IoCommand) -> netsky_core::Result<()> {
    match sub {
        IoCommand::Serve { source } => {
            netsky_io::run_source(source).map_err(|e| netsky_core::Error::Message(e.to_string()))
        }
        IoCommand::Access(AccessCmd::Email(cmd)) => netsky_io::sources::email::access_cli(cmd)
            .map_err(|e| netsky_core::Error::Message(e.to_string())),
        IoCommand::Access(AccessCmd::Calendar(cmd)) => {
            netsky_io::sources::calendar::access_cli(cmd)
                .map_err(|e| netsky_core::Error::Message(e.to_string()))
        }
        IoCommand::Access(cmd) => netsky_io::sources::imessage::access::cli(cmd)
            .map_err(|e| netsky_core::Error::Message(e.to_string())),
        IoCommand::Iroh(IrohCmd::Whoami) => netsky_io::sources::iroh::whoami()
            .map_err(|e| netsky_core::Error::Message(e.to_string())),
        IoCommand::Iroh(IrohCmd::Pair(IrohPairCmd::Add { label, node_id })) => {
            netsky_io::sources::iroh::pair_add(&label, &node_id)
                .map_err(|e| netsky_core::Error::Message(e.to_string()))
        }
        IoCommand::Iroh(IrohCmd::Pair(IrohPairCmd::List)) => netsky_io::sources::iroh::pair_list()
            .map_err(|e| netsky_core::Error::Message(e.to_string())),
        IoCommand::Iroh(IrohCmd::Pair(IrohPairCmd::Remove { label })) => {
            netsky_io::sources::iroh::pair_remove(&label)
                .map_err(|e| netsky_core::Error::Message(e.to_string()))
        }
        IoCommand::Iroh(IrohCmd::Status { json }) => netsky_io::sources::iroh::status(json)
            .map_err(|e| netsky_core::Error::Message(e.to_string())),
        IoCommand::Iroh(IrohCmd::Send { label, text }) => {
            netsky_io::sources::iroh::send_oneshot(&label, &text)
                .map_err(|e| netsky_core::Error::Message(e.to_string()))
        }
        IoCommand::Drive(DriveCmd::EmptyTrash { account, confirm }) => {
            netsky_io::sources::drive::admin_cli(DriveCmd::EmptyTrash { account, confirm })
                .map_err(|e| netsky_core::Error::Message(e.to_string()))
        }
        IoCommand::Cursor(cmd) => netsky_io::cursor_cli::cursor_cli(cmd)
            .map_err(|e| netsky_core::Error::Message(e.to_string())),
        IoCommand::Events(cmd) => netsky_io::cursor_cli::events_cli(cmd)
            .map_err(|e| netsky_core::Error::Message(e.to_string())),
    }
}