use anyhow::Result;
use log::{info, warn};
use crate::config::Config;
pub(crate) fn add(config: &mut Config, name: String, uri: String) -> Result<()> {
info!("Adding alias {name:?} for {uri:?}");
config.add_alias(name, uri).write()?;
Ok(())
}
pub(crate) fn remove(config: &mut Config, name: &str) -> Result<()> {
info!("Removing alias {name:?}");
config.remove_alias(name).write()?;
Ok(())
}
pub(crate) fn list(config: &Config) {
use comfy_table::Table;
use comfy_table::modifiers::UTF8_ROUND_CORNERS;
use comfy_table::presets::UTF8_FULL;
let aliases = config.get_aliases();
let mut table = Table::new();
if aliases.is_empty() {
warn!("No aliases configured");
}
let mut aliases = aliases.iter().collect::<Vec<_>>();
aliases.sort_by(|a, b| a.0.cmp(b.0));
table
.load_preset(UTF8_FULL)
.apply_modifier(UTF8_ROUND_CORNERS)
.set_header(vec!["Name", "URI"]);
for alias in aliases {
table.add_row(vec![alias.0, alias.1]);
}
println!("{table}");
}