#[derive(clap::ValueEnum, Debug, Clone, Copy)]
pub enum SymbolKind {
Function,
Method,
Class,
Struct,
Interface,
Enum,
Trait,
Impl,
Module,
Variable,
Constructor,
TypeAlias,
}
#[derive(clap::ValueEnum, Debug, Clone, Copy)]
pub enum Language {
Rust,
Python,
C,
Cpp,
Java,
JavaScript,
TypeScript,
}
#[derive(clap::ValueEnum, Debug, Clone, Copy, PartialEq, Eq)]
pub enum OutputFormat {
Human,
Json,
Pretty,
}
#[derive(clap::ValueEnum, Debug, Clone, Copy, PartialEq, Eq)]
pub enum CallDirection {
In,
Out,
Both,
}
#[derive(clap::ValueEnum, Debug, Clone, Copy, PartialEq, Eq)]
pub enum ReachabilityDirection {
Forward,
Reverse,
Both,
}
#[derive(clap::ValueEnum, Debug, Clone, Copy, PartialEq, Eq)]
pub enum SliceDirection {
Forward,
Backward,
}
#[derive(clap::ValueEnum, Default, Debug, Clone, Copy, PartialEq, Eq)]
pub enum ExportFormat {
#[default]
Json,
Jsonl,
Csv,
}
impl OutputFormat {
pub fn is_json(self) -> bool {
matches!(self, Self::Json | Self::Pretty)
}
pub fn format_json<T: serde::Serialize>(&self, value: &T) -> Result<String, String> {
match self {
Self::Json => serde_json::to_string(value).map_err(|e| e.to_string()),
Self::Pretty => serde_json::to_string_pretty(value).map_err(|e| e.to_string()),
Self::Human => Err("Human format requested but format_json called".to_string()),
}
}
}
impl Language {
pub fn as_str(&self) -> &'static str {
match self {
Language::Rust => "rust",
Language::Python => "python",
Language::C => "c",
Language::Cpp => "cpp",
Language::Java => "java",
Language::JavaScript => "javascript",
Language::TypeScript => "typescript",
}
}
pub fn to_symbol_language(self) -> crate::symbol::Language {
match self {
Language::Rust => crate::symbol::Language::Rust,
Language::Python => crate::symbol::Language::Python,
Language::C => crate::symbol::Language::C,
Language::Cpp => crate::symbol::Language::Cpp,
Language::Java => crate::symbol::Language::Java,
Language::JavaScript => crate::symbol::Language::JavaScript,
Language::TypeScript => crate::symbol::Language::TypeScript,
}
}
}
#[derive(clap::ValueEnum, Debug, Clone, Copy)]
pub enum AnalyzerMode {
Off,
Os,
Path,
}
#[derive(clap::ValueEnum, Debug, Clone, Copy, PartialEq, Eq)]
pub enum CliRollbackMode {
Auto,
Never,
Always,
}