Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ pub struct Config {
pub hooks: HooksConfig,
#[serde(default)]
pub limits: LimitsConfig,
#[serde(default)]
pub gradle: GradleConfig,
}

#[derive(Debug, Serialize, Deserialize, Default)]
Expand Down Expand Up @@ -127,6 +129,35 @@ pub fn limits() -> LimitsConfig {
Config::load().map(|c| c.limits).unwrap_or_default()
}

#[derive(Debug, Serialize, Deserialize, Default)]
pub struct GradleConfig {
/// Package prefixes treated as "user code" in stack traces (kept, not dropped).
#[serde(default)]
pub user_packages: Vec<String>,
/// Additional regex patterns for lines to drop (applied after built-in global filters).
#[serde(default)]
pub extra_drop_patterns: Vec<String>,
/// Additional package prefixes to treat as framework noise in stack traces.
/// Built-in: java.*, kotlin.*, sun.*, javax.*, jdk.*, jakarta.*, *.internal.*
#[serde(default = "default_drop_frame_packages")]
pub drop_frame_packages: Vec<String>,
}

pub fn default_drop_frame_packages() -> Vec<String> {
vec![
"org.gradle".to_string(),
"org.junit.platform".to_string(),
"org.junit.jupiter.engine".to_string(),
"org.springframework".to_string(),
"com.google.inject".to_string(),
"io.grpc".to_string(),
"org.mockito".to_string(),
"io.mockk".to_string(),
"org.eclipse.jetty".to_string(),
"org.assertj.core.internal".to_string(),
]
}

/// Check if telemetry is enabled in config. Returns None if config can't be loaded.
pub fn telemetry_enabled() -> Option<bool> {
Config::load().ok().map(|c| c.telemetry.enabled)
Expand Down