use std::fmt;
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub(crate) enum SettingName {
ActiveProjectId,
ReasoningLevel,
DefaultFastAgent,
DefaultFastModel,
DefaultReviewAgent,
DefaultReviewModel,
DefaultSmartAgent,
DefaultSmartModel,
IncludeCoauthoredByAgentty,
OpenCommand,
LastUsedModelAsDefault,
Theme,
}
impl SettingName {
pub(crate) fn as_str(self) -> &'static str {
match self {
Self::ActiveProjectId => "ActiveProjectId",
Self::ReasoningLevel => "ReasoningLevel",
Self::DefaultFastAgent => "DefaultFastAgent",
Self::DefaultFastModel => "DefaultFastModel",
Self::DefaultReviewAgent => "DefaultReviewAgent",
Self::DefaultReviewModel => "DefaultReviewModel",
Self::DefaultSmartAgent => "DefaultSmartAgent",
Self::DefaultSmartModel => "DefaultSmartModel",
Self::IncludeCoauthoredByAgentty => "IncludeCoauthoredByAgentty",
Self::OpenCommand => "OpenCommand",
Self::LastUsedModelAsDefault => "LastUsedModelAsDefault",
Self::Theme => "Theme",
}
}
}
impl fmt::Display for SettingName {
fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
formatter.write_str(self.as_str())
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_as_str_returns_persisted_keys() {
let settings = [
(SettingName::ActiveProjectId, "ActiveProjectId"),
(SettingName::ReasoningLevel, "ReasoningLevel"),
(SettingName::DefaultFastAgent, "DefaultFastAgent"),
(SettingName::DefaultFastModel, "DefaultFastModel"),
(SettingName::DefaultReviewAgent, "DefaultReviewAgent"),
(SettingName::DefaultReviewModel, "DefaultReviewModel"),
(SettingName::DefaultSmartAgent, "DefaultSmartAgent"),
(SettingName::DefaultSmartModel, "DefaultSmartModel"),
(
SettingName::IncludeCoauthoredByAgentty,
"IncludeCoauthoredByAgentty",
),
(SettingName::OpenCommand, "OpenCommand"),
(
SettingName::LastUsedModelAsDefault,
"LastUsedModelAsDefault",
),
(SettingName::Theme, "Theme"),
];
for (setting_name, expected_key) in settings {
assert_eq!(setting_name.as_str(), expected_key);
}
}
#[test]
fn test_display_matches_as_str() {
let settings = [
SettingName::ActiveProjectId,
SettingName::ReasoningLevel,
SettingName::DefaultFastAgent,
SettingName::DefaultFastModel,
SettingName::DefaultReviewAgent,
SettingName::DefaultReviewModel,
SettingName::DefaultSmartAgent,
SettingName::DefaultSmartModel,
SettingName::IncludeCoauthoredByAgentty,
SettingName::OpenCommand,
SettingName::LastUsedModelAsDefault,
SettingName::Theme,
];
for setting_name in settings {
assert_eq!(setting_name.to_string(), setting_name.as_str());
}
}
}