use crate::config::YamlConfig;
use crate::constants::{self, section};
use crate::{error, info, usage};
const VALID_CATEGORIES: &[&str] = constants::NOTE_CATEGORIES;
pub fn handle_tag(alias: &str, category: &str, config: &mut YamlConfig) {
if !config.contains(section::PATH, alias)
&& !config.contains(section::INNER_URL, alias)
&& !config.contains(section::OUTER_URL, alias)
{
error!("✖️ 别名 {} 不存在", alias);
return;
}
if !VALID_CATEGORIES.contains(&category) {
usage!(
"j tag <alias> <category> (可选: {})",
VALID_CATEGORIES.join(", ")
);
return;
}
match category {
c if c == section::OUTER_URL => {
if let Some(url) = config.get_property(section::INNER_URL, alias).cloned() {
config.set_property(section::OUTER_URL, alias, &url);
config.remove_property(section::INNER_URL, alias);
info!("☑️ 将别名 {} 标记为 OUTER_URL 成功", alias);
} else {
error!("✖️ 别名 {} 不在 INNER_URL 中,无法标记为 OUTER_URL", alias);
}
}
_ => {
if let Some(path) = config.get_property(section::PATH, alias).cloned() {
config.set_property(category, alias, &path);
info!(
"☑️ 将别名 {} 标记为 {} 成功",
alias,
category.to_uppercase()
);
} else {
error!("✖️ 别名 {} 不在 PATH 中,无法标记", alias);
}
}
}
}
pub fn handle_untag(alias: &str, category: &str, config: &mut YamlConfig) {
if !VALID_CATEGORIES.contains(&category) {
usage!(
"j untag <alias> <category> (可选: {})",
VALID_CATEGORIES.join(", ")
);
return;
}
if !config.contains(category, alias) {
error!("✖️ 别名 {} 不在 {} 分类中", alias, category.to_uppercase());
return;
}
config.remove_property(category, alias);
info!(
"☑️ 已将别名 {} 从 {} 中移除",
alias,
category.to_uppercase()
);
}