Skip to content

Commit

Permalink
fix(project): correctly ignore folders
Browse files Browse the repository at this point in the history
  • Loading branch information
ematipico committed Mar 21, 2024
1 parent 958a9a1 commit 9e0a308
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 9 deletions.
19 changes: 15 additions & 4 deletions crates/biome_cli/src/execute/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ use crate::execute::traverse::traverse;
use crate::{CliDiagnostic, CliSession};
use biome_diagnostics::{category, Category};
use biome_fs::BiomePath;
use biome_service::workspace::{FeatureName, FixFileMode};
use biome_service::workspace::{FeatureName, FeaturesBuilder, FixFileMode};
use std::ffi::OsString;
use std::fmt::{Display, Formatter};
use std::path::{Path, PathBuf};
Expand All @@ -28,10 +28,21 @@ pub(crate) struct Execution {
}

impl Execution {
pub(crate) fn as_feature_name(&self) -> FeatureName {
pub(crate) fn to_features(&self) -> Vec<FeatureName> {
match self.traversal_mode {
TraversalMode::Format { .. } => FeatureName::Format,
_ => FeatureName::Lint,
TraversalMode::Format { .. } => FeaturesBuilder::new()
.with_formatter()
.build(),
TraversalMode::Lint { ..} => FeaturesBuilder::new()
.with_linter()
.build(),
TraversalMode::Check { .. } | TraversalMode::CI { .. } => FeaturesBuilder::new()
.with_organize_imports()
.with_formatter()
.with_linter()
.build(),
TraversalMode::Migrate { .. } => vec![]

}
}
}
Expand Down
2 changes: 1 addition & 1 deletion crates/biome_cli/src/execute/traverse.rs
Original file line number Diff line number Diff line change
Expand Up @@ -702,7 +702,7 @@ impl<'ctx, 'app> TraversalContext for TraversalOptions<'ctx, 'app> {
.workspace
.is_path_ignored(IsPathIgnoredParams {
biome_path: biome_path.clone(),
feature: self.execution.as_feature_name(),
features: self.execution.to_features(),
})
.unwrap_or_else(|err| {
self.push_diagnostic(err.into());
Expand Down
2 changes: 1 addition & 1 deletion crates/biome_service/src/workspace.rs
Original file line number Diff line number Diff line change
Expand Up @@ -659,7 +659,7 @@ impl RageEntry {
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
pub struct IsPathIgnoredParams {
pub biome_path: BiomePath,
pub feature: FeatureName,
pub features: Vec<FeatureName>,
}

pub trait Workspace: Send + Sync + RefUnwindSafe {
Expand Down
14 changes: 11 additions & 3 deletions crates/biome_service/src/workspace/server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -243,14 +243,22 @@ impl WorkspaceServer {

/// Check whether a file is ignored in the top-level config `files.ignore`/`files.include`
/// or in the feature `ignore`/`include`
fn is_ignored(&self, path: &Path, feature: FeatureName) -> bool {
fn is_ignored(&self, path: &Path, features: Vec<FeatureName>) -> bool {
let file_name = path.file_name().and_then(|s| s.to_str());
let ignored_by_features = {
let mut ignored = false;
for feature in features {
// a path is ignored if it's ignored by all features
ignored &= self.is_ignored_by_feature_config(path, feature)
}
ignored
};
// Never ignore Biome's config file regardless `include`/`ignore`
(file_name != Some(ConfigName::biome_json()) || file_name != Some(ConfigName::biome_jsonc())) &&
// Apply top-level `include`/`ignore`
(self.is_ignored_by_top_level_config(path) ||
// Apply feature-level `include`/`ignore`
self.is_ignored_by_feature_config(path, feature))
ignored_by_features)
}

/// Check whether a file is ignored in the top-level config `files.ignore`/`files.include`
Expand Down Expand Up @@ -363,7 +371,7 @@ impl Workspace for WorkspaceServer {
}
}
fn is_path_ignored(&self, params: IsPathIgnoredParams) -> Result<bool, WorkspaceError> {
Ok(self.is_ignored(params.biome_path.as_path(), params.feature))
Ok(self.is_ignored(params.biome_path.as_path(), params.features))
}
/// Update the global settings for this workspace
///
Expand Down

0 comments on commit 9e0a308

Please sign in to comment.