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())),
}
}