use crate::ssh::ssh_config::types::SshHostConfig;
use anyhow::Result;
pub(super) fn parse_ui_option(
host: &mut SshHostConfig,
keyword: &str,
args: &[String],
line_number: usize,
) -> Result<()> {
match keyword {
"requesttty" => {
if args.is_empty() {
anyhow::bail!("RequestTTY requires a value at line {line_number}");
}
host.request_tty = Some(args[0].clone());
}
"escapechar" => {
if args.is_empty() {
anyhow::bail!("EscapeChar requires a value at line {line_number}");
}
host.escape_char = Some(args[0].clone());
}
"loglevel" => {
if args.is_empty() {
anyhow::bail!("LogLevel requires a value at line {line_number}");
}
host.log_level = Some(args[0].clone());
}
"syslogfacility" => {
if args.is_empty() {
anyhow::bail!("SyslogFacility requires a value at line {line_number}");
}
host.syslog_facility = Some(args[0].clone());
}
"protocol" => {
if args.is_empty() {
anyhow::bail!("Protocol requires a value at line {line_number}");
}
host.protocol = args
.join(",")
.split(',')
.map(|s| s.trim().to_string())
.collect();
}
_ => unreachable!("Unexpected keyword in parse_ui_option: {}", keyword),
}
Ok(())
}